Merge remote-tracking branch 'origin/master'

master
夜笙歌 1 month ago
commit bab1e23a27

@ -68,3 +68,12 @@ export const delMenu = (menuId: string | number) => {
method: 'delete' method: 'delete'
}); });
}; };
// 复制菜单
export const copyMenu = (menuId: string | number, data: { menuName: string; parentId: number | string; orderNum: number }) => {
return request({
url: '/system/menu/copy/' + menuId,
method: 'post',
data: data
});
};

@ -260,13 +260,13 @@ const getList = async () => {
designFieldMappingList.value = res.rows; designFieldMappingList.value = res.rows;
total.value = res.total; total.value = res.total;
loading.value = false; loading.value = false;
const result = res.rows.map(item => item.fieldMappingCode); // const result = res.rows.map(item => item.fieldMappingCode);
await getDataSourceList(result); // await getDataSourceList(result);
}; };
/** 查询大屏设计字段映射列表 */ /** 查询大屏设计字段映射列表 */
const getDataSourceList = async (result: string[]) => { const getDataSourceList = async (result: string[]) => {
const apiResult = await getDataSourceFieldMappingList(['tenantId','ewewewew']); const apiResult = await getDataSourceFieldMappingList(result);
console.log(apiResult.data); console.log(apiResult.data);
}; };

@ -72,6 +72,9 @@
<el-tooltip content="删除" placement="top"> <el-tooltip content="删除" placement="top">
<el-button v-hasPermi="['system:menu:remove']" link type="primary" icon="Delete" @click="handleDelete(scope.row)" /> <el-button v-hasPermi="['system:menu:remove']" link type="primary" icon="Delete" @click="handleDelete(scope.row)" />
</el-tooltip> </el-tooltip>
<el-tooltip content="复制" placement="top">
<el-button v-hasPermi="['system:menu:add']" link type="primary" icon="CopyDocument" @click="handleCopy(scope.row)" />
</el-tooltip>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -257,11 +260,39 @@
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
<!-- 复制菜单对话框 -->
<el-dialog v-model="copyDialog.visible" title="复制菜单" destroy-on-close append-to-body width="500px">
<el-form ref="copyFormRef" :model="copyForm" :rules="copyRules" label-width="100px">
<el-form-item label="上级菜单">
<el-tree-select
v-model="copyForm.parentId"
:data="menuOptions"
:props="{ value: 'menuId', label: 'menuName', children: 'children' }"
value-key="menuId"
placeholder="选择上级菜单"
check-strictly
/>
</el-form-item>
<el-form-item label="新菜单名称" prop="menuName">
<el-input v-model="copyForm.menuName" placeholder="请输入新菜单名称" />
</el-form-item>
<el-form-item label="显示排序" prop="orderNum">
<el-input-number v-model="copyForm.orderNum" controls-position="right" :min="0" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitCopyForm"> </el-button>
<el-button @click="cancelCopy"> </el-button>
</div>
</template>
</el-dialog>
</div> </div>
</template> </template>
<script setup name="Menu" lang="ts"> <script setup name="Menu" lang="ts">
import { addMenu, delMenu, getMenu, listMenu, updateMenu } from '@/api/system/menu'; import { addMenu, delMenu, getMenu, listMenu, updateMenu, copyMenu } from '@/api/system/menu';
import { MenuForm, MenuQuery, MenuVO } from '@/api/system/menu/types'; import { MenuForm, MenuQuery, MenuVO } from '@/api/system/menu/types';
import { MenuTypeEnum } from '@/enums/MenuTypeEnum'; import { MenuTypeEnum } from '@/enums/MenuTypeEnum';
@ -285,8 +316,14 @@ const dialog = reactive<DialogOption>({
title: '' title: ''
}); });
const copyDialog = reactive<DialogOption>({
visible: false,
title: '复制菜单'
});
const queryFormRef = ref<ElFormInstance>(); const queryFormRef = ref<ElFormInstance>();
const menuFormRef = ref<ElFormInstance>(); const menuFormRef = ref<ElFormInstance>();
const copyFormRef = ref<ElFormInstance>();
const initFormData = { const initFormData = {
path: '', path: '',
menuId: undefined, menuId: undefined,
@ -313,6 +350,19 @@ const data = reactive<PageData<MenuForm, MenuQuery>>({
} }
}); });
const copyForm = reactive({
menuName: '',
sourceMenuId: undefined as string | number | undefined,
parentId: 0,
orderNum: 0
});
const copyRules = {
menuName: [{ required: true, message: '菜单名称不能为空', trigger: 'blur' }],
parentId: [{ required: true, message: '上级菜单不能为空', trigger: 'change' }],
orderNum: [{ required: true, message: '显示排序不能为空', trigger: 'blur' }]
};
const menuTableRef = ref<ElTableInstance>(); const menuTableRef = ref<ElTableInstance>();
const { queryParams, form, rules } = toRefs<PageData<MenuForm, MenuQuery>>(data); const { queryParams, form, rules } = toRefs<PageData<MenuForm, MenuQuery>>(data);
@ -404,6 +454,39 @@ const handleDelete = async (row: MenuVO) => {
proxy?.$modal.msgSuccess('删除成功'); proxy?.$modal.msgSuccess('删除成功');
}; };
/** 复制按钮操作 */
const handleCopy = (row: MenuVO) => {
copyForm.menuName = row.menuName + ' - 复制';
copyForm.sourceMenuId = row.menuId;
copyForm.parentId = row.parentId;
copyForm.orderNum = row.orderNum;
getTreeselect();
copyDialog.visible = true;
};
/** 取消复制 */
const cancelCopy = () => {
copyForm.menuName = '';
copyForm.sourceMenuId = undefined;
copyDialog.visible = false;
};
/** 提交复制表单 */
const submitCopyForm = () => {
copyFormRef.value?.validate(async (valid: boolean) => {
if (valid && copyForm.sourceMenuId) {
await copyMenu(copyForm.sourceMenuId, {
menuName: copyForm.menuName,
parentId: copyForm.parentId,
orderNum: copyForm.orderNum
});
proxy?.$modal.msgSuccess('复制成功');
copyDialog.visible = false;
await getList();
}
});
};
onMounted(() => { onMounted(() => {
getList(); getList();
}); });

Loading…
Cancel
Save