Răsfoiți Sursa

fix:添加vue自定义指令

ly 10 luni în urmă
părinte
comite
da99eb9191

+ 3 - 1
src/directive/index.js

@@ -1,9 +1,11 @@
 import hasRole from './permission/hasRole'
-import hasPermi from './permission/hasPermi'
+import {hasPermi,hasNoPermi} from './permission/hasPermi'
+//import {hasNoPermi} from './permission/Permi'
 import copyText from './common/copyText'
 
 export default function directive(app){
   app.directive('hasRole', hasRole)
   app.directive('hasPermi', hasPermi)
+  app.directive('hasNoPermi', hasNoPermi)
   app.directive('copyText', copyText)
 }

+ 23 - 1
src/directive/permission/hasPermi.js

@@ -5,7 +5,7 @@
 
 import useUserStore from '@/store/modules/user'
 
-export default {
+export const hasPermi =  {
   mounted(el, binding, vnode) {
     const { value } = binding
     const all_permission = "*:*:*";
@@ -27,3 +27,25 @@ export default {
     }
   }
 }
+export const hasNoPermi =  {
+  mounted(el, binding, vnode) {
+    const { value } = binding
+    const all_permission = "*:*:*";
+    const permissions = useUserStore().permissions
+    // debugger
+
+    if (value && value instanceof Array && value.length > 0) {
+      const permissionFlag = value
+
+      const hasPermissions = permissions.some(permission => {
+        return all_permission === permission || permissionFlag.includes(permission)
+      })
+      // console.log(hasPermissions)
+      if (hasPermissions) {
+        el.parentNode && el.parentNode.removeChild(el)
+      }
+    } else {
+      throw new Error(`请设置操作权限标签值`)
+    }
+  }
+}

+ 4 - 0
src/plugins/auth.js

@@ -29,6 +29,10 @@ export default {
   hasPermi(permission) {
     return authPermission(permission);
   },
+  // 验证用户是否没有某权限
+  hasNoPermi(permission) {
+    return !authPermission(permission);
+  },
   // 验证用户是否含有指定权限,只需包含其中一个
   hasPermiOr(permissions) {
     return permissions.some(item => {

+ 1 - 1
src/views/business/production/onceWork/index.vue

@@ -218,7 +218,7 @@
           <div v-else>
             <el-button link type="primary" size="small" @click="viewResult(scope.row,true)"
             >{{resultLable(scope.row)}}</el-button>
-            <el-button v-if="(scope.row.record !== null && scope.row.record.status!==3) && scope.row.record.handlerId  ===  useUserStore().user.userId"  link type="primary" icon="Edit" size="small" style="margin: 0"
+            <el-button v-hasNoPermi="['business:production:onceWork:perEdit']" v-if="(scope.row.record !== null && scope.row.record.status!==3) && scope.row.record.handlerId  ===  useUserStore().user.userId"  link type="primary" icon="Edit" size="small" style="margin: 0"
                        @click="viewResult(scope.row,false)" />
             <el-button v-hasPermi="['business:production:onceWork:perEdit']"  link type="primary" icon="Edit" size="small" style="margin: 0"
                        @click="viewResult(scope.row,false)" />