main.js 2.8 KB

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