diff --git a/das/src/main/java/com/das/common/config/SessionUtil.java b/das/src/main/java/com/das/common/config/SessionUtil.java new file mode 100644 index 00000000..70fdcc02 --- /dev/null +++ b/das/src/main/java/com/das/common/config/SessionUtil.java @@ -0,0 +1,8 @@ +package com.das.common.config; + +/** + * Session 变量定义 + */ +public class SessionUtil { + public static final String SESSION_USER_KEY = "current_user"; +} diff --git a/das/src/main/java/com/das/common/config/StpInterfaceImpl.java b/das/src/main/java/com/das/common/config/StpInterfaceImpl.java new file mode 100644 index 00000000..a1c653bd --- /dev/null +++ b/das/src/main/java/com/das/common/config/StpInterfaceImpl.java @@ -0,0 +1,43 @@ +package com.das.common.config; + +import cn.dev33.satoken.stp.StpInterface; +import cn.dev33.satoken.stp.StpUtil; +import org.springframework.stereotype.Component; +import com.das.modules.auth.domain.vo.SysUserVo; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +/** + * 自定义权限验证接口扩展 + */ +@Component // 保证此类被springboot扫描,完成sa-token的自定义权限验证扩展 +public class StpInterfaceImpl implements StpInterface { + @Override + public List getPermissionList(Object loginId, String s) { + SysUserVo currentUser = (SysUserVo) StpUtil.getTokenSession().get(SessionUtil.SESSION_USER_KEY); + if(currentUser==null){ + return Collections.emptyList(); + }else{ + List list = new ArrayList<>(); + currentUser.getAuthorities().forEach(item->{ + list.add(item.toString()); + }); + + return list; + } + } + + /** + * 权限判断这块 全部采用权限Permission 判断,不采用角色Role判断 + * @param loginId + * @param s + * @return + */ + @Override + public List getRoleList(Object loginId, String s) { + return Collections.emptyList(); + } +} diff --git a/das/src/main/java/com/das/modules/auth/controller/SysMenusController.java b/das/src/main/java/com/das/modules/auth/controller/SysMenusController.java index cbe2ed49..48764bab 100644 --- a/das/src/main/java/com/das/modules/auth/controller/SysMenusController.java +++ b/das/src/main/java/com/das/modules/auth/controller/SysMenusController.java @@ -1,15 +1,21 @@ package com.das.modules.auth.controller; +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.stp.StpUtil; +import com.das.common.config.SessionUtil; +import com.das.common.config.SysAuthorityIds; import com.das.common.result.R; import com.das.common.utils.PageDataInfo; import com.das.common.utils.PageQuery; import com.das.modules.auth.domain.dto.DeleteDto; import com.das.modules.auth.domain.dto.SysMenuDto; import com.das.modules.auth.domain.dto.SysMenuQueryDto; +import com.das.modules.auth.domain.vo.SysUserVo; import com.das.modules.auth.entity.SysMenu; import com.das.modules.auth.service.SysMenuService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -32,6 +38,12 @@ public class SysMenusController { */ @PostMapping("/add") public R createMenu(@RequestBody SysMenuDto sysMenuDto) { + + //判断是否有权限 +// boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_ADMIN.toString()); +// if(!hasPermission){ +// return R.fail("没有系统管理权限"); +// } return R.success(sysMenuService.createMenu(sysMenuDto)); } @@ -41,6 +53,12 @@ public class SysMenusController { */ @PostMapping("/update") public R updateMenu(@RequestBody SysMenuDto sysMenuDto) { + //判断是否有权限 +// boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_ADMIN.toString()); +// if(!hasPermission){ +// return R.fail("没有系统管理权限"); +// } + sysMenuService.updateMenu(sysMenuDto); return R.success(); } @@ -51,6 +69,12 @@ public class SysMenusController { */ @PostMapping("/delete") public R deleteMenu(@RequestBody DeleteDto deleteDto) { + //判断是否有权限 +// boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_ADMIN.toString()); +// if(!hasPermission){ +// return R.fail("没有系统管理权限"); +// } + sysMenuService.deleteMenu(deleteDto); return R.success(); } diff --git a/das/src/main/java/com/das/modules/auth/controller/SysOrgController.java b/das/src/main/java/com/das/modules/auth/controller/SysOrgController.java index e3fafee0..ad771f90 100644 --- a/das/src/main/java/com/das/modules/auth/controller/SysOrgController.java +++ b/das/src/main/java/com/das/modules/auth/controller/SysOrgController.java @@ -1,5 +1,7 @@ package com.das.modules.auth.controller; +import cn.dev33.satoken.stp.StpUtil; +import com.das.common.config.SysAuthorityIds; import com.das.common.result.R; import com.das.common.utils.PageDataInfo; import com.das.common.utils.PageQuery; @@ -32,6 +34,12 @@ public class SysOrgController { */ @PostMapping("/add") public R createOrg(@RequestBody SysOrgDto sysOrgDto) { + //判断是否有权限 +// boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_ADMIN.toString()); +// if(!hasPermission){ +// return R.fail("没有系统管理权限"); +// } + return R.success(sysOrgService.createOrg(sysOrgDto)); } @@ -41,6 +49,12 @@ public class SysOrgController { */ @PostMapping("/update") public R updateOrg(@RequestBody SysOrgDto sysOrgDto) { + //判断是否有权限 +// boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_ADMIN.toString()); +// if(!hasPermission){ +// return R.fail("没有系统管理权限"); +// } + sysOrgService.updateOrg(sysOrgDto); return R.success(); } @@ -51,6 +65,12 @@ public class SysOrgController { */ @PostMapping("/delete") public R deleteOrg(@RequestBody DeleteDto deleteDto) { + //判断是否有权限 +// boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_ADMIN.toString()); +// if(!hasPermission){ +// return R.fail("没有系统管理权限"); +// } + sysOrgService.deleteOrg(deleteDto); return R.success(); } diff --git a/das/src/main/java/com/das/modules/auth/controller/SysRoleController.java b/das/src/main/java/com/das/modules/auth/controller/SysRoleController.java index 64d12ef0..ac1351a7 100644 --- a/das/src/main/java/com/das/modules/auth/controller/SysRoleController.java +++ b/das/src/main/java/com/das/modules/auth/controller/SysRoleController.java @@ -1,5 +1,7 @@ package com.das.modules.auth.controller; +import cn.dev33.satoken.stp.StpUtil; +import com.das.common.config.SysAuthorityIds; import com.das.common.result.R; import com.das.common.utils.PageDataInfo; import com.das.common.utils.PageQuery; @@ -32,6 +34,12 @@ public class SysRoleController { */ @PostMapping("/add") public R createRole(@RequestBody SysRoleDto sysRoleDto) { + //判断是否有权限 +// boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_ADMIN.toString()); +// if(!hasPermission){ +// return R.fail("没有系统管理权限"); +// } + return R.success(sysRoleService.createRole(sysRoleDto)); } @@ -41,6 +49,12 @@ public class SysRoleController { */ @PostMapping("/update") public R updateRole(@RequestBody SysRoleDto sysRoleDto) { + //判断是否有权限 +// boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_ADMIN.toString()); +// if(!hasPermission){ +// return R.fail("没有系统管理权限"); +// } + return R.success(sysRoleService.updateRole(sysRoleDto)); } @@ -50,6 +64,12 @@ public class SysRoleController { */ @PostMapping("/delete") public R deleteRole(@RequestBody DeleteDto deleteDto) { + //判断是否有权限 +// boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_ADMIN.toString()); +// if(!hasPermission){ +// return R.fail("没有系统管理权限"); +// } + sysRoleService.deleteRole(deleteDto); return R.success(); } diff --git a/das/src/main/java/com/das/modules/auth/controller/SysUserController.java b/das/src/main/java/com/das/modules/auth/controller/SysUserController.java index c8d22fea..c99d1059 100644 --- a/das/src/main/java/com/das/modules/auth/controller/SysUserController.java +++ b/das/src/main/java/com/das/modules/auth/controller/SysUserController.java @@ -1,5 +1,7 @@ package com.das.modules.auth.controller; +import cn.dev33.satoken.stp.StpUtil; +import com.das.common.config.SysAuthorityIds; import com.das.common.result.R; import com.das.common.utils.PageDataInfo; import com.das.common.utils.PageQuery; @@ -33,6 +35,12 @@ public class SysUserController { */ @PostMapping("/add") public R createUser(@RequestBody SysUserDto sysUserDto) { + //判断是否有权限 +// boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_ADMIN.toString()); +// if(!hasPermission){ +// return R.fail("没有系统管理权限"); +// } + return R.success(sysUserService.createUser(sysUserDto)); } @@ -42,6 +50,12 @@ public class SysUserController { */ @PostMapping("/update") public R updateUser(@RequestBody SysUserDto sysUserDto) { + //判断是否有权限 +// boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_ADMIN.toString()); +// if(!hasPermission){ +// return R.fail("没有系统管理权限"); +// } + sysUserService.updateUser(sysUserDto); return R.success(); } @@ -52,6 +66,12 @@ public class SysUserController { */ @PostMapping("/delete") public R deleteUser(@RequestBody DeleteDto deleteDto) { + //判断是否有权限 +// boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_ADMIN.toString()); +// if(!hasPermission){ +// return R.fail("没有系统管理权限"); +// } + sysUserService.deleteUser(deleteDto); return R.success(); } diff --git a/das/src/main/java/com/das/modules/auth/domain/dto/SysUserDto.java b/das/src/main/java/com/das/modules/auth/domain/dto/SysUserDto.java index 8ade0317..35026906 100644 --- a/das/src/main/java/com/das/modules/auth/domain/dto/SysUserDto.java +++ b/das/src/main/java/com/das/modules/auth/domain/dto/SysUserDto.java @@ -1,7 +1,10 @@ package com.das.modules.auth.domain.dto; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; +import java.io.Serial; import java.io.Serializable; import java.util.Date; import java.util.List; @@ -11,6 +14,7 @@ public class SysUserDto implements Serializable { /** * 角色ID */ + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** * 账号 diff --git a/das/src/main/java/com/das/modules/auth/domain/vo/SysMenuVo.java b/das/src/main/java/com/das/modules/auth/domain/vo/SysMenuVo.java index 40d4042a..acea838b 100644 --- a/das/src/main/java/com/das/modules/auth/domain/vo/SysMenuVo.java +++ b/das/src/main/java/com/das/modules/auth/domain/vo/SysMenuVo.java @@ -1,5 +1,7 @@ package com.das.modules.auth.domain.vo; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serial; @@ -13,6 +15,7 @@ public class SysMenuVo implements Serializable { private static final long serialVersionUID = 1L; /** 菜单ID */ + @JsonSerialize(using = ToStringSerializer.class) private Long id ; /** 菜单名称 */ private String menuName ; diff --git a/das/src/main/java/com/das/modules/auth/domain/vo/SysOrgVo.java b/das/src/main/java/com/das/modules/auth/domain/vo/SysOrgVo.java new file mode 100644 index 00000000..0a845edb --- /dev/null +++ b/das/src/main/java/com/das/modules/auth/domain/vo/SysOrgVo.java @@ -0,0 +1,39 @@ +package com.das.modules.auth.domain.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +public class SysOrgVo implements Serializable { + /** 机构id */ + @JsonSerialize(using = ToStringSerializer.class) + private Long id ; + /** 机构名称 */ + private String name ; + /** 机构编码 */ + private String mrid ; + /** 省份 */ + private String province ; + /** 城市 */ + private String city ; + /** 区县 */ + private String county ; + /** 具体地址 */ + private String address ; + /** 联系电话 */ + private String contactPhone ; + /** 备注 */ + private String remarks ; + /** 机构简称 */ + private String aliasName; + /** 上级组织机构id */ + private Long parentOrgId ; + + private String parentOrgName ; + /** 乐观锁 */ + private Integer revision ; + } diff --git a/das/src/main/java/com/das/modules/auth/domain/vo/SysRoleAuthVo.java b/das/src/main/java/com/das/modules/auth/domain/vo/SysRoleAuthVo.java index 179a167e..8aa28742 100644 --- a/das/src/main/java/com/das/modules/auth/domain/vo/SysRoleAuthVo.java +++ b/das/src/main/java/com/das/modules/auth/domain/vo/SysRoleAuthVo.java @@ -1,5 +1,7 @@ package com.das.modules.auth.domain.vo; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serial; @@ -17,6 +19,7 @@ public class SysRoleAuthVo implements Serializable { /** * 账号ID */ + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** diff --git a/das/src/main/java/com/das/modules/auth/domain/vo/SysRoleVo.java b/das/src/main/java/com/das/modules/auth/domain/vo/SysRoleVo.java index 7f6406ac..282c5ad1 100644 --- a/das/src/main/java/com/das/modules/auth/domain/vo/SysRoleVo.java +++ b/das/src/main/java/com/das/modules/auth/domain/vo/SysRoleVo.java @@ -2,6 +2,8 @@ package com.das.modules.auth.domain.vo; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.Version; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serial; @@ -20,6 +22,7 @@ public class SysRoleVo implements Serializable { /** * 账号ID */ + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** diff --git a/das/src/main/java/com/das/modules/auth/domain/vo/SysUserRoleVo.java b/das/src/main/java/com/das/modules/auth/domain/vo/SysUserRoleVo.java index 3696d060..a83c43de 100644 --- a/das/src/main/java/com/das/modules/auth/domain/vo/SysUserRoleVo.java +++ b/das/src/main/java/com/das/modules/auth/domain/vo/SysUserRoleVo.java @@ -1,5 +1,7 @@ package com.das.modules.auth.domain.vo; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serial; @@ -17,6 +19,7 @@ public class SysUserRoleVo implements Serializable { /** * 账号ID */ + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** diff --git a/das/src/main/java/com/das/modules/auth/domain/vo/SysUserVo.java b/das/src/main/java/com/das/modules/auth/domain/vo/SysUserVo.java index 01e7e11d..9e45b2bf 100644 --- a/das/src/main/java/com/das/modules/auth/domain/vo/SysUserVo.java +++ b/das/src/main/java/com/das/modules/auth/domain/vo/SysUserVo.java @@ -1,9 +1,12 @@ package com.das.modules.auth.domain.vo; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serial; import java.io.Serializable; +import java.util.ArrayList; import java.util.List; /** @@ -18,6 +21,7 @@ public class SysUserVo implements Serializable { /** * 账号ID */ + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** @@ -50,6 +54,7 @@ public class SysUserVo implements Serializable { /** * 所属机构 */ + @JsonSerialize(using = ToStringSerializer.class) private Long orgId; /** @@ -57,5 +62,8 @@ public class SysUserVo implements Serializable { */ private List roleList; - + /** + *权限列表 + */ + private List authorities=new ArrayList<>(); } diff --git a/das/src/main/java/com/das/modules/auth/mapper/SysUserMapper.java b/das/src/main/java/com/das/modules/auth/mapper/SysUserMapper.java index 4965accf..a4b8a5c0 100644 --- a/das/src/main/java/com/das/modules/auth/mapper/SysUserMapper.java +++ b/das/src/main/java/com/das/modules/auth/mapper/SysUserMapper.java @@ -7,6 +7,8 @@ import com.das.modules.auth.entity.SysUser; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** *

