([]);
const [searchTerm, setSearchTerm] = useState("");
const [statusFilter, setStatusFilter] = useState("all");
@@ -81,14 +83,15 @@ export default function WorkOrderArchivePage() {
};
// 获取归档工单列表
- const fetchArchivedOrders = async (pageNum = 1, pageSize = 10) => {
+ const fetchArchivedOrders = async (pageNum = 1, pageSize = 10, searchValue?: string) => {
setLoading(true);
try {
let url = `/back/workOrderArchive/list?pageNum=${pageNum}&pageSize=${pageSize}`;
- // 添加工单编号搜索参数
- if (searchTerm.trim()) {
- url += `&workOrderNumber=${encodeURIComponent(searchTerm.trim())}`;
+ // 添加工单编号搜索参数,优先使用传入的搜索值,否则使用 state 中的 searchTerm
+ const searchValueToUse = searchValue !== undefined ? searchValue : searchTerm;
+ if (searchValueToUse.trim()) {
+ url += `&workOrderNumber=${encodeURIComponent(searchValueToUse.trim())}`;
}
// 添加合格/不合格筛选参数
@@ -112,9 +115,25 @@ export default function WorkOrderArchivePage() {
}
};
+ // 从 URL 参数中读取工单号并设置搜索词
+ useEffect(() => {
+ const workOrderNumber = searchParams.get('workOrderNumber');
+ if (workOrderNumber) {
+ setSearchTerm(workOrderNumber);
+ // 立即搜索,不等待防抖
+ fetchArchivedOrders(1, 10, workOrderNumber);
+ // 清除 URL 参数,避免刷新时重复搜索
+ setSearchParams({}, { replace: true });
+ }
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, [searchParams]);
+
useEffect(() => {
fetchArchiveCount();
- fetchArchivedOrders(1, 10);
+ // 只有在没有 URL 参数时才执行初始加载(避免与上面的 useEffect 重复)
+ if (!searchParams.get('workOrderNumber')) {
+ fetchArchivedOrders(1, 10);
+ }
}, []);
// 监听搜索词和筛选条件变化,重新请求数据
diff --git a/src/components/pages/WorkOrdersPage.tsx b/src/components/pages/WorkOrdersPage.tsx
index e024bfe..5bf066e 100644
--- a/src/components/pages/WorkOrdersPage.tsx
+++ b/src/components/pages/WorkOrdersPage.tsx
@@ -1,4 +1,5 @@
import React, { useState, useEffect } from "react"
+import { useNavigate } from "react-router-dom"
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "../ui/card"
import { Button } from "../ui/button"
import { Input } from "../ui/input"
@@ -27,6 +28,7 @@ import {
ChevronRight,
Wrench,
Edit,
+ FileText,
} from "lucide-react"
import { apiGet, apiPost, apiPut } from "../../lib/services/api"
@@ -153,6 +155,7 @@ interface WorkOrder {
}
export default function WorkOrdersPage() {
+ const navigate = useNavigate()
const [searchTerm, setSearchTerm] = useState("")
const [statusFilter, setStatusFilter] = useState("all")
const [isCreateDialogOpen, setIsCreateDialogOpen] = useState(false)
@@ -502,16 +505,30 @@ export default function WorkOrdersPage() {
-
+
+
+ {item.status === "7" && (
+
+ )}
+
))
@@ -540,16 +557,30 @@ export default function WorkOrdersPage() {
{item.equipmentName}
设备: {item.equipmentId}
-
+
+
+ {item.status === "7" && (
+
+ )}
+