|
@@ -75,6 +75,7 @@ export default defineComponent({
|
|
|
const forms = reactive({
|
|
|
subjects: [] as any,
|
|
|
openFlagEnable: true, // 是否支持修改公开状态
|
|
|
+ autoPlay: true,
|
|
|
name: '',
|
|
|
openFlag: false,
|
|
|
createId: null,
|
|
@@ -85,6 +86,12 @@ export default defineComponent({
|
|
|
list: [] as any
|
|
|
}
|
|
|
] as any, // 基础数据
|
|
|
+ baseInfo: {
|
|
|
+ subjects: [] as any,
|
|
|
+ autoPlay: true,
|
|
|
+ name: '',
|
|
|
+ openFlag: false
|
|
|
+ }, // 基础数据
|
|
|
coursewareList: [
|
|
|
{
|
|
|
name: '',
|
|
@@ -142,6 +149,7 @@ export default defineComponent({
|
|
|
: [];
|
|
|
forms.openFlag = data.openFlag;
|
|
|
forms.openFlagEnable = data.openFlagEnable;
|
|
|
+ forms.autoPlay = data.autoPlay;
|
|
|
const temp: any = [];
|
|
|
tempRows.forEach((row: any) => {
|
|
|
const child: any = row.chapterKnowledgeMaterialList;
|
|
@@ -170,6 +178,22 @@ export default defineComponent({
|
|
|
});
|
|
|
forms.coursewareList = temp;
|
|
|
forms.baseCoursewareList = deepClone(temp);
|
|
|
+
|
|
|
+ forms.baseInfo = deepClone({
|
|
|
+ subjects: forms.subjects,
|
|
|
+ autoPlay: forms.autoPlay,
|
|
|
+ name: forms.name,
|
|
|
+ openFlag: forms.openFlag
|
|
|
+ });
|
|
|
+
|
|
|
+ /** 给头部组件分发消息 */
|
|
|
+ eventGlobal.emit('updateCoursewareHeadInfo', {
|
|
|
+ name: forms.name,
|
|
|
+ subjects: forms.subjects,
|
|
|
+ openFlag: forms.openFlag,
|
|
|
+ openFlagEnable: forms.openFlagEnable,
|
|
|
+ autoPlay: forms.autoPlay
|
|
|
+ });
|
|
|
} catch (e) {
|
|
|
//
|
|
|
console.log(e);
|
|
@@ -184,41 +208,6 @@ export default defineComponent({
|
|
|
coursewareItem.list.splice(j, 1);
|
|
|
};
|
|
|
|
|
|
- // 完成编辑
|
|
|
- // const onOverEdit = async () => {
|
|
|
- // try {
|
|
|
- // const temp: any = [];
|
|
|
- // forms.coursewareList.forEach((item: any) => {
|
|
|
- // temp.push({
|
|
|
- // materialName: item.name,
|
|
|
- // materialType: item.type,
|
|
|
- // materialId: item.materialId,
|
|
|
- // id: item.id
|
|
|
- // });
|
|
|
- // });
|
|
|
- // // 保存课件
|
|
|
- // // 判断是否编辑,如果编辑则取选择的声部
|
|
|
- // await saveCourseware({
|
|
|
- // coursewareDetailKnowledgeId: prepareStore.getSelectKey,
|
|
|
- // lessonCoursewareId: prepareStore.getLessonCoursewareId,
|
|
|
- // lessonCoursewareDetailId: prepareStore.getLessonCoursewareDetailId,
|
|
|
- // // subjectId: forms.isEdit
|
|
|
- // // ? forms.editSubjectIds
|
|
|
- // // : prepareStore.getSubjectId,
|
|
|
- // materialList: [...temp]
|
|
|
- // });
|
|
|
-
|
|
|
- // message.success('编辑成功');
|
|
|
- // // forms.removeVisiable = false;
|
|
|
- // prepareStore.setIsEditResource(false);
|
|
|
- // // 重置临时删除编号
|
|
|
- // forms.removeIds = [];
|
|
|
- // await getList();
|
|
|
- // } catch {
|
|
|
- // //
|
|
|
- // }
|
|
|
- // };
|
|
|
-
|
|
|
const isPointInsideElement = (element: any, x: number, y: number) => {
|
|
|
const rect = element.getBoundingClientRect();
|
|
|
return (
|
|
@@ -423,6 +412,7 @@ export default defineComponent({
|
|
|
name: forms.name,
|
|
|
subjectIds: forms.subjects.join(','),
|
|
|
openFlag: forms.openFlag,
|
|
|
+ autoPlay: forms.autoPlay,
|
|
|
coursewareDetailKnowledgeId: prepareStore.getSelectKey,
|
|
|
chapterKnowledgeList: [] as any
|
|
|
};
|
|
@@ -498,7 +488,14 @@ export default defineComponent({
|
|
|
const onPageBeforeLeave = (event: any) => {
|
|
|
const objA = JSON.stringify(forms.coursewareList);
|
|
|
const objB = JSON.stringify(forms.baseCoursewareList);
|
|
|
- if (objA === objB) {
|
|
|
+ const baseA = JSON.stringify({
|
|
|
+ subjects: forms.subjects,
|
|
|
+ autoPlay: forms.autoPlay,
|
|
|
+ name: forms.name,
|
|
|
+ openFlag: forms.openFlag
|
|
|
+ });
|
|
|
+ const baseB = JSON.stringify(forms.baseInfo);
|
|
|
+ if (objA === objB && baseA === baseB) {
|
|
|
if (typeof event === 'function') {
|
|
|
event();
|
|
|
|
|
@@ -527,6 +524,60 @@ export default defineComponent({
|
|
|
};
|
|
|
}
|
|
|
};
|
|
|
+
|
|
|
+ const onCancelCourseware = (item: any) => {
|
|
|
+ forms.subjects = item.subjects;
|
|
|
+ forms.openFlagEnable = item.openFlagEnable;
|
|
|
+ forms.autoPlay = item.autoPlay;
|
|
|
+ forms.name = item.name;
|
|
|
+ forms.openFlag = item.openFlag;
|
|
|
+
|
|
|
+ const objA = JSON.stringify(forms.coursewareList);
|
|
|
+ const objB = JSON.stringify(forms.baseCoursewareList);
|
|
|
+ const baseA = JSON.stringify({
|
|
|
+ subjects: forms.subjects,
|
|
|
+ autoPlay: forms.autoPlay,
|
|
|
+ name: forms.name,
|
|
|
+ openFlag: forms.openFlag
|
|
|
+ });
|
|
|
+ const baseB = JSON.stringify(forms.baseInfo);
|
|
|
+
|
|
|
+ if (objA === objB && baseA === baseB) {
|
|
|
+ emit('change', {
|
|
|
+ status: false,
|
|
|
+ addParam: {
|
|
|
+ isAdd: false,
|
|
|
+ name: forms.name,
|
|
|
+ id: forms.createId
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ eventGlobal.emit('teacher-slideshow', false);
|
|
|
+ } else {
|
|
|
+ forms.messageOperation = {
|
|
|
+ visiable: true,
|
|
|
+ type: 'save',
|
|
|
+ loading: false,
|
|
|
+ contentDirection: 'center',
|
|
|
+ title: '保存课件',
|
|
|
+ content: '当前课件暂未保存,是否保存?',
|
|
|
+ cancelButtonText: '不保存',
|
|
|
+ confirmButtonText: '保存',
|
|
|
+ index: 0
|
|
|
+ };
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ const onSubmitCourseware = (item: any) => {
|
|
|
+ forms.subjects = item.subjects;
|
|
|
+ forms.openFlagEnable = item.openFlagEnable;
|
|
|
+ forms.autoPlay = item.autoPlay;
|
|
|
+ forms.name = item.name;
|
|
|
+ forms.openFlag = item.openFlag;
|
|
|
+
|
|
|
+ onSubmit();
|
|
|
+ };
|
|
|
+
|
|
|
onMounted(async () => {
|
|
|
// 修改时重置默认数据
|
|
|
if (props.groupItem?.id) {
|
|
@@ -538,11 +589,18 @@ export default defineComponent({
|
|
|
// 动态添加数据
|
|
|
eventGlobal.on('onPrepareAddItem', addItem);
|
|
|
eventGlobal.on('pageBeforeLeave', onPageBeforeLeave);
|
|
|
+
|
|
|
+ // 取消
|
|
|
+ eventGlobal.on('coursewareClosed', onCancelCourseware);
|
|
|
+ // 保存
|
|
|
+ eventGlobal.on('coursewareSave', onSubmitCourseware);
|
|
|
});
|
|
|
|
|
|
onUnmounted(() => {
|
|
|
eventGlobal.off('onPrepareAddItem', addItem);
|
|
|
eventGlobal.off('pageBeforeLeave', onPageBeforeLeave);
|
|
|
+ eventGlobal.off('coursewareClosed', onCancelCourseware);
|
|
|
+ eventGlobal.off('coursewareSave', onSubmitCourseware);
|
|
|
});
|
|
|
|
|
|
// 当列表数据更新时同步缓存数据
|
|
@@ -556,135 +614,13 @@ export default defineComponent({
|
|
|
}
|
|
|
);
|
|
|
|
|
|
- // 全选
|
|
|
- const chioseAll = (list: any) => {
|
|
|
- forms.subjects = list.map((child: any) => {
|
|
|
- return child.id;
|
|
|
- }) as any;
|
|
|
- };
|
|
|
return () => (
|
|
|
<div class={styles.coursewareModal}>
|
|
|
- <div class={styles.btnGroup}>
|
|
|
- <NSpace>
|
|
|
- <div class={styles.btnItem}>
|
|
|
- <span class={styles.btnTitle}>
|
|
|
- <span>*</span>标题:
|
|
|
- </span>
|
|
|
- <NInput
|
|
|
- placeholder="请输入课件标题"
|
|
|
- v-model:value={forms.name}
|
|
|
- maxlength={20}
|
|
|
- clearable
|
|
|
- />
|
|
|
- </div>
|
|
|
- <div class={styles.btnItem}>
|
|
|
- <span class={styles.btnTitle}>
|
|
|
- <span>*</span>声部:
|
|
|
- </span>
|
|
|
- <NSelect
|
|
|
- placeholder="请选择声部(可多选)"
|
|
|
- class={styles.btnSubjectList}
|
|
|
- options={prepareStore.getSubjectList}
|
|
|
- labelField="name"
|
|
|
- valueField="id"
|
|
|
- multiple
|
|
|
- maxTagCount={1}
|
|
|
- size="small"
|
|
|
- v-model:value={forms.subjects}
|
|
|
- clearable
|
|
|
- v-slots={{
|
|
|
- action: () => (
|
|
|
- <>
|
|
|
- <NButton
|
|
|
- text
|
|
|
- style=" --n-width: 100% "
|
|
|
- size="small"
|
|
|
- onClick={() => chioseAll(prepareStore.getSubjectList)}>
|
|
|
- 全选
|
|
|
- </NButton>
|
|
|
- </>
|
|
|
- )
|
|
|
- }}
|
|
|
- />
|
|
|
- </div>
|
|
|
- <div class={styles.btnItem}>
|
|
|
- <span class={styles.btnTitle}>公开:</span>
|
|
|
- {!forms.openFlagEnable ? (
|
|
|
- <NTooltip style={{ maxWidth: '200px' }} showArrow={false}>
|
|
|
- {{
|
|
|
- trigger: () => (
|
|
|
- <NSwitch
|
|
|
- v-model:value={forms.openFlag}
|
|
|
- disabled={!forms.openFlagEnable}
|
|
|
- />
|
|
|
- ),
|
|
|
- default: () =>
|
|
|
- '为尊重课件原作者,在“相关课件”中添加的课件不支持公开'
|
|
|
- }}
|
|
|
- </NTooltip>
|
|
|
- ) : (
|
|
|
- <NSwitch
|
|
|
- v-model:value={forms.openFlag}
|
|
|
- disabled={!forms.openFlagEnable}
|
|
|
- />
|
|
|
- )}
|
|
|
- </div>
|
|
|
- </NSpace>
|
|
|
-
|
|
|
- {/* 编辑 */}
|
|
|
- <NSpace>
|
|
|
- <NButton
|
|
|
- type="error"
|
|
|
- bordered={false}
|
|
|
- onClick={() => {
|
|
|
- const objA = JSON.stringify(forms.coursewareList);
|
|
|
- const objB = JSON.stringify(forms.baseCoursewareList);
|
|
|
- if (objA === objB) {
|
|
|
- emit('change', {
|
|
|
- status: false,
|
|
|
- addParam: {
|
|
|
- isAdd: false,
|
|
|
- name: forms.name,
|
|
|
- id: forms.createId
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- eventGlobal.emit('teacher-slideshow', false);
|
|
|
- } else {
|
|
|
- forms.messageOperation = {
|
|
|
- visiable: true,
|
|
|
- type: 'save',
|
|
|
- loading: false,
|
|
|
- contentDirection: 'center',
|
|
|
- title: '保存课件',
|
|
|
- content: '当前课件暂未保存,是否保存?',
|
|
|
- cancelButtonText: '不保存',
|
|
|
- confirmButtonText: '保存',
|
|
|
- index: 0
|
|
|
- };
|
|
|
- }
|
|
|
- }}>
|
|
|
- 取消
|
|
|
- </NButton>
|
|
|
- <NButton
|
|
|
- type="primary"
|
|
|
- onClick={onSubmit}
|
|
|
- disabled={forms.coursewareList.length <= 0}>
|
|
|
- 保存课件
|
|
|
- </NButton>
|
|
|
- {/* <NButton
|
|
|
- type="primary"
|
|
|
- onClick={() => {
|
|
|
- forms.coursewareList = [{ name: '', list: [] }];
|
|
|
- }}>
|
|
|
- 请空
|
|
|
- </NButton> */}
|
|
|
- </NSpace>
|
|
|
- </div>
|
|
|
-
|
|
|
- <NScrollbar class={[styles.listContainer]} {...{ id: 'lessons-2' }}>
|
|
|
+ <NScrollbar
|
|
|
+ class={[styles.listContainer, 'listContainerWrap']}
|
|
|
+ {...{ id: 'lessons-2' }}>
|
|
|
<NSpin show={forms.loadingStatus}>
|
|
|
- <div class={[styles.listSection]}>
|
|
|
+ <div class={[styles.listSection, 'listSectionWrap']}>
|
|
|
{forms.coursewareList.map((item: any, index: number) => (
|
|
|
<div
|
|
|
class={[styles.listItems, 'row-group']}
|