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') })