You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
2.5 KiB
104 lines
2.5 KiB
/* |
|
* @Des: |
|
* @Author: jin_yc |
|
* @Date: 2020-01-06 15:46:12 |
|
* @LastEditor: jin_yc |
|
* @LastEditTime: 2022-09-20 15:33:35 |
|
*/ |
|
import '@/microapp/public-path' |
|
import Vue from 'vue' |
|
import { LOADING_INIT_DATA, LOADING_USER_DATA } from '@/store/Action/actionTypes' |
|
import { CLEAN_WEBSOCKET_POOL } from '@/store/Mutation/mutationTypes' |
|
import '@/assets/css/app.scss' //app公共样式 |
|
import { tsDvalue, saas } from './config' |
|
import Api from '@/config/api' |
|
import { initAsSubApp, initAsIndependentApp } from '@/microapp/initApp' |
|
|
|
Vue.config.productionTip = false |
|
|
|
//在install前注入环境变量 |
|
Object.assign(Vue.prototype, Api) |
|
|
|
|
|
//确保独立运行,并设置独立运行时的参数 |
|
if (!window.__POWERED_BY_QIANKUN__) { |
|
initAsIndependentApp() |
|
render() |
|
} |
|
|
|
var instance = null |
|
|
|
/** |
|
* @description: 初始化入口 |
|
* |
|
*/ |
|
async function render(props = {}) { |
|
const { container } = props |
|
|
|
//toDo 为了保证环境变量注入完成,再加载路由 |
|
const { setTs } = require('@/utils/request/ts') |
|
const store = require('@/store').default |
|
const install = require('@/utils/hooks/loadPlugins').default |
|
const locale = require('@/utils/locale/index').default |
|
const router = require('@/permission').default |
|
const App = require('@/App.vue').default |
|
|
|
// 添加翻译 mixin |
|
const TranslationMixin = require('@/mixins/translation').default |
|
|
|
if (saas) { |
|
const saasUtil = require('@/saas/util') |
|
saasUtil.addTenantListener() |
|
} |
|
|
|
await setTs() |
|
window.setInterval(() => { |
|
setTs() |
|
}, tsDvalue) |
|
await store.dispatch(LOADING_INIT_DATA) |
|
await store.dispatch(LOADING_USER_DATA) |
|
await Vue.use(install) |
|
Vue.mixin(TranslationMixin) |
|
store.getters.i18n && Vue.use(locale) |
|
instance = new Vue({ |
|
router, |
|
store, |
|
render: h => h(App) |
|
}).$mount(container ? container.querySelector('#fks-app-container') : '#fks-app-container') |
|
|
|
} |
|
|
|
|
|
/** |
|
* @description: 第一次进入子应用后调用 |
|
* 将父应用传递的值挂载vue原型上 |
|
*/ |
|
export async function bootstrap(props = {}) { |
|
initAsSubApp(props) |
|
} |
|
|
|
|
|
/** |
|
* @description: 每次进入入子应用后调用 |
|
* 第一次进入时会在boostrap方法完成后调用 |
|
*/ |
|
export async function mount(props = {}) { |
|
await render(props) |
|
} |
|
|
|
|
|
/** |
|
* @description: 每次切出子应用后调用 |
|
* 断开子应用的websocket连接并销毁Vue实例 |
|
*/ |
|
export async function unmount() { |
|
const store = require('@/store').default |
|
store.commit(CLEAN_WEBSOCKET_POOL) |
|
if (instance) { |
|
instance.$el.innerHTML = '' |
|
instance.$destroy() |
|
instance = null |
|
} |
|
} |
|
|
|
|
|
|