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) { 
 | 
    if(item.type != '2'){ 
 | 
      permissions.push(item.action); 
 | 
    } 
 | 
  } 
 | 
  if (!permissions.includes(binding.value)) { 
 | 
    el.parentNode.removeChild(el); 
 | 
  } 
 | 
} 
 | 
  
 | 
export default hasPermission; 
 |