添加每个菜单的权限增删功能

This commit is contained in:
葛林强 2026-01-29 13:07:20 +08:00
parent ac727bb353
commit 50f83b2714
13 changed files with 525 additions and 42 deletions

View File

@ -0,0 +1,9 @@
package org.wcs.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.wcs.model.po.app.AppBaseMenuPermission;
@Mapper
public interface AppBaseMenuPermissionMapper extends BaseMapper<AppBaseMenuPermission> {
}

View File

@ -0,0 +1,93 @@
package org.wcs.mapper.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.wcs.mapper.AppBaseMenuPermissionMapper;
import org.wcs.mapper.intf.AppBaseMenuPermissionService;
import org.wcs.model.bo.db.DataBaseActionResult;
import org.wcs.model.po.app.AppBaseMenuPermission;
import java.util.List;
/**
* 菜单权限数据访问层
*/
@Service
public class AppBaseMenuPermissionDao extends ServiceImpl<AppBaseMenuPermissionMapper, AppBaseMenuPermission> implements AppBaseMenuPermissionService {
/**
* 根据菜单ID查询菜单权限
* @param menuId 菜单ID
* @return 菜单权限列表
*/
@Override
public List<AppBaseMenuPermission> queryByMenuId(String menuId) {
LambdaQueryWrapper<AppBaseMenuPermission> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(menuId != null, AppBaseMenuPermission::getMenuId, menuId);
queryWrapper.orderByAsc(AppBaseMenuPermission::getPermissionId);
try{
return super.list(queryWrapper);
} catch (Exception e) {
return null;
}
}
/**
* 根据权限ID查询菜单权限
* @param permissionId 权限ID
* @return 菜单权限列表
*/
@Override
public List<AppBaseMenuPermission> queryByPermissionId(String permissionId) {
if(permissionId == null) {
return null;
}
LambdaQueryWrapper<AppBaseMenuPermission> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(AppBaseMenuPermission::getPermissionId, permissionId);
queryWrapper.orderByAsc(AppBaseMenuPermission::getPermissionId);
try{
return super.list(queryWrapper);
} catch (Exception e) {
return null;
}
}
/**
* 添加菜单权限
* @param appBaseMenuPermission 菜单权限
* @return 添加结果
*/
@Override
public DataBaseActionResult<Integer> insert(AppBaseMenuPermission appBaseMenuPermission) {
if(appBaseMenuPermission == null) {
return new DataBaseActionResult<>(0, new Exception("菜单权限不能为空"));
}
try {
int insert = super.baseMapper.insert(appBaseMenuPermission);
return new DataBaseActionResult<>(insert);
} catch (Exception e) {
return new DataBaseActionResult<>(0, e);
}
}
/**
* 根据权限ID删除菜单权限
* @param permissionId 权限ID
* @return 删除结果
*/
@Override
public DataBaseActionResult<Integer> deleteByPermissionId(String permissionId) {
if(permissionId == null) {
return new DataBaseActionResult<>(0, new Exception("菜单ID不能为空"));
}
LambdaQueryWrapper<AppBaseMenuPermission> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(AppBaseMenuPermission::getPermissionId, permissionId);
try {
int delete = super.baseMapper.delete(queryWrapper);
return new DataBaseActionResult<>(delete);
} catch (Exception e) {
return new DataBaseActionResult<>(0, e);
}
}
}

View File

@ -0,0 +1,15 @@
package org.wcs.mapper.intf;
import com.baomidou.mybatisplus.extension.service.IService;
import org.wcs.model.bo.db.DataBaseActionResult;
import org.wcs.model.po.app.AppBaseMenuPermission;
import java.util.List;
public interface AppBaseMenuPermissionService extends IService<AppBaseMenuPermission> {
List<AppBaseMenuPermission> queryByMenuId(String menuId); // 查询菜单权限
List<AppBaseMenuPermission> queryByPermissionId(String permissionId); // 查询权限菜单
DataBaseActionResult<Integer> insert(AppBaseMenuPermission appBaseMenuPermission); // 添加菜单权限
DataBaseActionResult<Integer> deleteByPermissionId(String permissionId);
}

