فهرست منبع

角色节点允许业务管理员访问,只能对业务角色分配菜单

xusl 1 سال پیش
والد
کامیت
cc37759529
2فایلهای تغییر یافته به همراه133 افزوده شده و 61 حذف شده
  1. 28 2
      backend/src/main/java/com/jiayue/ssi/controller/SysRoleController.java
  2. 105 59
      ui/src/views/sysManager/roleManager/index.vue

+ 28 - 2
backend/src/main/java/com/jiayue/ssi/controller/SysRoleController.java

@@ -11,6 +11,7 @@ import com.jiayue.ssi.annotation.PreventReplay;
 import com.jiayue.ssi.backenum.AuditType;
 import com.jiayue.ssi.backenum.BusinessType;
 import com.jiayue.ssi.constant.CustomException;
+import com.jiayue.ssi.constant.PermissionCharacter;
 import com.jiayue.ssi.constant.UserConstants;
 import com.jiayue.ssi.entity.SysParameter;
 import com.jiayue.ssi.entity.SysRole;
@@ -98,6 +99,14 @@ public class SysRoleController {
                 wrapper.like("role_key", roleKey);
             }
             wrapper.orderByAsc("role_sort");
+
+            // 获取当前操作用户的角色
+            SysRole sysRole = roleService.selectRoleListByUserId();
+            if (!PermissionCharacter.P_XTGL.equals(sysRole.getRoleKey())){
+                // 不是系统管理员角色,只查询业务类角色
+                wrapper.eq("role_type","1");
+            }
+
             Page<SysRole> result = roleService.page(new Page<>(cp, ps), wrapper);
             return ResponseVO.success(result);
         } catch (Exception e) {
@@ -283,12 +292,29 @@ public class SysRoleController {
                 return ResponseVO.fail("用户类型为空不能获取角色列表!");
             }
             QueryWrapper<SysRole> wrapper = new QueryWrapper<>();
-            wrapper.eq("role_type", usertype);
-            wrapper.eq("status", "0");
+//            wrapper.eq("role_type", usertype);
+//            wrapper.eq("status", "0");
             List<SysRole> result = roleService.list(wrapper);
             return ResponseVO.success(result);
         } catch (Exception e) {
             throw new CustomException("获取分配角色列表异常", e);
         }
     }
+
+    /**
+     * 获取当前用户的角色信息
+     *
+     * @return
+     */
+    @GetMapping(value = "/getUserByRole")
+    @PreventReplay
+    public ResponseVO getUserByRole() throws CustomException {
+        try {
+            SysRole sysRole = roleService.selectRoleListByUserId();
+            return ResponseVO.success(sysRole);
+        } catch (Exception e) {
+            throw new CustomException("获取分配角色列表异常", e);
+        }
+    }
+
 }

+ 105 - 59
ui/src/views/sysManager/roleManager/index.vue

@@ -24,21 +24,21 @@
           </el-option>
         </el-select>
       </el-form-item>
-<!--      <el-form-item label="状态" prop="status">-->
-<!--        <el-select-->
-<!--          v-model="queryParams.status"-->
-<!--          placeholder="请选择角色状态"-->
-<!--          clearable-->
-<!--          style="width: 240px"-->
-<!--        >-->
-<!--          <el-option-->
-<!--            v-for="item in statusOptions"-->
-<!--            :key="item.value"-->
-<!--            :label="item.label"-->
-<!--            :value="item.value">-->
-<!--          </el-option>-->
-<!--        </el-select>-->
-<!--      </el-form-item>-->
+      <!--      <el-form-item label="状态" prop="status">-->
+      <!--        <el-select-->
+      <!--          v-model="queryParams.status"-->
+      <!--          placeholder="请选择角色状态"-->
+      <!--          clearable-->
+      <!--          style="width: 240px"-->
+      <!--        >-->
+      <!--          <el-option-->
+      <!--            v-for="item in statusOptions"-->
+      <!--            :key="item.value"-->
+      <!--            :label="item.label"-->
+      <!--            :value="item.value">-->
+      <!--          </el-option>-->
+      <!--        </el-select>-->
+      <!--      </el-form-item>-->
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -102,7 +102,7 @@
         <vxe-table-column field="roleType" title="类型" :formatter="typeFormat"/>
         <vxe-table-column field="roleKey" title="字符标识"/>
         <vxe-table-column field="roleSort" title="显示顺序"/>
