|
|
@@ -1,12 +1,16 @@
|
|
|
import React, { useState, useEffect } from 'react';
|
|
|
-import { Table, Button, message } from 'antd';
|
|
|
+import { Table, Button, message, Modal, Space } from 'antd';
|
|
|
import { deviceApi } from '../api/deviceApi';
|
|
|
import ExcelImportExport from './ExcelImportExport';
|
|
|
import MemberForm from './MemberForm';
|
|
|
+import MemberEditForm from './MemberEditForm';
|
|
|
|
|
|
const MemberList = () => {
|
|
|
const [members, setMembers] = useState([]);
|
|
|
const [loading, setLoading] = useState(false);
|
|
|
+ const [isAddModalVisible, setIsAddModalVisible] = useState(false);
|
|
|
+ const [isEditModalVisible, setIsEditModalVisible] = useState(false);
|
|
|
+ const [editingMember, setEditingMember] = useState(null);
|
|
|
|
|
|
useEffect(() => {
|
|
|
fetchMembers();
|
|
|
@@ -25,31 +29,84 @@ const MemberList = () => {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
- const handleImport = (data) => {
|
|
|
- setMembers(data);
|
|
|
- message.success('数据导入成功');
|
|
|
+ const handleAdd = () => {
|
|
|
+ setIsAddModalVisible(true);
|
|
|
+ };
|
|
|
+
|
|
|
+ const handleEdit = (record) => {
|
|
|
+ setEditingMember(record);
|
|
|
+ setIsEditModalVisible(true);
|
|
|
+ };
|
|
|
+
|
|
|
+ const handleDelete = async (id) => {
|
|
|
+ try {
|
|
|
+ await deviceApi.deletePerson(id);
|
|
|
+ message.success('会友删除成功');
|
|
|
+ fetchMembers();
|
|
|
+ } catch (error) {
|
|
|
+ console.error('删除会友失败', error);
|
|
|
+ message.error('删除会友失败');
|
|
|
+ }
|
|
|
};
|
|
|
|
|
|
const handleMemberAdded = (newMember) => {
|
|
|
setMembers([...members, newMember]);
|
|
|
+ setIsAddModalVisible(false);
|
|
|
+ };
|
|
|
+
|
|
|
+ const handleMemberEdited = (editedMember) => {
|
|
|
+ setMembers(members.map(member =>
|
|
|
+ member.personId === editedMember.personId ? editedMember : member
|
|
|
+ ));
|
|
|
+ setIsEditModalVisible(false);
|
|
|
};
|
|
|
|
|
|
const columns = [
|
|
|
- // 列定义保持不变
|
|
|
- // ...
|
|
|
+ // ... 其他列保持不变
|
|
|
+ {
|
|
|
+ title: '操作',
|
|
|
+ key: 'action',
|
|
|
+ render: (_, record) => (
|
|
|
+ <Space size="middle">
|
|
|
+ <Button onClick={() => handleEdit(record)}>编辑</Button>
|
|
|
+ <Button onClick={() => handleDelete(record.personId)} danger>删除</Button>
|
|
|
+ </Space>
|
|
|
+ ),
|
|
|
+ },
|
|
|
];
|
|
|
|
|
|
return (
|
|
|
<div>
|
|
|
<h2>会友列表</h2>
|
|
|
- <ExcelImportExport members={members} onImport={handleImport} />
|
|
|
- <MemberForm onMemberAdded={handleMemberAdded} />
|
|
|
+ <Button onClick={handleAdd} type="primary" style={{ marginBottom: 16 }}>
|
|
|
+ 添加会友
|
|
|
+ </Button>
|
|
|
+ <ExcelImportExport members={members} onImport={fetchMembers} />
|
|
|
<Table
|
|
|
columns={columns}
|
|
|
dataSource={members}
|
|
|
rowKey="personId"
|
|
|
loading={loading}
|
|
|
/>
|
|
|
+ <Modal
|
|
|
+ title="添加会友"
|
|
|
+ visible={isAddModalVisible}
|
|
|
+ onCancel={() => setIsAddModalVisible(false)}
|
|
|
+ footer={null}
|
|
|
+ >
|
|
|
+ <MemberForm onMemberAdded={handleMemberAdded} />
|
|
|
+ </Modal>
|
|
|
+ <Modal
|
|
|
+ title="编辑会友"
|
|
|
+ visible={isEditModalVisible}
|
|
|
+ onCancel={() => setIsEditModalVisible(false)}
|
|
|
+ footer={null}
|
|
|
+ >
|
|
|
+ <MemberEditForm
|
|
|
+ member={editingMember}
|
|
|
+ onMemberEdited={handleMemberEdited}
|
|
|
+ />
|
|
|
+ </Modal>
|
|
|
</div>
|
|
|
);
|
|
|
};
|