|  | @@ -18,7 +18,14 @@ import {
 | 
	
		
			
				|  |  |    NTabPane,
 | 
	
		
			
				|  |  |    NTabs,
 | 
	
		
			
				|  |  |    useMessage,
 | 
	
		
			
				|  |  | -  NPopselect
 | 
	
		
			
				|  |  | +  NPopselect,
 | 
	
		
			
				|  |  | +  NPopover,
 | 
	
		
			
				|  |  | +  NForm,
 | 
	
		
			
				|  |  | +  NFormItem,
 | 
	
		
			
				|  |  | +  NInput,
 | 
	
		
			
				|  |  | +  NSpace,
 | 
	
		
			
				|  |  | +  NCascader,
 | 
	
		
			
				|  |  | +  NSwitch
 | 
	
		
			
				|  |  |  } from 'naive-ui';
 | 
	
		
			
				|  |  |  import { usePrepareStore } from '/src/store/modules/prepareLessons';
 | 
	
		
			
				|  |  |  import add from '@/views/studentList/images/add.png';
 | 
	
	
		
			
				|  | @@ -43,6 +50,15 @@ import PreviewWindow from '/src/views/preview-window';
 | 
	
		
			
				|  |  |  import Related from './related';
 | 
	
		
			
				|  |  |  import Train from '../train';
 | 
	
		
			
				|  |  |  import ResourceMain from '../../resource-main';
 | 
	
		
			
				|  |  | +import { useCatchStore } from '/src/store/modules/catchData';
 | 
	
		
			
				|  |  | +import deepClone from '/src/helpers/deep-clone';
 | 
	
		
			
				|  |  | +import {
 | 
	
		
			
				|  |  | +  api_teacherChapterLessonCoursewareAdd,
 | 
	
		
			
				|  |  | +  api_coursewareToTeacherCourseware,
 | 
	
		
			
				|  |  | +  api_updateCoursewareInfo
 | 
	
		
			
				|  |  | +} from '../../../api';
 | 
	
		
			
				|  |  | +import { vaildPPTUrl } from '/src/utils/urlUtils';
 | 
	
		
			
				|  |  | +import { useUserStore } from '/src/store/modules/users';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export default defineComponent({
 | 
	
		
			
				|  |  |    name: 'courseware-presets',
 | 
	
	
		
			
				|  | @@ -103,7 +119,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        workVisiable: false,
 | 
	
		
			
				|  |  |        wikiCategoryIdChild: null,
 | 
	
		
			
				|  |  |        instrumentErrorVisiable: false,
 | 
	
		
			
				|  |  | -      instrumentErrorContent: ""
 | 
	
		
			
				|  |  | +      instrumentErrorContent: ''
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const getCoursewareList = async () => {
 | 
	
	
		
			
				|  | @@ -137,7 +153,11 @@ export default defineComponent({
 | 
	
		
			
				|  |  |              name: item.name,
 | 
	
		
			
				|  |  |              coverImg: firstItem && firstItem[0]?.bizInfo.coverImg,
 | 
	
		
			
				|  |  |              type: firstItem && firstItem[0]?.bizInfo.type,
 | 
	
		
			
				|  |  | -            isNotWork: item.lessonPreTrainingNum <= 0 ? true : false // 是否布置作业
 | 
	
		
			
				|  |  | +            isNotWork: item.lessonPreTrainingNum <= 0 ? true : false, // 是否布置作业
 | 
	
		
			
				|  |  | +            coursewareType: item.coursewareType,
 | 
	
		
			
				|  |  | +            instrumentIds: item.instrumentIds,
 | 
	
		
			
				|  |  | +            pptId: firstItem && firstItem[0]?.id,
 | 
	
		
			
				|  |  | +            teacherSaveFlag: item.teacherSaveFlag
 | 
	
		
			
				|  |  |            });
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |          forms.tableList = tempList;
 | 
	
	
		
			
				|  | @@ -422,43 +442,37 @@ export default defineComponent({
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /** 上课前检测声部 */
 | 
	
		
			
				|  |  | -    const onClassCheckInstrument = async (item: any,
 | 
	
		
			
				|  |  | +    const onClassCheckInstrument = async (
 | 
	
		
			
				|  |  | +      item: any,
 | 
	
		
			
				|  |  |        classGroupId: any,
 | 
	
		
			
				|  |  | -      instrumentId?: any) => {
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | +      instrumentId?: any
 | 
	
		
			
				|  |  | +    ) => {
 | 
	
		
			
				|  |  |        try {
 | 
	
		
			
				|  |  | -        if(classGroupId) {
 | 
	
		
			
				|  |  | -          const {data} = await api_courseScheduleCheck({
 | 
	
		
			
				|  |  | +        if (classGroupId) {
 | 
	
		
			
				|  |  | +          const { data } = await api_courseScheduleCheck({
 | 
	
		
			
				|  |  |              classGroupId,
 | 
	
		
			
				|  |  |              chapterLessonCoursewareId: item.id
 | 
	
		
			
				|  |  | -          })
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  |            forms.attendClassItem = item;
 | 
	
		
			
				|  |  |            forms.attendClassId = classGroupId;
 | 
	
		
			
				|  |  | -          if(!data.chapterLessonCoursewareFlag) {
 | 
	
		
			
				|  |  | +          if (!data.chapterLessonCoursewareFlag) {
 | 
	
		
			
				|  |  |              forms.instrumentErrorVisiable = true;
 | 
	
		
			
				|  |  | -            forms.instrumentErrorContent = '课件支持的乐器与班级不符,是否继续使用该课件上课?'
 | 
	
		
			
				|  |  | -          } else if(!data.materialFlag) {
 | 
	
		
			
				|  |  | +            forms.instrumentErrorContent =
 | 
	
		
			
				|  |  | +              '课件支持的乐器与班级不符,是否继续使用该课件上课?';
 | 
	
		
			
				|  |  | +          } else if (!data.materialFlag) {
 | 
	
		
			
				|  |  |              forms.instrumentErrorVisiable = true;
 | 
	
		
			
				|  |  | -            forms.instrumentErrorContent = '课件中含有不符合班级乐器的资源,是否继续使用该课件上课?'
 | 
	
		
			
				|  |  | +            forms.instrumentErrorContent =
 | 
	
		
			
				|  |  | +              '课件中含有不符合班级乐器的资源,是否继续使用该课件上课?';
 | 
	
		
			
				|  |  |            } else {
 | 
	
		
			
				|  |  | -            onStartClass(
 | 
	
		
			
				|  |  | -              item,
 | 
	
		
			
				|  |  | -              classGroupId,
 | 
	
		
			
				|  |  | -              instrumentId
 | 
	
		
			
				|  |  | -            );
 | 
	
		
			
				|  |  | +            onStartClass(item, classGroupId, instrumentId);
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  | -          onStartClass(
 | 
	
		
			
				|  |  | -            item,
 | 
	
		
			
				|  |  | -            classGroupId,
 | 
	
		
			
				|  |  | -            instrumentId
 | 
	
		
			
				|  |  | -          );
 | 
	
		
			
				|  |  | +          onStartClass(item, classGroupId, instrumentId);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  |        } catch {
 | 
	
		
			
				|  |  | -        // 
 | 
	
		
			
				|  |  | +        //
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const selectChildObj = (item: any) => {
 | 
	
		
			
				|  |  |        const obj: any = {};
 | 
	
	
		
			
				|  | @@ -487,6 +501,151 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        });
 | 
	
		
			
				|  |  |        return instrumentId;
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  | +    /* ppt课件 */
 | 
	
		
			
				|  |  | +    const userStore = useUserStore();
 | 
	
		
			
				|  |  | +    const pptCourseware = reactive({
 | 
	
		
			
				|  |  | +      pptCoursewareShow: false,
 | 
	
		
			
				|  |  | +      id: '',
 | 
	
		
			
				|  |  | +      name: '',
 | 
	
		
			
				|  |  | +      subjects: [],
 | 
	
		
			
				|  |  | +      openFlagEnable: true,
 | 
	
		
			
				|  |  | +      openFlag: false
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +    const pptFormsRef = ref();
 | 
	
		
			
				|  |  | +    const subjectList = ref<any[]>([]);
 | 
	
		
			
				|  |  | +    const updateSubjectList = (ids?: any[]) => {
 | 
	
		
			
				|  |  | +      // 获取适用乐器编号 ,修改的乐器编号,集合
 | 
	
		
			
				|  |  | +      ids = ids || [];
 | 
	
		
			
				|  |  | +      const courseIds: any = [];
 | 
	
		
			
				|  |  | +      prepareStore.getInstrumentList.forEach((item: any) => {
 | 
	
		
			
				|  |  | +        if (Array.isArray(item.instruments)) {
 | 
	
		
			
				|  |  | +          item.instruments.forEach((child: any) => {
 | 
	
		
			
				|  |  | +            courseIds.push(child.id);
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +      const allIds = [...new Set([...courseIds, ...ids])];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      const tempList: any = [];
 | 
	
		
			
				|  |  | +      useCatchStore().getSubjectList.forEach((item: any) => {
 | 
	
		
			
				|  |  | +        const temp = deepClone(item);
 | 
	
		
			
				|  |  | +        temp.enableFlag = false;
 | 
	
		
			
				|  |  | +        if (Array.isArray(temp.instruments)) {
 | 
	
		
			
				|  |  | +          temp.instruments.forEach((child: any) => {
 | 
	
		
			
				|  |  | +            child.enableFlag = false;
 | 
	
		
			
				|  |  | +            if (allIds.includes(child.id)) {
 | 
	
		
			
				|  |  | +              child.enableFlag = true;
 | 
	
		
			
				|  |  | +              temp.enableFlag = true;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        tempList.push(temp);
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +      const tempSubjects: any[] = [];
 | 
	
		
			
				|  |  | +      tempList.forEach((subject: any) => {
 | 
	
		
			
				|  |  | +        if (subject.enableFlag) {
 | 
	
		
			
				|  |  | +          const { instruments, ...r } = subject;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          if (instruments && instruments.length > 0) {
 | 
	
		
			
				|  |  | +            const tempChild: any[] = [];
 | 
	
		
			
				|  |  | +            instruments?.forEach((instrument: any) => {
 | 
	
		
			
				|  |  | +              if (instrument.enableFlag) {
 | 
	
		
			
				|  |  | +                tempChild.push(instrument);
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (tempChild.length > 0)
 | 
	
		
			
				|  |  | +              tempSubjects.push({ ...r, instruments: tempChild });
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +      subjectList.value = tempSubjects;
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    const chioseAll = (list: any) => {
 | 
	
		
			
				|  |  | +      // 全选
 | 
	
		
			
				|  |  | +      const ids = [] as any;
 | 
	
		
			
				|  |  | +      list.map((item: any) => {
 | 
	
		
			
				|  |  | +        if (Array.isArray(item.instruments)) {
 | 
	
		
			
				|  |  | +          item.instruments.forEach((c: any) => {
 | 
	
		
			
				|  |  | +            ids.push(c.value);
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }) as any;
 | 
	
		
			
				|  |  | +      pptCourseware.subjects = ids;
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    function handlePptConfirm() {
 | 
	
		
			
				|  |  | +      pptFormsRef.value?.validate(async (err: any) => {
 | 
	
		
			
				|  |  | +        if (err) {
 | 
	
		
			
				|  |  | +          return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        const { id, name, subjects, openFlag, openFlagEnable } = pptCourseware;
 | 
	
		
			
				|  |  | +        if (id) {
 | 
	
		
			
				|  |  | +          const params = {
 | 
	
		
			
				|  |  | +            id,
 | 
	
		
			
				|  |  | +            name,
 | 
	
		
			
				|  |  | +            instrumentIds: subjects.join(','),
 | 
	
		
			
				|  |  | +            openFlag,
 | 
	
		
			
				|  |  | +            autoPlay: false,
 | 
	
		
			
				|  |  | +            openFlagEnable
 | 
	
		
			
				|  |  | +          };
 | 
	
		
			
				|  |  | +          api_updateCoursewareInfo(params).then(res => {
 | 
	
		
			
				|  |  | +            if (res.code === 200) {
 | 
	
		
			
				|  |  | +              pptCourseware.pptCoursewareShow = false;
 | 
	
		
			
				|  |  | +              getCoursewareList();
 | 
	
		
			
				|  |  | +              eventGlobal.emit('openCoursewareChanged');
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          const params = {
 | 
	
		
			
				|  |  | +            name,
 | 
	
		
			
				|  |  | +            instrumentIds: subjects.join(','),
 | 
	
		
			
				|  |  | +            openFlag,
 | 
	
		
			
				|  |  | +            autoPlay: false,
 | 
	
		
			
				|  |  | +            coursewareDetailKnowledgeId: prepareStore.getSelectKey,
 | 
	
		
			
				|  |  | +            coursewareType: 'PPT'
 | 
	
		
			
				|  |  | +          };
 | 
	
		
			
				|  |  | +          api_teacherChapterLessonCoursewareAdd(params).then(res => {
 | 
	
		
			
				|  |  | +            if (res.code === 200) {
 | 
	
		
			
				|  |  | +              pptCourseware.pptCoursewareShow = false;
 | 
	
		
			
				|  |  | +              getCoursewareList();
 | 
	
		
			
				|  |  | +              eventGlobal.emit('openCoursewareChanged');
 | 
	
		
			
				|  |  | +              const { teacherSaveFlag, id, chapterKnowledgeList } = res.data;
 | 
	
		
			
				|  |  | +              handleRouterPPT({
 | 
	
		
			
				|  |  | +                teacherSaveFlag,
 | 
	
		
			
				|  |  | +                id,
 | 
	
		
			
				|  |  | +                pptId:
 | 
	
		
			
				|  |  | +                  chapterKnowledgeList[0]?.chapterKnowledgeMaterialList[0]?.id
 | 
	
		
			
				|  |  | +              });
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    function handlePptEdit(item: Record<string, any>) {
 | 
	
		
			
				|  |  | +      updateSubjectList();
 | 
	
		
			
				|  |  | +      pptCourseware.id = item.id;
 | 
	
		
			
				|  |  | +      pptCourseware.name = item.name;
 | 
	
		
			
				|  |  | +      pptCourseware.subjects = item.instrumentIds
 | 
	
		
			
				|  |  | +        ? item.instrumentIds.split(',')
 | 
	
		
			
				|  |  | +        : [];
 | 
	
		
			
				|  |  | +      pptCourseware.openFlag = item.openFlag;
 | 
	
		
			
				|  |  | +      pptCourseware.openFlagEnable = item.openFlagEnable;
 | 
	
		
			
				|  |  | +      pptCourseware.pptCoursewareShow = true;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    async function handleRouterPPT(item: Record<string, any>) {
 | 
	
		
			
				|  |  | +      // 当teacherSaveFlag为false时候,需要把平台数据转为老师自己的课件
 | 
	
		
			
				|  |  | +      if (!item.teacherSaveFlag) {
 | 
	
		
			
				|  |  | +        await api_coursewareToTeacherCourseware(item.id);
 | 
	
		
			
				|  |  | +        item.teacherSaveFlag = true;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      const href = `${vaildPPTUrl()}/#/pptEditor?id=${
 | 
	
		
			
				|  |  | +        item.pptId
 | 
	
		
			
				|  |  | +      }&Authorization=${userStore.getToken}`;
 | 
	
		
			
				|  |  | +      window.open(href);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    onMounted(async () => {
 | 
	
		
			
				|  |  | +      await useCatchStore().getSubjects();
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  |      return () => (
 | 
	
		
			
				|  |  |        <div
 | 
	
		
			
				|  |  |          class={[
 | 
	
	
		
			
				|  | @@ -527,23 +686,57 @@ export default defineComponent({
 | 
	
		
			
				|  |  |              }}
 | 
	
		
			
				|  |  |              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>
 | 
	
		
			
				|  |  | +                <NPopover
 | 
	
		
			
				|  |  | +                  placement="bottom"
 | 
	
		
			
				|  |  | +                  trigger="hover"
 | 
	
		
			
				|  |  | +                  showArrow={false}
 | 
	
		
			
				|  |  | +                  to={false}
 | 
	
		
			
				|  |  | +                  duration={50}>
 | 
	
		
			
				|  |  | +                  {{
 | 
	
		
			
				|  |  | +                    trigger: () => (
 | 
	
		
			
				|  |  | +                      <NButton
 | 
	
		
			
				|  |  | +                        class={styles.addBtn}
 | 
	
		
			
				|  |  | +                        type="primary"
 | 
	
		
			
				|  |  | +                        bordered={false}>
 | 
	
		
			
				|  |  | +                        <NImage
 | 
	
		
			
				|  |  | +                          class={styles.addBtnIcon}
 | 
	
		
			
				|  |  | +                          previewDisabled
 | 
	
		
			
				|  |  | +                          src={add}></NImage>
 | 
	
		
			
				|  |  | +                        创建课件
 | 
	
		
			
				|  |  | +                      </NButton>
 | 
	
		
			
				|  |  | +                    ),
 | 
	
		
			
				|  |  | +                    default: () => (
 | 
	
		
			
				|  |  | +                      <div>
 | 
	
		
			
				|  |  | +                        <div
 | 
	
		
			
				|  |  | +                          class={styles.popoverItem}
 | 
	
		
			
				|  |  | +                          onClick={() => {
 | 
	
		
			
				|  |  | +                            eventGlobal.emit('teacher-slideshow', true);
 | 
	
		
			
				|  |  | +                            emit('change', {
 | 
	
		
			
				|  |  | +                              status: true,
 | 
	
		
			
				|  |  | +                              type: 'create'
 | 
	
		
			
				|  |  | +                            });
 | 
	
		
			
				|  |  | +                          }}>
 | 
	
		
			
				|  |  | +                          <span>数字化课件</span>
 | 
	
		
			
				|  |  | +                        </div>
 | 
	
		
			
				|  |  | +                        <div
 | 
	
		
			
				|  |  | +                          class={styles.popoverItem}
 | 
	
		
			
				|  |  | +                          onClick={() => {
 | 
	
		
			
				|  |  | +                            updateSubjectList();
 | 
	
		
			
				|  |  | +                            Object.assign(pptCourseware, {
 | 
	
		
			
				|  |  | +                              pptCoursewareShow: true,
 | 
	
		
			
				|  |  | +                              id: '',
 | 
	
		
			
				|  |  | +                              name: '',
 | 
	
		
			
				|  |  | +                              subjects: [],
 | 
	
		
			
				|  |  | +                              openFlagEnable: true,
 | 
	
		
			
				|  |  | +                              openFlag: false
 | 
	
		
			
				|  |  | +                            });
 | 
	
		
			
				|  |  | +                          }}>
 | 
	
		
			
				|  |  | +                          <span>PPT</span>
 | 
	
		
			
				|  |  | +                        </div>
 | 
	
		
			
				|  |  | +                      </div>
 | 
	
		
			
				|  |  | +                    )
 | 
	
		
			
				|  |  | +                  }}
 | 
	
		
			
				|  |  | +                </NPopover>
 | 
	
		
			
				|  |  |                )
 | 
	
		
			
				|  |  |              }}>
 | 
	
		
			
				|  |  |              {[
 | 
	
	
		
			
				|  | @@ -617,14 +810,23 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                            //   forms.editTitle = item.name;
 | 
	
		
			
				|  |  |                            //   forms.editTitleVisiable = true;
 | 
	
		
			
				|  |  |                            // }}
 | 
	
		
			
				|  |  | -                          onEdit={() => {
 | 
	
		
			
				|  |  | +                          onEdit={type => {
 | 
	
		
			
				|  |  |                              //
 | 
	
		
			
				|  |  | -                            eventGlobal.emit('teacher-slideshow', true);
 | 
	
		
			
				|  |  | -                            emit('change', {
 | 
	
		
			
				|  |  | -                              status: true,
 | 
	
		
			
				|  |  | -                              type: 'update',
 | 
	
		
			
				|  |  | -                              groupItem: { id: item.id }
 | 
	
		
			
				|  |  | -                            });
 | 
	
		
			
				|  |  | +                            if (item.coursewareType === 'PPT') {
 | 
	
		
			
				|  |  | +                              if (type === 'PPT') {
 | 
	
		
			
				|  |  | +                                // 进入 ppt 编辑页面
 | 
	
		
			
				|  |  | +                                handleRouterPPT(item);
 | 
	
		
			
				|  |  | +                              } else {
 | 
	
		
			
				|  |  | +                                handlePptEdit(item);
 | 
	
		
			
				|  |  | +                              }
 | 
	
		
			
				|  |  | +                            } else {
 | 
	
		
			
				|  |  | +                              eventGlobal.emit('teacher-slideshow', true);
 | 
	
		
			
				|  |  | +                              emit('change', {
 | 
	
		
			
				|  |  | +                                status: true,
 | 
	
		
			
				|  |  | +                                type: 'update',
 | 
	
		
			
				|  |  | +                                groupItem: { id: item.id }
 | 
	
		
			
				|  |  | +                              });
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  |                            }}
 | 
	
		
			
				|  |  |                            onStartClass={() =>
 | 
	
		
			
				|  |  |                              onClassCheckInstrument(item, forms.classGroupId)
 | 
	
	
		
			
				|  | @@ -798,14 +1000,10 @@ export default defineComponent({
 | 
	
		
			
				|  |  |              contentDirection="left"
 | 
	
		
			
				|  |  |              onClose={() => {
 | 
	
		
			
				|  |  |                forms.instrumentErrorVisiable = false;
 | 
	
		
			
				|  |  | -              
 | 
	
		
			
				|  |  |              }}
 | 
	
		
			
				|  |  |              onConfirm={() => {
 | 
	
		
			
				|  |  | -              // 
 | 
	
		
			
				|  |  | -              onStartClass(
 | 
	
		
			
				|  |  | -                forms.attendClassItem,
 | 
	
		
			
				|  |  | -                forms.attendClassId
 | 
	
		
			
				|  |  | -              );
 | 
	
		
			
				|  |  | +              //
 | 
	
		
			
				|  |  | +              onStartClass(forms.attendClassItem, forms.attendClassId);
 | 
	
		
			
				|  |  |              }}
 | 
	
		
			
				|  |  |            />
 | 
	
		
			
				|  |  |          </NModal>
 | 
	
	
		
			
				|  | @@ -885,6 +1083,124 @@ export default defineComponent({
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  |            </div>
 | 
	
		
			
				|  |  |          </NModal>
 | 
	
		
			
				|  |  | +        {/* 新建ppt课件 */}
 | 
	
		
			
				|  |  | +        <NModal
 | 
	
		
			
				|  |  | +          maskClosable={modalClickMask}
 | 
	
		
			
				|  |  | +          v-model:show={pptCourseware.pptCoursewareShow}
 | 
	
		
			
				|  |  | +          preset="card"
 | 
	
		
			
				|  |  | +          class={['modalTitle', styles.pptCoursewareModal]}
 | 
	
		
			
				|  |  | +          title={'课件设置'}>
 | 
	
		
			
				|  |  | +          <NForm
 | 
	
		
			
				|  |  | +            ref={pptFormsRef}
 | 
	
		
			
				|  |  | +            model={pptCourseware}
 | 
	
		
			
				|  |  | +            labelAlign="right"
 | 
	
		
			
				|  |  | +            labelPlacement="left">
 | 
	
		
			
				|  |  | +            <NFormItem
 | 
	
		
			
				|  |  | +              label="课件名称"
 | 
	
		
			
				|  |  | +              path="name"
 | 
	
		
			
				|  |  | +              rule={[
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                  required: true,
 | 
	
		
			
				|  |  | +                  message: '请输入课件名称',
 | 
	
		
			
				|  |  | +                  trigger: ['blur', 'change']
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +              ]}>
 | 
	
		
			
				|  |  | +              <NInput
 | 
	
		
			
				|  |  | +                placeholder="请输入课件名称"
 | 
	
		
			
				|  |  | +                v-model:value={pptCourseware.name}
 | 
	
		
			
				|  |  | +                maxlength={20}
 | 
	
		
			
				|  |  | +                clearable
 | 
	
		
			
				|  |  | +              />
 | 
	
		
			
				|  |  | +            </NFormItem>
 | 
	
		
			
				|  |  | +            <NFormItem
 | 
	
		
			
				|  |  | +              label="适用乐器"
 | 
	
		
			
				|  |  | +              path="subjects"
 | 
	
		
			
				|  |  | +              rule={[
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                  required: true,
 | 
	
		
			
				|  |  | +                  message: '请选择适用乐器',
 | 
	
		
			
				|  |  | +                  trigger: ['blur', 'change'],
 | 
	
		
			
				|  |  | +                  type: 'array'
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +              ]}>
 | 
	
		
			
				|  |  | +              <NCascader
 | 
	
		
			
				|  |  | +                placeholder="请选择乐器(可多选)"
 | 
	
		
			
				|  |  | +                class={styles.btnSubjectList}
 | 
	
		
			
				|  |  | +                options={subjectList.value}
 | 
	
		
			
				|  |  | +                checkStrategy="child"
 | 
	
		
			
				|  |  | +                showPath={false}
 | 
	
		
			
				|  |  | +                childrenField="instruments"
 | 
	
		
			
				|  |  | +                expandTrigger="hover"
 | 
	
		
			
				|  |  | +                labelField="name"
 | 
	
		
			
				|  |  | +                valueField="id"
 | 
	
		
			
				|  |  | +                clearable
 | 
	
		
			
				|  |  | +                filterable
 | 
	
		
			
				|  |  | +                multiple
 | 
	
		
			
				|  |  | +                maxTagCount={1}
 | 
	
		
			
				|  |  | +                v-model:value={pptCourseware.subjects}
 | 
	
		
			
				|  |  | +                v-slots={{
 | 
	
		
			
				|  |  | +                  action: () => (
 | 
	
		
			
				|  |  | +                    <>
 | 
	
		
			
				|  |  | +                      <NButton
 | 
	
		
			
				|  |  | +                        text
 | 
	
		
			
				|  |  | +                        style=" --n-width: 100% "
 | 
	
		
			
				|  |  | +                        size="small"
 | 
	
		
			
				|  |  | +                        onClick={() => chioseAll(subjectList.value)}>
 | 
	
		
			
				|  |  | +                        全选
 | 
	
		
			
				|  |  | +                      </NButton>
 | 
	
		
			
				|  |  | +                    </>
 | 
	
		
			
				|  |  | +                  )
 | 
	
		
			
				|  |  | +                }}
 | 
	
		
			
				|  |  | +              />
 | 
	
		
			
				|  |  | +            </NFormItem>
 | 
	
		
			
				|  |  | +            <div class={styles.btnItem}>
 | 
	
		
			
				|  |  | +              <span class={styles.btnTitle}>
 | 
	
		
			
				|  |  | +                公开课件
 | 
	
		
			
				|  |  | +                <NTooltip style={{ maxWidth: '200px' }} showArrow={false}>
 | 
	
		
			
				|  |  | +                  {{
 | 
	
		
			
				|  |  | +                    trigger: () => <i class={styles.iconQuestion}></i>,
 | 
	
		
			
				|  |  | +                    default: () => '公开课件后,其它老师可以使用该课件上课'
 | 
	
		
			
				|  |  | +                  }}
 | 
	
		
			
				|  |  | +                </NTooltip>
 | 
	
		
			
				|  |  | +              </span>
 | 
	
		
			
				|  |  | +              {!pptCourseware.openFlagEnable ? (
 | 
	
		
			
				|  |  | +                <NTooltip style={{ maxWidth: '200px' }} showArrow={false}>
 | 
	
		
			
				|  |  | +                  {{
 | 
	
		
			
				|  |  | +                    trigger: () => (
 | 
	
		
			
				|  |  | +                      <NSwitch
 | 
	
		
			
				|  |  | +                        size="large"
 | 
	
		
			
				|  |  | +                        v-model:value={pptCourseware.openFlag}
 | 
	
		
			
				|  |  | +                        disabled={!pptCourseware.openFlagEnable}
 | 
	
		
			
				|  |  | +                      />
 | 
	
		
			
				|  |  | +                    ),
 | 
	
		
			
				|  |  | +                    default: () =>
 | 
	
		
			
				|  |  | +                      '为尊重课件原作者,在“相关课件”中添加的课件不支持公开'
 | 
	
		
			
				|  |  | +                  }}
 | 
	
		
			
				|  |  | +                </NTooltip>
 | 
	
		
			
				|  |  | +              ) : (
 | 
	
		
			
				|  |  | +                <NSwitch
 | 
	
		
			
				|  |  | +                  size="large"
 | 
	
		
			
				|  |  | +                  v-model:value={pptCourseware.openFlag}
 | 
	
		
			
				|  |  | +                  disabled={!pptCourseware.openFlagEnable}
 | 
	
		
			
				|  |  | +                />
 | 
	
		
			
				|  |  | +              )}
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +            <NSpace class={styles.updateBtnGroup}>
 | 
	
		
			
				|  |  | +              <NButton
 | 
	
		
			
				|  |  | +                strong
 | 
	
		
			
				|  |  | +                type="default"
 | 
	
		
			
				|  |  | +                round
 | 
	
		
			
				|  |  | +                onClick={() => {
 | 
	
		
			
				|  |  | +                  pptCourseware.pptCoursewareShow = false;
 | 
	
		
			
				|  |  | +                }}>
 | 
	
		
			
				|  |  | +                取消
 | 
	
		
			
				|  |  | +              </NButton>
 | 
	
		
			
				|  |  | +              <NButton strong type="primary" round onClick={handlePptConfirm}>
 | 
	
		
			
				|  |  | +                确认
 | 
	
		
			
				|  |  | +              </NButton>
 | 
	
		
			
				|  |  | +            </NSpace>
 | 
	
		
			
				|  |  | +          </NForm>
 | 
	
		
			
				|  |  | +        </NModal>
 | 
	
		
			
				|  |  |        </div>
 | 
	
		
			
				|  |  |      );
 | 
	
		
			
				|  |  |    }
 |