|
@@ -0,0 +1,595 @@
|
|
|
+import {defineComponent, onMounted, reactive, ref} from "vue";
|
|
|
+import SaveForm from "@components/save-form";
|
|
|
+import {
|
|
|
+ DataTableRowKey,
|
|
|
+ NButton,
|
|
|
+ NCascader,
|
|
|
+ NDataTable,
|
|
|
+ NDatePicker,
|
|
|
+ NDescriptions,
|
|
|
+ NDescriptionsItem,
|
|
|
+ NFormItem,
|
|
|
+ NImage,
|
|
|
+ NInput,
|
|
|
+ NModal,
|
|
|
+ NSelect,
|
|
|
+ NSpace,
|
|
|
+ NTag,
|
|
|
+ useDialog,
|
|
|
+ useMessage
|
|
|
+} from "naive-ui";
|
|
|
+import Pagination from "@components/pagination";
|
|
|
+import TheTooltip from "@components/TheTooltip";
|
|
|
+import AddMusic from "@views/music-library/project-music-sheet/module/gym/addMusic";
|
|
|
+import {getMapValueByKey, getSelectDataFromObj} from "@/utils/objectUtil";
|
|
|
+import {musicSheetAudioType, musicSheetAvailableType, musicSheetPaymentType, musicSheetSourceType, musicSheetType} from "@/utils/constant";
|
|
|
+import {musicSheetApplicationExtendCategoryList, musicSheetApplicationOwnerList, musicSheetPageByApplication, musicSheetStatusList} from "@views/music-library/api";
|
|
|
+import UpdateMusic from "@views/music-library/project-music-sheet/module/kt/updateMusic";
|
|
|
+import {subjectPage, sysApplicationPage} from "@views/system-manage/api";
|
|
|
+import {filterTimes} from "@/utils/dateUtil";
|
|
|
+
|
|
|
+export default defineComponent({
|
|
|
+ name: 'music-sheet-klx',
|
|
|
+ props: {
|
|
|
+ appKey: {
|
|
|
+ type: String,
|
|
|
+ default: 'KLX'
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ setup(props) {
|
|
|
+ const dialog = useDialog()
|
|
|
+ const message = useMessage()
|
|
|
+ const state = reactive({
|
|
|
+ loading: false,
|
|
|
+ appId: null as any,
|
|
|
+ pagination: {
|
|
|
+ page: 1,
|
|
|
+ rows: 10,
|
|
|
+ pageTotal: 0
|
|
|
+ },
|
|
|
+ searchForm: {
|
|
|
+ keyword: null,
|
|
|
+ applicationId: null, //应用ID
|
|
|
+ musicSheetType: null, //曲目类型(SINGLE:单曲 CONCERT:合奏)
|
|
|
+ subjectId: null, //声部ID
|
|
|
+ subjectIds: null, //曲目声部ID集合
|
|
|
+ musicCategoryIds: null, //曲目分类ID
|
|
|
+ status: null, //曲目状态(0:停用,1:启用)
|
|
|
+ sourceType: null, //来源类型/作者属性(PLATFORM: 平台; ORG: 机构; PERSON: 个人)
|
|
|
+ paymentType: null, //收费类型(FREE:免费;VIP:会员;CHARGE:单曲收费)
|
|
|
+ userId: null, //所属人
|
|
|
+ musicCategoryId: null, //曲目分类ID
|
|
|
+ times: null, // 上传时间
|
|
|
+ audioType: null, //音频类型(HOMEMODE: 自制 COMMON: 普通)
|
|
|
+ exquisiteFlag: null, //精品标志
|
|
|
+ topFlag: null, //是否置顶(0:否;1:是)
|
|
|
+ availableType: null, //可用途径 ORG 机构 PLATFORM 平台
|
|
|
+ appAuditFlag: null, //是否审核版本
|
|
|
+ detailFlag: null, //是否查询详情
|
|
|
+ musicTagIds: [], //曲目标签
|
|
|
+ },
|
|
|
+ subjectList: [],
|
|
|
+ dataList: [] as any[],
|
|
|
+ musicSheetCategories: [],
|
|
|
+ showAddDialog: false,
|
|
|
+ showEditDialog: false,
|
|
|
+ userIdDisable: true,
|
|
|
+ userIdData: [] as any,
|
|
|
+ updateRow: {} as any, // 修改选择的行
|
|
|
+ musicTagList:[] as any,//曲目标签
|
|
|
+ })
|
|
|
+
|
|
|
+ onMounted(async () => {
|
|
|
+ // 获取应用APP信息
|
|
|
+ {
|
|
|
+ const {data} = await sysApplicationPage({page: 1, rows: 1, appKey: props.appKey})
|
|
|
+ const tempList = data.rows || []
|
|
|
+ if (!tempList || tempList.length == 0) {
|
|
|
+ message.error("加载项目信息失败");
|
|
|
+ return
|
|
|
+ }
|
|
|
+ state.appId = tempList[0].id
|
|
|
+ state.searchForm.applicationId = tempList[0].id
|
|
|
+ }
|
|
|
+ // 加载声部
|
|
|
+ {
|
|
|
+ try {
|
|
|
+ const {data} = await subjectPage({page: 1, rows: 999})
|
|
|
+ const tempList = data.rows || []
|
|
|
+ tempList.forEach((item: any) => {
|
|
|
+ item.label = item.name
|
|
|
+ item.value = item.id + ''
|
|
|
+ })
|
|
|
+ state.subjectList = tempList
|
|
|
+ } catch {
|
|
|
+ }
|
|
|
+
|
|
|
+ //加载曲目分类列表
|
|
|
+ {
|
|
|
+ const {data} = await musicSheetApplicationExtendCategoryList({applicationIds: state.appId})
|
|
|
+ if (data && data.length > 0) {
|
|
|
+ state.musicSheetCategories = data[0].musicSheetCategories
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 加载表格数据
|
|
|
+ {
|
|
|
+ getList()
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ })
|
|
|
+
|
|
|
+ const saveForm = ref()
|
|
|
+
|
|
|
+ const onSearch = () => {
|
|
|
+ saveForm.value?.submit()
|
|
|
+ }
|
|
|
+ const onBtnReset = () => {
|
|
|
+ saveForm.value?.reset()
|
|
|
+ }
|
|
|
+
|
|
|
+ const onSubmit = () => {
|
|
|
+ state.pagination.page = 1
|
|
|
+ getList()
|
|
|
+ }
|
|
|
+
|
|
|
+ const checkedRowKeysRef = ref<DataTableRowKey[]>([])
|
|
|
+ const handleCheck = (rowKeys: DataTableRowKey[]) => {
|
|
|
+ checkedRowKeysRef.value = rowKeys
|
|
|
+ }
|
|
|
+
|
|
|
+ const getList = async () => {
|
|
|
+ try {
|
|
|
+ state.loading = true
|
|
|
+ const {data} = await musicSheetPageByApplication({
|
|
|
+ ...state.pagination,
|
|
|
+ ...state.searchForm,
|
|
|
+ ...filterTimes(state.searchForm.times, ['startTime', 'endTime']),
|
|
|
+ })
|
|
|
+ state.pagination.pageTotal = Number(data.total)
|
|
|
+ state.dataList = data.rows || []
|
|
|
+ } catch {
|
|
|
+ }
|
|
|
+ state.loading = false
|
|
|
+ }
|
|
|
+
|
|
|
+ const onChangeStatus = (row: any) => {
|
|
|
+ const statusStr = row.status ? '停用' : '启用'
|
|
|
+ dialog.warning({
|
|
|
+ title: '警告',
|
|
|
+ content: `是否${statusStr}?`,
|
|
|
+ positiveText: '确定',
|
|
|
+ negativeText: '取消',
|
|
|
+ onPositiveClick: async () => {
|
|
|
+ try {
|
|
|
+ await musicSheetStatusList({
|
|
|
+ ids: new Array(row.id),
|
|
|
+ status: !row.status
|
|
|
+ })
|
|
|
+ getList()
|
|
|
+ message.success(`${statusStr}成功`)
|
|
|
+ } catch {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ const onBatchChangeStatus = (status: boolean) => {
|
|
|
+ const length = checkedRowKeysRef.value.length;
|
|
|
+ if (length == 0) {
|
|
|
+ message.warning("未选择数据")
|
|
|
+ }
|
|
|
+ const statusStr = !status ? '停用' : '启用'
|
|
|
+ dialog.warning({
|
|
|
+ title: '警告',
|
|
|
+ content: `是否${statusStr}` + length + `条数据?`,
|
|
|
+ positiveText: '确定',
|
|
|
+ negativeText: '取消',
|
|
|
+ onPositiveClick: async () => {
|
|
|
+ try {
|
|
|
+ await musicSheetStatusList({
|
|
|
+ ids: checkedRowKeysRef.value,
|
|
|
+ status: status
|
|
|
+ })
|
|
|
+ getList()
|
|
|
+ message.success(`${statusStr}成功`)
|
|
|
+ } catch {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ const columns = (): any => {
|
|
|
+ return [
|
|
|
+ {
|
|
|
+ type: 'selection'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '曲目信息',
|
|
|
+ key: 'id',
|
|
|
+ render: (row: any) => (
|
|
|
+ <>
|
|
|
+ <NDescriptions labelPlacement="left" column={1}>
|
|
|
+ <NDescriptionsItem label="曲目名称">
|
|
|
+ <TheTooltip content={row.name}/>{' '}
|
|
|
+ </NDescriptionsItem>
|
|
|
+ <NDescriptionsItem label="曲目编号">{row.id}</NDescriptionsItem>
|
|
|
+ </NDescriptions>
|
|
|
+ </>
|
|
|
+ )
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '曲目来源',
|
|
|
+ key: 'musicSheetCategoriesName',
|
|
|
+ render: (row: any) => (
|
|
|
+ <>
|
|
|
+ <NDescriptions labelPlacement="left" column={1}>
|
|
|
+ <NDescriptionsItem label="曲目来源">
|
|
|
+ {getMapValueByKey(row.sourceType, new Map(Object.entries(musicSheetSourceType)))}
|
|
|
+ </NDescriptionsItem>
|
|
|
+ <NDescriptionsItem label="所属人">{row.userName}</NDescriptionsItem>
|
|
|
+ </NDescriptions>
|
|
|
+ </>
|
|
|
+ )
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '封面图',
|
|
|
+ key: 'musicCover',
|
|
|
+ render(row: any): JSX.Element {
|
|
|
+ return <NImage width={60} height={60} src={row.musicCover}/>
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '曲目类型',
|
|
|
+ key: 'musicSheetType',
|
|
|
+ render: (row: any) => {
|
|
|
+ return <div>{getMapValueByKey(row.musicSheetType, new Map(Object.entries(musicSheetType)))}</div>
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '伴奏类型',
|
|
|
+ key: 'audioType',
|
|
|
+ render: (row: any) => {
|
|
|
+ return <div>{getMapValueByKey(row.audioType, new Map(Object.entries(musicSheetAudioType)))}</div>
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '可用声部',
|
|
|
+ key: 'subjectIdNames'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '标签',
|
|
|
+ key: 'musicTagNames'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '可用途径',
|
|
|
+ key: 'availableType',
|
|
|
+ render: (row: any) => {
|
|
|
+ return <div>{getMapValueByKey(row.availableType, new Map(Object.entries(musicSheetAvailableType)))}</div>
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '是否置顶',
|
|
|
+ key: 'topFlag',
|
|
|
+ render: (row: any) => {
|
|
|
+ return <div>{row.topFlag?'是':'否'}</div>
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '是否精品',
|
|
|
+ key: 'exquisiteFlag',
|
|
|
+ render: (row: any) => {
|
|
|
+ return <div>{row.topFlag?'是':'否'}</div>
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '收费方式',
|
|
|
+ key: 'paymentType',
|
|
|
+ render: (row: any) => {
|
|
|
+ return <div>{getMapValueByKey(row.paymentType, new Map(Object.entries(musicSheetPaymentType)))}</div>
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '曲目价格',
|
|
|
+ key: 'musicPrice',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '上传人',
|
|
|
+ key: 'createByName'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '上传时间',
|
|
|
+ key: 'createTime'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '状态',
|
|
|
+ key: 'status',
|
|
|
+ render(row: any) {
|
|
|
+ return (
|
|
|
+ <NTag type={row.status ? 'primary' : 'default'}>{row.status ? '启用' : '停用'}</NTag>
|
|
|
+ )
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '操作',
|
|
|
+ key: 'operation',
|
|
|
+ fixed: 'right',
|
|
|
+ render(row: any) {
|
|
|
+ return (
|
|
|
+ <NSpace>
|
|
|
+ <NButton
|
|
|
+ type="primary"
|
|
|
+ size="small"
|
|
|
+ text
|
|
|
+ //v-auth="musicSheet/status1612431726029942786"
|
|
|
+ onClick={() => onChangeStatus(row)}
|
|
|
+ >
|
|
|
+ {row.status ? '停用' : '启用'}
|
|
|
+ </NButton>
|
|
|
+ <NButton
|
|
|
+ type="primary"
|
|
|
+ size="small"
|
|
|
+ text
|
|
|
+ //v-auth="musicSheet/update1602302618558099458"
|
|
|
+ onClick={() => {
|
|
|
+ state.showEditDialog = true
|
|
|
+ state.updateRow = row
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ 修改
|
|
|
+ </NButton>
|
|
|
+ </NSpace>
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return () => {
|
|
|
+ return (
|
|
|
+ <div class="system-menu-container">
|
|
|
+ <SaveForm
|
|
|
+ ref={saveForm}
|
|
|
+ model={state.searchForm}
|
|
|
+ onSubmit={onSubmit}
|
|
|
+ saveKey="music-sheet-klx"
|
|
|
+ onSetModel={(val: any) => (state.searchForm = val)}
|
|
|
+ >
|
|
|
+
|
|
|
+ <NFormItem label="关键词" path="keyword">
|
|
|
+ <NInput
|
|
|
+ placeholder="请输入曲目名称/编号"
|
|
|
+ v-model:value={state.searchForm.keyword}
|
|
|
+ clearable
|
|
|
+ />
|
|
|
+ </NFormItem>
|
|
|
+ <NFormItem label="曲目来源" path="sourceType">
|
|
|
+ <NSelect
|
|
|
+ placeholder="请选择曲目来源"
|
|
|
+ v-model:value={state.searchForm.sourceType}
|
|
|
+ options={getSelectDataFromObj(musicSheetSourceType)}
|
|
|
+ onUpdateValue={async (value: any) => {
|
|
|
+ state.userIdData = []
|
|
|
+ state.searchForm.userId = null
|
|
|
+ if (value) {
|
|
|
+ const {data} = await musicSheetApplicationOwnerList({page: 1, rows: 9999, sourceType: value, applicationId: state.appId})
|
|
|
+ const temp = data.rows || []
|
|
|
+ temp.forEach((next: any) => {
|
|
|
+ state.userIdData.push({
|
|
|
+ ...next,
|
|
|
+ label: next.userName,
|
|
|
+ value: next.userId
|
|
|
+ })
|
|
|
+ })
|
|
|
+ state.userIdDisable = false
|
|
|
+ } else {
|
|
|
+ state.userIdDisable = true
|
|
|
+ }
|
|
|
+ }}
|
|
|
+ clearable
|
|
|
+ />
|
|
|
+ </NFormItem>
|
|
|
+ <NFormItem label="所属人" path="userId">
|
|
|
+ <NSelect
|
|
|
+ placeholder="请选择所属人"
|
|
|
+ disabled={state.userIdDisable}
|
|
|
+ v-model:value={state.searchForm.userId}
|
|
|
+ options={state.userIdData}
|
|
|
+ clearable
|
|
|
+ >
|
|
|
+ </NSelect>
|
|
|
+ </NFormItem>
|
|
|
+ <NFormItem label="曲目类型" path="subjectType">
|
|
|
+ <NSelect
|
|
|
+ placeholder="请选择曲目类型"
|
|
|
+ v-model:value={state.searchForm.musicSheetType}
|
|
|
+ options={getSelectDataFromObj(musicSheetType)}
|
|
|
+ clearable
|
|
|
+ />
|
|
|
+ </NFormItem>
|
|
|
+ <NFormItem label="伴奏类型" path="audioType">
|
|
|
+ <NSelect
|
|
|
+ placeholder="请选择伴奏类型"
|
|
|
+ v-model:value={state.searchForm.audioType}
|
|
|
+ options={getSelectDataFromObj(musicSheetAudioType)}
|
|
|
+ clearable
|
|
|
+ />
|
|
|
+ </NFormItem>
|
|
|
+ <NFormItem label="可用声部" path="subjectId">
|
|
|
+ <NSelect
|
|
|
+ placeholder="请选择可用声部"
|
|
|
+ v-model:value={state.searchForm.subjectId}
|
|
|
+ options={state.subjectList}
|
|
|
+ clearable
|
|
|
+ />
|
|
|
+ </NFormItem>
|
|
|
+ <NFormItem label="曲目标签" path="musicTagIds">
|
|
|
+ <NSelect
|
|
|
+ placeholder="请选择曲目标签"
|
|
|
+ v-model:value={state.searchForm.musicTagIds}
|
|
|
+ options={state.musicTagList}
|
|
|
+ multiple
|
|
|
+ maxTagCount={2}
|
|
|
+ clearable
|
|
|
+ />
|
|
|
+ </NFormItem>
|
|
|
+ {/*<NFormItem*/}
|
|
|
+ {/* label="可用途径"*/}
|
|
|
+ {/* path="availableType"*/}
|
|
|
+ {/*>*/}
|
|
|
+ {/* <NSelect*/}
|
|
|
+ {/* placeholder="请选择可用途径"*/}
|
|
|
+ {/* v-model:value={state.searchForm.availableType}*/}
|
|
|
+ {/* options={getSelectDataFromObj(musicSheetAvailableType)}*/}
|
|
|
+ {/* clearable*/}
|
|
|
+ {/* >*/}
|
|
|
+ {/* </NSelect>*/}
|
|
|
+ {/*</NFormItem>*/}
|
|
|
+ <NFormItem
|
|
|
+ label="收费方式"
|
|
|
+ path="paymentType"
|
|
|
+ >
|
|
|
+ <NSelect
|
|
|
+ placeholder="请选择收费方式"
|
|
|
+ v-model:value={state.searchForm.paymentType}
|
|
|
+ options={getSelectDataFromObj(musicSheetPaymentType)}
|
|
|
+ clearable
|
|
|
+ >
|
|
|
+ </NSelect>
|
|
|
+ </NFormItem>
|
|
|
+ <NFormItem label="状态" path="status">
|
|
|
+ <NSelect
|
|
|
+ v-model:value={state.searchForm.status}
|
|
|
+ placeholder="请选择状态"
|
|
|
+ options={
|
|
|
+ [
|
|
|
+ {
|
|
|
+ label: '启用',
|
|
|
+ value: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '停用',
|
|
|
+ value: false
|
|
|
+ }
|
|
|
+ ] as any
|
|
|
+ }
|
|
|
+ clearable
|
|
|
+ />
|
|
|
+ </NFormItem>
|
|
|
+ <NFormItem label="上传时间" path="authorFrom">
|
|
|
+ <NDatePicker
|
|
|
+ v-model:value={state.searchForm.times}
|
|
|
+ type="daterange"
|
|
|
+ clearable
|
|
|
+ value-format="yyyy.MM.dd"
|
|
|
+ startPlaceholder="开始时间"
|
|
|
+ endPlaceholder="结束时间"
|
|
|
+ />
|
|
|
+ </NFormItem>
|
|
|
+ <NFormItem>
|
|
|
+ <NSpace>
|
|
|
+ <NButton type="primary" onClick={onSearch}>
|
|
|
+ 搜索
|
|
|
+ </NButton>
|
|
|
+ <NButton type="default" onClick={onBtnReset}>
|
|
|
+ 重置
|
|
|
+ </NButton>
|
|
|
+ </NSpace>
|
|
|
+ </NFormItem>
|
|
|
+ </SaveForm>
|
|
|
+
|
|
|
+ <div class={['section-container']}>
|
|
|
+ <NSpace style={{paddingBottom: '12px'}}>
|
|
|
+ <NButton
|
|
|
+ type="primary"
|
|
|
+ //v-auth="musicSheet/save1602302550719426561"
|
|
|
+ onClick={() => {
|
|
|
+ state.showAddDialog = true
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ 新增
|
|
|
+ </NButton>
|
|
|
+ <NButton
|
|
|
+ disabled={checkedRowKeysRef.value.length == 0}
|
|
|
+ //v-auth="musicSheet/save1602302550719426561"
|
|
|
+ onClick={() => {
|
|
|
+ onBatchChangeStatus(false)
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ 批量禁用
|
|
|
+ </NButton>
|
|
|
+ <NButton
|
|
|
+ disabled={checkedRowKeysRef.value.length == 0}
|
|
|
+ //v-auth="musicSheet/save1602302550719426561"
|
|
|
+ onClick={() => {
|
|
|
+ onBatchChangeStatus(true)
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ 批量启用
|
|
|
+ </NButton>
|
|
|
+ </NSpace>
|
|
|
+
|
|
|
+ <NDataTable
|
|
|
+ loading={state.loading}
|
|
|
+ columns={columns()}
|
|
|
+ data={state.dataList}
|
|
|
+ rowKey={(row: any) => row.id}
|
|
|
+ onUpdateCheckedRowKeys={handleCheck}
|
|
|
+ ></NDataTable>
|
|
|
+
|
|
|
+ <Pagination
|
|
|
+ v-model:page={state.pagination.page}
|
|
|
+ v-model:pageSize={state.pagination.rows}
|
|
|
+ v-model:pageTotal={state.pagination.pageTotal}
|
|
|
+ onList={getList}
|
|
|
+ sync
|
|
|
+ saveKey="music-sheet-klx"
|
|
|
+ ></Pagination>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <NModal
|
|
|
+ v-model:show={state.showAddDialog}
|
|
|
+ preset="dialog"
|
|
|
+ showIcon={false}
|
|
|
+ title={'添加曲目'}
|
|
|
+ style={{width: '1200px'}}
|
|
|
+ >
|
|
|
+ <AddMusic
|
|
|
+ onClose={() => (state.showAddDialog = false)}
|
|
|
+ onGetList={() => {
|
|
|
+ state.pagination.page = 1
|
|
|
+ getList()
|
|
|
+ }}
|
|
|
+ subjectList={state.subjectList}
|
|
|
+ appId={state.appId}
|
|
|
+ musicSheetCategories={state.musicSheetCategories}
|
|
|
+ />
|
|
|
+ </NModal>
|
|
|
+ <NModal
|
|
|
+ v-model:show={state.showEditDialog}
|
|
|
+ preset="dialog"
|
|
|
+ showIcon={false}
|
|
|
+ title={'修改曲目'}
|
|
|
+ style={{width: '500px'}}
|
|
|
+ >
|
|
|
+ <UpdateMusic
|
|
|
+ onClose={() => (state.showEditDialog = false)}
|
|
|
+ onGetList={() => {
|
|
|
+ state.pagination.page = 1
|
|
|
+ getList()
|
|
|
+ }}
|
|
|
+ rowData={state.updateRow}
|
|
|
+ appId={state.appId}
|
|
|
+ musicSheetCategories={state.musicSheetCategories}
|
|
|
+ />
|
|
|
+ </NModal>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+})
|