import 'element-plus/theme-chalk/el-message.css' import 'element-plus/theme-chalk/el-message-box.css' import 'vant/lib/index.css' import './styles/base.css' import './styles/pc.css' import './styles/admin.css' import { createPinia } from 'pinia' import { createApp } from 'vue' import App from './App.vue' import router from './router' import { useAdminSessionStore } from './stores/adminSession' import { useDistributionSiteStore } from './stores/distributionSite' import { useSessionStore } from './stores/session' const app = createApp(App) const pinia = createPinia() app.use(pinia).use(router) window.addEventListener('auth-storage-changed', () => { useSessionStore(pinia).syncFromStorage() useAdminSessionStore(pinia).syncFromStorage() }) window.addEventListener('storage', event => { if (event.storageArea === localStorage) { useSessionStore(pinia).syncFromStorage() useAdminSessionStore(pinia).syncFromStorage() } }) // 初始化分销站点租户配置(如 ?site=xxx 或独立域名访问)。 // 必须在挂载前完成:独立域名下的站点码由 /distribution/site-info 探测后写入 sessionStorage, // 若在探测完成前渲染,分站页面的请求(包括发布商品)会缺少站点码而被当成主站发布。 async function bootstrap() { await useDistributionSiteStore(pinia) .initSite() .catch(() => undefined) await router.isReady() app.mount('#app') } void bootstrap()