import { UserStore } from '@/store/user' import { get, isArray } from 'lodash-es' import router from '@/router' const InitDirective = (app) => { app.directive('method', { mounted(el, binding) { const { user } = UserStore() const { value: code } = binding const rUser = toRaw(user) // 超级管理员不进行检查 if (get(rUser, 'role') === 'Admin' && get(rUser, 'is_super') === '0') return const roleCode = get(rUser, 'role_code') // 需要判断roleCode中是否有这个权限.但是权限又需要路由拼接起来,最少也得有上层级组合 const cr = router.currentRoute.value // 拼接当前路由和层级的name const rArr = cr.matched.filter((f) => f.name !== 'Layout').map((i) => i.name) rArr.push(code) const thisMethodCode = `${rArr.join('.')}` if (!isArray(roleCode)) { el.parentNode.removeChild(el) } if (!roleCode.includes(thisMethodCode)) { el.parentNode.removeChild(el) } } }) } export { InitDirective }