MemberList.jsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import React, { useState, useEffect } from 'react';
  2. import { Table, Button, message } from 'antd';
  3. import { deviceApi } from '../api/deviceApi';
  4. import ExcelImportExport from './ExcelImportExport';
  5. import MemberForm from './MemberForm';
  6. const MemberList = () => {
  7. const [members, setMembers] = useState([]);
  8. const [loading, setLoading] = useState(false);
  9. useEffect(() => {
  10. fetchMembers();
  11. }, []);
  12. const fetchMembers = async () => {
  13. setLoading(true);
  14. try {
  15. const data = await deviceApi.getAllPersons();
  16. setMembers(data);
  17. } catch (error) {
  18. console.error('获取会友列表失败', error);
  19. message.error('获取会友列表失败');
  20. } finally {
  21. setLoading(false);
  22. }
  23. };
  24. const handleImport = (data) => {
  25. setMembers(data);
  26. message.success('数据导入成功');
  27. };
  28. const handleMemberAdded = (newMember) => {
  29. setMembers([...members, newMember]);
  30. };
  31. const columns = [
  32. // 列定义保持不变
  33. // ...
  34. ];
  35. return (
  36. <div>
  37. <h2>会友列表</h2>
  38. <ExcelImportExport members={members} onImport={handleImport} />
  39. <MemberForm onMemberAdded={handleMemberAdded} />
  40. <Table
  41. columns={columns}
  42. dataSource={members}
  43. rowKey="personId"
  44. loading={loading}
  45. />
  46. </div>
  47. );
  48. };
  49. export default MemberList;