View File

@ -0,0 +1,37 @@
package org.wcs.model.dto.serve.menu;
import com.fasterxml.jackson.annotation.JsonProperty;
import jakarta.validation.constraints.NotBlank;
import lombok.Getter;
import lombok.Setter;
/**
* 添加菜单权限参数
*/
@Getter
@Setter
public class AddBaseMenuPermission {
/**
* 菜单ID
*/
@NotBlank(message = "菜单ID不能为空")
@JsonProperty("menuId")
private String menuId;
/**
* 权限ID
*/
@NotBlank(message = "权限ID不能为空")
@JsonProperty("permissionId")
private String permissionId;
/**
* 权限名称
*/
@NotBlank(message = "权限名称不能为空")
@JsonProperty("permissionName")
private String permissionName;
}

View File

@ -0,0 +1,57 @@
package org.wcs.model.po.app;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
/**
* 菜单对应的基础权限
*/
@Getter
@Setter
@TableName("t_app_base_menu_permission")
public class AppBaseMenuPermission {
/**
* 权限id
*/
@TableId("permission_id")
private String permissionId;
/**
* 权限名称
*/
@TableField("permission_name")
private String permissionName;
/**
* 菜单id
*/
@TableField("menu_id")
private String menuId;
/**
* 创建人
*/
@TableField("create_person")
private String createPerson;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 备注
*/
@TableField("remark")
private String remark;
}

View File

@ -0,0 +1,29 @@
package org.wcs.model.vo.serve.menu;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class MenuPermissionVo {
/**
* 权限ID
*/
@JsonProperty("permissionId")
private String permissionId;
/**
* 权限名称
*/
@JsonProperty("permissionName")
private String permissionName;
/**
* 菜单ID
*/
@JsonProperty("menuId")
private String menuId;
}

View File

@ -4,11 +4,13 @@ import jakarta.validation.constraints.NotBlank;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.wcs.model.dto.serve.menu.AddBaseMenuPermission;
import org.wcs.model.dto.serve.menu.AddMenuReq; import org.wcs.model.dto.serve.menu.AddMenuReq;
import org.wcs.model.dto.serve.menu.UpdateMenuReq; import org.wcs.model.dto.serve.menu.UpdateMenuReq;
import org.wcs.model.vo.serve.AppServeDataResponse; import org.wcs.model.vo.serve.AppServeDataResponse;
import org.wcs.model.dto.serve.menu.QueryMenuReq; import org.wcs.model.dto.serve.menu.QueryMenuReq;
import org.wcs.model.vo.serve.AppServeResponse; import org.wcs.model.vo.serve.AppServeResponse;
import org.wcs.model.vo.serve.menu.MenuPermissionVo;
import org.wcs.model.vo.serve.menu.QueryMenuResp; import org.wcs.model.vo.serve.menu.QueryMenuResp;
import org.wcs.serve.service.intf.IMenuService; import org.wcs.serve.service.intf.IMenuService;
@ -65,5 +67,35 @@ public class MenuController {
return menuService.updateMenu(updateMenuReq); return menuService.updateMenu(updateMenuReq);
} }
/**
* 查询菜单权限
* @param menuId 菜单ID
* @return 菜单权限列表
*/
@GetMapping("/queryMenuPermission/{menuId}")
public AppServeDataResponse<List<MenuPermissionVo>> queryMenuPermission(@PathVariable String menuId) {
return menuService.queryMenuPermission(menuId);
}
/**
* 添加菜单权限
* @param request 添加的数据
* @return 添加结果
*/
@PostMapping("/addBaseMenuPermission")
public AppServeResponse addBaseMenuPermission(@RequestBody @Validated AddBaseMenuPermission request) {
return menuService.addBaseMenuPermission(request);
}
/**
* 删除菜单权限
* @param permissionId 菜单权限ID
* @return 删除结果
*/
@DeleteMapping("/deleteBaseMenuPermission/{permissionId}")
public AppServeResponse deleteBaseMenuPermission(@PathVariable @NotBlank(message = "权限ID不能为空") String permissionId) {
return menuService.deleteBaseMenuPermission(permissionId);
}
} }

