2025-12-20 14:20:26 +08:00

100 lines
2.6 KiB
JavaScript

/*
* @Author: your name
* @Date: 2020-05-26 10:06:34
* @LastEditTime: 2020-05-27 17:08:39
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /x-product-workspace/packages/x-project-app/src/main.js
*/
import './assets/scss/index.scss'
import './vendor/extension-plugin'
import Vue from 'vue'
import App from './App.vue'
// import './registerServiceWorker'
import router from './router'
import store from './store'
import i18n from './locale'
import '@babel/polyfill'
import './vendor/element-ui'
import './vendor/x-lib-ui'
import '@/router/auth.guard'
import './icons' // icon
import './plugins'
import './vendor/x-dcloud-layout-engine/x-dcloud-layout-engine'
import './vendor/x-dcloud-list-engine/x-dcloud-list-engine'
Vue.prototype.$envUrl = function(url) {
return `${process.env.VUE_APP_PUBLIC_PATH}${url}`
}
Vue.config.productionTip = false
Vue.GLOBAL_ENV = {}
/**
* 开发用的
*/
const requireContext = require.context('./custom/', true, /apaas.json$/)
console.log(requireContext.keys())
store.state.menuModule.customListViewMap = {}
requireContext.keys().map(key => {
const rc = requireContext(key)
if (rc && rc.entry) {
// 装载JS
const entryJs = key.replace('apaas.json', rc.entry.replace('./', '')).replace('./', '')
const entryModule = require('./custom/' + entryJs)
// loadScript
Vue.use(entryModule.default)
// 动态添加路由
const r = router
if (rc.router) {
Object.keys(rc.router).forEach(key => {
const routerConfig = rc.router[key]
store.commit('menuModule/ADD_CUSTOM_MENU_ROUTER', routerConfig)
r.addRoute('admin', {
name: routerConfig.name,
path: routerConfig.path,
component: Vue.component(key)
})
})
}
if (rc.list) {
Object.keys(rc.list).forEach((key) => {
const customListViewMap = store.state.menuModule.customListViewMap || {}
const index = Object.keys(customListViewMap).length
const routerConfig = {
...rc.list[key],
name: 'app-list-view' + index,
meta: {
title: key
},
path: 'app-list-view'
}
store.commit('menuModule/ADD_CUSTOM_LIST_VIEW_ROUTER', routerConfig)
})
}
// r.addRoute('admin', {
// name: router.name,
// path: router.path,
// component: Vue.component()
// })
}
return rc
})
new Vue({
i18n,
router,
store,
render: (h) => h(App)
}).$mount('#app')
// var requireAll = function requireAll(requireContext) {
// return requireContext.keys().map(requireContext);
// };