|
|
@@ -0,0 +1,64 @@
|
|
|
+import { useState } from 'react';
|
|
|
+import { Member } from '../types/member';
|
|
|
+import { message } from 'antd';
|
|
|
+import { addMember, updateMember, deleteMember } from '../services/memberService';
|
|
|
+
|
|
|
+export const useMemberManagement = () => {
|
|
|
+ const [members, setMembers] = useState<Member[]>([]);
|
|
|
+ const [isModalVisible, setIsModalVisible] = useState(false);
|
|
|
+
|
|
|
+ const showModal = () => {
|
|
|
+ setIsModalVisible(true);
|
|
|
+ };
|
|
|
+
|
|
|
+ const handleOk = () => {
|
|
|
+ setIsModalVisible(false);
|
|
|
+ };
|
|
|
+
|
|
|
+ const handleCancel = () => {
|
|
|
+ setIsModalVisible(false);
|
|
|
+ };
|
|
|
+
|
|
|
+ const handleAddMember = async (member: Member) => {
|
|
|
+ try {
|
|
|
+ const newMember = await addMember(member);
|
|
|
+ setMembers([...members, newMember]);
|
|
|
+ message.success('会友添加成功');
|
|
|
+ } catch (error) {
|
|
|
+ message.error('添加会友失败');
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ const handleEditMember = async (updatedMember: Member) => {
|
|
|
+ try {
|
|
|
+ await updateMember(updatedMember);
|
|
|
+ setMembers(members.map(member =>
|
|
|
+ member.id === updatedMember.id ? updatedMember : member
|
|
|
+ ));
|
|
|
+ message.success('会友信息更新成功');
|
|
|
+ } catch (error) {
|
|
|
+ message.error('更新会友信息失败');
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ const handleDeleteMember = async (memberId: string) => {
|
|
|
+ try {
|
|
|
+ await deleteMember(memberId);
|
|
|
+ setMembers(members.filter(member => member.id !== memberId));
|
|
|
+ message.success('会友删除成功');
|
|
|
+ } catch (error) {
|
|
|
+ message.error('删除会友失败');
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ return {
|
|
|
+ members,
|
|
|
+ isModalVisible,
|
|
|
+ showModal,
|
|
|
+ handleOk,
|
|
|
+ handleCancel,
|
|
|
+ addMember: handleAddMember,
|
|
|
+ editMember: handleEditMember,
|
|
|
+ deleteMember: handleDeleteMember,
|
|
|
+ };
|
|
|
+};
|