|
@@ -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>
|
|
|
+ </>
|
|
|
+ );
|
|
|
+ }
|
|
|
+});
|