import { useEffect, useState } from 'react' import { Modal, Form, Input, InputNumber, message, Spin } from 'antd' import { itemApi } from '../services/api' const MOBILE_BREAKPOINT = 768 function ItemForm({ visible, item, onSuccess, onCancel }) { const [form] = Form.useForm() const [submitting, setSubmitting] = useState(false) const [loading, setLoading] = useState(false) const [isMobile, setIsMobile] = useState(window.innerWidth < MOBILE_BREAKPOINT) const isEdit = !!item useEffect(() => { const handleResize = () => { setIsMobile(window.innerWidth < MOBILE_BREAKPOINT) } window.addEventListener('resize', handleResize) return () => window.removeEventListener('resize', handleResize) }, []) useEffect(() => { if (visible) { setLoading(true) if (item) { form.setFieldsValue({ name: item.name, unit_price: item.unit_price }) } else { form.resetFields() } setLoading(false) } }, [visible, item, form]) const handleOk = async () => { try { const values = await form.validateFields() setSubmitting(true) if (isEdit) { await itemApi.update({ id: item.id, ...values }) message.success('更新成功') } else { await itemApi.create(values) message.success('创建成功') } onSuccess() } catch (error) { if (error.errorFields) { return } message.error(error.message || '操作失败') } finally { setSubmitting(false) } } const validateName = (_, value) => { if (!value || !value.trim()) { return Promise.reject(new Error('请输入物品名称')) } return Promise.resolve() } const validateUnitPrice = (_, value) => { if (value === null || value === undefined || value === '') { return Promise.reject(new Error('请输入单价')) } if (typeof value !== 'number' || value <= 0) { return Promise.reject(new Error('单价必须是正数')) } return Promise.resolve() } return (
) } export default ItemForm