Forráskód Böngészése

课堂乐器添加曲目

yuanliang 1 éve
szülő
commit
34bb1d6705

+ 50 - 18
src/views/music-library/music-sheet/component/music-list.tsx

@@ -2,7 +2,7 @@ import SaveForm from '@/components/save-form'
 import Pagination from '@/components/pagination'
 import {DataTableRowKey, NButton, NDataTable, NFormItem, NIcon, NImage, NInput, NModal, NSelect, NSpace, NTag, useDialog, useMessage} from 'naive-ui'
 import {defineComponent, onMounted, reactive, ref, watch} from 'vue'
-import {musicSheetCategoriesQueryTree, musicSheetPage, musicSheetRemove, musicSheetStatusList, musicTagPage} from '../../api'
+import {musicSheetApplicationOwnerList, musicSheetCategoriesQueryTree, musicSheetPage, musicSheetRemove, musicSheetStatusList, musicTagPage} from '../../api'
 import MusicOperation from '../modal/music-operation'
 import {subjectPage} from '@/views/system-manage/api'
 import MusicPreView from '../modal/musicPreView'
@@ -51,6 +51,8 @@ export default defineComponent({
       useProjectData: [], // 适用项目行数据
       showUseProjectId: null as any, // 适用项目行数据
       detailReadonly: false, // 新增、修改、详情是否可编辑
+      userIdDisable: true, // 所属人
+      userIdData: [] as any, // 所属人数据列表
     })
 
     const columns = (): any => {
@@ -113,7 +115,7 @@ export default defineComponent({
           title: '审核版本',
           key: 'appAuditFlag',
           render(row: any) {
-            return <div>{row.appAuditFlag?'是':'否'}</div>
+            return <div>{row.appAuditFlag ? '是' : '否'}</div>
           }
         },
         {
@@ -433,36 +435,66 @@ export default defineComponent({
                   clearable
               />
             </NFormItem>
-            <NFormItem label="作者属性" path="authorFrom">
-              <NSelect
-                  placeholder="请选择作者属性"
-                  v-model:value={state.searchForm.sourceType}
-                  options={getSelectDataFromObj(musicSheetSourceType)}
-                  clearable
-              />
-            </NFormItem>
-            <NFormItem label="音乐人" path="author">
+            <NFormItem label="音乐人" path="composer">
               <NInput
                   placeholder="请选择音乐人"
                   v-model:value={state.searchForm.composer}
                   clearable
               />
             </NFormItem>
-            <NFormItem label="所属人" path="author">
-              <NInput
-                  placeholder="请选择所属人"
-                  v-model:value={state.searchForm.userId}
-                  clearable
-              />
-            </NFormItem>
             <NFormItem label="适用项目" path="app">
               <NSelect
                   placeholder="请选择适用项目"
                   v-model:value={state.searchForm.useAppId}
                   options={state.useProjectData}
                   clearable
+                  onUpdateValue={(value: any)=>{
+                    state.searchForm.sourceType = null
+                    state.searchForm.userId = null
+                    state.userIdDisable = true
+                    state.userIdData = []
+                    state.searchForm.useAppId = value
+                  }}
+              />
+            </NFormItem>
+            <NFormItem label="作者属性" path="sourceType">
+              <NSelect
+                  disabled={!state.searchForm.useAppId}
+                  placeholder="请选择作者属性"
+                  v-model:value={state.searchForm.sourceType}
+                  options={getSelectDataFromObj(musicSheetSourceType)}
+                  onUpdateValue={async (value: any) => {
+                    state.userIdData = []
+                    state.searchForm.userId = null
+                    if (value) {
+                      const {data} = await musicSheetApplicationOwnerList({page: 1, rows: 9999, sourceType: value, applicationId: state.searchForm.useAppId})
+                      const temp = data.rows || []
+                      temp.forEach((next: any) => {
+                        state.userIdData.push({
+                          ...next,
+                          label: next.userName,
+                          value: next.userId
+                        })
+                      })
+                      state.userIdDisable = false
+                    } else {
+                      state.userIdDisable = true
+                    }
+                  }}
+                  clearable
               />
             </NFormItem>
+            <NFormItem label="所属人" path="author">
+              <NSelect
+                  filterable
+                  placeholder="请选择所属人"
+                  disabled={state.userIdDisable}
+                  v-model:value={state.searchForm.userId}
+                  options={state.userIdData}
+                  clearable
+              >
+              </NSelect>
+            </NFormItem>
             <NFormItem label="状态" path="status">
               <NSelect
                   v-model={[state.searchForm.status, 'value']}

+ 22 - 6
src/views/music-library/music-sheet/modal/music-operation.tsx

@@ -294,7 +294,7 @@ export default defineComponent({
       // userId: null, // 所属人
       appAuditFlag: 0, // 是否审核版本
       midiFileUrl: null, // 伴奏文件 MIDI文件(保留字段)
-      subjectIds:[] as any, // 可用声部
+      subjectIds: [] as any, // 可用声部
       musicalInstrumentIdList: [] as any,  //可用乐器
       musicCategoryId: null,  //曲目分类
       musicSheetAccompanimentList: [] as any,  //曲目伴奏
@@ -317,7 +317,7 @@ export default defineComponent({
       musicSheetAccompanimentUrlList: [] as any,
       instrumentData: [],
       instrumentList: [],
-      subjectList: [],
+      subjectList: [] as any,
       showMusicSheetOwnerDialog: false, //所属人弹框
       // musicSheetOwnerData: {}, //所属人信息
       multiTracks: null,
@@ -351,7 +351,7 @@ export default defineComponent({
             }),
             musicalInstrumentIds: forms.musicalInstrumentIdList.join(','),
             extConfigJson: JSON.stringify({gradualTimes: forms.graduals}),
-            subjectIds:forms.subjectIds.join(',')
+            subjectIds: forms.subjectIds.join(',')
           }
           if (forms.audioType == 'MIDI') {
             obj.musicSheetSoundList = []
@@ -495,6 +495,7 @@ export default defineComponent({
         tempList.forEach((item: any) => {
           item.label = item.name
           item.value = item.id + ''
+          item.disabled = !item.enableFlag
         })
         state.instrumentList = tempList
       } catch {
@@ -558,11 +559,16 @@ export default defineComponent({
     }
 
     onMounted(async () => {
+      state.loading = true
       initInstrumentList();
+      state.subjectList = deepClone(props.subjectList)
+      state.subjectList.forEach((subject: any) => {
+        subject.disabled = !subject.enableFlag
+      })
+
       if (props.type === 'edit' || props.type === 'preview') {
         const detail = props.data
         try {
-          state.loading = true
           if (props.type === 'preview') {
             state.previewMode = true
           }
@@ -625,8 +631,17 @@ export default defineComponent({
 
         } catch (error) {
         }
-        state.loading = false
+      } else {
+        // 新增只能使用启用状态的数据
+        state.subjectList = state.subjectList.filter((next: any) => {
+          return next.enableFlag == true
+        })
+        state.instrumentList = state.instrumentList.filter((next: any) => {
+          return next.enableFlag == true
+        })
       }
+      state.loading = false
+
     })
 
     return () => (
@@ -1016,11 +1031,12 @@ export default defineComponent({
               >
                 <NSelect
                     v-model:value={forms.subjectIds}
-                    options={props.subjectList}
+                    options={state.subjectList}
                     multiple
                     filterable
                     clearable
                     placeholder="请选择可用声部"
+                    maxTagCount={2}
                 />
               </NFormItemGi>
               <NFormItemGi label="可用乐器" path="musicalInstrumentIdList"

+ 0 - 1
src/views/music-library/project-music-sheet/module/cooleshow-edu/cooleshow-edu.tsx

@@ -376,7 +376,6 @@ export default defineComponent({
                     v-model:value={state.searchForm.sourceType}
                     options={getSelectDataFromObj(musicSheetSourceType)}
                     onUpdateValue={async (value: any) => {
-                      console.log(value)
                       state.userIdData = []
                       state.searchForm.userId = null
                       if (value) {

+ 2 - 2
src/views/music-library/project-music-sheet/module/cooleshow/cooleshow.tsx

@@ -152,7 +152,7 @@ export default defineComponent({
                 ref={saveForm}
                 model={state.searchForm}
                 onSubmit={onSubmit}
-                saveKey="music-list"
+                saveKey="project-music-sheet-cooleshow"
                 onSetModel={(val: any) => (state.searchForm = val)}
             >
 
@@ -329,7 +329,7 @@ export default defineComponent({
                   v-model:pageTotal={state.pagination.pageTotal}
                   // onList={getList}
                   sync
-                  saveKey="music-list"
+                  saveKey="project-music-sheet-cooleshow"
               ></Pagination>
             </div>
 

+ 2 - 2
src/views/music-library/project-music-sheet/module/jmedu/jmedu.tsx

@@ -152,7 +152,7 @@ export default defineComponent({
                 ref={saveForm}
                 model={state.searchForm}
                 onSubmit={onSubmit}
-                saveKey="music-list"
+                saveKey="project-music-sheet-jmedu"
                 onSetModel={(val: any) => (state.searchForm = val)}
             >
 
@@ -329,7 +329,7 @@ export default defineComponent({
                   v-model:pageTotal={state.pagination.pageTotal}
                   // onList={getList}
                   sync
-                  saveKey="music-list"
+                  saveKey="project-music-sheet-jmedu"
               ></Pagination>
             </div>
 

+ 2 - 2
src/views/music-library/project-music-sheet/module/mec/mec.tsx

@@ -152,7 +152,7 @@ export default defineComponent({
                 ref={saveForm}
                 model={state.searchForm}
                 onSubmit={onSubmit}
-                saveKey="music-list"
+                saveKey="project-music-sheet-mec"
                 onSetModel={(val: any) => (state.searchForm = val)}
             >
 
@@ -329,7 +329,7 @@ export default defineComponent({
                   v-model:pageTotal={state.pagination.pageTotal}
                   // onList={getList}
                   sync
-                  saveKey="music-list"
+                  saveKey="project-music-sheet-mec"
               ></Pagination>
             </div>
 

+ 10 - 1
src/views/system-manage/subject-manage/subject/subject-list.tsx

@@ -1,5 +1,5 @@
 import SaveForm from '@/components/save-form'
-import {DataTableColumn, NButton, NDataTable, NDatePicker, NFormItem, NImage, NInput, NModal, NSelect, NSpace, useDialog, useMessage} from 'naive-ui'
+import {DataTableColumn, NButton, NDataTable, NDatePicker, NFormItem, NImage, NInput, NModal, NSelect, NSpace, NTag, useDialog, useMessage} from 'naive-ui'
 import {defineComponent, onMounted, reactive, ref} from 'vue'
 import styles from '../index.module.less'
 import {musicalInstrumentPage, subjectCategoryPage, subjectPage, subjectUpdateStatus} from "@views/system-manage/subject-manage/api";
@@ -77,6 +77,15 @@ export default defineComponent({
           }
         },
         {
+          title: '状态',
+          key: 'enableFlag',
+          render(row: any) {
+            return (
+                <NTag type={row.enableFlag ? 'primary' : 'default'}>{row.enableFlag ? '启用' : '停用'}</NTag>
+            )
+          }
+        },
+        {
           title: '操作',
           key: 'operation',
           fixed: 'right',