-
-
-
创建: {item.createdAt}
+ {item.installationDate && (
+
+
+ 上次检测: {item.installationDate}
+
+ )}
+ {item.nextInspectionDate && (
+
+
+ 下次检测: {item.nextInspectionDate}
+
+ )}
+
+
+ 创建: {item.createdAt}
更新: {item.updatedAt}
diff --git a/src/components/pages/WorkOrdersPage.tsx b/src/components/pages/WorkOrdersPage.tsx
index 0faac32..d3bee03 100644
--- a/src/components/pages/WorkOrdersPage.tsx
+++ b/src/components/pages/WorkOrdersPage.tsx
@@ -574,7 +574,7 @@ function CreateWorkOrderForm({ onClose }: { onClose: () => void }) {
merchantId: "",
equipmentId: "",
type: "",
- assignee: "",
+ assignee: [] as string[], // 改为数组支持多选
description: "",
})
@@ -586,6 +586,7 @@ function CreateWorkOrderForm({ onClose }: { onClose: () => void }) {
const [loadingEquipment, setLoadingEquipment] = useState(false)
const [loadingWorkers, setLoadingWorkers] = useState(false)
const [submitting, setSubmitting] = useState(false)
+ const [isWorkerSelectOpen, setIsWorkerSelectOpen] = useState(false)
// 获取商户列表
const fetchMerchants = async () => {
@@ -637,6 +638,23 @@ function CreateWorkOrderForm({ onClose }: { onClose: () => void }) {
}
}
+ // 点击外部关闭下拉框
+ useEffect(() => {
+ const handleClickOutside = (event: MouseEvent) => {
+ if (isWorkerSelectOpen) {
+ const target = event.target as HTMLElement
+ if (!target.closest('.worker-select-container')) {
+ setIsWorkerSelectOpen(false)
+ }
+ }
+ }
+
+ document.addEventListener('mousedown', handleClickOutside)
+ return () => {
+ document.removeEventListener('mousedown', handleClickOutside)
+ }
+ }, [isWorkerSelectOpen])
+
const handleMerchantChange = (merchantId: string) => {
console.log('选择商户,ID:', merchantId)
setSelectedMerchant(merchantId)
@@ -686,9 +704,34 @@ function CreateWorkOrderForm({ onClose }: { onClose: () => void }) {
return ["故障检测", "故障维修", "设备安装", "预防性维护", "设备改造", "设备拆除", "更换药剂"]
}
+ // 切换工人选择
+ const toggleWorkerSelection = (workerId: string) => {
+ setFormData(prev => ({
+ ...prev,
+ assignee: prev.assignee.includes(workerId)
+ ? prev.assignee.filter(id => id !== workerId)
+ : [...prev.assignee, workerId]
+ }))
+ }
+
+ // 获取选中工人的显示文本
+ const getSelectedWorkersText = () => {
+ if (formData.assignee.length === 0) return "选择维修工人"
+ if (formData.assignee.length === 1) {
+ const worker = workers.find(w => w.id === formData.assignee[0])
+ return worker ? worker.name : "1位工人"
+ }
+ return `已选择 ${formData.assignee.length} 位工人`
+ }
+
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault()
+ if (formData.assignee.length === 0) {
+ alert('请至少选择一位工人')
+ return
+ }
+
setSubmitting(true)
try {
@@ -696,22 +739,31 @@ function CreateWorkOrderForm({ onClose }: { onClose: () => void }) {
const selectedMerchantObj = merchants.find(m => m.id === selectedMerchant)
// 找到选中的设备信息
const selectedEquipmentObj = availableEquipment.find(e => e.equipmentId === formData.equipmentId)
- // 找到选中的工人信息
- const selectedWorkerObj = workers.find(w => w.id === formData.assignee)
+ // 找到所有选中的工人信息
+ const selectedWorkers = workers.filter(w => formData.assignee.includes(w.id))
- if (!selectedMerchantObj || !selectedEquipmentObj || !selectedWorkerObj) {
+ if (!selectedMerchantObj || !selectedEquipmentObj || selectedWorkers.length === 0) {
alert('无法获取完整的商户、设备或工人信息')
return
}
+ // 拼接工人ID(使用逗号分隔)
+ const workersIds = selectedWorkers.map(w => w.workersId || "").join(",")
+ // 拼接工人名称(使用逗号分隔)
+ const workerNames = selectedWorkers.map(w => w.name).join(",")
+ // 拼接工人电话(使用逗号分隔)
+ const workerPhones = selectedWorkers.map(w => w.phone).join(",")
+ // 使用第一个工人的经销商ID
+ const distributorUserId = selectedWorkers[0].distributorUserId || ""
+
// 生成工单编号
const workOrderNumber = `WO${new Date().getFullYear()}${(new Date().getMonth() + 1).toString().padStart(2, '0')}${new Date().getDate().toString().padStart(2, '0')}${Date.now().toString().slice(-4)}`
// 构建API请求数据
const requestData = {
merchantUserId: selectedMerchantObj.merchantsId || "",
- distributorUserId: selectedWorkerObj.distributorUserId || "",
- workersId: selectedWorkerObj.workersId || "",
+ distributorUserId: distributorUserId,
+ workersId: workersIds, // 拼接的工人ID
workOrderNumber: workOrderNumber,
workOrderType: formData.type,
workOrderSubtype: "", // 暂时为空
@@ -724,13 +776,15 @@ function CreateWorkOrderForm({ onClose }: { onClose: () => void }) {
merchantDistrict: selectedMerchantObj.district || "",
responsiblePerson: selectedMerchantObj.contactPerson,
responsibleVirtualPhone: selectedMerchantObj.contactPhone,
- workerVirtualPhone: selectedWorkerObj.phone,
- workerName: selectedWorkerObj.name,
+ workerVirtualPhone: workerPhones, // 拼接的工人电话
+ workerName: workerNames, // 拼接的工人名称
createdDate: new Date().toISOString().split('T')[0],
completedDate: ""
}
console.log('创建工单请求数据:', requestData)
+ console.log('选中的工人数量:', selectedWorkers.length)
+ console.log('工人ID拼接结果:', workersIds)
const response = await apiPost('/back/orders', requestData)
@@ -834,27 +888,58 @@ function CreateWorkOrderForm({ onClose }: { onClose: () => void }) {