This commit is contained in:
freedakgmail
2025-11-30 20:00:18 +08:00
parent 86e889cc2a
commit 0326894b09
6 changed files with 316 additions and 52 deletions
+27 -5
View File
@@ -80,6 +80,11 @@ const MemberCard = memo(function MemberCard({
member.spouseIds && member.spouseIds.length > 0 &&
!isFounder
// 判断是否是孤立成员(没有父母、没有配偶、不是始祖)
const isOrphan = !member.fatherId && !member.motherId &&
(!member.spouseIds || member.spouseIds.length === 0) &&
!isFounder
// 获取配偶信息
const spouse = isSpouse && member.spouseIds?.[0]
? allMembers.find(m => m.id === member.spouseIds[0])
@@ -94,12 +99,14 @@ const MemberCard = memo(function MemberCard({
const isDead = !!member.deathDate
// 根据在世/已故状态设置卡片样式
// 优先级:始祖 > 已故 > 在世
// 优先级:始祖 > 孤立 > 已故 > 在世
const cardStyle = isFounder
? '!border-2 !border-amber-400 !bg-amber-50/30 dark:!bg-amber-900/20 shadow-md' // 始祖:金色边框(优先级最高)
: isDead
? '!border-2 !border-gray-400 dark:!border-gray-600 !bg-gray-50/50 dark:!bg-gray-900/30' // 已故:灰色深边框
: '!border-2 !border-amber-300/70 !bg-card dark:!border-amber-600/50' // 在世:浅金色边框
: isOrphan
? '!border-2 !border-orange-400 !bg-orange-50/30 dark:!bg-orange-900/20' // 孤立:橙色边框提醒
: isDead
? '!border-2 !border-gray-400 dark:!border-gray-600 !bg-gray-50/50 dark:!bg-gray-900/30' // 已故:灰色深边框
: '!border-2 !border-amber-300/70 !bg-card dark:!border-amber-600/50' // 在世:浅金色边框
return (
<div className="relative group">
@@ -173,6 +180,11 @@ const MemberCard = memo(function MemberCard({
<p className="text-xs text-amber-700 font-semibold mt-0.5 truncate">
</p>
) : isOrphan ? (
<p className="text-xs text-orange-600 font-medium mt-0.5 truncate flex items-center gap-1">
<span></span>
<span> - </span>
</p>
) : isSpouse && spouseName ? (
<p className="text-xs text-purple-700 mt-0.5 truncate">
{spouseName}
@@ -369,13 +381,23 @@ export default function MembersPage() {
.sort((a, b) => a[0] - b[0])
.map(([generation, members]) => {
// 区分家族成员和配偶
// 配偶定义:没有父母但有配偶的成员(嫁入/娶入的成员)
// 其他所有成员都应该显示,包括孤立成员
const familyMembers = members.filter(m => {
const isFounder = m.isFounder === true
const hasFamilyParents = m.fatherId || m.motherId
const hasSpouse = m.spouseIds && m.spouseIds.length > 0
// 始祖或有父母的成员:显示
if (hasFamilyParents || isFounder) return true
if (generation === 1 && (!m.spouseIds || m.spouseIds.length === 0)) return true
// 第一代无配偶成员:显示
if (generation === 1 && !hasSpouse) return true
// 孤立成员(无父母、无配偶、非始祖):也要显示,方便用户关联
if (!hasFamilyParents && !hasSpouse && !isFounder) return true
// 配偶(无父母但有配偶):不在这里显示,会跟随主成员显示
return false
})