|
@@ -2,6 +2,7 @@ import { defineComponent, onMounted, reactive, ref, watch } from 'vue';
|
|
|
import styles from './index.module.less';
|
|
|
import {
|
|
|
NButton,
|
|
|
+ NTooltip,
|
|
|
NCarousel,
|
|
|
NIcon,
|
|
|
NImage,
|
|
@@ -11,6 +12,8 @@ import {
|
|
|
NSelect,
|
|
|
NSpace,
|
|
|
NSpin,
|
|
|
+ NTabPane,
|
|
|
+ NTabs,
|
|
|
useMessage
|
|
|
} from 'naive-ui';
|
|
|
import { usePrepareStore } from '/src/store/modules/prepareLessons';
|
|
@@ -34,6 +37,7 @@ import { useRoute, useRouter } from 'vue-router';
|
|
|
import TheMessageDialog from '/src/components/TheMessageDialog';
|
|
|
import { eventGlobal, fscreen } from '/src/utils';
|
|
|
import PreviewWindow from '/src/views/preview-window';
|
|
|
+import Related from './related';
|
|
|
|
|
|
export default defineComponent({
|
|
|
name: 'courseware-presets',
|
|
@@ -49,6 +53,8 @@ export default defineComponent({
|
|
|
|
|
|
const forms = reactive({
|
|
|
// 选取参数带的,后取缓存
|
|
|
+ leftWidth: '100%',
|
|
|
+ rightWidth: '0',
|
|
|
messageLoading: false,
|
|
|
subjectId: route.query.subjectId
|
|
|
? Number(route.query.subjectId)
|
|
@@ -63,6 +69,7 @@ export default defineComponent({
|
|
|
openLoading: false,
|
|
|
showRelatedClass: false,
|
|
|
tableList: [] as any,
|
|
|
+ openTableShow: true, // 是否显示
|
|
|
openTableList: [] as any,
|
|
|
selectItem: {} as any,
|
|
|
editTitleVisiable: false,
|
|
@@ -149,20 +156,20 @@ export default defineComponent({
|
|
|
});
|
|
|
});
|
|
|
|
|
|
- forms.openTableList = chunkArray(tempList, 4);
|
|
|
+ forms.openTableList = tempList || [];
|
|
|
} catch {
|
|
|
//
|
|
|
}
|
|
|
forms.openLoading = false;
|
|
|
};
|
|
|
|
|
|
- const chunkArray = (array: any, size: number) => {
|
|
|
- const result = [];
|
|
|
- for (let i = 0; i < array.length; i += size) {
|
|
|
- result.push(array.slice(i, i + size));
|
|
|
- }
|
|
|
- return result;
|
|
|
- };
|
|
|
+ // const chunkArray = (array: any, size: number) => {
|
|
|
+ // const result = [];
|
|
|
+ // for (let i = 0; i < array.length; i += size) {
|
|
|
+ // result.push(array.slice(i, i + size));
|
|
|
+ // }
|
|
|
+ // return result;
|
|
|
+ // };
|
|
|
|
|
|
// 监听选择的key 左侧选择了其它的课
|
|
|
watch(
|
|
@@ -248,6 +255,23 @@ export default defineComponent({
|
|
|
};
|
|
|
|
|
|
onMounted(async () => {
|
|
|
+ useResizeObserver(
|
|
|
+ document.querySelector('#presetsLeftRef') as HTMLElement,
|
|
|
+ (entries: any) => {
|
|
|
+ const entry = entries[0];
|
|
|
+ const { width } = entry.contentRect;
|
|
|
+ forms.leftWidth = width + 'px';
|
|
|
+ }
|
|
|
+ );
|
|
|
+ useResizeObserver(
|
|
|
+ document.querySelector('#presetsRightRef') as HTMLElement,
|
|
|
+ (entries: any) => {
|
|
|
+ const entry = entries[0];
|
|
|
+ const { width } = entry.contentRect;
|
|
|
+ forms.rightWidth = width + 'px';
|
|
|
+ }
|
|
|
+ );
|
|
|
+
|
|
|
prepareStore.setClassGroupId(route.query.classGroupId as any);
|
|
|
if (!prepareStore.getSubjectId) {
|
|
|
// 获取教材分类列表
|
|
@@ -407,16 +431,73 @@ export default defineComponent({
|
|
|
}
|
|
|
};
|
|
|
return () => (
|
|
|
- <div class={styles.coursewarePresetsContainer}>
|
|
|
- <NScrollbar class={styles.coursewarePresets}>
|
|
|
- <div class={styles.title} id="coursewarePresets">
|
|
|
+ <div
|
|
|
+ class={[
|
|
|
+ styles.coursewarePresetsContainer,
|
|
|
+ forms.openTableShow && styles.rightLineShow
|
|
|
+ ]}>
|
|
|
+ <div
|
|
|
+ class={styles.presetsLeft}
|
|
|
+ id="presetsLeftRef"
|
|
|
+ style={{ width: `calc(${forms.leftWidth} - ${forms.rightWidth})` }}>
|
|
|
+ <NTabs
|
|
|
+ // ref={lessonMainRef}
|
|
|
+ defaultValue="subject"
|
|
|
+ paneClass={styles.paneTitle}
|
|
|
+ justifyContent="start"
|
|
|
+ paneWrapperClass={styles.paneWrapperContainer}
|
|
|
+ value={prepareStore.getSubjectId?.toString()}
|
|
|
+ onUpdate:value={val => {
|
|
|
+ prepareStore.setSubjectId(val);
|
|
|
+ // 保存
|
|
|
+ forms.subjectId = val;
|
|
|
+
|
|
|
+ if (!val) {
|
|
|
+ sessionStorage.setItem(
|
|
|
+ 'prepareLessonCourseWareSubjectIsNull',
|
|
|
+ val ? 'false' : 'true'
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }}
|
|
|
+ v-slots={{
|
|
|
+ suffix: () => (
|
|
|
+ <NButton
|
|
|
+ class={styles.addBtn}
|
|
|
+ type="primary"
|
|
|
+ bordered={false}
|
|
|
+ onClick={() => {
|
|
|
+ eventGlobal.emit('teacher-slideshow', true);
|
|
|
+ emit('change', {
|
|
|
+ status: true,
|
|
|
+ type: 'create'
|
|
|
+ });
|
|
|
+ }}>
|
|
|
+ <NImage
|
|
|
+ class={styles.addBtnIcon}
|
|
|
+ previewDisabled
|
|
|
+ src={add}></NImage>
|
|
|
+ 创建课件
|
|
|
+ </NButton>
|
|
|
+ )
|
|
|
+ }}>
|
|
|
+ {[{ name: '全部声部', id: '' }, ...prepareStore.getSubjectList].map(
|
|
|
+ (item: any) => (
|
|
|
+ <NTabPane
|
|
|
+ name={`${item.id}`}
|
|
|
+ tab={item.name}
|
|
|
+ displayDirective="if"></NTabPane>
|
|
|
+ )
|
|
|
+ )}
|
|
|
+ </NTabs>
|
|
|
+ <NScrollbar class={styles.coursewarePresets}>
|
|
|
+ {/* <div class={styles.title} id="coursewarePresets">
|
|
|
<div class={styles.titleLeft}>
|
|
|
<i class={[styles.icon, styles.iconWork]}></i>
|
|
|
我的课件
|
|
|
</div>
|
|
|
- </div>
|
|
|
+ </div> */}
|
|
|
|
|
|
- <NSpace>
|
|
|
+ {/* <NSpace>
|
|
|
<NSelect
|
|
|
placeholder="选择声部"
|
|
|
class={styles.btnSubjectList}
|
|
@@ -435,72 +516,56 @@ export default defineComponent({
|
|
|
if (!val) {
|
|
|
sessionStorage.setItem(
|
|
|
'prepareLessonCourseWareSubjectIsNull',
|
|
|
- val ? false : true
|
|
|
+ val ? 'false' : 'true'
|
|
|
);
|
|
|
}
|
|
|
}}
|
|
|
/>
|
|
|
- <NButton
|
|
|
- class={styles.addBtn}
|
|
|
- type="primary"
|
|
|
- onClick={() => {
|
|
|
- eventGlobal.emit('teacher-slideshow', true);
|
|
|
- emit('change', {
|
|
|
- status: true,
|
|
|
- type: 'create'
|
|
|
- });
|
|
|
- }}>
|
|
|
- <NImage
|
|
|
- class={styles.addBtnIcon}
|
|
|
- previewDisabled
|
|
|
- src={add}></NImage>
|
|
|
- 创建课件
|
|
|
- </NButton>
|
|
|
- </NSpace>
|
|
|
- <div style={{ overflow: 'hidden' }}>
|
|
|
- <NSpin show={forms.loading}>
|
|
|
- <div class={styles.list}>
|
|
|
- {forms.tableList.map((item: any) => (
|
|
|
- <div class={[styles.itemWrap, styles.itemBlock, 'row-nav']}>
|
|
|
- <div class={styles.itemWrapBox}>
|
|
|
- <CoursewareType
|
|
|
- operate
|
|
|
- isEditName
|
|
|
- item={item}
|
|
|
- onClick={() => onPreviewAttend(item.id)}
|
|
|
- onEditName={() => {
|
|
|
- forms.selectItem = item;
|
|
|
- forms.editTitle = item.name;
|
|
|
- forms.editTitleVisiable = true;
|
|
|
- }}
|
|
|
- onEdit={() => {
|
|
|
- //
|
|
|
- eventGlobal.emit('teacher-slideshow', true);
|
|
|
- emit('change', {
|
|
|
- status: true,
|
|
|
- type: 'update',
|
|
|
- groupItem: { id: item.id }
|
|
|
- });
|
|
|
- }}
|
|
|
- onStartClass={() =>
|
|
|
- onStartClass(item, forms.classGroupId)
|
|
|
- }
|
|
|
- onDelete={() => {
|
|
|
- forms.selectItem = item;
|
|
|
- forms.preRemoveVisiable = true;
|
|
|
- }}
|
|
|
- />
|
|
|
+ </NSpace> */}
|
|
|
+ <div style={{ overflow: 'hidden' }}>
|
|
|
+ <NSpin show={forms.loading}>
|
|
|
+ <div class={styles.list}>
|
|
|
+ {forms.tableList.map((item: any) => (
|
|
|
+ <div class={[styles.itemWrap, styles.itemBlock, 'row-nav']}>
|
|
|
+ <div class={styles.itemWrapBox}>
|
|
|
+ <CoursewareType
|
|
|
+ operate
|
|
|
+ isEditName
|
|
|
+ item={item}
|
|
|
+ onClick={() => onPreviewAttend(item.id)}
|
|
|
+ onEditName={() => {
|
|
|
+ forms.selectItem = item;
|
|
|
+ forms.editTitle = item.name;
|
|
|
+ forms.editTitleVisiable = true;
|
|
|
+ }}
|
|
|
+ onEdit={() => {
|
|
|
+ //
|
|
|
+ eventGlobal.emit('teacher-slideshow', true);
|
|
|
+ emit('change', {
|
|
|
+ status: true,
|
|
|
+ type: 'update',
|
|
|
+ groupItem: { id: item.id }
|
|
|
+ });
|
|
|
+ }}
|
|
|
+ onStartClass={() =>
|
|
|
+ onStartClass(item, forms.classGroupId)
|
|
|
+ }
|
|
|
+ onDelete={() => {
|
|
|
+ forms.selectItem = item;
|
|
|
+ forms.preRemoveVisiable = true;
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- ))}
|
|
|
- {!forms.loading && forms.tableList.length <= 0 && (
|
|
|
- <TheEmpty class={styles.empty1} description="暂无课件" />
|
|
|
- )}
|
|
|
- </div>
|
|
|
- </NSpin>
|
|
|
- </div>
|
|
|
+ ))}
|
|
|
+ {!forms.loading && forms.tableList.length <= 0 && (
|
|
|
+ <TheEmpty class={styles.empty1} description="暂无课件" />
|
|
|
+ )}
|
|
|
+ </div>
|
|
|
+ </NSpin>
|
|
|
+ </div>
|
|
|
|
|
|
- {forms.openTableList.length > 0 && (
|
|
|
+ {/* {forms.openTableList.length > 0 && (
|
|
|
<>
|
|
|
<div class={[styles.title, styles.line]}>
|
|
|
<div class={styles.titleLeft}>
|
|
@@ -511,15 +576,6 @@ export default defineComponent({
|
|
|
class={styles.more}
|
|
|
onClick={() => (forms.showRelatedClass = true)}>
|
|
|
查看更多
|
|
|
- {/* <NIcon size={15}>
|
|
|
- <svg
|
|
|
- xmlns="http://www.w3.org/2000/svg"
|
|
|
- viewBox="0 0 24 24">
|
|
|
- <path
|
|
|
- d="M8.59 16.59L13.17 12L8.59 7.41L10 6l6 6l-6 6l-1.41-1.41z"
|
|
|
- fill="currentColor"></path>
|
|
|
- </svg>
|
|
|
- </NIcon> */}
|
|
|
<i class={styles.iconP}></i>
|
|
|
</span>
|
|
|
)}
|
|
@@ -584,8 +640,31 @@ export default defineComponent({
|
|
|
</NCarousel>
|
|
|
</NSpin>
|
|
|
</>
|
|
|
- )}
|
|
|
- </NScrollbar>
|
|
|
+ )} */}
|
|
|
+ </NScrollbar>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ {/* {forms.openTableList.length > 0 && ( */}
|
|
|
+ <div class={styles.presetsRight} id="presetsRightRef">
|
|
|
+ <NTooltip showArrow={false}>
|
|
|
+ {{
|
|
|
+ trigger: () => (
|
|
|
+ <i
|
|
|
+ class={[
|
|
|
+ styles.presetsArrar,
|
|
|
+ !forms.openTableShow && styles.presetsArrarActive
|
|
|
+ ]}
|
|
|
+ onClick={() =>
|
|
|
+ (forms.openTableShow = !forms.openTableShow)
|
|
|
+ }></i>
|
|
|
+ ),
|
|
|
+ default: () => <div>{forms.openTableShow ? '收起' : '展开'}</div>
|
|
|
+ }}
|
|
|
+ </NTooltip>
|
|
|
+
|
|
|
+ <Related />
|
|
|
+ </div>
|
|
|
+ {/* )} */}
|
|
|
|
|
|
<NModal
|
|
|
v-model:show={forms.showRelatedClass}
|