text: 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;
  