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'; import { modalClickMask } from '/src/state'; 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 () => ( <>
{sourceList.value.map(source => (
onDetail(source)}>

{source.name}

))}
{/* 百科: 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 */} {/* 节奏练习 */} (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'); }} /> {/* 乐器百科 */} (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'); }} /> {/* 乐理知识 */} (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'); }} /> {/* 音乐家 */} (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'); }} /> {/* 名曲鉴赏 */} (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'); }} /> {/* 听音练习 */} (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 { // } }} /> { 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} /> (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; }} /> ); } });