50 lines
1.2 KiB
JavaScript
50 lines
1.2 KiB
JavaScript
/** 重置样式 */
|
|
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()
|