From b160e37bc22d1df45a60566202e8021d9bbd6d51 Mon Sep 17 00:00:00 2001 From: zgj_jj <010816ZGJjj> Date: Fri, 18 Nov 2022 18:10:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/directive/permission/permission.js | 32 +++++++++--------- src/main.js | 46 +++++++++++++------------- 2 files changed, 39 insertions(+), 39 deletions(-) diff --git a/src/directive/permission/permission.js b/src/directive/permission/permission.js index 49d1f88..7be04c8 100644 --- a/src/directive/permission/permission.js +++ b/src/directive/permission/permission.js @@ -1,31 +1,31 @@ -import store from '@/store' +import store from '@/store'; function checkPermission(el, binding) { - const { value } = binding - const roles = store.getters && store.getters.roles + const { value } = binding; + const all_permission = '*:*:*'; + if (value == all_permission) return; + const permissions = store.getters && store.getters.permissions; - if (value && value instanceof Array) { - if (value.length > 0) { - const permissionRoles = value + if (value && value instanceof Array && value.length > 0) { + const permissionFlag = value; - const hasPermission = roles.some(role => { - return permissionRoles.includes(role) - }) + const hasPermissions = permissions.some(permission => { + return all_permission === permission || permissionFlag.includes(permission); + }); - if (!hasPermission) { - el.parentNode && el.parentNode.removeChild(el) - } + if (!hasPermissions) { + el.parentNode && el.parentNode.removeChild(el); } } else { - throw new Error(`need roles! Like v-permission="['admin','editor']"`) + throw new Error(`请设置操作权限标签值`); } } export default { inserted(el, binding) { - checkPermission(el, binding) + checkPermission(el, binding); }, update(el, binding) { - checkPermission(el, binding) + checkPermission(el, binding); } -} +}; diff --git a/src/main.js b/src/main.js index b5fa135..7cc3c90 100644 --- a/src/main.js +++ b/src/main.js @@ -1,24 +1,24 @@ -import Vue from 'vue' +import Vue from 'vue'; -import Cookies from 'js-cookie' +import Cookies from 'js-cookie'; -import 'normalize.css/normalize.css' // a modern alternative to CSS resets +import 'normalize.css/normalize.css'; // a modern alternative to CSS resets -import Element from 'element-ui' -import './styles/element-variables.scss' -import enLang from 'element-ui/lib/locale/lang/en'// 如果使用中文语言包请默认支持,无需额外引入,请删除该依赖 +import Element from 'element-ui'; +import './styles/element-variables.scss'; +import enLang from 'element-ui/lib/locale/lang/en';// 如果使用中文语言包请默认支持,无需额外引入,请删除该依赖 -import '@/styles/index.scss' // global css +import '@/styles/index.scss'; // global css -import App from './App' -import store from './store' -import router from './router' +import App from './App'; +import store from './store'; +import router from './router'; +import permission from '@/directive/permission/index.js'; +import './icons'; // icon +import './permission'; // permission control +import './utils/error-log'; // error log -import './icons' // icon -import './permission' // permission control -import './utils/error-log' // error log - -import * as filters from './filters' // global filters +import * as filters from './filters'; // global filters /** * If you don't want to use mock-server @@ -29,25 +29,25 @@ import * as filters from './filters' // global filters * please remove it before going online ! ! ! */ if (process.env.NODE_ENV === 'production') { - const { mockXHR } = require('../mock') - mockXHR() + const { mockXHR } = require('../mock'); + mockXHR(); } Vue.use(Element, { size: Cookies.get('size') || 'medium', // set element-ui default size locale: enLang // 如果使用中文,无需设置,请删除 -}) +}); // register global utility filters Object.keys(filters).forEach(key => { - Vue.filter(key, filters[key]) -}) - -Vue.config.productionTip = false + Vue.filter(key, filters[key]); +}); +Vue.use(permission); +Vue.config.productionTip = false; new Vue({ el: '#app', router, store, render: h => h(App) -}) +});