初始化
This commit is contained in:
@@ -1,31 +1,31 @@
|
|||||||
import store from '@/store'
|
import store from '@/store';
|
||||||
|
|
||||||
function checkPermission(el, binding) {
|
function checkPermission(el, binding) {
|
||||||
const { value } = binding
|
const { value } = binding;
|
||||||
const roles = store.getters && store.getters.roles
|
const all_permission = '*:*:*';
|
||||||
|
if (value == all_permission) return;
|
||||||
|
const permissions = store.getters && store.getters.permissions;
|
||||||
|
|
||||||
if (value && value instanceof Array) {
|
if (value && value instanceof Array && value.length > 0) {
|
||||||
if (value.length > 0) {
|
const permissionFlag = value;
|
||||||
const permissionRoles = value
|
|
||||||
|
|
||||||
const hasPermission = roles.some(role => {
|
const hasPermissions = permissions.some(permission => {
|
||||||
return permissionRoles.includes(role)
|
return all_permission === permission || permissionFlag.includes(permission);
|
||||||
})
|
});
|
||||||
|
|
||||||
if (!hasPermission) {
|
if (!hasPermissions) {
|
||||||
el.parentNode && el.parentNode.removeChild(el)
|
el.parentNode && el.parentNode.removeChild(el);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
throw new Error(`need roles! Like v-permission="['admin','editor']"`)
|
throw new Error(`请设置操作权限标签值`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
inserted(el, binding) {
|
inserted(el, binding) {
|
||||||
checkPermission(el, binding)
|
checkPermission(el, binding);
|
||||||
},
|
},
|
||||||
update(el, binding) {
|
update(el, binding) {
|
||||||
checkPermission(el, binding)
|
checkPermission(el, binding);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|||||||
+23
-23
@@ -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 Element from 'element-ui';
|
||||||
import './styles/element-variables.scss'
|
import './styles/element-variables.scss';
|
||||||
import enLang from 'element-ui/lib/locale/lang/en'// 如果使用中文语言包请默认支持,无需额外引入,请删除该依赖
|
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 App from './App';
|
||||||
import store from './store'
|
import store from './store';
|
||||||
import router from './router'
|
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 * as filters from './filters'; // global filters
|
||||||
import './permission' // permission control
|
|
||||||
import './utils/error-log' // error log
|
|
||||||
|
|
||||||
import * as filters from './filters' // global filters
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If you don't want to use mock-server
|
* 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 ! ! !
|
* please remove it before going online ! ! !
|
||||||
*/
|
*/
|
||||||
if (process.env.NODE_ENV === 'production') {
|
if (process.env.NODE_ENV === 'production') {
|
||||||
const { mockXHR } = require('../mock')
|
const { mockXHR } = require('../mock');
|
||||||
mockXHR()
|
mockXHR();
|
||||||
}
|
}
|
||||||
|
|
||||||
Vue.use(Element, {
|
Vue.use(Element, {
|
||||||
size: Cookies.get('size') || 'medium', // set element-ui default size
|
size: Cookies.get('size') || 'medium', // set element-ui default size
|
||||||
locale: enLang // 如果使用中文,无需设置,请删除
|
locale: enLang // 如果使用中文,无需设置,请删除
|
||||||
})
|
});
|
||||||
|
|
||||||
// register global utility filters
|
// register global utility filters
|
||||||
Object.keys(filters).forEach(key => {
|
Object.keys(filters).forEach(key => {
|
||||||
Vue.filter(key, filters[key])
|
Vue.filter(key, filters[key]);
|
||||||
})
|
});
|
||||||
|
Vue.use(permission);
|
||||||
Vue.config.productionTip = false
|
Vue.config.productionTip = false;
|
||||||
|
|
||||||
new Vue({
|
new Vue({
|
||||||
el: '#app',
|
el: '#app',
|
||||||
router,
|
router,
|
||||||
store,
|
store,
|
||||||
render: h => h(App)
|
render: h => h(App)
|
||||||
})
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user