MemberList.jsx 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import React, { useState, useEffect, useCallback, useRef } from 'react';
  2. import { Table, Button, message, Modal, Space, Image, Input, Tag } from 'antd';
  3. import { PlusOutlined, SearchOutlined } from '@ant-design/icons';
  4. import Highlighter from 'react-highlight-words';
  5. import { deviceApi } from '../api/deviceApi';
  6. import ExcelImportExport from './ExcelImportExport';
  7. import MemberForm from './MemberForm';
  8. const MemberList = () => {
  9. // ... 保留其他状态和函数 ...
  10. const fetchMembers = useCallback(async () => {
  11. setLoading(true);
  12. try {
  13. const data = await deviceApi.getAllPersons();
  14. console.log('获取到的会友列表数据:', data);
  15. // 转换数据格式以匹配组件期望的结构
  16. const formattedData = data.map(member => ({
  17. personId: member.personId,
  18. name: member.name,
  19. gender: member.gender === 1 ? '男' : '女',
  20. idCard: member.idCard,
  21. // 其他字段根据需要添加
  22. }));
  23. setMembers(formattedData);
  24. message.success('会友列表获取成功');
  25. } catch (error) {
  26. console.error('获取会友列表失败', error);
  27. message.error(`获取会友列表失败: ${error.message}`);
  28. } finally {
  29. setLoading(false);
  30. }
  31. }, []);
  32. // ... 保留其他函数 ...
  33. const handleSubmit = async (values) => {
  34. try {
  35. if (editingMember) {
  36. console.log('更新会员信息:', values);
  37. await deviceApi.updatePerson(editingMember.personId, values);
  38. message.success('会友信息更新成功');
  39. } else {
  40. console.log('添加新会员:', values);
  41. await deviceApi.addPerson(values);
  42. message.success('会友添加成功');
  43. }
  44. setIsModalVisible(false);
  45. fetchMembers();
  46. } catch (error) {
  47. console.error('操作失败', error);
  48. message.error(`操作失败: ${error.message}`);
  49. }
  50. };
  51. const columns = [
  52. { title: 'ID', dataIndex: 'personId', key: 'personId' },
  53. {
  54. title: '姓名',
  55. dataIndex: 'name',
  56. key: 'name',
  57. ...getColumnSearchProps('name'),
  58. },
  59. { title: '性别', dataIndex: 'gender', key: 'gender' },
  60. { title: '身份证号', dataIndex: 'idCard', key: 'idCard' },
  61. // ... 其他列保持不变 ...
  62. ];
  63. // ... 保留其他渲染逻辑 ...
  64. return (
  65. // ... 保持组件结构不变 ...
  66. );
  67. };
  68. export default MemberList;