View File

@ -1,27 +1,36 @@
package org.wcs.serve.service.impl; package org.wcs.serve.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.wcs.factory.AppServeResponseFactory; import org.wcs.factory.AppServeResponseFactory;
import org.wcs.mapper.intf.AppBaseMenuPermissionService;
import org.wcs.mapper.intf.AppBaseMenuService; import org.wcs.mapper.intf.AppBaseMenuService;
import org.wcs.model.dto.serve.menu.AddBaseMenuPermission;
import org.wcs.model.dto.serve.menu.AddMenuReq; import org.wcs.model.dto.serve.menu.AddMenuReq;
import org.wcs.model.dto.serve.menu.UpdateMenuReq; import org.wcs.model.dto.serve.menu.UpdateMenuReq;
import org.wcs.model.po.app.AppBaseMenuPermission;
import org.wcs.model.vo.serve.AppServeDataResponse; import org.wcs.model.vo.serve.AppServeDataResponse;
import org.wcs.model.dto.serve.menu.QueryMenuReq; import org.wcs.model.dto.serve.menu.QueryMenuReq;
import org.wcs.model.vo.serve.AppServeResponse; import org.wcs.model.vo.serve.AppServeResponse;
import org.wcs.model.vo.serve.menu.MenuPermissionVo;
import org.wcs.model.vo.serve.menu.QueryMenuResp; import org.wcs.model.vo.serve.menu.QueryMenuResp;
import org.wcs.model.po.app.AppBaseMenu; import org.wcs.model.po.app.AppBaseMenu;
import org.wcs.serve.service.intf.IMenuService; import org.wcs.serve.service.intf.IMenuService;
import org.wcs.utils.AppBeanUtils; import org.wcs.utils.AppBeanUtils;
import org.wcs.utils.AppStringUtils;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@Slf4j
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class MenuService implements IMenuService { public class MenuService implements IMenuService {
private final AppBaseMenuService appBaseMenuService; private final AppBaseMenuService appBaseMenuService; // 菜单服务
private final AppBaseMenuPermissionService baseMenuPermissionService; // 菜单权限服务
/** /**
* 查询菜单 * 查询菜单
@ -130,4 +139,85 @@ public class MenuService implements IMenuService {
} }
return AppServeResponseFactory.success(String.format("更新成功,更新了 %d 条记录", updateResult)); return AppServeResponseFactory.success(String.format("更新成功,更新了 %d 条记录", updateResult));
} }
/**
* 查询菜单权限
* @param menuId 菜单ID
* @return 菜单权限列表
*/
@Override
public AppServeDataResponse<List<MenuPermissionVo>> queryMenuPermission(String menuId) {
List<AppBaseMenuPermission> menuPermissions = baseMenuPermissionService.queryByMenuId(menuId);
if(menuPermissions == null) {
return AppServeResponseFactory.internalServerError("数据服务异常", null);
}
List<MenuPermissionVo> returnMenuPermissions = AppBeanUtils.copyListProperties(menuPermissions, MenuPermissionVo::new);
return AppServeResponseFactory.success("查询成功", returnMenuPermissions);
}
/**
* 添加菜单权限
* @param request 添加参数
* @return 添加结果
*/
@Override
public AppServeResponse addBaseMenuPermission(AddBaseMenuPermission request) {
Object userIdObj = StpUtil.getLoginId();
if(userIdObj == null) {
return AppServeResponseFactory.unauthorized("用户未登录");
}
String userId = userIdObj.toString();
if(AppStringUtils.isEmpty(userId)) {
return AppServeResponseFactory.unauthorized("未检索到您的登录信息或者登录已经过期");
}
List<AppBaseMenuPermission> menuPermissions = baseMenuPermissionService.queryByPermissionId(request.getPermissionId());
if(menuPermissions == null) {
return AppServeResponseFactory.fail("数据服务异常");
}
if(!menuPermissions.isEmpty()) {
return AppServeResponseFactory.fail(String.format("权限ID %s 已存在", request.getPermissionId()));
}
AppBaseMenuPermission insertValue = new AppBaseMenuPermission();
insertValue.setPermissionId(request.getPermissionId());
insertValue.setPermissionName(request.getPermissionName());
insertValue.setMenuId(request.getMenuId());
insertValue.setCreatePerson(userId);
insertValue.setCreateTime(LocalDateTime.now());
Integer insertCount = baseMenuPermissionService.insert(insertValue).result();
if(insertCount > 0) {
log.info("用户:{} 添加菜单权限基础资料成功,数据:{}", userId, AppStringUtils.objectToString(insertValue));
return AppServeResponseFactory.success(String.format("添加成功,添加了 %d 条记录", insertCount));
}
return AppServeResponseFactory.fail("数据服务异常");
}
/**
* 删除菜单权限
* @param permissionId 菜单权限ID
* @return 删除结果
*/
@Override
public AppServeResponse deleteBaseMenuPermission(String permissionId) {
Object userIdObj = StpUtil.getLoginId();
if(userIdObj == null) {
return AppServeResponseFactory.unauthorized("用户未登录");
}
String userId = userIdObj.toString();
if(AppStringUtils.isEmpty(userId)) {
return AppServeResponseFactory.unauthorized("未检索到您的登录信息或者登录已经过期");
}
List<AppBaseMenuPermission> menuPermissions = baseMenuPermissionService.queryByPermissionId(permissionId);
if(menuPermissions == null) {
return AppServeResponseFactory.fail("数据服务异常");
}
if(menuPermissions.isEmpty()) {
return AppServeResponseFactory.fail(String.format("权限ID %s 不存在", permissionId));
}
Integer deleteCount = baseMenuPermissionService.deleteByPermissionId(permissionId).result();
if(deleteCount > 0) {
log.info("用户:{} 删除菜单权限基础资料成功权限ID{}", userId, menuPermissions);
return AppServeResponseFactory.success(String.format("删除成功,删除了 %d 条记录", deleteCount));
}
return AppServeResponseFactory.fail("数据服务异常");
}
} }

