diff --git a/apps/h5-partner/src/PartnerAppRoutes.tsx b/apps/h5-partner/src/PartnerAppRoutes.tsx index 89f1b55..79c7c90 100644 --- a/apps/h5-partner/src/PartnerAppRoutes.tsx +++ b/apps/h5-partner/src/PartnerAppRoutes.tsx @@ -55,7 +55,7 @@ function SubAccountRoutes() { } /> } /> - } /> + } /> ); } diff --git a/apps/h5-partner/src/lib/partnerAccess.ts b/apps/h5-partner/src/lib/partnerAccess.ts index efcbe32..c2093ea 100644 --- a/apps/h5-partner/src/lib/partnerAccess.ts +++ b/apps/h5-partner/src/lib/partnerAccess.ts @@ -9,7 +9,7 @@ export function isSubAccount(account: PartnerMe | null | undefined): boolean { } export function partnerHomePath(account: PartnerMe | null | undefined): string { - return isSubAccount(account) ? '/stores/new' : '/'; + return isSubAccount(account) ? '/stores/new?step=1' : '/'; } export const SUB_ACCOUNT_ALLOWED_PREFIXES = ['/stores', '/login']; diff --git a/apps/h5-partner/src/lib/storeDraft.ts b/apps/h5-partner/src/lib/storeDraft.ts index 783ec1e..47bf3ab 100644 --- a/apps/h5-partner/src/lib/storeDraft.ts +++ b/apps/h5-partner/src/lib/storeDraft.ts @@ -23,6 +23,10 @@ export type StoreDraft = { export const STORE_DRAFT_KEY = 'partner_store_draft_v2'; +export function storeDraftKey(accountId?: string): string { + return accountId ? `${STORE_DRAFT_KEY}_${accountId}` : STORE_DRAFT_KEY; +} + export const defaultStoreForm = (): StoreDraftForm => ({ regionCodes: [], cityId: '', @@ -72,9 +76,17 @@ function normalizeForm(raw: Record): StoreDraftForm { }; } -export function loadStoreDraft(): StoreDraft | null { +export function loadStoreDraft(accountId?: string): StoreDraft | null { try { - const raw = localStorage.getItem(STORE_DRAFT_KEY); + const key = storeDraftKey(accountId); + let raw = localStorage.getItem(key); + if (!raw && accountId) { + raw = localStorage.getItem(STORE_DRAFT_KEY); + if (raw) { + localStorage.setItem(key, raw); + localStorage.removeItem(STORE_DRAFT_KEY); + } + } if (!raw) return null; const parsed = JSON.parse(raw) as Record; if (parsed.form && typeof parsed.form === 'object') { @@ -89,12 +101,12 @@ export function loadStoreDraft(): StoreDraft | null { } } -export function saveStoreDraft(draft: StoreDraft) { - localStorage.setItem(STORE_DRAFT_KEY, JSON.stringify(draft)); +export function saveStoreDraft(draft: StoreDraft, accountId?: string) { + localStorage.setItem(storeDraftKey(accountId), JSON.stringify(draft)); } -export function clearStoreDraft() { - localStorage.removeItem(STORE_DRAFT_KEY); +export function clearStoreDraft(accountId?: string) { + localStorage.removeItem(storeDraftKey(accountId)); } const PHONE_RE = /^1\d{10}$/; diff --git a/apps/h5-partner/src/pages/StoreCreatePage.tsx b/apps/h5-partner/src/pages/StoreCreatePage.tsx index 48018cb..24802c4 100644 --- a/apps/h5-partner/src/pages/StoreCreatePage.tsx +++ b/apps/h5-partner/src/pages/StoreCreatePage.tsx @@ -31,6 +31,8 @@ import { isWechatEnv, weixinSdk } from '../lib/weixin'; import { stripOAuthParamsFromLocation } from '@dukang/weixin-sdk'; +import { usePartnerSession } from '../contexts/PartnerSessionContext'; + import { clearStoreDraft, @@ -77,9 +79,13 @@ export default function StoreCreatePage() { const navigate = useNavigate(); + const { account } = usePartnerSession(); + + const accountId = account?.id; + const [params, setParams] = useSearchParams(); - const saved = loadStoreDraft(); + const saved = loadStoreDraft(accountId); const [form, setForm] = useState(saved?.form ?? defaultStoreForm()); @@ -122,9 +128,9 @@ export default function StoreCreatePage() { useEffect(() => { - saveStoreDraft({ step, form }); + saveStoreDraft({ step, form }, accountId); - }, [step, form]); + }, [step, form, accountId]); @@ -437,7 +443,7 @@ export default function StoreCreatePage() { }); - clearStoreDraft(); + clearStoreDraft(accountId); toastSuccess('门店录入成功'); navigate(`/stores/${result.store.id}`); } catch (e) {