import { USER_AUTH, SYS_BUTTON_AUTH } from '@/store/mutation-types' const hasPermission = { install (Vue) { Vue.directive('has', { inserted: (el, binding, vnode) => { // console.time() // 节点权限处理,如果命中则不进行全局权限处理 if (!filterNodePermission(el, binding, vnode)) { filterGlobalPermission(el, binding, vnode) } } }) } } /** * 流程节点权限控制 */ export function filterNodePermission (el, binding, vnode) { const permissionList = [] try { const obj = vnode.context.$props.formData if (obj) { const bpmList = obj.permissionList for (const bpm of bpmList) { if (bpm.type + '' !== '2') { permissionList.push(bpm) } } } else { return false } } catch (e) { // console.log("页面权限异常----", e); } if (permissionList === null || permissionList === '' || permissionList === undefined || permissionList.length <= 0) { // el.parentNode.removeChild(el) return false } console.log('流程节点页面权限--NODE--') const permissions = [] for (const item of permissionList) { if (item.type + '' !== '2') { permissions.push(item.action) } } // console.log("页面权限----"+permissions); // console.log("页面权限----"+binding.value); if (!permissions.includes(binding.value)) { // el.parentNode.removeChild(el) return false } else { for (const item2 of permissionList) { if (binding.value === item2.action) { return true } } } return false } /** * 全局权限控制 */ export function filterGlobalPermission (el, binding) { const permissionList = [] const allPermissionList = [] // let authList = Vue.ls.get(USER_AUTH); const authList = JSON.parse(sessionStorage.getItem(USER_AUTH) || '[]') for (const auth of authList) { if (auth.type + '' !== '2') { permissionList.push(auth) } } // console.log("页面权限--Global--",sessionStorage.getItem(SYS_BUTTON_AUTH)); const allAuthList = JSON.parse(sessionStorage.getItem(SYS_BUTTON_AUTH) || '[]') for (const gauth of allAuthList) { if (gauth.type + '' !== '2') { allPermissionList.push(gauth) } } // 设置全局配置是否有命中 let invalidFlag = false// 无效命中 if (allPermissionList != null && allPermissionList != '' && allPermissionList !== undefined && allPermissionList.length > 0) { for (const itemG of allPermissionList) { if (binding.value === itemG.action) { if (itemG.status + '' !== '0') { invalidFlag = true break } } } } if (invalidFlag) { return } if (permissionList === null || permissionList === '' || permissionList === undefined || permissionList.length <= 0) { el.parentNode.removeChild(el) return } const permissions = [] for (const item of permissionList) { // 权限策略1显示2禁用 if (item.type + '' !== '2') { // update--begin--autor:wangshuai-----date:20200729------for:按钮权限,授权标识的提示信息是多个用逗号分隔逻辑处理 gitee#I1OUGU------- if (item.action) { if (item.action.includes(',')) { const split = item.action.split(',') for (let i = 0; i < split.length; i++) { if (!split[i] || split[i].length === 0) { continue } permissions.push(split[i]) } } else { permissions.push(item.action) } } // update--end--autor:wangshuai-----date:20200729------for:按钮权限,授权标识的提示信息是多个用逗号分隔逻辑处理 gitee#I1OUGU------ } } if (!permissions.includes(binding.value)) { el.parentNode.removeChild(el) } } export default hasPermission