yuanliang 11 mesi fa
parent
commit
ec53580aaf

+ 1 - 1
src/utils/constant.ts

@@ -246,7 +246,7 @@ export const musicSheetSourceType = {
 
 // 声部管理
 // 默认谱面
-export const defaultScore = {
+export const scoreType = {
   STAVE: '五线谱',
   FIRST: '首调',
   JIAN: '固定调'

+ 1 - 1
src/views/educational-manage/component/material-list.tsx

@@ -83,7 +83,7 @@ export default defineComponent({
     })
     const getSubjects = async () => {
       try {
-        const { data } = await subjectPage({ page: 1, row: 1000 })
+        const { data } = await subjectPage({ page: 1, rows: 1000 })
         subjects.list = data?.rows || []
       } catch {}
     }

+ 13 - 5
src/views/music-library/music-sheet/modal/music-operation.tsx

@@ -297,8 +297,8 @@ export default defineComponent({
       musicSheetSoundList: [] as any, // 原音
       // musicSheetCategoriesId: null,
       status: false,
-      musicSheetType: 'SINGLE', // 曲目类型
-      sourceType: null as any, //来源类型/作者属性(PLATFORM: 平台; ORG: 机构; PERSON: 个人)
+      musicSheetType: 'CONCERT', // 曲目类型
+      sourceType: 'PLATFORM' as any, //来源类型/作者属性(PLATFORM: 平台; ORG: 机构; PERSON: 个人)
       // userId: null, // 所属人
       appAuditFlag: 0, // 是否审核版本
       midiFileUrl: null, // 伴奏文件 MIDI文件(保留字段)
@@ -498,7 +498,8 @@ export default defineComponent({
       const instrumentEle = xmlParse.getElementsByTagName('virtual-instrument')
       for (let index = 0; index < instrumentEle.length; index++) {
         const note = instrumentEle[index]
-        const instrumentCode = note.getElementsByTagName('virtual-name')?.[0]?.textContent || ''
+        let instrumentCode = note.getElementsByTagName('virtual-name')?.[0]?.textContent || ''
+        instrumentCode = instrumentCode.toLocaleLowerCase().trim()
         if (instrumentCode && !instrumentCodeList.includes(instrumentCode)) {
           instrumentCodeList.push(instrumentCode)
         }
@@ -528,7 +529,9 @@ export default defineComponent({
       // })
       const codeIdMap = new Map<string, string>()
       state.instrumentData.forEach((data: any) => {
-        codeIdMap.set(data.code, data.id + '')
+        if (!data.disabled) {
+          codeIdMap.set(data.code.toLocaleLowerCase().trim(), data.id + '')
+        }
       })
       forms.musicalInstrumentIdList = []
       instrumentCodeList.forEach((code: string) => {
@@ -822,6 +825,10 @@ export default defineComponent({
                 forms.subjectIds.push(subjectId)
               }
             })
+            state.subjectList = state.subjectList.filter((subject: any) => {
+              return (!subject.disabled || subjectIds.includes(subject.value));
+            })
+
           }
           forms.musicalInstrumentIdList = data.musicalInstrumentIds
             ? data.musicalInstrumentIds.split(',')
@@ -989,7 +996,7 @@ export default defineComponent({
                 path="musicCover"
                 rule={[
                   {
-                    required: true,
+                    required: false,
                     message: '请上传曲目封面',
                     trigger: ['input', 'blur']
                   }
@@ -1394,6 +1401,7 @@ export default defineComponent({
                   v-model:value={forms.musicalInstrumentIdList}
                   clearable
                   multiple
+                  filterable
                   maxTagCount={2}
                 />
               </NFormItemGi>

+ 48 - 28
src/views/music-library/project-music-sheet/index.tsx

@@ -54,34 +54,54 @@ export default defineComponent({
               v-model:value={state.tabName}
               onUpdate:value={(val: any) => setTabs(val)}
             >
-              {state.appKeyList.map((app: any, index: number) => (
-                <NTabPane name={app} tab={state.appNameList[index]}>
-                  {app === 'KT' && (
-                    <MusicSheetKt
-                      v-auth="musicSheet/pageByApplication1751225386909302786"
-                      appKey={app}
-                    />
-                  )}
-                  {app === 'GYM' && (
-                    <MusicSheetGym
-                      v-auth="musicSheet/pageByApplication1751225314930851842"
-                      appKey={app}
-                    />
-                  )}
-                  {app === 'KLX' && (
-                    <MusicSheetKlx
-                      v-auth="musicSheet/pageByApplication1751225218734489601"
-                      appKey={app}
-                    />
-                  )}
-                  {app === 'GYT' && (
-                    <MusicSheetGyt
-                      v-auth="musicSheet/pageByApplication1751225483038556162"
-                      appKey={app}
-                    />
-                  )}
-                </NTabPane>
-              ))}
+              <NTabPane
+                  v-auth="musicSheet/pageByApplication1751225218734489601"
+                  name={'KLX'} tab={"酷乐秀"}>
+                      <MusicSheetKlx appKey={'KLX'}/>
+              </NTabPane>
+              <NTabPane
+                  v-auth="musicSheet/pageByApplication1751225314930851842"
+                  name={'GYM'} tab={"管乐迷"}>
+                      <MusicSheetGym appKey={'GYM'}/>
+              </NTabPane>
+              <NTabPane
+                  v-auth="musicSheet/pageByApplication1751225386909302786"
+                  name={'KT'} tab={"音乐数字课堂"}>
+                      <MusicSheetKt appKey={'KT'}/>
+              </NTabPane>
+              <NTabPane
+                  v-auth="musicSheet/pageByApplication1751225483038556162"
+                  name={'GYT'} tab={"管乐团"}>
+                      <MusicSheetGyt appKey={'GYT'}/>
+              </NTabPane>
+              {/*{state.appKeyList.map((app: any, index: number) => (*/}
+              {/*  <NTabPane name={app} tab={state.appNameList[index]}>*/}
+              {/*    {app === 'KT' && (*/}
+              {/*      <MusicSheetKt*/}
+              {/*        v-auth="musicSheet/pageByApplication1751225386909302786"*/}
+              {/*        appKey={app}*/}
+              {/*      />*/}
+              {/*    )}*/}
+              {/*    {app === 'GYM' && (*/}
+              {/*      <MusicSheetGym*/}
+              {/*        v-auth="musicSheet/pageByApplication1751225314930851842"*/}
+              {/*        appKey={app}*/}
+              {/*      />*/}
+              {/*    )}*/}
+              {/*    {app === 'KLX' && (*/}
+              {/*      <MusicSheetKlx*/}
+              {/*        v-auth="musicSheet/pageByApplication1751225218734489601"*/}
+              {/*        appKey={app}*/}
+              {/*      />*/}
+              {/*    )}*/}
+              {/*    {app === 'GYT' && (*/}
+              {/*      <MusicSheetGyt*/}
+              {/*        v-auth="musicSheet/pageByApplication1751225483038556162"*/}
+              {/*        appKey={app}*/}
+              {/*      />*/}
+              {/*    )}*/}
+              {/*  </NTabPane>*/}
+              {/*))}*/}
             </NTabs>
           </div>
         </div>

+ 175 - 23
src/views/music-library/project-music-sheet/module/gym/addMusic.tsx

@@ -1,29 +1,12 @@
-import { defineComponent, h, onMounted, reactive, ref } from 'vue'
+import {defineComponent, h, onMounted, reactive, ref} from 'vue'
 import SaveForm from '@components/save-form'
-import {
-  DataTableColumns,
-  DataTableRowKey,
-  NButton,
-  NCascader,
-  NDataTable,
-  NFormItem,
-  NIcon,
-  NImage,
-  NInput,
-  NInputNumber,
-  NSelect,
-  NSpace,
-  NStep,
-  NSteps,
-  useDialog,
-  useMessage
-} from 'naive-ui'
+import {DataTableColumns, DataTableRowKey, NButton, NCascader, NDataTable, NFormItem, NIcon, NImage, NInput, NInputNumber, NSelect, NSpace, NStep, NSteps, useDialog, useMessage} from 'naive-ui'
 import Pagination from '@components/pagination'
-import { getMapValueByKey, getSelectDataFromObj } from '@/utils/objectUtil'
-import {appKey, musicSheetPaymentType, musicSheetSourceType, musicSheetType} from '@/utils/constant'
+import {getMapValueByKey, getSelectDataFromObj} from '@/utils/objectUtil'
+import {appKey, musicSheetSourceType, musicSheetType, scoreType} from '@/utils/constant'
 import {musicSheetApplicationExtendCategoryList, musicSheetApplicationExtendSaveBatch, musicSheetApplicationOwnerList, musicSheetPage} from '@views/music-library/api'
 import deepClone from '@/utils/deep.clone'
-import { getOwnerName } from '@views/music-library/musicUtil'
+import {getOwnerName} from '@views/music-library/musicUtil'
 import TheTooltip from '@/components/TheTooltip'
 import {sysApplicationPage} from "@views/menu-manage/api";
 
@@ -77,6 +60,8 @@ export default defineComponent({
       startSortNum: null as any, // 排序起始值
       projectMusicCategoryId: null as any, // 曲目分类ID
       globalPaymentType: null as any, //收费方式
+      isConvertibleScore: null as any,//是否支持转简谱
+      scoreType: null as any,//默认谱面
 
       userIdDisable: true,
       userIdData: [] as any,
@@ -197,6 +182,14 @@ export default defineComponent({
           message.error('曲目分类不能为空')
           return
         }
+        if (item.scoreType == null) {
+          message.error('默认谱面不能为空')
+          return
+        }
+        if (item.isConvertibleScore == null) {
+          message.error('是否支持转简谱不能为空')
+          return
+        }
         if (item.sortNo === null || item.sortNo === undefined || item.sortNo === '') {
           message.error('排序号不能为空')
           return
@@ -310,7 +303,6 @@ export default defineComponent({
                             valueField: 'id',
                             labelField: 'name',
                             childrenField: 'children',
-                            placeholderField: '请选择曲目分类',
                             filterable: true,
                             options: state.musicSheetCategories
                           })
@@ -453,6 +445,165 @@ export default defineComponent({
       field.push({
         title(column: any) {
           return (
+              <NSpace>
+                默认谱面
+                <NButton
+                    type="primary"
+                    size="small"
+                    text
+                    onClick={() => {
+                      dialogs.create({
+                        title: '请选择默认谱面',
+                        showIcon: false,
+                        content: () => {
+                          return h(
+                              'div',
+                              {
+                                class: 'flex flex-col justify-center items-center text-14px'
+                              },
+                              [
+                                // icon
+                                h(NSelect, {
+                                  onUpdateValue(v) {
+                                    state.scoreType = v
+                                  },
+                                  options: getSelectDataFromObj(scoreType)
+                                })
+                              ]
+                          )
+                        },
+                        positiveText: '确定',
+                        negativeText: '取消',
+                        onPositiveClick: () => {
+                          for (let i = 0; i < state.selectRowData.length; i++) {
+                            const item = state.selectRowData[i]
+                            item.scoreType = state.scoreType
+                          }
+                        }
+                      })
+                    }}
+                >
+                  <NIcon size={15} style="padding-left: 5px;margin-top:4px">
+                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+                      <path d="M2 26h28v2H2z" fill="currentColor"></path>
+                      <path
+                          d="M25.4 9c.8-.8.8-2 0-2.8l-3.6-3.6c-.8-.8-2-.8-2.8 0l-15 15V24h6.4l15-15zm-5-5L24 7.6l-3 3L17.4 7l3-3zM6 22v-3.6l10-10l3.6 3.6l-10 10H6z"
+                          fill="currentColor"
+                      ></path>
+                    </svg>
+                  </NIcon>
+                </NButton>
+              </NSpace>
+          )
+        },
+        key: 'scoreType',
+        width: 200,
+        render: (row: any) => {
+          // })
+          return (
+              <NSelect
+                  placeholder="请选择默认谱面"
+                  value={row.scoreType}
+                  options={getSelectDataFromObj(scoreType)}
+                  onUpdateValue={(value: any) => {
+                    row.scoreType = value
+                  }}
+                  clearable
+              />
+          )
+        }
+      })
+      field.push({
+        title(column: any) {
+          return (
+              <NSpace>
+                是否支持转简谱
+                <NButton
+                    type="primary"
+                    size="small"
+                    text
+                    onClick={() => {
+                      dialogs.create({
+                        title: '是否支持转简谱',
+                        showIcon: false,
+                        content: () => {
+                          return h(
+                              'div',
+                              {
+                                class: 'flex flex-col justify-center items-center text-14px'
+                              },
+                              [
+                                // icon
+                                h(NSelect, {
+                                  onUpdateValue(v) {
+                                    state.isConvertibleScore = v
+                                  },
+                                  options: [
+                                    {
+                                      label: '是',
+                                      value: true
+                                    },
+                                    {
+                                      label: '否',
+                                      value: false
+                                    }] as any
+                                })
+                              ]
+                          )
+                        },
+                        positiveText: '确定',
+                        negativeText: '取消',
+                        onPositiveClick: () => {
+                          for (let i = 0; i < state.selectRowData.length; i++) {
+                            const item = state.selectRowData[i]
+                            item.isConvertibleScore = state.isConvertibleScore
+                          }
+                        }
+                      })
+                    }}
+                >
+                  <NIcon size={15} style="padding-left: 5px;margin-top:4px">
+                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+                      <path d="M2 26h28v2H2z" fill="currentColor"></path>
+                      <path
+                          d="M25.4 9c.8-.8.8-2 0-2.8l-3.6-3.6c-.8-.8-2-.8-2.8 0l-15 15V24h6.4l15-15zm-5-5L24 7.6l-3 3L17.4 7l3-3zM6 22v-3.6l10-10l3.6 3.6l-10 10H6z"
+                          fill="currentColor"
+                      ></path>
+                    </svg>
+                  </NIcon>
+                </NButton>
+              </NSpace>
+          )
+        },
+        key: 'isConvertibleScore',
+        width: 200,
+        render: (row: any) => {
+          // })
+          return (
+              <NSelect
+                  value={row.isConvertibleScore}
+                  options={[
+                    {
+                      label: '是',
+                      value: true
+                    },
+                    {
+                      label: '否',
+                      value: false
+                    } as any
+                  ]}
+                  onUpdateValue={(value: any) => {
+                    row.isConvertibleScore = value
+                  }}
+                  filterable
+                  clearable
+              />
+          )
+        }
+      })
+      field.push({
+        title(column: any) {
+          return (
             <NSpace>
               排序
               <NButton
@@ -636,6 +787,7 @@ export default defineComponent({
                     v-model:value={state.searchForm.subjectId}
                     options={state.subjectList}
                     clearable
+                    filterable
                   />
                 </NFormItem>
                 <NFormItem label="音乐人" path="composer">

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

@@ -550,6 +550,7 @@ export default defineComponent({
                 v-model:value={state.subjectId}
                 options={state.subjectList}
                 clearable
+                filterable
               />
             </NFormItem>
             <NFormItem label="曲目分类" path="musicCategoryId">
@@ -561,6 +562,7 @@ export default defineComponent({
                 v-model:value={state.searchForm.musicCategoryId}
                 options={state.musicSheetCategories}
                 clearable
+                filterable
               />
             </NFormItem>
             {/*<NFormItem*/}

+ 58 - 1
src/views/music-library/project-music-sheet/module/gym/updateMusic.tsx

@@ -2,7 +2,7 @@ import {defineComponent, onMounted, reactive, ref} from "vue";
 import {NButton, NCascader, NForm, NFormItem, NInputNumber, NSelect, NSpace, useMessage} from "naive-ui";
 import {musicSheetApplicationExtendCategoryApplicationExtendInfo, musicSheetApplicationExtendUpdate} from "@views/music-library/api";
 import {getSelectDataFromObj} from "@/utils/objectUtil";
-import {musicSheetPaymentType} from "@/utils/constant";
+import {scoreType} from "@/utils/constant";
 
 export default defineComponent({
   name: 'project-music-cooleshow-edu-updateMusic',
@@ -28,6 +28,8 @@ export default defineComponent({
       musicSheetCategoryId: null as any,
       sortNo: null as any,
       paymentType: null as any,
+      isConvertibleScore: null as any,//是否支持转简谱
+      scoreType: null as any,//默认谱面
     })
     const formsRef = ref()
 
@@ -47,6 +49,8 @@ export default defineComponent({
       forms.musicSheetCategoryId = data[0].musicSheetCategoryId
       forms.sortNo = data[0].sortNo
       forms.paymentType = data[0].paymentType
+      forms.isConvertibleScore = data[0].isConvertibleScore
+      forms.scoreType = data[0].scoreType
 
     })
 
@@ -132,6 +136,59 @@ export default defineComponent({
                 />
               </NFormItem>
               <NFormItem
+                  label="默认谱面"
+                  path="scoreType"
+                  rule={[
+                    {
+                      required: true,
+                      message: '请选择默认谱面'
+                    }
+                  ]}
+              >
+                <NSelect
+                    v-model:value={forms.scoreType}
+                    placeholder="请选择默认谱面"
+                    options={getSelectDataFromObj(scoreType)}
+                    clearable
+                />
+              </NFormItem>
+              <NFormItem
+                  label="支持转简谱"
+                  path="isConvertibleScore"
+                  rule={[
+                    {
+                      required: true,
+                      message: '请选择是否支持转简谱',
+                      trigger: ['input', 'blur'],
+                      type: 'boolean'
+                    }
+                  ]}
+              >
+                <NSelect
+                    v-model:value={forms.isConvertibleScore}
+                    options={
+                      [
+                        {
+                          label: '是',
+                          value: true
+                        },
+                        {
+                          label: '否',
+                          value: false
+                        }
+                      ] as any
+                    }
+                    placeholder="请选择是否支持转简谱"
+                    onUpdateValue={async (value: any) => {
+                      if (!value) {
+                        //如果不支持,修改默认谱面
+                        // forms.scoreType = 'STAVE'
+                      }
+                    }}
+                    clearable
+                ></NSelect>
+              </NFormItem>
+              <NFormItem
                   label="排序值"
                   path="sortNo"
                   rule={[

+ 172 - 2
src/views/music-library/project-music-sheet/module/gyt/addMusic.tsx

@@ -20,7 +20,7 @@ import {
 } from 'naive-ui'
 import Pagination from '@components/pagination'
 import { getMapValueByKey, getSelectDataFromObj } from '@/utils/objectUtil'
-import {appKey, musicSheetAvailableType, musicSheetSourceType, musicSheetType} from '@/utils/constant'
+import {appKey, musicSheetAvailableType, musicSheetSourceType, musicSheetType, scoreType} from '@/utils/constant'
 import {musicSheetApplicationExtendCategoryList, musicSheetApplicationExtendSaveBatch, musicSheetApplicationOwnerList, musicSheetPage} from '@views/music-library/api'
 import deepClone from '@/utils/deep.clone'
 import { getOwnerName } from '@views/music-library/musicUtil'
@@ -76,6 +76,9 @@ export default defineComponent({
       musicSheetCategories: [] as any,
       startSortNum: null as any, // 排序起始值
       projectMusicCategoryId: null as any, // 曲目分类ID
+      isConvertibleScore: null as any,//是否支持转简谱
+      scoreType: null as any,//默认谱面
+
       useProjectData: [] as any, // 适用项目行数据
       userIdDisable: true,
       userIdData: [] as any,
@@ -199,6 +202,14 @@ export default defineComponent({
           message.error('曲目分类不能为空')
           return
         }
+        if (item.scoreType == null) {
+          message.error('默认谱面不能为空')
+          return
+        }
+        if (item.isConvertibleScore == null) {
+          message.error('是否支持转简谱不能为空')
+          return
+        }
         if (item.sortNo === null || item.sortNo === undefined || item.sortNo === '') {
           message.error('排序号不能为空')
           return
@@ -455,6 +466,165 @@ export default defineComponent({
       field.push({
         title(column: any) {
           return (
+              <NSpace>
+                默认谱面
+                <NButton
+                    type="primary"
+                    size="small"
+                    text
+                    onClick={() => {
+                      dialogs.create({
+                        title: '请选择默认谱面',
+                        showIcon: false,
+                        content: () => {
+                          return h(
+                              'div',
+                              {
+                                class: 'flex flex-col justify-center items-center text-14px'
+                              },
+                              [
+                                // icon
+                                h(NSelect, {
+                                  onUpdateValue(v) {
+                                    state.scoreType = v
+                                  },
+                                  options: getSelectDataFromObj(scoreType)
+                                })
+                              ]
+                          )
+                        },
+                        positiveText: '确定',
+                        negativeText: '取消',
+                        onPositiveClick: () => {
+                          for (let i = 0; i < state.selectRowData.length; i++) {
+                            const item = state.selectRowData[i]
+                            item.scoreType = state.scoreType
+                          }
+                        }
+                      })
+                    }}
+                >
+                  <NIcon size={15} style="padding-left: 5px;margin-top:4px">
+                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+                      <path d="M2 26h28v2H2z" fill="currentColor"></path>
+                      <path
+                          d="M25.4 9c.8-.8.8-2 0-2.8l-3.6-3.6c-.8-.8-2-.8-2.8 0l-15 15V24h6.4l15-15zm-5-5L24 7.6l-3 3L17.4 7l3-3zM6 22v-3.6l10-10l3.6 3.6l-10 10H6z"
+                          fill="currentColor"
+                      ></path>
+                    </svg>
+                  </NIcon>
+                </NButton>
+              </NSpace>
+          )
+        },
+        key: 'scoreType',
+        width: 200,
+        render: (row: any) => {
+          // })
+          return (
+              <NSelect
+                  placeholder="请选择默认谱面"
+                  value={row.scoreType}
+                  options={getSelectDataFromObj(scoreType)}
+                  onUpdateValue={(value: any) => {
+                    row.scoreType = value
+                  }}
+                  clearable
+              />
+          )
+        }
+      })
+      field.push({
+        title(column: any) {
+          return (
+              <NSpace>
+                是否支持转简谱
+                <NButton
+                    type="primary"
+                    size="small"
+                    text
+                    onClick={() => {
+                      dialogs.create({
+                        title: '是否支持转简谱',
+                        showIcon: false,
+                        content: () => {
+                          return h(
+                              'div',
+                              {
+                                class: 'flex flex-col justify-center items-center text-14px'
+                              },
+                              [
+                                // icon
+                                h(NSelect, {
+                                  onUpdateValue(v) {
+                                    state.isConvertibleScore = v
+                                  },
+                                  options: [
+                                    {
+                                      label: '是',
+                                      value: true
+                                    },
+                                    {
+                                      label: '否',
+                                      value: false
+                                    }] as any
+                                })
+                              ]
+                          )
+                        },
+                        positiveText: '确定',
+                        negativeText: '取消',
+                        onPositiveClick: () => {
+                          for (let i = 0; i < state.selectRowData.length; i++) {
+                            const item = state.selectRowData[i]
+                            item.isConvertibleScore = state.isConvertibleScore
+                          }
+                        }
+                      })
+                    }}
+                >
+                  <NIcon size={15} style="padding-left: 5px;margin-top:4px">
+                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+                      <path d="M2 26h28v2H2z" fill="currentColor"></path>
+                      <path
+                          d="M25.4 9c.8-.8.8-2 0-2.8l-3.6-3.6c-.8-.8-2-.8-2.8 0l-15 15V24h6.4l15-15zm-5-5L24 7.6l-3 3L17.4 7l3-3zM6 22v-3.6l10-10l3.6 3.6l-10 10H6z"
+                          fill="currentColor"
+                      ></path>
+                    </svg>
+                  </NIcon>
+                </NButton>
+              </NSpace>
+          )
+        },
+        key: 'isConvertibleScore',
+        width: 200,
+        render: (row: any) => {
+          // })
+          return (
+              <NSelect
+                  value={row.isConvertibleScore}
+                  options={[
+                    {
+                      label: '是',
+                      value: true
+                    },
+                    {
+                      label: '否',
+                      value: false
+                    } as any
+                  ]}
+                  onUpdateValue={(value: any) => {
+                    row.isConvertibleScore = value
+                  }}
+                  filterable
+                  clearable
+              />
+          )
+        }
+      })
+      field.push({
+        title(column: any) {
+          return (
             <NSpace>
               排序
               <NButton
@@ -736,7 +906,7 @@ export default defineComponent({
                 data={state.selectRowData}
                 rowKey={(row: any) => row.id}
                 maxHeight={500}
-                scrollX={1800}
+                scrollX={2000}
               ></NDataTable>
             </div>
           )}

+ 9 - 35
src/views/music-library/project-music-sheet/module/gyt/music-sheet-gyt.tsx

@@ -1,34 +1,11 @@
-import { defineComponent, onMounted, reactive, ref } from 'vue'
+import {defineComponent, onMounted, reactive, ref} from 'vue'
 import SaveForm from '@components/save-form'
-import {
-  DataTableRowKey,
-  NButton,
-  NCascader,
-  NDataTable,
-  NDatePicker,
-  NDescriptions,
-  NDescriptionsItem,
-  NFormItem,
-  NImage,
-  NInput,
-  NModal,
-  NSelect,
-  NSpace,
-  NTag,
-  useDialog,
-  useMessage
-} from 'naive-ui'
+import {DataTableRowKey, NButton, NCascader, NDataTable, NDatePicker, NDescriptions, NDescriptionsItem, NFormItem, NImage, NInput, NModal, NSelect, NSpace, NTag, useDialog, useMessage} from 'naive-ui'
 import Pagination from '@components/pagination'
 import TheTooltip from '@components/TheTooltip'
 import AddMusic from '@views/music-library/project-music-sheet/module/gyt/addMusic'
-import { getMapValueByKey, getSelectDataFromObj } from '@/utils/objectUtil'
-import {
-  appKey,
-  musicSheetAudioType,
-  musicSheetPaymentType,
-  musicSheetSourceType,
-  musicSheetType
-} from '@/utils/constant'
+import {getMapValueByKey, getSelectDataFromObj} from '@/utils/objectUtil'
+import {appKey, musicSheetAudioType, musicSheetSourceType, musicSheetType} from '@/utils/constant'
 import {
   musicSheetApplicationExtendCategoryList,
   musicSheetApplicationExtendDel,
@@ -36,14 +13,9 @@ import {
   musicSheetApplicationOwnerList,
   musicSheetPageByApplication
 } from '@views/music-library/api'
-import {
-  musicSheetApplicationExtendSubjectList,
-  subjectPage,
-  sysApplicationPage
-} from '@views/system-manage/api'
-import { filterTimes } from '@/utils/dateUtil'
-import deepClone from '@/utils/deep.clone'
-import { copyText, getOwnerName } from '@views/music-library/musicUtil'
+import {musicSheetApplicationExtendSubjectList, sysApplicationPage} from '@views/system-manage/api'
+import {filterTimes} from '@/utils/dateUtil'
+import {copyText, getOwnerName} from '@views/music-library/musicUtil'
 import UpdateMusic from '@views/music-library/project-music-sheet/module/gyt/updateMusic'
 import MusicPreView from '@views/music-library/music-sheet/modal/musicPreView'
 
@@ -556,6 +528,7 @@ export default defineComponent({
                 v-model:value={state.searchForm.subjectId}
                 options={state.subjectList}
                 clearable
+                filterable
               />
             </NFormItem>
             <NFormItem label="曲目分类" path="musicCategoryId">
@@ -567,6 +540,7 @@ export default defineComponent({
                 v-model:value={state.searchForm.musicCategoryId}
                 options={state.musicSheetCategories}
                 clearable
+                filterable
               />
             </NFormItem>
             {/*<NFormItem*/}

+ 57 - 2
src/views/music-library/project-music-sheet/module/gyt/updateMusic.tsx

@@ -2,7 +2,7 @@ import {defineComponent, onMounted, reactive, ref} from "vue";
 import {NButton, NCascader, NForm, NFormItem, NInputNumber, NSelect, NSpace, useMessage} from "naive-ui";
 import {musicSheetApplicationExtendCategoryApplicationExtendInfo, musicSheetApplicationExtendUpdate} from "@views/music-library/api";
 import {getSelectDataFromObj} from "@/utils/objectUtil";
-import {musicSheetAvailableType} from "@/utils/constant";
+import {scoreType} from "@/utils/constant";
 
 export default defineComponent({
   name: 'project-music-cooleshow-edu-updateMusic',
@@ -27,7 +27,9 @@ export default defineComponent({
     const forms = reactive({
       musicSheetCategoryId: null as any,
       sortNo: null as any,
-      availableType : null as any,
+      availableType: null as any,
+      isConvertibleScore: null as any,//是否支持转简谱
+      scoreType: null as any,//默认谱面
     })
     const formsRef = ref()
 
@@ -131,6 +133,59 @@ export default defineComponent({
                 />
               </NFormItem>
               <NFormItem
+                  label="默认谱面"
+                  path="scoreType"
+                  rule={[
+                    {
+                      required: true,
+                      message: '请选择默认谱面'
+                    }
+                  ]}
+              >
+                <NSelect
+                    v-model:value={forms.scoreType}
+                    placeholder="请选择默认谱面"
+                    options={getSelectDataFromObj(scoreType)}
+                    clearable
+                />
+              </NFormItem>
+              <NFormItem
+                  label="支持转简谱"
+                  path="isConvertibleScore"
+                  rule={[
+                    {
+                      required: true,
+                      message: '请选择是否支持转简谱',
+                      trigger: ['input', 'blur'],
+                      type: 'boolean'
+                    }
+                  ]}
+              >
+                <NSelect
+                    v-model:value={forms.isConvertibleScore}
+                    options={
+                      [
+                        {
+                          label: '是',
+                          value: true
+                        },
+                        {
+                          label: '否',
+                          value: false
+                        }
+                      ] as any
+                    }
+                    placeholder="请选择是否支持转简谱"
+                    onUpdateValue={async (value: any) => {
+                      if (!value) {
+                        //如果不支持,修改默认谱面
+                        // forms.scoreType = 'STAVE'
+                      }
+                    }}
+                    clearable
+                ></NSelect>
+              </NFormItem>
+              <NFormItem
                   label="排序值"
                   path="sortNo"
                   rule={[

+ 174 - 4
src/views/music-library/project-music-sheet/module/klx/addMusic.tsx

@@ -24,7 +24,7 @@ import {
   musicSheetAvailableType,
   musicSheetPaymentType,
   musicSheetSourceType,
-  musicSheetType
+  musicSheetType, scoreType
 } from '@/utils/constant'
 import {musicSheetApplicationExtendSaveBatch, musicSheetApplicationExtendTagList, musicSheetApplicationOwnerList, musicSheetPage} from '@views/music-library/api'
 import deepClone from '@/utils/deep.clone'
@@ -91,7 +91,9 @@ export default defineComponent({
       globalAvailableType: null as any, //可用途径
       globalTopFlag: null as any, //是否置顶
       globalExquisiteFlag: null as any, //精品乐谱
-      globalStartSortNum: null as any // 排序起始值
+      globalStartSortNum: null as any, // 排序起始值
+      isConvertibleScore: null as any,//是否支持转简谱
+      scoreType: null as any,//默认谱面
     })
 
     onMounted(async () => {
@@ -237,7 +239,14 @@ export default defineComponent({
           message.error('是否精品不能为空')
           return
         }
-
+        if (item.scoreType == null) {
+          message.error('默认谱面不能为空')
+          return
+        }
+        if (item.isConvertibleScore == null) {
+          message.error('是否支持转简谱不能为空')
+          return
+        }
         if (item.sortNo === null || item.sortNo === undefined || item.sortNo === '') {
           message.error('排序号不能为空')
           return
@@ -819,6 +828,166 @@ export default defineComponent({
       field.push({
         title(column: any) {
           return (
+              <NSpace>
+                默认谱面
+                <NButton
+                    type="primary"
+                    size="small"
+                    text
+                    onClick={() => {
+                      dialogs.create({
+                        title: '请选择默认谱面',
+                        showIcon: false,
+                        content: () => {
+                          return h(
+                              'div',
+                              {
+                                class: 'flex flex-col justify-center items-center text-14px'
+                              },
+                              [
+                                // icon
+                                h(NSelect, {
+                                  onUpdateValue(v) {
+                                    state.scoreType = v
+                                  },
+                                  options: getSelectDataFromObj(scoreType)
+                                })
+                              ]
+                          )
+                        },
+                        positiveText: '确定',
+                        negativeText: '取消',
+                        onPositiveClick: () => {
+                          for (let i = 0; i < state.selectRowData.length; i++) {
+                            const item = state.selectRowData[i]
+                            item.scoreType = state.scoreType
+                          }
+                        }
+                      })
+                    }}
+                >
+                  <NIcon size={15} style="padding-left: 5px;margin-top:4px">
+                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+                      <path d="M2 26h28v2H2z" fill="currentColor"></path>
+                      <path
+                          d="M25.4 9c.8-.8.8-2 0-2.8l-3.6-3.6c-.8-.8-2-.8-2.8 0l-15 15V24h6.4l15-15zm-5-5L24 7.6l-3 3L17.4 7l3-3zM6 22v-3.6l10-10l3.6 3.6l-10 10H6z"
+                          fill="currentColor"
+                      ></path>
+                    </svg>
+                  </NIcon>
+                </NButton>
+              </NSpace>
+          )
+        },
+        key: 'scoreType',
+        width: 200,
+        render: (row: any) => {
+          // })
+          return (
+              <NSelect
+                  placeholder="请选择默认谱面"
+                  value={row.scoreType}
+                  options={getSelectDataFromObj(scoreType)}
+                  onUpdateValue={(value: any) => {
+                    row.scoreType = value
+                  }}
+                  clearable
+              />
+          )
+        }
+      })
+      field.push({
+        title(column: any) {
+          return (
+              <NSpace>
+                是否支持转简谱
+                <NButton
+                    type="primary"
+                    size="small"
+                    text
+                    onClick={() => {
+                      dialogs.create({
+                        title: '是否支持转简谱',
+                        showIcon: false,
+                        content: () => {
+                          return h(
+                              'div',
+                              {
+                                class: 'flex flex-col justify-center items-center text-14px'
+                              },
+                              [
+                                // icon
+                                h(NSelect, {
+                                  onUpdateValue(v) {
+                                    state.isConvertibleScore = v
+                                  },
+                                  options: [
+                                    {
+                                      label: '是',
+                                      value: true
+                                    },
+                                    {
+                                      label: '否',
+                                      value: false
+                                    }] as any
+                                })
+                              ]
+                          )
+                        },
+                        positiveText: '确定',
+                        negativeText: '取消',
+                        onPositiveClick: () => {
+                          for (let i = 0; i < state.selectRowData.length; i++) {
+                            const item = state.selectRowData[i]
+                            item.isConvertibleScore = state.isConvertibleScore
+                          }
+                        }
+                      })
+                    }}
+                >
+                  <NIcon size={15} style="padding-left: 5px;margin-top:4px">
+                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+                      <path d="M2 26h28v2H2z" fill="currentColor"></path>
+                      <path
+                          d="M25.4 9c.8-.8.8-2 0-2.8l-3.6-3.6c-.8-.8-2-.8-2.8 0l-15 15V24h6.4l15-15zm-5-5L24 7.6l-3 3L17.4 7l3-3zM6 22v-3.6l10-10l3.6 3.6l-10 10H6z"
+                          fill="currentColor"
+                      ></path>
+                    </svg>
+                  </NIcon>
+                </NButton>
+              </NSpace>
+          )
+        },
+        key: 'isConvertibleScore',
+        width: 200,
+        render: (row: any) => {
+          // })
+          return (
+              <NSelect
+                  value={row.isConvertibleScore}
+                  options={[
+                    {
+                      label: '是',
+                      value: true
+                    },
+                    {
+                      label: '否',
+                      value: false
+                    } as any
+                  ]}
+                  onUpdateValue={(value: any) => {
+                    row.isConvertibleScore = value
+                  }}
+                  filterable
+                  clearable
+              />
+          )
+        }
+      })
+
+      field.push({
+        title(column: any) {
+          return (
             <NSpace>
               排序
               <NButton
@@ -1006,6 +1175,7 @@ export default defineComponent({
                     v-model:value={state.searchForm.subjectId}
                     options={state.subjectList}
                     clearable
+                    filterable
                   />
                 </NFormItem>
                 <NFormItem label="音乐人" path="composer">
@@ -1104,7 +1274,7 @@ export default defineComponent({
                 data={state.selectRowData}
                 rowKey={(row: any) => row.id}
                 maxHeight={500}
-                scrollX={2000}
+                scrollX={2500}
               ></NDataTable>
             </div>
           )}

+ 9 - 34
src/views/music-library/project-music-sheet/module/klx/music-sheet-klx.tsx

@@ -1,34 +1,11 @@
-import { defineComponent, onMounted, reactive, ref } from 'vue'
+import {defineComponent, onMounted, reactive, ref} from 'vue'
 import SaveForm from '@components/save-form'
-import {
-  DataTableRowKey,
-  NButton,
-  NDataTable,
-  NDatePicker,
-  NDescriptions,
-  NDescriptionsItem,
-  NFormItem,
-  NImage,
-  NInput,
-  NModal,
-  NSelect,
-  NSpace,
-  NTag,
-  useDialog,
-  useMessage
-} from 'naive-ui'
+import {DataTableRowKey, NButton, NDataTable, NDatePicker, NDescriptions, NDescriptionsItem, NFormItem, NImage, NInput, NModal, NSelect, NSpace, NTag, useDialog, useMessage} from 'naive-ui'
 import Pagination from '@components/pagination'
 import TheTooltip from '@components/TheTooltip'
 import AddMusic from '@views/music-library/project-music-sheet/module/klx/addMusic'
-import { getMapValueByKey, getSelectDataFromObj } from '@/utils/objectUtil'
-import {
-  appKey,
-  musicSheetAudioType,
-  musicSheetAvailableType,
-  musicSheetPaymentType,
-  musicSheetSourceType,
-  musicSheetType
-} from '@/utils/constant'
+import {getMapValueByKey, getSelectDataFromObj} from '@/utils/objectUtil'
+import {appKey, musicSheetAudioType, musicSheetAvailableType, musicSheetPaymentType, musicSheetSourceType, musicSheetType} from '@/utils/constant'
 import {
   musicSheetApplicationExtendDel,
   musicSheetApplicationExtendStatus,
@@ -36,14 +13,10 @@ import {
   musicSheetApplicationOwnerList,
   musicSheetPageByApplication
 } from '@views/music-library/api'
-import {
-  musicSheetApplicationExtendSubjectList,
-  subjectPage,
-  sysApplicationPage
-} from '@views/system-manage/api'
-import { filterTimes } from '@/utils/dateUtil'
+import {musicSheetApplicationExtendSubjectList, sysApplicationPage} from '@views/system-manage/api'
+import {filterTimes} from '@/utils/dateUtil'
 import deepClone from '@/utils/deep.clone'
-import { copyText, getOwnerName } from '@views/music-library/musicUtil'
+import {copyText, getOwnerName} from '@views/music-library/musicUtil'
 import UpdateMusic from '@views/music-library/project-music-sheet/module/klx/updateMusic'
 import MusicPreView from '@views/music-library/music-sheet/modal/musicPreView'
 
@@ -603,6 +576,7 @@ export default defineComponent({
                 v-model:value={state.searchForm.subjectId}
                 options={state.subjectList}
                 clearable
+                filterable
               />
             </NFormItem>
             <NFormItem label="曲目标签" path="musicTagIds">
@@ -613,6 +587,7 @@ export default defineComponent({
                 multiple
                 maxTagCount={2}
                 clearable
+                filterable
               />
             </NFormItem>
             {/*<NFormItem*/}

+ 58 - 1
src/views/music-library/project-music-sheet/module/klx/updateMusic.tsx

@@ -2,7 +2,7 @@ import {defineComponent, onMounted, reactive, ref} from "vue";
 import {NButton, NForm, NFormItem, NInputNumber, NSelect, NSpace, useMessage} from "naive-ui";
 import {musicSheetApplicationExtendCategoryApplicationExtendInfo, musicSheetApplicationExtendUpdate} from "@views/music-library/api";
 import {getSelectDataFromObj} from "@/utils/objectUtil";
-import {musicSheetAvailableType, musicSheetPaymentType} from "@/utils/constant";
+import {musicSheetAvailableType, musicSheetPaymentType, scoreType} from "@/utils/constant";
 
 export default defineComponent({
   name: 'project-music-cooleshow-edu-updateMusic',
@@ -32,6 +32,8 @@ export default defineComponent({
       availableType: null as any,
       topFlag: null as any,
       exquisiteFlag: null as any,
+      isConvertibleScore: null as any,//是否支持转简谱
+      scoreType: null as any,//默认谱面
     })
     const formsRef = ref()
 
@@ -55,6 +57,8 @@ export default defineComponent({
       forms.availableType = data[0].availableType
       forms.topFlag = data[0].topFlag
       forms.exquisiteFlag = data[0].exquisiteFlag
+      forms.isConvertibleScore = data[0].isConvertibleScore
+      forms.scoreType = data[0].scoreType
     })
 
     const onSubmit = async () => {
@@ -229,6 +233,59 @@ export default defineComponent({
                 />
               </NFormItem>
               <NFormItem
+                  label="默认谱面"
+                  path="scoreType"
+                  rule={[
+                    {
+                      required: true,
+                      message: '请选择默认谱面'
+                    }
+                  ]}
+              >
+                <NSelect
+                    v-model:value={forms.scoreType}
+                    placeholder="请选择默认谱面"
+                    options={getSelectDataFromObj(scoreType)}
+                    clearable
+                />
+              </NFormItem>
+              <NFormItem
+                  label="支持转简谱"
+                  path="isConvertibleScore"
+                  rule={[
+                    {
+                      required: true,
+                      message: '请选择是否支持转简谱',
+                      trigger: ['input', 'blur'],
+                      type: 'boolean'
+                    }
+                  ]}
+              >
+                <NSelect
+                    v-model:value={forms.isConvertibleScore}
+                    options={
+                      [
+                        {
+                          label: '是',
+                          value: true
+                        },
+                        {
+                          label: '否',
+                          value: false
+                        }
+                      ] as any
+                    }
+                    placeholder="请选择是否支持转简谱"
+                    onUpdateValue={async (value: any) => {
+                      if (!value) {
+                        //如果不支持,修改默认谱面
+                        // forms.scoreType = 'STAVE'
+                      }
+                    }}
+                    clearable
+                ></NSelect>
+              </NFormItem>
+              <NFormItem
                   label="排序值"
                   path="sortNo"
                   rule={[

+ 172 - 1
src/views/music-library/project-music-sheet/module/kt/addMusic.tsx

@@ -20,7 +20,7 @@ import {
 } from 'naive-ui'
 import Pagination from '@components/pagination'
 import { getMapValueByKey, getSelectDataFromObj } from '@/utils/objectUtil'
-import {appKey, musicSheetSourceType, musicSheetType} from '@/utils/constant'
+import {appKey, musicSheetSourceType, musicSheetType, scoreType} from '@/utils/constant'
 import {musicSheetApplicationExtendCategoryList, musicSheetApplicationExtendSaveBatch, musicSheetApplicationOwnerList, musicSheetPage} from '@views/music-library/api'
 import deepClone from '@/utils/deep.clone'
 import { getOwnerName } from '@views/music-library/musicUtil'
@@ -77,6 +77,8 @@ export default defineComponent({
       musicSheetCategories: [] as any,
       startSortNum: null as any, // 排序起始值
       projectMusicCategoryId: null as any, // 曲目分类ID
+      isConvertibleScore: null as any,//是否支持转简谱
+      scoreType: null as any,//默认谱面
 
       useProjectData: [] as any, // 适用项目行数据
       userIdDisable: true,
@@ -178,6 +180,14 @@ export default defineComponent({
           message.error('收费方式不能为空')
           return
         }
+        if (item.scoreType == null) {
+          message.error('默认谱面不能为空')
+          return
+        }
+        if (item.isConvertibleScore == null) {
+          message.error('是否支持转简谱不能为空')
+          return
+        }
         if (!item.sortNo) {
           item.sortNo = 0
         }
@@ -437,6 +447,165 @@ export default defineComponent({
       field.push({
         title(column: any) {
           return (
+              <NSpace>
+                默认谱面
+                <NButton
+                    type="primary"
+                    size="small"
+                    text
+                    onClick={() => {
+                      dialogs.create({
+                        title: '请选择默认谱面',
+                        showIcon: false,
+                        content: () => {
+                          return h(
+                              'div',
+                              {
+                                class: 'flex flex-col justify-center items-center text-14px'
+                              },
+                              [
+                                // icon
+                                h(NSelect, {
+                                  onUpdateValue(v) {
+                                    state.scoreType = v
+                                  },
+                                  options: getSelectDataFromObj(scoreType)
+                                })
+                              ]
+                          )
+                        },
+                        positiveText: '确定',
+                        negativeText: '取消',
+                        onPositiveClick: () => {
+                          for (let i = 0; i < state.selectRowData.length; i++) {
+                            const item = state.selectRowData[i]
+                            item.scoreType = state.scoreType
+                          }
+                        }
+                      })
+                    }}
+                >
+                  <NIcon size={15} style="padding-left: 5px;margin-top:4px">
+                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+                      <path d="M2 26h28v2H2z" fill="currentColor"></path>
+                      <path
+                          d="M25.4 9c.8-.8.8-2 0-2.8l-3.6-3.6c-.8-.8-2-.8-2.8 0l-15 15V24h6.4l15-15zm-5-5L24 7.6l-3 3L17.4 7l3-3zM6 22v-3.6l10-10l3.6 3.6l-10 10H6z"
+                          fill="currentColor"
+                      ></path>
+                    </svg>
+                  </NIcon>
+                </NButton>
+              </NSpace>
+          )
+        },
+        key: 'scoreType',
+        width: 200,
+        render: (row: any) => {
+          // })
+          return (
+              <NSelect
+                  placeholder="请选择默认谱面"
+                  value={row.scoreType}
+                  options={getSelectDataFromObj(scoreType)}
+                  onUpdateValue={(value: any) => {
+                    row.scoreType = value
+                  }}
+                  clearable
+              />
+          )
+        }
+      })
+      field.push({
+        title(column: any) {
+          return (
+              <NSpace>
+                是否支持转简谱
+                <NButton
+                    type="primary"
+                    size="small"
+                    text
+                    onClick={() => {
+                      dialogs.create({
+                        title: '是否支持转简谱',
+                        showIcon: false,
+                        content: () => {
+                          return h(
+                              'div',
+                              {
+                                class: 'flex flex-col justify-center items-center text-14px'
+                              },
+                              [
+                                // icon
+                                h(NSelect, {
+                                  onUpdateValue(v) {
+                                    state.isConvertibleScore = v
+                                  },
+                                  options: [
+                                    {
+                                      label: '是',
+                                      value: true
+                                    },
+                                    {
+                                      label: '否',
+                                      value: false
+                                    }] as any
+                                })
+                              ]
+                          )
+                        },
+                        positiveText: '确定',
+                        negativeText: '取消',
+                        onPositiveClick: () => {
+                          for (let i = 0; i < state.selectRowData.length; i++) {
+                            const item = state.selectRowData[i]
+                            item.isConvertibleScore = state.isConvertibleScore
+                          }
+                        }
+                      })
+                    }}
+                >
+                  <NIcon size={15} style="padding-left: 5px;margin-top:4px">
+                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+                      <path d="M2 26h28v2H2z" fill="currentColor"></path>
+                      <path
+                          d="M25.4 9c.8-.8.8-2 0-2.8l-3.6-3.6c-.8-.8-2-.8-2.8 0l-15 15V24h6.4l15-15zm-5-5L24 7.6l-3 3L17.4 7l3-3zM6 22v-3.6l10-10l3.6 3.6l-10 10H6z"
+                          fill="currentColor"
+                      ></path>
+                    </svg>
+                  </NIcon>
+                </NButton>
+              </NSpace>
+          )
+        },
+        key: 'isConvertibleScore',
+        width: 200,
+        render: (row: any) => {
+          // })
+          return (
+              <NSelect
+                  value={row.isConvertibleScore}
+                  options={[
+                    {
+                      label: '是',
+                      value: true
+                    },
+                    {
+                      label: '否',
+                      value: false
+                    } as any
+                  ]}
+                  onUpdateValue={(value: any) => {
+                    row.isConvertibleScore = value
+                  }}
+                  filterable
+                  clearable
+              />
+          )
+        }
+      })
+      field.push({
+        title(column: any) {
+          return (
             <NSpace>
               排序
               <NButton
@@ -646,6 +815,7 @@ export default defineComponent({
                     v-model:value={state.searchForm.subjectId}
                     options={state.subjectList}
                     clearable
+                    filterable
                   />
                 </NFormItem>
                 <NFormItem label="音乐人" path="composer">
@@ -744,6 +914,7 @@ export default defineComponent({
                 data={state.selectRowData}
                 rowKey={(row: any) => row.id}
                 maxHeight={500}
+                scrollX={1800}
               ></NDataTable>
             </div>
           )}

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

@@ -532,6 +532,7 @@ export default defineComponent({
                 v-model:value={state.searchForm.subjectId}
                 options={state.subjectList}
                 clearable
+                filterable
               />
             </NFormItem>
             <NFormItem label="乐谱教材" path="musicCategoryId">

+ 59 - 0
src/views/music-library/project-music-sheet/module/kt/updateMusic.tsx

@@ -1,6 +1,8 @@
 import {defineComponent, onMounted, reactive, ref} from "vue";
 import {NButton, NCascader, NForm, NFormItem, NInputNumber, NSelect, NSpace, useMessage} from "naive-ui";
 import {musicSheetApplicationExtendCategoryApplicationExtendInfo, musicSheetApplicationExtendUpdate} from "@views/music-library/api";
+import {getSelectDataFromObj} from "@/utils/objectUtil";
+import {scoreType} from "@/utils/constant";
 
 export default defineComponent({
   name: 'project-music-cooleshow-edu-updateMusic',
@@ -26,6 +28,8 @@ export default defineComponent({
       musicSheetCategoryId: null as any,
       sortNo: null as any,
       paymentType: null as any,
+      isConvertibleScore: null as any,//是否支持转简谱
+      scoreType: null as any,//默认谱面
     })
     const formsRef = ref()
 
@@ -45,6 +49,8 @@ export default defineComponent({
       forms.musicSheetCategoryId = data[0].musicSheetCategoryId
       forms.sortNo = data[0].sortNo
       forms.paymentType = data[0].paymentType
+      forms.isConvertibleScore = data[0].isConvertibleScore
+      forms.scoreType = data[0].scoreType
 
     })
 
@@ -130,6 +136,59 @@ export default defineComponent({
                 />
               </NFormItem>
               <NFormItem
+                  label="默认谱面"
+                  path="scoreType"
+                  rule={[
+                    {
+                      required: true,
+                      message: '请选择默认谱面'
+                    }
+                  ]}
+              >
+                <NSelect
+                    v-model:value={forms.scoreType}
+                    placeholder="请选择默认谱面"
+                    options={getSelectDataFromObj(scoreType)}
+                    clearable
+                />
+              </NFormItem>
+              <NFormItem
+                  label="支持转简谱"
+                  path="isConvertibleScore"
+                  rule={[
+                    {
+                      required: true,
+                      message: '请选择是否支持转简谱',
+                      trigger: ['input', 'blur'],
+                      type: 'boolean'
+                    }
+                  ]}
+              >
+                <NSelect
+                    v-model:value={forms.isConvertibleScore}
+                    options={
+                      [
+                        {
+                          label: '是',
+                          value: true
+                        },
+                        {
+                          label: '否',
+                          value: false
+                        }
+                      ] as any
+                    }
+                    placeholder="请选择是否支持转简谱"
+                    onUpdateValue={async (value: any) => {
+                      if (!value) {
+                        //如果不支持,修改默认谱面
+                        // forms.scoreType = 'STAVE'
+                      }
+                    }}
+                    clearable
+                ></NSelect>
+              </NFormItem>
+              <NFormItem
                   label="排序值"
                   path="sortNo"
                   rule={[

+ 29 - 41
src/views/system-manage/subject-manage/instrument/instrument-list.tsx

@@ -1,29 +1,10 @@
 import Pagination from '@/components/pagination'
-import {
-  NButton,
-  NDataTable,
-  NDatePicker,
-  NFormItem,
-  NImage,
-  NInput,
-  NModal,
-  NSelect,
-  NSpace,
-  NTag,
-  useDialog,
-  useMessage
-} from 'naive-ui'
-import { defineComponent, onMounted, reactive, ref } from 'vue'
+import {NButton, NDataTable, NDatePicker, NFormItem, NImage, NInput, NModal, NSelect, NSpace, NTag, useDialog, useMessage} from 'naive-ui'
+import {defineComponent, onMounted, reactive, ref} from 'vue'
 import SaveForm from '@components/save-form'
-import {
-  musicalInstrumentPage,
-  musicalInstrumentUpdateStatus
-} from '@views/system-manage/subject-manage/api'
-import { getMapValueByKey } from '@/utils/filters'
-import { defaultScore } from '@/utils/constant'
-import { getSelectDataFromObj } from '@/utils/objectUtil'
+import {musicalInstrumentPage, musicalInstrumentUpdateStatus, subjectPage} from '@views/system-manage/subject-manage/api'
 import InstrumentSave from '@views/system-manage/subject-manage/instrument/modal/instrument-save'
-import { filterTimes } from '@/utils/dateUtil'
+import {filterTimes} from '@/utils/dateUtil'
 
 export default defineComponent({
   name: 'instrument-list',
@@ -42,11 +23,12 @@ export default defineComponent({
         timer: null,
         startTime: null,
         endTime: null,
-        defaultScore: null, //默认谱面
         code: null, //编码
-        operatorKeyword: null //操作人
+        operatorKeyword: null, //操作人
+        subjectId: null, //声部
       },
       dataList: [] as any,
+      subjectList: [] as any,
       showSave: false,
       saveMode: 'add',
       rowData: {}
@@ -109,13 +91,6 @@ export default defineComponent({
           key: 'subjectName'
         },
         {
-          title: '默认谱面',
-          key: 'defaultScore',
-          render(row: any) {
-            return getMapValueByKey(row.defaultScore, new Map(Object.entries(defaultScore)))
-          }
-        },
-        {
           title: '操作人',
           key: 'operator',
           render(row: any) {
@@ -189,7 +164,19 @@ export default defineComponent({
       }
     }
 
-    onMounted(() => {
+    onMounted(async() => {
+
+      try {
+        const {data} = await subjectPage({page: 1, rows: 1000})
+        let subject = data?.rows || []
+        subject.forEach((row:any) => {
+          state.subjectList.push({
+            value: row.id,
+            label: row.name
+          })
+        })
+      } catch (e) {
+      }
       getList()
     })
     return () => (
@@ -208,14 +195,6 @@ export default defineComponent({
                 clearable
               />
             </NFormItem>
-            <NFormItem path="defaultScore" label="默认谱面">
-              <NSelect
-                options={getSelectDataFromObj(defaultScore)}
-                v-model:value={state.searchForm.defaultScore}
-                placeholder="请选择默认谱面"
-                clearable
-              />
-            </NFormItem>
             <NFormItem path="code" label="乐器编码">
               <NInput
                 v-model:value={state.searchForm.code}
@@ -223,6 +202,15 @@ export default defineComponent({
                 clearable
               />
             </NFormItem>
+            <NFormItem label="声部" path="subjectId">
+              <NSelect
+                  placeholder="请选择声部"
+                  v-model:value={state.searchForm.subjectId}
+                  options={state.subjectList}
+                  clearable
+                  filterable
+              />
+            </NFormItem>
             <NFormItem path="operatorName" label="操作人">
               <NInput
                 v-model:value={state.searchForm.operatorKeyword}

+ 0 - 63
src/views/system-manage/subject-manage/instrument/modal/instrument-save.tsx

@@ -1,7 +1,5 @@
 import { NButton, NForm, NFormItem, NInput, NSelect, NSpace, useMessage } from 'naive-ui'
 import { defineComponent, onMounted, PropType, reactive, ref } from 'vue'
-import { getSelectDataFromObj } from '@/utils/objectUtil'
-import { defaultScore } from '@/utils/constant'
 import {
   musicalInstrumentSave,
   musicalInstrumentUpdate
@@ -25,9 +23,7 @@ export default defineComponent({
   setup(props, { slots, attrs, emit }) {
     const forms = reactive({
       name: null,
-      defaultScore: null as any,
       code: null as any,
-      transferFlag: true,
       img: null as any,
       media: null as any
     })
@@ -48,13 +44,11 @@ export default defineComponent({
           if (props.type === 'add') {
             await musicalInstrumentSave({
               ...forms,
-              defaultScore: forms.transferFlag ? forms.defaultScore : 'STAVE'
             })
             message.success('添加成功')
           } else if (props.type === 'edit') {
             await musicalInstrumentUpdate({
               ...forms,
-              defaultScore: forms.transferFlag ? forms.defaultScore : 'STAVE',
               id: props.data.id
             })
             message.success('修改成功')
@@ -71,9 +65,7 @@ export default defineComponent({
       if (props.type === 'edit') {
         const data = props.data
         forms.name = data.name
-        forms.defaultScore = data.defaultScore
         forms.code = data.code
-        forms.transferFlag = data.transferFlag
         forms.img = data.img
         forms.media = data.media
       }
@@ -101,61 +93,6 @@ export default defineComponent({
             ></NInput>
           </NFormItem>
           <NFormItem
-            label="支持转简谱"
-            path="transferFlag"
-            rule={[
-              {
-                required: true,
-                message: '请选择是否支持转简谱',
-                trigger: ['input', 'blur'],
-                type: 'boolean'
-              }
-            ]}
-          >
-            <NSelect
-              v-model:value={forms.transferFlag}
-              options={
-                [
-                  {
-                    label: '是',
-                    value: true
-                  },
-                  {
-                    label: '否',
-                    value: false
-                  }
-                ] as any
-              }
-              placeholder="请选择是否支持转简谱"
-              onUpdateValue={async (value: any) => {
-                if (!value) {
-                  //如果不支持,修改默认谱面
-                  forms.defaultScore = 'STAVE'
-                }
-              }}
-              clearable
-            ></NSelect>
-          </NFormItem>
-          {forms.transferFlag && (
-            <NFormItem
-              label="默认谱面"
-              path="defaultScore"
-              rule={[
-                {
-                  required: true,
-                  message: '请选择默认谱面'
-                }
-              ]}
-            >
-              <NSelect
-                clearable
-                v-model:value={forms.defaultScore}
-                placeholder="请选择默认谱面"
-                options={getSelectDataFromObj(defaultScore)}
-              />
-            </NFormItem>
-          )}
-          <NFormItem
             label="乐器编码"
             path="code"
             rule={[

+ 1 - 1
vite.config.ts

@@ -21,7 +21,7 @@ function pathResolve(dir: string) {
 // const proxyUrl = 'https://dev.lexiaoya.cn'
 // const proxyUrl = 'http://127.0.0.1:7293/'
 // const proxyUrl = 'https://resource.colexiu.com/'
-const proxyUrl = 'https://test.resource.colexiu.com'
+const proxyUrl = 'https://dev.resource.colexiu.com'
 // https://test.resource.colexiu.com/
 
 export default ({ command, mode }: ConfigEnv): UserConfig => {