import React, { useState, useEffect } from 'react'; import { Table, Button, Modal, Form, Input, message } from 'antd'; import { PlusOutlined, EditOutlined, DeleteOutlined, EyeOutlined } from '@ant-design/icons'; import { customerService } from '../services/customer.service'; import type { Customer } from '../services/customer.service'; const CustomerManagement: React.FC = () => { const [customers, setCustomers] = useState([]); const [loading, setLoading] = useState(false); const [modalVisible, setModalVisible] = useState(false); const [modalType, setModalType] = useState<'create' | 'edit'>('create'); const [currentCustomer, setCurrentCustomer] = useState(null); const [form] = Form.useForm(); const fetchCustomers = async () => { setLoading(true); try { const data = await customerService.getCustomers(); setCustomers(data); } catch (error) { message.error('获取客户列表失败'); } finally { setLoading(false); } }; useEffect(() => { fetchCustomers(); }, []); const handleCreate = () => { setModalType('create'); setCurrentCustomer(null); form.resetFields(); setModalVisible(true); }; const handleEdit = (customer: Customer) => { setModalType('edit'); setCurrentCustomer(customer); form.setFieldsValue(customer); setModalVisible(true); }; const handleDelete = async (id: string) => { try { await customerService.deleteCustomer(id); message.success('删除成功'); fetchCustomers(); } catch (error) { message.error('删除失败'); } }; const handleSubmit = async () => { try { const values = await form.validateFields(); if (modalType === 'create') { await customerService.createCustomer(values); message.success('创建成功'); } else if (modalType === 'edit' && currentCustomer) { await customerService.updateCustomer(currentCustomer.id, values); message.success('更新成功'); } setModalVisible(false); fetchCustomers(); } catch (error) { message.error('操作失败'); } }; const columns = [ { title: '客户名称', dataIndex: 'name', key: 'name', }, { title: '联系人', dataIndex: 'contact_person', key: 'contact_person', }, { title: '电话', dataIndex: 'phone', key: 'phone', }, { title: '邮箱', dataIndex: 'email', key: 'email', }, { title: '地址', dataIndex: 'address', key: 'address', ellipsis: true, }, { title: '创建时间', dataIndex: 'created_at', key: 'created_at', }, { title: '操作', key: 'action', render: (_: any, record: Customer) => (
), }, ]; return (

客户管理

setModalVisible(false)} >
); }; export default CustomerManagement;