Ver Fonte

页面更新

sr há 4 anos atrás
pai
commit
32ce76aaa1
23 ficheiros alterados com 1577 adições e 63 exclusões
  1. 6 4
      boman-api/boman-domain/src/main/java/com.boman.domain/GenTableColumn.java
  2. 1 1
      boman-modules/boman-gen/src/main/java/com/boman/gen/controller/GenController.java
  3. 0 1
      boman-modules/boman-gen/src/main/resources/mapper/generator/GenTableRelationMapper.xml
  4. 2 2
      boman-modules/boman-system/src/main/java/com/boman/system/controller/SysMenuController.java
  5. 1 1
      boman-modules/boman-system/src/main/java/com/boman/system/controller/SysRoleController.java
  6. 107 0
      boman-modules/boman-system/src/main/java/com/boman/system/controller/SysRoleDataController.java
  7. 175 0
      boman-modules/boman-system/src/main/java/com/boman/system/domain/SysRoleData.java
  8. 61 0
      boman-modules/boman-system/src/main/java/com/boman/system/mapper/SysRoleDataMapper.java
  9. 15 0
      boman-modules/boman-system/src/main/java/com/boman/system/service/ISysMenuService.java
  10. 61 0
      boman-modules/boman-system/src/main/java/com/boman/system/service/ISysRoleDataService.java
  11. 66 17
      boman-modules/boman-system/src/main/java/com/boman/system/service/impl/SysMenuServiceImpl.java
  12. 100 0
      boman-modules/boman-system/src/main/java/com/boman/system/service/impl/SysRoleDataServiceImpl.java
  13. 3 0
      boman-modules/boman-system/src/main/resources/mapper/system/SysMenuMapper.xml
  14. 117 0
      boman-modules/boman-system/src/main/resources/mapper/system/SysRoleDataMapper.xml
  15. 2 0
      boman-web-core/src/main/java/com/boman/web/core/service/TableServiceCmdService.java
  16. 12 0
      boman-web-core/src/main/java/com/boman/web/core/utils/IdUtils.java
  17. 42 0
      ruoyi-ui/src/api/system/permisss.js
  18. 3 2
      ruoyi-ui/src/settings.js
  19. 6 1
      ruoyi-ui/src/views/index.vue
  20. 65 33
      ruoyi-ui/src/views/system/editing/index.vue
  21. 31 0
      ruoyi-ui/src/views/system/loade/index.vue
  22. 699 0
      ruoyi-ui/src/views/system/permissions/index.vue
  23. 2 1
      ruoyi-ui/src/views/system/table/index.vue

+ 6 - 4
boman-api/boman-domain/src/main/java/com.boman.domain/GenTableColumn.java

@@ -1,5 +1,7 @@
 package com.boman.domain;
 
+import com.boman.common.core.utils.StringUtils;
+
 import java.util.List;
 import java.util.Map;
 
@@ -297,10 +299,10 @@ public class GenTableColumn extends BaseEntity
         return javaField;
     }
 
-//    public String getCapJavaField()
-//    {
-//        return StringUtils.capitalize(javaField);
-//    }
+    public String getCapJavaField()
+    {
+        return StringUtils.capitalize(javaField);
+    }
 
     public void setIsPk(String isPk)
     {

+ 1 - 1
boman-modules/boman-gen/src/main/java/com/boman/gen/controller/GenController.java

@@ -166,7 +166,7 @@ public class GenController extends BaseController {
     /**
      * 生成代码(下载方式)
      */
-    @PreAuthorize(hasPermi = "tool:gen:code")
+    //@PreAuthorize(hasPermi = "tool:gen:code")
     @Log(title = "代码生成" , businessType = BusinessType.GENCODE)
     @GetMapping("/download/{tableName}")
     public void download(HttpServletResponse response, @PathVariable("tableName") String tableName) throws IOException {

+ 0 - 1
boman-modules/boman-gen/src/main/resources/mapper/generator/GenTableRelationMapper.xml

@@ -34,7 +34,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		left join gen_table t on t.table_id = r.relation_parent_id
 		left join gen_table_column c on c.column_id = r.relation_child_id
 		<where>
-			is_del = 'N'
 			<if test="description != null and description != ''">
 				AND description like concat('%', #{description}, '%')
 			</if>

+ 2 - 2
boman-modules/boman-system/src/main/java/com/boman/system/controller/SysMenuController.java

@@ -70,7 +70,7 @@ public class SysMenuController extends BaseController
     }
 
     /**
-     * 加载对应角色菜单列表树
+     * 加载对应角色菜单列表树, 不包含叶子结点 不包含叶子结点 不包含叶子结点 重要的事情说三遍
      */
     @GetMapping(value = "/roleMenuTreeselect/{roleId}")
     public AjaxResult roleMenuTreeselect(@PathVariable("roleId") Long roleId)
@@ -79,7 +79,7 @@ public class SysMenuController extends BaseController
         List<SysMenu> menus = menuService.selectMenuList(userId);
         AjaxResult ajax = AjaxResult.success();
         ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId));
-        ajax.put("menus", menuService.buildMenuTreeSelect(menus));
+        ajax.put("menus", menuService.buildMenuTreeSelectNotAddLeafNode(menus));
         return ajax;
     }
 

+ 1 - 1
boman-modules/boman-system/src/main/java/com/boman/system/controller/SysRoleController.java

@@ -41,7 +41,7 @@ public class SysRoleController extends BaseController
     @GetMapping("/list")
     public TableDataInfo list(SysRole role)
     {
-        startPage();
+//        startPage();
         List<SysRole> list = roleService.selectRoleList(role);
         return getDataTable(list);
     }

+ 107 - 0
boman-modules/boman-system/src/main/java/com/boman/system/controller/SysRoleDataController.java

