From 2f2cf47c6f388b5138daeb376ceb4cdbfbef7fd7 Mon Sep 17 00:00:00 2001 From: menxipeng Date: Sun, 19 Oct 2025 14:07:19 +0800 Subject: [PATCH] shebi xiufu --- src/components/pages/EquipmentPage.tsx | 278 ++++++++++++++++++++++++- 1 file changed, 269 insertions(+), 9 deletions(-) diff --git a/src/components/pages/EquipmentPage.tsx b/src/components/pages/EquipmentPage.tsx index 64a7b66..3375a00 100644 --- a/src/components/pages/EquipmentPage.tsx +++ b/src/components/pages/EquipmentPage.tsx @@ -16,7 +16,7 @@ import { DialogTrigger, } from "../ui/dialog" import { Plus, Filter, Download, MapPin, Calendar, Shield, ChevronLeft, ChevronRight } from "lucide-react" -import { apiGet, apiPost } from "../../lib/services/api" +import { apiGet, apiPost, apiPut } from "../../lib/services/api" // 商户数据类型(根据新接口返回格式定义) interface ProvinceMerchant { @@ -70,6 +70,7 @@ export default function EquipmentPage() { const [searchTerm, setSearchTerm] = useState("") const [statusFilter, setStatusFilter] = useState("all") const [isAddEquipmentOpen, setIsAddEquipmentOpen] = useState(false) + const [isEditEquipmentOpen, setIsEditEquipmentOpen] = useState(false) const [isSubmitting, setIsSubmitting] = useState(false) const [merchants, setMerchants] = useState([]) const [loadingMerchants, setLoadingMerchants] = useState(false) @@ -179,6 +180,84 @@ export default function EquipmentPage() { notes: "", }) + const [editEquipment, setEditEquipment] = useState({ + id: "", + name: "", + type: "", + model: "", + merchantId: "", + location: "", + installDate: "", + status: "normal", + notes: "", + }) + + // 打开编辑对话框 + const handleEditEquipment = (equipment: Equipment) => { + setEditEquipment({ + id: equipment.id, + name: equipment.equipmentName || "", + type: equipment.equipmentType || "", + model: equipment.equipmentModel || "", + merchantId: equipment.merchantId || "", + location: equipment.installationLocation || "", + installDate: equipment.installationDate || "", + status: equipment.status === "1" ? "normal" : equipment.status === "2" ? "expiring" : "expired", + notes: equipment.remarks || "", + }) + setIsEditEquipmentOpen(true) + // 加载商户和设备类型数据 + if (merchants.length === 0) { + fetchMerchants() + } + if (Object.keys(equipmentTypes).length === 0) { + fetchEquipmentTypes() + } + } + + // 提交编辑 + const handleUpdateEquipment = async () => { + if (!editEquipment.name || !editEquipment.type || !editEquipment.merchantId) { + alert('请填写必填信息') + return + } + + setIsSubmitting(true) + + try { + const equipmentData = { + id: editEquipment.id, + equipmentName: editEquipment.name, + equipmentType: editEquipment.type, + equipmentModel: editEquipment.model, + merchantId: editEquipment.merchantId, + installationLocation: editEquipment.location, + installationDate: editEquipment.installDate, + status: editEquipment.status === 'normal' ? 1 : editEquipment.status === 'expiring' ? 2 : 3, + remarks: editEquipment.notes, + } + + console.log("编辑设备:", equipmentData) + + const result = await apiPut('/back/equipment/', equipmentData) + + if (result.code === 200) { + console.log('编辑设备成功:', result) + alert('编辑设备成功!') + setIsEditEquipmentOpen(false) + fetchEquipmentList(pagination.pageNum, pagination.pageSize) + } else { + console.error('编辑设备失败:', result) + alert('编辑设备失败:' + (result.msg || '未知错误')) + } + } catch (error) { + console.error('编辑设备请求失败:', error) + alert('网络错误,请稍后重试') + } finally { + setIsSubmitting(false) + } + } + const handleAddEquipment = async () => { if (!newEquipment.name || !newEquipment.type || !newEquipment.merchantId) { alert('请填写必填信息') @@ -273,7 +352,17 @@ export default function EquipmentPage() { item.equipmentName.toLowerCase().includes(searchTerm.toLowerCase()) || merchantInfo.name.toLowerCase().includes(searchTerm.toLowerCase()) || merchantInfo.mall.toLowerCase().includes(searchTerm.toLowerCase()) - const matchesStatus = statusFilter === "all" || item.status === statusFilter + + // 修正状态筛选逻辑 + let matchesStatus = true + if (statusFilter === "1" || statusFilter === "normal") { + matchesStatus = item.status === "1" + } else if (statusFilter === "2" || statusFilter === "expiring") { + matchesStatus = item.status === "2" + } else if (statusFilter === "3" || statusFilter === "expired") { + matchesStatus = item.status === "3" + } + return matchesSearch && matchesStatus }) @@ -285,10 +374,18 @@ export default function EquipmentPage() {

管理所有消防设备的档案和状态

- +
+ + {/* 编辑设备对话框 */} + + + + 编辑设备 + 修改设备基本信息和安装详情 + +
+
+ + setEditEquipment({ ...editEquipment, name: e.target.value })} + placeholder="请输入设备名称" + /> +
+
+ + +
+
+ + setEditEquipment({ ...editEquipment, model: e.target.value })} + placeholder="请输入设备型号" + /> +
+
+ + +
+
+ + setEditEquipment({ ...editEquipment, location: e.target.value })} + placeholder="请输入安装位置" + /> +
+
+ + setEditEquipment({ ...editEquipment, installDate: e.target.value })} + /> +
+
+ + +
+
+ +