create-iking-admin
Version:
金合技术中台脚手架
47 lines (43 loc) • 1.44 kB
text/typescript
/*
* @Author : wfl
* @LastEditors: wfl
* @description :
* @updateInfo :
* @Date : 2022-11-10 10:36:53
* @LastEditTime: 2023-04-14 10:09:19
*/
import { ikStore } from 'iking-utils'
let btns: Array<string> | null = null
let btnList: Array<{
[x: string]: string
permissionCode: string
}> = []
/**
* @description: 按钮权限 用法: v-role="'按钮permissionCode值'"
* @description: 如果要使用系统返回的按钮名称,则在code值前添加$符,如:v-role="'$ADD-USER'"
* @return {*}
*/
const BtnRole = {
name: 'role',
mounted: (el: HTMLElement, binding: { value: string; }) => {
const code = binding.value
if (!code)
return true
if (!el)
return false
const _code = binding.value.startsWith('$') ? binding.value.substring(1) : binding.value
btnList = ikStore.session.getItem(MenuStorageEnum.BUTTON)
btns = btnList?.map((b: any) => b?.permissionCode)
const menuList = ikStore.session.getItem(MenuStorageEnum.MENU).map((v: any) => v.permissionCode)
// code存在且不在权限时
if (!btns?.includes(_code) && !menuList?.includes(_code)) {
el?.remove()
}
else {
const btn = btnList?.find(b => b.permissionCode === _code)
if (typeof code === 'string' && code.startsWith('$') && btn)
el.innerHTML = `<span>${btn?.name}</span>`
}
}
}
export default BtnRole