Bläddra i källkod

添加搜索与状态

lex-xin 6 månader sedan
förälder
incheckning
c9dbe2afd4

+ 10 - 1
src/utils/constant.ts

@@ -332,4 +332,13 @@ export const appType= {
 export const exceptionType= {
   ERROR: '错误',
   RECORD: '记录',
-} as any
+} as any
+
+/**
+ * 场景
+ */
+export const audioPlayType = {
+  SING: '演唱',
+  PLAY: '演奏',
+  PLAY_SING: '演唱+演奏'
+} as any;

+ 8 - 0
src/utils/filters.ts

@@ -297,3 +297,11 @@ export const filterSalaryType = (key: 'MANAGE' | 'COURSE' | 'TRAINING') => {
     return key
   }
 }
+
+export const filterAudioPlayType = (key: 'PLAY' | 'SING' | 'PLAY_SING' | '') => {
+  if (key && constant.audioPlayType && constant.audioPlayType[key]) {
+    return constant.audioPlayType[key]
+  } else {
+    return key
+  }
+}

+ 3 - 0
src/utils/searchArray.ts

@@ -89,3 +89,6 @@ export const authStatusArray = getValueForKey(constant.authStatus)
 
 // 结算状态
 export const withdrawalStatusArray = getValueForKey(constant.withdrawalStatus)
+
+/** 场景 */
+export const audioPlayTypeArray = getValueForKey(constant.audioPlayType)

+ 48 - 7
src/views/music-library/music-sheet/component/music-list.tsx

@@ -34,7 +34,7 @@ import MusicOperation from '../modal/music-operationV2'
 import { subjectPage } from '@/views/system-manage/api'
 import MusicPreView from '../modal/musicPreView'
 import UseProject from '@views/music-library/music-sheet/modal/use-project'
-import { getMapValueByKey } from '@/utils/filters'
+import { filterAudioPlayType, getMapValueByKey } from '@/utils/filters'
 import { appKey, musicSheetSourceType } from '@/utils/constant'
 import { getSelectDataFromObj } from '@/utils/objectUtil'
 import { sysApplicationPage } from '@views/menu-manage/api'
@@ -46,6 +46,7 @@ import { HelpCircleOutline } from '@vicons/ionicons5'
 import { musicalInstrumentPage } from '@views/system-manage/subject-manage/api'
 import MusiceBeatTime from '../modal/musiceBeatTime'
 import MusicPlatform from '../modal/music-platform'
