Эх сурвалжийг харах

Merge remote-tracking branch 'origin/master'

Administrator 4 жил өмнө
parent
commit
ab6c8f5646

+ 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;
     }
 

+ 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查询信息
      * 

+ 36 - 1
boman-modules/boman-system/src/main/java/com/boman/system/service/impl/SysMenuServiceImpl.java

@@ -191,6 +191,27 @@ public class SysMenuServiceImpl implements ISysMenuService
      */
     @Override
     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 (!allMenuId.contains(menu.getParentId())) {
+                recursionFn(menus, menu);
+                returnList.add(menu);
+            }
+        }
+
+        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) {
@@ -204,6 +225,7 @@ public class SysMenuServiceImpl implements ISysMenuService
         return returnList.isEmpty() ? menus : returnList;
     }
 
+
     /**
      * 功能描述: 递归调用,叶子节点不放到父类中
      *
@@ -217,7 +239,7 @@ public class SysMenuServiceImpl implements ISysMenuService
         List<SysMenu> childList = getChildList(list, menu);
         for (SysMenu tChild : childList) {
             if (hasChild(list, tChild)) {
-                recursionFn(list, tChild);
+                recursionNotAddLeafNode(list, tChild);
             } else {
                 // 为叶子节点
                 count++;
@@ -241,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查询信息
      * 

+ 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>

+ 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'
+  })
+}

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

@@ -1,10 +1,10 @@
 module.exports = {
   title: '潜山市云数据中心',
-  // urls: `http://192.168.101.11:8090`,
+  urls: `http://192.168.101.11:8090`,
   // urls: `http://192.168.101.110:8090`,
   // urls: `http://192.168.101.49:8080`,
 
-  urls: ``,
+  // urls: ``,
 
   /**
    * 侧边栏主题 深色主题theme-dark,浅色主题theme-light

+ 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){