import { createApp } from 'vue' import ElementPlus, { ElMessageBox } from 'element-plus' import 'element-plus/theme-chalk/el-checkbox.css' import print from 'vue3-print-nb' import axios from 'axios' import * as ElementPlusIconsVue from '@element-plus/icons-vue' import dayjs from 'dayjs' import App from './App.vue' import pinia from './store' import router from './router' import useSettingsStore from './store/modules/settings' import request from '@/api/index' import useUserStore from '@/store/modules/user' // 自定义指令 import directive from '@/utils/directive' // 加载 svg 图标 import 'virtual:svg-icons-register' // 全局样式 import '@/assets/styles/globals.scss' // 加载 iconify 图标(element plus) import { downloadAndInstall } from '@/iconify-ep' import { hasPermission } from '@/utils/composables/permission' import buttonPerm from '@/utils/buttonPerm' const userStore = useUserStore() // 引入打印插件 if (useSettingsStore().app.iconifyOfflineUse) { downloadAndInstall() } const app = createApp(App) app.config.globalProperties.hasPerm = hasPermission app.config.globalProperties.buttonPerm = buttonPerm app.config.globalProperties.dayjs = dayjs app.use(print) app.use(ElementPlus) app.use(pinia) app.use(router) for (const [key, component] of Object.entries(ElementPlusIconsVue)) { app.component(key, component) } directive(app) axios .get('./config/config.json') .then((result) => { request.defaults.baseURL = result.data.baseUrl // 设置默认请求网址 app.config.globalProperties.config = result.data window.localStorage.setItem('baseURL', result.data.baseUrl) window.localStorage.setItem('wsURL', result.data.wsURL) app.mount('#app') }) .catch((error) => { console.error(`get baseConfig error...${error}`) }) // 监听全局刷新页面事件 window.addEventListener('beforeunload', (e) => { // 1. 保存用户名 if (userStore.username) { localStorage.setItem('currentName', userStore.username) } // 2. 判断证书生成状态 console.log( '=========556644645645=======', sessionStorage.getItem('createCerting'), ) if (sessionStorage.getItem('createCerting') === 'true') { // // 必需的核心代码 e.preventDefault() e.returnValue = '证书未生成完成, 离开页面会使证书生成失败或者自动检完失效,确定离开页面吗?请谨慎选择!' // 任意字符串均可(浏览器不会显示) // const message = // '证书未生成完成, 离开页面会使证书生成失败或者自动检完失效,确定离开页面吗?请谨慎选择!' // // // 可选:开发环境调试输出 console.log('[DEBUG] 已拦截页面离开') sessionStorage.setItem('createCerting', 'false') // ElMessageBox.confirm(message, '警告', { // confirmButtonText: '确定刷新', // cancelButtonText: '取消刷新', // type: 'warning', // }) // .then(() => { // e.preventDefault() // // e.returnValue = // // '证书未生成完成, 离开页面会使证书生成失败或者自动检完失效,确定离开页面吗?请谨慎选择!' // 任意字符串均可(浏览器不会显示) // }) // .catch(() => {}) } })