import Vue from 'vue' import App from './App.vue' import router from './router' import pinia from '@/store' import './filter' import Antd from 'ant-design-vue' import { registerMicroApps, start, initGlobalState, MicroAppStateActions } from 'qiankun' import { apps, excludeAssetFilter, state } from '../micro/config' import { useUserStore } from '@/store/user' import { useMenuStore } from '@/store/menu' import config from '@/config' import { api } from '@/api' import { GlobalActions } from '@/util/enum' import { setToken } from '@/util/auth' import 'ant-design-vue/dist/antd.less' import './style' Vue.config.productionTip = false Vue.use(Antd) Vue.prototype.$config = config Vue.prototype.$http = api registerMicroApps(apps) //启动qiankun start({ excludeAssetFilter, }) const log = (...info) => { // eslint-disable-next-line no-console console.log('%c[main-micro]', 'color: #fff;background-color:#108ee9; padding: 2px;', ...info) } const userStore = useUserStore(pinia) const menuStore = useMenuStore(pinia) // 初始化 state const actions: MicroAppStateActions = initGlobalState(state) Vue.prototype.$setGlobalState = actions.setGlobalState actions.onGlobalStateChange((state) => { log('onGlobalStateChange:', state) switch (state.action) { case GlobalActions.SignIn: log('SignIn') setToken(state.token) userStore.setInfo(state.userInfo) userStore.setToken(state.token) userStore.logged(state.token) break case GlobalActions.SignOut: log('SignOut') userStore.setToken('') userStore.logout() menuStore.clear() window.history.pushState(null, '', '/login') break case GlobalActions.InitMenu: menuStore.init({ menus: state.menus, buttons: state.buttons, }) } }) new Vue({ router, render: (h) => h(App), pinia, }).$mount('#app')