From abd5a995024485bfdc6980340b352363126b031a Mon Sep 17 00:00:00 2001 From: menxipeng Date: Sun, 9 Nov 2025 21:29:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/CompanyPermissionsPage.tsx | 23 +- src/components/pages/EquipmentPage.tsx | 207 +++++++++++++++++- src/components/pages/WorkOrdersPage.tsx | 143 +++++++++--- 3 files changed, 313 insertions(+), 60 deletions(-) diff --git a/src/components/pages/CompanyPermissionsPage.tsx b/src/components/pages/CompanyPermissionsPage.tsx index 4a784bf..e4aad2c 100644 --- a/src/components/pages/CompanyPermissionsPage.tsx +++ b/src/components/pages/CompanyPermissionsPage.tsx @@ -32,7 +32,6 @@ interface UserData { userId: string userName: string nickName: string - email: string phonenumber: string status: string loginDate: string @@ -189,7 +188,6 @@ export default function CompanyPermissionsPage() { const matchesSearch = user.nickName.toLowerCase().includes(searchTerm.toLowerCase()) || user.userName.toLowerCase().includes(searchTerm.toLowerCase()) || - user.email.toLowerCase().includes(searchTerm.toLowerCase()) || (user.dept?.deptName || "").toLowerCase().includes(searchTerm.toLowerCase()) const matchesStatus = statusFilter === "all" || @@ -264,10 +262,7 @@ export default function CompanyPermissionsPage() { {user.dept?.deptName || '-'} -
-
{user.email || '-'}
-
{user.phonenumber || '-'}
-
+
{user.phonenumber || '-'}
@@ -354,7 +349,7 @@ export default function CompanyPermissionsPage() {
setSearchTerm(e.target.value)} className="pl-10" @@ -438,7 +433,6 @@ function CreateUserForm({ roles, onClose }: { roles: Role[]; onClose: () => void const [formData, setFormData] = useState({ username: "", name: "", - email: "", phone: "", role: "", department: "", @@ -500,7 +494,6 @@ function CreateUserForm({ roles, onClose }: { roles: Role[]; onClose: () => void nickName: formData.name, password: formData.password, phonenumber: formData.phone, - email: formData.email, sex: "0", status: "0", remark: formData.department || "", @@ -564,18 +557,6 @@ function CreateUserForm({ roles, onClose }: { roles: Role[]; onClose: () => void />
-
- - setFormData({ ...formData, email: e.target.value })} - placeholder="请输入邮箱地址" - required - /> -
-
{ + if (!newEquipment.nextInspectionDate) { + // 如果没有下次检测日期,使用安装日期或当前日期作为基准 + const baseDate = newEquipment.installDate ? new Date(newEquipment.installDate) : new Date() + baseDate.setFullYear(baseDate.getFullYear() + years) + const newDateStr = baseDate.toISOString().split('T')[0] + + // 检查是否小于安装日期 + if (newEquipment.installDate && newDateStr < newEquipment.installDate) { + alert('下一次检测时间不能小于安装日期') + return + } + + setNewEquipment({ ...newEquipment, nextInspectionDate: newDateStr }) + } else { + const currentDate = new Date(newEquipment.nextInspectionDate) + currentDate.setFullYear(currentDate.getFullYear() + years) + const newDateStr = currentDate.toISOString().split('T')[0] + + // 检查是否小于安装日期 + if (newEquipment.installDate && newDateStr < newEquipment.installDate) { + alert('下一次检测时间不能小于安装日期') + return + } + + setNewEquipment({ ...newEquipment, nextInspectionDate: newDateStr }) + } + } + + // 调整下一次检测日期(编辑设备) + const adjustEditNextInspectionDate = (years: number) => { + if (!editEquipment.nextInspectionDate) { + // 如果没有下次检测日期,使用安装日期或当前日期作为基准 + const baseDate = editEquipment.installDate ? new Date(editEquipment.installDate) : new Date() + baseDate.setFullYear(baseDate.getFullYear() + years) + const newDateStr = baseDate.toISOString().split('T')[0] + + // 检查是否小于安装日期 + if (editEquipment.installDate && newDateStr < editEquipment.installDate) { + alert('下一次检测时间不能小于安装日期') + return + } + + setEditEquipment({ ...editEquipment, nextInspectionDate: newDateStr }) + } else { + const currentDate = new Date(editEquipment.nextInspectionDate) + currentDate.setFullYear(currentDate.getFullYear() + years) + const newDateStr = currentDate.toISOString().split('T')[0] + + // 检查是否小于安装日期 + if (editEquipment.installDate && newDateStr < editEquipment.installDate) { + alert('下一次检测时间不能小于安装日期') + return + } + + setEditEquipment({ ...editEquipment, nextInspectionDate: newDateStr }) + } + } + // 打开编辑对话框 const handleEditEquipment = (equipment: Equipment) => { setEditEquipment({ @@ -227,6 +290,7 @@ export default function EquipmentPage() { merchantId: equipment.merchantId || "", location: equipment.installationLocation || "", installDate: equipment.installationDate || "", + nextInspectionDate: equipment.nextInspectionDate || "", status: equipment.status === "1" ? "normal" : equipment.status === "2" ? "expiring" : "expired", notes: equipment.remarks || "", }) @@ -247,6 +311,16 @@ export default function EquipmentPage() { return } + // 验证下一次检测时间不能小于安装日期 + if (editEquipment.nextInspectionDate && editEquipment.installDate) { + const nextDate = new Date(editEquipment.nextInspectionDate) + const installDate = new Date(editEquipment.installDate) + if (nextDate < installDate) { + alert('下一次检测时间不能小于安装日期') + return + } + } + setIsSubmitting(true) try { @@ -258,6 +332,7 @@ export default function EquipmentPage() { merchantId: editEquipment.merchantId, installationLocation: editEquipment.location, installationDate: editEquipment.installDate, + nextInspectionDate: editEquipment.nextInspectionDate, status: editEquipment.status === 'normal' ? 1 : editEquipment.status === 'expiring' ? 2 : 3, remarks: editEquipment.notes, } @@ -289,6 +364,16 @@ export default function EquipmentPage() { return } + // 验证下一次检测时间不能小于安装日期 + if (newEquipment.nextInspectionDate && newEquipment.installDate) { + const nextDate = new Date(newEquipment.nextInspectionDate) + const installDate = new Date(newEquipment.installDate) + if (nextDate < installDate) { + alert('下一次检测时间不能小于安装日期') + return + } + } + setIsSubmitting(true) try { @@ -300,6 +385,7 @@ export default function EquipmentPage() { merchantId: newEquipment.merchantId, installationLocation: newEquipment.location, installationDate: newEquipment.installDate, + nextInspectionDate: newEquipment.nextInspectionDate, status: newEquipment.status === 'normal' ? 1 : newEquipment.status === 'expiring' ? 2 : 3, remarks: newEquipment.notes, createdBy: "admin" // 可以从用户上下文获取 @@ -322,6 +408,7 @@ export default function EquipmentPage() { merchantId: "", location: "", installDate: "", + nextInspectionDate: "", status: "normal", notes: "", }) @@ -421,12 +508,12 @@ export default function EquipmentPage() { 添加设备 - + 添加新设备 填写设备基本信息和安装详情 -
+
setNewEquipment({ ...newEquipment, installDate: e.target.value })} + onChange={(e) => { + const installDate = e.target.value + setNewEquipment({ ...newEquipment, installDate }) + + // 自动填充下一次检测时间(安装日期+1年) + if (installDate && !newEquipment.nextInspectionDate) { + const nextDate = new Date(installDate) + nextDate.setFullYear(nextDate.getFullYear() + 1) + const nextDateStr = nextDate.toISOString().split('T')[0] + setNewEquipment(prev => ({ ...prev, nextInspectionDate: nextDateStr })) + } + }} />
+
+ +
+ setNewEquipment({ ...newEquipment, nextInspectionDate: e.target.value })} + className="flex-1" + /> + + +
+
setEditEquipment({ ...editEquipment, installDate: e.target.value })} + onChange={(e) => { + const installDate = e.target.value + setEditEquipment({ ...editEquipment, installDate }) + + // 自动填充下一次检测时间(安装日期+1年) + if (installDate && !editEquipment.nextInspectionDate) { + const nextDate = new Date(installDate) + nextDate.setFullYear(nextDate.getFullYear() + 1) + const nextDateStr = nextDate.toISOString().split('T')[0] + setEditEquipment(prev => ({ ...prev, nextInspectionDate: nextDateStr })) + } + }} />
+
+ +
+ setEditEquipment({ ...editEquipment, nextInspectionDate: e.target.value })} + className="flex-1" + /> + + +
+
setFormData({ ...formData, assignee: value })} - onOpenChange={(open) => { - if (open && workers.length === 0 && !loadingWorkers) { - fetchWorkers() - } - }} - > - - - - - {workers.map((worker) => ( - - {worker.name} - {worker.province} ({worker.phone}) - - ))} - - + +
+ + {isWorkerSelectOpen && ( +
+ {workers.length === 0 ? ( +
暂无工人数据
+ ) : ( +
+ {workers.map((worker) => ( +
toggleWorkerSelection(worker.id)} + > +
+ {formData.assignee.includes(worker.id) && ( + + + + )} +
+ + {worker.name} - {worker.province} ({worker.phone}) + +
+ ))} +
+ )} +
+ )} +
+ {formData.assignee.length > 0 && ( +
+ 已选择: {workers.filter(w => formData.assignee.includes(w.id)).map(w => w.name).join(", ")} +
+ )}