Browse Source

问题修改

zouxuan 1 year ago
parent
commit
d45264d1b7

+ 2 - 0
src/views/music-library/music-sheet/modal/save-categroy-dialog.tsx

@@ -31,6 +31,7 @@ export default defineComponent({
         if (errors) {
           return;
         }
+        state.btnLoading = true
         try {
           if(props.saveMode==='add'){
             const {data} = await musicSheetCategoriesSave({...forms})
@@ -43,6 +44,7 @@ export default defineComponent({
           }
         } catch (error) {
         }
+        state.btnLoading = false
       })
     }
 

+ 139 - 15
src/views/music-library/music-sheet/modal/use-project.tsx

@@ -1,4 +1,4 @@
-import {defineComponent, onMounted, reactive, ref} from 'vue'
+import {computed, defineComponent, onMounted, reactive, ref} from 'vue'
 import styles from "@views/music-library/music-sheet/modal/index.module.less";
 import {NButton, NCascader, NCheckbox, NCheckboxGroup, NForm, NFormItem, NInputNumber, NSelect, NSpace, NTabPane, NTabs, useMessage} from "naive-ui";
 import {appKey, musicSheetAvailableType, musicSheetPaymentType} from "@/utils/constant";
@@ -50,6 +50,60 @@ export default defineComponent({
         },
       } as any,
     })
