| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794 |
- import { appKey, musicSheetAvailableType, musicSheetPaymentType, musicSheetSourceType, musicSheetType, scoreType } from '@/utils/constant'
- 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'
- export default defineComponent({
- name: 'music-platform',
- props: {
- type: {
- type: String,
- default: ''
- },
- useProject: {
- type: Array,
- required: true,
- default: []
- },
- id: {
- type: String,
- required: true,
- default: null
- }
- },
- emits: ['close', 'getList'],
- setup(props, { emit }) {
- // 'KT' | 'GYT' | 'KLX' | 'GYM' | 'KLXT'
- const message = useMessage()
- const forms = reactive({
- gym: {
- applicationId: '',
- checked: true,
-
- paymentType: 'VIP',
- isConvertibleScore: false,
- scoreType: 'STAVE',
- status: true,
- sortNo: null
- },
- gyt: {
- applicationId: '',
- checked: true,
- availableType: 'PLATFORM',
- isConvertibleScore: false,
- scoreType: 'STAVE',
- status: true,
- sortNo: null
- },
- klxt: {
- applicationId: '',
- checked: true,
- isConvertibleScore: false,
- scoreType: 'STAVE',
- status: true,
- sortNo: null
- },
- klx: {
- applicationId: '',
- checked: true,
- musicTagIds: [] as any, // 标签
- paymentType: ['VIP'] as any, // 收费方式
- musicPrice: null as any, // 曲目价格
- availableType: 'PLATFORM',
- topFlag: false,
- exquisiteFlag: false,
- isConvertibleScore: true,
- scoreType: 'FIRST',
- status: true,
- sortNo: null
- },
- kt: {
- applicationId: '',
- checked: true,
- musicSheetCategoryId: null, // 乐谱教材
- paymentType: 'VIP',
- isConvertibleScore: true,
- scoreType: 'FIRST',
- status: true,
- sortNo: null,
- musicTagIds: [] as any, // 标签
- recommendFlag: false,
- }
- })
- // 类型是否支持
- const useProjectStatus = computed(() => {
- return {
- GYM: checkHasProject('GYM'),
- KLX_JG: checkHasProject("KLX_JG"),
- KLX: checkHasProject("KLX"),
- KT: checkHasProject("KT"),
- GYT: checkHasProject("GYT")
- }
- })
- const formsRef = ref()
- const dataLoading = ref(false)
- const musicSheetTagList = ref<any[]>([])
- const musicSheetTagListKt = ref<any[]>([])
- const musicSheetCategories = ref<any[]>([])
- const btnLoading = ref(false)
- // 检测是否存在
- const checkHasProject = (name: string) => {
- const useProject = props.useProject || []
- return useProject.findIndex((item: any) => item.appKey === name) !== -1 ? true : false
- }
- /** 检测数据 */
- const checkSubmitForms = () => {
- let status = false
- const gym = forms.gym
- if(gym.checked) {
- if(!gym.paymentType) {
- message.error('请选择收费方式')
- return true
- }
- console.log(gym.isConvertibleScore, 'gym.isConvertibleScore')
- if(gym.isConvertibleScore == null) {
- message.error('请选择是否支持转谱')
- return true
- }
- if(!gym.scoreType) {
- message.error('请选择默认谱面')
- return true
- }
- if(gym.status == null) {
- message.error('请选择是否启用')
- return true
- }
- }
- const gyt = forms.gyt
- if(gyt.checked) {
- if(!gyt.availableType) {
- message.error('请选择可用途径')
- return true
- }
- if(gyt.isConvertibleScore == null) {
- message.error('请选择是否支持转谱')
- return true
- }
- if(!gyt.scoreType) {
- message.error('请选择默认谱面')
- return true
- }
- if(gyt.status == null) {
- message.error('请选择是否启用')
- return true
- }
- }
- const klxt = forms.klxt
- if(klxt.checked) {
- if(klxt.isConvertibleScore == null) {
- message.error('请选择是否支持转谱')
- return true
- }
- if(!klxt.scoreType) {
- message.error('请选择默认谱面')
- return true
- }
- if(klxt.status == null) {
- message.error('请选择是否启用')
- return true
- }
- }
- const klx = forms.klx
- if(klx.checked) {
- if(klx.musicTagIds.length <= 0) {
- message.error('请选择曲目标签')
- return true
- }
- if(!klx.paymentType || klx.paymentType.length <= 0) {
- message.error('请选择收费方式')
- return true
- }
- if (!klx.paymentType.includes('CHARGE')) {
- klx.musicPrice = 0
- } else {
- if (klx.musicPrice === null || klx.musicPrice === undefined || klx.musicPrice === '') {
- message.error('曲目价格不能为空')
- return true
- }
- }
-
- // if(klx.availableType == null) {
- // message.error('请选择可用途径')
- // return true
- // }
- if (typeof klx.topFlag !== 'boolean') {
- message.error('请选择是否置顶')
- return true
- }
- if (typeof klx.exquisiteFlag !== 'boolean') {
- message.error('请选择是否精品')
- return true
- }
- if(klx.isConvertibleScore == null) {
- message.error('请选择是否支持转谱')
- return true
- }
- if(!klx.scoreType) {
- message.error('请选择默认谱面')
- return true
- }
- if(klx.status == null) {
- message.error('请选择是否启用')
- return true
- }
- }
- const kt = forms.kt
- if(kt.checked) {
- if(!kt.musicSheetCategoryId) {
- message.error('请选择乐谱教材')
- return true
- }
- if(!kt.paymentType) {
- message.error('请选择收费方式')
- return true
- }
- if(kt.isConvertibleScore == null) {
- message.error('请选择是否支持转谱')
- return true
- }
- if(!kt.scoreType) {
- message.error('请选择默认谱面')
- return true
- }
- if(kt.status == null) {
- message.error('请选择是否启用')
- return true
- }
- if(kt.musicTagIds.length <= 0) {
- message.error('请选择曲目标签')
- return true
- }
- if(kt.recommendFlag == null) {
- message.error('请选择是否推荐')
- return true
- }
- }
- return status
- }
- /** 获取参数 */
- const getSubmitParams = () => {
- const params: any = []
- const useApplicationIds: any = []
- if(forms.gym.checked) {
- params.push({
- ...forms.gym
- })
- useApplicationIds.push(forms.gym.applicationId)
- }
- if(forms.gyt.checked) {
- params.push({
- ...forms.gyt
- })
- useApplicationIds.push(forms.gyt.applicationId)
- }
- if(forms.klxt.checked) {
- params.push({
- ...forms.klxt
- })
- useApplicationIds.push(forms.klxt.applicationId)
- }
- if(forms.klx.checked) {
- params.push({
- ...forms.klx,
- musicTagIds: forms.klx.musicTagIds.join(','),
- paymentType: forms.klx.paymentType.join(',')
- })
- useApplicationIds.push(forms.klx.applicationId)
- }
- if(forms.kt.checked) {
- params.push({
- ...forms.kt,
- musicTagIds: forms.kt.musicTagIds.join(','),
- })
- useApplicationIds.push(forms.kt.applicationId)
- }
- return {
- musicSheetId: props.id,
- applicationExtends: params || {},
- useApplicationIds: useApplicationIds.join(',') || ''
- }
- }
- // 提交数据
- const onSubmit = async () => {
- try {
- if(checkSubmitForms()) return
- btnLoading.value = true
- const params = getSubmitParams()
- await musicSheetApplicationExtendSave(params)
- message.success('保存成功')
- emit('close')
- emit('getList')
- } catch {}
- btnLoading.value = false
- }
- /** 酷乐秀 加载曲目标签 */
- const getMusicTags = async () => {
- try {
- const useProject = props.useProject || []
- const item: any = useProject.find((item: any) => item.appKey === 'KLX')
- if(!item) return
- const { data } = await musicSheetApplicationExtendTagList({
- applicationId: item.id
- })
- if (data && data.length > 0) {
- data.forEach((item: any) => {
- musicSheetTagList.value.push({
- ...item,
- label: item.name,
- value: item.id
- })
- })
- }
- } catch (err) {}
- }
- /** 课堂乐器 加载曲目标签 */
- const getMusicTagsKt = async () => {
- try {
- const useProject = props.useProject || []
- const item: any = useProject.find((item: any) => item.appKey === 'KT')
- if(!item) return
- const { data } = await musicSheetApplicationExtendTagList({
- applicationId: item.id
- })
- if (data && data.length > 0) {
- data.forEach((item: any) => {
- musicSheetTagListKt.value.push({
- ...item,
- label: item.name,
- value: item.id
- })
- })
- }
- } catch (err) {}
- }
- /** 课堂乐器 乐谱教材 */
- const getMusicSheetCategories = async () => {
- //加载曲目分类列表
- const useProject = props.useProject || []
- const item: any = useProject.find((item: any) => item.appKey === 'KT')
- if(!item) return
- const categoryRes = await musicSheetApplicationExtendCategoryList({
- applicationIds: item.id
- })
- if (categoryRes.data && categoryRes.data.length > 0) {
- musicSheetCategories.value = categoryRes.data[0].musicSheetCategories
- }
- }
- const getDetail = async () => {
- try {
- // 加载已经配置的APP
- const { data } = await musicSheetApplicationExtendCategoryApplicationExtendInfo({ musicSheetId: props.id })
- const result = data || []
- result.forEach((item: any) => {
- if(item.appKey === 'GYM') {
- forms.gym.checked = true;
- forms.gym.paymentType = item.paymentType
- forms.gym.isConvertibleScore = item.isConvertibleScore
- forms.gym.scoreType = item.scoreType
- forms.gym.status = item.status
- forms.gym.sortNo = item.sortNo
- } else if(item.appKey === 'GYT') {
- forms.gyt.checked = true
- forms.gyt.availableType = item.availableType
- forms.gyt.isConvertibleScore = item.isConvertibleScore
- forms.gyt.scoreType = item.scoreType
- forms.gyt.status = item.status
- forms.gyt.sortNo = item.sortNo
- } else if(item.appKey === 'KLX_JG') {
- forms.klxt.checked = true
- forms.klxt.isConvertibleScore = item.isConvertibleScore
- forms.klxt.scoreType = item.scoreType
- forms.klxt.status = item.status
- forms.klxt.sortNo = item.sortNo
- } else if(item.appKey === 'KLX') {
- forms.klx.checked = true
- forms.klx.musicTagIds = item.musicTagIds ? item.musicTagIds.split(',') : [] // 标签
- forms.klx.paymentType = item.paymentType ? item.paymentType.split(',') : [] // 收费方式
- forms.klx.musicPrice = item.musicPrice // 曲目价格
- forms.klx.availableType = item.availableType
- forms.klx.topFlag = item.topFlag
- forms.klx.exquisiteFlag = item.exquisiteFlag
- forms.klx.isConvertibleScore = item.isConvertibleScore
- forms.klx.scoreType = item.scoreType
- forms.klx.status = item.status
- forms.klx.sortNo = item.sortNo
- } else if(item.appKey === 'KT') {
- forms.kt.checked = true
- forms.kt.musicSheetCategoryId = item.musicSheetCategoryId // 乐谱教材
- forms.kt.paymentType = item.paymentType
- forms.kt.isConvertibleScore = item.isConvertibleScore
- forms.kt.scoreType = item.scoreType
- forms.kt.status = item.status
- forms.kt.sortNo = item.sortNo
- forms.kt.musicTagIds = item.musicTagIds ? item.musicTagIds.split(',') : [] // 标签
- forms.kt.recommendFlag = item.recommendFlag
- }
- })
- } catch {
- }
- }
- onMounted(async () => {
- dataLoading.value = true
- if(props.type !== 'add') {
- // 默认重置为false
- forms.gym.checked = false
- forms.gyt.checked = false
- forms.klxt.checked = false
- forms.klx.checked = false
- forms.kt.checked = false
- }
- // 初始话应用编号
- const useProject = props.useProject || []
- useProject.forEach((item: any) => {
- if(item.appKey === 'GYM') {
- forms.gym.applicationId = item.id
- } else if(item.appKey === 'KLX_JG') {
- forms.klxt.applicationId = item.id
- } else if(item.appKey === 'KLX') {
- forms.klx.applicationId = item.id
- } else if(item.appKey === 'KT') {
- forms.kt.applicationId = item.id
- } else if(item.appKey === 'GYT') {
- forms.gyt.applicationId = item.id
- }
- })
- await getMusicTags()
- await getMusicTagsKt()
- await getMusicSheetCategories()
- await getDetail()
- dataLoading.value = false
- })
-
- return () => <NSpin show={dataLoading.value}>
- <NForm
- model={forms}
- ref={formsRef}
- label-placement="top"
- label-width="85"
- >
- {useProjectStatus.value.GYM && <NGrid cols={8} xGap={12} style={{ marginBottom: '12px' }}>
- <NGi span={1} style={{ display: 'flex', alignItems: 'center' }}>
- <NCheckbox v-model:checked={forms.gym.checked}>管乐迷</NCheckbox>
- </NGi>
- <NGi span={7} style={{ background: '#f9f9f9', padding: '20px 16px 0', borderRadius: '8px' }}>
- <NGrid cols={6} xGap={12}>
- <NGi>
- <NFormItem label='收费方式' path="paymentType" required>
- <NSelect v-model:value={forms.gym.paymentType} clearable options={[
- { label: '免费', value: 'FREE' },
- { label: '收费', value: 'VIP' }]} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='是否支持转谱' path="isConvertibleScore" required>
- <NSelect v-model:value={forms.gym.isConvertibleScore} clearable options={[
- { label: '是', value: true },
- { label: '否', value: false }
- ] as any} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='默认谱面' path="scoreType" required>
- <NSelect v-model:value={forms.gym.scoreType} options={getSelectDataFromObj(scoreType)} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='是否启用' path="status" required>
- <NSelect v-model:value={forms.gym.status} options={[
- { label: '是', value: true },
- { label: '否', value: false }
- ] as any} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='排序' path="sortNo">
- <NInputNumber precision={0} min={0} max={999999999} v-model:value={forms.gym.sortNo} showButton={false} />
- </NFormItem>
- </NGi>
- </NGrid>
- </NGi>
- </NGrid>}
- {useProjectStatus.value.GYT && <NGrid cols={8} xGap={12} style={{ marginBottom: '12px' }}>
- <NGi span={1} style={{ display: 'flex', alignItems: 'center' }}>
- <NCheckbox v-model:checked={forms.gyt.checked}>管乐团</NCheckbox>
- </NGi>
- <NGi span={7} style={{ background: '#f9f9f9', padding: '20px 16px 0', borderRadius: '8px' }}>
- <NGrid cols={6} xGap={12}>
- <NGi>
- <NFormItem label='可用途径' path="availableType" required>
- <NSelect v-model:value={forms.gyt.availableType} clearable options={[
- {
- label: '学校',
- value: 'ORG'
- },
- {
- label: '平台',
- value: 'PLATFORM'
- }
- ]} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='是否支持转谱' path="isConvertibleScore" required>
- <NSelect v-model:value={forms.gyt.isConvertibleScore} clearable options={[
- { label: '是', value: true },
- { label: '否', value: false }
- ] as any} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='默认谱面' path="scoreType" required>
- <NSelect v-model:value={forms.gyt.scoreType} options={getSelectDataFromObj(scoreType)} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='是否启用' path="status" required>
- <NSelect v-model:value={forms.gyt.status} options={[
- { label: '是', value: true },
- { label: '否', value: false }
- ] as any} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='排序' path="sortNo">
- <NInputNumber precision={0} min={0} max={999999999} v-model:value={forms.gyt.sortNo} showButton={false} />
- </NFormItem>
- </NGi>
- </NGrid>
- </NGi>
- </NGrid>}
- {useProjectStatus.value.KLX_JG && <NGrid cols={8} xGap={12} style={{ marginBottom: '12px' }}>
- <NGi span={1} style={{ display: 'flex', alignItems: 'center' }}>
- <NCheckbox v-model:checked={forms.klxt.checked}>酷乐秀机构</NCheckbox>
- </NGi>
- <NGi span={7} style={{ background: '#f9f9f9', padding: '20px 16px 0', borderRadius: '8px' }}>
- <NGrid cols={6} xGap={12}>
- <NGi>
- <NFormItem label='是否支持转谱' path="isConvertibleScore" required>
- <NSelect v-model:value={forms.klxt.isConvertibleScore} clearable options={[
- { label: '是', value: true },
- { label: '否', value: false }
- ] as any} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='默认谱面' path="scoreType" required>
- <NSelect v-model:value={forms.klxt.scoreType} options={getSelectDataFromObj(scoreType)} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='是否启用' path="status" required>
- <NSelect v-model:value={forms.klxt.status} options={[
- { label: '是', value: true },
- { label: '否', value: false }
- ] as any} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='排序' path="sortNo">
- <NInputNumber precision={0} min={0} max={999999999} v-model:value={forms.klxt.sortNo} showButton={false} />
- </NFormItem>
- </NGi>
- </NGrid>
- </NGi>
- </NGrid>}
- {useProjectStatus.value.KLX && <NGrid cols={8} xGap={12} style={{ marginBottom: '12px' }}>
- <NGi span={1} style={{ display: 'flex', alignItems: 'center' }}>
- <NCheckbox v-model:checked={forms.klx.checked}>酷乐秀平台</NCheckbox>
- </NGi>
- <NGi span={7} style={{ background: '#f9f9f9', padding: '20px 16px 0', borderRadius: '8px' }}>
- <NGrid cols={6} xGap={12}>
- <NGi>
- <NFormItem label='曲目标签' required>
- <NSelect v-model:value={forms.klx.musicTagIds} multiple maxTagCount={1} clearable options={musicSheetTagList.value} onUpdate:value={() => {
- musicSheetTagList.value.forEach((item: any) => {
- if(forms.klx.musicTagIds?.length >= 3) {
- if(forms.klx.musicTagIds?.includes(item.id)) {
- item.disabled = false
- } else {
- item.disabled = true
- }
- } else {
- item.disabled = false
- }
- })
- }} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='收费方式' path="paymentType" required>
- <NSelect v-model:value={forms.klx.paymentType} multiple maxTagCount={1} clearable options={getSelectDataFromObj(musicSheetPaymentType)}
- onUpdate:value={(v: any) => {
- forms.klx.paymentType = v
- const free = 'FREE'
- if (forms.klx.paymentType[forms.klx.paymentType.length - 1] == free) {
- forms.klx.paymentType = [free]
- } else if (forms.klx.paymentType.length > 1 && forms.klx.paymentType.includes(free)) {
- forms.klx.paymentType.splice(forms.klx.paymentType.indexOf(free), 1)
- }
- if (!forms.klx.paymentType.includes('CHARGE')) {
- forms.klx.musicPrice = 0
- }
- }} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='曲目价格' path="musicPrice" required>
- <NInputNumber disabled={!forms.klx.paymentType?.includes('CHARGE')} precision={2 } min={0} max={9999} v-model:value={forms.klx.musicPrice} showButton={false} />
- </NFormItem>
- </NGi>
- {/* <NGi>
- <NFormItem label='可用途径' path="availableType">
- <NSelect v-model:value={forms.klx.availableType} clearable options={getSelectDataFromObj(musicSheetAvailableType)} />
- </NFormItem>
- </NGi> */}
- <NGi>
- <NFormItem label='是否置顶' path="topFlag" required>
- <NSelect v-model:value={forms.klx.topFlag} clearable options={[
- { label: '是', value: true },
- { label: '否', value: false }
- ] as any} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='是否精品' path="exquisiteFlag" required>
- <NSelect v-model:value={forms.klx.exquisiteFlag} clearable options={[
- { label: '是', value: true },
- { label: '否', value: false }
- ] as any} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='是否支持转谱' path="isConvertibleScore" required>
- <NSelect v-model:value={forms.klx.isConvertibleScore} clearable options={[
- { label: '是', value: true },
- { label: '否', value: false }
- ] as any} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='默认谱面' path="scoreType" required>
- <NSelect v-model:value={forms.klx.scoreType} options={getSelectDataFromObj(scoreType)} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='是否启用' path="status" required>
- <NSelect v-model:value={forms.klx.status} options={[
- { label: '是', value: true },
- { label: '否', value: false }
- ] as any} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='排序' path="sortNo">
- <NInputNumber precision={0} min={0} max={999999999} v-model:value={forms.klx.sortNo} showButton={false} />
- </NFormItem>
- </NGi>
- </NGrid>
- </NGi>
- </NGrid>}
- {useProjectStatus.value.KT && <NGrid cols={8} xGap={12} style={{ marginBottom: '12px' }}>
- <NGi span={1} style={{ display: 'flex', alignItems: 'center' }}>
- <NCheckbox v-model:checked={forms.kt.checked}>音乐数字课堂</NCheckbox>
- </NGi>
- <NGi span={7} style={{ background: '#f9f9f9', padding: '20px 16px 0', borderRadius: '8px' }}>
- <NGrid cols={6} xGap={12}>
- <NGi>
- <NFormItem label='乐谱教材' path="musicSheetCategoryId" required>
- <NSelect filterable v-model:value={forms.kt.musicSheetCategoryId} clearable options={musicSheetCategories.value} labelField='name' valueField='id' />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='收费方式' path="paymentType" required>
- <NSelect v-model:value={forms.kt.paymentType} clearable options={[
- { label: '免费', value: 'FREE' },
- { label: '会员', value: 'VIP' }]} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='是否支持转谱' path="isConvertibleScore" required>
- <NSelect v-model:value={forms.kt.isConvertibleScore} clearable options={[
- { label: '是', value: true },
- { label: '否', value: false }
- ] as any} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='默认谱面' path="scoreType" required>
- <NSelect v-model:value={forms.kt.scoreType} options={getSelectDataFromObj(scoreType)} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='是否启用' path="status" required>
- <NSelect v-model:value={forms.kt.status} options={[
- { label: '是', value: true },
- { label: '否', value: false }
- ] as any} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='排序' path="sortNo">
- <NInputNumber precision={0} min={0} max={999999999} v-model:value={forms.kt.sortNo} showButton={false} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='曲目标签' required>
- <NSelect v-model:value={forms.kt.musicTagIds} multiple maxTagCount={1} clearable options={musicSheetTagListKt.value}
- onUpdate:show={(value: any) => {
- musicSheetTagListKt.value.forEach((item: any) => {
- if(forms.kt.musicTagIds.length >= 3) {
- if(forms.kt.musicTagIds?.includes(item.id)) {
- item.disabled = false
- } else {
- item.disabled = true
- }
- } else {
- item.disabled = false
- }
- })
- }}
- onUpdate:value={() => {
- musicSheetTagListKt.value.forEach((item: any) => {
- if(forms.kt.musicTagIds.length >= 3) {
- if(forms.kt.musicTagIds?.includes(item.id)) {
- item.disabled = false
- } else {
- item.disabled = true
- }
- } else {
- item.disabled = false
- }
- })
- }} />
- </NFormItem>
- </NGi>
- <NGi>
- <NFormItem label='是否推荐' required>
- <NSelect v-model:value={forms.kt.recommendFlag} clearable options={[
- { label: '是', value: true },
- { label: '否', value: false }
- ] as any} />
- </NFormItem>
- </NGi>
- </NGrid>
- </NGi>
- </NGrid>}
- <NSpace justify="end" style={'margin-top: 10px'}>
- <NButton type="default" onClick={() => emit('close', true)}>
- 取消
- </NButton>
- <NButton
- type="primary"
- onClick={() => onSubmit()}
- loading={btnLoading.value}
- disabled={btnLoading.value}
- >
- 确认
- </NButton>
- </NSpace>
- </NForm>
- </NSpin>
- },
- })
|