102 lines
2.9 KiB
TypeScript
102 lines
2.9 KiB
TypeScript
import { createApp } from "vue";
|
|
import { createPinia } from "pinia";
|
|
import router from "@/router";
|
|
import Root from "@/Root.vue";
|
|
import { useCurrentStoreStore } from "@/store/currentStoreStore";
|
|
|
|
import { configureUserStore, useUserStore } from "timi-web-api/store";
|
|
import Network from "timi-web-api/utils/Network";
|
|
import { VCan, VRole } from "timi-web-api/utils/directives/Access";
|
|
import type { ApiResponse } from "timi-web-api";
|
|
import { Message } from "@/utils/message";
|
|
import { initializeTwaBridge } from "@/utils/twaBridge";
|
|
import { VEntranceTransition } from "timi-tdesign-mobile";
|
|
import timiWebStyle from "../../timi-web/src/assets/style/timi-web.less?inline";
|
|
import tdesignCustomStyle from "../../timi-tdesign-mobile/src/assets/style/tdesign-custom.less?inline";
|
|
|
|
import "vue-virtual-scroller/dist/vue-virtual-scroller.css";
|
|
import "tdesign-mobile-vue/es/style/index.css";
|
|
import "timi-web/style.css";
|
|
import "timi-tdesign-mobile/style.css";
|
|
import "@/assets/styles/tdesign-custom.css";
|
|
import "@/assets/styles/global.less";
|
|
|
|
export const pinia = createPinia();
|
|
const apiBaseURL = import.meta.env.VITE_API_BASE_URL as string | undefined;
|
|
const libraryOverrideStyleId = "library-override-style";
|
|
|
|
initializeTwaBridge();
|
|
|
|
function mountLibraryOverrideStyle(): void {
|
|
const oldStyle = document.getElementById(libraryOverrideStyleId);
|
|
oldStyle?.remove();
|
|
|
|
const style = document.createElement("style");
|
|
style.id = libraryOverrideStyleId;
|
|
style.textContent = `${timiWebStyle}\n${tdesignCustomStyle}`;
|
|
document.head.append(style);
|
|
}
|
|
|
|
if (apiBaseURL) {
|
|
Network.axios.defaults.baseURL = apiBaseURL;
|
|
}
|
|
|
|
configureUserStore({
|
|
storageKey: "gao-customer-h5:user"
|
|
});
|
|
|
|
Network.setGlobalRequestInterceptor((config: any) => {
|
|
const userStore = useUserStore(pinia);
|
|
if (apiBaseURL && !config.baseURL) {
|
|
config.baseURL = apiBaseURL;
|
|
}
|
|
|
|
config.headers.set({
|
|
"Accept-Language": "zh-CN"
|
|
});
|
|
|
|
if (userStore.token) {
|
|
config.headers.set({
|
|
"Token": userStore.token
|
|
});
|
|
}
|
|
return config;
|
|
});
|
|
async function bootstrap(): Promise<void> {
|
|
const app = createApp(Root);
|
|
app.use(pinia);
|
|
app.directive("can", VCan);
|
|
app.directive("role", VRole);
|
|
app.directive("entrance-transition", VEntranceTransition);
|
|
|
|
const userStore = useUserStore(pinia);
|
|
const currentStoreStore = useCurrentStoreStore(pinia);
|
|
const loginUser = await userStore.loginByStorage();
|
|
if (loginUser) {
|
|
await currentStoreStore.loadAfterLogin();
|
|
}
|
|
|
|
Network.setGlobalErrorCallback((resp: ApiResponse<any>) => {
|
|
Message.error(resp.message);
|
|
});
|
|
|
|
app.use(router);
|
|
await router.isReady();
|
|
await import("tdesign-mobile-vue");
|
|
await import("../../timi-web/src/index");
|
|
await import("timi-tdesign-mobile");
|
|
mountLibraryOverrideStyle();
|
|
app.mount("#root");
|
|
}
|
|
|
|
async function start(): Promise<void> {
|
|
try {
|
|
await bootstrap();
|
|
} catch (error) {
|
|
console.error(error);
|
|
Message.error("应用启动失败");
|
|
}
|
|
}
|
|
|
|
void start();
|