This commit is contained in:
freedakgmail
2025-11-30 09:16:43 +08:00
parent b436ae0680
commit fd9c064749
227 changed files with 1251 additions and 912 deletions
+1 -1
View File
@@ -287,7 +287,7 @@ export function MemberForm({ initialData, existingMembers = [], onSubmit, onCanc
<div className="flex justify-center mb-4">
<ImageUpload
value={formData.avatarUrl}
onChange={(imageUrl) => handleChange("avatarUrl", imageUrl)}
onChange={(imageUrl) => handleChange("avatarUrl", imageUrl || null)}
/>
</div>
+15 -8
View File
@@ -26,15 +26,16 @@ interface MemberVersionHistoryProps {
memberId: string
treeId: string
onVersionSelect?: (version: MemberHistory) => void
lastUpdated?: number // 用于触发刷新的时间戳
}
export function MemberVersionHistory({ memberId, treeId, onVersionSelect }: MemberVersionHistoryProps) {
export function MemberVersionHistory({ memberId, treeId, onVersionSelect, lastUpdated }: MemberVersionHistoryProps) {
const [history, setHistory] = useState<MemberHistory[]>([])
const [loading, setLoading] = useState(true)
useEffect(() => {
loadHistory()
}, [memberId, treeId])
}, [memberId, treeId, lastUpdated])
const loadHistory = async () => {
try {
@@ -80,12 +81,18 @@ export function MemberVersionHistory({ memberId, treeId, onVersionSelect }: Memb
motherId: '母亲', fatherId: '父亲', isFounder: '始祖',
isLunarDate: '农历日期', burialPlace: '安葬地', tags: '标签',
spouseFatherName: '岳父/公公', spouseMotherName: '岳母/婆婆',
avatarUrl: '头像', stories: '家族故事',
}
const formatValue = (value: any) => {
const formatValue = (value: any, field?: string) => {
if (value === null || value === undefined) return '-'
if (typeof value === 'boolean') return value ? '是' : '否'
if (Array.isArray(value)) return value.length > 0 ? value.join(', ') : '-'
if (Array.isArray(value)) {
if (field === 'photoIds') return `${value.length} 张照片`
if (field === 'stories') return `${value.length} 个故事`
return value.length > 0 ? value.join(', ') : '-'
}
if (field === 'avatarUrl') return value ? '已上传' : '无'
return String(value)
}
@@ -125,9 +132,9 @@ export function MemberVersionHistory({ memberId, treeId, onVersionSelect }: Memb
<span className="text-muted-foreground min-w-[60px]">{fieldLabels[field]}:</span>
<div className="flex-1">
<div className="flex items-center gap-2">
<span className="text-red-600 line-through">{formatValue(change.old)}</span>
<span className="text-red-600 line-through">{formatValue(change.old, field)}</span>
<span className="text-muted-foreground"></span>
<span className="text-green-600 font-medium">{formatValue(change.new)}</span>
<span className="text-green-600 font-medium">{formatValue(change.new, field)}</span>
</div>
</div>
</div>
@@ -146,9 +153,9 @@ export function MemberVersionHistory({ memberId, treeId, onVersionSelect }: Memb
<span className="text-muted-foreground min-w-[60px]">{fieldLabels[field]}:</span>
<div className="flex-1">
<div className="flex items-center gap-2 flex-wrap">
<span className="text-red-600 line-through">{formatValue(change.old)}</span>
<span className="text-red-600 line-through">{formatValue(change.old, field)}</span>
<span className="text-muted-foreground"></span>
<span className="text-green-600 font-medium">{formatValue(change.new)}</span>
<span className="text-green-600 font-medium">{formatValue(change.new, field)}</span>
</div>
</div>
</div>