|
@@ -1,323 +1,328 @@
|
|
|
-import {
|
|
|
- PropType,
|
|
|
- defineComponent,
|
|
|
- nextTick,
|
|
|
- onMounted,
|
|
|
- reactive,
|
|
|
- ref,
|
|
|
- toRef
|
|
|
-} from 'vue';
|
|
|
-import styles from './index.module.less';
|
|
|
-import { NTabs, NTabPane, NModal } from 'naive-ui';
|
|
|
-import SelectMusicModal from '../../model/select-music';
|
|
|
-import { usePrepareStore } from '/src/store/modules/prepareLessons';
|
|
|
-import SelectResources from '../../model/select-resources';
|
|
|
-import SelectMusic, { typeFormat } from './components/select-music';
|
|
|
-import ResourceItem from './components/resource-item';
|
|
|
-import TrainUpdate from '/src/views/attend-class/model/train-update';
|
|
|
-import requestOrigin from 'umi-request';
|
|
|
-import { eventGlobal } from '/src/utils';
|
|
|
-import useDrag from '@/hooks/useDrag';
|
|
|
-import Dragbom from '@/hooks/useDrag/dragbom';
|
|
|
-import { useUserStore } from '@/store/modules/users';
|
|
|
-export default defineComponent({
|
|
|
- name: 'resource-main',
|
|
|
- props: {
|
|
|
- /** 类型 */
|
|
|
- cardType: {
|
|
|
- type: String as PropType<'' | 'homerowk-record' | 'prepare'>,
|
|
|
- default: ''
|
|
|
- },
|
|
|
- from: {
|
|
|
- // 来自哪里
|
|
|
- type: String,
|
|
|
- default: ''
|
|
|
- }
|
|
|
- },
|
|
|
- setup(props, { expose }) {
|
|
|
- const prepareStore = usePrepareStore();
|
|
|
- const forms = reactive({
|
|
|
- tabType: 'relateResources',
|
|
|
- tabWorkType: 'myMusic',
|
|
|
- selectMusicStatus: false,
|
|
|
- selectResourceStatus: false,
|
|
|
- editStatus: false,
|
|
|
- editItem: {} as any
|
|
|
- });
|
|
|
- const tabRef = ref();
|
|
|
- const workRef = ref();
|
|
|
-
|
|
|
- const onAdd = async (item: any) => {
|
|
|
- let xmlStatus = 'init';
|
|
|
- // 第一个声部小节
|
|
|
- let firstMeasures: any = null;
|
|
|
- try {
|
|
|
- // 获取文件
|
|
|
- const res = await requestOrigin.get(item.xmlFileUrl, {
|
|
|
- mode: 'cors'
|
|
|
- });
|
|
|
- const xmlParse = new DOMParser().parseFromString(res, 'text/xml');
|
|
|
- const parts = xmlParse.getElementsByTagName('part');
|
|
|
- firstMeasures = parts[0]?.getElementsByTagName('measure');
|
|
|
- xmlStatus = 'success';
|
|
|
- } catch (error) {
|
|
|
- xmlStatus = 'error';
|
|
|
- }
|
|
|
-
|
|
|
- // 判断读取小节数
|
|
|
- if (xmlStatus == 'success') {
|
|
|
- item.practiceChapterMax = firstMeasures.length;
|
|
|
- } else {
|
|
|
- item.practiceChapterMax = 0;
|
|
|
- }
|
|
|
- item.coursewareKnowledgeDetailId = prepareStore.getSelectKey;
|
|
|
- item.subjectId = prepareStore.getSubjectId;
|
|
|
-
|
|
|
- forms.editItem = item;
|
|
|
- forms.editStatus = true;
|
|
|
- };
|
|
|
-
|
|
|
- const resetTabPosition = () => {
|
|
|
- nextTick(() => {
|
|
|
- tabRef.value?.syncBarPosition();
|
|
|
- workRef.value?.syncBarPosition();
|
|
|
- });
|
|
|
- };
|
|
|
-
|
|
|
- onMounted(() => {
|
|
|
- resetTabPosition();
|
|
|
- });
|
|
|
- // 弹窗拖动
|
|
|
- // 曲目资源
|
|
|
- let selectResourceStatusAddBoxDragData: any;
|
|
|
- let selectResourceStatusAddBoxClass: string;
|
|
|
- if (props.from === 'class') {
|
|
|
- const users = useUserStore();
|
|
|
- selectResourceStatusAddBoxClass = 'selectResourceStatusAddBoxClass_drag';
|
|
|
- selectResourceStatusAddBoxDragData = useDrag(
|
|
|
- [
|
|
|
- `${selectResourceStatusAddBoxClass} .select-resource>.n-tabs>.n-tabs-nav--top.n-tabs-nav`,
|
|
|
- `${selectResourceStatusAddBoxClass} .bom_drag`
|
|
|
- ],
|
|
|
- selectResourceStatusAddBoxClass,
|
|
|
- toRef(forms, 'selectMusicStatus'),
|
|
|
- users.info.id
|
|
|
- );
|
|
|
- }
|
|
|
- // 曲目资源 作业设置
|
|
|
- let workSetingBoxDragData: any;
|
|
|
- let workSetingBoxClass: string;
|
|
|
- if (props.from === 'class') {
|
|
|
- const users = useUserStore();
|
|
|
- workSetingBoxClass = 'workSetingBoxClass_drag';
|
|
|
- workSetingBoxDragData = useDrag(
|
|
|
- [
|
|
|
- `${workSetingBoxClass}>.n-card-header`,
|
|
|
- `${workSetingBoxClass} .bom_drag`
|
|
|
- ],
|
|
|
- workSetingBoxClass,
|
|
|
- toRef(forms, 'editStatus'),
|
|
|
- users.info.id
|
|
|
- );
|
|
|
- }
|
|
|
- //
|
|
|
- expose({
|
|
|
- resetTabPosition
|
|
|
- });
|
|
|
- return () => (
|
|
|
- <div
|
|
|
- class={[
|
|
|
- styles['resource-main'],
|
|
|
- forms.selectMusicStatus || forms.selectResourceStatus
|
|
|
- ? styles.resourceClose
|
|
|
- : ''
|
|
|
- ]}>
|
|
|
- {prepareStore.getTabType === 'courseware' &&
|
|
|
- !['homerowk-record', 'prepare'].includes(props.cardType) ? (
|
|
|
- <NTabs
|
|
|
- id="lessonsIn-0"
|
|
|
- ref={tabRef}
|
|
|
- animated
|
|
|
- class={styles.homerowkTabs}
|
|
|
- value={forms.tabType}
|
|
|
- paneClass={styles.paneTitle}
|
|
|
- paneWrapperClass={styles.paneWrapperContainer}
|
|
|
- onUpdate:value={(val: string) => {
|
|
|
- forms.tabType = val;
|
|
|
- }}>
|
|
|
- {{
|
|
|
- suffix: () => (
|
|
|
- <div
|
|
|
- class={styles.iconScreen}
|
|
|
- onClick={() => {
|
|
|
- forms.selectResourceStatus = true;
|
|
|
- prepareStore.setSelectResourceStatus(true);
|
|
|
- }}>
|
|
|
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
|
- <g fill="none">
|
|
|
- <path
|
|
|
- d="M5 6a1 1 0 0 1 1-1h2a1 1 0 0 0 0-2H6a3 3 0 0 0-3 3v2a1 1 0 0 0 2 0V6zm0 12a1 1 0 0 0 1 1h2a1 1 0 1 1 0 2H6a3 3 0 0 1-3-3v-2a1 1 0 1 1 2 0v2zM18 5a1 1 0 0 1 1 1v2a1 1 0 1 0 2 0V6a3 3 0 0 0-3-3h-2a1 1 0 1 0 0 2h2zm1 13a1 1 0 0 1-1 1h-2a1 1 0 1 0 0 2h2a3 3 0 0 0 3-3v-2a1 1 0 1 0-2 0v2z"
|
|
|
- fill="#198CFE"></path>
|
|
|
- </g>
|
|
|
- </svg>
|
|
|
- </div>
|
|
|
- ),
|
|
|
- default: () => (
|
|
|
- <>
|
|
|
- <NTabPane name="relateResources" tab="相关资源">
|
|
|
- <ResourceItem type="relateResources" />
|
|
|
- </NTabPane>
|
|
|
- <NTabPane
|
|
|
- name="shareResources"
|
|
|
- tab="共享资源"
|
|
|
- // displayDirective="show:lazy"
|
|
|
- >
|
|
|
- <ResourceItem type="shareResources" />
|
|
|
- </NTabPane>
|
|
|
- <NTabPane
|
|
|
- name="myResources"
|
|
|
- tab="我的资源"
|
|
|
- // displayDirective="show:lazy"
|
|
|
- >
|
|
|
- <ResourceItem type="myResources" />
|
|
|
- </NTabPane>
|
|
|
-
|
|
|
- <NTabPane
|
|
|
- name="myCollect"
|
|
|
- tab="我的收藏"
|
|
|
- // displayDirective="show:lazy"
|
|
|
- >
|
|
|
- <ResourceItem type="myCollect" />
|
|
|
- </NTabPane>
|
|
|
- </>
|
|
|
- )
|
|
|
- }}
|
|
|
- </NTabs>
|
|
|
- ) : (
|
|
|
- <NTabs
|
|
|
- ref={workRef}
|
|
|
- animated
|
|
|
- value={forms.tabWorkType}
|
|
|
- paneClass={styles.paneTitle}
|
|
|
- paneWrapperClass={styles.paneWrapperContainer}
|
|
|
- onUpdate:value={(val: string) => {
|
|
|
- forms.tabWorkType = val;
|
|
|
- }}>
|
|
|
- {{
|
|
|
- suffix: () => (
|
|
|
- <div
|
|
|
- class={styles.iconScreen}
|
|
|
- onClick={() => {
|
|
|
- forms.selectMusicStatus = true;
|
|
|
- prepareStore.setSelectMusicStatus(true);
|
|
|
- }}>
|
|
|
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
|
- <g fill="none">
|
|
|
- <path
|
|
|
- d="M5 6a1 1 0 0 1 1-1h2a1 1 0 0 0 0-2H6a3 3 0 0 0-3 3v2a1 1 0 0 0 2 0V6zm0 12a1 1 0 0 0 1 1h2a1 1 0 1 1 0 2H6a3 3 0 0 1-3-3v-2a1 1 0 1 1 2 0v2zM18 5a1 1 0 0 1 1 1v2a1 1 0 1 0 2 0V6a3 3 0 0 0-3-3h-2a1 1 0 1 0 0 2h2zm1 13a1 1 0 0 1-1 1h-2a1 1 0 1 0 0 2h2a3 3 0 0 0 3-3v-2a1 1 0 1 0-2 0v2z"
|
|
|
- fill="#198CFE"></path>
|
|
|
- </g>
|
|
|
- </svg>
|
|
|
- </div>
|
|
|
- ),
|
|
|
- default: () => (
|
|
|
- <>
|
|
|
- <NTabPane name="myMusic" tab="我的曲目">
|
|
|
- <SelectMusic
|
|
|
- from={props.from}
|
|
|
- cardType={props.cardType}
|
|
|
- type="myMusic"
|
|
|
- />
|
|
|
- </NTabPane>
|
|
|
- <NTabPane name="sahreMusic" tab="共享曲目">
|
|
|
- <SelectMusic
|
|
|
- from={props.from}
|
|
|
- cardType={props.cardType}
|
|
|
- type="sahreMusic"
|
|
|
- />
|
|
|
- </NTabPane>
|
|
|
- <NTabPane name="collectMusic" tab="收藏曲目">
|
|
|
- <SelectMusic
|
|
|
- from={props.from}
|
|
|
- cardType={props.cardType}
|
|
|
- type="collectMusic"
|
|
|
- />
|
|
|
- </NTabPane>
|
|
|
- </>
|
|
|
- )
|
|
|
- }}
|
|
|
- </NTabs>
|
|
|
- )}
|
|
|
- <NModal
|
|
|
- v-model:show={forms.selectResourceStatus}
|
|
|
- onUpdate:show={(val: any) => {
|
|
|
- if (!val) {
|
|
|
- prepareStore.setSelectResourceStatus(val);
|
|
|
- }
|
|
|
- }}
|
|
|
- class={['modalTitle', styles.selectMusicModal]}
|
|
|
- preset="card"
|
|
|
- title={'选择资源'}>
|
|
|
- <SelectResources type={forms.tabType} />
|
|
|
- </NModal>
|
|
|
-
|
|
|
- <NModal
|
|
|
- style={
|
|
|
- props.from === 'class'
|
|
|
- ? selectResourceStatusAddBoxDragData.styleDrag.value
|
|
|
- : {}
|
|
|
- }
|
|
|
- v-model:show={forms.selectMusicStatus}
|
|
|
- onUpdate:show={(val: any) => {
|
|
|
- if (!val) {
|
|
|
- prepareStore.setSelectMusicStatus(val);
|
|
|
- }
|
|
|
- }}
|
|
|
- class={[
|
|
|
- 'modalTitle',
|
|
|
- styles.selectMusicModal,
|
|
|
- selectResourceStatusAddBoxClass
|
|
|
- ]}
|
|
|
- preset="card"
|
|
|
- title={'选择曲目'}>
|
|
|
- <SelectMusicModal
|
|
|
- from={props.from}
|
|
|
- onAdd={(item: any) => onAdd(item)}
|
|
|
- />
|
|
|
- {props.from === 'class' && <Dragbom></Dragbom>}
|
|
|
- </NModal>
|
|
|
- <NModal
|
|
|
- style={
|
|
|
- props.from === 'class' ? workSetingBoxDragData.styleDrag.value : {}
|
|
|
- }
|
|
|
- v-model:show={forms.editStatus}
|
|
|
- class={[
|
|
|
- 'modalTitle background',
|
|
|
- styles.trainEditModal,
|
|
|
- workSetingBoxClass
|
|
|
- ]}
|
|
|
- preset="card"
|
|
|
- title="作业设置">
|
|
|
- <TrainUpdate
|
|
|
- item={forms.editItem}
|
|
|
- onClose={() => (forms.editStatus = false)}
|
|
|
- onConfirm={(item: any) => {
|
|
|
- const tList = typeFormat(
|
|
|
- item.trainingType,
|
|
|
- item.trainingConfigJson
|
|
|
- );
|
|
|
- const train = {
|
|
|
- ...item,
|
|
|
- id: null,
|
|
|
- musicName: forms.editItem.title,
|
|
|
- typeList: tList
|
|
|
- };
|
|
|
- eventGlobal.emit('onTrainAddItem', train);
|
|
|
- }}
|
|
|
- />
|
|
|
- {props.from === 'class' && <Dragbom></Dragbom>}
|
|
|
- </NModal>
|
|
|
- </div>
|
|
|
- );
|
|
|
- }
|
|
|
-});
|
|
|
+import {
|
|
|
+ PropType,
|
|
|
+ defineComponent,
|
|
|
+ nextTick,
|
|
|
+ onMounted,
|
|
|
+ reactive,
|
|
|
+ ref,
|
|
|
+ toRef
|
|
|
+} from 'vue';
|
|
|
+import styles from './index.module.less';
|
|
|
+import { NTabs, NTabPane, NModal } from 'naive-ui';
|
|
|
+import SelectMusicModal from '../../model/select-music';
|
|
|
+import { usePrepareStore } from '/src/store/modules/prepareLessons';
|
|
|
+import SelectResources from '../../model/select-resources';
|
|
|
+import SelectMusic, { typeFormat } from './components/select-music';
|
|
|
+import ResourceItem from './components/resource-item';
|
|
|
+import TrainUpdate from '/src/views/attend-class/model/train-update';
|
|
|
+import requestOrigin from 'umi-request';
|
|
|
+import { eventGlobal } from '/src/utils';
|
|
|
+import useDrag from '@/hooks/useDrag';
|
|
|
+import Dragbom from '@/hooks/useDrag/dragbom';
|
|
|
+import { useUserStore } from '@/store/modules/users';
|
|
|
+import { useCatchStore } from '/src/store/modules/catchData';
|
|
|
+export default defineComponent({
|
|
|
+ name: 'resource-main',
|
|
|
+ props: {
|
|
|
+ /** 类型 */
|
|
|
+ cardType: {
|
|
|
+ type: String as PropType<'' | 'homerowk-record' | 'prepare'>,
|
|
|
+ default: ''
|
|
|
+ },
|
|
|
+ from: {
|
|
|
+ // 来自哪里
|
|
|
+ type: String,
|
|
|
+ default: ''
|
|
|
+ }
|
|
|
+ },
|
|
|
+ setup(props, { expose }) {
|
|
|
+ const prepareStore = usePrepareStore();
|
|
|
+ const catchStore = useCatchStore();
|
|
|
+ const forms = reactive({
|
|
|
+ tabType: 'relateResources',
|
|
|
+ tabWorkType: 'myMusic',
|
|
|
+ selectMusicStatus: false,
|
|
|
+ selectResourceStatus: false,
|
|
|
+ editStatus: false,
|
|
|
+ editItem: {} as any
|
|
|
+ });
|
|
|
+ const tabRef = ref();
|
|
|
+ const workRef = ref();
|
|
|
+
|
|
|
+ const onAdd = async (item: any) => {
|
|
|
+ let xmlStatus = 'init';
|
|
|
+ // 第一个声部小节
|
|
|
+ let firstMeasures: any = null;
|
|
|
+ try {
|
|
|
+ // 获取文件
|
|
|
+ const res = await requestOrigin.get(item.xmlFileUrl, {
|
|
|
+ mode: 'cors'
|
|
|
+ });
|
|
|
+ const xmlParse = new DOMParser().parseFromString(res, 'text/xml');
|
|
|
+ const parts = xmlParse.getElementsByTagName('part');
|
|
|
+ firstMeasures = parts[0]?.getElementsByTagName('measure');
|
|
|
+ xmlStatus = 'success';
|
|
|
+ } catch (error) {
|
|
|
+ xmlStatus = 'error';
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断读取小节数
|
|
|
+ if (xmlStatus == 'success') {
|
|
|
+ item.practiceChapterMax = firstMeasures.length;
|
|
|
+ } else {
|
|
|
+ item.practiceChapterMax = 0;
|
|
|
+ }
|
|
|
+ item.coursewareKnowledgeDetailId = prepareStore.getSelectKey;
|
|
|
+ item.subjectId = prepareStore.getSubjectId;
|
|
|
+
|
|
|
+ forms.editItem = item;
|
|
|
+ forms.editStatus = true;
|
|
|
+ };
|
|
|
+
|
|
|
+ const resetTabPosition = () => {
|
|
|
+ nextTick(() => {
|
|
|
+ tabRef.value?.syncBarPosition();
|
|
|
+ workRef.value?.syncBarPosition();
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ onMounted(async () => {
|
|
|
+ resetTabPosition();
|
|
|
+
|
|
|
+ // 获取教材分类列表
|
|
|
+ await catchStore.getMusicSheetCategory(true);
|
|
|
+ });
|
|
|
+ // 弹窗拖动
|
|
|
+ // 曲目资源
|
|
|
+ let selectResourceStatusAddBoxDragData: any;
|
|
|
+ let selectResourceStatusAddBoxClass: string;
|
|
|
+ if (props.from === 'class') {
|
|
|
+ const users = useUserStore();
|
|
|
+ selectResourceStatusAddBoxClass = 'selectResourceStatusAddBoxClass_drag';
|
|
|
+ selectResourceStatusAddBoxDragData = useDrag(
|
|
|
+ [
|
|
|
+ `${selectResourceStatusAddBoxClass} .select-resource>.n-tabs>.n-tabs-nav--top.n-tabs-nav`,
|
|
|
+ `${selectResourceStatusAddBoxClass} .bom_drag`
|
|
|
+ ],
|
|
|
+ selectResourceStatusAddBoxClass,
|
|
|
+ toRef(forms, 'selectMusicStatus'),
|
|
|
+ users.info.id
|
|
|
+ );
|
|
|
+ }
|
|
|
+ // 曲目资源 作业设置
|
|
|
+ let workSetingBoxDragData: any;
|
|
|
+ let workSetingBoxClass: string;
|
|
|
+ if (props.from === 'class') {
|
|
|
+ const users = useUserStore();
|
|
|
+ workSetingBoxClass = 'workSetingBoxClass_drag';
|
|
|
+ workSetingBoxDragData = useDrag(
|
|
|
+ [
|
|
|
+ `${workSetingBoxClass}>.n-card-header`,
|
|
|
+ `${workSetingBoxClass} .bom_drag`
|
|
|
+ ],
|
|
|
+ workSetingBoxClass,
|
|
|
+ toRef(forms, 'editStatus'),
|
|
|
+ users.info.id
|
|
|
+ );
|
|
|
+ }
|
|
|
+ //
|
|
|
+ expose({
|
|
|
+ resetTabPosition
|
|
|
+ });
|
|
|
+ return () => (
|
|
|
+ <div
|
|
|
+ class={[
|
|
|
+ styles['resource-main'],
|
|
|
+ forms.selectMusicStatus || forms.selectResourceStatus
|
|
|
+ ? styles.resourceClose
|
|
|
+ : ''
|
|
|
+ ]}>
|
|
|
+ {prepareStore.getTabType === 'courseware' &&
|
|
|
+ !['homerowk-record', 'prepare'].includes(props.cardType) ? (
|
|
|
+ <NTabs
|
|
|
+ id="lessonsIn-0"
|
|
|
+ ref={tabRef}
|
|
|
+ animated
|
|
|
+ class={styles.homerowkTabs}
|
|
|
+ value={forms.tabType}
|
|
|
+ paneClass={styles.paneTitle}
|
|
|
+ paneWrapperClass={styles.paneWrapperContainer}
|
|
|
+ onUpdate:value={(val: string) => {
|
|
|
+ forms.tabType = val;
|
|
|
+ }}>
|
|
|
+ {{
|
|
|
+ suffix: () => (
|
|
|
+ <div
|
|
|
+ class={styles.iconScreen}
|
|
|
+ onClick={() => {
|
|
|
+ forms.selectResourceStatus = true;
|
|
|
+ prepareStore.setSelectResourceStatus(true);
|
|
|
+ }}>
|
|
|
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
|
+ <g fill="none">
|
|
|
+ <path
|
|
|
+ d="M5 6a1 1 0 0 1 1-1h2a1 1 0 0 0 0-2H6a3 3 0 0 0-3 3v2a1 1 0 0 0 2 0V6zm0 12a1 1 0 0 0 1 1h2a1 1 0 1 1 0 2H6a3 3 0 0 1-3-3v-2a1 1 0 1 1 2 0v2zM18 5a1 1 0 0 1 1 1v2a1 1 0 1 0 2 0V6a3 3 0 0 0-3-3h-2a1 1 0 1 0 0 2h2zm1 13a1 1 0 0 1-1 1h-2a1 1 0 1 0 0 2h2a3 3 0 0 0 3-3v-2a1 1 0 1 0-2 0v2z"
|
|
|
+ fill="#198CFE"></path>
|
|
|
+ </g>
|
|
|
+ </svg>
|
|
|
+ </div>
|
|
|
+ ),
|
|
|
+ default: () => (
|
|
|
+ <>
|
|
|
+ <NTabPane name="relateResources" tab="相关资源">
|
|
|
+ <ResourceItem type="relateResources" />
|
|
|
+ </NTabPane>
|
|
|
+ <NTabPane
|
|
|
+ name="shareResources"
|
|
|
+ tab="共享资源"
|
|
|
+ // displayDirective="show:lazy"
|
|
|
+ >
|
|
|
+ <ResourceItem type="shareResources" />
|
|
|
+ </NTabPane>
|
|
|
+ <NTabPane
|
|
|
+ name="myResources"
|
|
|
+ tab="我的资源"
|
|
|
+ // displayDirective="show:lazy"
|
|
|
+ >
|
|
|
+ <ResourceItem type="myResources" />
|
|
|
+ </NTabPane>
|
|
|
+
|
|
|
+ <NTabPane
|
|
|
+ name="myCollect"
|
|
|
+ tab="我的收藏"
|
|
|
+ // displayDirective="show:lazy"
|
|
|
+ >
|
|
|
+ <ResourceItem type="myCollect" />
|
|
|
+ </NTabPane>
|
|
|
+ </>
|
|
|
+ )
|
|
|
+ }}
|
|
|
+ </NTabs>
|
|
|
+ ) : (
|
|
|
+ <NTabs
|
|
|
+ ref={workRef}
|
|
|
+ animated
|
|
|
+ value={forms.tabWorkType}
|
|
|
+ paneClass={styles.paneTitle}
|
|
|
+ paneWrapperClass={styles.paneWrapperContainer}
|
|
|
+ onUpdate:value={(val: string) => {
|
|
|
+ forms.tabWorkType = val;
|
|
|
+ }}>
|
|
|
+ {{
|
|
|
+ suffix: () => (
|
|
|
+ <div
|
|
|
+ class={styles.iconScreen}
|
|
|
+ onClick={() => {
|
|
|
+ forms.selectMusicStatus = true;
|
|
|
+ prepareStore.setSelectMusicStatus(true);
|
|
|
+ }}>
|
|
|
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
|
+ <g fill="none">
|
|
|
+ <path
|
|
|
+ d="M5 6a1 1 0 0 1 1-1h2a1 1 0 0 0 0-2H6a3 3 0 0 0-3 3v2a1 1 0 0 0 2 0V6zm0 12a1 1 0 0 0 1 1h2a1 1 0 1 1 0 2H6a3 3 0 0 1-3-3v-2a1 1 0 1 1 2 0v2zM18 5a1 1 0 0 1 1 1v2a1 1 0 1 0 2 0V6a3 3 0 0 0-3-3h-2a1 1 0 1 0 0 2h2zm1 13a1 1 0 0 1-1 1h-2a1 1 0 1 0 0 2h2a3 3 0 0 0 3-3v-2a1 1 0 1 0-2 0v2z"
|
|
|
+ fill="#198CFE"></path>
|
|
|
+ </g>
|
|
|
+ </svg>
|
|
|
+ </div>
|
|
|
+ ),
|
|
|
+ default: () => (
|
|
|
+ <>
|
|
|
+ <NTabPane name="myMusic" tab="我的曲目">
|
|
|
+ <SelectMusic
|
|
|
+ from={props.from}
|
|
|
+ cardType={props.cardType}
|
|
|
+ type="myMusic"
|
|
|
+ />
|
|
|
+ </NTabPane>
|
|
|
+ <NTabPane name="sahreMusic" tab="共享曲目">
|
|
|
+ <SelectMusic
|
|
|
+ from={props.from}
|
|
|
+ cardType={props.cardType}
|
|
|
+ type="sahreMusic"
|
|
|
+ />
|
|
|
+ </NTabPane>
|
|
|
+ <NTabPane name="collectMusic" tab="收藏曲目">
|
|
|
+ <SelectMusic
|
|
|
+ from={props.from}
|
|
|
+ cardType={props.cardType}
|
|
|
+ type="collectMusic"
|
|
|
+ />
|
|
|
+ </NTabPane>
|
|
|
+ </>
|
|
|
+ )
|
|
|
+ }}
|
|
|
+ </NTabs>
|
|
|
+ )}
|
|
|
+ <NModal
|
|
|
+ v-model:show={forms.selectResourceStatus}
|
|
|
+ onUpdate:show={(val: any) => {
|
|
|
+ if (!val) {
|
|
|
+ prepareStore.setSelectResourceStatus(val);
|
|
|
+ }
|
|
|
+ }}
|
|
|
+ class={['modalTitle', styles.selectMusicModal]}
|
|
|
+ preset="card"
|
|
|
+ title={'选择资源'}>
|
|
|
+ <SelectResources type={forms.tabType} />
|
|
|
+ </NModal>
|
|
|
+
|
|
|
+ <NModal
|
|
|
+ style={
|
|
|
+ props.from === 'class'
|
|
|
+ ? selectResourceStatusAddBoxDragData.styleDrag.value
|
|
|
+ : {}
|
|
|
+ }
|
|
|
+ v-model:show={forms.selectMusicStatus}
|
|
|
+ onUpdate:show={(val: any) => {
|
|
|
+ if (!val) {
|
|
|
+ prepareStore.setSelectMusicStatus(val);
|
|
|
+ }
|
|
|
+ }}
|
|
|
+ class={[
|
|
|
+ 'modalTitle',
|
|
|
+ styles.selectMusicModal,
|
|
|
+ selectResourceStatusAddBoxClass
|
|
|
+ ]}
|
|
|
+ preset="card"
|
|
|
+ title={'选择曲目'}>
|
|
|
+ <SelectMusicModal
|
|
|
+ from={props.from}
|
|
|
+ onAdd={(item: any) => onAdd(item)}
|
|
|
+ />
|
|
|
+ {props.from === 'class' && <Dragbom></Dragbom>}
|
|
|
+ </NModal>
|
|
|
+ <NModal
|
|
|
+ style={
|
|
|
+ props.from === 'class' ? workSetingBoxDragData.styleDrag.value : {}
|
|
|
+ }
|
|
|
+ v-model:show={forms.editStatus}
|
|
|
+ class={[
|
|
|
+ 'modalTitle background',
|
|
|
+ styles.trainEditModal,
|
|
|
+ workSetingBoxClass
|
|
|
+ ]}
|
|
|
+ preset="card"
|
|
|
+ title="作业设置">
|
|
|
+ <TrainUpdate
|
|
|
+ item={forms.editItem}
|
|
|
+ onClose={() => (forms.editStatus = false)}
|
|
|
+ onConfirm={(item: any) => {
|
|
|
+ const tList = typeFormat(
|
|
|
+ item.trainingType,
|
|
|
+ item.trainingConfigJson
|
|
|
+ );
|
|
|
+ const train = {
|
|
|
+ ...item,
|
|
|
+ id: null,
|
|
|
+ musicName: forms.editItem.title,
|
|
|
+ typeList: tList
|
|
|
+ };
|
|
|
+ eventGlobal.emit('onTrainAddItem', train);
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ {props.from === 'class' && <Dragbom></Dragbom>}
|
|
|
+ </NModal>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ }
|
|
|
+});
|