View File

@ -1,10 +1,12 @@
package org.wcs.serve.service.intf; package org.wcs.serve.service.intf;
import org.wcs.model.dto.serve.menu.AddBaseMenuPermission;
import org.wcs.model.dto.serve.menu.AddMenuReq; import org.wcs.model.dto.serve.menu.AddMenuReq;
import org.wcs.model.dto.serve.menu.UpdateMenuReq; import org.wcs.model.dto.serve.menu.UpdateMenuReq;
import org.wcs.model.vo.serve.AppServeDataResponse; import org.wcs.model.vo.serve.AppServeDataResponse;
import org.wcs.model.dto.serve.menu.QueryMenuReq; import org.wcs.model.dto.serve.menu.QueryMenuReq;
import org.wcs.model.vo.serve.AppServeResponse; import org.wcs.model.vo.serve.AppServeResponse;
import org.wcs.model.vo.serve.menu.MenuPermissionVo;
import org.wcs.model.vo.serve.menu.QueryMenuResp; import org.wcs.model.vo.serve.menu.QueryMenuResp;
import java.util.List; import java.util.List;
@ -14,4 +16,8 @@ public interface IMenuService {
AppServeResponse addMenu(AddMenuReq addMenuReq); // 添加菜单 AppServeResponse addMenu(AddMenuReq addMenuReq); // 添加菜单
AppServeResponse deleteMenu(String menuId); // 删除菜单 AppServeResponse deleteMenu(String menuId); // 删除菜单
AppServeResponse updateMenu(UpdateMenuReq updateMenuReq); // 更新菜单 AppServeResponse updateMenu(UpdateMenuReq updateMenuReq); // 更新菜单
AppServeDataResponse<List<MenuPermissionVo>> queryMenuPermission(String menuId); // 查询菜单权限
AppServeResponse addBaseMenuPermission(AddBaseMenuPermission request); // 添加菜单权限
AppServeResponse deleteBaseMenuPermission(String permissionId); // 删除菜单权限
} }

