"use client" import Link from "next/link" import { useParams, useRouter } from "next/navigation" import { useFamily } from "@/context/family-context" import { SiteHeader } from "@/components/site-header" import { MemberForm } from "@/components/members/member-form" import { Button } from "@/components/ui/button" import { ArrowLeft, Edit, Trash, Share2, Printer, CircleUser, CircleUserRound, Images, BookOpen, UserPlus } from "lucide-react" import { useState, useEffect } from "react" import type { FamilyMember } from "@/types/family" import { db } from "@/lib/db" import { PhotoGallery } from "@/components/members/photo-gallery" import { StoryManager } from "@/components/members/story-manager" import { useDialog } from "@/components/ui/alert-dialog-custom" export default function MemberProfilePage() { const { id } = useParams() const { getMember, updateMember, deleteMember, treeData } = useFamily() const { showConfirm } = useDialog() const router = useRouter() const [isEditing, setIsEditing] = useState(false) const [avatarBlobUrl, setAvatarBlobUrl] = useState(undefined) const member = getMember(id as string) const allMembers = Object.values(treeData.members) // Load avatar blob if exists useEffect(() => { if (member?.avatarImageId) { db.images.get(member.avatarImageId).then((image) => { if (image) { const url = URL.createObjectURL(image.blob) setAvatarBlobUrl(url) return () => URL.revokeObjectURL(url) } }) } else { setAvatarBlobUrl(undefined) } }, [member?.avatarImageId]) if (!member) { return (

Member not found

) } const handleSave = (updatedMember: FamilyMember) => { updateMember(updatedMember.id, updatedMember) setIsEditing(false) } const handleDelete = async () => { const confirmed = await showConfirm("确定要删除这位成员吗?这将同时删除其关联关系。", "删除成员", "destructive") if (confirmed) { deleteMember(member.id) router.push("/members") } } const handleQuickAddChild = () => { // 跳转到新增成员页面,并预填父母信息 const params = new URLSearchParams() if (member.gender === 'MALE') { params.set('fatherId', member.id) } else { params.set('motherId', member.id) } params.set('generation', (member.generation + 1).toString()) router.push(`/members/new?${params.toString()}`) } const handleQuickAddSpouse = () => { // 跳转到新增成员页面,并预填配偶信息 const params = new URLSearchParams() params.set('spouseId', member.id) params.set('generation', member.generation.toString()) // 配偶性别与当前成员相反 params.set('gender', member.gender === 'MALE' ? 'FEMALE' : 'MALE') router.push(`/members/new?${params.toString()}`) } const handleQuickAddFather = () => { // 跳转到新增成员页面,并预填父亲信息 const params = new URLSearchParams() params.set('childId', member.id) params.set('generation', (member.generation - 1).toString()) params.set('gender', 'MALE') // 如果已有母亲,将母亲设置为配偶 if (member.motherId) { params.set('spouseId', member.motherId) } router.push(`/members/new?${params.toString()}`) } const handleQuickAddMother = () => { // 跳转到新增成员页面,并预填母亲信息 const params = new URLSearchParams() params.set('childId', member.id) params.set('generation', (member.generation - 1).toString()) params.set('gender', 'FEMALE') // 如果已有父亲,将父亲设置为配偶 if (member.fatherId) { params.set('spouseId', member.fatherId) } router.push(`/members/new?${params.toString()}`) } if (isEditing) { return (

编辑成员: {member.fullName}

setIsEditing(false)} />
) } return (
{/* Header Section */}
{avatarBlobUrl ? ( {member.fullName} ) : ( member.gender === 'FEMALE' ? ( ) : ( ) )}

{member.fullName}

{member.generation}世
{member.courtesyName && (

字:{member.courtesyName}

)} {member.artName && (

号:{member.artName}

)} {member.ancestralHome &&

籍贯:{member.ancestralHome}

}
{member.tags && member.tags.length > 0 && (
{member.tags.map((tag) => ( {tag} ))}
)}
{!member.fatherId && ( )} {!member.motherId && ( )}
{/* Content Grid */}
{/* Main Biography */}

生平事迹

{member.bio ? (

{member.bio}

) : (

暂无生平记录...

)}
{/* Photo Gallery */} {member.photoIds && member.photoIds.length > 0 && (

照片墙

updateMember(member.id, { photoIds })} readonly={false} />
)} {/* Family Stories */} {member.stories && member.stories.length > 0 && (

家族故事

updateMember(member.id, { stories })} readonly={false} />
)}

家族关系

父亲 (Father)

{member.fatherId ? ( {getMember(member.fatherId)?.fullName || member.fatherId} ) : member.spouseFatherName ? ( {member.spouseFatherName} ) : ( - )}

母亲 (Mother)

{member.motherId ? ( {getMember(member.motherId)?.fullName || member.motherId} ) : member.spouseMotherName ? ( {member.spouseMotherName} ) : ( - )}

配偶 (Spouse)

{member.spouseIds?.length > 0 ? ( member.spouseIds.map((spouseId) => ( {getMember(spouseId)?.fullName || spouseId} )) ) : ( 无记录 )}

子女 (Children)

{member.childrenIds?.length > 0 ? ( member.childrenIds.map((childId) => ( {getMember(childId)?.fullName || childId} )) ) : ( 无记录 )}
{/* Sidebar Info */}

详细信息

出生日期
{member.birthDate || "-"}
{member.deathDate && ( <>
逝世日期
{member.deathDate}
谥号
{member.posthumousName || "-"}
墓地
{member.burialPlace || "-"}
)} {member.generationName && (
字辈
{member.generationName}
)}
{/* 联系方式 */} {(member.phone || member.telephone || member.email || member.address) && (

联系方式

{member.phone && ( )} {member.telephone && ( )} {member.email && ( )} {member.address && (
现居地址
{member.address}
)}
)}
) }