+
+    // 除了排序号,其他字段有一个有值,其他字段都必填
+    const gymFileRequire = computed(() => {
+          const app = forms.useProjectParamConfig.GYM
+          const fieldList = ['musicSheetCategoryId', 'paymentType']
+          for (let i = 0; i < fieldList.length; i++) {
+            const fieldValue = app[fieldList[i]]
+            if (fieldValue) {
+              return true
+            }
+          }
+          return false;
+        }
+    )
+
+    const klxFileRequire = computed(() => {
+          const app = forms.useProjectParamConfig['KLX']
+          const fieldList = ['availableType', 'musicSheetCategoryId', 'paymentType', 'musicPrice', 'topFlag', 'exquisiteFlag']
+          for (let i = 0; i < fieldList.length; i++) {
+            const fieldValue = app[fieldList[i]]
+            if (fieldValue) {
+              return true
+            }
+          }
+          return false;
+        }
+    )
+
+    const ktFileRequire = computed(() => {
+          const app = forms.useProjectParamConfig['KT']
+          const fieldList = ['musicSheetCategoryId']
+          for (let i = 0; i < fieldList.length; i++) {
+            const fieldValue = app[fieldList[i]]
+            if (fieldValue) {
+              return true
+            }
+          }
+          return false;
+        }
+    )
+
+    const gytFileRequire = computed(() => {
+          const app = forms.useProjectParamConfig['GYT']
+          const fieldList = ['musicSheetCategoryId']
+          for (let i = 0; i < fieldList.length; i++) {
+            const fieldValue = app[fieldList[i]]
+            if (fieldValue) {
+              return true
+            }
+          }
+          return false;
+        }
+    )
+
     const state = reactive({
       loading: false,
       musicSheetData: null as any,
@@ -62,9 +116,6 @@ export default defineComponent({
 
       musicSheetCanBeUsedProjectKey: [] as any, //  曲目可以使用在哪些项目,通过声部配置过滤
 
-      ktFieldRequired: false,
-
-
     })
 
     const btnLoading = ref(false)
@@ -155,8 +206,15 @@ export default defineComponent({
     const onSubmit = async () => {
       formsRef.value.validate(async (error: any) => {
         if (error) {
+          if (Array.isArray(error) && error.length > 0) {
+            const app = error[0][0].field?.split('.')[1];
+            if (app && state.selectAppKey.includes(app)) {
+              state.tabName = app
+            }
+          }
           return
         }
+        btnLoading.value = true
         try {
           const appKeyIdMap = new Map<string, string>;
           props.useProject.forEach((project: any) => {
@@ -186,7 +244,6 @@ export default defineComponent({
             'useApplicationIds': forms.useApplicationIds.join(','),
             'applicationExtends': applicationExtends
           }
-          btnLoading.value = true
           await musicSheetApplicationExtendSave(params)
           message.success('修改成功')
           emit('getList')
@@ -241,7 +298,7 @@ export default defineComponent({
               >
                 {state.userProjectList.map((item: any) => (
                     <NCheckbox value={item.value}>{item.label}</NCheckbox>
-                  // <NCheckbox value={item.value} disabled={item.disabled}>{item.label}</NCheckbox>
+                    // <NCheckbox value={item.value} disabled={item.disabled}>{item.label}</NCheckbox>
                 ))
                 }
               </NCheckboxGroup>
@@ -250,6 +307,7 @@ export default defineComponent({
                 <NTabs
                     type="line"
                     v-model:value={state.tabName}
+
                     onUpdate:value={(val: any) => {
                       state.tabName = val
                     }}
@@ -258,12 +316,19 @@ export default defineComponent({
                     return <NTabPane
                         tab={state.appKeyNameMap.get(item)}
                         name={item}
+                        displayDirective={"show"}
                     >
                       {item === 'GYM' &&
                           <div>
                               <NFormItem
                                   label="曲目分类"
-                                  path="forms.useProjectParamConfig.GYM.musicSheetCategoryId"
+                                  path="useProjectParamConfig.GYM.musicSheetCategoryId"
+                                  rule={[
+                                    {
+                                      required: gymFileRequire.value,
+                                      message: '请选择曲目分类',
+                                    }
+                                  ]}
                               >
                                   <NCascader
                                       valueField="id"
@@ -272,12 +337,21 @@ export default defineComponent({
                                       placeholder="请选择分类"
                                       v-model:value={forms.useProjectParamConfig.GYM.musicSheetCategoryId}
                                       options={state.musicSheetCategoryOptions.GYM}
+                                      onChange={() => {
+
+                                      }}
                                       clearable
                                   />
                               </NFormItem>
                               <NFormItem
                                   label="是否收费"
-                                  path="forms.useProjectParamConfig.GYM.paymentType"
+                                  path="useProjectParamConfig.GYM.paymentType"
+                                  rule={[
+                                    {
+                                      required: gymFileRequire.value,
+                                      message: '请选择是否收费',
+                                    }
+                                  ]}
                               >
                                   <NSelect
                                       clearable
@@ -306,6 +380,12 @@ export default defineComponent({
                               <NFormItem
                                   label="分类"
                                   path="useProjectParamConfig.GYT.musicSheetCategoryId"
+                                  rule={[
+                                    {
+                                      required: gytFileRequire.value,
+                                      message: '请选择分类',
+                                    }
+                                  ]}
                               >
                                   <NCascader
                                       valueField="id"
@@ -336,27 +416,50 @@ export default defineComponent({
                           <div>
                               <NFormItem
                                   label="可用途径"
-                                  path="musicSheetType"
+                                  path="useProjectParamConfig.KLX.availableType"
+                                  rule={[
+                                    {
+                                      required: klxFileRequire.value,
+                                      message: '请选择可用途径',
+                                    }
+                                  ]}
                               >
                                   <NSelect
                                       clearable
+                                      v-model:value={forms.useProjectParamConfig.KLX.availableType}
                                       options={getSelectDataFromObj(musicSheetAvailableType)}
                                   >
                                   </NSelect>
                               </NFormItem>
                               <NFormItem
                                   label="曲目标签"
-                                  path="musicSheetType"
+                                  path="useProjectParamConfig.KLX.musicSheetCategoryId"
+                                  rule={[
+                                    {
+                                      required: klxFileRequire.value,
+                                      message: '请选择曲目标签',
+                                    }
+                                  ]}
                               >
                                   <NSelect>
+                                      clearable
+                                      v-model:value={forms.useProjectParamConfig.KLX.musicSheetCategoryId}
+                                      options={[]}
                                   </NSelect>
                               </NFormItem>
                               <NFormItem
                                   label="是否收费"
                                   path="useProjectParamConfig.KLX.paymentType"
+                                  rule={[
+                                    {
+                                      required: klxFileRequire.value,
+                                      message: '请选择是否收费',
+                                    }
+                                  ]}
                               >
                                   <NSelect
                                       clearable
+                                      v-model:value={forms.useProjectParamConfig.KLX.paymentType}
                                       options={[
                                         {
                                           label: '是',
@@ -373,17 +476,31 @@ export default defineComponent({
                               <NFormItem
                                   label="曲目价格"
                                   path="useProjectParamConfig.KLX.musicPrice"
+                                  rule={[
+                                    {
+                                      required: klxFileRequire.value,
+                                      message: '请输入曲目价格',
+                                    }
+                                  ]}
                               >
-                                  <NInputNumber style={"width:100%"}>
-
-                                  </NInputNumber>
+                                  <NInputNumber style={"width:100%"}
+                                                placeholder="请输入速度"
+                                                v-model:value={forms.useProjectParamConfig.KLX.musicPrice}
+                                  />
                               </NFormItem>
                               <NFormItem
                                   label="是否置顶"
-                                  path="musicSheetType"
+                                  path="useProjectParamConfig.KLX.musicSheetType"
+                                  rule={[
+                                    {
+                                      required: klxFileRequire.value,
+                                      message: '请选择曲目分类',
+                                    }
+                                  ]}
                               >
                                   <NSelect
                                       clearable
+                                      v-model:value={forms.useProjectParamConfig.KLX.topFlag}
                                       options={[
                                         {
                                           label: '是',
@@ -400,9 +517,16 @@ export default defineComponent({
                               <NFormItem
                                   label="精品乐谱"
                                   path="useProjectParamConfig.KLX.exquisiteFlag"
+                                  rule={[
+                                    {
+                                      required: klxFileRequire.value,
+                                      message: '请选择曲目分类',
+                                    }
+                                  ]}
                               >
                                   <NSelect
                                       clearable
+                                      v-model:value={forms.useProjectParamConfig.KLX.exquisiteFlag}
                                       options={[
                                         {
                                           label: '是',
@@ -438,7 +562,7 @@ export default defineComponent({
                                   path="useProjectParamConfig.KT.musicSheetCategoryId"
                                   rule={[
                                     {
-                                      required: state.ktFieldRequired,
+                                      required: ktFileRequire.value,
                                       message: '请选择曲目分类'
                                     }
                                   ]}

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

@@ -258,7 +258,7 @@ export default defineComponent({
         },
         {
           title: '可用声部',
-          key: 'subjectIdNames'
+          key: 'subjectNames'
         },
         {
           title: '曲目分类',

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

@@ -258,7 +258,7 @@ export default defineComponent({
         },
         {
           title: '可用声部',
-          key: 'subjectIdNames'
+          key: 'subjectNames'
         },
         {
           title: '曲目分类',

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

@@ -242,7 +242,7 @@ export default defineComponent({
         },
         {
           title: '可用声部',
-          key: 'subjectIdNames'
+          key: 'subjectNames'
         },
         {
           title: '标签',