import Vue from 'vue' import axios from './router/axios' import VueAxios from 'vue-axios' import App from './App' import router from './router/router' import './permission' // 权限 import './error' // 日志 import './cache' //页面缓存 import store from './store' import { loadStyle } from './util/util' import * as urls from '@/config/env' import Element from 'element-ui' import { iconfontUrl, iconfontVersion } from '@/config/env' import i18n from './lang' // Internationalization import './styles/common.scss' import basicBlock from './components/basic-block/main' import basicContainer from './components/basic-container/main' import thirdRegister from './components/third-register/main' import avueUeditor from 'avue-plugin-ueditor' import website from '@/config/website' import crudCommon from '@/mixins/crud' import Example from './components/example' import Pagination from './components/Pagination' import directive from './util/directives' import { dictDataEcho } from './util/util' //字典数据回显 //cdn迁移进src目录 import './assets/cdn/element-ui/2.15.1/theme-chalk/index.css' import './assets/cdn/animate/3.5.2/animate.css' import './assets/cdn/iconfont/avue/iconfont.css' import './assets/cdn/iconfont/saber/iconfont.css' import './assets/cdn/avue/2.8.18/index.css' import { set } from 'nprogress' import { setToken } from '@/util/auth' // 注册全局crud驱动 window.$crudCommon = crudCommon // 加载Vue拓展 Vue.use(router) Vue.use(VueAxios, axios) Vue.use(Element, { i18n: (key, value) => i18n.t(key, value), }) Vue.use(window.AVUE, { size: 'small', tableSize: 'small', calcHeight: 65, i18n: (key, value) => i18n.t(key, value), }) Vue.use(Example) Vue.use(Pagination) Vue.use(set) Vue.use(directive) Element.Select.props.filterable = { type: Boolean, default: true, } Element.Select.props.clearable = { type: Boolean, default: true, } Element.TimePicker.props.editable = { type: Boolean, default: false, } Element.TimeSelect.props.editable = { type: Boolean, default: false, } Element.DatePicker.props.editable = { type: Boolean, default: false, } Element.Dialog.props.closeOnClickModal.default = false Element.Dialog.props.appendToBody.default = true // 注册全局容器 Vue.component('basicContainer', basicContainer) Vue.component('basicBlock', basicBlock) Vue.component('thirdRegister', thirdRegister) Vue.component('avueUeditor', avueUeditor) Vue.component('Example', Example) Vue.component('Pagination', Pagination) Vue.prototype.msgSuccess = function (msg) { this.$message({ showClose: true, message: msg, type: 'success' }) } Vue.prototype.msgError = function (msg) { this.$message({ showClose: true, message: msg, type: 'error' }) } Vue.prototype.msgWarning = function (msg) { this.$message({ showClose: true, message: msg, type: 'warning' }) } Vue.prototype.msgInfo = function (msg) { this.$message.info(msg) } Vue.prototype.dictDataEcho = dictDataEcho // 加载相关url地址 Object.keys(urls).forEach((key) => { Vue.prototype[key] = urls[key] }) // 加载website Vue.prototype.website = website // 动态加载阿里云字体库 iconfontVersion.forEach((ele) => { loadStyle(iconfontUrl.replace('$key', ele)) }) //乾坤代码 Vue.config.productionTip = false let instance = null function render({ props = {} } = {}) { console.log(props) const { container } = props instance = new Vue({ router, store, i18n, data() { }, render: (h) => h(App), }).$mount(container ? container.querySelector('#fjhxCloudVue') : '#fjhxCloudVue') console.log(instance) } // 独立运行时 ; (function () { console.log(window.__POWERED_BY_QIANKUN__) if (window.__POWERED_BY_QIANKUN__) { __webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__ } else { render() } })() export async function bootstrap() { console.log('vue app bootstraped') } export async function mount(props) { //设置token console.log(props.data.token) //挂载父路由 Vue.prototype.$parentRouter = props.data.router if (props.data.token != null) { //注入父应用传来的登录信息 setToken(props.data.token.access_token) store.commit('SET_TOKEN', props.data.token.access_token) store.commit('SET_REFRESH_TOKEN', props.data.token.refresh_token) store.commit('SET_TENANT_ID', props.data.token.tenant_id) store.commit('SET_USER_INFO', props.data.token) //设置监听事件触发方法,全局共享 props.onGlobalStateChange((state, prev) => { // state: 变更后的状态; prev 变更前的状态 console.log(state, prev, '子组件监听') }) } //发送数据给全局 // props.setGlobalState({ token: 21312312 }) render(props) } export async function unmount() { // instance.$destroy(); instance.$el.innerHTML = '' instance = null // router = null; } Vue.config.productionTip = false