import {USER_AUTH, SYS_BUTTON_AUTH} from "@/store/mutation-types" const hasPermission = { install(Vue, options) { //console.log(options); Vue.directive('has', { inserted: (el, binding, vnode) => { //console.log("页面权限控制----"); //console.time() //节点权限处理,如果命中则不进行全局权限处理 if (!filterNodePermission(el, binding, vnode)) { filterGlobalPermission(el, binding, vnode); } //console.timeEnd() //计时结束并输出时长 } }); } }; /** * 流程节点权限控制 */ export function filterNodePermission(el, binding, vnode) { let permissionList = []; try { let obj = vnode.context.$props.formData; if (obj) { let bpmList = obj.permissionList; for (let 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--"); let permissions = []; for (let 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 (let item2 of permissionList) { if (binding.value === item2.action) { return true; } } } return false; } /** * 全局权限控制 */ export function filterGlobalPermission(el, binding, vnode) { //console.log("全局页面权限--Global--"); let permissionList = []; let allPermissionList = []; //let authList = Vue.ls.get(USER_AUTH); let authList = JSON.parse(sessionStorage.getItem(USER_AUTH) || "[]"); for (let auth of authList) { if (auth.type != '2') { permissionList.push(auth); } } //console.log("页面权限--Global--",sessionStorage.getItem(SYS_BUTTON_AUTH)); let allAuthList = JSON.parse(sessionStorage.getItem(SYS_BUTTON_AUTH) || "[]"); for (let gauth of allAuthList) { if (gauth.type != '2') { allPermissionList.push(gauth); } } //设置全局配置是否有命中 let invalidFlag = false;//无效命中 if (allPermissionList != null && allPermissionList != "" && allPermissionList != undefined && allPermissionList.length > 0) { for (let 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; } let permissions = []; for (let 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(",")) { let 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;