import type { StoreBusinessDayStatus, StoreStatus } from "@/types/Store"; import { permissionCodes } from "@/utils/permission"; import { type Page, useUserStore } from "timi-web-api"; export const currentStoreIdStorageKey = "gao-customer-h5:current-store-id"; export const loginStoreIdStorageKey = "gao-customer-h5:login-store-id"; type LoginUserWithStore = { storeId?: string; user?: { storeId?: string; }; managedUser?: { storeId?: string; }; gaoUser?: { storeId?: string; }; }; export function getCurrentStoreId(): string { const userStore = useUserStore(); const loginStoreId = readLoginStoreId(); if (userStore.hasPermissions(permissionCodes.store.read)) { return readStoredCurrentStoreId() || loginStoreId || getLoginUserStoreId(); } return loginStoreId || getLoginUserStoreId(); } export function setCurrentStoreId(storeId: string): void { localStorage.setItem(currentStoreIdStorageKey, storeId); } export function setLoginStoreId(storeId: string): void { localStorage.setItem(loginStoreIdStorageKey, storeId); } export function readStoredCurrentStoreId(): string { return localStorage.getItem(currentStoreIdStorageKey) || ""; } export function readLoginStoreId(): string { return localStorage.getItem(loginStoreIdStorageKey) || ""; } export function withCurrentStoreId(data: T): T { return { ...data, storeId: data.storeId || getCurrentStoreId() }; } export function withCurrentStorePage(page: Page): Page { return { ...page, equalsExample: withCurrentStoreId(page.equalsExample || {} as Partial) as Partial }; } function getLoginUserStoreId(): string { const userStore = useUserStore(); const loginUser = userStore.loginUser as LoginUserWithStore; return loginUser.storeId || loginUser.user?.storeId || loginUser.managedUser?.storeId || loginUser.gaoUser?.storeId || ""; } export function getStoreStatusText(status?: StoreStatus): string { const map: Record = { ACTIVE: "启用", INACTIVE: "停用", DELETED: "已删除" }; return status ? map[status] : "未知"; } export function getStoreStatusTheme(status?: StoreStatus): "success" | "warning" | "danger" | "default" { if (status === "ACTIVE") { return "success"; } if (status === "INACTIVE") { return "warning"; } if (status === "DELETED") { return "danger"; } return "default"; } export function getBusinessDayStatusText(status?: StoreBusinessDayStatus): string { const map: Record = { OPEN: "营业", CLOSED: "休息" }; return status ? map[status] : "未配置"; } export function getBusinessDayStatusTheme(status?: StoreBusinessDayStatus): "success" | "warning" | "default" { if (status === "OPEN") { return "success"; } if (status === "CLOSED") { return "warning"; } return "default"; }