72 lines
1.6 KiB
JavaScript
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");
|