-<!--        <vxe-table-column field="status" title="状态" :formatter="statusFormat"/>-->
+        <!--        <vxe-table-column field="status" title="状态" :formatter="statusFormat"/>-->
       </vxe-table>
       <vxe-pager
         v-show="showTable"
@@ -122,7 +122,7 @@
         <el-form-item label="角色名称" prop="roleName">
           <el-input v-model="form.roleName" maxlength="15" placeholder="请输入角色名称" :disabled="edit"/>
         </el-form-item>
-        <el-form-item label="字符标识" prop="roleKey">
+        <el-form-item label="字符标识" prop="roleKey" :disabled="xtglyedit">
           <el-select
             @change="changepc"
             v-model="form.roleKey"
@@ -156,22 +156,22 @@
             </el-option>
           </el-select>
         </el-form-item>
-<!--        <el-form-item label="状态">-->
-<!--          <el-select-->
-<!--            v-model="form.status"-->
-<!--            placeholder="请选择用户状态"-->
-<!--            clearable-->
-<!--            style="width: 240px"-->
-<!--            :disabled="edit"-->
-<!--          >-->
-<!--            <el-option-->
-<!--              v-for="item in statusOptions"-->
-<!--              :key="item.value"-->
-<!--              :label="item.label"-->
-<!--              :value="item.value">-->
-<!--            </el-option>-->
-<!--          </el-select>-->
-<!--        </el-form-item>-->
+        <!--        <el-form-item label="状态">-->
+        <!--          <el-select-->
+        <!--            v-model="form.status"-->
+        <!--            placeholder="请选择用户状态"-->
+        <!--            clearable-->
+        <!--            style="width: 240px"-->
+        <!--            :disabled="edit"-->
+        <!--          >-->
+        <!--            <el-option-->
+        <!--              v-for="item in statusOptions"-->
+        <!--              :key="item.value"-->
+        <!--              :label="item.label"-->
+        <!--              :value="item.value">-->
+        <!--            </el-option>-->
+        <!--          </el-select>-->
+        <!--        </el-form-item>-->
         <el-form-item label="菜单权限">
           <el-checkbox v-model="menuExpand" @change="handleCheckedTreeExpand($event, 'menu')">展开/折叠</el-checkbox>
           <el-checkbox v-model="menuNodeAll" @change="handleCheckedTreeNodeAll($event, 'menu')">全选/全不选</el-checkbox>
@@ -260,8 +260,10 @@ export default {
         {value: '0', label: '正常'},
         {value: '1', label: '停用'}
       ],
+      // 系统管理员edit
+      xtglyedit: false,
       edit: false,
-      showTable: true,
+      showTable: false,
       // 遮罩层
       loading: true,
       // 选中数组
