/** 重置样式 */ import '@/styles/reset.css' import 'uno.css' import '@/styles/global.scss' import 'virtual:svg-icons-register' import { createApp } from 'vue' import { setupRouter } from '@/router' import { setupStore } from '@/store' import App from './App.vue' import { setupNaiveDiscreteApi } from './utils' import { initApiEndpoint } from '@/utils/api-config' async function setupApp() { const app = createApp(App) // 初始化接口配置 initApiEndpoint() setupStore(app) setupNaiveDiscreteApi() await setupRouter(app) app.directive('perms', { mounted: (el, binding) => { const { value } = binding const permissions = JSON.parse(localStorage.getItem('roles')) const all_permission = '*' if (Array.isArray(value)) { if (value.length > 0) { const hasPermission = permissions.some((key) => { return all_permission === key || value.includes(key) }) if (!hasPermission) { el.parentNode && el.parentNode.removeChild(el) } } } else { throw new Error('like v-perms="[\'auth/menu/edit\']"') } }, }) app.mount('#app') } setupApp()