import type { App } from 'vue' import { createPinia } from 'pinia' import router from '@/router' import { initLang } from '@/lang' import { initTheme } from '@/utils/theme' import { getToken } from '@/utils/auth' import config from '@/config' import { busEvent } from '@/utils/bus' import { reqIsSucceed, langTitle } from '@/utils' import getStore from '@/store/piniaToVuex' import httpUtil from '@/utils/request' import '@gushen/gushen-common-components/lib/gushen-common-components.css' // 日期插件 import dayjs from 'dayjs' // 全局组件 import { componentregister } from '@/components/global-register' import ElementPlus from 'element-plus' import 'element-plus/dist/index.css' // 路由权限 import '@/permission' // 注册全局icon // import '@/icons' import * as ElementPlusIconsVue from '@element-plus/icons-vue' // 公共组件库 import GsComponents from '@gushen/gushen-common-components' import '@gushen/gushen-common-components/lib/gushen-common-components.css' // 动态报表 // import GsReport from '@gushen/gushen-report-render' // import '@gushen/gushen-report-render/lib/gushen-report-render.css' // 动态表单 // import GsForm from '@gushen/gushen-form-render' // import '@gushen/gushen-form-render/lib/gushen-form-render.css' // 乾坤微前端 import { action } from '@/qiankun' export const initGlobalProperties = (instance: App) => { const Properties = instance.config.globalProperties Properties.$moment = dayjs Properties.$bus = new busEvent() Properties.$_ = window._ Properties.reqIsSucceed = reqIsSucceed Properties.langTitle = langTitle // Properties.$echarts = window.echarts Properties.$microProps = action Properties.$store = getStore() Properties.$http = window.$request = httpUtil Properties.routerAppend = (path, pathToAppend) => { return path + (path.endsWith('/') ? '' : '/') + pathToAppend } window._config = config } export const setupPlugins = (instance: App) => { const I18n = initLang() componentregister(instance) instance.use(I18n) instance.use(GsComponents) instance.use(ElementPlus) instance.use(createPinia()) instance.use(router) // instance.use(GsForm) // instance.use(GsReport) for (const [key, component] of Object.entries(ElementPlusIconsVue)) { instance.component(key, component) } } export const initSystemConfig = async () => { try { const store = getStore() const token = getToken() if (!token) return initTheme() const isHideThemeControl = await store.dispatch('GetHideThemeControlStatus') // 如果隐藏了主题控件,直接渲染默认主题 if (!isHideThemeControl) { // 获取主题色配置 await store.dispatch('GetDefaultThemeColor') } initTheme() } catch (error) { console.error(error) initTheme() } }