main.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import Vue from 'vue';
  2. import './public-path';
  3. import App from './App.vue';
  4. import store from './store';
  5. import router from './router';
  6. import permission from './utils/permission';
  7. import { MAP_KEY, LICENSE_CODE } from '@/config/setting';
  8. import EleAdmin from 'ele-admin';
  9. import VueClipboard from 'vue-clipboard2';
  10. import i18n from './i18n';
  11. import './styles/index.scss';
  12. import DictSelection from '@/components/Dict/DictSelection';
  13. import initParentStore from '../qiankun_config/store';
  14. import authSelection from '@/components/authSelection';
  15. import HeaderTitle from '@/components/header-title';
  16. Vue.component('HeaderTitle', HeaderTitle);
  17. Vue.component('authSelection', authSelection);
  18. // bpmnProcessDesigner 需要引入
  19. import MyPD from '@/components/bpmnProcessDesigner/package/index.js';
  20. Vue.use(MyPD);
  21. import '@/components/bpmnProcessDesigner/package/theme/index.scss';
  22. import 'bpmn-js/dist/assets/diagram-js.css';
  23. import 'bpmn-js/dist/assets/bpmn-font/css/bpmn.css';
  24. import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-codes.css';
  25. import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css';
  26. import seekPage from '@/components/seekPage';
  27. import fileMain from '@/components/addDoc/index.vue';
  28. // // register globally
  29. import '@/icons';
  30. Vue.component('seekPage', seekPage);
  31. Vue.component('DictSelection', DictSelection);
  32. Vue.component('fileMain', fileMain);
  33. Vue.config.productionTip = false;
  34. Vue.use(EleAdmin, {
  35. response: {
  36. dataName: 'list'
  37. },
  38. mapKey: MAP_KEY,
  39. license: LICENSE_CODE,
  40. i18n: (key, value) => i18n.t(key, value)
  41. });
  42. Vue.use(permission);
  43. Vue.use(VueClipboard);
  44. let instance = null;
  45. function render(props = {}) {
  46. const { container, routerBase } = props;
  47. // const router = new VueRouter({
  48. // base: window.__POWERED_BY_QIANKUN__ ? routerBase : process.env.BASE_URL,
  49. // mode: 'history',
  50. // routes
  51. // });
  52. instance = new Vue({
  53. router,
  54. store,
  55. i18n,
  56. render: (h) => h(App)
  57. }).$mount(container ? container.querySelector('#app') : '#app');
  58. }
  59. if (!window.__POWERED_BY_QIANKUN__) {
  60. // 这里是子应用独立运行的环境,实现子应用的登录逻辑
  61. render();
  62. }
  63. export async function bootstrap() {
  64. console.log('[vue] vue app bootstraped');
  65. }
  66. export async function mount(props) {
  67. console.log('[vue] props from main framework', props);
  68. initParentStore(props.store);
  69. props.onGlobalStateChange((state, prev) => {
  70. // state: 变更后的状态; prev 变更前的状态
  71. initParentStore(state);
  72. });
  73. render(props);
  74. }
  75. export async function unmount() {
  76. instance.$destroy();
  77. instance.$el.innerHTML = '';
  78. instance = null;
  79. }