fix: 修复选择审批人后抄送人消失的问题
- 使用 useRef 防止默认审批人/抄送人数据重复加载 - 确保从选择页面返回时,另一类型的数据不受影响 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -87,7 +87,11 @@ export default function BusinessTripApply() {
|
||||
const hasRestoredRef = useRef(false)
|
||||
|
||||
// 加载默认审批人和抄送人(仅在首次加载且没有草稿数据时)
|
||||
const defaultLoadedRef = useRef(false)
|
||||
useEffect(() => {
|
||||
// 防止重复加载
|
||||
if (defaultLoadedRef.current) return
|
||||
|
||||
const loadDefaultApprovers = async () => {
|
||||
// 如果已经有存储的草稿数据,不加载默认值
|
||||
if (sessionStorage.getItem('businessTripDraft')) {
|
||||
@@ -112,13 +116,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)
|
||||
}
|
||||
}
|
||||
|
||||
loadDefaultApprovers()
|
||||
}, [])
|
||||
}, [location.state?.fromSelection])
|
||||
|
||||
// 处理从选择页面返回的数据和草稿恢复
|
||||
useEffect(() => {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { useState, useEffect } from 'react'
|
||||
import { useState, useEffect, useRef } from 'react'
|
||||
import { useNavigate, useLocation } from 'react-router-dom'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import { NavBar, SearchBar, Button, Toast, Empty } from 'antd-mobile'
|
||||
@@ -39,10 +39,13 @@ export default function SelectUserPage() {
|
||||
const [loading, setLoading] = useState(false)
|
||||
const [hasMore, setHasMore] = useState(true)
|
||||
const [page, setPage] = useState(1)
|
||||
const [defaultLoaded, setDefaultLoaded] = useState(false)
|
||||
const initialLoadedRef = useRef(false)
|
||||
|
||||
// 获取初始选中的用户(从 sessionStorage 或后端默认配置)
|
||||
const loadInitialSelected = async () => {
|
||||
// 防止重复加载
|
||||
if (initialLoadedRef.current) return
|
||||
|
||||
const type = location.state?.type || 'approver'
|
||||
const storageKey = type === 'approver' ? 'selectedApprovers' : 'selectedCc'
|
||||
|
||||
@@ -53,6 +56,7 @@ export default function SelectUserPage() {
|
||||
const parsed = JSON.parse(storedData)
|
||||
if (parsed.length > 0) {
|
||||
setSelectedUsers(parsed)
|
||||
initialLoadedRef.current = true
|
||||
return
|
||||
}
|
||||
} catch (e) {
|
||||
@@ -72,6 +76,7 @@ export default function SelectUserPage() {
|
||||
// 获取失败时设置为空数组
|
||||
setSelectedUsers([])
|
||||
}
|
||||
initialLoadedRef.current = true
|
||||
}
|
||||
|
||||
// 加载用户列表
|
||||
|
||||
Reference in New Issue
Block a user