This commit is contained in:
freedakgmail
2025-12-09 18:52:00 +08:00
parent debcce71bf
commit 09809c0e49
156 changed files with 1150 additions and 1330 deletions
+29 -5
View File
@@ -11,12 +11,14 @@ import { useFamily } from "@/context/family-context"
import { useToast } from "@/components/ui/use-toast"
import type { FamilyMember } from "@/types/family"
export type RelationType = "child" | "spouse" | "father" | "mother"
interface AddRelationDialogProps {
open: boolean
onOpenChange: (open: boolean) => void
member: FamilyMember
relationType: "child" | "spouse"
onCreateNew: (prefillName: string, relationType: "child" | "spouse") => void
relationType: RelationType
onCreateNew: (prefillName: string, relationType: RelationType) => void
}
interface CandidateMeta {
@@ -73,11 +75,21 @@ export function AddRelationDialog({
// 非男女成员,允许填补任一缺失的父母
if (candidate.fatherId && candidate.motherId) return false
}
} else {
} else if (relationType === "spouse") {
if (candidate.generation !== member.generation) return false
if (member.spouseIds?.includes(candidate.id)) return false
if (candidate.spouseIds?.includes(member.id)) return false
if (candidate.gender === member.gender) return false
} else if (relationType === "father") {
// 父亲必须是男性,世代比当前成员小1
if (candidate.gender !== "MALE") return false
if (candidate.generation !== (member.generation - 1)) return false
if (member.fatherId === candidate.id) return false
} else if (relationType === "mother") {
// 母亲必须是女性,世代比当前成员小1
if (candidate.gender !== "FEMALE") return false
if (candidate.generation !== (member.generation - 1)) return false
if (member.motherId === candidate.id) return false
}
return true
@@ -113,7 +125,7 @@ export function AddRelationDialog({
title: "关联成功",
description: `已将 ${target.fullName} 标记为 ${member.fullName} 的子女。`
})
} else {
} else if (relationType === "spouse") {
const existing = new Set(member.spouseIds || [])
existing.add(target.id)
await updateMember(member.id, { spouseIds: Array.from(existing) })
@@ -121,6 +133,18 @@ export function AddRelationDialog({
title: "关联成功",
description: `${member.fullName}${target.fullName} 已建立配偶关系。`
})
} else if (relationType === "father") {
await updateMember(member.id, { fatherId: target.id })
toast({
title: "关联成功",
description: `已将 ${target.fullName} 设为 ${member.fullName} 的父亲。`
})
} else if (relationType === "mother") {
await updateMember(member.id, { motherId: target.id })
toast({
title: "关联成功",
description: `已将 ${target.fullName} 设为 ${member.fullName} 的母亲。`
})
}
onOpenChange(false)
} catch (error) {
@@ -144,7 +168,7 @@ export function AddRelationDialog({
<Dialog open={open} onOpenChange={onOpenChange}>
<DialogContent className="sm:max-w-lg">
<DialogHeader>
<DialogTitle>{relationType === "child" ? "子女" : "配偶"}</DialogTitle>
<DialogTitle>{relationType === "child" ? "子女" : relationType === "spouse" ? "配偶" : relationType === "father" ? "父亲" : "母亲"}</DialogTitle>
<DialogDescription>
</DialogDescription>