Quellcode durchsuchen

更新 Menu 相关页面和接口

reghao vor 1 Jahr
Ursprung
Commit
8cd5890574

+ 14 - 17
web/src/main/java/cn/reghao/devops/web/account/controller/MenuController.java

@@ -1,10 +1,9 @@
 package cn.reghao.devops.web.account.controller;
 
+import cn.reghao.devops.web.account.service.MenuService;
 import cn.reghao.jutil.jdk.result.Result;
-import cn.reghao.devops.web.account.db.query.MenuQuery;
-import cn.reghao.devops.web.account.model.dto.MenuDTO;
+import cn.reghao.devops.web.account.model.dto.MenuDto;
 import cn.reghao.devops.web.account.model.po.Menu;
-import cn.reghao.devops.web.account.service.impl.MenuServiceImpl;
 import cn.reghao.jutil.jdk.result.WebResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -24,46 +23,44 @@ import java.util.stream.Collectors;
 @RequestMapping("/api/rbac/menu")
 @RestController
 public class MenuController {
-    private final MenuServiceImpl menuServiceImpl;
-    private final MenuQuery menuQuery;
+    private final MenuService menuService;
 
-    public MenuController(MenuServiceImpl menuServiceImpl, MenuQuery menuQuery) {
-        this.menuServiceImpl = menuServiceImpl;
-        this.menuQuery = menuQuery;
+    public MenuController(MenuService menuService) {
+        this.menuService = menuService;
     }
 
     @ApiOperation(value = "添加资源")
     @PostMapping(produces = MediaType.APPLICATION_JSON_VALUE)
     public String addMenu(@Validated Menu menu) {
-        Result result = menuServiceImpl.addMenu(menu);
+        Result result = menuService.addMenu(menu);
         return WebResult.result(result);
     }
 
     @ApiOperation(value = "修改资源")
     @PostMapping(value = "/edit", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String modifyMenu(@Validated MenuDTO menuDTO) {
-        Result result = menuServiceImpl.updateMenu(menuDTO);
+    public String modifyMenu(@Validated MenuDto menuDto) {
+        Result result = menuService.updateMenu(menuDto);
         return WebResult.result(result);
     }
 
     @ApiOperation(value = "修改资源状态")
     @PostMapping(value = "/status/{enabled}", produces = MediaType.APPLICATION_JSON_VALUE)
     public String menuStatus(@PathVariable("enabled") boolean enabled, @RequestParam("ids") List<Integer> ids) {
-        menuServiceImpl.updateMenusStatus(enabled, ids);
+        menuService.updateMenusStatus(enabled, ids);
         return WebResult.success();
     }
 
     @ApiOperation(value = "删除资源")
     @DeleteMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
     public String deleteMenu(@PathVariable("id") Integer menuId) {
-        Result result = menuServiceImpl.deleteMenu(menuId);
+        Result result = menuService.deleteMenu(menuId);
         return WebResult.result(result);
     }
 
     @ApiOperation(value = "获取指定状态的菜单")
-    @GetMapping(value = "/{isEnabled}", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String list(@PathVariable(value = "isEnabled") Boolean isEnabled) {
-        List<Menu> list = menuQuery.getSortedMenusByStatus(isEnabled).stream()
+    @GetMapping(value = "/{enabled}", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String list(@PathVariable(value = "enabled") Boolean enabled) {
+        List<Menu> list = menuService.getSortedMenusByStatus(enabled).stream()
                 .peek(menu -> menu.getRoles().forEach(role -> {
                     role.setMenus(null);
                 }))
@@ -75,7 +72,7 @@ public class MenuController {
     @GetMapping(value = "/sorted/{pid}/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
     public String sortList(@PathVariable(value = "pid") int pid,
                            @PathVariable(value = "id", required = false) Menu menu) {
-        Map<Integer, String> map = menuQuery.getSortedChildGroupByPid(pid);
+        Map<Integer, String> map = menuService.getSortedChildGroupByPid(pid);
         // 排除当前 menu
         if (menu != null) {
             map.remove(menu.getPos());

+ 5 - 5
web/src/main/java/cn/reghao/devops/web/account/controller/RoleController.java

@@ -1,9 +1,9 @@
 package cn.reghao.devops.web.account.controller;
 
-import cn.reghao.devops.web.account.db.query.MenuQuery;
 import cn.reghao.devops.web.account.model.dto.RoleDto;
 import cn.reghao.devops.web.account.model.po.Menu;
 import cn.reghao.devops.web.account.model.po.Role;
+import cn.reghao.devops.web.account.service.MenuService;
 import cn.reghao.devops.web.account.service.RoleService;
 import cn.reghao.jutil.jdk.result.WebResult;
 import io.swagger.annotations.Api;
@@ -25,12 +25,12 @@ import java.util.stream.Collectors;
 @RequestMapping("/api/rbac/role")
 @RestController
 public class RoleController {
-    private final MenuQuery menuQuery;
     private final RoleService roleService;
+    private final MenuService menuService;
 
-    public RoleController(MenuQuery menuQuery, RoleService roleService) {
-        this.menuQuery = menuQuery;
+    public RoleController(RoleService roleService, MenuService menuService) {
         this.roleService = roleService;
+        this.menuService = menuService;
     }
 
     @ApiOperation("添加或修改角色")
@@ -57,7 +57,7 @@ public class RoleController {
     @ApiOperation("获取角色可访问的资源")
     @GetMapping(value = "/menus/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
     public String getRoleMenus(@PathVariable("id") Role role) {
-        List<Menu> allMenus = menuQuery.findAll();
+        List<Menu> allMenus = menuService.getAllMenus();
         allMenus.forEach(menu -> {
             // TODO 序列化时会递归 roles 中的 Role 导致 StackOverflow, 因此在序列化时应该把 Role 的 menus 设置为 null
             Set<Role> roles = menu.getRoles().stream()

+ 14 - 31
web/src/main/java/cn/reghao/devops/web/account/controller/page/MenuPageController.java

@@ -1,9 +1,10 @@
 package cn.reghao.devops.web.account.controller.page;
 
-import cn.reghao.devops.web.account.db.query.MenuQuery;
-import cn.reghao.devops.web.account.model.dto.MenuDTO;
+import cn.reghao.devops.web.account.model.dto.MenuDto;
 import cn.reghao.devops.web.account.model.po.Role;
 import cn.reghao.devops.web.account.model.po.Menu;
+import cn.reghao.devops.web.account.model.vo.RoleVO;
+import cn.reghao.devops.web.account.service.MenuService;
 import cn.reghao.devops.web.account.service.RoleService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -12,6 +13,7 @@ import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author reghao
@@ -21,40 +23,29 @@ import java.util.*;
 @RequestMapping("/rbac/menu")
 @Controller
 public class MenuPageController {
+    private final MenuService menuService;
     private final RoleService roleService;
-    private final MenuQuery menuQuery;
 
-    public MenuPageController(RoleService roleService, MenuQuery menuQuery) {
+    public MenuPageController(MenuService menuService, RoleService roleService) {
+        this.menuService = menuService;
         this.roleService = roleService;
-        this.menuQuery = menuQuery;
     }
 
     @ApiOperation(value = "资源列表页面")
     @GetMapping
-    public String menuPage(@RequestParam(value = "enabled", required = false) Boolean enabled, Model model) {
-        if (enabled == null) {
-            enabled = true;
-        }
-
+    public String menuPage(@RequestParam(value = "enabled") Boolean enabled, Model model) {
         model.addAttribute("enabled", enabled);
         return "/rbac/menu/index";
     }
 
     @ApiOperation(value = "资源添加页面")
-    @GetMapping({"/add", "/add/{pid}"})
-    public String toAdd(@PathVariable(value = "pid", required = false) Integer pid, Model model) {
-        // 父级菜单
-        Menu pMenu = null;
-        if (pid != null) {
-            pMenu = menuQuery.findById(pid);
-        }
-
+    @GetMapping(value = "/add")
+    public String addMenuPage(Model model) {
         Set<Role> allRoles = new HashSet<>(roleService.getAllRoles());
         Set<Role> menuRoles = Collections.emptySet();
 
         model.addAttribute("allRoles", allRoles);
         model.addAttribute("menuRoles", menuRoles);
-        model.addAttribute("pMenu", pMenu);
         return "/rbac/menu/add";
     }
 
@@ -66,33 +57,25 @@ public class MenuPageController {
         if (pid == 0) {
             pMenu = new Menu(pid, "根菜单");
         } else {
-            pMenu = menuQuery.findById(pid);
+            pMenu = menuService.getById(pid);
         }
 
         Set<Role> allRoles = new HashSet<>(roleService.getAllRoles());
-        //Set<Role> menuRoles = menu.getRoles();
         Set<Role> menuRoles = Collections.emptySet();
 
         model.addAttribute("allRoles", allRoles);
         model.addAttribute("menuRoles", menuRoles);
-        model.addAttribute("menu", new MenuDTO(menu));
+        model.addAttribute("menu", new MenuDto(menu));
         model.addAttribute("pMenu", pMenu);
         return "/rbac/menu/edit";
     }
 
     // TODO Hibernate 会根据传入的 id 自动查找相应的 Menu
     @ApiOperation(value = "可访问资源的角色列表页面")
-    @GetMapping("/roleList/{id}")
+    @GetMapping("/{id}/roles")
     public String roleListWithResource(@PathVariable("id") Menu menu, Model model) {
-        List<Role> list = new ArrayList<>(menu.getRoles());
+        List<RoleVO> list = menu.getRoles().stream().map(RoleVO::new).collect(Collectors.toList());
         model.addAttribute("list", list);
         return "/rbac/menu/roles";
     }
-
-    @ApiOperation(value = "资源详细信息页面")
-    @GetMapping("/detail/{id}")
-    public String toDetail(@PathVariable("id") Menu menu, Model model) {
-        model.addAttribute("menu", menu);
-        return "/rbac/menu/detail";
-    }
 }

+ 0 - 15
web/src/main/java/cn/reghao/devops/web/account/db/query/MenuQuery.java

@@ -1,15 +0,0 @@
-package cn.reghao.devops.web.account.db.query;
-
-import cn.reghao.devops.web.account.model.po.Menu;
-import cn.reghao.jutil.jdk.db.BaseQuery;
-
-import java.util.*;
-
-/**
- * @author reghao
- * @date 2021-07-12 15:32:26
- */
-public interface MenuQuery extends BaseQuery<Menu> {
-    List<Menu> getSortedMenusByStatus(Boolean isEnabled);
-    Map<Integer, String> getSortedChildGroupByPid(int pid);
-}

+ 0 - 54
web/src/main/java/cn/reghao/devops/web/account/db/query/MenuQueryImpl.java

@@ -1,54 +0,0 @@
-package cn.reghao.devops.web.account.db.query;
-
-import cn.reghao.devops.web.account.db.repository.MenuRepository;
-import cn.reghao.devops.web.account.model.po.Menu;
-import org.springframework.stereotype.Service;
-
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * @author reghao
- * @date 2021-07-12 15:32:26
- */
-@Service
-public class MenuQueryImpl implements MenuQuery {
-    private final MenuRepository menuRepository;
-
-    public MenuQueryImpl(MenuRepository menuRepository) {
-        this.menuRepository = menuRepository;
-    }
-
-    @Override
-    public List<Menu> findAll() {
-        return menuRepository.findAll();
-    }
-
-    @Override
-    public Menu findById(int id) {
-        return menuRepository.getOne(id);
-    }
-
-    @Override
-    public List<Menu> getSortedMenusByStatus(Boolean isEnabled) {
-        List<Menu> menuList = menuRepository.findByEnabled(isEnabled);
-        Map<Integer, List<Menu>> map =  menuList.stream().collect(Collectors.groupingBy(Menu::getPid));
-        List<Menu> list = new ArrayList<>();
-        map.forEach((pid, menus) -> {
-            list.addAll(menus.stream()
-                    .sorted(Comparator.comparing(Menu::getPos))
-                    .collect(Collectors.toList()));
-        });
-
-        return list;
-    }
-
-    @Override
-    public Map<Integer, String> getSortedChildGroupByPid(int pid) {
-        List<Menu> menus = menuRepository.findByPid(pid);
-        menus.sort(Comparator.comparingInt(Menu::getPos));
-        Map<Integer, String> map = new HashMap<>();
-        menus.forEach(menu -> map.put(menu.getPos(), menu.getName()));
-        return map;
-    }
-}

+ 0 - 44
web/src/main/java/cn/reghao/devops/web/account/model/dto/MenuAddDTO.java

@@ -1,44 +0,0 @@
-package cn.reghao.devops.web.account.model.dto;
-
-import cn.reghao.devops.web.account.model.po.Menu;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-
-/**
- * @author reghao
- * @date 2021-04-04 22:42:14
- */
-@NoArgsConstructor
-@Data
-public class MenuAddDTO implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    // Menu 类型
-    @NotBlank(message = "菜单类型不能为空白字符串")
-    private String type;
-    @NotBlank(message = "菜单名不能为空白字符串")
-    private String name;
-    @NotBlank(message = "URL 地址不能为空白字符串,目录类型使用可使用 # 字符")
-    private String url;
-    // 父级菜单 ID
-    @NotNull(message = "父级菜单不能为 NULL")
-    private Integer pid;
-    // 在同一个 pid 组内的位置,作为排序使用
-    private Integer pos;
-
-    public Menu to() {
-        Menu menu = new Menu();
-        menu.setType(this.getType());
-        menu.setName(this.getName());
-        menu.setUrl(this.getUrl());
-        menu.setIcon("layui-icon layui-icon-face-smile");
-        menu.setPid(this.getPid());
-        menu.setPos(this.getPos());
-        menu.setEnabled(true);
-        return menu;
-    }
-}

+ 3 - 2
web/src/main/java/cn/reghao/devops/web/account/model/dto/MenuDTO.java → web/src/main/java/cn/reghao/devops/web/account/model/dto/MenuDto.java

@@ -17,8 +17,9 @@ import java.util.Set;
  */
 @NoArgsConstructor
 @Data
-public class MenuDTO implements Serializable {
+public class MenuDto implements Serializable {
     private static final long serialVersionUID = 1L;
+
     @NotNull(message = "菜单 ID 不能为 NULL")
     private Integer menuId;
     // 父级菜单 ID
@@ -35,7 +36,7 @@ public class MenuDTO implements Serializable {
     @JsonIgnore
     private Set<Role> roles;
 
-    public MenuDTO(Menu menu) {
+    public MenuDto(Menu menu) {
         this.menuId = menu.getId();
         this.pid = menu.getPid();
         this.pos = menu.getPos();

+ 0 - 52
web/src/main/java/cn/reghao/devops/web/account/model/dto/MenuUpdateDTO.java

@@ -1,52 +0,0 @@
-package cn.reghao.devops.web.account.model.dto;
-
-import cn.reghao.devops.web.account.model.po.Menu;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-
-/**
- * @author reghao
- * @date 2021-07-15 14:06:13
- */
-@NoArgsConstructor
-@Data
-public class MenuUpdateDTO implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    @NotNull(message = "菜单 ID 不能为 NULL")
-    private Integer menuId;
-    @NotBlank(message = "菜单名不能为空白字符串")
-    private String name;
-    @NotBlank(message = "URL 地址不能为空白字符串,目录类型使用可使用 # 字符")
-    private String url;
-    private String icon;
-    // 父级菜单 ID
-    @NotNull(message = "父级菜单不能为 NULL")
-    private Integer pid;
-    // 在同一个 pid 组内的位置,作为排序使用
-    private Integer pos;
-
-    public MenuUpdateDTO(Menu menu) {
-        this.menuId = menu.getId();
-        this.name = menu.getName();
-        this.url = menu.getUrl();
-        this.icon = menu.getIcon();
-        this.pid = menu.getPid();
-        this.pos = menu.getPos();
-    }
-
-    public Menu to() {
-        Menu menu = new Menu();
-        menu.setId(this.getMenuId());
-        menu.setName(this.getName());
-        menu.setUrl(this.getUrl());
-        menu.setIcon(this.getIcon());
-        menu.setPid(this.getPid());
-        menu.setPos(this.getPos());
-        return menu;
-    }
-}

+ 10 - 2
web/src/main/java/cn/reghao/devops/web/account/service/MenuService.java

@@ -1,15 +1,23 @@
 package cn.reghao.devops.web.account.service;
 
 import cn.reghao.jutil.jdk.result.Result;
-import cn.reghao.devops.web.account.model.dto.MenuDTO;
+import cn.reghao.devops.web.account.model.dto.MenuDto;
 import cn.reghao.devops.web.account.model.po.Menu;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * @author reghao
  * @date 2021-07-21 15:17:14
  */
 public interface MenuService {
     Result addMenu(Menu menu);
-    Result updateMenu(MenuDTO menuDTO);
+    Result updateMenu(MenuDto menuDto);
+    void updateMenusStatus(boolean status, List<Integer> menuIds);
     Result deleteMenu(Integer menuId);
+    Menu getById(Integer menuId);
+    List<Menu> getAllMenus();
+    List<Menu> getSortedMenusByStatus(Boolean isEnabled);
+    Map<Integer, String> getSortedChildGroupByPid(int pid);
 }

+ 43 - 10
web/src/main/java/cn/reghao/devops/web/account/service/impl/MenuServiceImpl.java

@@ -6,7 +6,7 @@ import cn.reghao.devops.web.account.model.constant.MenuType;
 import cn.reghao.devops.web.account.service.MenuService;
 import cn.reghao.jutil.jdk.result.Result;
 import cn.reghao.jutil.jdk.result.ResultStatus;
-import cn.reghao.devops.web.account.model.dto.MenuDTO;
+import cn.reghao.devops.web.account.model.dto.MenuDto;
 import cn.reghao.devops.web.account.model.po.Menu;
 import cn.reghao.devops.web.account.model.po.Role;
 import lombok.extern.slf4j.Slf4j;
@@ -145,8 +145,8 @@ public class MenuServiceImpl implements MenuService {
     }
 
     @Override
-    public synchronized Result updateMenu(MenuDTO menuDTO) {
-        int menuId = menuDTO.getMenuId();
+    public synchronized Result updateMenu(MenuDto menuDto) {
+        int menuId = menuDto.getMenuId();
         Menu menuEntity = menuRepository.getOne(menuId);
         if (menuEntity == null) {
             return Result.result(ResultStatus.FAIL, String.format("ID 为 %s 的 Menu 不存在", menuId));
@@ -154,8 +154,8 @@ public class MenuServiceImpl implements MenuService {
 
         int oldPos = menuEntity.getPos();
         // menu 的新位置
-        int newPos = menuDTO.getPos()+1;
-        int pid = menuDTO.getPid();
+        int newPos = menuDto.getPos()+1;
+        int pid = menuDto.getPid();
         if (pid != menuEntity.getPid()) {
             Result result = moreThanTwoParents(pid);
             if (result.getCode() != ResultStatus.SUCCESS.getCode()) {
@@ -164,20 +164,20 @@ public class MenuServiceImpl implements MenuService {
 
             // menu 更换到了新的 menu 组
             menuEntity.setPid(pid);
-            menuEntity.setPos(menuDTO.getPos());
+            menuEntity.setPos(menuDto.getPos());
             insertNewMenu(menuEntity);
         } else if (newPos != oldPos) {
             reOrderMenus(pid, oldPos, newPos);
             menuEntity.setPos(newPos);
         }
 
-        menuEntity.setName(menuDTO.getName());
-        menuEntity.setUrl(menuDTO.getUrl());
-        menuEntity.setIcon(menuDTO.getIcon());
+        menuEntity.setName(menuDto.getName());
+        menuEntity.setUrl(menuDto.getUrl());
+        menuEntity.setIcon(menuDto.getIcon());
         menuEntity.setUpdateTime(LocalDateTime.now());
         menuRepository.save(menuEntity);
 
-        Set<Role> roles = menuDTO.getRoles();
+        Set<Role> roles = menuDto.getRoles();
         roles.forEach(role -> role.getMenus().add(menuEntity));
         roleRepository.saveAll(new ArrayList<>(roles));
         return Result.result(ResultStatus.SUCCESS);
@@ -234,4 +234,37 @@ public class MenuServiceImpl implements MenuService {
         menuRepository.delete(menu);
         return Result.result(ResultStatus.SUCCESS);
     }
+
+    @Override
+    public Menu getById(Integer menuId) {
+        return menuRepository.findById(menuId).orElse(null);
+    }
+
+    @Override
+    public List<Menu> getAllMenus() {
+        return menuRepository.findAll();
+    }
+
+    @Override
+    public List<Menu> getSortedMenusByStatus(Boolean isEnabled) {
+        List<Menu> menuList = menuRepository.findByEnabled(isEnabled);
+        Map<Integer, List<Menu>> map =  menuList.stream().collect(Collectors.groupingBy(Menu::getPid));
+        List<Menu> list = new ArrayList<>();
+        map.forEach((pid, menus) -> {
+            list.addAll(menus.stream()
+                    .sorted(Comparator.comparing(Menu::getPos))
+                    .collect(Collectors.toList()));
+        });
+
+        return list;
+    }
+
+    @Override
+    public Map<Integer, String> getSortedChildGroupByPid(int pid) {
+        List<Menu> menus = menuRepository.findByPid(pid);
+        menus.sort(Comparator.comparingInt(Menu::getPos));
+        Map<Integer, String> map = new HashMap<>();
+        menus.forEach(menu -> map.put(menu.getPos(), menu.getName()));
+        return map;
+    }
 }

+ 0 - 9
web/src/main/resources/templates/rbac/menu/add.html

@@ -23,15 +23,6 @@
                 </label>
             </div>
         </div>
-        <div class="layui-form-item">
-            <label class="layui-form-label">菜单图标</label>
-            <div class="layui-input-inline">
-                <label>
-                    <input class="layui-input icon-input" type="text" name="icon"  placeholder="请输入菜单图标">
-                </label>
-            </div>
-            <i th:class="'icon-show '+${menu?.icon}" style="line-height: 38px;"></i>
-        </div>
         <div class="layui-form-item">
             <label class="layui-form-label required">父级菜单</label>
             <div class="layui-input-inline">

+ 4 - 2
web/src/main/resources/templates/rbac/menu/detail.html

@@ -15,8 +15,10 @@
             </tr>
             <tr>
                 <th width='100px'>图标</th>
-                <td th:text="${menu.icon}"></td>
-                <th width='100px'>菜单父编号</th>
+                <td class="icon-input" th:text="${menu.icon}">
+                    <i th:class="'icon-show '+${menu.icon}" style="line-height: 38px;"></i>
+                </td>
+                <th width='100px'>父菜单 ID</th>
                 <td th:text="${menu.pid}"></td>
             </tr>
             <tr>

+ 4 - 7
web/src/main/resources/templates/rbac/menu/index.html

@@ -67,7 +67,7 @@
                                     <th>名称</th>
                                     <th>URL 地址</th>
                                     <th>菜单类型</th>
-                                    <th>可访问的角色</th>
+                                    <th>授予的角色</th>
                                     <th>操作</th>
                                 </tr>
                             </thead>
@@ -83,18 +83,14 @@
                                     <td>{{url}}</td>
                                     <td>{{type}}</td>
                                     <td>
-                                        <a class="open-popup" data-title="授予的角色"
-                                           th:attr="data-url=@{'/rbac/menu/roleList/{{id}}'}" data-size="800,600"
+                                        <a class="open-popup" data-title="授予的角色"
+                                           th:attr="data-url=@{'/rbac/menu/{{id}}/roles'}" data-size="640,480"
                                            href="#">查看</a>
                                     </td>
                                     <td>
                                         <a class="open-popup popup-edit" data-title="编辑资源"
                                            th:attr="data-url=@{'/rbac/menu/edit/{{id}}'}" href="#">编辑
                                         </a>
-                                        <a class="open-popup" data-title="详细信息"
-                                           th:attr="data-url=@{'/rbac/menu/detail/{{id}}'}"
-                                           data-size="800,600" href="#">详细
-                                        </a>
                                         <a class="ajax-delete popup-delete" th:attr="data-msg='确定要删除 {{name}}?'"
                                            th:href="@{'/api/rbac/menu/{{id}}'}">删除
                                         </a>
@@ -116,6 +112,7 @@
             function getListByStatus() {
                 var selectedOption = $("#getByStatus option:selected")
                 var param = selectedOption.text()
+                var val = selectedOption.val()
                 url = '?enabled=' + param
                 window.location.href = window.location.pathname + url;
             }

+ 2 - 2
web/src/main/resources/templates/rbac/menu/roles.html

@@ -16,14 +16,14 @@
         <table class="layui-table">
             <thead>
             <tr>
-                <th>角色</th>
                 <th>角色名</th>
+                <th>角色描述</th>
             </tr>
             </thead>
             <tbody>
             <tr th:each="item:${list}">
-                <td>[[${item.title}]]</td>
                 <td>[[${item.name}]]</td>
+                <td>[[${item.description}]]</td>
             </tr>
             <tr th:if="${list.isEmpty()}">
                 <td style="text-align: center" colspan="3">本资源没有分配给任何角色</td>