refactor: ♻️ 修改菜单时,禁止顶级菜单选用自己

修改菜单时,禁止顶级菜单选用自己
This commit is contained in:
Theo
2024-12-05 22:07:06 +08:00
parent 4901b54892
commit 8ad225923d

View File

@@ -34,7 +34,6 @@
:data="menuTableData" :data="menuTableData"
highlight-current-row highlight-current-row
row-key="id" row-key="id"
:expand-row-keys="['1']"
:tree-props="{ :tree-props="{
children: 'children', children: 'children',
hasChildren: 'hasChildren', hasChildren: 'hasChildren',
@@ -369,13 +368,13 @@ const initialMenuFormData = ref<MenuForm>({
const formData = ref({ ...initialMenuFormData.value }); const formData = ref({ ...initialMenuFormData.value });
// 表单验证规则 // 表单验证规则
const rules = reactive({ const rules = reactive({
parentId: [{ required: true, message: "请选择级菜单", trigger: "blur" }], parentId: [{ required: true, message: "请选择级菜单", trigger: "blur" }],
name: [{ required: true, message: "请输入菜单名称", trigger: "blur" }], name: [{ required: true, message: "请输入菜单名称", trigger: "blur" }],
type: [{ required: true, message: "请选择菜单类型", trigger: "blur" }], type: [{ required: true, message: "请选择菜单类型", trigger: "blur" }],
routeName: [{ required: true, message: "请输入路由名称", trigger: "blur" }], routeName: [{ required: true, message: "请输入路由名称", trigger: "blur" }],
routePath: [{ required: true, message: "请输入路由路径", trigger: "blur" }], routePath: [{ required: true, message: "请输入路由路径", trigger: "blur" }],
component: [{ required: true, message: "请输入组件路径", trigger: "blur" }], component: [{ required: true, message: "请输入组件路径", trigger: "blur" }],
visible: [{ required: true, message: "请输入路由路径", trigger: "blur" }], visible: [{ required: true, message: "请选择显示状态", trigger: "change" }],
}); });
// 选择表格的行菜单ID // 选择表格的行菜单ID
@@ -425,7 +424,7 @@ function handleOpenDialog(parentId?: string, menuId?: string) {
}); });
} else { } else {
dialog.title = "新增菜单"; dialog.title = "新增菜单";
formData.value.parentId = parentId; formData.value.parentId = parentId?.toString();
} }
}); });
} }
@@ -455,6 +454,11 @@ function handleSubmit() {
if (isValid) { if (isValid) {
const menuId = formData.value.id; const menuId = formData.value.id;
if (menuId) { if (menuId) {
//修改时父级菜单不能为当前菜单
if (formData.value.parentId == menuId) {
ElMessage.error("父级菜单不能为当前菜单");
return;
}
MenuAPI.update(menuId, formData.value).then(() => { MenuAPI.update(menuId, formData.value).then(() => {
ElMessage.success("修改成功"); ElMessage.success("修改成功");
handleCloseDialog(); handleCloseDialog();