import { UploadOutlined } from "@ant-design/icons"; import { Button, Form, Image, Input, message, Modal, Select, Upload, } from "antd"; import TextArea from "antd/es/input/TextArea"; import { useEffect, useState } from "react"; import { useSelector } from "react-redux"; import axiosInstance, { baseURL } from "../../api/axios"; import { deviceStatusOptions } from "../../config/DeviceStatusConfig"; import { selectUserId } from "../../features/auth/authSlice"; export default function DeviceDetailModal({ visiable, mode = "create", device, onclose, onSuccess, }) { const [form] = Form.useForm(); const [imageFile, setImageFile] = useState(null); const [initialValues, setInitialValues] = useState({}); const [fileList, setFileList] = useState(); const userId = useSelector(selectUserId); useEffect(() => { if (visiable) { setFileList([]); if (mode === "edit") { const values = { name: device.name, location: device.location, usageRequirement: device.usageRequirement, status: device.status, }; form.setFieldsValue(values); setInitialValues(values); } else { const values = { name: undefined, location: undefined, usageRequirement: undefined, status: undefined, }; form.setFieldsValue(values); setInitialValues(values); } } }, [visiable, mode, device, form]); const handleOk = async () => { const values = await form.validateFields(); const data = {}; Object.keys(initialValues).forEach((key) => { if (values[key] !== initialValues[key]) { data[key] = values[key]; } }); if (Object.keys(data).length > 0) { if (mode === "edit") { await axiosInstance.put(`/device/${device.deviceId}`, data); message.success("编辑成功"); } else { device = await axiosInstance.post(`/device/${userId}`, data); message.success("添加成功"); } } if (imageFile) { const formData = new FormData(); formData.append("image", imageFile); await axiosInstance.post(`device/${device.id}/image`, formData, { headers: { "Content-Type": "multipart/form-data", }, }); } onSuccess(); onclose(); }; return ( { onclose(); }} onOk={handleOk} okText="保存" >