|  | @@ -27,6 +27,8 @@ import deepClone from '/src/helpers/deep-clone';
 | 
	
		
			
				|  |  |  import CardPreview from '/src/components/card-preview';
 | 
	
		
			
				|  |  |  import PreviewWindow from '/src/views/preview-window';
 | 
	
		
			
				|  |  |  import { state } from '/src/state';
 | 
	
		
			
				|  |  | +import SubjectSync from '../../../model/subject-sync';
 | 
	
		
			
				|  |  | +import { eventGlobal } from '/src/utils';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export default defineComponent({
 | 
	
		
			
				|  |  |    name: 'courseware-modal',
 | 
	
	
		
			
				|  | @@ -38,14 +40,20 @@ export default defineComponent({
 | 
	
		
			
				|  |  |      const dialog = useDialog();
 | 
	
		
			
				|  |  |      const message = useMessage();
 | 
	
		
			
				|  |  |      const forms = reactive({
 | 
	
		
			
				|  |  | +      className: route.query.name as any,
 | 
	
		
			
				|  |  | +      classGroupId: route.query.classGroupId,
 | 
	
		
			
				|  |  |        subjectId: route.query.subjectId ? Number(route.query.subjectId) : null,
 | 
	
		
			
				|  |  |        coursewareList: [] as any,
 | 
	
		
			
				|  |  |        loadingStatus: false,
 | 
	
		
			
				|  |  |        showAttendClass: false,
 | 
	
		
			
				|  |  | +      attendClassType: 'select', //
 | 
	
		
			
				|  |  |        removeIds: [] as any, // 临时删除的编号
 | 
	
		
			
				|  |  |        drag: false,
 | 
	
		
			
				|  |  | +      isEdit: false, // 是否更新数据
 | 
	
		
			
				|  |  | +      editSubjectIds: '', // 声部编号
 | 
	
		
			
				|  |  |        removeVisiable: false,
 | 
	
		
			
				|  |  |        removeVisiable1: false,
 | 
	
		
			
				|  |  | +      subjectSyncVisiable: false, // 同步声部
 | 
	
		
			
				|  |  |        show: false,
 | 
	
		
			
				|  |  |        item: {} as any,
 | 
	
		
			
				|  |  |        previewModal: false,
 | 
	
	
		
			
				|  | @@ -133,18 +141,13 @@ export default defineComponent({
 | 
	
		
			
				|  |  |          (c: any) => c.id === item.id
 | 
	
		
			
				|  |  |        );
 | 
	
		
			
				|  |  |        forms.coursewareList.splice(index, 1);
 | 
	
		
			
				|  |  | +      forms.isEdit = true;
 | 
	
		
			
				|  |  |        // prepareStore.setCoursewareList(forms.coursewareList);
 | 
	
		
			
				|  |  |        // console.log(prepareStore.getCoursewareList, 'getCourseware');
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // 完成编辑
 | 
	
		
			
				|  |  |      const onOverEdit = async () => {
 | 
	
		
			
				|  |  | -      // dialog.warning({
 | 
	
		
			
				|  |  | -      //   title: '提示',
 | 
	
		
			
				|  |  | -      //   content: `是否完成编辑?`,
 | 
	
		
			
				|  |  | -      //   positiveText: '确定',
 | 
	
		
			
				|  |  | -      //   negativeText: '取消',
 | 
	
		
			
				|  |  | -      //   onPositiveClick: async () => {
 | 
	
		
			
				|  |  |        try {
 | 
	
		
			
				|  |  |          const temp: any = [];
 | 
	
		
			
				|  |  |          forms.coursewareList.forEach((item: any) => {
 | 
	
	
		
			
				|  | @@ -156,11 +159,14 @@ export default defineComponent({
 | 
	
		
			
				|  |  |            });
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |          // 保存课件
 | 
	
		
			
				|  |  | +        // 判断是否编辑,如果编辑则取选择的声部
 | 
	
		
			
				|  |  |          await saveCourseware({
 | 
	
		
			
				|  |  |            coursewareDetailKnowledgeId: prepareStore.getSelectKey,
 | 
	
		
			
				|  |  |            lessonCoursewareId: prepareStore.getLessonCoursewareId,
 | 
	
		
			
				|  |  |            lessonCoursewareDetailId: prepareStore.getLessonCoursewareDetailId,
 | 
	
		
			
				|  |  | -          subjectId: prepareStore.getSubjectId,
 | 
	
		
			
				|  |  | +          subjectId: forms.isEdit
 | 
	
		
			
				|  |  | +            ? forms.editSubjectIds
 | 
	
		
			
				|  |  | +            : prepareStore.getSubjectId,
 | 
	
		
			
				|  |  |            materialList: [...temp]
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -174,8 +180,6 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        } catch {
 | 
	
		
			
				|  |  |          //
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -      //   }
 | 
	
		
			
				|  |  | -      // });
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // 预览上课
 | 
	
	
		
			
				|  | @@ -266,6 +270,14 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        await getList();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // 动态添加数据
 | 
	
		
			
				|  |  | +      eventGlobal.on('onPrepareAddItem', (item: any) => {
 | 
	
		
			
				|  |  | +        forms.coursewareList.push(item);
 | 
	
		
			
				|  |  | +        prepareStore.setCoursewareList(forms.coursewareList);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        forms.isEdit = true;
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      return () => (
 | 
	
	
		
			
				|  | @@ -276,7 +288,11 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                <NButton
 | 
	
		
			
				|  |  |                  type="default"
 | 
	
		
			
				|  |  |                  onClick={() => {
 | 
	
		
			
				|  |  | -                  forms.removeVisiable = true;
 | 
	
		
			
				|  |  | +                  if (forms.isEdit) {
 | 
	
		
			
				|  |  | +                    forms.subjectSyncVisiable = true;
 | 
	
		
			
				|  |  | +                  } else {
 | 
	
		
			
				|  |  | +                    forms.removeVisiable = true;
 | 
	
		
			
				|  |  | +                  }
 | 
	
		
			
				|  |  |                  }}>
 | 
	
		
			
				|  |  |                  完成编辑
 | 
	
		
			
				|  |  |                </NButton>
 | 
	
	
		
			
				|  | @@ -301,25 +317,31 @@ export default defineComponent({
 | 
	
		
			
				|  |  |              </NSpace>
 | 
	
		
			
				|  |  |            ) : (
 | 
	
		
			
				|  |  |              <NSpace>
 | 
	
		
			
				|  |  | -              <div class={styles.btnItem}>
 | 
	
		
			
				|  |  | -                <span class={styles.btnTitle}>上课班级:</span>
 | 
	
		
			
				|  |  | -                <NSelect
 | 
	
		
			
				|  |  | -                  placeholder="选择声部"
 | 
	
		
			
				|  |  | -                  options={catchStore.getSubjectList}
 | 
	
		
			
				|  |  | -                  labelField="name"
 | 
	
		
			
				|  |  | -                  valueField="id"
 | 
	
		
			
				|  |  | -                  class={styles.btnClassList}
 | 
	
		
			
				|  |  | -                  value={prepareStore.getSubjectId}
 | 
	
		
			
				|  |  | -                  onUpdate:value={(val: any) => {
 | 
	
		
			
				|  |  | -                    prepareStore.setSubjectId(val);
 | 
	
		
			
				|  |  | -                    getList();
 | 
	
		
			
				|  |  | -                  }}
 | 
	
		
			
				|  |  | -                />
 | 
	
		
			
				|  |  | -              </div>
 | 
	
		
			
				|  |  | +              {forms.classGroupId && (
 | 
	
		
			
				|  |  | +                <div class={styles.btnItem}>
 | 
	
		
			
				|  |  | +                  <span class={styles.btnTitle}>上课班级:</span>
 | 
	
		
			
				|  |  | +                  <div
 | 
	
		
			
				|  |  | +                    onClick={() => {
 | 
	
		
			
				|  |  | +                      forms.showAttendClass = true;
 | 
	
		
			
				|  |  | +                      forms.attendClassType = 'change';
 | 
	
		
			
				|  |  | +                    }}>
 | 
	
		
			
				|  |  | +                    <NSelect
 | 
	
		
			
				|  |  | +                      placeholder="选择声部"
 | 
	
		
			
				|  |  | +                      labelField="name"
 | 
	
		
			
				|  |  | +                      valueField="id"
 | 
	
		
			
				|  |  | +                      class={styles.btnClassList}
 | 
	
		
			
				|  |  | +                      value={forms.className}
 | 
	
		
			
				|  |  | +                      disabled
 | 
	
		
			
				|  |  | +                    />
 | 
	
		
			
				|  |  | +                  </div>
 | 
	
		
			
				|  |  | +                </div>
 | 
	
		
			
				|  |  | +              )}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                <div class={styles.btnItem}>
 | 
	
		
			
				|  |  |                  <span class={styles.btnTitle}>声部:</span>
 | 
	
		
			
				|  |  |                  <NSelect
 | 
	
		
			
				|  |  |                    placeholder="选择声部"
 | 
	
		
			
				|  |  | +                  class={styles.btnSubjectList}
 | 
	
		
			
				|  |  |                    options={catchStore.getSubjectList}
 | 
	
		
			
				|  |  |                    labelField="name"
 | 
	
		
			
				|  |  |                    valueField="id"
 | 
	
	
		
			
				|  | @@ -341,6 +363,8 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                  onClick={() => {
 | 
	
		
			
				|  |  |                    forms.drag = true;
 | 
	
		
			
				|  |  |                    prepareStore.setIsEditResource(true);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                  // forms.subjectSyncVisiable = true;
 | 
	
		
			
				|  |  |                  }}>
 | 
	
		
			
				|  |  |                  编辑
 | 
	
		
			
				|  |  |                </NButton>
 | 
	
	
		
			
				|  | @@ -450,6 +474,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                    return;
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  forms.showAttendClass = true;
 | 
	
		
			
				|  |  | +                forms.attendClassType = 'select';
 | 
	
		
			
				|  |  |                }}>
 | 
	
		
			
				|  |  |                开始上课
 | 
	
		
			
				|  |  |              </NButton>
 | 
	
	
		
			
				|  | @@ -465,6 +490,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |            blockScroll={false}>
 | 
	
		
			
				|  |  |            <AttendClass
 | 
	
		
			
				|  |  |              onClose={() => (forms.showAttendClass = false)}
 | 
	
		
			
				|  |  | +            type={forms.attendClassType}
 | 
	
		
			
				|  |  |              onPreview={(item: any) => {
 | 
	
		
			
				|  |  |                if (window.matchMedia('(display-mode: standalone)').matches) {
 | 
	
		
			
				|  |  |                  state.application = window.matchMedia(
 | 
	
	
		
			
				|  | @@ -484,6 +510,12 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                  window.open(href, +new Date() + '');
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |              }}
 | 
	
		
			
				|  |  | +            onConfirm={(item: any) => {
 | 
	
		
			
				|  |  | +              console.log(item, 'confirm');
 | 
	
		
			
				|  |  | +              forms.className = item.name;
 | 
	
		
			
				|  |  | +              forms.classGroupId = item.classGroupId;
 | 
	
		
			
				|  |  | +              forms.showAttendClass = false;
 | 
	
		
			
				|  |  | +            }}
 | 
	
		
			
				|  |  |            />
 | 
	
		
			
				|  |  |          </NModal>
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -548,6 +580,24 @@ export default defineComponent({
 | 
	
		
			
				|  |  |            type="attend"
 | 
	
		
			
				|  |  |            params={forms.previewParams}
 | 
	
		
			
				|  |  |          />
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        {/* 完成编辑时,选择声部 */}
 | 
	
		
			
				|  |  | +        <NModal
 | 
	
		
			
				|  |  | +          v-model:show={forms.subjectSyncVisiable}
 | 
	
		
			
				|  |  | +          preset="card"
 | 
	
		
			
				|  |  | +          class={['modalTitle background', styles.subjectSyncModal]}
 | 
	
		
			
				|  |  | +          title={'同步声部'}>
 | 
	
		
			
				|  |  | +          <SubjectSync
 | 
	
		
			
				|  |  | +            subjectId={prepareStore.getSubjectId as any}
 | 
	
		
			
				|  |  | +            onClose={() => (forms.subjectSyncVisiable = false)}
 | 
	
		
			
				|  |  | +            onConfirm={(subjectIds: any) => {
 | 
	
		
			
				|  |  | +              //
 | 
	
		
			
				|  |  | +              console.log(subjectIds, 'subjectIds');
 | 
	
		
			
				|  |  | +              forms.editSubjectIds = subjectIds.join(',');
 | 
	
		
			
				|  |  | +              onOverEdit();
 | 
	
		
			
				|  |  | +            }}
 | 
	
		
			
				|  |  | +          />
 | 
	
		
			
				|  |  | +        </NModal>
 | 
	
		
			
				|  |  |        </div>
 | 
	
		
			
				|  |  |      );
 | 
	
		
			
				|  |  |    }
 |