数通互联化工云平台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

187 lines
6.3 KiB

import { Directive, DirectiveBinding } from 'vue';
import { useUserStore } from "@/store/modules/user";
/**
* 按钮权限
*/
export const hasButton: Directive = {
mounted(el: HTMLElement, binding: DirectiveBinding) {
const userStore = useUserStore();
const { value } = binding;
// console.log("按钮权限",el,"-->",binding,"-->",value,"-->",userStore.myPower.menuButIdAry,"-->",userStore.myPower);
if (value) {
const requiredPerms = value; // DOM绑定需要的按钮权限标识
const hasPerm = userStore.myPower.menuButIdAry.some((perm: any) => {
return requiredPerms.includes(perm);
});
if (!hasPerm) {
el.parentNode?.removeChild(el);
}
}
}
}
/**
* app权限
*/
export const hasApp: Directive = {
mounted(el: HTMLElement, binding: DirectiveBinding) {
const userStore = useUserStore();
const { value } = binding;
// console.log("app权限",el,"-->",binding,"-->",value,"-->",userStore.myPower.appKeyAry,"-->",userStore.myPower);
// console.log("我的App--->",userStore.myPower)
if (value) {
const requiredPerms = value; // DOM绑定需要的app权限标识
const hasPerm = userStore.myPower.appKeyAry.some((perm: any) => {
return requiredPerms.includes(perm);
});
if (!hasPerm) {
el.parentNode?.removeChild(el);
}
}
}
}
export const hasAppList = (signCode:string) => {
const userStore = useUserStore();
return userStore.myPower.appKeyAry.some((perm: any) => {
return perm.includes(signCode);
});
}
/**
@ 作者: 秦东
@ 时间: 2025-12-11 16:30:08
@ 功能: 自定义App分组指令授权
*/
export const hasAppGroup: Directive = {
mounted(el: HTMLElement, binding: DirectiveBinding) {
const userStore = useUserStore();
const { value } = binding;
// console.log("app权限",el,"-->",binding,"-->",value,"-->",userStore.myPower.appGroupPower,"-->",userStore.myPower);
// console.log("我的App--->",userStore.myPower)
if (value) {
const requiredPerms = value; // DOM绑定需要的app权限标识
const hasPerm = userStore.myPower.appGroupPower.some((perm: any) => {
return requiredPerms.includes(perm);
});
if (!hasPerm) {
el.parentNode?.removeChild(el);
}
}
}
}
/**
@ 作者: 秦东
@ 时间: 2025-12-11 16:39:01
@ 功能: 判断应用级权限
*/
export const appHasPower = (signCode:string,buttonKey:string) => {
const userStore = useUserStore();
console.log("判断应用级权限--appSystemPower->",userStore.myPower.appSystemPower)
return userStore.myPower.appSystemPower.some((perm: any) => {
console.log(signCode,"判断应用级权限--->",buttonKey)
if(perm.AppId == signCode){
console.log("判断应用级权限-1111-->",perm.AppId,buttonKey)
console.log("判断应用级权限-222-->",perm.butPower && Array.isArray(perm.butPower))
if(perm.butPower && Array.isArray(perm.butPower)){
// console.log("判断应用级权限--->",perm.AppId,buttonKey)
return perm.butPower.includes(buttonKey)
}
}
});
}
/**
@ 作者: 秦东
@ 时间: 2025-12-12 09:33:21
@ 功能: 判断表单级权限
*/
export const formHasPower = (signCode:string,tormCode:string,buttonKey:string,classType:number) => {
const userStore = useUserStore();
console.log("判断表单级权限-1111-->",signCode,userStore.myPower.appSystemPower)
if(userStore.myPower.appSystemPower && Array.isArray(userStore.myPower.appSystemPower)){
return userStore.myPower.appSystemPower.some((perm: any) => {
if(perm.AppId == signCode){
console.log("判断表单级权限-1112-->",signCode)
console.log("判断表单级权限-1113-->",tormCode)
console.log("判断表单级权限-1114-->",perm.formPower)
console.log("判断表单级权限-1115-->",buttonKey)
if(perm.formPower && Array.isArray(perm.formPower)){
return perm.formPower.some((formPerm: any) => {
switch(classType){
case 1:
return formPerm.AppId == tormCode && formPerm.tablePower.includes(buttonKey);
break;
case 2:
return formPerm.AppId == tormCode && formPerm.PagePower.includes(buttonKey);
break;
default:
return formPerm.AppId == tormCode && formPerm.listPower.includes(buttonKey);
break;
}
});
}
}
});
}
}
/**
@ 作者: 秦东
@ 时间: 2025-12-12 13:42:40
@ 功能: 判断自定义App菜单
*/
export const hasCustomAppMenu = (appKey:string,menuKey:string) => {
// console.log("判断自定义App菜单--->",appKey,menuKey)
const userStore = useUserStore();
if(userStore.myPower.appSystemPower && Array.isArray(userStore.myPower.appSystemPower)){
return userStore.myPower.appSystemPower.some((perm: any) => {
if(perm.AppId == appKey){
if(perm.formTrue && Array.isArray(perm.formTrue)){
return perm.formTrue.includes(menuKey);
}
}
});
}
return false;
}
//自定义App分组
export const hasGroupApp: Directive = {
mounted(el: HTMLElement, binding: DirectiveBinding) {
const userStore = useUserStore();
const { value } = binding;
// console.log("app权限appGroupMenu",el,"-->",binding,"-->",value,"-->",userStore.myPower.appGroupMenu,"-->",userStore.myPower);
// console.log("我的App--->",userStore.myPower)
if (value) {
const requiredPerms = value; // DOM绑定需要的app权限标识
const hasPerm = userStore.myPower.appGroupMenu.some((perm: any) => {
// console.log("我的App-判断值-->",requiredPerms.includes(perm))
return requiredPerms.includes(perm);
});
if (!hasPerm) {
el.parentNode?.removeChild(el);
}
}
}
}
export const hasCustomAppGroup = (appKey:string) => {
const userStore = useUserStore();
if(userStore.myPower.appGroupMenu && Array.isArray(userStore.myPower.appGroupMenu)){
return userStore.myPower.appGroupMenu.some((perm: any) => {
// console.log("--->",perm,appKey)
if (perm == appKey){
return true
}
});
}
return false;
}