@@ -0,0 +1,107 @@
+package com.boman.system.controller;
+
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+
+import com.boman.common.core.utils.poi.ExcelUtil;
+import com.boman.common.core.web.controller.BaseController;
+import com.boman.common.core.web.domain.AjaxResult;
+import com.boman.common.core.web.page.TableDataInfo;
+import com.boman.common.log.annotation.Log;
+import com.boman.common.log.enums.BusinessType;
+import com.boman.common.security.annotation.PreAuthorize;
+import com.boman.system.service.ISysRoleDataService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.boman.system.domain.SysRoleData;
+
+
+/**
+ * 角色权限数据Controller
+ * 
+ * @author ruoyi
+ * @date 2021-04-26
+ */
+@RestController
+@RequestMapping("/roleData")
+public class SysRoleDataController extends BaseController
+{
+    @Autowired
+    private ISysRoleDataService sysRoleDataService;
+
+    /**
+     * 查询角色权限数据列表
+     */
+    //@PreAuthorize(hasPermi = "system:data:list")
+    @GetMapping("/list")
+    public TableDataInfo list(SysRoleData roleData)
+    {
+        startPage();
+        List<SysRoleData> list = sysRoleDataService.selectSysRoleDataList(roleData);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出角色权限数据列表
+     */
+    @PreAuthorize(hasPermi = "system:data:export")
+    @Log(title = "角色权限数据", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, SysRoleData sysRoleData) throws IOException
+    {
+        List<SysRoleData> list = sysRoleDataService.selectSysRoleDataList(sysRoleData);
+        ExcelUtil<SysRoleData> util = new ExcelUtil<SysRoleData>(SysRoleData.class);
+        util.exportExcel(response, list, "data");
+    }
+
+    /**
+     * 获取角色权限数据详细信息
+     */
+    @PreAuthorize(hasPermi = "system:data:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(sysRoleDataService.selectSysRoleDataById(id));
+    }
+
+    /**
+     * 新增角色权限数据
+     */
+    @PreAuthorize(hasPermi = "system:data:add")
+    @Log(title = "角色权限数据", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody SysRoleData sysRoleData)
+    {
+        return toAjax(sysRoleDataService.insertSysRoleData(sysRoleData));
+    }
+
+    /**
+     * 修改角色权限数据
+     */
+    @PreAuthorize(hasPermi = "system:data:edit")
+    @Log(title = "角色权限数据", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody SysRoleData sysRoleData)
+    {
+        return toAjax(sysRoleDataService.updateSysRoleData(sysRoleData));
+    }
+
+    /**
+     * 删除角色权限数据
+     */
+    @PreAuthorize(hasPermi = "system:data:remove")
+    @Log(title = "角色权限数据", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(sysRoleDataService.deleteSysRoleDataByIds(ids));
+    }
+}

+ 175 - 0
boman-modules/boman-system/src/main/java/com/boman/system/domain/SysRoleData.java

@@ -0,0 +1,175 @@
+package com.boman.system.domain;
+
+import com.boman.common.core.web.domain.BaseEntity;
+import java.util.Date;
+
+/**
+ * 角色权限数据对象 sys_role_data
+ * 
+ * @author ruoyi
+ * @date 2021-04-26
+ */
+public class SysRoleData extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 角色权限id */
+    private Long id;
+
+    /** 角色id */
+    private Long roleId;
+
+    private String roleName;
+
+    /** 显示顺序 */
+    private Integer roleSort;
+
+    /** 权限表单 */
+    private String tableName;
+
+    /** 数据过滤(字典表)(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限) */
+    private String dataScope;
+
+    /** 是否可用(Y是) */
+    private String isUse;
+
+    /** 是否删除(Y是) */
+    private String isDel;
+
+    /** 创建者 */
+    private String createBy;
+
+    /** 创建时间 */
+    private Date createTime;
+
+    /** 更新者 */
+    private String updateBy;
+
+    /** 更新时间 */
+    private Date updateTime;
+
+    /** 备注 */
+    private String remark;
+
+    public String getRoleName() {
+        return roleName;
+    }
+
+    public void setRoleName(String roleName) {
+        this.roleName = roleName;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setRoleId(Long roleId) 
+    {
+        this.roleId = roleId;
+    }
+
+    public Long getRoleId() 
+    {
+        return roleId;
+    }
+    public void setRoleSort(Integer roleSort) 
+    {
+        this.roleSort = roleSort;
+    }
+
+    public Integer getRoleSort() 
+    {
+        return roleSort;
+    }
+    public void setTableName(String tableName) 
+    {
+        this.tableName = tableName;
+    }
+
+    public String getTableName() 
+    {
+        return tableName;
+    }
+    public void setDataScope(String dataScope) 
+    {
+        this.dataScope = dataScope;
+    }
+
+    public String getDataScope() 
+    {
+        return dataScope;
+    }
+    public void setIsUse(String isUse) 
+    {
+        this.isUse = isUse;
+    }
+
+    public String getIsUse() 
+    {
+        return isUse;
+    }
+    public void setIsDel(String isDel) 
+    {
+        this.isDel = isDel;
+    }
+
+    public String getIsDel() 
+    {
+        return isDel;
+    }
+
+    @Override
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    @Override
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+
+    @Override
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    @Override
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    @Override
+    public String getUpdateBy() {
+        return updateBy;
+    }
+
+    @Override
+    public void setUpdateBy(String updateBy) {
+        this.updateBy = updateBy;
+    }
+
+    @Override
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    @Override
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    @Override
+    public String getRemark() {
+        return remark;
+    }
+
+    @Override
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+}

+ 61 - 0
boman-modules/boman-system/src/main/java/com/boman/system/mapper/SysRoleDataMapper.java

@@ -0,0 +1,61 @@
+package com.boman.system.mapper;
+
+import java.util.List;
+import com.boman.system.domain.SysRoleData;
+
+/**
+ * 角色权限数据Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2021-04-26
+ */
+public interface SysRoleDataMapper 
+{
+    /**
+     * 查询角色权限数据
+     * 
+     * @param id 角色权限数据ID
+     * @return 角色权限数据
+     */
+    public SysRoleData selectSysRoleDataById(Long id);
+
+    /**
+     * 查询角色权限数据列表
+     * 
+     * @param sysRoleData 角色权限数据
+     * @return 角色权限数据集合
+     */
+    public List<SysRoleData> selectSysRoleDataList(SysRoleData sysRoleData);
+
+    /**
+     * 新增角色权限数据
+     * 
+     * @param sysRoleData 角色权限数据
+     * @return 结果
+     */
+    public int insertSysRoleData(SysRoleData sysRoleData);
+
+    /**
+     * 修改角色权限数据
+     * 
+     * @param sysRoleData 角色权限数据
+     * @return 结果
+     */
+    public int updateSysRoleData(SysRoleData sysRoleData);
+
+    /**
+     * 删除角色权限数据
+     * 
+     * @param id 角色权限数据ID
+     * @return 结果
+     */
+    public int deleteSysRoleDataById(Long id);
+
+    /**
+     * 批量删除角色权限数据
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteSysRoleDataByIds(Long[] ids);
+}

+ 15 - 0
boman-modules/boman-system/src/main/java/com/boman/system/service/ISysMenuService.java

@@ -72,6 +72,13 @@ public interface ISysMenuService
      * @return 树结构列表
      */
     public List<SysMenu> buildMenuTree(List<SysMenu> menus);
+    /**
+     * 构建前端所需要树结构 没有叶子结点
+     *
+     * @param menus 菜单列表
+     * @return 树结构列表
+     */
+    public List<SysMenu> buildMenuTreeNotAddLeafNode(List<SysMenu> menus);
 
     /**
      * 构建前端所需要下拉树结构
@@ -81,6 +88,14 @@ public interface ISysMenuService
      */
     public List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus);
 
+    /**
+     * 构建前端所需要下拉树结构
+     *
+     * @param menus 菜单列表
+     * @return 下拉树结构列表
+     */
+    public List<TreeSelect> buildMenuTreeSelectNotAddLeafNode(List<SysMenu> menus);
+
     /**
      * 根据菜单ID查询信息
      * 

+ 61 - 0
boman-modules/boman-system/src/main/java/com/boman/system/service/ISysRoleDataService.java

@@ -0,0 +1,61 @@
+package com.boman.system.service;
+
+import java.util.List;
+import com.boman.system.domain.SysRoleData;
+
+/**
+ * 角色权限数据Service接口
+ * 
+ * @author ruoyi
+ * @date 2021-04-26
+ */
+public interface ISysRoleDataService 
+{
+    /**
+     * 查询角色权限数据
+     * 
+     * @param id 角色权限数据ID
+     * @return 角色权限数据
+     */
+    public SysRoleData selectSysRoleDataById(Long id);
+
+    /**
+     * 查询角色权限数据列表
+     * 
+     * @param sysRoleData 角色权限数据
+     * @return 角色权限数据集合
+     */
+    public List<SysRoleData> selectSysRoleDataList(SysRoleData sysRoleData);
+
+    /**
+     * 新增角色权限数据
+     * 
+     * @param sysRoleData 角色权限数据
+     * @return 结果
+     */
+    public int insertSysRoleData(SysRoleData sysRoleData);
+
+    /**
+     * 修改角色权限数据
+     * 
+     * @param sysRoleData 角色权限数据
+     * @return 结果
+     */
+    public int updateSysRoleData(SysRoleData sysRoleData);
+
+    /**
+     * 批量删除角色权限数据
+     * 
+     * @param ids 需要删除的角色权限数据ID
+     * @return 结果
+     */
+    public int deleteSysRoleDataByIds(Long[] ids);
+
+    /**
+     * 删除角色权限数据信息
+     * 
+     * @param id 角色权限数据ID
+     * @return 结果
+     */
+    public int deleteSysRoleDataById(Long id);
+}

+ 66 - 17
boman-modules/boman-system/src/main/java/com/boman/system/service/impl/SysMenuServiceImpl.java

@@ -9,6 +9,7 @@ import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.boman.common.core.utils.obj.ObjectUtils;
 import com.boman.common.core.web.domain.AjaxResult;
 import com.boman.system.api.domain.SysMenu;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -189,29 +190,64 @@ public class SysMenuServiceImpl implements ISysMenuService
      * @return 树结构列表
      */
     @Override
-    public List<SysMenu> buildMenuTree(List<SysMenu> menus)
-    {
-        List<SysMenu> returnList = new ArrayList<SysMenu>();
-        List<Long> tempList = new ArrayList<Long>();
-        for (SysMenu dept : menus)
-        {
-            tempList.add(dept.getId());
-        }
-        for (Iterator<SysMenu> iterator = menus.iterator(); iterator.hasNext();)
-        {
-            SysMenu menu = (SysMenu) iterator.next();
+    public List<SysMenu> buildMenuTree(List<SysMenu> menus) {
+        List<SysMenu> returnList = new ArrayList<>();
+        List<Long> allMenuId = ObjectUtils.map(menus, SysMenu::getId);
+        for (SysMenu menu : menus) {
             // 如果是顶级节点, 遍历该父节点的所有子节点
-            if (!tempList.contains(menu.getParentId()))
-            {
+            if (!allMenuId.contains(menu.getParentId())) {
                 recursionFn(menus, menu);
                 returnList.add(menu);
             }
         }
-        if (returnList.isEmpty())
-        {
-            returnList = menus;
+
+        return returnList.isEmpty() ? menus : returnList;
+    }
+
+    /**
+     * 构建前端所需要树结构
+     *
+     * @param menus 菜单列表
+     * @return 树结构列表
+     */
+    @Override
+    public List<SysMenu> buildMenuTreeNotAddLeafNode(List<SysMenu> menus) {
+        List<SysMenu> returnList = new ArrayList<>();
+        List<Long> allMenuId = ObjectUtils.map(menus, SysMenu::getId);
+        for (SysMenu menu : menus) {
+            // 如果是顶级节点, 遍历该父节点的所有子节点
+            if (!allMenuId.contains(menu.getParentId())) {
+                recursionNotAddLeafNode(menus, menu);
+                returnList.add(menu);
+            }
+        }
+
+        return returnList.isEmpty() ? menus : returnList;
+    }
+
+
+    /**
+     * 功能描述: 递归调用,叶子节点不放到父类中
+     *
+     * @param list 所有的菜单
+     * @param menu 当前菜单
+     */
+    private void recursionNotAddLeafNode(List<SysMenu> list, SysMenu menu) {
+        // 叶子结点
+        int count = 0;
+        // 得到子节点列表
+        List<SysMenu> childList = getChildList(list, menu);
+        for (SysMenu tChild : childList) {
+            if (hasChild(list, tChild)) {
+                recursionNotAddLeafNode(list, tChild);
+            } else {
+                // 为叶子节点
+                count++;
+            }
+        }
+        if (count != childList.size()) {
+            menu.setChildren(childList);
         }
-        return returnList;
     }
 
     /**
@@ -227,6 +263,19 @@ public class SysMenuServiceImpl implements ISysMenuService
         return menuTrees.stream().map(TreeSelect::new).collect(Collectors.toList());
     }
 
+    /**
+     * 构建前端所需要下拉树结构
+     *
+     * @param menus 菜单列表
+     * @return 下拉树结构列表
+     */
+    @Override
+    public List<TreeSelect> buildMenuTreeSelectNotAddLeafNode(List<SysMenu> menus)
+    {
+        List<SysMenu> menuTrees = buildMenuTreeNotAddLeafNode(menus);
+        return menuTrees.stream().map(TreeSelect::new).collect(Collectors.toList());
+    }
+
     /**
      * 根据菜单ID查询信息
      * 

+ 100 - 0
boman-modules/boman-system/src/main/java/com/boman/system/service/impl/SysRoleDataServiceImpl.java

@@ -0,0 +1,100 @@
+package com.boman.system.service.impl;
+
+import java.util.List;
+
+import com.boman.common.core.utils.DateUtils;
+import com.boman.common.core.utils.SecurityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.boman.system.mapper.SysRoleDataMapper;
+import com.boman.system.domain.SysRoleData;
+import com.boman.system.service.ISysRoleDataService;
+
+/**
+ * 角色权限数据Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2021-04-26
+ */
+@Service
+public class SysRoleDataServiceImpl implements ISysRoleDataService 
+{
+    @Autowired
+    private SysRoleDataMapper sysRoleDataMapper;
+
+    /**
+     * 查询角色权限数据
+     * 
+     * @param id 角色权限数据ID
+     * @return 角色权限数据
+     */
+    @Override
+    public SysRoleData selectSysRoleDataById(Long id)
+    {
+        return sysRoleDataMapper.selectSysRoleDataById(id);
+    }
+
+    /**
+     * 查询角色权限数据列表
+     * 
+     * @param sysRoleData 角色权限数据
+     * @return 角色权限数据
+     */
+    @Override
+    public List<SysRoleData> selectSysRoleDataList(SysRoleData sysRoleData)
+    {
+        return sysRoleDataMapper.selectSysRoleDataList(sysRoleData);
+    }
+
+    /**
+     * 新增角色权限数据
+     * 
+     * @param sysRoleData 角色权限数据
+     * @return 结果
+     */
+    @Override
+    public int insertSysRoleData(SysRoleData sysRoleData)
+    {
+        sysRoleData.setCreateTime(DateUtils.getNowDate());
+        sysRoleData.setCreateBy(SecurityUtils.getUsername());
+        return sysRoleDataMapper.insertSysRoleData(sysRoleData);
+    }
+
+    /**
+     * 修改角色权限数据
+     * 
+     * @param sysRoleData 角色权限数据
+     * @return 结果
+     */
+    @Override
+    public int updateSysRoleData(SysRoleData sysRoleData)
+    {
+        sysRoleData.setUpdateTime(DateUtils.getNowDate());
+        sysRoleData.setUpdateBy(SecurityUtils.getUsername());
+        return sysRoleDataMapper.updateSysRoleData(sysRoleData);
+    }
+
+    /**
+     * 批量删除角色权限数据
+     * 
+     * @param ids 需要删除的角色权限数据ID
+     * @return 结果
+     */
+    @Override
+    public int deleteSysRoleDataByIds(Long[] ids)
+    {
+        return sysRoleDataMapper.deleteSysRoleDataByIds(ids);
+    }
+
+    /**
+     * 删除角色权限数据信息
+     * 
+     * @param id 角色权限数据ID
+     * @return 结果
+     */
+    @Override
+    public int deleteSysRoleDataById(Long id)
+    {
+        return sysRoleDataMapper.deleteSysRoleDataById(id);
+    }
+}

+ 3 - 0
boman-modules/boman-system/src/main/resources/mapper/system/SysMenuMapper.xml

@@ -35,6 +35,9 @@
     <select id="selectMenuList" parameterType="SysMenu" resultMap="SysMenuResult">
 		<include refid="selectMenuVo"/>
 		<where>
+			<if test="id != null and id != ''">
+				AND id = #{id}
+			</if>
 			<if test="menuName != null and menuName != ''">
 				AND menu_name like concat('%', #{menuName}, '%')
 			</if>

+ 117 - 0
boman-modules/boman-system/src/main/resources/mapper/system/SysRoleDataMapper.xml

@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.boman.system.mapper.SysRoleDataMapper">
+
+    <resultMap type="SysRoleData" id="SysRoleDataResult">
+        <result property="id" column="id"/>
+        <result property="roleId" column="role_id"/>
+        <result property="roleName" column="role_name"/>
+        <result property="roleSort" column="role_sort"/>
+        <result property="tableName" column="table_name"/>
+        <result property="dataScope" column="data_scope"/>
+        <result property="isUse" column="is_use"/>
+        <result property="isDel" column="is_del"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="remark" column="remark"/>
+    </resultMap>
+
+    <sql id="selectSysRoleDataVo">
+        select id, role_id, role_sort, table_name, data_scope, is_use, is_del, create_by, create_time, update_by, update_time, remark from sys_role_data
+    </sql>
+
+    <select id="selectSysRoleDataList" parameterType="SysRoleData" resultMap="SysRoleDataResult">
+        select d.id, d.role_id, d.role_sort, d.table_name, d.data_scope, d.is_use, d.is_del, d.remark, r.role_name
+        from sys_role_data d
+        left join sys_role r on d.role_id = r.id
+        <where>
+            d.is_del = 'N'
+            <if test="id != null and id != ''">
+                AND d.id = #{id}
+            </if>
+            <if test="roleId != null and roleId != ''">
+                AND d.role_id = #{roleId}
+            </if>
+            <if test="tableName != null and tableName != ''">
+                AND d.table_name like concat('%', #{tableName}, '%')
+            </if>
+            <if test="dataScope != null and dataScope != ''">
+                AND d.data_scope = #{dataScope}
+            </if>
+            <if test="isUse != null and isUse != ''">
+                AND d.is_use = #{isUse}
+            </if>
+        </where>
+        order by d.role_sort
+    </select>
+
+    <select id="selectSysRoleDataById" parameterType="Long" resultMap="SysRoleDataResult">
+        <include refid="selectSysRoleDataVo"/>
+        where is_del = 'N' and id = #{id} order by role_sort asc
+    </select>
+
+    <insert id="insertSysRoleData" parameterType="SysRoleData">
+        insert into sys_role_data
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="roleId != null">role_id,</if>
+            <if test="roleSort != null">role_sort,</if>
+            <if test="tableName != null">table_name,</if>
+            <if test="dataScope != null">data_scope,</if>
+            <if test="isUse != null">is_use,</if>
+            <if test="isDel != null">is_del,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="roleId != null">#{roleId},</if>
+            <if test="roleSort != null">#{roleSort},</if>
+            <if test="tableName != null">#{tableName},</if>
+            <if test="dataScope != null">#{dataScope},</if>
+            <if test="isUse != null">#{isUse},</if>
+            <if test="isDel != null">#{isDel},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+        </trim>
+    </insert>
+
+    <update id="updateSysRoleData" parameterType="SysRoleData">
+        update sys_role_data
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="roleId != null">role_id = #{roleId},</if>
+            <if test="roleSort != null">role_sort = #{roleSort},</if>
+            <if test="tableName != null">table_name = #{tableName},</if>
+            <if test="dataScope != null">data_scope = #{dataScope},</if>
+            <if test="isUse != null">is_use = #{isUse},</if>
+            <if test="isDel != null">is_del = #{isDel},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteSysRoleDataById" parameterType="Long">
+        delete from sys_role_data where id = #{id}
+    </delete>
+
+    <delete id="deleteSysRoleDataByIds" parameterType="String">
+        delete from sys_role_data where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 2 - 0
boman-web-core/src/main/java/com/boman/web/core/service/TableServiceCmdService.java

@@ -224,6 +224,8 @@ public class TableServiceCmdService {
         checkColumn(showData, genTable.getColumns());
         // 需要返回到前台的列, 需要判断是否是列表展示, 4为判断列表是否可见
         showData = filterData(columns, 4, showData, MaskConstant.LIST_VISIBLE::equals);
+        // 表的id单独处理,不管mask,都查出来返给前台
+        IdUtils.putIfNotContains(showData, IdUtils.getPkName(columns));
 
         JSONObject rows = new JSONObject();
         int total = selectService.countByCondition(genTable.getTableName(), condition, packCondition);

+ 12 - 0
boman-web-core/src/main/java/com/boman/web/core/utils/IdUtils.java

@@ -1,5 +1,6 @@
 package com.boman.web.core.utils;
 
+import com.alibaba.fastjson.JSONArray;
 import com.boman.common.core.utils.SpringUtils;
 import com.boman.common.redis.RedisKey;
 import com.boman.common.redis.service.RedisService;
@@ -9,6 +10,7 @@ import org.apache.commons.collections.CollectionUtils;
 
 import java.util.List;
 
+import static com.boman.common.core.utils.obj.ObjectUtils.isEmpty;
 import static com.boman.common.core.utils.obj.ObjectUtils.requireNonNull;
 
 /**
@@ -54,4 +56,14 @@ public class IdUtils {
         throw new IllegalArgumentException("获取主键失败");
     }
 
+    public static void putIfNotContains(JSONArray jsonArray, String input) {
+        if (isEmpty(jsonArray)) {
+            jsonArray = new JSONArray();
+        }
+
+        if (!jsonArray.contains(input)) {
+            jsonArray.add(input);
+        }
+    }
+
 }

+ 42 - 0
ruoyi-ui/src/api/system/permisss.js

@@ -0,0 +1,42 @@
+import request from '@/utils/request'
+
+// 查询列表
+export function listPostporen(query) {
+  return request({
+    url: '/boman-system/roleData/list',
+    method: 'get',
+    params: query
+  })
+}
+// 新增
+export function addlistPostporen(data) {
+  return request({
+    url: '/boman-system/roleData',
+    method: 'post',
+    data: data
+  })
+}
+
+// //修改
+export function getRoler(id) {
+  return request({
+    url: '/boman-system/roleData/' + id,
+    method:'get'
+
+  })
+}
+
+export function piutRoler(data) {
+  return request({
+    url: '/boman-system/roleData',
+    method:'put',
+    data:data
+  })
+}
+// // 删除
+export function delelistPostporen(id) {
+  return request({
+    url: '/boman-system/roleData/' + id,
+    method: 'delete'
+  })
+}

+ 3 - 2
ruoyi-ui/src/settings.js

@@ -1,7 +1,8 @@
 module.exports = {
   title: '潜山市云数据中心',
-  // urls: `http://192.168.101.11:8090`,
-  urls: `http://192.168.101.110:8090`,
+
+  urls: `http://192.168.101.11:8090`,
+  // urls: `http://192.168.101.110:8090`,
   // urls: `http://192.168.101.49:8080`,
 
   // urls: ``,

+ 6 - 1
ruoyi-ui/src/views/index.vue

@@ -633,7 +633,12 @@ export default {
            this.tableDataalid = response.data.tableHeadList;
            this.postList = response.data
            this.postList.rows.filter(route => {
-             route.dept_id = route.dept_id.value
+             // route.dept_id = route.dept_id.value
+             for(var item in route){
+               if(typeof route[item] == 'object'){
+                 route[item]= route[item].value
+               }
+             }
            })
            console.log(this.tableDataalid,67)
            this.totalprofile = response.data.total;

+ 65 - 33
ruoyi-ui/src/views/system/editing/index.vue

@@ -12,7 +12,7 @@
       </div>
       <el-divider></el-divider>
       <div class="table_headerBtun" v-if="queryData.buttonList">
-           <el-button type="primary" size="small" plain v-for="(item,indexss) in queryData.buttonList.split('')" :key="keyname + indexss" @click="handleQuery(item)">{{item | btnConversion}}</el-button>
+           <el-button type="primary" size="small" plain v-for="(item,indexss) in jeigneutwo" :key="keyname + indexss" @click="handleQuery(item)">{{item}}</el-button>
       </div>
     </div>
     <!-- 内容 -->
@@ -85,7 +85,9 @@
             deledlid:{
               table:'',
               idList:[]
-            }
+            },
+            jeigneu:[],
+            jeigneutwo:[],
         };
       },
       mounted() {
@@ -109,26 +111,6 @@
         this.edingelsietab()
       },
       filters:{
-        btnConversion(val) {
-          switch(val){
-            case 'A':
-            return '保存';
-            case 'M':
-            return '保存';
-            case 'D':
-            return '删除';
-            case 'Q':
-            return '查询';
-            case 'S':
-            return '提交';
-            case 'U':
-            return '反提交';
-            case 'I':
-            return '导入';
-            case 'E':
-            return '导出';
-          }
-        }
       },
       methods: {
         handleChange(val) {
@@ -151,6 +133,53 @@
           ).then(res => {
             let data = res.data
             this.queryData = data
+            this.jeigneutwo = []
+            this.jeigneu = []
+            this.jeigneu = data.buttonList.split('')
+            console.log(data.buttonList)
+            console.log(this.jeigneu)
+            this.jeigneu.filter(route => {
+              // route.dept_id = route.dept_id.value
+              console.log(route)
+              if(route == 'A'){
+                if(this.formy.id == -1){
+                  route = '保存'
+                  this.jeigneutwo.push(route)
+                }else{
+                  route = '新增'
+                }
+
+              }else if(route == 'M'){
+                route = '保存'
+                if(this.formy.id != -1){
+                  this.jeigneutwo.push(route)
+                }
+              }else if(route == 'D'){
+                route = '删除'
+                if(this.formy.id != -1){
+                  this.jeigneutwo.push(route)
+                }
+              }else if(route == 'Q'){
+                route = '查询'
+              }else if(route == 'S'){
+                route = '提交'
+                if(this.formy.id != -1){
+                  this.jeigneutwo.push(route)
+                }
+              }else if(route == 'U'){
+                route = '反提交'
+                if(this.formy.id != -1){
+                  this.jeigneutwo.push(route)
+                }
+              }else if(route == 'I'){
+                route = '导入'
+              }else if(route == 'E'){
+                route = '导出'
+              }
+
+            })
+            this.jeigneutwo.push('刷新')
+            this.jeigneutwo.push('返回')
             console.log(this.queryData,567)
           })
         },
@@ -210,10 +239,10 @@
           if(this.queryParams.pageSize !== undefined){
             this.queryParams.pageSize = undefined
           }
-          if(index == 'D'){
+          if(index == '删除'){
             //删除
             this.handleDelete(this.deledlid)
-          }else if(index == 'S'){
+          }else if(index == '提交'){
             //提交  保存
              // this.formeanti.table = 'obj_test'
              this.formeanti.commitData = []
@@ -222,7 +251,7 @@
              this.formeanti.commitData.push(this.formy)
              console.log(this.formeanti)
             this.antiSubmission()
-          }else if(index == 'U'){
+          }else if(index == '反提交'){
             //反提交  保存
              // this.formeanti.table = 'obj_test'
              this.formeanti.commitData = []
@@ -231,19 +260,22 @@
              this.formeanti.commitData.push(this.formy)
              console.log(this.formeanti)
             this.antiSubmission()
-          }else if(index == 'M'){
+          }else if(index == '保存'){
             // 修改
             // this.forme.table = 'obj_test'
             // this.forme.objId = 1
             this.forme.fixedData = this.queryParams
             this.submitForm()
-          }else if(index == 'A'){
-            //新增
-            // this.forme.table = 'obj_test'
-            // this.forme.objId = -1
-            this.forme.fixedData = this.queryParams
-            this.submitForm()
-          }
+          }else if(index == '返回'){
+           // if(this.xidugje ==0){
+           //    this.$router.go(-2)
+           // }else{
+             this.$router.go(-1)
+           // }
+         }else if(index == '刷新'){
+           // this.xidugje = 1
+           this.reload()
+         }
 
          console.log(this.forme)
          // this.getList();

+ 31 - 0
ruoyi-ui/src/views/system/loade/index.vue

@@ -0,0 +1,31 @@
+<template>
+ <div id="app">
+   <router-view v-if="isRouterAlive"/>
+ </div>
+</template>
+ 
+<script>
+export default {
+ name: 'App',
+ provide () {
+   return{
+     reload: this.reload
+   }
+ },
+ data() {
+   return {
+       isRouterAlive: true
+   }
+ },
+ methods:{
+   reload(){
+     this.isRouterAlive = false
+     this.$nextTick(function(){
+       this.isRouterAlive = true
+     })
+   }
+ }
+}
+
+
+</script>

+ 699 - 0
ruoyi-ui/src/views/system/permissions/index.vue

@@ -0,0 +1,699 @@
+<template>
+  <div class="app-container">
+    <el-row style="margin-top: 18px;">
+      <el-col :span="5" class="searBoxs">
+        <el-row class="roleBoxui">
+          <el-col :span="24" class="roleBotyu">
+            <el-row :gutter="10" class="mb8">
+            <el-col :span="1.5">
+              <el-button type="primary" style="background-color: #FF9639;color: #fff;border: none;" plain icon="el-icon-refresh"
+                @click="efresh" v-hasPermi="['system:role:list']">刷新</el-button>
+            </el-col>
+            </el-row>
+          </el-col>
+          </el-row>
+        <div class="searBox">
+          <div class="searInput">
+            <input type="text" placeholder="请输入角色" v-model="queryParams.roleName">
+          </div>
+          <div class="searBtn" @click="quregu">
+            <img src="@/assets/images/icon_sr_ss@2x.png" alt="" class="icon">
+          </div>
+        </div>
+        <div class="searList">
+          <div class="searItem" v-for="(item,index) in roleList" :key="item.roleName" :class="[indexdw == index? 'active' : '']" @click="jieese(item.id,index)">
+            {{item.roleName}}
+          </div>
+        </div>
+      </el-col>
+      <el-col :span="19" class="roleContr">
+        <el-row class="roleBox">
+          <el-col :span="24" class="roleBot">
+            <el-row :gutter="10" class="mb8">
+            <el-col :span="1.5">
+              <el-button type="primary" style="background-color: #2AC1CA;color: #fff;border: none;" plain icon="el-icon-plus"
+                @click="handleAdd" v-hasPermi="['system:role:add']">新增</el-button>
+            </el-col>
+            <el-col :span="1.5">
+              <el-button type="primary" style="background-color: #FF9639;color: #fff;border: none;" plain icon="el-icon-edit"
+                @click="handleUpdate" :disabled="single" v-hasPermi="['system:role:list']">修改</el-button>
+            </el-col>
+            <el-col :span="1.5">
+              <el-button type="primary" :disabled="multiple" style="background-color: #3C8DBC;color: #fff;border: none;" plain icon="el-icon-delete"
+                @click="handleDelete" v-hasPermi="['system:role:edit']">删除</el-button>
+            </el-col>
+            </el-row>
+          </el-col>
+          </el-row>
+        <div class="roleContrBox roleContrBoxthy">
+          <el-col :span="24">
+            <div class="searContLeft">
+              <el-table v-loading="loading" :data="cloumns" @selection-change="handleSelectionChange" :max-height="tableHeight">
+                <el-table-column type="selection" width="55" align="center" />
+                <el-table-column label="序号" align="center"  prop="id" />
+                <el-table-column label="用户角色" align="center" prop="roleName" />
+                <el-table-column label="权限表单" align="center" prop="tableName" />
+                <el-table-column label="数据过滤" align="center" prop="dataScope">
+                  <!-- <template slot-scope="scope">
+                    {{scope.row.dataScope | relationTypeFn}}
+                  </template> -->
+                </el-table-column>
+                <el-table-column label="是否可用"  align="center">
+                  <template slot-scope="scope">
+                    <el-checkbox true-label="Y" false-label="N" v-model="scope.row.isUse"></el-checkbox>
+                  </template>
+                </el-table-column>
+              </el-table>
+            </div>
+          </el-col>
+        <pagination
+           v-show="total>0"
+           :total="total"
+           :page.sync="queryParamstr.pageNum"
+           :limit.sync="queryParamstr.pageSize"
+           @pagination="getDeptTreeselect"
+         />
+        </div>
+
+      </el-col>
+    </el-row>
+
+    <!-- 添加或修改对话框 -->
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="600px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-form-item label="权限表单:" prop="tableName">
+          <el-input v-model="form.tableName" placeholder="请输入权限表单" />
+        </el-form-item>
+        <el-form-item label="权限范围:" prop="dataScope">
+         <el-select style="width: 100%;" v-model="form.dataScope" placeholder="权限范围" clearable size="small">
+           <el-option
+             v-for="dict in statusOptions"
+             :key="dict.dictValue"
+             :label="dict.dictLabel"
+             :value="dict.dictValue"
+           />
+         </el-select>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import { listRole, getRole, delRole, addRole, updateRole, exportRole, dataScope, changeRoleStatus } from "@/api/system/role";
+  import { treeselect as menuTreeselect, roleMenuTreeselect } from "@/api/system/menu";
+  import { treeselect as deptTreeselect, roleDeptTreeselect } from "@/api/system/dept";
+  import { listPostporen, addlistPostporen, getRoler,delelistPostporen,piutRoler } from "@/api/system/permisss.js";
+  export default {
+    name: "Role",
+    data() {
+      return {
+        searIndex: '',
+        defaultProps: {
+          children: 'children',
+          label: 'label'
+        },
+        indexs: 3,
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 角色表格数据
+        roleList: [],
+        // 弹出层标题
+        title: "",
+        // 是否显示弹出层
+        open: false,
+        // 是否显示弹出层(数据权限)
+        openDataScope: false,
+        menuExpand: false,
+        menuNodeAll: false,
+        deptExpand: true,
+        deptNodeAll: false,
+        // 日期范围
+        dateRange: [],
+        // 状态数据字典
+        statusOptions: [],
+        // 数据范围选项
+        // 菜单列表
+        menuOptions: [],
+        // 部门列表
+        deptOptions: [],
+        // 查询参数
+        queryParams: {
+          roleName: undefined,
+          roleId: undefined,
+          status: undefined
+        },
+        queryParamstr:{
+          pageNum: 1,
+          pageSize: 10,
+          roleId: undefined,
+        },
+        // 表单参数
+        form: {},
+        // 表单校验
+        rules: {
+          roleName: [{
+            required: true,
+            message: "角色名称不能为空",
+            trigger: "blur"
+          }],
+          roleKey: [{
+            required: true,
+            message: "权限字符不能为空",
+            trigger: "blur"
+          }],
+          roleSort: [{
+            required: true,
+            message: "角色顺序不能为空",
+            trigger: "blur"
+          }]
+        },
+        cloumns:[],
+        relationType: [],
+        // 表格的高度
+        tableHeight: document.documentElement.scrollHeight - 245 + "px",
+        ijeudid:-1,
+        indexdw:-1
+      };
+    },
+
+    created() {
+
+      this.getDicts("role_data").then(response => {
+        this.statusOptions = response.data;
+        this.relationType = response.data
+        this.getDeptTreeselect()
+        console.log(this.relationType)
+      });
+      this.getList();
+
+    },
+    filters: {
+      relationTypeFn(data) {
+        var _this = this
+        let is = ''
+        console.log(data)
+        console.log(_this.cloumns)
+        for (let item of that.relationType) {
+          if (item.dictValue == data) {
+            is = item.dictLabel
+          }
+        }
+        return is
+      },
+    },
+    methods: {
+      handleNodeClick() {
+        console.log(221)
+      },
+      /** 查询角色列表 */
+      getList() {
+        this.loading = true;
+        this.roleList = []
+        listRole(this.addDateRange(this.queryParams, this.dateRange)).then(
+          response => {
+            if(response.rows.length !==0){
+              this.roleList = response.rows;
+            }else{
+              this.roleList.push({roleName:'暂无数据'})
+            }
+
+            // this.total = response.total;
+            this.loading = false;
+          }
+        );
+      },
+      /** 查询菜单树结构 */
+      getMenuTreeselect() {
+        menuTreeselect().then(response => {
+          this.menuOptions = response.data;
+        });
+      },
+      /** 查询列表数据*/
+      getDeptTreeselect() {
+        listPostporen(this.queryParamstr).then(response => {
+          console.log(response.rows)
+          this.cloumns = response.rows;
+          this.total = response.total
+          // this.cloumns.
+          this.cloumns.filter(route => {
+            console.log(route)
+              for(var item in route){
+                console.log(item,78)
+                if(item == 'dataScope'){
+                  console.log(route[item])
+                  console.log(this.relationType)
+                  this.relationType.filter(router =>{
+                    console.log(router)
+                    if(router.dictValue == route[item]){
+                      route[item] = router.dictLabel
+                    }
+                    console.log(route[item])
+
+                  })
+                }
+              }
+          })
+        });
+      },
+      /** 根据角色ID查询菜单树结构 */
+      getRoleMenuTreeselect(id) {
+        return roleMenuTreeselect(id).then(response => {
+          this.menuOptions = response.menus;
+          return response;
+        });
+      },
+      /** 根据角色ID查询部门树结构 */
+      getRoleDeptTreeselect(id) {
+        return roleDeptTreeselect(id).then(response => {
+          this.deptOptions = response.depts;
+          return response;
+        });
+      },
+      // 角色状态修改
+      handleStatusChange(row) {
+        let text = row.status === "0" ? "启用" : "停用";
+        this.$confirm('确认要"' + text + '""' + row.roleName + '"角色吗?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return changeRoleStatus(row.id, row.status);
+        }).then(() => {
+          this.msgSuccess(text + "成功");
+        }).catch(function() {
+          row.status = row.status === "0" ? "1" : "0";
+        });
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      // 取消按钮(数据权限)
+      cancelDataScope() {
+        this.openDataScope = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+
+          this.form = {
+          };
+        this.resetForm("form");
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.dateRange = [];
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.ids = selection.map(item => item.id)
+        this.single = selection.length != 1
+        this.multiple = !selection.length
+      },
+      /** 新增按钮操作 */
+      handleAdd() {
+        this.reset();
+        // this.getMenuTreeselect();
+        this.open = true;
+        this.title = "添加数据权限";
+      },
+      /** 修改按钮操作 */
+      handleUpdate(row) {
+        this.reset();
+        const id = row.id || this.ids
+        // const roleMenu = this.getRoleMenuTreeselect(id);
+        getRoler(id).then(response => {
+          this.form = response.data;
+          this.open = true;
+          this.$nextTick(() => {
+            roleMenu.then(res => {
+              let checkedKeys = res.checkedKeys
+              checkedKeys.forEach((v) => {
+                this.$nextTick(() => {
+                  this.$refs.menu.setChecked(v, true, false);
+                })
+              })
+            });
+          });
+          this.title = "修改数据权限";
+        });
+      },
+      /** 选择角色权限范围触发 */
+      dataScopeSelectChange(value) {
+        if (value !== '2') {
+          this.$refs.dept.setCheckedKeys([]);
+        }
+      },
+      /** 分配数据权限操作 */
+      handleDataScope(row) {
+        this.reset();
+        const roleDeptTreeselect = this.getRoleDeptTreeselect(row.id);
+        getRole(row.id).then(response => {
+          this.form = response.data;
+          this.openDataScope = true;
+          this.$nextTick(() => {
+            roleDeptTreeselect.then(res => {
+              this.$refs.dept.setCheckedKeys(res.checkedKeys);
+            });
+          });
+          this.title = "分配数据权限";
+        });
+      },
+      /** 提交按钮 */
+      submitForm: function() {
+        this.$refs["form"].validate(valid => {
+          if (valid) {
+            if (this.form.id != undefined) {
+              // this.form.menuIds = this.getMenuAllCheckedKeys();
+              piutRoler(this.form).then(response => {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getDeptTreeselect();
+              });
+            } else {
+              // this.form.menuIds = this.getMenuAllCheckedKeys();
+              this.form.roleId = this.ijeudid
+              if(this.form.roleId !== -1){
+                addlistPostporen(this.form).then(response => {
+                  this.msgSuccess("新增成功");
+                  this.open = false;
+                  this.getDeptTreeselect();
+                });
+              }else{
+                this.msgSuccess("请先选择角色在添加");
+                this.open = false
+              }
+            }
+          }
+        });
+      },
+      /** 提交按钮(数据权限) */
+      submitDataScope: function() {
+        if (this.form.id != undefined) {
+          this.form.deptIds = this.getDeptAllCheckedKeys();
+          dataScope(this.form).then(response => {
+            this.msgSuccess("修改成功");
+            this.openDataScope = false;
+            // this.getDeptTreeselect();
+          });
+        }
+      },
+      /** 删除按钮操作 */
+      handleDelete(row) {
+        const ids = row.id || this.ids;
+        this.$confirm('是否确认删除角色编号为"' + ids + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delelistPostporen(ids);
+        }).then(() => {
+          this.getDeptTreeselect();
+          this.msgSuccess("删除成功");
+        })
+      },
+      /** 导出按钮操作 */
+      handleExport() {
+        this.download('system/role/export', {
+          ...this.queryParams
+        }, `role_${new Date().getTime()}.xlsx`)
+      },
+      // 查询
+      quregu(){
+        this.getList()
+      },
+      // 刷新
+      efresh(){
+       this.queryParams.roleName = undefined
+       this.getList()
+       this.queryParamstr.roleId = undefined
+       this.getDeptTreeselect()
+      },
+      // 点击角色id
+      jieese(id,index){
+        console.log(id)
+        console.log(index)
+        this.indexdw = index
+        this.ijeudid = id
+        this.queryParamstr.roleId = id
+        this.getDeptTreeselect()
+       console.log(this.form.roleId)
+      }
+    }
+  };
+</script>
+<style lang="scss">
+  .roleContrBoxthy{
+    position: relative;
+    .pagination-container{
+      // position: fixed;
+      position: absolute;
+      bottom: 10px;
+      right: 20px;
+      margin-top: 87px;
+    }
+  }
+</style>
+<style lang="scss" scoped>
+  .roleContrBox {
+    background-color: #fff;
+    // border-radius: 6px;
+    overflow: hidden;
+    padding: 23px 0;
+  }
+
+  .roleContr {
+    padding-left: 17px;
+
+    .searContLeft {
+      padding:0 17px 23px 23px;
+      // border-right: 2px solid #E5E5E5;
+    }
+
+    .searContRight {
+      padding-left: 18px;
+
+      .searTitle {
+        display: flex;
+        padding-left: 11px;
+        margin-bottom: 26px;
+
+        .searName {
+          color: #343434;
+          font-size: 12px;
+          width: 156px;
+        }
+
+        .searItem {
+          flex: 1;
+          font-size: 12px;
+        }
+      }
+
+      .searCont {
+        display: flex;
+        height: 23px;
+        padding-left: 11px;
+        align-items: center;
+        margin-bottom: 4px;
+        cursor: pointer;
+
+        .searName {
+          color: #343434;
+          font-size: 12px;
+          width: 156px;
+        }
+
+        .searItem {
+          flex: 1;
+          font-size: 12px;
+        }
+
+        &:hover {
+          background-color: rgba(0, 0, 0, .1);
+        }
+      }
+
+      .active {
+        background-color: #CADBE4 !important;
+
+        .searName {
+          color: #fff;
+        }
+      }
+    }
+  }
+
+  .searBoxs {
+    background-color: #fff;
+    border-radius: 6px;
+    padding: 23px;
+
+    .searBox {
+      display: flex;
+
+      .searInput {
+        flex: 1;
+        height: 32px;
+        margin-right: 8px;
+        box-sizing: border-box;
+        border-radius: 4px;
+        overflow: hidden;
+      }
+
+      input {
+        width: 100%;
+        height: 100%;
+        background-color: #F7F6F6;
+        border: none;
+        padding: 0 7px;
+        outline: none;
+
+        &::placeholder {
+          color: #AAAAAA;
+          font-size: 12px;
+        }
+      }
+
+      .searBtn {
+        width: 30px;
+        height: 32px;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        background-color: #3C8DBC;
+        cursor: pointer;
+         border-radius: 4px;
+         overflow: hidden;
+        .icon {
+          width: 18px;
+          height: 17px;
+        }
+      }
+    }
+
+    .searList {
+      padding: 10px 0;
+
+      .searItem {
+        padding: 0 8px;
+        line-height: 30px;
+        font-size: 12px;
+        color: #343434;
+        cursor: pointer;
+      }
+
+      .active {
+        background-color: #CADBE4;
+        color: #3C8DBC;
+      }
+    }
+  }
+
+  .app-container {
+    background-color: #EFF0FF;
+    min-height: calc(100vh - 70px);
+    box-sizing: border-box;
+    box-sizing: border-box;
+  }
+
+  .roleBox {
+    padding: 0 23px;
+    background: #fff;
+    // border-radius: 6px;
+
+    .roleCol {
+      padding: 20px 0;
+      border-bottom: 1px solid #E5E5E5;
+
+      .roleH {
+        width: 18px;
+        height: 8px;
+        border-radius: 4px;
+        background-color: #3C8DBC;
+        margin-bottom: 8px;
+      }
+
+      span {
+        font-size: 15px;
+        color: #3C8DBC;
+      }
+    }
+
+    .roleBot {
+      padding: 22px 0;
+      padding-bottom: 0;
+      .roleBtn {
+        height: 32px;
+        display: flex;
+        border-radius: 3px;
+        justify-content: center;
+        align-items: center;
+        width: 83px;
+        margin-right: 18px;
+
+        .icon {
+          width: 14px;
+          height: 14px;
+          margin-right: 7px;
+        }
+
+        span {
+          color: #fff;
+          font-size: 12px;
+        }
+      }
+    }
+  }
+  .roleBotyu{
+    padding: 0;
+    padding-bottom: 22px;
+    padding-top: 1px;
+    }
+   .roleBoxui{
+     padding-left: 0;
+   }
+</style>
+<style>
+  .el-icon-my-export{
+      background: url('~@/assets/images/icon_btn_bc@2x.png') center no-repeat;
+      background-size: 13px 13px;
+     /* background-size: cover;*/
+  }
+  .el-icon-my-export:before{
+      content: "替";
+      font-size: 16px;
+      visibility: hidden;
+  }
+
+
+  .el-icon-my-export{
+      font-size: 16px;
+  }
+  .el-icon-my-export:before{
+      content: "\e611";
+  }
+</style>

+ 2 - 1
ruoyi-ui/src/views/system/table/index.vue

@@ -227,10 +227,11 @@
             if(route == 'A'){
               if(this.formy.id == -1){
                 route = '保存'
+                this.jeigneutwo.push(route)
               }else{
                 route = '新增'
               }
-             this.jeigneutwo.push(route)
+             
             }else if(route == 'M'){
               route = '保存'
               if(this.formy.id != -1){