|
@@ -24,6 +24,7 @@ import { appKey, musicSheetSourceType, musicSheetType, scoreType } from '@/utils
|
|
import {
|
|
import {
|
|
musicSheetApplicationExtendCategoryList,
|
|
musicSheetApplicationExtendCategoryList,
|
|
musicSheetApplicationExtendSaveBatch,
|
|
musicSheetApplicationExtendSaveBatch,
|
|
|
|
+ musicSheetApplicationExtendTagList,
|
|
musicSheetApplicationOwnerList,
|
|
musicSheetApplicationOwnerList,
|
|
musicSheetPage
|
|
musicSheetPage
|
|
} from '@views/music-library/api'
|
|
} from '@views/music-library/api'
|
|
@@ -80,6 +81,9 @@ export default defineComponent({
|
|
dataList: [],
|
|
dataList: [],
|
|
selectRowData: [] as any, // 选择的数据列表
|
|
selectRowData: [] as any, // 选择的数据列表
|
|
musicSheetCategories: [] as any,
|
|
musicSheetCategories: [] as any,
|
|
|
|
+ musicSheetTagListKt: [] as any,
|
|
|
|
+ musicTagIds: [] as any, //标签
|
|
|
|
+ recommendFlag: false, // 是否推荐
|
|
startSortNum: null as any, // 排序起始值
|
|
startSortNum: null as any, // 排序起始值
|
|
projectMusicCategoryId: null as any, // 曲目分类ID
|
|
projectMusicCategoryId: null as any, // 曲目分类ID
|
|
isConvertibleScore: null as any, //是否支持转简谱
|
|
isConvertibleScore: null as any, //是否支持转简谱
|
|
@@ -92,6 +96,23 @@ export default defineComponent({
|
|
globalPaymentType: null as any
|
|
globalPaymentType: null as any
|
|
})
|
|
})
|
|
|
|
|
|
|
|
+ const getTagList = async () => {
|
|
|
|
+ try {
|
|
|
|
+ const { data } = await musicSheetApplicationExtendTagList({
|
|
|
|
+ applicationId: props.appId,
|
|
|
|
+ })
|
|
|
|
+ if (data && data.length > 0) {
|
|
|
|
+ data.forEach((item: any) => {
|
|
|
|
+ state.musicSheetTagListKt.push({
|
|
|
|
+ ...item,
|
|
|
|
+ label: item.name,
|
|
|
|
+ value: item.id
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ } catch {}
|
|
|
|
+ }
|
|
|
|
+
|
|
onMounted(async () => {
|
|
onMounted(async () => {
|
|
state.searchForm.keyword = null
|
|
state.searchForm.keyword = null
|
|
// state.searchForm.musicSheetType = null
|
|
// state.searchForm.musicSheetType = null
|
|
@@ -113,6 +134,9 @@ export default defineComponent({
|
|
state.musicSheetCategories = data[0].musicSheetCategories
|
|
state.musicSheetCategories = data[0].musicSheetCategories
|
|
}
|
|
}
|
|
} catch {}
|
|
} catch {}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ await getTagList()
|
|
await initUseAppList()
|
|
await initUseAppList()
|
|
await getList()
|
|
await getList()
|
|
})
|
|
})
|
|
@@ -184,6 +208,15 @@ export default defineComponent({
|
|
const params = [] as any[]
|
|
const params = [] as any[]
|
|
for (let i = 0; i < state.selectRowData.length; i++) {
|
|
for (let i = 0; i < state.selectRowData.length; i++) {
|
|
const item = state.selectRowData[i]
|
|
const item = state.selectRowData[i]
|
|
|
|
+
|
|
|
|
+ if (item.musicTagIds.length <= 0) {
|
|
|
|
+ message.error('曲目标签不能为空')
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if (item.recommendFlag == null) {
|
|
|
|
+ message.error('请选择是否推荐')
|
|
|
|
+ return
|
|
|
|
+ }
|
|
if (!item.projectMusicCategoryId) {
|
|
if (!item.projectMusicCategoryId) {
|
|
message.error('乐谱教材不能为空')
|
|
message.error('乐谱教材不能为空')
|
|
return
|
|
return
|
|
@@ -212,6 +245,7 @@ export default defineComponent({
|
|
musicSheetId: item.id,
|
|
musicSheetId: item.id,
|
|
musicSheetCategoryId: item.projectMusicCategoryId,
|
|
musicSheetCategoryId: item.projectMusicCategoryId,
|
|
applicationId: props.appId,
|
|
applicationId: props.appId,
|
|
|
|
+ musicTagIds: item.musicTagIds ? item.musicTagIds.join(','): '',
|
|
id: null
|
|
id: null
|
|
})
|
|
})
|
|
}
|
|
}
|
|
@@ -291,6 +325,211 @@ export default defineComponent({
|
|
const stepColumns = (): DataTableColumns => {
|
|
const stepColumns = (): DataTableColumns => {
|
|
const field = deepClone(columnsField)
|
|
const field = deepClone(columnsField)
|
|
field.splice(0, 1)
|
|
field.splice(0, 1)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // {
|
|
|
|
+ // title: '曲目标签',
|
|
|
|
+ // key: 'userName',
|
|
|
|
+ // render: (row: any) => <TheTooltip content={row.musicTagNames} />
|
|
|
|
+ // }
|
|
|
|
+ // ,
|
|
|
|
+ // {
|
|
|
|
+ // title: '是否推荐',
|
|
|
|
+ // key: 'userName',
|
|
|
|
+ // render: (row: any) => (
|
|
|
|
+ // row.recommendFlag ? '是' : '否'
|
|
|
|
+ // )
|
|
|
|
+ // }
|
|
|
|
+ field.push({
|
|
|
|
+ title(column: any) {
|
|
|
|
+ return (
|
|
|
|
+ <NSpace>
|
|
|
|
+ 曲目标签
|
|
|
|
+ <NButton
|
|
|
|
+ type="primary"
|
|
|
|
+ size="small"
|
|
|
|
+ text
|
|
|
|
+ onClick={() => {
|
|
|
|
+ state.musicSheetTagListKt.forEach((item: any) => {
|
|
|
|
+ item.disabled = false
|
|
|
|
+ })
|
|
|
|
+ dialogs.create({
|
|
|
|
+ title: '请选择曲目标签',
|
|
|
|
+ showIcon: false,
|
|
|
|
+ content: () => {
|
|
|
|
+ return h(
|
|
|
|
+ 'div',
|
|
|
|
+ {
|
|
|
|
+ class: 'flex flex-col justify-center items-center text-14px'
|
|
|
|
+ },
|
|
|
|
+ [
|
|
|
|
+ h(NSelect, {
|
|
|
|
+ onUpdateValue(v) {
|
|
|
|
+ state.musicTagIds = v
|
|
|
|
+ state.musicSheetTagListKt.forEach((item: any) => {
|
|
|
|
+ if(state.musicTagIds?.length >= 3) {
|
|
|
|
+ if(state.musicTagIds?.includes(item.id)) {
|
|
|
|
+ item.disabled = false
|
|
|
|
+ } else {
|
|
|
|
+ item.disabled = true
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ item.disabled = false
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ multiple: true,
|
|
|
|
+ maxTagCount: 2,
|
|
|
|
+ clearable: true,
|
|
|
|
+ options: state.musicSheetTagListKt
|
|
|
|
+ })
|
|
|
|
+ ]
|
|
|
|
+ )
|
|
|
|
+ },
|
|
|
|
+ positiveText: '确定',
|
|
|
|
+ negativeText: '取消',
|
|
|
|
+ onPositiveClick: () => {
|
|
|
|
+ for (let i = 0; i < state.selectRowData.length; i++) {
|
|
|
|
+ const item = state.selectRowData[i]
|
|
|
|
+ item.musicTagIds = state.musicTagIds
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ onNegativeClick: () => {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }}
|
|
|
|
+ >
|
|
|
|
+ <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: 'musicTagIds',
|
|
|
|
+ width: 200,
|
|
|
|
+ render: (row: any) => {
|
|
|
|
+ // })
|
|
|
|
+ return (
|
|
|
|
+ <NSelect
|
|
|
|
+ placeholder="请选择曲目标签"
|
|
|
|
+ value={row.musicTagIds}
|
|
|
|
+ options={state.musicSheetTagListKt}
|
|
|
|
+ clearable
|
|
|
|
+ multiple
|
|
|
|
+ maxTagCount={1}
|
|
|
|
+ onUpdate:show={(value: any) => {
|
|
|
|
+ state.musicSheetTagListKt.forEach((item: any) => {
|
|
|
|
+ if(row['musicTagIds']?.length >= 3) {
|
|
|
|
+ if(row['musicTagIds']?.includes(item.id)) {
|
|
|
|
+ item.disabled = false
|
|
|
|
+ } else {
|
|
|
|
+ item.disabled = true
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ item.disabled = false
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }}
|
|
|
|
+ onUpdate:value={(value) => {
|
|
|
|
+ row['musicTagIds'] = value
|
|
|
|
+ state.musicSheetTagListKt.forEach((item: any) => {
|
|
|
|
+ if(row['musicTagIds']?.length >= 3) {
|
|
|
|
+ if(row['musicTagIds']?.includes(item.id)) {
|
|
|
|
+ item.disabled = false
|
|
|
|
+ } else {
|
|
|
|
+ item.disabled = true
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ item.disabled = false
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ }}
|
|
|
|
+ />
|
|
|
|
+ )
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ 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'
|
|
|
|
+ },
|
|
|
|
+ [
|
|
|
|
+ h(NSelect, {
|
|
|
|
+ onUpdateValue(v) {
|
|
|
|
+ state.recommendFlag = v
|
|
|
|
+ },
|
|
|
|
+ clearable: true,
|
|
|
|
+ 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.recommendFlag = state.recommendFlag
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }}
|
|
|
|
+ >
|
|
|
|
+ <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: 'recommendFlag',
|
|
|
|
+ width: 200,
|
|
|
|
+ render: (row: any) => {
|
|
|
|
+ // })
|
|
|
|
+ return (
|
|
|
|
+ <NSelect
|
|
|
|
+ placeholder="请选择是否推荐"
|
|
|
|
+ value={row.recommendFlag}
|
|
|
|
+ options={[{ label: '是', value: true },
|
|
|
|
+ { label: '否', value: false } as any]}
|
|
|
|
+ clearable
|
|
|
|
+ onUpdateValue={(value) => {
|
|
|
|
+ row['recommendFlag'] = value
|
|
|
|
+ }}
|
|
|
|
+ />
|
|
|
|
+ )
|
|
|
|
+ }
|
|
|
|
+ })
|
|
field.push({
|
|
field.push({
|
|
title(column: any) {
|
|
title(column: any) {
|
|
return (
|
|
return (
|
|
@@ -351,7 +590,6 @@ export default defineComponent({
|
|
)
|
|
)
|
|
},
|
|
},
|
|
key: 'projectMusicCategoryId',
|
|
key: 'projectMusicCategoryId',
|
|
- fixed: 'right',
|
|
|
|
width: 200,
|
|
width: 200,
|
|
render: (row: any) => {
|
|
render: (row: any) => {
|
|
// })
|
|
// })
|
|
@@ -770,7 +1008,6 @@ export default defineComponent({
|
|
)
|
|
)
|
|
},
|
|
},
|
|
key: 'sortNo',
|
|
key: 'sortNo',
|
|
- fixed: 'right',
|
|
|
|
width: 150,
|
|
width: 150,
|
|
render: (row: any) => {
|
|
render: (row: any) => {
|
|
return h(NInputNumber, {
|
|
return h(NInputNumber, {
|
|
@@ -1028,7 +1265,7 @@ export default defineComponent({
|
|
data={state.selectRowData}
|
|
data={state.selectRowData}
|
|
rowKey={(row: any) => row.id}
|
|
rowKey={(row: any) => row.id}
|
|
maxHeight={500}
|
|
maxHeight={500}
|
|
- scrollX={1800}
|
|
|
|
|
|
+ scrollX={2500}
|
|
></NDataTable>
|
|
></NDataTable>
|
|
</div>
|
|
</div>
|
|
)}
|
|
)}
|