|
|
@@ -1,10 +1,12 @@
|
|
|
import React, { useState } from 'react';
|
|
|
-import { Button, Spin } from 'antd';
|
|
|
+import { Button, Spin, Input } from 'antd';
|
|
|
import MemberList from '../components/member/MemberList';
|
|
|
import MemberModal from '../components/member/MemberModal';
|
|
|
import { useMemberManagement } from '../hooks/useMemberManagement';
|
|
|
import { Member } from '../types/member';
|
|
|
|
|
|
+const { Search } = Input;
|
|
|
+
|
|
|
const MemberManagement: React.FC = () => {
|
|
|
const {
|
|
|
members,
|
|
|
@@ -16,6 +18,7 @@ const MemberManagement: React.FC = () => {
|
|
|
|
|
|
const [isModalVisible, setIsModalVisible] = useState(false);
|
|
|
const [editingMember, setEditingMember] = useState<Member | null>(null);
|
|
|
+ const [searchTerm, setSearchTerm] = useState('');
|
|
|
|
|
|
const showModal = () => {
|
|
|
setEditingMember(null);
|
|
|
@@ -41,22 +44,37 @@ const MemberManagement: React.FC = () => {
|
|
|
setEditingMember(null);
|
|
|
};
|
|
|
|
|
|
+ const handleSearch = (value: string) => {
|
|
|
+ setSearchTerm(value);
|
|
|
+ };
|
|
|
+
|
|
|
+ const filteredMembers = members.filter(member =>
|
|
|
+ member.name.toLowerCase().includes(searchTerm.toLowerCase()) ||
|
|
|
+ member.phone.includes(searchTerm) ||
|
|
|
+ member.idNumber.includes(searchTerm)
|
|
|
+ );
|
|
|
+
|
|
|
return (
|
|
|
<div>
|
|
|
<h1>会友管理</h1>
|
|
|
- <Button type="primary" onClick={showModal} style={{ marginBottom: 16 }}>
|
|
|
- 添加会友
|
|
|
- </Button>
|
|
|
+ <div style={{ marginBottom: 16, display: 'flex', justifyContent: 'space-between' }}>
|
|
|
+ <Button type="primary" onClick={showModal}>
|
|
|
+ 添加会友
|
|
|
+ </Button>
|
|
|
+ <Search
|
|
|
+ placeholder="搜索姓名、手机号或身份证号"
|
|
|
+ onSearch={handleSearch}
|
|
|
+ style={{ width: 300 }}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
{loading ? (
|
|
|
<Spin size="large" />
|
|
|
- ) : members.length > 0 ? (
|
|
|
+ ) : (
|
|
|
<MemberList
|
|
|
- members={members}
|
|
|
+ members={filteredMembers}
|
|
|
onEdit={handleEdit}
|
|
|
onDelete={deleteMember}
|
|
|
/>
|
|
|
- ) : (
|
|
|
- <p>暂无会友数据</p>
|
|
|
)}
|
|
|
<MemberModal
|
|
|
visible={isModalVisible}
|