cnetong-core-frontend
Version:
- CURD组件的编辑对话框增加按钮slot
52 lines (49 loc) • 1.77 kB
JavaScript
/**
* @Author: Sun Rising
* @Date: 2019-02-19 10:48:26
* @Last Modified by: Sun Rising
* @Last Modified time: 2019-03-01 13:37:19
* @Description: 权限管理-按钮权限指令
* 使用说明:
* 1.功能:如果当前登录的用户所拥有的角色未选择按钮级的权限,那么这个按钮将被隐藏。
* 2.添加规则,在功能权限菜单中进行添加 “菜单类型”选择按钮,“功能地址”填写你所控制的按钮在当前菜单组中的哪个页面上,“功能编码”填写按钮的key
* 3.使用规则,在你想要控制的按钮上添加“v-buttonAuth”指令,传入字符串key,例如v-buttonAuth="'user_add'"
*/
/**
* 查找权限范围内是否匹配到到当前 的按钮
* @param {*} data 权限范围
* @param {*} group 分组
* @param {*} key 按钮的key
*/
function v_auth(data, group, key) {
let is = false;
if (Array.isArray(data)) {
data.forEach((value, index) => {
if (value.funcUrl === "/" + group) {
value.children.forEach((value2, index2) => {
value2.children.forEach((value3, index3) => {
if (value3.permCode === key) {
is = true;
}
});
});
}
});
}
return is;
}
export default {
bind(el, binding, vnode, oldnode) {},
inserted(formEl, binding, vnode, oldnode) {
let sysMenus = vnode.context.$store.state.base.sysMenus;
let tabPagesPath = vnode.context.$store.getters.tabPagesPath;
let key = binding.value;
//获取最后一级目录
let paths = tabPagesPath.split("/");
let group = paths[1];
if (!v_auth(sysMenus, group, key)) {
formEl.remove();
}
},
update(el, binding, vnode, oldnode) {}
};