+import { audioPlayTypeArray } from '@/utils/searchArray'
 
 export default defineComponent({
   name: 'music-list',
@@ -76,6 +77,7 @@ export default defineComponent({
         musicalInstrumentId: null, // 乐器ID
         dataCorrect: null, // 数据修复
         generateFirst: null, // 妙级课需要针对生成节拍器音频
+        audioPlayTypes: null, // 场景
         generateMetronomeAudio: null // 是否生成节拍器音频
       },
       dataList: [] as any,
@@ -228,6 +230,21 @@ export default defineComponent({
           }
         },
         {
+          title: '场景',
+          key: 'audioPlayTypes',
+          render(row: any) {
+            return (
+              <NSpace>
+                {row.audioPlayTypeArray.map((item: any) => (
+                  <NTag type={item === 'SING' ? 'warning' : 'success'}>
+                    {filterAudioPlayType(item)}
+                  </NTag>
+                ))}
+              </NSpace>
+            )
+          }
+        },
+        {
           title: '审核版本',
           minWidth: '100px',
           key: 'appAuditFlag',
@@ -448,12 +465,22 @@ export default defineComponent({
         state.loading = true
         const sourceType = state.searchForm.sourceType
         const userId = state.searchForm.userId
+        const audioPlayTypes = state.searchForm.audioPlayTypes
+
         let search = {
           ...state.searchForm,
           useAppId: state.searchForm.useAppId
             ? state.searchForm.useAppId.join(',')
-            : state.searchForm.useAppId
+            : state.searchForm.useAppId,
+          audioPlayTypes: [] as any
         } as any
+        if (audioPlayTypes) {
+          if (audioPlayTypes === 'PLAY_SING') {
+            search.audioPlayTypes = ['PLAY', 'SING']
+          } else {
+            search.audioPlayTypes = [audioPlayTypes]
+          }
+        }
         if (sourceType) {
           if (sourceType == 'ORG') {
             search.organizationRoleId = userId
@@ -461,10 +488,15 @@ export default defineComponent({
           }
         }
         const opt = { ...state.pagination, ...search }
-        opt.generateFirst && (opt.musicCategoryId = "100061")
+        opt.generateFirst && (opt.musicCategoryId = '100061')
         const { data } = await musicSheetPage(opt)
         state.pagination.pageTotal = Number(data.total)
-        state.dataList = data.rows || []
+        const result = data.rows || []
+        // 初始化场景
+        result.forEach((item: any) => {
+          item.audioPlayTypeArray = item.audioPlayTypes ? item.audioPlayTypes.split(',') : []
+        })
+        state.dataList = result
       } catch {}
       state.loading = false
     }
@@ -793,7 +825,7 @@ export default defineComponent({
               }
             />
           </NFormItem>
-          <NFormItem label="生成节拍器音频" path="generateMetronomeAudio">
+          <NFormItem label="节拍器音频" path="generateMetronomeAudio">
             <NSelect
               v-model={[state.searchForm.generateMetronomeAudio, 'value']}
               placeholder="请选择是否生成节拍器音频"
@@ -831,6 +863,14 @@ export default defineComponent({
               }
             />
           </NFormItem>
+          <NFormItem label="场景" path="audioPlayTypes">
+            <NSelect
+              v-model:value={state.searchForm.audioPlayTypes}
+              placeholder="请选择场景"
+              options={audioPlayTypeArray}
+              clearable
+            />
+          </NFormItem>
           <NFormItem>
             <NSpace>
               <NButton type="primary" onClick={onSearch}>
@@ -947,11 +987,12 @@ export default defineComponent({
             onClose={() => (state.showUseProject = false)}
             onGetList={getList}
           /> */}
-          <MusicPlatform  
+          <MusicPlatform
             id={state.showUseProjectId}
             useProject={state.useProjectData}
             onClose={() => (state.showUseProject = false)}
-            onGetList={getList} />
+            onGetList={getList}
+          />
         </NModal>
 
         <NModal

+ 9 - 0
src/views/music-library/music-sheet/modal/music-operationV2.tsx

@@ -2684,8 +2684,17 @@ export default defineComponent({
           showIcon={false}
           title={'适用项目'}
           style={{ width: '1200px' }}
+          onClose={() => {
+            emit('getList')
+            emit('close')
+            setTimeout(() => {
+              btnLoading.value = false
+              state.isAutoSave = false
+            }, 100)
+          }}
         >
           <MusicPlatform  
+            type={props.type}
             id={state.showUseProjectId}
             useProject={state.useProjectData}
             onClose={handlerMusiceBeatTimeClose}

+ 5 - 6
src/views/music-library/music-sheet/modal/music-platform.tsx

@@ -3,7 +3,6 @@ import { getSelectDataFromObj } from '@/utils/objectUtil'
 import { NButton, NCheckbox, NForm, NFormItem, NGi, NGrid, NInputNumber, NSelect, NSpace, NSpin, useMessage } from 'naive-ui'
 import {computed, defineComponent, onMounted, reactive, ref} from 'vue'
 import { musicSheetApplicationExtendCategoryList, musicSheetApplicationExtendTagList, musicSheetApplicationExtendCategoryApplicationExtendInfo, musicSheetApplicationExtendSave } from '../../api'
-import { Console } from 'console'
 export default defineComponent({
     name: 'music-platform',
     props: {
@@ -34,7 +33,7 @@ export default defineComponent({
                 paymentType: 'VIP',
                 isConvertibleScore: false,
                 scoreType: 'STAVE',
-                status: false,
+                status: true,
                 sortNo: null
             },
             gyt: {
@@ -44,7 +43,7 @@ export default defineComponent({
                 availableType: 'PLATFORM',
                 isConvertibleScore: false,
                 scoreType: 'STAVE',
-                status: false,
+                status: true,
                 sortNo: null
             },
             klxt: {
@@ -53,7 +52,7 @@ export default defineComponent({
 
                 isConvertibleScore: false,
                 scoreType: 'STAVE',
-                status: false,
+                status: true,
                 sortNo: null
             },
             klx: {
@@ -68,7 +67,7 @@ export default defineComponent({
                 exquisiteFlag: false,
                 isConvertibleScore: true,
                 scoreType: 'FIRST',
-                status: false,
+                status: true,
                 sortNo: null
             },
             kt: {
@@ -79,7 +78,7 @@ export default defineComponent({
                 paymentType: 'VIP',
                 isConvertibleScore: true,
                 scoreType: 'FIRST',
-                status: false,
+                status: true,
                 sortNo: null
             }
         })

+ 46 - 4
src/views/music-library/project-music-sheet/module/kt/music-sheet-kt.tsx

@@ -38,6 +38,8 @@ import { filterTimes } from '@/utils/dateUtil'
 import deepClone from '@/utils/deep.clone'
 import {copyText, getOwnerName} from '@views/music-library/musicUtil'
 import MusicPreView from '@views/music-library/music-sheet/modal/musicPreView'
+import { filterAudioPlayType } from '@/utils/filters'
+import { audioPlayTypeArray } from '@/utils/searchArray'
 
 export default defineComponent({
   name: 'project-music-sheet-KT',
@@ -81,6 +83,7 @@ export default defineComponent({
         appAuditFlag: null, //是否审核版本
         detailFlag: null, //是否查询详情
         applicationId: null, //所属人项目ID
+        audioPlayTypes: null, // 场景
         extendApplicationId: null //所属人项目ID
       },
       subjectList: [],
@@ -181,16 +184,32 @@ export default defineComponent({
       state.loading = true
       try {
         const sourceType = state.searchForm.sourceType
-        const { data } = await musicSheetPageByApplication({
+        const audioPlayTypes = state.searchForm.audioPlayTypes
+        const params = {
           ...state.pagination,
           ...state.searchForm,
           userId: sourceType && sourceType === 'PERSON' ? state.searchForm.userId : null,
           organizationRoleId: sourceType && sourceType === 'ORG' ? state.searchForm.userId : null,
           ...filterTimes(state.searchForm.times, ['startTime', 'endTime']),
-          applicationId: state.applicationId
-        })
+          applicationId: state.applicationId,
+          audioPlayTypes: [] as any
+        }
+
+        if (audioPlayTypes) {
+          if (audioPlayTypes === 'PLAY_SING') {
+            params.audioPlayTypes = ['PLAY', 'SING']
+          } else {
+            params.audioPlayTypes = [audioPlayTypes]
+          }
+        }
+        const { data } = await musicSheetPageByApplication(params)
         state.pagination.pageTotal = Number(data.total)
-        state.dataList = data.rows || []
+        const result = data.rows || []
+        // 初始化场景
+        result.forEach((item: any) => {
+          item.audioPlayTypeArray = item.audioPlayTypes ? item.audioPlayTypes.split(',') : []
+        })
+        state.dataList = result
       } catch {}
       state.loading = false
     }
@@ -380,6 +399,21 @@ export default defineComponent({
           }
         },
         {
+          title: '场景',
+          key: 'audioPlayTypes',
+          render(row: any) {
+            return (
+              <NSpace>
+                {row.audioPlayTypeArray.map((item: any) => (
+                  <NTag type={item === 'SING' ? 'warning' : 'success'}>
+                    {filterAudioPlayType(item)}
+                  </NTag>
+                ))}
+              </NSpace>
+            )
+          }
+        },
+        {
           title: '业务曲目状态',
           key: 'clientStatus',
           render(row: any) {
@@ -643,6 +677,14 @@ export default defineComponent({
                 endPlaceholder="结束时间"
               />
             </NFormItem>
+            <NFormItem label="场景" path="audioPlayTypes">
+              <NSelect
+                v-model:value={state.searchForm.audioPlayTypes}
+                placeholder="请选择场景"
+                options={audioPlayTypeArray}
+                clearable
+              />
+            </NFormItem>
             <NFormItem>
               <NSpace>
                 <NButton type="primary" onClick={onSearch}>