Pārlūkot izejas kodu

安全检查完善权限

jiawuxian 2 gadi atpakaļ
vecāks
revīzija
140d2fc0d2

+ 13 - 11
src/directive/permission/hasPermi.js

@@ -1,29 +1,31 @@
- /**
+/**
  * v-hasPermi 操作权限处理
  * Copyright (c) 2019 ruoyi
  */
 
-import store from '@/store'
+import store from "@/store";
 
 export default {
   inserted(el, binding, vnode) {
     //console.log(el, binding,'vnode')
-    const { value } = binding
+    const { value } = binding;
     const all_permission = "*:*:*";
-    const permissions = store.getters && store.getters.permissions
+    const permissions = store.getters && store.getters.permissions;
 
     if (value && value instanceof Array && value.length > 0) {
-      const permissionFlag = value
+      const permissionFlag = value;
 
-      const hasPermissions = permissions.some(permission => {
-        return all_permission === permission || permissionFlag.includes(permission)
-      })
+      const hasPermissions = permissions.some((permission) => {
+        return (
+          all_permission === permission || permissionFlag.includes(permission)
+        );
+      });
       if (!hasPermissions) {
         //console.log(el.parentNode,'el')
         el.parentNode && el.parentNode.removeChild(el);
       }
     } else {
-      throw new Error(`请设置操作权限标签值`)
+      throw new Error(`请设置操作权限标签值`);
     }
-  }
-}
+  },
+};

+ 25 - 0
src/directive/permission/hasPermiEx.js

@@ -0,0 +1,25 @@
+import store from "@/store";
+
+export function hasPermission(value) {
+  if (!value) {
+    return false;
+  }
+  const permissions = store.getters && store.getters.permissions;
+  if (value instanceof Array) {
+    if (value.length == 0) {
+      return false;
+    }
+    const permissionFlag = value;
+
+    const hasPermissions = permissions.some((permission) => {
+      return (
+        all_permission === permission || permissionFlag.includes(permission)
+      );
+    });
+    return hasPermissions;
+  } else if (typeof value === "string") {
+    return permissions.includes(value);
+  } else {
+    return false;
+  }
+}

+ 4 - 4
src/views/check/task/index.vue

@@ -270,7 +270,6 @@
               <el-button
                 type="text"
                 @click="showRegister(r.row)"
-                v-hasPermi="['resumption:taskManager:query']"
                 v-if="showRegisterBtn(r.row)"
                 >登记</el-button
               >
@@ -301,6 +300,7 @@ import OrgTree from "@/components/orgTree";
 import * as api from "@/api/safetycheck/task.js";
 import { getLabel } from "@/views/commonOption.js";
 import OrgTreeSelect from "@/components/orgTreeSelect";
