/**
 * @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) {}
};
