|  | @@ -1,413 +1,413 @@
 | 
	
		
			
				|  |  | -import { defineComponent, reactive, ref } from 'vue';
 | 
	
		
			
				|  |  | -import { NImage, NModal } from 'naive-ui';
 | 
	
		
			
				|  |  | -import styles from './index.module.less';
 | 
	
		
			
				|  |  | -import icon1 from '../../images/addSource/icon1.png';
 | 
	
		
			
				|  |  | -import icon2 from '../../images/addSource/icon2.png';
 | 
	
		
			
				|  |  | -import icon3 from '../../images/addSource/icon3.png';
 | 
	
		
			
				|  |  | -import icon4 from '../../images/addSource/icon4.png';
 | 
	
		
			
				|  |  | -import icon5 from '../../images/addSource/icon5.png';
 | 
	
		
			
				|  |  | -import icon6 from '../../images/addSource/icon6.png';
 | 
	
		
			
				|  |  | -import icon7 from '../../images/addSource/icon7.png';
 | 
	
		
			
				|  |  | -import icon8 from '../../images/addSource/icon8.png';
 | 
	
		
			
				|  |  | -import { useRouter } from 'vue-router';
 | 
	
		
			
				|  |  | -import SourceRhythm from '../source-rhythm';
 | 
	
		
			
				|  |  | -import SourceInstrument from '../source-instrument';
 | 
	
		
			
				|  |  | -import SourceKnowledge from '../source-knowledge';
 | 
	
		
			
				|  |  | -import SourceMusician from '../source-musician';
 | 
	
		
			
				|  |  | -import SourceMusic from '../source-music';
 | 
	
		
			
				|  |  | -import { eventGlobal } from '/src/utils';
 | 
	
		
			
				|  |  | -import SubjectSync from '../subject-sync';
 | 
	
		
			
				|  |  | -import { usePrepareStore } from '/src/store/modules/prepareLessons';
 | 
	
		
			
				|  |  | -import UploadModal, {
 | 
	
		
			
				|  |  | -  formatUrlType
 | 
	
		
			
				|  |  | -} from '/src/views/natural-resources/components/my-resources/upload-modal';
 | 
	
		
			
				|  |  | -import SaveModal from '/src/views/natural-resources/components/my-resources/save-modal';
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -export default defineComponent({
 | 
	
		
			
				|  |  | -  name: 'add-other-source',
 | 
	
		
			
				|  |  | -  emits: ['close', 'comfirm'],
 | 
	
		
			
				|  |  | -  setup(props, { emit }) {
 | 
	
		
			
				|  |  | -    const prepareStore = usePrepareStore();
 | 
	
		
			
				|  |  | -    const router = useRouter();
 | 
	
		
			
				|  |  | -    const sourceList = ref([
 | 
	
		
			
				|  |  | -      {
 | 
	
		
			
				|  |  | -        image: icon8,
 | 
	
		
			
				|  |  | -        name: '上传资源',
 | 
	
		
			
				|  |  | -        index: 7
 | 
	
		
			
				|  |  | -      },
 | 
	
		
			
				|  |  | -      {
 | 
	
		
			
				|  |  | -        image: icon1,
 | 
	
		
			
				|  |  | -        name: '听音练习',
 | 
	
		
			
				|  |  | -        index: 0
 | 
	
		
			
				|  |  | -      },
 | 
	
		
			
				|  |  | -      {
 | 
	
		
			
				|  |  | -        image: icon2,
 | 
	
		
			
				|  |  | -        name: '节奏练习',
 | 
	
		
			
				|  |  | -        index: 1
 | 
	
		
			
				|  |  | -      },
 | 
	
		
			
				|  |  | -      {
 | 
	
		
			
				|  |  | -        image: icon3,
 | 
	
		
			
				|  |  | -        name: '乐器百科',
 | 
	
		
			
				|  |  | -        index: 2
 | 
	
		
			
				|  |  | -      },
 | 
	
		
			
				|  |  | -      {
 | 
	
		
			
				|  |  | -        image: icon6,
 | 
	
		
			
				|  |  | -        name: '名曲鉴赏',
 | 
	
		
			
				|  |  | -        index: 3
 | 
	
		
			
				|  |  | -      },
 | 
	
		
			
				|  |  | -      {
 | 
	
		
			
				|  |  | -        image: icon5,
 | 
	
		
			
				|  |  | -        name: '音乐家',
 | 
	
		
			
				|  |  | -        index: 4
 | 
	
		
			
				|  |  | -      },
 | 
	
		
			
				|  |  | -      {
 | 
	
		
			
				|  |  | -        image: icon4,
 | 
	
		
			
				|  |  | -        name: '乐理知识',
 | 
	
		
			
				|  |  | -        index: 5
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      // {
 | 
	
		
			
				|  |  | -      //   image: icon7,
 | 
	
		
			
				|  |  | -      //   name: '制作曲谱',
 | 
	
		
			
				|  |  | -      //   index: 6
 | 
	
		
			
				|  |  | -      // }
 | 
	
		
			
				|  |  | -    ]);
 | 
	
		
			
				|  |  | -    const state = reactive({
 | 
	
		
			
				|  |  | -      listenStatus: false, // 听音练习
 | 
	
		
			
				|  |  | -      rhythmStatus: false, //节奏
 | 
	
		
			
				|  |  | -      theoryStatus: false, //
 | 
	
		
			
				|  |  | -      musicStatus: false, //
 | 
	
		
			
				|  |  | -      instrumentStatus: false, //
 | 
	
		
			
				|  |  | -      musicianStatus: false, //
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      uploadStatus: false,
 | 
	
		
			
				|  |  | -      saveStatus: false,
 | 
	
		
			
				|  |  | -      editStatus: false, // 是否编辑
 | 
	
		
			
				|  |  | -      editList: [] as any, // TOD
 | 
	
		
			
				|  |  | -      editIds: [] as any, // 编辑的
 | 
	
		
			
				|  |  | -      editOverIds: [] as any // 确认修改的数据
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    // LISTEN:听音,RHYTHM:节奏,THEORY:乐理知识,MUSIC_WIKI:曲目 INSTRUMENT:乐器 MUSICIAN:音乐家)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    const onDetail = (item: any) => {
 | 
	
		
			
				|  |  | -      switch (item.index) {
 | 
	
		
			
				|  |  | -        case 0:
 | 
	
		
			
				|  |  | -          state.listenStatus = true;
 | 
	
		
			
				|  |  | -          break;
 | 
	
		
			
				|  |  | -        case 1:
 | 
	
		
			
				|  |  | -          state.rhythmStatus = true;
 | 
	
		
			
				|  |  | -          break;
 | 
	
		
			
				|  |  | -        case 2:
 | 
	
		
			
				|  |  | -          state.instrumentStatus = true;
 | 
	
		
			
				|  |  | -          break;
 | 
	
		
			
				|  |  | -        case 3:
 | 
	
		
			
				|  |  | -          state.musicStatus = true;
 | 
	
		
			
				|  |  | -          break;
 | 
	
		
			
				|  |  | -        case 4:
 | 
	
		
			
				|  |  | -          state.musicianStatus = true;
 | 
	
		
			
				|  |  | -          break;
 | 
	
		
			
				|  |  | -        case 5:
 | 
	
		
			
				|  |  | -          state.theoryStatus = true;
 | 
	
		
			
				|  |  | -          break;
 | 
	
		
			
				|  |  | -        case 6:
 | 
	
		
			
				|  |  | -          eventGlobal.emit('pageBeforeLeave', () => {
 | 
	
		
			
				|  |  | -            // 直接跳转到制谱页面 (临时存储数据)
 | 
	
		
			
				|  |  | -            sessionStorage.setItem('notation-open-create', '1');
 | 
	
		
			
				|  |  | -            router.push('/notation');
 | 
	
		
			
				|  |  | -          });
 | 
	
		
			
				|  |  | -          break;
 | 
	
		
			
				|  |  | -        case 7:
 | 
	
		
			
				|  |  | -          // eventGlobal.emit('pageBeforeLeave', () => {
 | 
	
		
			
				|  |  | -          //   // 直接跳转到制谱页面 (临时存储数据)
 | 
	
		
			
				|  |  | -          //   sessionStorage.setItem('notation-open-create', '1');
 | 
	
		
			
				|  |  | -          //   router.push('/notation');
 | 
	
		
			
				|  |  | -          // });
 | 
	
		
			
				|  |  | -          state.saveStatus = true;
 | 
	
		
			
				|  |  | -          break;
 | 
	
		
			
				|  |  | -        default:
 | 
	
		
			
				|  |  | -          break;
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -    return () => (
 | 
	
		
			
				|  |  | -      <>
 | 
	
		
			
				|  |  | -        <div class={styles.addOtherSource}>
 | 
	
		
			
				|  |  | -          {sourceList.value.map(source => (
 | 
	
		
			
				|  |  | -            <div class={styles.sourceItem} onClick={() => onDetail(source)}>
 | 
	
		
			
				|  |  | -              <NImage
 | 
	
		
			
				|  |  | -                class={styles.coverImg}
 | 
	
		
			
				|  |  | -                src={source.image}
 | 
	
		
			
				|  |  | -                previewDisabled
 | 
	
		
			
				|  |  | -              />
 | 
	
		
			
				|  |  | -              <p class={styles.name}>{source.name}</p>
 | 
	
		
			
				|  |  | -            </div>
 | 
	
		
			
				|  |  | -          ))}
 | 
	
		
			
				|  |  | -        </div>
 | 
	
		
			
				|  |  | -        {/*
 | 
	
		
			
				|  |  | -          百科: https://oss.dayaedu.com/ktqy/17101370093153448b2cd.png
 | 
	
		
			
				|  |  | -          jianshang https://oss.dayaedu.com/ktqy/1710137009315eedcdeed.png
 | 
	
		
			
				|  |  | -          jiezou https://oss.dayaedu.com/ktqy/171013700931689a322a6.png
 | 
	
		
			
				|  |  | -          yinyuejia https://oss.dayaedu.com/ktqy/1710137009316fbd65d39.png
 | 
	
		
			
				|  |  | -          yueli https://oss.dayaedu.com/ktqy/17101370093160d479afe.png
 | 
	
		
			
				|  |  | -        */}
 | 
	
		
			
				|  |  | -        {/* 节奏练习 */}
 | 
	
		
			
				|  |  | -        <NModal
 | 
	
		
			
				|  |  | -          v-model:show={state.rhythmStatus}
 | 
	
		
			
				|  |  | -          preset="card"
 | 
	
		
			
				|  |  | -          class={['modalTitle background', styles.addOtherSourceModal]}
 | 
	
		
			
				|  |  | -          title={'节奏练习'}>
 | 
	
		
			
				|  |  | -          <SourceRhythm
 | 
	
		
			
				|  |  | -            onClose={() => (state.rhythmStatus = false)}
 | 
	
		
			
				|  |  | -            onConfirm={(item: any) => {
 | 
	
		
			
				|  |  | -              state.rhythmStatus = false;
 | 
	
		
			
				|  |  | -              emit('comfirm', {
 | 
	
		
			
				|  |  | -                materialId: null,
 | 
	
		
			
				|  |  | -                coverImg: item.coverImg,
 | 
	
		
			
				|  |  | -                dataJson: item.dataJson,
 | 
	
		
			
				|  |  | -                title: '节奏练习',
 | 
	
		
			
				|  |  | -                isCollect: false,
 | 
	
		
			
				|  |  | -                isSelected: false,
 | 
	
		
			
				|  |  | -                content: null,
 | 
	
		
			
				|  |  | -                type: 'RHYTHM'
 | 
	
		
			
				|  |  | -              });
 | 
	
		
			
				|  |  | -              emit('close');
 | 
	
		
			
				|  |  | -            }}
 | 
	
		
			
				|  |  | -          />
 | 
	
		
			
				|  |  | -        </NModal>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        {/* 乐器百科 */}
 | 
	
		
			
				|  |  | -        <NModal
 | 
	
		
			
				|  |  | -          v-model:show={state.instrumentStatus}
 | 
	
		
			
				|  |  | -          preset="card"
 | 
	
		
			
				|  |  | -          class={['modalTitle', styles.instrumentModal]}
 | 
	
		
			
				|  |  | -          title={'乐器百科'}>
 | 
	
		
			
				|  |  | -          <SourceInstrument
 | 
	
		
			
				|  |  | -            onClose={() => (state.instrumentStatus = false)}
 | 
	
		
			
				|  |  | -            onConfirm={(val: any) => {
 | 
	
		
			
				|  |  | -              state.instrumentStatus = false;
 | 
	
		
			
				|  |  | -              const value = val || [];
 | 
	
		
			
				|  |  | -              const temp: any[] = [];
 | 
	
		
			
				|  |  | -              value.forEach((item: any) => {
 | 
	
		
			
				|  |  | -                temp.push({
 | 
	
		
			
				|  |  | -                  materialId: item.materialId,
 | 
	
		
			
				|  |  | -                  coverImg: item.coverImg,
 | 
	
		
			
				|  |  | -                  dataJson: null,
 | 
	
		
			
				|  |  | -                  title: item.title,
 | 
	
		
			
				|  |  | -                  isCollect: false,
 | 
	
		
			
				|  |  | -                  isSelected: false,
 | 
	
		
			
				|  |  | -                  content: item.content,
 | 
	
		
			
				|  |  | -                  type: 'INSTRUMENT'
 | 
	
		
			
				|  |  | -                });
 | 
	
		
			
				|  |  | -              });
 | 
	
		
			
				|  |  | -              emit('comfirm', temp);
 | 
	
		
			
				|  |  | -              emit('close');
 | 
	
		
			
				|  |  | -            }}
 | 
	
		
			
				|  |  | -          />
 | 
	
		
			
				|  |  | -        </NModal>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        {/* 乐理知识 */}
 | 
	
		
			
				|  |  | -        <NModal
 | 
	
		
			
				|  |  | -          v-model:show={state.theoryStatus}
 | 
	
		
			
				|  |  | -          preset="card"
 | 
	
		
			
				|  |  | -          class={['modalTitle', styles.theoryModal]}
 | 
	
		
			
				|  |  | -          title={'乐理知识'}>
 | 
	
		
			
				|  |  | -          <SourceKnowledge
 | 
	
		
			
				|  |  | -            onClose={() => (state.theoryStatus = false)}
 | 
	
		
			
				|  |  | -            onConfirm={(val: any) => {
 | 
	
		
			
				|  |  | -              state.theoryStatus = false;
 | 
	
		
			
				|  |  | -              const value = val || [];
 | 
	
		
			
				|  |  | -              const temp: any[] = [];
 | 
	
		
			
				|  |  | -              value.forEach((item: any) => {
 | 
	
		
			
				|  |  | -                temp.push({
 | 
	
		
			
				|  |  | -                  materialId: item.materialId,
 | 
	
		
			
				|  |  | -                  coverImg: item.coverImg,
 | 
	
		
			
				|  |  | -                  dataJson: null,
 | 
	
		
			
				|  |  | -                  title: item.title,
 | 
	
		
			
				|  |  | -                  isCollect: false,
 | 
	
		
			
				|  |  | -                  isSelected: false,
 | 
	
		
			
				|  |  | -                  content: item.content,
 | 
	
		
			
				|  |  | -                  type: 'THEORY'
 | 
	
		
			
				|  |  | -                });
 | 
	
		
			
				|  |  | -              });
 | 
	
		
			
				|  |  | -              emit('comfirm', temp);
 | 
	
		
			
				|  |  | -              emit('close');
 | 
	
		
			
				|  |  | -            }}
 | 
	
		
			
				|  |  | -          />
 | 
	
		
			
				|  |  | -        </NModal>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        {/* 音乐家 */}
 | 
	
		
			
				|  |  | -        <NModal
 | 
	
		
			
				|  |  | -          v-model:show={state.musicianStatus}
 | 
	
		
			
				|  |  | -          preset="card"
 | 
	
		
			
				|  |  | -          class={['modalTitle', styles.instrumentModal]}
 | 
	
		
			
				|  |  | -          title={'音乐家'}>
 | 
	
		
			
				|  |  | -          <SourceMusician
 | 
	
		
			
				|  |  | -            onClose={() => (state.musicianStatus = false)}
 | 
	
		
			
				|  |  | -            onConfirm={(val: any) => {
 | 
	
		
			
				|  |  | -              state.musicianStatus = false;
 | 
	
		
			
				|  |  | -              const value = val || [];
 | 
	
		
			
				|  |  | -              const temp: any[] = [];
 | 
	
		
			
				|  |  | -              value.forEach((item: any) => {
 | 
	
		
			
				|  |  | -                temp.push({
 | 
	
		
			
				|  |  | -                  materialId: item.materialId,
 | 
	
		
			
				|  |  | -                  coverImg: item.coverImg,
 | 
	
		
			
				|  |  | -                  dataJson: null,
 | 
	
		
			
				|  |  | -                  title: item.title,
 | 
	
		
			
				|  |  | -                  isCollect: false,
 | 
	
		
			
				|  |  | -                  isSelected: false,
 | 
	
		
			
				|  |  | -                  content: item.content,
 | 
	
		
			
				|  |  | -                  type: 'MUSICIAN'
 | 
	
		
			
				|  |  | -                });
 | 
	
		
			
				|  |  | -              });
 | 
	
		
			
				|  |  | -              emit('comfirm', temp);
 | 
	
		
			
				|  |  | -              emit('close');
 | 
	
		
			
				|  |  | -            }}
 | 
	
		
			
				|  |  | -          />
 | 
	
		
			
				|  |  | -        </NModal>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        {/* 名曲鉴赏 */}
 | 
	
		
			
				|  |  | -        <NModal
 | 
	
		
			
				|  |  | -          v-model:show={state.musicStatus}
 | 
	
		
			
				|  |  | -          preset="card"
 | 
	
		
			
				|  |  | -          class={['modalTitle', styles.musicModal]}
 | 
	
		
			
				|  |  | -          title={'名曲鉴赏'}>
 | 
	
		
			
				|  |  | -          <SourceMusic
 | 
	
		
			
				|  |  | -            onClose={() => (state.musicStatus = false)}
 | 
	
		
			
				|  |  | -            onConfirm={(val: any) => {
 | 
	
		
			
				|  |  | -              state.musicStatus = false;
 | 
	
		
			
				|  |  | -              const value = val || [];
 | 
	
		
			
				|  |  | -              const temp: any[] = [];
 | 
	
		
			
				|  |  | -              value.forEach((item: any) => {
 | 
	
		
			
				|  |  | -                temp.push({
 | 
	
		
			
				|  |  | -                  materialId: item.materialId,
 | 
	
		
			
				|  |  | -                  coverImg: item.coverImg,
 | 
	
		
			
				|  |  | -                  dataJson: null,
 | 
	
		
			
				|  |  | -                  title: item.title,
 | 
	
		
			
				|  |  | -                  isCollect: false,
 | 
	
		
			
				|  |  | -                  isSelected: false,
 | 
	
		
			
				|  |  | -                  content: item.content,
 | 
	
		
			
				|  |  | -                  type: 'MUSIC_WIKI'
 | 
	
		
			
				|  |  | -                });
 | 
	
		
			
				|  |  | -              });
 | 
	
		
			
				|  |  | -              emit('comfirm', temp);
 | 
	
		
			
				|  |  | -              emit('close');
 | 
	
		
			
				|  |  | -            }}
 | 
	
		
			
				|  |  | -          />
 | 
	
		
			
				|  |  | -        </NModal>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        {/* 听音练习 */}
 | 
	
		
			
				|  |  | -        <NModal
 | 
	
		
			
				|  |  | -          v-model:show={state.listenStatus}
 | 
	
		
			
				|  |  | -          preset="card"
 | 
	
		
			
				|  |  | -          class={['modalTitle background', styles.subjectSyncModal]}
 | 
	
		
			
				|  |  | -          title={'选择乐器'}>
 | 
	
		
			
				|  |  | -          <SubjectSync
 | 
	
		
			
				|  |  | -            // subjectId={prepareStore.getSubjectId as any}
 | 
	
		
			
				|  |  | -            onClose={() => (state.listenStatus = false)}
 | 
	
		
			
				|  |  | -            onConfirm={async (item: any) => {
 | 
	
		
			
				|  |  | -              //
 | 
	
		
			
				|  |  | -              try {
 | 
	
		
			
				|  |  | -                state.musicStatus = false;
 | 
	
		
			
				|  |  | -                const value = item.subjectCode || [];
 | 
	
		
			
				|  |  | -                const temp: any[] = [];
 | 
	
		
			
				|  |  | -                value.forEach((item: any) => {
 | 
	
		
			
				|  |  | -                  temp.push({
 | 
	
		
			
				|  |  | -                    materialId: item.materialId,
 | 
	
		
			
				|  |  | -                    coverImg: item.coverImg,
 | 
	
		
			
				|  |  | -                    dataJson: null,
 | 
	
		
			
				|  |  | -                    title: item.title,
 | 
	
		
			
				|  |  | -                    isCollect: false,
 | 
	
		
			
				|  |  | -                    isSelected: false,
 | 
	
		
			
				|  |  | -                    content: item.content,
 | 
	
		
			
				|  |  | -                    type: 'LISTEN'
 | 
	
		
			
				|  |  | -                  });
 | 
	
		
			
				|  |  | -                });
 | 
	
		
			
				|  |  | -                state.listenStatus = false;
 | 
	
		
			
				|  |  | -                emit('comfirm', temp);
 | 
	
		
			
				|  |  | -                emit('close');
 | 
	
		
			
				|  |  | -              } catch {
 | 
	
		
			
				|  |  | -                //
 | 
	
		
			
				|  |  | -              }
 | 
	
		
			
				|  |  | -            }}
 | 
	
		
			
				|  |  | -          />
 | 
	
		
			
				|  |  | -        </NModal>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        <NModal
 | 
	
		
			
				|  |  | -          v-model:show={state.uploadStatus}
 | 
	
		
			
				|  |  | -          preset="card"
 | 
	
		
			
				|  |  | -          showIcon={false}
 | 
	
		
			
				|  |  | -          class={['modalTitle background', styles.attendClassModal]}
 | 
	
		
			
				|  |  | -          title={state.editStatus ? '修改资源' : '上传资源'}
 | 
	
		
			
				|  |  | -          blockScroll={false}>
 | 
	
		
			
				|  |  | -          <UploadModal
 | 
	
		
			
				|  |  | -            editStatus={state.editStatus}
 | 
	
		
			
				|  |  | -            onClose={() => {
 | 
	
		
			
				|  |  | -              state.uploadStatus = false;
 | 
	
		
			
				|  |  | -            }}
 | 
	
		
			
				|  |  | -            onConfirm={(item: any) => {
 | 
	
		
			
				|  |  | -              state.editIds = [];
 | 
	
		
			
				|  |  | -              state.editList = [];
 | 
	
		
			
				|  |  | -              state.editOverIds = [];
 | 
	
		
			
				|  |  | -              state.saveStatus = false;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -              try {
 | 
	
		
			
				|  |  | -                state.musicStatus = false;
 | 
	
		
			
				|  |  | -                const value = item || [];
 | 
	
		
			
				|  |  | -                const temp: any[] = [];
 | 
	
		
			
				|  |  | -                value.forEach((item: any) => {
 | 
	
		
			
				|  |  | -                  temp.push({
 | 
	
		
			
				|  |  | -                    materialId: item.id,
 | 
	
		
			
				|  |  | -                    coverImg: item.coverImg,
 | 
	
		
			
				|  |  | -                    dataJson: null,
 | 
	
		
			
				|  |  | -                    title: item.name,
 | 
	
		
			
				|  |  | -                    isCollect: false,
 | 
	
		
			
				|  |  | -                    isSelected: false,
 | 
	
		
			
				|  |  | -                    content: item.content,
 | 
	
		
			
				|  |  | -                    type: item.type
 | 
	
		
			
				|  |  | -                  });
 | 
	
		
			
				|  |  | -                });
 | 
	
		
			
				|  |  | -                // state.listenStatus = false;
 | 
	
		
			
				|  |  | -                emit('comfirm', temp);
 | 
	
		
			
				|  |  | -                emit('close');
 | 
	
		
			
				|  |  | -              } catch {
 | 
	
		
			
				|  |  | -                //
 | 
	
		
			
				|  |  | -              }
 | 
	
		
			
				|  |  | -            }}
 | 
	
		
			
				|  |  | -            list={state.editList}
 | 
	
		
			
				|  |  | -          />
 | 
	
		
			
				|  |  | -        </NModal>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        <NModal
 | 
	
		
			
				|  |  | -          v-model:show={state.saveStatus}
 | 
	
		
			
				|  |  | -          preset="card"
 | 
	
		
			
				|  |  | -          showIcon={false}
 | 
	
		
			
				|  |  | -          class={['modalTitle background', styles.attendClassSaveModal]}
 | 
	
		
			
				|  |  | -          title={'上传资源'}
 | 
	
		
			
				|  |  | -          blockScroll={false}>
 | 
	
		
			
				|  |  | -          <SaveModal
 | 
	
		
			
				|  |  | -            onClose={() => (state.saveStatus = false)}
 | 
	
		
			
				|  |  | -            onConfrim={(val: any) => {
 | 
	
		
			
				|  |  | -              const list = val || [];
 | 
	
		
			
				|  |  | -              const temp: any = [];
 | 
	
		
			
				|  |  | -              list.forEach((item: any) => {
 | 
	
		
			
				|  |  | -                temp.push({
 | 
	
		
			
				|  |  | -                  subjectIds: null,
 | 
	
		
			
				|  |  | -                  openFlag: false,
 | 
	
		
			
				|  |  | -                  coverImg: item.coverImg,
 | 
	
		
			
				|  |  | -                  title: item.name || '',
 | 
	
		
			
				|  |  | -                  type: formatUrlType(item.content),
 | 
	
		
			
				|  |  | -                  enableFlag: 1,
 | 
	
		
			
				|  |  | -                  content: item.content,
 | 
	
		
			
				|  |  | -                  id: null
 | 
	
		
			
				|  |  | -                });
 | 
	
		
			
				|  |  | -              });
 | 
	
		
			
				|  |  | -              state.editList = temp;
 | 
	
		
			
				|  |  | -              state.uploadStatus = true;
 | 
	
		
			
				|  |  | -              state.editStatus = false;
 | 
	
		
			
				|  |  | -            }}
 | 
	
		
			
				|  |  | -          />
 | 
	
		
			
				|  |  | -        </NModal>
 | 
	
		
			
				|  |  | -      </>
 | 
	
		
			
				|  |  | -    );
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -});
 | 
	
		
			
				|  |  | +import { defineComponent, reactive, ref } from 'vue';
 | 
	
		
			
				|  |  | +import { NImage, NModal } from 'naive-ui';
 | 
	
		
			
				|  |  | +import styles from './index.module.less';
 | 
	
		
			
				|  |  | +import icon1 from '../../images/addSource/icon1.png';
 | 
	
		
			
				|  |  | +import icon2 from '../../images/addSource/icon2.png';
 | 
	
		
			
				|  |  | +import icon3 from '../../images/addSource/icon3.png';
 | 
	
		
			
				|  |  | +import icon4 from '../../images/addSource/icon4.png';
 | 
	
		
			
				|  |  | +import icon5 from '../../images/addSource/icon5.png';
 | 
	
		
			
				|  |  | +import icon6 from '../../images/addSource/icon6.png';
 | 
	
		
			
				|  |  | +import icon7 from '../../images/addSource/icon7.png';
 | 
	
		
			
				|  |  | +import icon8 from '../../images/addSource/icon8.png';
 | 
	
		
			
				|  |  | +import { useRouter } from 'vue-router';
 | 
	
		
			
				|  |  | +import SourceRhythm from '../source-rhythm';
 | 
	
		
			
				|  |  | +import SourceInstrument from '../source-instrument';
 | 
	
		
			
				|  |  | +import SourceKnowledge from '../source-knowledge';
 | 
	
		
			
				|  |  | +import SourceMusician from '../source-musician';
 | 
	
		
			
				|  |  | +import SourceMusic from '../source-music';
 | 
	
		
			
				|  |  | +import { eventGlobal } from '/src/utils';
 | 
	
		
			
				|  |  | +import SubjectSync from '../subject-sync';
 | 
	
		
			
				|  |  | +import { usePrepareStore } from '/src/store/modules/prepareLessons';
 | 
	
		
			
				|  |  | +import UploadModal, {
 | 
	
		
			
				|  |  | +  formatUrlType
 | 
	
		
			
				|  |  | +} from '/src/views/natural-resources/components/my-resources/upload-modal';
 | 
	
		
			
				|  |  | +import SaveModal from '/src/views/natural-resources/components/my-resources/save-modal';
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +export default defineComponent({
 | 
	
		
			
				|  |  | +  name: 'add-other-source',
 | 
	
		
			
				|  |  | +  emits: ['close', 'comfirm'],
 | 
	
		
			
				|  |  | +  setup(props, { emit }) {
 | 
	
		
			
				|  |  | +    const prepareStore = usePrepareStore();
 | 
	
		
			
				|  |  | +    const router = useRouter();
 | 
	
		
			
				|  |  | +    const sourceList = ref([
 | 
	
		
			
				|  |  | +      {
 | 
	
		
			
				|  |  | +        image: icon8,
 | 
	
		
			
				|  |  | +        name: '上传资源',
 | 
	
		
			
				|  |  | +        index: 7
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      {
 | 
	
		
			
				|  |  | +        image: icon1,
 | 
	
		
			
				|  |  | +        name: '听音练习',
 | 
	
		
			
				|  |  | +        index: 0
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      {
 | 
	
		
			
				|  |  | +        image: icon2,
 | 
	
		
			
				|  |  | +        name: '节奏练习',
 | 
	
		
			
				|  |  | +        index: 1
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      {
 | 
	
		
			
				|  |  | +        image: icon3,
 | 
	
		
			
				|  |  | +        name: '乐器百科',
 | 
	
		
			
				|  |  | +        index: 2
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      {
 | 
	
		
			
				|  |  | +        image: icon6,
 | 
	
		
			
				|  |  | +        name: '名曲鉴赏',
 | 
	
		
			
				|  |  | +        index: 3
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      {
 | 
	
		
			
				|  |  | +        image: icon5,
 | 
	
		
			
				|  |  | +        name: '音乐家',
 | 
	
		
			
				|  |  | +        index: 4
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      {
 | 
	
		
			
				|  |  | +        image: icon4,
 | 
	
		
			
				|  |  | +        name: '乐理知识',
 | 
	
		
			
				|  |  | +        index: 5
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // {
 | 
	
		
			
				|  |  | +      //   image: icon7,
 | 
	
		
			
				|  |  | +      //   name: '制作曲谱',
 | 
	
		
			
				|  |  | +      //   index: 6
 | 
	
		
			
				|  |  | +      // }
 | 
	
		
			
				|  |  | +    ]);
 | 
	
		
			
				|  |  | +    const state = reactive({
 | 
	
		
			
				|  |  | +      listenStatus: false, // 听音练习
 | 
	
		
			
				|  |  | +      rhythmStatus: false, //节奏
 | 
	
		
			
				|  |  | +      theoryStatus: false, //
 | 
	
		
			
				|  |  | +      musicStatus: false, //
 | 
	
		
			
				|  |  | +      instrumentStatus: false, //
 | 
	
		
			
				|  |  | +      musicianStatus: false, //
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      uploadStatus: false,
 | 
	
		
			
				|  |  | +      saveStatus: false,
 | 
	
		
			
				|  |  | +      editStatus: false, // 是否编辑
 | 
	
		
			
				|  |  | +      editList: [] as any, // TOD
 | 
	
		
			
				|  |  | +      editIds: [] as any, // 编辑的
 | 
	
		
			
				|  |  | +      editOverIds: [] as any // 确认修改的数据
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // LISTEN:听音,RHYTHM:节奏,THEORY:乐理知识,MUSIC_WIKI:曲目 INSTRUMENT:乐器 MUSICIAN:音乐家)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const onDetail = (item: any) => {
 | 
	
		
			
				|  |  | +      switch (item.index) {
 | 
	
		
			
				|  |  | +        case 0:
 | 
	
		
			
				|  |  | +          state.listenStatus = true;
 | 
	
		
			
				|  |  | +          break;
 | 
	
		
			
				|  |  | +        case 1:
 | 
	
		
			
				|  |  | +          state.rhythmStatus = true;
 | 
	
		
			
				|  |  | +          break;
 | 
	
		
			
				|  |  | +        case 2:
 | 
	
		
			
				|  |  | +          state.instrumentStatus = true;
 | 
	
		
			
				|  |  | +          break;
 | 
	
		
			
				|  |  | +        case 3:
 | 
	
		
			
				|  |  | +          state.musicStatus = true;
 | 
	
		
			
				|  |  | +          break;
 | 
	
		
			
				|  |  | +        case 4:
 | 
	
		
			
				|  |  | +          state.musicianStatus = true;
 | 
	
		
			
				|  |  | +          break;
 | 
	
		
			
				|  |  | +        case 5:
 | 
	
		
			
				|  |  | +          state.theoryStatus = true;
 | 
	
		
			
				|  |  | +          break;
 | 
	
		
			
				|  |  | +        case 6:
 | 
	
		
			
				|  |  | +          eventGlobal.emit('pageBeforeLeave', () => {
 | 
	
		
			
				|  |  | +            // 直接跳转到制谱页面 (临时存储数据)
 | 
	
		
			
				|  |  | +            sessionStorage.setItem('notation-open-create', '1');
 | 
	
		
			
				|  |  | +            router.push('/notation');
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +          break;
 | 
	
		
			
				|  |  | +        case 7:
 | 
	
		
			
				|  |  | +          // eventGlobal.emit('pageBeforeLeave', () => {
 | 
	
		
			
				|  |  | +          //   // 直接跳转到制谱页面 (临时存储数据)
 | 
	
		
			
				|  |  | +          //   sessionStorage.setItem('notation-open-create', '1');
 | 
	
		
			
				|  |  | +          //   router.push('/notation');
 | 
	
		
			
				|  |  | +          // });
 | 
	
		
			
				|  |  | +          state.saveStatus = true;
 | 
	
		
			
				|  |  | +          break;
 | 
	
		
			
				|  |  | +        default:
 | 
	
		
			
				|  |  | +          break;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    return () => (
 | 
	
		
			
				|  |  | +      <>
 | 
	
		
			
				|  |  | +        <div class={styles.addOtherSource}>
 | 
	
		
			
				|  |  | +          {sourceList.value.map(source => (
 | 
	
		
			
				|  |  | +            <div class={styles.sourceItem} onClick={() => onDetail(source)}>
 | 
	
		
			
				|  |  | +              <NImage
 | 
	
		
			
				|  |  | +                class={styles.coverImg}
 | 
	
		
			
				|  |  | +                src={source.image}
 | 
	
		
			
				|  |  | +                previewDisabled
 | 
	
		
			
				|  |  | +              />
 | 
	
		
			
				|  |  | +              <p class={styles.name}>{source.name}</p>
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +          ))}
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  | +        {/*
 | 
	
		
			
				|  |  | +          百科: https://oss.dayaedu.com/ktqy/17101370093153448b2cd.png
 | 
	
		
			
				|  |  | +          jianshang https://oss.dayaedu.com/ktqy/1710137009315eedcdeed.png
 | 
	
		
			
				|  |  | +          jiezou https://oss.dayaedu.com/ktqy/171013700931689a322a6.png
 | 
	
		
			
				|  |  | +          yinyuejia https://oss.dayaedu.com/ktqy/1710137009316fbd65d39.png
 | 
	
		
			
				|  |  | +          yueli https://oss.dayaedu.com/ktqy/17101370093160d479afe.png
 | 
	
		
			
				|  |  | +        */}
 | 
	
		
			
				|  |  | +        {/* 节奏练习 */}
 | 
	
		
			
				|  |  | +        <NModal
 | 
	
		
			
				|  |  | +          v-model:show={state.rhythmStatus}
 | 
	
		
			
				|  |  | +          preset="card"
 | 
	
		
			
				|  |  | +          class={['modalTitle background', styles.addOtherSourceModal]}
 | 
	
		
			
				|  |  | +          title={'节奏练习'}>
 | 
	
		
			
				|  |  | +          <SourceRhythm
 | 
	
		
			
				|  |  | +            onClose={() => (state.rhythmStatus = false)}
 | 
	
		
			
				|  |  | +            onConfirm={(item: any) => {
 | 
	
		
			
				|  |  | +              state.rhythmStatus = false;
 | 
	
		
			
				|  |  | +              emit('comfirm', {
 | 
	
		
			
				|  |  | +                materialId: null,
 | 
	
		
			
				|  |  | +                coverImg: item.coverImg,
 | 
	
		
			
				|  |  | +                dataJson: item.dataJson,
 | 
	
		
			
				|  |  | +                title: '节奏练习',
 | 
	
		
			
				|  |  | +                isCollect: false,
 | 
	
		
			
				|  |  | +                isSelected: false,
 | 
	
		
			
				|  |  | +                content: null,
 | 
	
		
			
				|  |  | +                type: 'RHYTHM'
 | 
	
		
			
				|  |  | +              });
 | 
	
		
			
				|  |  | +              emit('close');
 | 
	
		
			
				|  |  | +            }}
 | 
	
		
			
				|  |  | +          />
 | 
	
		
			
				|  |  | +        </NModal>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        {/* 乐器百科 */}
 | 
	
		
			
				|  |  | +        <NModal
 | 
	
		
			
				|  |  | +          v-model:show={state.instrumentStatus}
 | 
	
		
			
				|  |  | +          preset="card"
 | 
	
		
			
				|  |  | +          class={['modalTitle', styles.instrumentModal]}
 | 
	
		
			
				|  |  | +          title={'乐器百科'}>
 | 
	
		
			
				|  |  | +          <SourceInstrument
 | 
	
		
			
				|  |  | +            onClose={() => (state.instrumentStatus = false)}
 | 
	
		
			
				|  |  | +            onConfirm={(val: any) => {
 | 
	
		
			
				|  |  | +              state.instrumentStatus = false;
 | 
	
		
			
				|  |  | +              const value = val || [];
 | 
	
		
			
				|  |  | +              const temp: any[] = [];
 | 
	
		
			
				|  |  | +              value.forEach((item: any) => {
 | 
	
		
			
				|  |  | +                temp.push({
 | 
	
		
			
				|  |  | +                  materialId: item.materialId,
 | 
	
		
			
				|  |  | +                  coverImg: item.coverImg,
 | 
	
		
			
				|  |  | +                  dataJson: null,
 | 
	
		
			
				|  |  | +                  title: item.title,
 | 
	
		
			
				|  |  | +                  isCollect: false,
 | 
	
		
			
				|  |  | +                  isSelected: false,
 | 
	
		
			
				|  |  | +                  content: item.content,
 | 
	
		
			
				|  |  | +                  type: 'INSTRUMENT'
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +              });
 | 
	
		
			
				|  |  | +              emit('comfirm', temp);
 | 
	
		
			
				|  |  | +              emit('close');
 | 
	
		
			
				|  |  | +            }}
 | 
	
		
			
				|  |  | +          />
 | 
	
		
			
				|  |  | +        </NModal>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        {/* 乐理知识 */}
 | 
	
		
			
				|  |  | +        <NModal
 | 
	
		
			
				|  |  | +          v-model:show={state.theoryStatus}
 | 
	
		
			
				|  |  | +          preset="card"
 | 
	
		
			
				|  |  | +          class={['modalTitle', styles.theoryModal]}
 | 
	
		
			
				|  |  | +          title={'乐理知识'}>
 | 
	
		
			
				|  |  | +          <SourceKnowledge
 | 
	
		
			
				|  |  | +            onClose={() => (state.theoryStatus = false)}
 | 
	
		
			
				|  |  | +            onConfirm={(val: any) => {
 | 
	
		
			
				|  |  | +              state.theoryStatus = false;
 | 
	
		
			
				|  |  | +              const value = val || [];
 | 
	
		
			
				|  |  | +              const temp: any[] = [];
 | 
	
		
			
				|  |  | +              value.forEach((item: any) => {
 | 
	
		
			
				|  |  | +                temp.push({
 | 
	
		
			
				|  |  | +                  materialId: item.materialId,
 | 
	
		
			
				|  |  | +                  coverImg: item.coverImg,
 | 
	
		
			
				|  |  | +                  dataJson: null,
 | 
	
		
			
				|  |  | +                  title: item.title,
 | 
	
		
			
				|  |  | +                  isCollect: false,
 | 
	
		
			
				|  |  | +                  isSelected: false,
 | 
	
		
			
				|  |  | +                  content: item.content,
 | 
	
		
			
				|  |  | +                  type: 'THEORY'
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +              });
 | 
	
		
			
				|  |  | +              emit('comfirm', temp);
 | 
	
		
			
				|  |  | +              emit('close');
 | 
	
		
			
				|  |  | +            }}
 | 
	
		
			
				|  |  | +          />
 | 
	
		
			
				|  |  | +        </NModal>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        {/* 音乐家 */}
 | 
	
		
			
				|  |  | +        <NModal
 | 
	
		
			
				|  |  | +          v-model:show={state.musicianStatus}
 | 
	
		
			
				|  |  | +          preset="card"
 | 
	
		
			
				|  |  | +          class={['modalTitle', styles.instrumentModal]}
 | 
	
		
			
				|  |  | +          title={'音乐家'}>
 | 
	
		
			
				|  |  | +          <SourceMusician
 | 
	
		
			
				|  |  | +            onClose={() => (state.musicianStatus = false)}
 | 
	
		
			
				|  |  | +            onConfirm={(val: any) => {
 | 
	
		
			
				|  |  | +              state.musicianStatus = false;
 | 
	
		
			
				|  |  | +              const value = val || [];
 | 
	
		
			
				|  |  | +              const temp: any[] = [];
 | 
	
		
			
				|  |  | +              value.forEach((item: any) => {
 | 
	
		
			
				|  |  | +                temp.push({
 | 
	
		
			
				|  |  | +                  materialId: item.materialId,
 | 
	
		
			
				|  |  | +                  coverImg: item.coverImg,
 | 
	
		
			
				|  |  | +                  dataJson: null,
 | 
	
		
			
				|  |  | +                  title: item.title,
 | 
	
		
			
				|  |  | +                  isCollect: false,
 | 
	
		
			
				|  |  | +                  isSelected: false,
 | 
	
		
			
				|  |  | +                  content: item.content,
 | 
	
		
			
				|  |  | +                  type: 'MUSICIAN'
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +              });
 | 
	
		
			
				|  |  | +              emit('comfirm', temp);
 | 
	
		
			
				|  |  | +              emit('close');
 | 
	
		
			
				|  |  | +            }}
 | 
	
		
			
				|  |  | +          />
 | 
	
		
			
				|  |  | +        </NModal>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        {/* 名曲鉴赏 */}
 | 
	
		
			
				|  |  | +        <NModal
 | 
	
		
			
				|  |  | +          v-model:show={state.musicStatus}
 | 
	
		
			
				|  |  | +          preset="card"
 | 
	
		
			
				|  |  | +          class={['modalTitle', styles.musicModal]}
 | 
	
		
			
				|  |  | +          title={'名曲鉴赏'}>
 | 
	
		
			
				|  |  | +          <SourceMusic
 | 
	
		
			
				|  |  | +            onClose={() => (state.musicStatus = false)}
 | 
	
		
			
				|  |  | +            onConfirm={(val: any) => {
 | 
	
		
			
				|  |  | +              state.musicStatus = false;
 | 
	
		
			
				|  |  | +              const value = val || [];
 | 
	
		
			
				|  |  | +              const temp: any[] = [];
 | 
	
		
			
				|  |  | +              value.forEach((item: any) => {
 | 
	
		
			
				|  |  | +                temp.push({
 | 
	
		
			
				|  |  | +                  materialId: item.materialId,
 | 
	
		
			
				|  |  | +                  coverImg: item.coverImg,
 | 
	
		
			
				|  |  | +                  dataJson: null,
 | 
	
		
			
				|  |  | +                  title: item.title,
 | 
	
		
			
				|  |  | +                  isCollect: false,
 | 
	
		
			
				|  |  | +                  isSelected: false,
 | 
	
		
			
				|  |  | +                  content: item.content,
 | 
	
		
			
				|  |  | +                  type: 'MUSIC_WIKI'
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +              });
 | 
	
		
			
				|  |  | +              emit('comfirm', temp);
 | 
	
		
			
				|  |  | +              emit('close');
 | 
	
		
			
				|  |  | +            }}
 | 
	
		
			
				|  |  | +          />
 | 
	
		
			
				|  |  | +        </NModal>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        {/* 听音练习 */}
 | 
	
		
			
				|  |  | +        <NModal
 | 
	
		
			
				|  |  | +          v-model:show={state.listenStatus}
 | 
	
		
			
				|  |  | +          preset="card"
 | 
	
		
			
				|  |  | +          class={['modalTitle background', styles.subjectSyncModal]}
 | 
	
		
			
				|  |  | +          title={'选择乐器'}>
 | 
	
		
			
				|  |  | +          <SubjectSync
 | 
	
		
			
				|  |  | +            // subjectId={prepareStore.getSubjectId as any}
 | 
	
		
			
				|  |  | +            onClose={() => (state.listenStatus = false)}
 | 
	
		
			
				|  |  | +            onConfirm={async (item: any) => {
 | 
	
		
			
				|  |  | +              //
 | 
	
		
			
				|  |  | +              try {
 | 
	
		
			
				|  |  | +                state.musicStatus = false;
 | 
	
		
			
				|  |  | +                const value = item.subjectCode || [];
 | 
	
		
			
				|  |  | +                const temp: any[] = [];
 | 
	
		
			
				|  |  | +                value.forEach((item: any) => {
 | 
	
		
			
				|  |  | +                  temp.push({
 | 
	
		
			
				|  |  | +                    materialId: item.materialId,
 | 
	
		
			
				|  |  | +                    coverImg: item.coverImg,
 | 
	
		
			
				|  |  | +                    dataJson: null,
 | 
	
		
			
				|  |  | +                    title: item.title,
 | 
	
		
			
				|  |  | +                    isCollect: false,
 | 
	
		
			
				|  |  | +                    isSelected: false,
 | 
	
		
			
				|  |  | +                    content: item.content,
 | 
	
		
			
				|  |  | +                    type: 'LISTEN'
 | 
	
		
			
				|  |  | +                  });
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +                state.listenStatus = false;
 | 
	
		
			
				|  |  | +                emit('comfirm', temp);
 | 
	
		
			
				|  |  | +                emit('close');
 | 
	
		
			
				|  |  | +              } catch {
 | 
	
		
			
				|  |  | +                //
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +            }}
 | 
	
		
			
				|  |  | +          />
 | 
	
		
			
				|  |  | +        </NModal>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <NModal
 | 
	
		
			
				|  |  | +          v-model:show={state.uploadStatus}
 | 
	
		
			
				|  |  | +          preset="card"
 | 
	
		
			
				|  |  | +          showIcon={false}
 | 
	
		
			
				|  |  | +          class={['modalTitle background', styles.attendClassModal]}
 | 
	
		
			
				|  |  | +          title={state.editStatus ? '修改资源' : '上传资源'}
 | 
	
		
			
				|  |  | +          blockScroll={false}>
 | 
	
		
			
				|  |  | +          <UploadModal
 | 
	
		
			
				|  |  | +            editStatus={state.editStatus}
 | 
	
		
			
				|  |  | +            onClose={() => {
 | 
	
		
			
				|  |  | +              state.uploadStatus = false;
 | 
	
		
			
				|  |  | +            }}
 | 
	
		
			
				|  |  | +            onConfirm={(item: any) => {
 | 
	
		
			
				|  |  | +              state.editIds = [];
 | 
	
		
			
				|  |  | +              state.editList = [];
 | 
	
		
			
				|  |  | +              state.editOverIds = [];
 | 
	
		
			
				|  |  | +              state.saveStatus = false;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +              try {
 | 
	
		
			
				|  |  | +                state.musicStatus = false;
 | 
	
		
			
				|  |  | +                const value = item || [];
 | 
	
		
			
				|  |  | +                const temp: any[] = [];
 | 
	
		
			
				|  |  | +                value.forEach((item: any) => {
 | 
	
		
			
				|  |  | +                  temp.push({
 | 
	
		
			
				|  |  | +                    materialId: item.id,
 | 
	
		
			
				|  |  | +                    coverImg: item.coverImg,
 | 
	
		
			
				|  |  | +                    dataJson: null,
 | 
	
		
			
				|  |  | +                    title: item.name,
 | 
	
		
			
				|  |  | +                    isCollect: false,
 | 
	
		
			
				|  |  | +                    isSelected: false,
 | 
	
		
			
				|  |  | +                    content: item.content,
 | 
	
		
			
				|  |  | +                    type: item.type
 | 
	
		
			
				|  |  | +                  });
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +                // state.listenStatus = false;
 | 
	
		
			
				|  |  | +                emit('comfirm', temp);
 | 
	
		
			
				|  |  | +                emit('close');
 | 
	
		
			
				|  |  | +              } catch {
 | 
	
		
			
				|  |  | +                //
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +            }}
 | 
	
		
			
				|  |  | +            list={state.editList}
 | 
	
		
			
				|  |  | +          />
 | 
	
		
			
				|  |  | +        </NModal>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <NModal
 | 
	
		
			
				|  |  | +          v-model:show={state.saveStatus}
 | 
	
		
			
				|  |  | +          preset="card"
 | 
	
		
			
				|  |  | +          showIcon={false}
 | 
	
		
			
				|  |  | +          class={['modalTitle background', styles.attendClassSaveModal]}
 | 
	
		
			
				|  |  | +          title={'上传资源'}
 | 
	
		
			
				|  |  | +          blockScroll={false}>
 | 
	
		
			
				|  |  | +          <SaveModal
 | 
	
		
			
				|  |  | +            onClose={() => (state.saveStatus = false)}
 | 
	
		
			
				|  |  | +            onConfrim={(val: any) => {
 | 
	
		
			
				|  |  | +              const list = val || [];
 | 
	
		
			
				|  |  | +              const temp: any = [];
 | 
	
		
			
				|  |  | +              list.forEach((item: any) => {
 | 
	
		
			
				|  |  | +                temp.push({
 | 
	
		
			
				|  |  | +                  subjectIds: null,
 | 
	
		
			
				|  |  | +                  openFlag: false,
 | 
	
		
			
				|  |  | +                  coverImg: item.coverImg,
 | 
	
		
			
				|  |  | +                  title: item.name || '',
 | 
	
		
			
				|  |  | +                  type: formatUrlType(item.content),
 | 
	
		
			
				|  |  | +                  enableFlag: 1,
 | 
	
		
			
				|  |  | +                  content: item.content,
 | 
	
		
			
				|  |  | +                  id: null
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +              });
 | 
	
		
			
				|  |  | +              state.editList = temp;
 | 
	
		
			
				|  |  | +              state.uploadStatus = true;
 | 
	
		
			
				|  |  | +              state.editStatus = false;
 | 
	
		
			
				|  |  | +            }}
 | 
	
		
			
				|  |  | +          />
 | 
	
		
			
				|  |  | +        </NModal>
 | 
	
		
			
				|  |  | +      </>
 | 
	
		
			
				|  |  | +    );
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +});
 |