+import {hasPermission} from '@/directive/permission/hasPermiEx.js'
 export default {
   name: "checkTaskList",
   dicts: ["resumption_plan_cycle", "resumption_status", "safety_check_status"],
@@ -399,9 +399,9 @@ export default {
       this.$refs.scanrecorddialog.show(row.id, row.orgId);
     },
     showRegisterBtn(row){   
-      return true;   
-      //缺少检查角色列表,grantUserId
-        // return (row.checkOrgId==this.orgId && this.roleList.map(r=>r.id).find(id=>id==row.roleId)) || row.grantUserId===this.userId;
+       return row.status!=3 
+        && ((row.checkOrgId==this.orgId && this.roleList.map(r=>r.id).find(id=>id==row.roleId) && hasPermission(['core:safetycheck:register','core:safetycheck:grant']))
+        || row.grantUserId===this.userId);
     },
     showRegister(row) {
       let path = "/core/safetycheck/register/" + row.id+"?mode=register";

+ 4 - 29
src/views/safetycheck/rule/index.vue

@@ -53,7 +53,7 @@
               icon="el-icon-search"
               size="mini"
               @click="refresh"
-              v-hasPermi="['resumption:rule:query']"
+              v-hasPermi="['safetycheck:rule:query']"
               >搜索</el-button
             >
             <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
@@ -71,35 +71,10 @@
               icon="el-icon-plus"
               size="mini"
               @click="handleAdd()"
-              v-hasPermi="['resumption:rule:add']"
+              v-hasPermi="['safetycheck:rule:add']"
               >新增</el-button
             >
           </el-col>
-          <!-- <el-col :span="1.5">
-            <el-button
-              type="success"
-              plain
-              icon="el-icon-edit"
-              size="mini"
-              :disabled="single"
-              @click="handleUpdate"
-              v-hasPermi="['system:user:edit']"
-              >修改</el-button
-            >
-          </el-col>
-          <el-col :span="1.5">
-            <el-button
-              type="danger"
-              plain
-              icon="el-icon-delete"
-              size="mini"
-              :disabled="multiple"
-              @click="handleDelete"
-              v-hasPermi="['system:user:remove']"
-              >删除</el-button
-            > 
-          </el-col>-->
-
           <right-toolbar
             :showSearch.sync="showSearch"
             @queryTable="getList"
@@ -153,14 +128,14 @@
                 type="text"
                 icon="el-icon-edit"
                 @click="onEdit(r.row.id)"
-                v-hasPermi="['resumption:rule:edit']"
+                v-hasPermi="['safetycheck:rule:edit']"
                 >修改</el-button
               >
               <el-popconfirm
                 title="确定删除检查内容库定义?"
                 @confirm="onDel(r.row.id)"
               >
-                <el-button type="text" size="small" slot="reference" icon="el-icon-delete" v-hasPermi="['resumption:rule:remove']">删除</el-button>
+                <el-button type="text" size="small" slot="reference" icon="el-icon-delete" v-hasPermi="['safetycheck:rule:remove']">删除</el-button>
               </el-popconfirm>
             </template>
           </el-table-column>

+ 5 - 30
src/views/safetycheck/ruleManager/index.vue

@@ -49,7 +49,7 @@
               icon="el-icon-search"
               size="mini"
               @click="refresh"
-              v-hasPermi="['resumption:ruleManager']"
+              v-hasPermi="['safetycheck:ruleManager']"
               >搜索</el-button
             >
             <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
@@ -64,7 +64,7 @@
               type="primary"
               @click="onAddItem()"
               :disabled="rule ? false : true"
-              v-hasPermi="['resumption:ruleManager:add']"
+              v-hasPermi="['safetycheck:ruleManager:add']"
               v-if="rule && rule.orgId == orgId && rule.ruleStatus==0"
               >新 增</el-button
             >
@@ -79,32 +79,7 @@
               :disabled="rule ? false : true"
               >{{ expandAll ? "收起所有行" : "展开所有行" }}</el-button
             >
-          </el-col>
-          <!-- <el-col :span="1.5">
-            <el-button
-              type="success"
-              plain
-              icon="el-icon-edit"
-              size="mini"
-              :disabled="single"
-              @click="handleUpdate"
-              v-hasPermi="['system:user:edit']"
-              >修改</el-button
-            >
-          </el-col>
-          <el-col :span="1.5">
-            <el-button
-              type="danger"
-              plain
-              icon="el-icon-delete"
-              size="mini"
-              :disabled="multiple"
-              @click="handleDelete"
-              v-hasPermi="['system:user:remove']"
-              >删除</el-button
-            > 
-          </el-col>-->
-
+          </el-col>         
           <right-toolbar
             :showSearch.sync="showSearch"
             @queryTable="getList"
@@ -169,7 +144,7 @@
                 size="small"
                 icon="el-icon-edit"
                 @click="onEditItem(scope.row.id)"
-                v-hasPermi="['resumption:ruleManager:edit']"                
+                v-hasPermi="['safetycheck:ruleManager:edit']"                
                 >编辑</el-button
               > 
                     
@@ -177,7 +152,7 @@
                 title="将删除检查项及其下所有检查内容,确定删除?"
                 @confirm="deldata(scope.row.id)"
               >
-                <el-button type="text" size="small" slot="reference" icon="el-icon-delete" v-hasPermi="['resumption:ruleManager:remove']">删除</el-button>
+                <el-button type="text" size="small" slot="reference" icon="el-icon-delete" v-hasPermi="['safetycheck:ruleManager:remove']">删除</el-button>
               </el-popconfirm>
             </template>
           </el-table-column>

+ 8 - 3
src/views/safetycheck/taskManager/components/register.vue

@@ -154,11 +154,11 @@
 
     <div class="dialog-footer">
       <el-button @click="dialogVisible = false">取消</el-button>
-      <el-button @click="onGrant" v-if="isRegister && info.status != 3"
+      <el-button @click="onGrant" v-if="isRegister && info.status != 3" v-hasPermi="['core:safetycheck:grant']"
         >授权</el-button
       >
-      <el-button @click="onSave" v-if="isRegister">保存</el-button>
-      <el-button type="primary" @click="onSubmit()" v-if="isRegister"
+      <el-button @click="onSave" v-if="showSaveBtn">保存</el-button>
+      <el-button type="primary" @click="onSubmit()" v-if="showSaveBtn"
         >提交</el-button
       >
     </div>
@@ -182,6 +182,7 @@ import SelectPoint from "../../ruleManager/dialog.select.point.vue";
 import imgUpload from "@/components/ImageUpload/index.vue";
 import UserSelector from "@/components/userSelector/index.vue";
 import { getLabel } from "@/views/commonOption.js";
+import {hasPermission} from '@/directive/permission/hasPermiEx.js'
 export default {
   name: "safetyCheckRegister",
   data() {
@@ -203,6 +204,10 @@ export default {
       let r = this.mode === "register";
       return r;
     },
+
+    showSaveBtn(){
+      return this.isRegister() && this.info.status!=3 && (hasPermission(['core:safetycheck:register']) || this.info.grantUserId==this.userId)
+    }
   },
   mounted() {
     let id = this.$route.params.taskId;