|
@@ -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: '请选择曲目分类'
|
|
|
}
|
|
|
]}
|