* 用户信息 Mapper 接口 @@ -26,4 +28,10 @@ public interface SysUserMapper extends BaseMapper { IPage queryUserList(IPage page, @Param("sysUser") SysUserQueryDto sysUserQueryDto); long existUserByUserName(@Param("userName") String userName); + /** + * 根据用户id查询权限列表 + * @param userId 用户id + * @return 该用户拥有的权限id列表 + */ + List queryAuthoritiesByUserId(@Param("userId") Long userId); } diff --git a/das/src/main/java/com/das/modules/auth/service/impl/LoginServiceImpl.java b/das/src/main/java/com/das/modules/auth/service/impl/LoginServiceImpl.java index b4717b6c..146cab73 100644 --- a/das/src/main/java/com/das/modules/auth/service/impl/LoginServiceImpl.java +++ b/das/src/main/java/com/das/modules/auth/service/impl/LoginServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.das.common.captcha.CaptchaUtils; import com.das.common.config.SaTokenProperties; +import com.das.common.config.SessionUtil; import com.das.common.utils.AdminRedisTemplate; import com.das.modules.auth.domain.vo.LoginUserDetailsVo; import com.das.modules.auth.domain.dto.LoginDto; @@ -75,10 +76,18 @@ public class LoginServiceImpl implements LoginService { sysUserVo.setEmail(sysUser.getEmail()); sysUserVo.setOrgId(sysUser.getOrgId()); + //查询用户权限列表 + sysUserVo.setAuthorities(sysUserMapper.queryAuthoritiesByUserId(sysUser.getId())); + loginInfo.setSysUser(sysUserVo); // 存储用户信息到会话 loginInfo.setToken(token); loginInfo.setRefreshToken(refreshTokenUuid); + adminRedisTemplate.setEx(refreshToken, loginInfo, Duration.ofSeconds(saTokenProperties.getRefreshExpireTime())); + + //将登录用户信息存入 Session + StpUtil.getTokenSession().set(SessionUtil.SESSION_USER_KEY, sysUserVo); + return loginInfo; } diff --git a/das/src/main/java/com/das/modules/auth/service/impl/SysAuthorityServiceImpl.java b/das/src/main/java/com/das/modules/auth/service/impl/SysAuthorityServiceImpl.java index e3d37dc4..b1738198 100644 --- a/das/src/main/java/com/das/modules/auth/service/impl/SysAuthorityServiceImpl.java +++ b/das/src/main/java/com/das/modules/auth/service/impl/SysAuthorityServiceImpl.java @@ -30,9 +30,9 @@ public class SysAuthorityServiceImpl implements SysAuthorityService { @PostConstruct public void init() { List list = new ArrayList<>(); - list.add(new SysAuthority(SysAuthorityIds.SYS_AUTHORITY_ID_ADMIN,"systemMgr","系统管理权限",1)); - list.add(new SysAuthority(SysAuthorityIds.SYS_AUTHORITY_ID_DEVICE_MGR,"equipmentLedgerManagement","设备台账维护权限",1)); - list.add(new SysAuthority(SysAuthorityIds.SYS_AUTHORITY_ID_DEVICE_VIEW,"equipmentLedgerView","设备台账浏览权限",1)); + list.add(new SysAuthority(SysAuthorityIds.SYS_AUTHORITY_ID_ADMIN,"SYS_AUTHORITY_ID_ADMIN","系统管理权限",1)); + list.add(new SysAuthority(SysAuthorityIds.SYS_AUTHORITY_ID_DEVICE_MGR,"SYS_AUTHORITY_ID_DEVICE_MGR","设备台账维护权限",1)); + list.add(new SysAuthority(SysAuthorityIds.SYS_AUTHORITY_ID_DEVICE_VIEW,"SYS_AUTHORITY_ID_DEVICE_VIEW","设备台账浏览权限",1)); try { // 性能优化:先查询所有需要的权限是否存在,减少数据库访问次数 diff --git a/das/src/main/resources/mapper/SysOrgMapper.xml b/das/src/main/resources/mapper/SysOrgMapper.xml index 19fd3e9f..b02912da 100644 --- a/das/src/main/resources/mapper/SysOrgMapper.xml +++ b/das/src/main/resources/mapper/SysOrgMapper.xml @@ -2,7 +2,7 @@ - + @@ -13,42 +13,41 @@ + - - - - diff --git a/das/src/main/resources/mapper/SysUserMapper.xml b/das/src/main/resources/mapper/SysUserMapper.xml index 08f2623e..ee62c2b7 100644 --- a/das/src/main/resources/mapper/SysUserMapper.xml +++ b/das/src/main/resources/mapper/SysUserMapper.xml @@ -64,4 +64,24 @@ + diff --git a/ui/dasadmin/src/layouts/backend/index.vue b/ui/dasadmin/src/layouts/backend/index.vue index 74ca4e8e..d862a4eb 100644 --- a/ui/dasadmin/src/layouts/backend/index.vue +++ b/ui/dasadmin/src/layouts/backend/index.vue @@ -316,6 +316,36 @@ const menu = [ }, ], }, + { + id: 99, + pid: 98, + type: 'menu', + title: '角色管理', + name: 'auth\/RoleManagement', + path: 'auth\/RoleManagement', + icon: 'fa fa-group', + menu_type: 'tab', + url: '', + component: '\/src\/views\/backend\/RoleManagement\/RoleManagement.vue', + keepalive: 'auth\/RoleManagement', + extend: 'none', + children: [], + }, + { + id: 97, + pid: 96, + type: 'menu', + title: '机构管理', + name: 'auth\/InstitutionalManagement', + path: 'auth\/InstitutionalManagement', + icon: 'fa fa-group', + menu_type: 'tab', + url: '', + component: '\/src\/views\/backend\/InstitutionalManagement\/InstitutionalManagement.vue', + keepalive: 'auth\/InstitutionalManagement', + extend: 'none', + children: [], + }, ], }, ] diff --git a/ui/dasadmin/src/layouts/backend/router-view/main.vue b/ui/dasadmin/src/layouts/backend/router-view/main.vue index 038615c2..7b4e1494 100644 --- a/ui/dasadmin/src/layouts/backend/router-view/main.vue +++ b/ui/dasadmin/src/layouts/backend/router-view/main.vue @@ -1,6 +1,6 @@ @@ -36,25 +46,34 @@ 关闭 - + - + - +

- + {{ t('management.search') }}
{{ t('management.add') }} - + + @@ -84,7 +112,7 @@