diff --git a/frontend/src/pages/business-trip/apply.tsx b/frontend/src/pages/business-trip/apply.tsx index b85be1b..d3bdffc 100644 --- a/frontend/src/pages/business-trip/apply.tsx +++ b/frontend/src/pages/business-trip/apply.tsx @@ -89,23 +89,35 @@ export default function BusinessTripApply() { // 加载默认审批人和抄送人(仅在首次加载且没有草稿数据时) const defaultLoadedRef = useRef(false) useEffect(() => { - // 防止重复加载 - if (defaultLoadedRef.current) return - const loadDefaultApprovers = async () => { + // 防止重复加载 + if (defaultLoadedRef.current) return + // 如果已经有存储的草稿数据,不加载默认值 if (sessionStorage.getItem('businessTripDraft')) { + defaultLoadedRef.current = true return } // 如果已经从选择页面返回,不加载默认值 if (location.state?.fromSelection) { + defaultLoadedRef.current = true return } - // 如果已经有存储的人员数据,不加载默认值 - if (sessionStorage.getItem('selectedApprovers') || sessionStorage.getItem('selectedCc')) { + // 如果已经有存储的人员数据,恢复但不标记为已加载(允许后续更新) + const storedApprovers = sessionStorage.getItem('selectedApprovers') + const storedCc = sessionStorage.getItem('selectedCc') + if (storedApprovers || storedCc) { + if (storedApprovers) { + setApprovers(JSON.parse(storedApprovers)) + } + if (storedCc) { + setCcUsers(JSON.parse(storedCc)) + } + defaultLoadedRef.current = true return } + // 从后端获取默认配置 try { const defaultData = await businessTripApi.getDefaultApprovers() if (defaultData.approvers && defaultData.approvers.length > 0) { @@ -116,14 +128,14 @@ export default function BusinessTripApply() { setCcUsers(defaultData.cc_users) sessionStorage.setItem('selectedCc', JSON.stringify(defaultData.cc_users)) } - defaultLoadedRef.current = true } catch (error) { console.error('Failed to load default approvers:', error) } + defaultLoadedRef.current = true } loadDefaultApprovers() - }, [location.state?.fromSelection]) + }, []) // 处理从选择页面返回的数据和草稿恢复 useEffect(() => { diff --git a/frontend/src/pages/business-trip/select-approver.tsx b/frontend/src/pages/business-trip/select-approver.tsx index 336891d..b34b412 100644 --- a/frontend/src/pages/business-trip/select-approver.tsx +++ b/frontend/src/pages/business-trip/select-approver.tsx @@ -54,11 +54,9 @@ export default function SelectUserPage() { if (storedData) { try { const parsed = JSON.parse(storedData) - if (parsed.length > 0) { - setSelectedUsers(parsed) - initialLoadedRef.current = true - return - } + setSelectedUsers(parsed) + initialLoadedRef.current = true + return } catch (e) { console.error('Failed to parse stored data:', e) } @@ -71,6 +69,10 @@ export default function SelectUserPage() { ? (defaultData.approvers || []) : (defaultData.cc_users || []) setSelectedUsers(defaultUsers) + // 将默认数据也保存到 sessionStorage + if (defaultUsers.length > 0) { + sessionStorage.setItem(storageKey, JSON.stringify(defaultUsers)) + } } catch (error: any) { console.error('Failed to load default approvers:', error) // 获取失败时设置为空数组