View File

@ -1,6 +1,7 @@
import axiosInstance from "@/api/axios.ts"; import axiosInstance from "@/api/axios.ts";
import type {IMenuSearch} from "@/interface/page/menu/IMenuSearch.ts"; import type {IMenuSearch} from "@/interface/page/menu/IMenuSearch.ts";
import type {IAppBaseMenu} from "@/model/table/IAppBaseMenu.ts"; import type {IAppBaseMenu} from "@/model/table/IAppBaseMenu.ts";
import type {IBaseMenuPermissionVo} from "@/model/table/IBaseMenuPermissionVo.ts";
export default class MenuApi { export default class MenuApi {
// 模糊查询菜单 // 模糊查询菜单
@ -19,4 +20,17 @@ export default class MenuApi {
static updateMenu(menuData: IAppBaseMenu) { static updateMenu(menuData: IAppBaseMenu) {
return axiosInstance.post("/app/menu/updateMenu", menuData); return axiosInstance.post("/app/menu/updateMenu", menuData);
} }
// 查询菜单权限
static queryMenuPermission(menuId?: string) {
return axiosInstance.get("/app/menu/queryMenuPermission/" + menuId);
}
// 添加菜单权限
static addMenuPermission(menuPermissionData: IBaseMenuPermissionVo) {
return axiosInstance.post("/app/menu/addBaseMenuPermission", menuPermissionData);
}
// 删除菜单权限
static deleteMenuPermission(permissionId: string) {
return axiosInstance.delete("/app/menu/deleteBaseMenuPermission/" + permissionId);
}
} }

View File

@ -6,6 +6,9 @@ import MessageUtils from "@/utils/MessageUtils.ts";
import MenuApi from "@/api/menu.ts"; import MenuApi from "@/api/menu.ts";
import type {AppServeResponse} from "@/interface/api/AppServeResponse.ts"; import type {AppServeResponse} from "@/interface/api/AppServeResponse.ts";
import {AppServeResponseCodeEnum} from "@/constant/enums/AppServeResponseCodeEnum.ts"; import {AppServeResponseCodeEnum} from "@/constant/enums/AppServeResponseCodeEnum.ts";
import StringUtils from "@/utils/StringUtils.ts";
import type {IBaseMenuPermissionVo} from "@/model/table/IBaseMenuPermissionVo.ts";
import type {AppServeDataResponse} from "@/interface/api/AppServeDataResponse.ts";
const modelValue = defineModel('modelValue', {required: true, default: false}); const modelValue = defineModel('modelValue', {required: true, default: false});
const props = defineProps(['formData']); const props = defineProps(['formData']);
@ -14,6 +17,8 @@ const close = () => {
modelValue.value = false; modelValue.value = false;
} }
const formData = computed(() => props.formData); const formData = computed(() => props.formData);
const permissionList = ref<IBaseMenuPermissionVo[]>([]); //
const addPermissionData = ref<IBaseMenuPermissionVo>({}); //
// //
const deleteMenu = () => { const deleteMenu = () => {
@ -50,46 +55,129 @@ const save = () => {
loading.close(); loading.close();
}) })
}).catch(() => {}); }).catch(() => {});
}
//
const queryMenuPermission = () => {
const loading = MessageUtils.loading("正在请求服务器");
MenuApi.queryMenuPermission(formData.value.menuId).then(res => {
const response = JSON.parse(JSON.stringify(res.data)) as AppServeDataResponse<IBaseMenuPermissionVo[]>;
if(response.code == AppServeResponseCodeEnum.SUCCESS && response.data != undefined) {
permissionList.value = response.data;
MessageUtils.successMessage('查询成功');
return;
}
MessageUtils.warningMessageBox(response.msg, '警告');
}).catch(() => {}).finally(() => {
loading.close();
})
}
//
const addMenuPermission = () => {
MessageUtils.confirmMessageBox('确定添加上述数据?','添加确认').then(()=>{
const loading = MessageUtils.loading();
addPermissionData.value.menuId = formData.value.menuId;
MenuApi.addMenuPermission(addPermissionData.value).then(res => {
const response = JSON.parse(JSON.stringify(res.data)) as AppServeResponse;
if(response.code == AppServeResponseCodeEnum.SUCCESS) {
MessageUtils.successMessage("添加成功");
queryMenuPermission();
return;
}
MessageUtils.warningMessageBox(response.msg, '警告');
}).catch(() => {}).finally(() => {
loading.close();
})
}).catch(()=>{});
}
//
const deleteMenuPermission = (row: any) => {
MessageUtils.confirmMessageBox('确定要删除这个子权限吗?','删除二次确认').then(()=>{
const loading = MessageUtils.loading();
MenuApi.deleteMenuPermission(row.permissionId).then(res => {
const response = JSON.parse(JSON.stringify(res.data)) as AppServeResponse;
if(response.code == AppServeResponseCodeEnum.SUCCESS) {
MessageUtils.successMessage("删除成功");
queryMenuPermission();
return;
}
MessageUtils.warningMessageBox(response.msg, '警告');
}).catch(() => {}).finally(() => {
loading.close();
})
}).catch(()=>{});
} }
</script> </script>
<template> <template>
<div> <div>
<el-dialog :model-value="modelValue" title="修改菜单详细信息" @close="close" :close-on-click-modal="false"> <el-drawer direction="btt" size="70%" :model-value="modelValue" title="菜单详细信息" @close="close" :close-on-click-modal="false" @open="queryMenuPermission">
<el-scrollbar style="height:50vh"> <el-scrollbar style="height:50vh">
<el-form :model="formData" label-position="right" label-width="100px" require-asterisk-position="right"> <el-row>
<el-form-item label="菜单ID:" required> <el-col :span="10">
<el-text>{{formData.menuId}}</el-text> <el-form :model="formData" label-position="right" label-width="100px" require-asterisk-position="right">
</el-form-item> <el-form-item label="菜单ID:" required>
<el-form-item label="菜单名称:" required> <el-text>{{formData.menuId}}</el-text>
<el-input v-model="formData.menuName" placeholder="请填写菜单名称"></el-input> </el-form-item>
</el-form-item> <el-form-item label="菜单名称:" required>
<el-form-item label="菜单级别:" required> <el-input v-model="formData.menuName" placeholder="请填写菜单名称"></el-input>
<el-select v-model="formData.menuLevel" placeholder="请选择菜单级别" disabled clearable> </el-form-item>
<el-option :key="1" label="一级菜单" :value="1"/> <el-form-item label="菜单级别:" required>
<el-option :key="2" label="二级菜单" :value="2"/> <el-select v-model="formData.menuLevel" placeholder="请选择菜单级别" disabled clearable>
</el-select> <el-option :key="1" label="一级菜单" :value="1"/>
</el-form-item> <el-option :key="2" label="二级菜单" :value="2"/>
<el-form-item label="上级菜单ID:"> </el-select>
<el-input v-model="formData.fatherMenuId" placeholder="请填写上级菜单ID"></el-input> </el-form-item>
</el-form-item> <el-form-item label="上级菜单ID:">
<el-form-item label="菜单状态:" required> <el-input v-model="formData.fatherMenuId" placeholder="请填写上级菜单ID"></el-input>
<el-switch v-model="formData.menuStatus" inline-prompt active-text="启用" :active-value="1" inactive-text="停用" :inactive-value="0"></el-switch> </el-form-item>
</el-form-item> <el-form-item label="菜单状态:" required>
<el-form-item label="菜单图标:"> <el-switch v-model="formData.menuStatus" inline-prompt active-text="启用" :active-value="1" inactive-text="停用" :inactive-value="0"></el-switch>
<el-input v-model="formData.menuIco" placeholder="请填写图标名称仅限element-plus自带图标"></el-input> </el-form-item>
</el-form-item> <el-form-item label="菜单图标:">
<el-form-item label="菜单路由名称:"> <el-input v-model="formData.menuIco" placeholder="请填写图标名称仅限element-plus自带图标"></el-input>
<el-input v-model="formData.routerName" placeholder="请填写菜单路由名称"></el-input> </el-form-item>
</el-form-item> <el-form-item label="菜单路由名称:">
<el-form-item label="菜单创建时间:"> <el-input v-model="formData.routerName" placeholder="请填写菜单路由名称"></el-input>
<el-text>{{FormatterUtils.formatTime(formData.createTime)}}</el-text> </el-form-item>
</el-form-item> <el-form-item label="菜单创建时间:">
<el-form-item label="上次修改时间:"> <el-text>{{FormatterUtils.formatTime(formData.createTime)}}</el-text>
<el-text>{{FormatterUtils.formatTime(formData.updateTime)}}</el-text> </el-form-item>
</el-form-item> <el-form-item label="上次修改时间:">
</el-form> <el-text>{{FormatterUtils.formatTime(formData.updateTime)}}</el-text>
</el-form-item>
</el-form>
</el-col>
<el-col :span="13" :offset="1">
<h3 style="margin-bottom: 10px; font-weight: bolder">子权限编辑新增</h3>
<el-form label-position="left" label-width="100px" require-asterisk-position="right" inline>
<el-form-item>
<el-button type="primary" @click="queryMenuPermission">查询</el-button>
</el-form-item>
<el-form-item label="权限ID:" required>
<el-input v-model="addPermissionData.permissionId" placeholder="请填写权限ID"></el-input>
</el-form-item>
<el-form-item label="权限名称:" required>
<el-input v-model="addPermissionData.permissionName" placeholder="请填写权限名称"></el-input>
</el-form-item>
<el-form-item>
<el-button type="warning" @click="addMenuPermission">添加</el-button>
</el-form-item>
</el-form>
<el-table :data="permissionList" stripe border style="width: 100%" height="300px">
<el-table-column type="index" width="80" label="序号" align="center" show-overflow-tooltip/>
<el-table-column prop="permissionId" label="权限ID" align="center" show-overflow-tooltip />
<el-table-column prop="permissionName" label="权限名称" align="center" show-overflow-tooltip/>
<el-table-column label="操作" width="80" align="center">
<template #default="scope">
<el-button-group>
<el-button size="small" type="danger" @click="deleteMenuPermission(scope.row)">删除</el-button>
</el-button-group>
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
</el-scrollbar> </el-scrollbar>
<template #footer> <template #footer>
<el-button-group> <el-button-group>
@ -98,7 +186,7 @@ const save = () => {
<el-button type="danger" @click="close">关闭窗口</el-button> <el-button type="danger" @click="close">关闭窗口</el-button>
</el-button-group> </el-button-group>
</template> </template>
</el-dialog> </el-drawer>
</div> </div>
</template> </template>

View File

@ -0,0 +1,13 @@
/**
*
*/
export interface IBaseMenuPermissionVo {
// 权限id
permissionId?: string;
// 权限名称
permissionName?: string;
// 菜单id
menuId?: string;
}

View File

@ -98,8 +98,8 @@ const handleEdit = (index: number, row: any) => {
<el-table :data="queryMenuResult" stripe border style="width: 100%" max-height="calc(100vh - 270px)"> <el-table :data="queryMenuResult" stripe border style="width: 100%" max-height="calc(100vh - 270px)">
<el-table-column type="index" width="80" label="序号" align="center" show-overflow-tooltip/> <el-table-column type="index" width="80" label="序号" align="center" show-overflow-tooltip/>
<el-table-column prop="menuId" label="菜单ID" width="100" align="center" show-overflow-tooltip /> <el-table-column prop="menuId" label="菜单ID" width="100" align="center" show-overflow-tooltip />
<el-table-column prop="menuName" label="菜单名称" align="center" show-overflow-tooltip/> <el-table-column prop="menuName" label="菜单名称" min-width="150" align="center" show-overflow-tooltip/>
<el-table-column prop="menuLevel" label="菜单级别" align="center" show-overflow-tooltip > <el-table-column prop="menuLevel" label="菜单级别" min-width="120" align="center" show-overflow-tooltip >
<template #default="scope"> <template #default="scope">
<el-tag size="small" :type="menuTagStyleFormatter.menuLevelTagStyleFormatter(scope.row.menuLevel).type"> <el-tag size="small" :type="menuTagStyleFormatter.menuLevelTagStyleFormatter(scope.row.menuLevel).type">
{{menuTagStyleFormatter.menuLevelTagStyleFormatter(scope.row.menuLevel).label}}</el-tag> {{menuTagStyleFormatter.menuLevelTagStyleFormatter(scope.row.menuLevel).label}}</el-tag>
@ -112,15 +112,15 @@ const handleEdit = (index: number, row: any) => {
{{menuTagStyleFormatter.menuStatusTagStyleFormatter(scope.row.menuStatus).label}}</el-tag> {{menuTagStyleFormatter.menuStatusTagStyleFormatter(scope.row.menuStatus).label}}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="menuIco" label="菜单图标" align="center" show-overflow-tooltip > <el-table-column prop="menuIco" label="菜单图标" align="center" width="100" show-overflow-tooltip >
<template #default="scope"> <template #default="scope">
<el-icon v-if="!StringUtils.isNullOrEmpty(scope.row.menuIco)" color="#000"><component :is='scope.row.menuIco'></component></el-icon> <el-icon v-if="!StringUtils.isNullOrEmpty(scope.row.menuIco)" color="#000"><component :is='scope.row.menuIco'></component></el-icon>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="routerName" label="菜单路由名称" align="center" show-overflow-tooltip/> <el-table-column prop="routerName" label="菜单路由名称" align="center" width="180" show-overflow-tooltip/>
<el-table-column prop="createTime" label="菜单创建时间" align="center" :formatter="FormatterUtils.formatCellValueTime" show-overflow-tooltip/> <el-table-column prop="createTime" label="菜单创建时间" align="center" width="180" :formatter="FormatterUtils.formatCellValueTime" show-overflow-tooltip/>
<el-table-column prop="updateTime" label="菜单更新时间" align="center" :formatter="FormatterUtils.formatCellValueTime" show-overflow-tooltip/> <el-table-column prop="updateTime" label="菜单更新时间" align="center" width="180" :formatter="FormatterUtils.formatCellValueTime" show-overflow-tooltip/>
<el-table-column label="操作" width="80" align="center"> <el-table-column label="操作" width="150" align="center">
<template #default="scope"> <template #default="scope">
<el-button size="small" type="primary" @click="handleEdit(scope.$index, scope.row)">查看</el-button> <el-button size="small" type="primary" @click="handleEdit(scope.$index, scope.row)">查看</el-button>
</template> </template>