0.0.8.5
This commit is contained in:
@@ -15,6 +15,7 @@ export default function NewMemberPage() {
|
||||
const { addMember, treeData, getMember } = useFamily()
|
||||
|
||||
const existingMembers = Object.values(treeData.members)
|
||||
const isFirstMember = existingMembers.length === 0
|
||||
|
||||
// 从URL参数获取预填信息
|
||||
const initialData = useMemo(() => {
|
||||
@@ -73,13 +74,23 @@ export default function NewMemberPage() {
|
||||
|
||||
const handleSave = async (newMember: FamilyMember) => {
|
||||
try {
|
||||
await addMember({
|
||||
// 如果是第一个成员,自动设置为始祖
|
||||
const memberData = isFirstMember ? {
|
||||
...newMember,
|
||||
generation: 1,
|
||||
isFounder: true,
|
||||
createdAt: new Date().toISOString(),
|
||||
updatedAt: new Date().toISOString(),
|
||||
} : {
|
||||
...newMember,
|
||||
createdAt: new Date().toISOString(),
|
||||
updatedAt: new Date().toISOString(),
|
||||
})
|
||||
// 跳转到成员列表页
|
||||
router.push('/members')
|
||||
}
|
||||
|
||||
await addMember(memberData)
|
||||
// 跳转到成员列表页,保留treeId参数
|
||||
const params = new URLSearchParams(window.location.search)
|
||||
router.push(`/members?${params.toString()}`)
|
||||
} catch (error) {
|
||||
console.error('添加成员失败:', error)
|
||||
alert('添加成员失败: ' + (error as Error).message)
|
||||
@@ -94,12 +105,44 @@ export default function NewMemberPage() {
|
||||
<Button variant="ghost" onClick={() => router.back()} className="mb-4">
|
||||
<ArrowLeft className="mr-2 h-4 w-4" /> 返回
|
||||
</Button>
|
||||
<h1 className="text-3xl font-serif font-bold mb-2">新增家族成员</h1>
|
||||
|
||||
{isFirstMember && (
|
||||
<div className="mb-6 p-6 bg-gradient-to-br from-amber-50 via-orange-50 to-amber-50 border-2 border-amber-400 rounded-xl shadow-md">
|
||||
<div className="flex items-start gap-4">
|
||||
<div className="flex-shrink-0 w-14 h-14 bg-gradient-to-br from-amber-200 to-orange-200 rounded-full flex items-center justify-center shadow-sm">
|
||||
<span className="text-3xl">👑</span>
|
||||
</div>
|
||||
<div className="flex-1">
|
||||
<h2 className="text-2xl font-serif font-bold text-amber-900 mb-3">
|
||||
立家族之根基
|
||||
</h2>
|
||||
<p className="text-base text-amber-800 leading-relaxed font-serif">
|
||||
此为家族树之<span className="font-bold text-amber-900">始祖</span>,
|
||||
<span className="font-bold text-amber-900">第一世</span>传人。
|
||||
<br />
|
||||
血脉由此而始,世系因此而传。
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
<h1 className="text-3xl font-serif font-bold mb-2">
|
||||
{isFirstMember ? '添加家族始祖' : '新增家族成员'}
|
||||
</h1>
|
||||
<p className="text-muted-foreground">
|
||||
填写成员信息,完善家族树
|
||||
{isFirstMember
|
||||
? '请认真填写始祖信息,这将是家族历史的起点'
|
||||
: '填写成员信息,完善家族树'}
|
||||
</p>
|
||||
</div>
|
||||
<MemberForm initialData={initialData} existingMembers={existingMembers} onSubmit={handleSave} onCancel={() => router.back()} />
|
||||
<MemberForm
|
||||
initialData={initialData}
|
||||
existingMembers={existingMembers}
|
||||
onSubmit={handleSave}
|
||||
onCancel={() => router.back()}
|
||||
isFounder={isFirstMember}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user