}
},
{
title: '曲目名称',
key: 'name'
},
{
title: '音乐人',
key: 'composer'
},
{
title: '多声轨渲染',
key: 'musicSheetType',
render: (row: any) => {
return (
{getMapValueByKey(row.musicSheetType, new Map(Object.entries(musicSheetType)))}
)
}
},
{
title: '曲目来源',
key: 'sourceType',
render(row: any) {
return getMapValueByKey(row.sourceType, new Map(Object.entries(musicSheetSourceType)))
}
},
{
title: '所属人',
key: 'userName',
render: (row: any) => {
return
}
}
]
const columns = (): any => {
return columnsField
}
const stepColumns = (): DataTableColumns => {
const field = deepClone(columnsField)
field.splice(0, 1)
field.push({
title(column: any) {
return (
曲目标签
{
dialogs.create({
title: '请选择曲目标签',
showIcon: false,
content: () => {
return h(
'div',
{
class: 'flex flex-col justify-center items-center text-14px'
},
[
h(NSelect, {
onUpdateValue(v) {
state.globalMusicTagIds = v
},
multiple: true,
clearable: true,
options: state.musicSheetTagList
})
]
)
},
positiveText: '确定',
negativeText: '取消',
onPositiveClick: () => {
for (let i = 0; i < state.selectRowData.length; i++) {
const item = state.selectRowData[i]
item.musicTagIds = state.globalMusicTagIds
}
}
})
}}
>
)
},
key: 'musicTagIds',
width:'180px',
render: (row: any) => {
// })
return (
{
row['musicTagIds'] = value
}}
/>
)
}
})
field.push({
title(column: any) {
return (
收费方式
{
dialogs.create({
title: '请选择收费方式',
showIcon: false,
content: () => {
return h(
'div',
{
class: 'flex flex-col justify-center items-center text-14px'
},
[
h(NSelect, {
value: state.globalPaymentType,
onUpdateValue(v) {
state.globalPaymentType = v
const free = 'FREE'
if (state.globalPaymentType[state.globalPaymentType.length - 1] == free) {
state.globalPaymentType = [free]
return
}
if (state.globalPaymentType.length > 1 && state.globalPaymentType.includes(free)) {
state.globalPaymentType.splice(state.globalPaymentType.indexOf(free), 1)
}
},
multiple: true,
clearable: true,
options: getSelectDataFromObj(musicSheetPaymentType)
}
)
]
)
},
positiveText: '确定',
negativeText: '取消',
onPositiveClick: () => {
for (let i = 0; i < state.selectRowData.length; i++) {
const item = state.selectRowData[i]
item.paymentType = state.globalPaymentType
if (!state.globalPaymentType.includes("CHARGE")) {
item.musicPrice = 0
item.musicPriceDisable = true
}
}
}
})
}}
>
)
},
key: 'paymentType',
width:'180px',
render: (row: any) => {
return (
{
row.paymentType = value
const free = 'FREE'
if (row.paymentType[row.paymentType.length - 1] == free) {
row.paymentType = [free]
} else if (row.paymentType.length > 1 && row.paymentType.includes(free)) {
row.paymentType.splice(row.paymentType.indexOf(free), 1)
}
if (!row.paymentType.includes("CHARGE")) {
row.musicPrice = 0
}
}}
/>
)
}
})
field.push({
title(column: any) {
return (
曲目价格
{
dialogs.create({
title: '请输入曲目价格',
showIcon: false,
content: () => {
return h(
'div',
{
class: 'flex flex-col justify-center items-center text-14px'
},
[
// icon
h(NInputNumber, {
onUpdateValue(v) {
state.globalMusicPrice = v
},
min: 0,
max: 9999
})
]
)
},
positiveText: '确定',
negativeText: '取消',
onPositiveClick: () => {
if (state.globalMusicPrice) {
for (let i = 0; i < state.selectRowData.length; i++) {
const item = state.selectRowData[i]
if (item.paymentType.includes("CHARGE")) { // 只修改包含单曲收费,则价格为0
item.musicPrice = state.globalMusicPrice
}
}
}
}
})
}}
>
)
},
key: 'musicPrice',
render: (row: any) => {
return h(NInputNumber, {
value: row.musicPrice,
min: 0,
max: 9999,
disabled: !row.paymentType?.includes('CHARGE'),
onUpdateValue(value: any) {
row['musicPrice'] = value
}
})
}
})
field.push({
title(column: any) {
return (
可用途径
{
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.globalAvailableType = v
},
clearable: true,
options: getSelectDataFromObj(musicSheetAvailableType)
})
]
)
},
positiveText: '确定',
negativeText: '取消',
onPositiveClick: () => {
for (let i = 0; i < state.selectRowData.length; i++) {
const item = state.selectRowData[i]
item.availableType = state.globalAvailableType
}
}
})
}}
>
)
},
key: 'availableType',
render: (row: any) => {
return (
{
row['availableType'] = value
}}
clearable
/>
)
}
})
field.push({
title(column: any) {
return (
是否置顶
{
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.globalTopFlag = 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.topFlag = state.globalTopFlag
}
}
})
}}
>
)
},
key: 'topFlag',
render: (row: any) => {
return (
{
row['topFlag'] = value
}}
/>
)
}
})
field.push({
title(column: any) {
return (
是否精品
{
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.globalExquisiteFlag = 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.exquisiteFlag = state.globalExquisiteFlag
}
}
})
}}
>
)
},
key: 'exquisiteFlag',
render: (row: any) => {
return (
{
row['exquisiteFlag'] = value
}}
options={
[
{
label: '是',
value: true
},
{
label: '否',
value: false
}
] as any
}
clearable
/>
)
}
})
field.push({
title(column: any) {
return (
排序
{
dialogs.create({
title: '请输入排序起始值',
showIcon: false,
content: () => {
return h(
'div',
{
class: 'flex flex-col justify-center items-center text-14px'
},
[
// icon
h(NInputNumber, {
onUpdateValue(v) {
state.globalStartSortNum = v
},
min: 0,
max: 9999
})
]
)
},
positiveText: '确定',
negativeText: '取消',
onPositiveClick: () => {
for (let i = 0; i < state.selectRowData.length; i++) {
const item = state.selectRowData[i]
item.sortNo = state.globalStartSortNum + i
}
}
})
}}
>
)
},
key: 'sortNo',
fixed: 'right',
width: 150,
render: (row: any) => {
return h(NInputNumber, {
value: row.sortNo,
min: 0,
max: 9999,
onUpdateValue(value: any) {
row.sortNo = value
}
})
}
})
field.push({
title: '操作',
key: 'operation',
fixed: 'right',
render(row: any) {
return (
{
dialogs.warning({
title: '提示',
content: `是否删除该数据?`,
positiveText: '确定',
negativeText: '取消',
onPositiveClick: async () => {
try {
const index = state.selectRowData.findIndex((item: any) => {
if (item.id == row.id) {
return true
}
})
if (index > -1) {
state.selectRowData.splice(index, 1)
}
const index1 = checkedRowKeysRef.value.findIndex((item: any) => {
if (item == row.id) {
return true
}
})
if (index1 > -1) {
checkedRowKeysRef.value.splice(index, 1)
}
} catch {}
}
})
}}
>
移除
)
}
})
return field
}
const checkedRowKeysRef = ref([])
const handleCheck = (rowKeys: DataTableRowKey[]) => {
checkedRowKeysRef.value = rowKeys
// 添加行更新值
state.dataList.forEach((next: any) => {
if (checkedRowKeysRef.value.includes(next.id)) {
const find = state.selectRowData.find((row: any) => {
return row.id === next.id
})
if (!find) {
state.selectRowData.push({
...next,
paymentType: [] as any,
musicPriceDisable: false // 默认可以编辑曲目价格
})
}
}
})
// 去掉行更新值
state.selectRowData = state.selectRowData.filter((next: any) => {
return checkedRowKeysRef.value.includes(next.id)
})
}
return () => {
return (
)
}
}
})