You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

70 lines
2.0 KiB

import Vue from 'vue'
import router from './router'
import store from './store'
import App from './App.vue'
import ElementUI from 'element-ui';
import request from "./utils/request";
import 'element-ui/lib/theme-chalk/index.css';
import './style/theme/index.css'
import './style/theme/common.scss'
import 'core-js/stable';
import 'regenerator-runtime/runtime';
import '@/assets/css/fonts.css';
import LoadingService from './services/loading'
import { directive as clickaway } from 'vue-clickaway';
import GuipMessage from '@/components/GuipMessage/index';
import HeaderIcon from './utils/headerIcon'
// 复制到粘贴板
import clipboard from '@/utils/dirClipBoard';
import { modernCopyToClipboard } from '@/utils/clipboard';
//登陆
import { autoLoginByToken } from '@/utils/login'
function filterByPermission(data, targetPermission) {
return data.filter(item => {
// 检查主项权限
const hasMainPermission = item.permission?.includes(targetPermission);
// 检查子项权限(如果存在list)
const hasChildPermission = item.list?.some(
child => child.permission?.includes(targetPermission)
);
return hasMainPermission || hasChildPermission;
}).map(item => {
// 深拷贝避免污染原数据
const newItem = JSON.parse(JSON.stringify(item));
// 过滤子项
if (newItem.list) {
newItem.list = newItem.list.filter(
child => child.permission?.includes(targetPermission)
);
}
return newItem;
});
}
// 复制
Vue.prototype.$copy = modernCopyToClipboard;
Vue.prototype.$filterByPermission = filterByPermission;
Vue.prototype.$loadingFn = LoadingService;
Vue.config.productionTip = false;
// 请求
Vue.prototype.$http = request;
Vue.prototype.$token = ''
Vue.use(ElementUI);
Vue.use(GuipMessage)
Vue.use(clipboard);
Vue.directive('clickaway', clickaway);
Vue.mixin(HeaderIcon)
// ✅ 自动登录后再启动应用
autoLoginByToken().finally(() => {
new Vue({
router,
store,
render: h => h(App)
}).$mount('#app')
})