|  | @@ -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']}
 |