|  | @@ -1,264 +1,264 @@
 | 
	
		
			
				|  |  | -import { defineComponent, onMounted, reactive, ref } from 'vue';
 | 
	
		
			
				|  |  | -import styles from './index.module.less';
 | 
	
		
			
				|  |  | -import {
 | 
	
		
			
				|  |  | -  NButton,
 | 
	
		
			
				|  |  | -  NCascader,
 | 
	
		
			
				|  |  | -  NInput,
 | 
	
		
			
				|  |  | -  NSelect,
 | 
	
		
			
				|  |  | -  NSwitch,
 | 
	
		
			
				|  |  | -  NTooltip
 | 
	
		
			
				|  |  | -} from 'naive-ui';
 | 
	
		
			
				|  |  | -import { usePrepareStore } from '/src/store/modules/prepareLessons';
 | 
	
		
			
				|  |  | -import { eventGlobal } from '/src/utils';
 | 
	
		
			
				|  |  | -import { useCatchStore } from '/src/store/modules/catchData';
 | 
	
		
			
				|  |  | -import deepClone from '/src/helpers/deep-clone';
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -export default defineComponent({
 | 
	
		
			
				|  |  | -  name: 'courseware-head',
 | 
	
		
			
				|  |  | -  setup(props, { emit, expose }) {
 | 
	
		
			
				|  |  | -    const prepareStore = usePrepareStore();
 | 
	
		
			
				|  |  | -    // 第一个课件标题,第二个课件声部
 | 
	
		
			
				|  |  | -    const checkForms = ref<any[]>(['', '']);
 | 
	
		
			
				|  |  | -    const subjectList = ref([] as any);
 | 
	
		
			
				|  |  | -    const forms = reactive({
 | 
	
		
			
				|  |  | -      subjects: [] as any,
 | 
	
		
			
				|  |  | -      openFlagEnable: true, // 是否支持修改公开状态
 | 
	
		
			
				|  |  | -      autoPlay: true,
 | 
	
		
			
				|  |  | -      name: '',
 | 
	
		
			
				|  |  | -      openFlag: false
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    // 全选
 | 
	
		
			
				|  |  | -    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;
 | 
	
		
			
				|  |  | -      // item.instrumentIds = ids;
 | 
	
		
			
				|  |  | -      forms.subjects = ids;
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    const getForms = () => {
 | 
	
		
			
				|  |  | -      return forms;
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    const updateDefaultInfo = (item: any) => {
 | 
	
		
			
				|  |  | -      forms.subjects = item.subjects;
 | 
	
		
			
				|  |  | -      forms.openFlagEnable = item.openFlagEnable;
 | 
	
		
			
				|  |  | -      forms.autoPlay = item.autoPlay;
 | 
	
		
			
				|  |  | -      forms.name = item.name;
 | 
	
		
			
				|  |  | -      forms.openFlag = item.openFlag;
 | 
	
		
			
				|  |  | -      updateSubjectList(item.subjects || []);
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    const checkCoursewareForm = () => {
 | 
	
		
			
				|  |  | -      //
 | 
	
		
			
				|  |  | -      checkForms.value[0] = forms.name ? '' : 'error';
 | 
	
		
			
				|  |  | -      checkForms.value[1] = forms.subjects?.length > 0 ? '' : 'error';
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    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;
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    onMounted(async () => {
 | 
	
		
			
				|  |  | -      await useCatchStore().getSubjects();
 | 
	
		
			
				|  |  | -      updateSubjectList();
 | 
	
		
			
				|  |  | -      eventGlobal.on('updateCoursewareHeadInfo', updateDefaultInfo);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      eventGlobal.on('checkCoursewareForm', checkCoursewareForm);
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    expose({
 | 
	
		
			
				|  |  | -      getForms
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    return () => (
 | 
	
		
			
				|  |  | -      <>
 | 
	
		
			
				|  |  | -        <div class={styles.headerTitle}>
 | 
	
		
			
				|  |  | -          <i class={styles.iconBook}></i>
 | 
	
		
			
				|  |  | -          <span>{prepareStore.getSelectName}</span>
 | 
	
		
			
				|  |  | -        </div>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        <div class={styles.formContainer}>
 | 
	
		
			
				|  |  | -          <div class={[styles.btnItem, styles.block]}>
 | 
	
		
			
				|  |  | -            <span class={[styles.btnTitle]}>
 | 
	
		
			
				|  |  | -              <span>*</span>课件标题
 | 
	
		
			
				|  |  | -            </span>
 | 
	
		
			
				|  |  | -            <NInput
 | 
	
		
			
				|  |  | -              placeholder="请输入课件标题"
 | 
	
		
			
				|  |  | -              v-model:value={forms.name}
 | 
	
		
			
				|  |  | -              maxlength={20}
 | 
	
		
			
				|  |  | -              clearable
 | 
	
		
			
				|  |  | -              status={checkForms.value[0]}
 | 
	
		
			
				|  |  | -              onUpdate:value={() => {
 | 
	
		
			
				|  |  | -                checkForms.value[0] = forms.name ? '' : 'error';
 | 
	
		
			
				|  |  | -              }}
 | 
	
		
			
				|  |  | -            />
 | 
	
		
			
				|  |  | -          </div>
 | 
	
		
			
				|  |  | -          <div class={[styles.btnItem, styles.block]}>
 | 
	
		
			
				|  |  | -            <span class={[styles.btnTitle]}>
 | 
	
		
			
				|  |  | -              <span>*</span>课件乐器
 | 
	
		
			
				|  |  | -            </span>
 | 
	
		
			
				|  |  | -            {/* <NSelect
 | 
	
		
			
				|  |  | -              status={checkForms.value[1]}
 | 
	
		
			
				|  |  | -              placeholder="请选择声部(可多选)"
 | 
	
		
			
				|  |  | -              class={styles.btnSubjectList}
 | 
	
		
			
				|  |  | -              options={prepareStore.getSubjectList}
 | 
	
		
			
				|  |  | -              labelField="name"
 | 
	
		
			
				|  |  | -              valueField="id"
 | 
	
		
			
				|  |  | -              multiple
 | 
	
		
			
				|  |  | -              maxTagCount={2}
 | 
	
		
			
				|  |  | -              size="small"
 | 
	
		
			
				|  |  | -              v-model:value={forms.subjects}
 | 
	
		
			
				|  |  | -              clearable
 | 
	
		
			
				|  |  | -              v-slots={{
 | 
	
		
			
				|  |  | -                action: () => (
 | 
	
		
			
				|  |  | -                  <>
 | 
	
		
			
				|  |  | -                    <NButton
 | 
	
		
			
				|  |  | -                      text
 | 
	
		
			
				|  |  | -                      style=" --n-width: 100% "
 | 
	
		
			
				|  |  | -                      size="small"
 | 
	
		
			
				|  |  | -                      onClick={() => chioseAll(prepareStore.getSubjectList)}>
 | 
	
		
			
				|  |  | -                      全选
 | 
	
		
			
				|  |  | -                    </NButton>
 | 
	
		
			
				|  |  | -                  </>
 | 
	
		
			
				|  |  | -                )
 | 
	
		
			
				|  |  | -              }}
 | 
	
		
			
				|  |  | -              onUpdate:value={() => {
 | 
	
		
			
				|  |  | -                checkForms.value[1] = forms.subjects?.length > 0 ? '' : 'error';
 | 
	
		
			
				|  |  | -              }}
 | 
	
		
			
				|  |  | -            /> */}
 | 
	
		
			
				|  |  | -            <NCascader
 | 
	
		
			
				|  |  | -              status={checkForms.value[1]}
 | 
	
		
			
				|  |  | -              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={forms.subjects}
 | 
	
		
			
				|  |  | -              onUpdate:value={() => {
 | 
	
		
			
				|  |  | -                checkForms.value[1] = forms.subjects?.length > 0 ? '' : 'error';
 | 
	
		
			
				|  |  | -              }}
 | 
	
		
			
				|  |  | -              v-slots={{
 | 
	
		
			
				|  |  | -                action: () => (
 | 
	
		
			
				|  |  | -                  <>
 | 
	
		
			
				|  |  | -                    <NButton
 | 
	
		
			
				|  |  | -                      text
 | 
	
		
			
				|  |  | -                      style=" --n-width: 100% "
 | 
	
		
			
				|  |  | -                      size="small"
 | 
	
		
			
				|  |  | -                      onClick={() => chioseAll(subjectList.value)}>
 | 
	
		
			
				|  |  | -                      全选
 | 
	
		
			
				|  |  | -                    </NButton>
 | 
	
		
			
				|  |  | -                  </>
 | 
	
		
			
				|  |  | -                )
 | 
	
		
			
				|  |  | -              }}
 | 
	
		
			
				|  |  | -            />
 | 
	
		
			
				|  |  | -          </div>
 | 
	
		
			
				|  |  | -          <div class={styles.btnItem}>
 | 
	
		
			
				|  |  | -            <span class={styles.btnTitle}>
 | 
	
		
			
				|  |  | -              自动播放
 | 
	
		
			
				|  |  | -              <NTooltip style={{ maxWidth: '200px' }} showArrow={false}>
 | 
	
		
			
				|  |  | -                {{
 | 
	
		
			
				|  |  | -                  trigger: () => <i class={styles.iconQuestion}></i>,
 | 
	
		
			
				|  |  | -                  default: () =>
 | 
	
		
			
				|  |  | -                    '开启自动播放后,课件内视频、音频资源将自动播放'
 | 
	
		
			
				|  |  | -                }}
 | 
	
		
			
				|  |  | -              </NTooltip>
 | 
	
		
			
				|  |  | -            </span>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            <NSwitch v-model:value={forms.autoPlay} />
 | 
	
		
			
				|  |  | -          </div>
 | 
	
		
			
				|  |  | -          <div class={styles.btnItem}>
 | 
	
		
			
				|  |  | -            <span class={styles.btnTitle}>
 | 
	
		
			
				|  |  | -              公开课件
 | 
	
		
			
				|  |  | -              <NTooltip style={{ maxWidth: '200px' }} showArrow={false}>
 | 
	
		
			
				|  |  | -                {{
 | 
	
		
			
				|  |  | -                  trigger: () => <i class={styles.iconQuestion}></i>,
 | 
	
		
			
				|  |  | -                  default: () => '公开课件后,其它老师可以使用该课件上课'
 | 
	
		
			
				|  |  | -                }}
 | 
	
		
			
				|  |  | -              </NTooltip>
 | 
	
		
			
				|  |  | -            </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>
 | 
	
		
			
				|  |  | -        </div>
 | 
	
		
			
				|  |  | -      </>
 | 
	
		
			
				|  |  | -    );
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -});
 | 
	
		
			
				|  |  | +import { defineComponent, onMounted, reactive, ref } from 'vue';
 | 
	
		
			
				|  |  | +import styles from './index.module.less';
 | 
	
		
			
				|  |  | +import {
 | 
	
		
			
				|  |  | +  NButton,
 | 
	
		
			
				|  |  | +  NCascader,
 | 
	
		
			
				|  |  | +  NInput,
 | 
	
		
			
				|  |  | +  NSelect,
 | 
	
		
			
				|  |  | +  NSwitch,
 | 
	
		
			
				|  |  | +  NTooltip
 | 
	
		
			
				|  |  | +} from 'naive-ui';
 | 
	
		
			
				|  |  | +import { usePrepareStore } from '/src/store/modules/prepareLessons';
 | 
	
		
			
				|  |  | +import { eventGlobal } from '/src/utils';
 | 
	
		
			
				|  |  | +import { useCatchStore } from '/src/store/modules/catchData';
 | 
	
		
			
				|  |  | +import deepClone from '/src/helpers/deep-clone';
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +export default defineComponent({
 | 
	
		
			
				|  |  | +  name: 'courseware-head',
 | 
	
		
			
				|  |  | +  setup(props, { emit, expose }) {
 | 
	
		
			
				|  |  | +    const prepareStore = usePrepareStore();
 | 
	
		
			
				|  |  | +    // 第一个课件标题,第二个课件声部
 | 
	
		
			
				|  |  | +    const checkForms = ref<any[]>(['', '']);
 | 
	
		
			
				|  |  | +    const subjectList = ref([] as any);
 | 
	
		
			
				|  |  | +    const forms = reactive({
 | 
	
		
			
				|  |  | +      subjects: [] as any,
 | 
	
		
			
				|  |  | +      openFlagEnable: true, // 是否支持修改公开状态
 | 
	
		
			
				|  |  | +      autoPlay: false,
 | 
	
		
			
				|  |  | +      name: '',
 | 
	
		
			
				|  |  | +      openFlag: false
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 全选
 | 
	
		
			
				|  |  | +    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;
 | 
	
		
			
				|  |  | +      // item.instrumentIds = ids;
 | 
	
		
			
				|  |  | +      forms.subjects = ids;
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const getForms = () => {
 | 
	
		
			
				|  |  | +      return forms;
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const updateDefaultInfo = (item: any) => {
 | 
	
		
			
				|  |  | +      forms.subjects = item.subjects;
 | 
	
		
			
				|  |  | +      forms.openFlagEnable = item.openFlagEnable;
 | 
	
		
			
				|  |  | +      forms.autoPlay = item.autoPlay;
 | 
	
		
			
				|  |  | +      forms.name = item.name;
 | 
	
		
			
				|  |  | +      forms.openFlag = item.openFlag;
 | 
	
		
			
				|  |  | +      updateSubjectList(item.subjects || []);
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const checkCoursewareForm = () => {
 | 
	
		
			
				|  |  | +      //
 | 
	
		
			
				|  |  | +      checkForms.value[0] = forms.name ? '' : 'error';
 | 
	
		
			
				|  |  | +      checkForms.value[1] = forms.subjects?.length > 0 ? '' : 'error';
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    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;
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    onMounted(async () => {
 | 
	
		
			
				|  |  | +      await useCatchStore().getSubjects();
 | 
	
		
			
				|  |  | +      updateSubjectList();
 | 
	
		
			
				|  |  | +      eventGlobal.on('updateCoursewareHeadInfo', updateDefaultInfo);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      eventGlobal.on('checkCoursewareForm', checkCoursewareForm);
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    expose({
 | 
	
		
			
				|  |  | +      getForms
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    return () => (
 | 
	
		
			
				|  |  | +      <>
 | 
	
		
			
				|  |  | +        <div class={styles.headerTitle}>
 | 
	
		
			
				|  |  | +          <i class={styles.iconBook}></i>
 | 
	
		
			
				|  |  | +          <span>{prepareStore.getSelectName}</span>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <div class={styles.formContainer}>
 | 
	
		
			
				|  |  | +          <div class={[styles.btnItem, styles.block]}>
 | 
	
		
			
				|  |  | +            <span class={[styles.btnTitle]}>
 | 
	
		
			
				|  |  | +              <span>*</span>课件标题
 | 
	
		
			
				|  |  | +            </span>
 | 
	
		
			
				|  |  | +            <NInput
 | 
	
		
			
				|  |  | +              placeholder="请输入课件标题"
 | 
	
		
			
				|  |  | +              v-model:value={forms.name}
 | 
	
		
			
				|  |  | +              maxlength={20}
 | 
	
		
			
				|  |  | +              clearable
 | 
	
		
			
				|  |  | +              status={checkForms.value[0]}
 | 
	
		
			
				|  |  | +              onUpdate:value={() => {
 | 
	
		
			
				|  |  | +                checkForms.value[0] = forms.name ? '' : 'error';
 | 
	
		
			
				|  |  | +              }}
 | 
	
		
			
				|  |  | +            />
 | 
	
		
			
				|  |  | +          </div>
 | 
	
		
			
				|  |  | +          <div class={[styles.btnItem, styles.block]}>
 | 
	
		
			
				|  |  | +            <span class={[styles.btnTitle]}>
 | 
	
		
			
				|  |  | +              <span>*</span>课件乐器
 | 
	
		
			
				|  |  | +            </span>
 | 
	
		
			
				|  |  | +            {/* <NSelect
 | 
	
		
			
				|  |  | +              status={checkForms.value[1]}
 | 
	
		
			
				|  |  | +              placeholder="请选择声部(可多选)"
 | 
	
		
			
				|  |  | +              class={styles.btnSubjectList}
 | 
	
		
			
				|  |  | +              options={prepareStore.getSubjectList}
 | 
	
		
			
				|  |  | +              labelField="name"
 | 
	
		
			
				|  |  | +              valueField="id"
 | 
	
		
			
				|  |  | +              multiple
 | 
	
		
			
				|  |  | +              maxTagCount={2}
 | 
	
		
			
				|  |  | +              size="small"
 | 
	
		
			
				|  |  | +              v-model:value={forms.subjects}
 | 
	
		
			
				|  |  | +              clearable
 | 
	
		
			
				|  |  | +              v-slots={{
 | 
	
		
			
				|  |  | +                action: () => (
 | 
	
		
			
				|  |  | +                  <>
 | 
	
		
			
				|  |  | +                    <NButton
 | 
	
		
			
				|  |  | +                      text
 | 
	
		
			
				|  |  | +                      style=" --n-width: 100% "
 | 
	
		
			
				|  |  | +                      size="small"
 | 
	
		
			
				|  |  | +                      onClick={() => chioseAll(prepareStore.getSubjectList)}>
 | 
	
		
			
				|  |  | +                      全选
 | 
	
		
			
				|  |  | +                    </NButton>
 | 
	
		
			
				|  |  | +                  </>
 | 
	
		
			
				|  |  | +                )
 | 
	
		
			
				|  |  | +              }}
 | 
	
		
			
				|  |  | +              onUpdate:value={() => {
 | 
	
		
			
				|  |  | +                checkForms.value[1] = forms.subjects?.length > 0 ? '' : 'error';
 | 
	
		
			
				|  |  | +              }}
 | 
	
		
			
				|  |  | +            /> */}
 | 
	
		
			
				|  |  | +            <NCascader
 | 
	
		
			
				|  |  | +              status={checkForms.value[1]}
 | 
	
		
			
				|  |  | +              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={forms.subjects}
 | 
	
		
			
				|  |  | +              onUpdate:value={() => {
 | 
	
		
			
				|  |  | +                checkForms.value[1] = forms.subjects?.length > 0 ? '' : 'error';
 | 
	
		
			
				|  |  | +              }}
 | 
	
		
			
				|  |  | +              v-slots={{
 | 
	
		
			
				|  |  | +                action: () => (
 | 
	
		
			
				|  |  | +                  <>
 | 
	
		
			
				|  |  | +                    <NButton
 | 
	
		
			
				|  |  | +                      text
 | 
	
		
			
				|  |  | +                      style=" --n-width: 100% "
 | 
	
		
			
				|  |  | +                      size="small"
 | 
	
		
			
				|  |  | +                      onClick={() => chioseAll(subjectList.value)}>
 | 
	
		
			
				|  |  | +                      全选
 | 
	
		
			
				|  |  | +                    </NButton>
 | 
	
		
			
				|  |  | +                  </>
 | 
	
		
			
				|  |  | +                )
 | 
	
		
			
				|  |  | +              }}
 | 
	
		
			
				|  |  | +            />
 | 
	
		
			
				|  |  | +          </div>
 | 
	
		
			
				|  |  | +          <div class={styles.btnItem}>
 | 
	
		
			
				|  |  | +            <span class={styles.btnTitle}>
 | 
	
		
			
				|  |  | +              自动播放
 | 
	
		
			
				|  |  | +              <NTooltip style={{ maxWidth: '200px' }} showArrow={false}>
 | 
	
		
			
				|  |  | +                {{
 | 
	
		
			
				|  |  | +                  trigger: () => <i class={styles.iconQuestion}></i>,
 | 
	
		
			
				|  |  | +                  default: () =>
 | 
	
		
			
				|  |  | +                    '开启自动播放后,课件内视频、音频资源将自动播放'
 | 
	
		
			
				|  |  | +                }}
 | 
	
		
			
				|  |  | +              </NTooltip>
 | 
	
		
			
				|  |  | +            </span>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            <NSwitch v-model:value={forms.autoPlay} />
 | 
	
		
			
				|  |  | +          </div>
 | 
	
		
			
				|  |  | +          <div class={styles.btnItem}>
 | 
	
		
			
				|  |  | +            <span class={styles.btnTitle}>
 | 
	
		
			
				|  |  | +              公开课件
 | 
	
		
			
				|  |  | +              <NTooltip style={{ maxWidth: '200px' }} showArrow={false}>
 | 
	
		
			
				|  |  | +                {{
 | 
	
		
			
				|  |  | +                  trigger: () => <i class={styles.iconQuestion}></i>,
 | 
	
		
			
				|  |  | +                  default: () => '公开课件后,其它老师可以使用该课件上课'
 | 
	
		
			
				|  |  | +                }}
 | 
	
		
			
				|  |  | +              </NTooltip>
 | 
	
		
			
				|  |  | +            </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>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  | +      </>
 | 
	
		
			
				|  |  | +    );
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +});
 |