@@ -271,7 +273,7 @@ export default {
       // 非多个禁用
       multiple: true,
       // 显示搜索条件
-      showSearch: true,
+      showSearch: false,
       currentPage: 1,
       pageSize: 10,
       // 总条数
@@ -356,7 +358,7 @@ export default {
     this.getList();
   },
   methods: {
-    changepc(value){
+    changepc(value) {
       this.getMenuTreeselect(value);
     },
     // 列表状态格式化
@@ -373,6 +375,30 @@ export default {
     },
     /** 查询角色列表 */
     async getList() {
+      // 获取当前用户的角色
+      let sysTime2
+      let lk2
+      await this.$axios.get('/sysPolicyController/getLicenseKey').then((res) => {
+        sysTime2 = res.data.sysTime
+        lk2 = res.data.lk
+      }).catch((error) => {
+      })
+      var searchParams2 = {
+        sysTime: sysTime2,
+        lk: lk2
+      }
+      await this.$axios.get('/sysRoleController/getUserByRole', {params: searchParams2}).then((res) => {
+        let sysRole = res.data
+        if (sysRole.roleKey == 'XTGL') {
+          // 不是系统管理员,隐藏查询和修改
+          this.showSearch = true
+        } else {
+          this.xtglyedit = true
+          this.edit = true
+        }
+      }).catch((error) => {
+      })
+
       this.loading = true;
       let sysTime
       let lk
@@ -480,13 +506,13 @@ export default {
     },
     // 取消按钮
     cancel() {
-      this.menuOptions=[];
+      this.menuOptions = [];
       this.open = false;
       this.reset();
     },
     // 取消按钮(数据权限)
     cancelDataScope() {
-      this.deptOptions=[];
+      this.deptOptions = [];
       this.openDataScope = false;
       this.reset();
     },
@@ -496,23 +522,23 @@ export default {
         this.$refs.menu.setCheckedKeys([]);
       }
       this.edit = false,
-      this.menuExpand = false,
-      this.menuNodeAll = false,
-      this.deptExpand = true,
-      this.deptNodeAll = false,
-      this.form = {
-        roleId: undefined,
-        roleName: undefined,
-        roleKey: undefined,
-        roleSort: 0,
-        status: "0",
-        roleType: "0",
-        menuIds: [],
-        deptIds: [],
-        menuCheckStrictly: true,
-        deptCheckStrictly: true,
-        remark: undefined
-      };
+        this.menuExpand = false,
+        this.menuNodeAll = false,
+        this.deptExpand = true,
+        this.deptNodeAll = false,
+        this.form = {
+          roleId: undefined,
+          roleName: undefined,
+          roleKey: undefined,
+          roleSort: 0,
+          status: "0",
+          roleType: "0",
+          menuIds: [],
+          deptIds: [],
+          menuCheckStrictly: true,
+          deptCheckStrictly: true,
+          remark: undefined
+        };
       this.resetForm("form");
     },
     /** 搜索按钮操作 */
@@ -593,8 +619,29 @@ export default {
         return
       }
 
+      let sysTime2
+      let lk2
+      await this.$axios.get('/sysPolicyController/getLicenseKey').then((res) => {
+        sysTime2 = res.data.sysTime
+        lk2 = res.data.lk
+      }).catch((error) => {
+      })
+      var searchParams2 = {
+        sysTime: sysTime2,
+        lk: lk2
+      }
+      await this.$axios.get('/sysRoleController/getUserByRole', {params: searchParams2}).then((res) => {
+        let sysRole = res.data
+        if (sysRole.roleKey != 'XTGL') {
+          this.xtglyedit = true
+          this.edit = true
+        }
+      }).catch((error) => {
+      })
+
+
       if (_selectData.roleKey == 'XTGL' || _selectData.roleKey == 'SJGL') {
-        this.edit=true;
+        this.edit = true;
       }
       const roleId = _selectData.roleId
 
@@ -635,7 +682,6 @@ export default {
         {params: param1}).then((res) => {
         this.menuOptions = res.data.menus;
         let checkedKeys = res.data.checkedKeys
-        console.log(checkedKeys)
         checkedKeys.forEach((v) => {
           this.$nextTick(() => {
             this.$refs.menu.setChecked(v, true, false);
@@ -688,7 +734,7 @@ export default {
                 this.open = false;
                 this.reset();
                 this.getList();
-                this.menuOptions=[];
+                this.menuOptions = [];
               }
               if (res.code == 1) {
                 this.$message.error(res.data)
@@ -705,7 +751,7 @@ export default {
                 this.open = false;
                 this.reset();
                 this.getList();
-                this.menuOptions=[];
+                this.menuOptions = [];
               }
               if (res.code == 1) {
                 this.$message.error(res.data)