refactor: ♻️ 字典重构,系统权限模块优化

This commit is contained in:
hxr
2024-06-24 08:21:46 +08:00
parent 239989f4aa
commit d5dfcb978e
43 changed files with 1243 additions and 1821 deletions

View File

@@ -27,7 +27,7 @@
<el-button
v-hasPerm="['sys:menu:add']"
type="success"
@click="handleDialogOpen(0)"
@click="handleOpenDialog(0)"
>
<template #icon><i-ep-plus /></template>
新增</el-button
@@ -84,11 +84,18 @@
</template>
</el-table-column>
<el-table-column
label="路由名称"
align="left"
width="150"
prop="routeName"
/>
<el-table-column
label="路由路径"
align="left"
width="150"
prop="path"
prop="routePath"
/>
<el-table-column
@@ -122,7 +129,7 @@
type="primary"
link
size="small"
@click.stop="handleDialogOpen(scope.row.id)"
@click.stop="handleOpenDialog(scope.row.id)"
>
<i-ep-plus />新增
</el-button>
@@ -132,7 +139,7 @@
type="primary"
link
size="small"
@click.stop="handleDialogOpen(undefined, scope.row.id)"
@click.stop="handleOpenDialog(undefined, scope.row.id)"
>
<i-ep-edit />编辑
</el-button>
@@ -150,19 +157,17 @@
</el-table>
</el-card>
<el-dialog
<el-drawer
v-model="dialog.visible"
:title="dialog.title"
destroy-on-close
append-to-body
width="1000px"
@close="closeDialog"
@close="handleCloseDialog"
size="50%"
>
<el-form
ref="menuFormRef"
:model="formData"
:rules="rules"
label-width="160px"
label-width="100px"
>
<el-form-item label="父级菜单" prop="parentId">
<el-tree-select
@@ -196,7 +201,10 @@
label="外链地址"
prop="path"
>
<el-input v-model="formData.path" placeholder="请输入外链完整路径" />
<el-input
v-model="formData.routePath"
placeholder="请输入外链完整路径"
/>
</el-form-item>
<el-form-item
@@ -204,8 +212,29 @@
formData.type == MenuTypeEnum.CATALOG ||
formData.type == MenuTypeEnum.MENU
"
label=""
prop="path"
prop="routeName"
>
<template #label>
<div>
路由名称
<el-tooltip placement="bottom" effect="light">
<template #content>
如果需要开启缓存,需保证页面 defineOptions 中的 name
与此处一致,建议使用驼峰。
</template>
<i-ep-QuestionFilled class="inline-block" />
</el-tooltip>
</div>
</template>
<el-input v-model="formData.routeName" placeholder="User" />
</el-form-item>
<el-form-item
v-if="
formData.type == MenuTypeEnum.CATALOG ||
formData.type == MenuTypeEnum.MENU
"
prop="routePath"
>
<template #label>
<div>
@@ -222,10 +251,10 @@
</template>
<el-input
v-if="formData.type == MenuTypeEnum.CATALOG"
v-model="formData.path"
v-model="formData.routePath"
placeholder="system"
/>
<el-input v-else v-model="formData.path" placeholder="user" />
<el-input v-else v-model="formData.routePath" placeholder="user" />
</el-form-item>
<el-form-item
@@ -405,10 +434,10 @@
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="closeDialog">取 消</el-button>
<el-button @click="handleCloseDialog">取 消</el-button>
</div>
</template>
</el-dialog>
</el-drawer>
</div>
</template>
@@ -418,8 +447,7 @@ defineOptions({
inheritAttrs: false,
});
import MenuAPI from "@/api/menu";
import { MenuQuery, MenuForm, MenuVO } from "@/api/menu/model";
import MenuAPI, { MenuQuery, MenuForm, MenuVO } from "@/api/menu";
import { MenuTypeEnum } from "@/enums/MenuTypeEnum";
const queryFormRef = ref(ElForm);
@@ -458,7 +486,7 @@ const rules = reactive({
parentId: [{ required: true, message: "请选择顶级菜单", trigger: "blur" }],
name: [{ required: true, message: "请输入菜单名称", trigger: "blur" }],
type: [{ required: true, message: "请选择菜单类型", trigger: "blur" }],
path: [{ required: true, message: "请输入路由路径", trigger: "blur" }],
routePath: [{ required: true, message: "请输入路由路径", trigger: "blur" }],
component: [{ required: true, message: "请输入组件路径", trigger: "blur" }],
visible: [{ required: true, message: "请输入路由路径", trigger: "blur" }],
});
@@ -496,7 +524,7 @@ function handleRowClick(row: MenuVO) {
* @param parentId 父菜单ID
* @param menuId 菜单ID
*/
function handleDialogOpen(parentId?: number, menuId?: number) {
function handleOpenDialog(parentId?: number, menuId?: number) {
MenuAPI.getOptions()
.then((data) => {
menuOptions.value = [{ value: 0, label: "顶级菜单", children: data }];
@@ -541,13 +569,13 @@ function submitForm() {
if (menuId) {
MenuAPI.update(menuId, formData.value).then(() => {
ElMessage.success("修改成功");
closeDialog();
handleCloseDialog();
handleQuery();
});
} else {
MenuAPI.add(formData.value).then(() => {
ElMessage.success("新增成功");
closeDialog();
handleCloseDialog();
handleQuery();
});
}
@@ -577,7 +605,7 @@ function handleDelete(menuId: number) {
}
// 关闭弹窗
function closeDialog() {
function handleCloseDialog() {
dialog.visible = false;
menuFormRef.value.resetFields();
menuFormRef.value.clearValidate();