import { UploadOutlined } from "@ant-design/icons"; import { Button, Form, Image, Input, Modal, Select, Upload } from "antd"; import TextArea from "antd/es/input/TextArea"; import { useEffect, useState } from "react"; import axiosInstance, { baseURL } from "../../api/axios"; import { deviceStatusOptions } from "../../config/DeviceStatusConfig"; export default function DeviceDetailModal({ visiable, device, onclose, onSuccess, }) { const [form] = Form.useForm(); const [imageFile, setImageFile] = useState(null); const [initialValues, setInitialValues] = useState({}); const [fileList, setFileList] = useState(); useEffect(() => { if (device) { const values = { name: device.name, location: device.location, usageRequirement: device.usageRequirement, status: device.status, }; form.setFieldsValue(values); setInitialValues(values); } }, [device]); const handleEdit = async () => { const values = await form.validateFields(); const updates = {}; Object.keys(initialValues).forEach((key) => { if (values[key] !== initialValues[key]) { updates[key] = values[key]; } }); if (Object.keys(updates).length > 0) { await axiosInstance.put(`/device/${device.deviceId}`, updates); } if (imageFile) { const formData = new FormData(); formData.append("image", imageFile); await axiosInstance.post(`device/${device.deviceId}/image`, formData, { headers: { "Content-Type": "multipart/form-data", }, }); } onSuccess(); setFileList([]); form.resetFields(); onclose(); }; return ( { setFileList([]); form.resetFields(); onclose(); }} onOk={handleEdit} okText="保存" >