From 76ce4ba1b614e2bc4db7201a10bd470c9e7e074d Mon Sep 17 00:00:00 2001 From: root Date: Wed, 25 Feb 2026 21:42:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=AE=80=E5=8C=96=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E7=A1=AE=E4=BF=9D=E6=96=B0=E5=BB=BA=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E6=97=B6=E5=8A=A0=E8=BD=BD=E9=BB=98=E8=AE=A4=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除草稿恢复逻辑(从列表页新建时清除所有旧数据) - 简化 useEffect 为两种情况: 1. 从选择页面返回:恢复 sessionStorage 数据 2. 从列表页新建:清除旧数据,加载默认配置 Co-Authored-By: Claude Opus 4.6 --- frontend/src/pages/business-trip/apply.tsx | 63 +++++----------------- 1 file changed, 12 insertions(+), 51 deletions(-) diff --git a/frontend/src/pages/business-trip/apply.tsx b/frontend/src/pages/business-trip/apply.tsx index 1d24648..f4da5d5 100644 --- a/frontend/src/pages/business-trip/apply.tsx +++ b/frontend/src/pages/business-trip/apply.tsx @@ -88,20 +88,16 @@ export default function BusinessTripApply() { // 统一处理:草稿恢复、默认审批人加载、选择页面返回 const initRef = useRef(false) - const fromSelectionRef = useRef(false) useEffect(() => { const fromSelection = location.state?.fromSelection - fromSelectionRef.current = !!fromSelection - console.log('📍 Page init:', { fromSelection, initRef: initRef.current }) - console.log('🔍 SessionStorage keys:', Object.keys(sessionStorage)) + console.log('📍 Page init:', { fromSelection, locationState: location.state, initRef: initRef.current }) // 1. 从选择页面返回:恢复所有人员数据 if (fromSelection) { console.log('🔄 Returning from selection page') const approversData = sessionStorage.getItem('selectedApprovers') - console.log('📦 approvers data:', approversData) if (approversData) { setApprovers(JSON.parse(approversData)) console.log('✅ Restored approvers') @@ -110,7 +106,6 @@ export default function BusinessTripApply() { } const ccData = sessionStorage.getItem('selectedCc') - console.log('📦 cc data:', ccData) if (ccData) { setCcUsers(JSON.parse(ccData)) console.log('✅ Restored CC') @@ -127,48 +122,21 @@ export default function BusinessTripApply() { } initRef.current = true - // 3. 恢复草稿数据(理由、行程) - const draftData = sessionStorage.getItem('businessTripDraft') - console.log('📦 draft data exists:', !!draftData) - - if (draftData) { - console.log('📦 Restoring draft data') - try { - const draft = JSON.parse(draftData) - if (draft.reason) setReason(draft.reason) - if (draft.itineraries && draft.itineraries.length > 0) { - const restoredItineraries = draft.itineraries.map((item: any) => ({ - ...item, - startTime: item.startTime ? new Date(item.startTime) : null, - endTime: item.endTime ? new Date(item.endTime) : null, - })) - setItineraries(restoredItineraries) - } - // 恢复草稿关联的人员数据 - const approversData = sessionStorage.getItem('selectedApprovers') - const ccData = sessionStorage.getItem('selectedCc') - console.log('📦 draft approvers:', approversData) - console.log('📦 draft cc:', ccData) - if (approversData) setApprovers(JSON.parse(approversData)) - if (ccData) setCcUsers(JSON.parse(ccData)) - } catch (error) { - console.error('❌ Failed to restore draft:', error) - } - return - } - - // 4. 首次进入且无草稿:加载默认审批人和抄送人 - console.log('🔄 Loading default approvers from backend...') - console.log('🔑 Token exists:', !!localStorage.getItem('token')) + // 3. 从列表页新建申请:清除旧数据,加载默认配置 + console.log('🆕 New application - clearing old data and loading defaults') + sessionStorage.removeItem('businessTripDraft') + sessionStorage.removeItem('selectedApprovers') + sessionStorage.removeItem('selectedCc') + setReason('') + setItineraries([{ startTime: null, endTime: null, departure: '', destination: '', transport: '', tripType: '' as 'oneway' | 'roundtrip' | '', remark: '' }]) + setApprovers([]) + setCcUsers([]) + // 4. 加载默认审批人和抄送人 const loadDefaultApprovers = async () => { - // 清除旧数据 - console.log('🧹 Clearing old selection data') - sessionStorage.removeItem('selectedApprovers') - sessionStorage.removeItem('selectedCc') + console.log('📡 Calling API...') try { - console.log('📡 Calling API...') const defaultData = await businessTripApi.getDefaultApprovers() console.log('✅ API Response:', defaultData) @@ -176,21 +144,14 @@ export default function BusinessTripApply() { console.log('✅ Setting approvers:', defaultData.approvers) setApprovers(defaultData.approvers) sessionStorage.setItem('selectedApprovers', JSON.stringify(defaultData.approvers)) - } else { - console.log('⚠️ No approvers in response') } if (defaultData.cc_users && defaultData.cc_users.length > 0) { console.log('✅ Setting cc_users:', defaultData.cc_users) setCcUsers(defaultData.cc_users) sessionStorage.setItem('selectedCc', JSON.stringify(defaultData.cc_users)) - } else { - console.log('⚠️ No cc_users in response') } - - console.log('📊 Final state - approvers:', defaultData.approvers?.length, 'cc:', defaultData.cc_users?.length) } catch (error: any) { console.error('❌ Failed to load default approvers:', error.message) - console.error('❌ Error details:', error) } }