123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- 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;
|