main.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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 { LICENSE_CODE, MAP_KEY } from '@/config/setting';
  9. import EleAdmin from 'ele-admin';
  10. import VueClipboard from 'vue-clipboard2';
  11. import i18n from './i18n';
  12. import './styles/index.scss';
  13. import '@/components/FormGenerator/styles/index.scss';
  14. import DictSelection from '@/components/Dict/DictSelection';
  15. import elTableInfiniteScroll from 'el-table-infinite-scroll';
  16. import lodash from 'lodash';
  17. import processSubmitDialog from '@/BIZComponents/processSubmitDialog/processSubmitDialog.vue';
  18. // import tinymce from '@/components/FormGenerator/components/tinymce/index.js';
  19. // import TinymceEditor from '@/components/TinymceEditor/index.vue';
  20. // import SvgIcon from '@/components/FormGenerator/components/SvgIcon'; // svg component
  21. import HeaderTitle from '@/components/header-title';
  22. import { all, create } from 'mathjs'; // 引入mathjs工具并初始化
  23. // // register globally
  24. // Vue.component('tinymce', TinymceEditor);
  25. import '@/icons';
  26. // bpmnProcessDesigner 需要引入
  27. import MyPD from '@/components/bpmnProcessDesigner/package/index.js';
  28. import '@/components/bpmnProcessDesigner/package/theme/index.scss';
  29. import 'bpmn-js/dist/assets/diagram-js.css';
  30. import 'bpmn-js/dist/assets/bpmn-font/css/bpmn.css';
  31. import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-codes.css';
  32. import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css';
  33. import FormMaking from '../lib/vue-form-making/src/index';
  34. import '@/assets/font_icon/iconfont.css';
  35. import fileMain from '@/components/addDoc/index.vue';
  36. import ApprovalOpinion from '@/components/ApprovalOpinion';
  37. import './directives';
  38. import seekPage from '@/BIZComponents/seekPage';
  39. Vue.component('seekPage', seekPage);
  40. import clickOnce from './utils/clickOnce.js';
  41. Vue.directive('click-once', clickOnce);
  42. import tableScrollSync from '@/directives/tableScrollSync';
  43. Vue.directive('table-scroll-sync', tableScrollSync);
  44. import Tooltip from './utils/tooltip'; // 引入封装的工具
  45. Vue.prototype.$tooltip = Tooltip;
  46. Vue.use(elTableInfiniteScroll);
  47. Vue.component('HeaderTitle', HeaderTitle);
  48. Vue.component('fileMain', fileMain);
  49. Vue.component('processSubmitDialog', processSubmitDialog);
  50. Vue.component('ApprovalOpinion', ApprovalOpinion);
  51. const config = {
  52. number: 'BigNumber',
  53. precision: 64
  54. };
  55. Vue.prototype.$math = create(all, config);
  56. Vue.use(MyPD);
  57. Vue.use(FormMaking, {
  58. lang: 'zh-CN',
  59. i18n: i18n
  60. });
  61. Vue.component('DictSelection', DictSelection);
  62. Vue.config.productionTip = false;
  63. Vue.prototype._ = lodash;
  64. // 表单重置
  65. Vue.prototype.resetForm = function resetForm(refName) {
  66. if (this.$refs[refName]) {
  67. this.$refs[refName].resetFields();
  68. }
  69. };
  70. Vue.use(EleAdmin, {
  71. response: {
  72. dataName: 'list'
  73. },
  74. mapKey: MAP_KEY,
  75. license: LICENSE_CODE,
  76. i18n: (key, value) => i18n.t(key, value)
  77. });
  78. Vue.use(permission);
  79. Vue.use(VueClipboard);
  80. // new Vue({
  81. // router,
  82. // store,
  83. // i18n,
  84. // render: (h) => h(App)
  85. // }).$mount('#app');
  86. let instance = null;
  87. function render(props = {}) {
  88. const { container, routerBase } = props;
  89. // Vue.component('fileMain', fileMain);
  90. // const router = new VueRouter({
  91. // base: window.__POWERED_BY_QIANKUN__ ? routerBase : process.env.BASE_URL,
  92. // mode: 'history',
  93. // routes
  94. // });
  95. instance = new Vue({
  96. router,
  97. store,
  98. i18n,
  99. render: (h) => h(App)
  100. }).$mount(container ? container.querySelector('#app') : '#app');
  101. }
  102. if (!window.__POWERED_BY_QIANKUN__) {
  103. // 这里是子应用独立运行的环境,实现子应用的登录逻辑
  104. render();
  105. }
  106. export async function bootstrap() {
  107. console.log('[vue] vue app bootstraped');
  108. }
  109. export async function mount(props) {
  110. console.log('[vue] props from main framework', props);
  111. Vue.prototype.$portalStore = props.store;
  112. initParentStore(props.store);
  113. // initParentStore(props.store?.state);
  114. props.onGlobalStateChange((state, prev) => {
  115. // state: 变更后的状态; prev 变更前的状态
  116. initParentStore(state);
  117. });
  118. render(props);
  119. }
  120. export async function unmount() {
  121. instance.$destroy();
  122. instance.$el.innerHTML = '';
  123. instance = null;
  124. }