2022-12-07 15:03:22 +08:00
|
|
|
|
import "./public-path"
|
|
|
|
|
import "@/business/component/js/track-table-header"
|
|
|
|
|
import Vue from "vue"
|
|
|
|
|
import "metersphere-frontend/src/styles/index.scss"
|
|
|
|
|
import ElementUI from "element-ui";
|
|
|
|
|
import App from "./App.vue"
|
|
|
|
|
import i18n from "./i18n";
|
|
|
|
|
import router from "./router"
|
|
|
|
|
import {createPinia, PiniaVuePlugin} from 'pinia'
|
|
|
|
|
import PersistedState from 'pinia-plugin-persistedstate'
|
|
|
|
|
import icons from "metersphere-frontend/src/icons"
|
2022-12-07 15:39:21 +08:00
|
|
|
|
import svg from "metersphere-frontend/src/components/svg";
|
2022-12-07 15:03:22 +08:00
|
|
|
|
import plugins from "metersphere-frontend/src/plugins";
|
|
|
|
|
import directives from "metersphere-frontend/src/directive";
|
|
|
|
|
import filters from "metersphere-frontend/src/filters";
|
|
|
|
|
import "metersphere-frontend/src/router/permission";
|
|
|
|
|
import chart from "metersphere-frontend/src/chart";
|
2023-04-11 10:23:51 +08:00
|
|
|
|
import VueShepherd from 'vue-shepherd' // 新手引导
|
|
|
|
|
import 'metersphere-frontend/src/assets/shepherd/shepherd-theme.css'
|
|
|
|
|
import { gotoCancel, gotoNext } from "metersphere-frontend/src/utils";
|
2022-12-07 15:03:22 +08:00
|
|
|
|
|
|
|
|
|
Vue.config.productionTip = false
|
|
|
|
|
|
|
|
|
|
const pinia = createPinia()
|
|
|
|
|
pinia.use(PersistedState) //开启缓存,存储在localstorage
|
|
|
|
|
|
|
|
|
|
Vue.use(ElementUI, {
|
|
|
|
|
i18n: (key, value) => i18n.t(key, value)
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Vue.use(svg);
|
|
|
|
|
Vue.use(icons);
|
|
|
|
|
Vue.use(plugins);
|
|
|
|
|
Vue.use(directives);
|
|
|
|
|
Vue.use(filters);
|
|
|
|
|
Vue.use(PiniaVuePlugin);
|
|
|
|
|
Vue.use(chart);
|
2023-04-11 10:23:51 +08:00
|
|
|
|
Vue.use(VueShepherd);
|
|
|
|
|
|
|
|
|
|
Vue.prototype.gotoCancel = gotoCancel;
|
|
|
|
|
Vue.prototype.gotoNext = gotoNext;
|
2022-12-07 15:03:22 +08:00
|
|
|
|
|
|
|
|
|
let instance = null;
|
|
|
|
|
|
|
|
|
|
function render(props = {}) {
|
|
|
|
|
const {container, eventBus = new Vue()} = props;
|
|
|
|
|
// 添加全局事件总线
|
|
|
|
|
Vue.prototype.$EventBus = eventBus;
|
|
|
|
|
|
|
|
|
|
instance = new Vue({
|
|
|
|
|
i18n,
|
|
|
|
|
router,
|
|
|
|
|
pinia,
|
|
|
|
|
render: h => h(App),
|
|
|
|
|
}).$mount(container ? container.querySelector('#app') : '#app');
|
2023-06-25 14:44:05 +08:00
|
|
|
|
|
|
|
|
|
// 解决qiankun下,vue-devtools不显示的问题
|
|
|
|
|
if (process.env.NODE_ENV === 'development') {
|
|
|
|
|
const instanceDiv = document.createElement('div')
|
|
|
|
|
instanceDiv.__vue__ = instance
|
|
|
|
|
document.body.appendChild(instanceDiv)
|
|
|
|
|
}
|
2022-12-07 15:03:22 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 独立运行时
|
|
|
|
|
if (!window.__POWERED_BY_QIANKUN__) {
|
|
|
|
|
render();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* bootstrap 只会在微应用初始化的时候调用一次,下次微应用重新进入时会直接调用 mount 钩子,不会再重复触发 bootstrap。
|
|
|
|
|
* 通常我们可以在这里做一些全局变量的初始化,比如不会在 unmount 阶段被销毁的应用级别的缓存等。
|
|
|
|
|
*/
|
|
|
|
|
export async function bootstrap(props) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 应用每次进入都会调用 mount 方法,通常我们在这里触发应用的渲染方法
|
|
|
|
|
*/
|
|
|
|
|
export async function mount(props) {
|
|
|
|
|
props.onGlobalStateChange((state, prev) => {
|
|
|
|
|
// state: 变更后的状态; prev 变更前的状态
|
|
|
|
|
});
|
|
|
|
|
props.setGlobalState({event: 'opendialog'});
|
|
|
|
|
render(props);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 应用每次 切出/卸载 会调用的方法,通常在这里我们会卸载微应用的应用实例
|
|
|
|
|
*/
|
|
|
|
|
export async function unmount(props) {
|
|
|
|
|
instance.$destroy();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2023-06-21 16:45:34 +08:00
|
|
|
|
* 更新钩子,目前只有routeParams更新,后续有其他属性更新再添加
|
2022-12-07 15:03:22 +08:00
|
|
|
|
*/
|
2023-06-21 16:45:34 +08:00
|
|
|
|
export async function update (props) {
|
|
|
|
|
const { defaultPath, routeParams, routeName } = props;
|
|
|
|
|
// 微服务过来的路由
|
|
|
|
|
if (defaultPath || routeName) {
|
|
|
|
|
microRouter.push({
|
|
|
|
|
path: defaultPath,
|
|
|
|
|
params: routeParams,
|
|
|
|
|
name: routeName,
|
|
|
|
|
});
|
|
|
|
|
}
|
2022-12-07 15:03:22 +08:00
|
|
|
|
}
|