diff --git a/frontend/src/pages/Organizations.tsx b/frontend/src/pages/Organizations.tsx index c2e2cd6..b4fac9e 100644 --- a/frontend/src/pages/Organizations.tsx +++ b/frontend/src/pages/Organizations.tsx @@ -28,6 +28,8 @@ interface OrganizationMember { contribution: number; status: string; joined_at?: string; + left_at?: string; + notes?: string; } interface Character { @@ -45,8 +47,11 @@ export default function Organizations() { const [characters, setCharacters] = useState([]); const [loading, setLoading] = useState(false); const [isAddMemberModalOpen, setIsAddMemberModalOpen] = useState(false); + const [isEditMemberModalOpen, setIsEditMemberModalOpen] = useState(false); const [isEditOrgModalOpen, setIsEditOrgModalOpen] = useState(false); + const [editingMember, setEditingMember] = useState(null); const [form] = Form.useForm(); + const [editMemberForm] = Form.useForm(); const [editOrgForm] = Form.useForm(); const [isMobile, setIsMobile] = useState(window.innerWidth <= 768); @@ -147,6 +152,38 @@ export default function Organizations() { }); }; + const handleEditMember = (member: OrganizationMember) => { + setEditingMember(member); + editMemberForm.setFieldsValue({ + position: member.position, + rank: member.rank, + loyalty: member.loyalty, + contribution: member.contribution, + status: member.status, + notes: member.notes, + joined_at: member.joined_at + }); + setIsEditMemberModalOpen(true); + }; + + const handleUpdateMember = async (values: Record) => { + if (!editingMember) return; + + try { + await axios.put(`/api/organizations/members/${editingMember.id}`, values); + message.success('成员信息更新成功'); + setIsEditMemberModalOpen(false); + editMemberForm.resetFields(); + setEditingMember(null); + if (selectedOrg) { + loadMembers(selectedOrg.id); + } + } catch (error) { + message.error('更新失败'); + console.error(error); + } + }; + const getStatusColor = (status: string) => { const colors: Record = { active: 'green', @@ -226,15 +263,14 @@ export default function Organizations() { key: 'action', render: (_: unknown, record: OrganizationMember) => ( - {!isMobile && ( - - )} + + + + + + + {/* 编辑组织模态框 */}