Files
workspace/code/g3hd/frontend/src/main.js
T
2026-08-08 17:29:51 +08:00

72 lines
1.6 KiB
JavaScript

import VxeUIPluginExportXLSX from "@vxe-ui/plugin-export-xlsx";
import ElementPlus from "element-plus";
import ExcelJS from "exceljs";
import { createPinia } from "pinia";
import piniaPluginPersistedstate from "pinia-plugin-persistedstate";
import { createApp } from "vue";
import VxeUIBase, { VxeUI } from "vxe-pc-ui";
import VxeUITable from "vxe-table";
import App from "./App.vue";
import router from "@/router/index.js";
import permission from "@/utils/permission";
import "element-plus/dist/index.css";
import "@/styles/index.css";
import "vxe-pc-ui/es/style.css";
import "vxe-table/es/style.css";
import SvgIconPlugin from "@/plugins/svg-icon";
import * as ElementPlusIconsVue from "@element-plus/icons-vue";
export const app = createApp(App);
const pinia = createPinia();
pinia.use(piniaPluginPersistedstate);
VxeUI.use(VxeUIPluginExportXLSX, {
ExcelJS,
});
VxeUI.setConfig({
table: {
scrollX: {
enabled: true,
},
scrollY: {
enabled: true,
},
virtualXConfig: {
enabled: true,
gt: 0,
},
virtualYConfig: {
enabled: true,
gt: 0,
},
},
});
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
app.component(key, component);
}
app
.use(pinia)
.use(router)
.use(permission)
.use(ElementPlus)
.use(VxeUIBase)
.use(VxeUITable)
.use(SvgIconPlugin);
// HMR 防护:避免热更新时重复挂载
// 检查 #app 上是否已有 Vue 实例,避免重复挂载
const container = document.querySelector("#app");
if (container && container.__vue_app__) {
container.__vue_app__.unmount();
}
app.mount("#app");