主账号和子账号同一设备登录遇到storge问题

This commit is contained in:
2026-07-10 10:54:04 +08:00
parent 2368121972
commit f4f4f1b4aa
4 changed files with 30 additions and 12 deletions
+1 -1
View File
@@ -55,7 +55,7 @@ function SubAccountRoutes() {
<Route path="/stores/new" element={<StoreCreatePage />} /> <Route path="/stores/new" element={<StoreCreatePage />} />
<Route path="/stores/:id" element={<StoreDetailPage />} /> <Route path="/stores/:id" element={<StoreDetailPage />} />
</Route> </Route>
<Route path="*" element={<Navigate to="/stores/new" replace />} /> <Route path="*" element={<Navigate to="/stores/new?step=1" replace />} />
</Routes> </Routes>
); );
} }
+1 -1
View File
@@ -9,7 +9,7 @@ export function isSubAccount(account: PartnerMe | null | undefined): boolean {
} }
export function partnerHomePath(account: PartnerMe | null | undefined): string { 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']; export const SUB_ACCOUNT_ALLOWED_PREFIXES = ['/stores', '/login'];
+18 -6
View File
@@ -23,6 +23,10 @@ export type StoreDraft = {
export const STORE_DRAFT_KEY = 'partner_store_draft_v2'; 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 => ({ export const defaultStoreForm = (): StoreDraftForm => ({
regionCodes: [], regionCodes: [],
cityId: '', cityId: '',
@@ -72,9 +76,17 @@ function normalizeForm(raw: Record<string, unknown>): StoreDraftForm {
}; };
} }
export function loadStoreDraft(): StoreDraft | null { export function loadStoreDraft(accountId?: string): StoreDraft | null {
try { 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; if (!raw) return null;
const parsed = JSON.parse(raw) as Record<string, unknown>; const parsed = JSON.parse(raw) as Record<string, unknown>;
if (parsed.form && typeof parsed.form === 'object') { if (parsed.form && typeof parsed.form === 'object') {
@@ -89,12 +101,12 @@ export function loadStoreDraft(): StoreDraft | null {
} }
} }
export function saveStoreDraft(draft: StoreDraft) { export function saveStoreDraft(draft: StoreDraft, accountId?: string) {
localStorage.setItem(STORE_DRAFT_KEY, JSON.stringify(draft)); localStorage.setItem(storeDraftKey(accountId), JSON.stringify(draft));
} }
export function clearStoreDraft() { export function clearStoreDraft(accountId?: string) {
localStorage.removeItem(STORE_DRAFT_KEY); localStorage.removeItem(storeDraftKey(accountId));
} }
const PHONE_RE = /^1\d{10}$/; const PHONE_RE = /^1\d{10}$/;
+10 -4
View File
@@ -31,6 +31,8 @@ import { isWechatEnv, weixinSdk } from '../lib/weixin';
import { stripOAuthParamsFromLocation } from '@dukang/weixin-sdk'; import { stripOAuthParamsFromLocation } from '@dukang/weixin-sdk';
import { usePartnerSession } from '../contexts/PartnerSessionContext';
import { import {
clearStoreDraft, clearStoreDraft,
@@ -77,9 +79,13 @@ export default function StoreCreatePage() {
const navigate = useNavigate(); const navigate = useNavigate();
const { account } = usePartnerSession();
const accountId = account?.id;
const [params, setParams] = useSearchParams(); const [params, setParams] = useSearchParams();
const saved = loadStoreDraft(); const saved = loadStoreDraft(accountId);
const [form, setForm] = useState<StoreDraftForm>(saved?.form ?? defaultStoreForm()); const [form, setForm] = useState<StoreDraftForm>(saved?.form ?? defaultStoreForm());
@@ -122,9 +128,9 @@ export default function StoreCreatePage() {
useEffect(() => { 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('门店录入成功'); toastSuccess('门店录入成功');
navigate(`/stores/${result.store.id}`); navigate(`/stores/${result.store.id}`);
} catch (e) { } catch (e) {