diff --git a/src/frontend/src/store.ts b/src/frontend/src/store.ts index cd9a18c..7f1a86e 100644 --- a/src/frontend/src/store.ts +++ b/src/frontend/src/store.ts @@ -372,7 +372,7 @@ export const useStore = create((set, get) => ({ // v2.6: 多项目 projects: {}, - selectedProjectId: null, + selectedProjectId: (() => { try { const v = localStorage.getItem('selectedProjectId'); return v !== null ? v : ''; } catch { return ''; } })(), // v2.6: 原生 V2Task v2tasks: [], @@ -507,13 +507,18 @@ export const useStore = create((set, get) => ({ // 同步项目列表 const projects = (data.syncStatus as any)?.projects?.projects || {}; set({ projects }); - // 自动选择第一个项目 + // 自动选择:仅在 localStorage 无记录时 const s = get(); - if (!s.selectedProjectId && s.selectedProjectId !== '' && s.selectedProjectId !== '_general' && Object.keys(projects).length > 0) { - const realPids = Object.keys(projects).filter(p => !p.startsWith('_')); - const firstPid = realPids[0] || Object.keys(projects)[0]; + const savedPid = localStorage.getItem('selectedProjectId'); + if (savedPid === null && Object.keys(projects).length > 0) { + const realPids = Object.keys(projects).filter((p: string) => !p.startsWith('_')); + const firstPid = realPids[0] || Object.keys(projects)[0] || ''; set({ selectedProjectId: firstPid }); setApiProjectId(firstPid); + try { localStorage.setItem('selectedProjectId', firstPid); } catch {} + } else if (savedPid !== null && s.selectedProjectId !== savedPid) { + set({ selectedProjectId: savedPid }); + setApiProjectId(savedPid); } // Also preload officials for monitor tab if (!s.officialsData) {