|
@@ -1,7 +1,15 @@
|
|
|
-import { defineComponent, onMounted, reactive, ref, watch } from 'vue';
|
|
|
+import {
|
|
|
+ defineComponent,
|
|
|
+ nextTick,
|
|
|
+ onMounted,
|
|
|
+ reactive,
|
|
|
+ ref,
|
|
|
+ watch
|
|
|
+} from 'vue';
|
|
|
import styles from './index.module.less';
|
|
|
import {
|
|
|
NButton,
|
|
|
+ NTooltip,
|
|
|
NCarousel,
|
|
|
NIcon,
|
|
|
NImage,
|
|
@@ -11,6 +19,8 @@ import {
|
|
|
NSelect,
|
|
|
NSpace,
|
|
|
NSpin,
|
|
|
+ NTabPane,
|
|
|
+ NTabs,
|
|
|
useMessage
|
|
|
} from 'naive-ui';
|
|
|
import { usePrepareStore } from '/src/store/modules/prepareLessons';
|
|
@@ -34,9 +44,18 @@ 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';
|
|
|
+import Train from '../train';
|
|
|
+import ResourceMain from '../../resource-main';
|
|
|
|
|
|
export default defineComponent({
|
|
|
name: 'courseware-presets',
|
|
|
+ props: {
|
|
|
+ addParam: {
|
|
|
+ type: Object,
|
|
|
+ default: () => ({})
|
|
|
+ }
|
|
|
+ },
|
|
|
emits: ['change'],
|
|
|
setup(props, { emit }) {
|
|
|
const prepareStore = usePrepareStore();
|
|
@@ -49,6 +68,8 @@ export default defineComponent({
|
|
|
|
|
|
const forms = reactive({
|
|
|
// 选取参数带的,后取缓存
|
|
|
+ leftWidth: '100%',
|
|
|
+ rightWidth: '0',
|
|
|
messageLoading: false,
|
|
|
subjectId: route.query.subjectId
|
|
|
? Number(route.query.subjectId)
|
|
@@ -63,12 +84,14 @@ export default defineComponent({
|
|
|
openLoading: false,
|
|
|
showRelatedClass: false,
|
|
|
tableList: [] as any,
|
|
|
+ openTableShow: true, // 是否显示
|
|
|
openTableList: [] as any,
|
|
|
selectItem: {} as any,
|
|
|
editTitleVisiable: false,
|
|
|
editTitle: null,
|
|
|
editBtnLoading: false,
|
|
|
preRemoveVisiable: false,
|
|
|
+ addVisiable: false, // 是否有添加的课件
|
|
|
carouselIndex: 0,
|
|
|
showAttendClass: false,
|
|
|
attendClassType: 'change', //
|
|
@@ -79,7 +102,8 @@ export default defineComponent({
|
|
|
courseId: '',
|
|
|
subjectId: '',
|
|
|
detailId: ''
|
|
|
- } as any
|
|
|
+ } as any,
|
|
|
+ workVisiable: false
|
|
|
});
|
|
|
|
|
|
const getCoursewareList = async () => {
|
|
@@ -87,6 +111,7 @@ export default defineComponent({
|
|
|
try {
|
|
|
// 判断是否有选择对应的课件 或声部
|
|
|
if (!prepareStore.getSelectKey) return (forms.loading = false);
|
|
|
+
|
|
|
const { data } = await teacherChapterLessonCoursewareList({
|
|
|
subjectId: prepareStore.getSubjectId,
|
|
|
coursewareDetailKnowledgeId: prepareStore.getSelectKey
|
|
@@ -100,13 +125,15 @@ export default defineComponent({
|
|
|
item.chapterKnowledgeList[0]?.chapterKnowledgeMaterialList[0];
|
|
|
tempList.push({
|
|
|
id: item.id,
|
|
|
+ lessonPreTrainingId: item.lessonPreTrainingId,
|
|
|
openFlag: item.openFlag,
|
|
|
openFlagEnable: item.openFlagEnable,
|
|
|
subjectNames: item.subjectNames,
|
|
|
fromChapterLessonCoursewareId: item.fromChapterLessonCoursewareId,
|
|
|
name: item.name,
|
|
|
coverImg: firstItem?.bizInfo.coverImg,
|
|
|
- type: firstItem?.bizInfo.type
|
|
|
+ type: firstItem?.bizInfo.type,
|
|
|
+ isNotWork: item.lessonPreTrainingNum <= 0 ? true : false // 是否布置作业
|
|
|
});
|
|
|
});
|
|
|
forms.tableList = tempList;
|
|
@@ -116,60 +143,15 @@ export default defineComponent({
|
|
|
forms.loading = false;
|
|
|
};
|
|
|
|
|
|
- const getOpenCoursewareList = async () => {
|
|
|
- // 查询公开课件列表
|
|
|
- forms.openLoading = true;
|
|
|
- try {
|
|
|
- // 判断是否有选择对应的课件 或声部
|
|
|
- if (!prepareStore.getSelectKey) return (forms.openLoading = false);
|
|
|
- const { data } = await api_queryOpenCoursewareByPage({
|
|
|
- subjectId: prepareStore.getSubjectId,
|
|
|
- coursewareDetailKnowledgeId: prepareStore.getSelectKey,
|
|
|
- page: 1,
|
|
|
- rows: 20
|
|
|
- });
|
|
|
- const result = data.rows || [];
|
|
|
- const tempList: any = [];
|
|
|
- result.forEach((item: any) => {
|
|
|
- // const index = forms.tableList.findIndex(
|
|
|
- // (i: any) => i.fromChapterLessonCoursewareId === item.id
|
|
|
- // );
|
|
|
- const firstItem: any =
|
|
|
- item.chapterKnowledgeList[0]?.chapterKnowledgeMaterialList[0];
|
|
|
- tempList.push({
|
|
|
- id: item.id,
|
|
|
- openFlag: item.openFlag,
|
|
|
- openFlagEnable: item.openFlagEnable,
|
|
|
- subjectNames: item.subjectNames,
|
|
|
- fromChapterLessonCoursewareId: item.fromChapterLessonCoursewareId,
|
|
|
- name: item.name,
|
|
|
- coverImg: firstItem?.bizInfo.coverImg,
|
|
|
- type: firstItem?.bizInfo.type,
|
|
|
- isAdd: item.addFlag
|
|
|
- });
|
|
|
- });
|
|
|
-
|
|
|
- forms.openTableList = chunkArray(tempList, 4);
|
|
|
- } 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;
|
|
|
- };
|
|
|
-
|
|
|
// 监听选择的key 左侧选择了其它的课
|
|
|
watch(
|
|
|
() => [prepareStore.getSelectKey, prepareStore.getSubjectId],
|
|
|
async () => {
|
|
|
+ eventGlobal.emit('openCoursewareChanged');
|
|
|
await getCoursewareList();
|
|
|
- await getOpenCoursewareList();
|
|
|
+ // await getOpenCoursewareList();
|
|
|
+
|
|
|
+ subjectRef.value?.syncBarPosition();
|
|
|
}
|
|
|
);
|
|
|
|
|
@@ -244,44 +226,59 @@ export default defineComponent({
|
|
|
'prepareLessonSubjectId',
|
|
|
prepareStore.getSubjectId as any
|
|
|
);
|
|
|
+
|
|
|
+ subjectRef.value?.syncBarPosition();
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+ const subjectRef = ref();
|
|
|
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) {
|
|
|
// 获取教材分类列表
|
|
|
checkSubjectIds();
|
|
|
}
|
|
|
|
|
|
- // useResizeObserver(
|
|
|
- // document.querySelector('#coursewarePresets') as HTMLElement,
|
|
|
- // (entries: any) => {
|
|
|
- // const entry = entries[0];
|
|
|
- // const { width } = entry.contentRect;
|
|
|
- // forms.bodyWidth = width + 'px';
|
|
|
- // }
|
|
|
- // );
|
|
|
-
|
|
|
await getCoursewareList();
|
|
|
- await getOpenCoursewareList();
|
|
|
+
|
|
|
+ // console.log(props.addParam, 'addCourseware');
|
|
|
+ if (props.addParam.isAdd) {
|
|
|
+ forms.addVisiable = true;
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
// 重命名
|
|
|
- const onEditTitleSubmit = async () => {
|
|
|
- try {
|
|
|
- await api_updateCoursewareInfo({
|
|
|
- id: forms.selectItem.id,
|
|
|
- name: forms.editTitle
|
|
|
- });
|
|
|
- message.success('修改成功');
|
|
|
- getCoursewareList();
|
|
|
- // getOpenCoursewareList()
|
|
|
- forms.editTitleVisiable = false;
|
|
|
- } catch {
|
|
|
- //
|
|
|
- }
|
|
|
- };
|
|
|
+ // const onEditTitleSubmit = async () => {
|
|
|
+ // try {
|
|
|
+ // await api_updateCoursewareInfo({
|
|
|
+ // id: forms.selectItem.id,
|
|
|
+ // name: forms.editTitle
|
|
|
+ // });
|
|
|
+ // message.success('修改成功');
|
|
|
+ // getCoursewareList();
|
|
|
+ // // getOpenCoursewareList()
|
|
|
+ // forms.editTitleVisiable = false;
|
|
|
+ // } catch {
|
|
|
+ // //
|
|
|
+ // }
|
|
|
+ // };
|
|
|
|
|
|
// 删除
|
|
|
const onRemove = async () => {
|
|
@@ -292,7 +289,8 @@ export default defineComponent({
|
|
|
});
|
|
|
message.success('删除成功');
|
|
|
getCoursewareList();
|
|
|
- getOpenCoursewareList();
|
|
|
+ // getOpenCoursewareList();
|
|
|
+ eventGlobal.emit('openCoursewareChanged');
|
|
|
forms.preRemoveVisiable = false;
|
|
|
} catch {
|
|
|
//
|
|
@@ -310,7 +308,8 @@ export default defineComponent({
|
|
|
await api_addByOpenCourseware({ id: item.id });
|
|
|
message.success('添加成功');
|
|
|
getCoursewareList();
|
|
|
- getOpenCoursewareList();
|
|
|
+ // getOpenCoursewareList();
|
|
|
+ eventGlobal.emit('openCoursewareChanged');
|
|
|
} catch {
|
|
|
//
|
|
|
}
|
|
@@ -350,14 +349,18 @@ export default defineComponent({
|
|
|
}
|
|
|
};
|
|
|
|
|
|
- const onStartClass = async (item: any, classGroupId: any) => {
|
|
|
+ const onStartClass = async (
|
|
|
+ item: any,
|
|
|
+ classGroupId: any,
|
|
|
+ subjectId?: any
|
|
|
+ ) => {
|
|
|
if (classGroupId) {
|
|
|
// 开始上课
|
|
|
const res = await courseScheduleStart({
|
|
|
lessonCoursewareKnowledgeDetailId: prepareStore.selectKey,
|
|
|
classGroupId: classGroupId,
|
|
|
- useChapterLessonCoursewareId: item.id,
|
|
|
- subjectId: prepareStore.getSubjectId
|
|
|
+ useChapterLessonCoursewareId: item.id
|
|
|
+ // subjectId: prepareStore.getSubjectId
|
|
|
});
|
|
|
if (window.matchMedia('(display-mode: standalone)').matches) {
|
|
|
state.application = window.matchMedia(
|
|
@@ -369,7 +372,7 @@ export default defineComponent({
|
|
|
type: 'class',
|
|
|
classGroupId: classGroupId,
|
|
|
courseId: item.id,
|
|
|
- subjectId: prepareStore.getSubjectId,
|
|
|
+ subjectId: subjectId || route.query.subjectId,
|
|
|
detailId: prepareStore.getSelectKey,
|
|
|
classId: res.data,
|
|
|
lessonCourseId: prepareStore.getBaseCourseware.id,
|
|
@@ -398,194 +401,171 @@ export default defineComponent({
|
|
|
}
|
|
|
};
|
|
|
|
|
|
- const carouselRef = ref();
|
|
|
- const onChangeSlide = (type: 'left' | 'right') => {
|
|
|
- if (type === 'left') {
|
|
|
- carouselRef.value?.prev();
|
|
|
- } else if (type === 'right') {
|
|
|
- carouselRef.value?.next();
|
|
|
- }
|
|
|
- };
|
|
|
+ // const carouselRef = ref();
|
|
|
+ // const onChangeSlide = (type: 'left' | 'right') => {
|
|
|
+ // if (type === 'left') {
|
|
|
+ // carouselRef.value?.prev();
|
|
|
+ // } else if (type === 'right') {
|
|
|
+ // carouselRef.value?.next();
|
|
|
+ // }
|
|
|
+ // };
|
|
|
return () => (
|
|
|
- <div class={styles.coursewarePresetsContainer}>
|
|
|
- <NScrollbar class={styles.coursewarePresets}>
|
|
|
- <div class={styles.title} id="coursewarePresets">
|
|
|
- <div class={styles.titleLeft}>
|
|
|
- <i class={[styles.icon, styles.iconWork]}></i>
|
|
|
- 我的课件
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <NSpace>
|
|
|
- <NSelect
|
|
|
- placeholder="选择声部"
|
|
|
- class={styles.btnSubjectList}
|
|
|
- options={[
|
|
|
- { name: '全部声部', id: '' },
|
|
|
- ...prepareStore.getSubjectList
|
|
|
- ]}
|
|
|
- labelField="name"
|
|
|
- valueField="id"
|
|
|
- value={prepareStore.getSubjectId}
|
|
|
- onUpdate:value={(val: any) => {
|
|
|
- prepareStore.setSubjectId(val);
|
|
|
- // 保存
|
|
|
- forms.subjectId = val;
|
|
|
-
|
|
|
- if (!val) {
|
|
|
- sessionStorage.setItem(
|
|
|
- 'prepareLessonCourseWareSubjectIsNull',
|
|
|
- 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;
|
|
|
- }}
|
|
|
- />
|
|
|
+ <div
|
|
|
+ class={[
|
|
|
+ styles.coursewarePresetsContainer,
|
|
|
+ forms.openTableShow && styles.rightLineShow
|
|
|
+ ]}>
|
|
|
+ <div
|
|
|
+ class={styles.presetsLeft}
|
|
|
+ id="presetsLeftRef"
|
|
|
+ style={{ width: `calc(${forms.leftWidth} - ${forms.rightWidth})` }}>
|
|
|
+ <NTabs
|
|
|
+ ref={subjectRef}
|
|
|
+ defaultValue=""
|
|
|
+ paneClass={styles.paneTitle}
|
|
|
+ justifyContent="start"
|
|
|
+ paneWrapperClass={styles.paneWrapperContainer}
|
|
|
+ value={
|
|
|
+ prepareStore.getSubjectId
|
|
|
+ ? 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>
|
|
|
+ <NSpin show={forms.loading}>
|
|
|
+ <NScrollbar class={styles.coursewarePresets}>
|
|
|
+ <div style={{ overflow: 'hidden' }}>
|
|
|
+ <div
|
|
|
+ class={[
|
|
|
+ styles.list,
|
|
|
+ !forms.loading &&
|
|
|
+ forms.tableList.length <= 0 &&
|
|
|
+ styles.listEmpty
|
|
|
+ ]}>
|
|
|
+ {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;
|
|
|
+ }}
|
|
|
+ // 布置作业
|
|
|
+ onWork={() => {
|
|
|
+ forms.workVisiable = true;
|
|
|
+ forms.selectItem = item;
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- ))}
|
|
|
- {!forms.loading && forms.tableList.length <= 0 && (
|
|
|
- <TheEmpty class={styles.empty1} description="暂无课件" />
|
|
|
- )}
|
|
|
- </div>
|
|
|
- </NSpin>
|
|
|
- </div>
|
|
|
-
|
|
|
- {forms.openTableList.length > 0 && (
|
|
|
- <>
|
|
|
- <div class={[styles.title, styles.line]}>
|
|
|
- <div class={styles.titleLeft}>
|
|
|
- <i class={[styles.icon, styles.iconCourseware]}></i>
|
|
|
- 相关课件
|
|
|
- {forms.openTableList.length > 1 && (
|
|
|
- <span
|
|
|
- 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>
|
|
|
+ ))}
|
|
|
+ {!forms.loading && forms.tableList.length <= 0 && (
|
|
|
+ <TheEmpty
|
|
|
+ class={styles.empty1}
|
|
|
+ description="当前章节暂无课件,快点击右上角创建课件吧"
|
|
|
+ />
|
|
|
)}
|
|
|
</div>
|
|
|
-
|
|
|
- {forms.openTableList.length > 1 && (
|
|
|
- <NSpace class={styles.swipeControll}>
|
|
|
- <div onClick={() => onChangeSlide('left')}>
|
|
|
- <NImage
|
|
|
- previewDisabled
|
|
|
- class={[
|
|
|
- styles.leftIcon,
|
|
|
- forms.carouselIndex === 0 && styles.disabled
|
|
|
- ]}
|
|
|
- src={iconSlideRight}
|
|
|
- />
|
|
|
- </div>
|
|
|
- <div onClick={() => onChangeSlide('right')}>
|
|
|
- <NImage
|
|
|
- class={
|
|
|
- forms.carouselIndex ==
|
|
|
- forms.openTableList.length - 1 && styles.disabled
|
|
|
- }
|
|
|
- previewDisabled
|
|
|
- src={iconSlideRight}
|
|
|
- />
|
|
|
- </div>
|
|
|
- </NSpace>
|
|
|
- )}
|
|
|
</div>
|
|
|
+ </NScrollbar>
|
|
|
+ </NSpin>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class={styles.presetsRight} id="presetsRightRef">
|
|
|
+ <NTooltip showArrow={false}>
|
|
|
+ {{
|
|
|
+ trigger: () => (
|
|
|
+ <div
|
|
|
+ class={[
|
|
|
+ styles.presetsArrar,
|
|
|
+ !forms.openTableShow && styles.presetsArrarActive
|
|
|
+ ]}
|
|
|
+ onClick={() => (forms.openTableShow = !forms.openTableShow)}>
|
|
|
+ <NIcon>
|
|
|
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
|
+ <path
|
|
|
+ d="M16.62 2.99a1.25 1.25 0 0 0-1.77 0L6.54 11.3a.996.996 0 0 0 0 1.41l8.31 8.31c.49.49 1.28.49 1.77 0s.49-1.28 0-1.77L9.38 12l7.25-7.25c.48-.48.48-1.28-.01-1.76z"
|
|
|
+ fill="currentColor"></path>
|
|
|
+ </svg>
|
|
|
+ </NIcon>
|
|
|
+ </div>
|
|
|
+ ),
|
|
|
+ default: () => <div>{forms.openTableShow ? '收起' : '展开'}</div>
|
|
|
+ }}
|
|
|
+ </NTooltip>
|
|
|
|
|
|
- <NSpin show={forms.openLoading} class={styles.openLoading}>
|
|
|
- <NCarousel
|
|
|
- slidesPerView={1}
|
|
|
- loop={false}
|
|
|
- ref={carouselRef}
|
|
|
- // style={{ width: forms.bodyWidth }}
|
|
|
- v-model:currentIndex={forms.carouselIndex}>
|
|
|
- {forms.openTableList.map((item: any) => (
|
|
|
- <div class={[styles.list, styles.listSame]}>
|
|
|
- {item.map((child: any) => (
|
|
|
- <div
|
|
|
- class={[
|
|
|
- styles.itemWrap,
|
|
|
- styles.itemBlock,
|
|
|
- 'row-nav'
|
|
|
- ]}>
|
|
|
- <div class={styles.itemWrapBox}>
|
|
|
- <CoursewareType
|
|
|
- isShowOpenFlag={false}
|
|
|
- isShowAdd
|
|
|
- isHoverShowAdd={false}
|
|
|
- item={child}
|
|
|
- onClick={() => onPreviewAttend(child.id)}
|
|
|
- onAdd={() => onAddCourseware(child)}
|
|
|
- />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- ))}
|
|
|
- </div>
|
|
|
- ))}
|
|
|
- </NCarousel>
|
|
|
- </NSpin>
|
|
|
- </>
|
|
|
- )}
|
|
|
- </NScrollbar>
|
|
|
+ <Related
|
|
|
+ onMore={() => (forms.showRelatedClass = true)}
|
|
|
+ onAdd={(item: any) => {
|
|
|
+ onAddCourseware(item);
|
|
|
+ }}
|
|
|
+ onLook={(item: any) => {
|
|
|
+ onPreviewAttend(item.id);
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ {/* )} */}
|
|
|
|
|
|
<NModal
|
|
|
v-model:show={forms.showRelatedClass}
|
|
@@ -608,7 +588,7 @@ export default defineComponent({
|
|
|
/>
|
|
|
</NModal>
|
|
|
|
|
|
- <NModal
|
|
|
+ {/* <NModal
|
|
|
v-model:show={forms.editTitleVisiable}
|
|
|
preset="card"
|
|
|
class={['modalTitle', styles.removeVisiable1]}
|
|
@@ -638,7 +618,7 @@ export default defineComponent({
|
|
|
</NButton>
|
|
|
</NSpace>
|
|
|
</div>
|
|
|
- </NModal>
|
|
|
+ </NModal> */}
|
|
|
|
|
|
<NModal
|
|
|
v-model:show={forms.preRemoveVisiable}
|
|
@@ -655,6 +635,28 @@ export default defineComponent({
|
|
|
/>
|
|
|
</NModal>
|
|
|
|
|
|
+ <NModal
|
|
|
+ v-model:show={forms.addVisiable}
|
|
|
+ preset="card"
|
|
|
+ class={['modalTitle', styles.removeVisiable1]}
|
|
|
+ title={'保存成功'}>
|
|
|
+ <TheMessageDialog
|
|
|
+ content={`<p style="text-align: left;">【${props.addParam.name}】暂未设置课件作业,是否现在去设置课件作业</p>`}
|
|
|
+ cancelButtonText="稍后设置"
|
|
|
+ confirmButtonText="立即设置"
|
|
|
+ // loading={forms.messageLoading}
|
|
|
+ onClose={() => (forms.addVisiable = false)}
|
|
|
+ onConfirm={() => {
|
|
|
+ forms.addVisiable = false;
|
|
|
+ forms.workVisiable = true;
|
|
|
+ forms.selectItem = {
|
|
|
+ id: props.addParam.id,
|
|
|
+ name: props.addParam.name
|
|
|
+ };
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </NModal>
|
|
|
+
|
|
|
{/* 应用内预览或上课 */}
|
|
|
<PreviewWindow
|
|
|
v-model:show={forms.previewModal}
|
|
@@ -692,10 +694,42 @@ export default defineComponent({
|
|
|
}
|
|
|
}}
|
|
|
onConfirm={async (item: any) => {
|
|
|
- onStartClass(forms.attendClassItem, item.classGroupId);
|
|
|
+ onStartClass(
|
|
|
+ forms.attendClassItem,
|
|
|
+ item.classGroupId,
|
|
|
+ item.subjectId
|
|
|
+ );
|
|
|
}}
|
|
|
/>
|
|
|
</NModal>
|
|
|
+
|
|
|
+ <NModal
|
|
|
+ v-model:show={forms.workVisiable}
|
|
|
+ preset="card"
|
|
|
+ class={['modalTitle background', styles.workVisiable]}
|
|
|
+ title={
|
|
|
+ forms.selectItem.lessonPreTrainingId ? '编辑作业' : '创建作业'
|
|
|
+ }>
|
|
|
+ <div id="model-homework-height" class={styles.workContainer}>
|
|
|
+ <div class={styles.workTrain}>
|
|
|
+ <Train
|
|
|
+ cardType="prepare"
|
|
|
+ lessonPreTraining={{
|
|
|
+ title: forms.selectItem.name + '-课后作业',
|
|
|
+ chapterId: forms.selectItem.id, // 课件编号
|
|
|
+ id: forms.selectItem.lessonPreTrainingId // 作业编号
|
|
|
+ }}
|
|
|
+ onChange={(val: any) => {
|
|
|
+ forms.workVisiable = val.status;
|
|
|
+ getCoursewareList();
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div class={styles.resourceMain}>
|
|
|
+ <ResourceMain cardType="prepare" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </NModal>
|
|
|
</div>
|
|
|
);
|
|
|
}
|