111
This commit is contained in:
@@ -158,7 +158,6 @@ interface WorkOrder {
|
|||||||
export default function WorkOrdersPage() {
|
export default function WorkOrdersPage() {
|
||||||
const [searchTerm, setSearchTerm] = useState("")
|
const [searchTerm, setSearchTerm] = useState("")
|
||||||
const [statusFilter, setStatusFilter] = useState("all")
|
const [statusFilter, setStatusFilter] = useState("all")
|
||||||
const [priorityFilter, setPriorityFilter] = useState("all")
|
|
||||||
const [workerFilter, setWorkerFilter] = useState("all")
|
const [workerFilter, setWorkerFilter] = useState("all")
|
||||||
const [isCreateDialogOpen, setIsCreateDialogOpen] = useState(false)
|
const [isCreateDialogOpen, setIsCreateDialogOpen] = useState(false)
|
||||||
const [workOrders, setWorkOrders] = useState<WorkOrder[]>([])
|
const [workOrders, setWorkOrders] = useState<WorkOrder[]>([])
|
||||||
@@ -280,9 +279,8 @@ export default function WorkOrdersPage() {
|
|||||||
// 使用工单的实际状态进行过滤
|
// 使用工单的实际状态进行过滤
|
||||||
const itemStatus = item.status || "1" // 默认为待接单状态
|
const itemStatus = item.status || "1" // 默认为待接单状态
|
||||||
const matchesStatus = statusFilter === "all" || itemStatus === statusFilter
|
const matchesStatus = statusFilter === "all" || itemStatus === statusFilter
|
||||||
const matchesPriority = priorityFilter === "all" || item.priority === priorityFilter
|
|
||||||
const matchesWorker = workerFilter === "all" || item.workerName === workerFilter
|
const matchesWorker = workerFilter === "all" || item.workerName === workerFilter
|
||||||
return matchesSearch && matchesStatus && matchesPriority && matchesWorker
|
return matchesSearch && matchesStatus && matchesWorker
|
||||||
})
|
})
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -408,19 +406,6 @@ export default function WorkOrdersPage() {
|
|||||||
</SelectContent>
|
</SelectContent>
|
||||||
</Select>
|
</Select>
|
||||||
|
|
||||||
<Select value={priorityFilter} onValueChange={setPriorityFilter}>
|
|
||||||
<SelectTrigger className="w-full sm:w-32">
|
|
||||||
<SelectValue placeholder="优先级" />
|
|
||||||
</SelectTrigger>
|
|
||||||
<SelectContent>
|
|
||||||
<SelectItem value="all">全部优先级</SelectItem>
|
|
||||||
<SelectItem value="urgent">紧急</SelectItem>
|
|
||||||
<SelectItem value="high">高</SelectItem>
|
|
||||||
<SelectItem value="medium">中</SelectItem>
|
|
||||||
<SelectItem value="low">低</SelectItem>
|
|
||||||
</SelectContent>
|
|
||||||
</Select>
|
|
||||||
|
|
||||||
<Select value={workerFilter} onValueChange={setWorkerFilter}>
|
<Select value={workerFilter} onValueChange={setWorkerFilter}>
|
||||||
<SelectTrigger className="w-full sm:w-32">
|
<SelectTrigger className="w-full sm:w-32">
|
||||||
<SelectValue placeholder="工人" />
|
<SelectValue placeholder="工人" />
|
||||||
@@ -447,7 +432,7 @@ export default function WorkOrdersPage() {
|
|||||||
<TableRow>
|
<TableRow>
|
||||||
<TableHead>工单信息</TableHead>
|
<TableHead>工单信息</TableHead>
|
||||||
<TableHead>商户信息</TableHead>
|
<TableHead>商户信息</TableHead>
|
||||||
<TableHead>类型/优先级</TableHead>
|
<TableHead>类型</TableHead>
|
||||||
<TableHead>状态</TableHead>
|
<TableHead>状态</TableHead>
|
||||||
<TableHead>负责人</TableHead>
|
<TableHead>负责人</TableHead>
|
||||||
<TableHead>时间</TableHead>
|
<TableHead>时间</TableHead>
|
||||||
@@ -490,10 +475,7 @@ export default function WorkOrdersPage() {
|
|||||||
</div>
|
</div>
|
||||||
</TableCell>
|
</TableCell>
|
||||||
<TableCell>
|
<TableCell>
|
||||||
<div className="space-y-2">
|
{getTypeBadge(item.workOrderType)}
|
||||||
{getTypeBadge(item.workOrderType)}
|
|
||||||
{getPriorityBadge(item.priority)}
|
|
||||||
</div>
|
|
||||||
</TableCell>
|
</TableCell>
|
||||||
<TableCell>{getStatusBadge(item.status || "1")}</TableCell>
|
<TableCell>{getStatusBadge(item.status || "1")}</TableCell>
|
||||||
<TableCell>
|
<TableCell>
|
||||||
@@ -583,21 +565,17 @@ function CreateWorkOrderForm({ onClose }: { onClose: () => void }) {
|
|||||||
merchantId: "",
|
merchantId: "",
|
||||||
equipmentId: "",
|
equipmentId: "",
|
||||||
type: "",
|
type: "",
|
||||||
priority: "",
|
|
||||||
assignee: "",
|
assignee: "",
|
||||||
description: "",
|
description: "",
|
||||||
dueDate: "",
|
|
||||||
})
|
})
|
||||||
|
|
||||||
const [selectedMerchant, setSelectedMerchant] = useState("")
|
const [selectedMerchant, setSelectedMerchant] = useState("")
|
||||||
const [availableEquipment, setAvailableEquipment] = useState<Equipment[]>([])
|
const [availableEquipment, setAvailableEquipment] = useState<Equipment[]>([])
|
||||||
const [merchants, setMerchants] = useState<ProvinceMerchant[]>([])
|
const [merchants, setMerchants] = useState<ProvinceMerchant[]>([])
|
||||||
const [workers, setWorkers] = useState<Worker[]>([])
|
const [workers, setWorkers] = useState<Worker[]>([])
|
||||||
const [priorities, setPriorities] = useState<PriorityData>({})
|
|
||||||
const [loadingMerchants, setLoadingMerchants] = useState(false)
|
const [loadingMerchants, setLoadingMerchants] = useState(false)
|
||||||
const [loadingEquipment, setLoadingEquipment] = useState(false)
|
const [loadingEquipment, setLoadingEquipment] = useState(false)
|
||||||
const [loadingWorkers, setLoadingWorkers] = useState(false)
|
const [loadingWorkers, setLoadingWorkers] = useState(false)
|
||||||
const [loadingPriorities, setLoadingPriorities] = useState(false)
|
|
||||||
const [submitting, setSubmitting] = useState(false)
|
const [submitting, setSubmitting] = useState(false)
|
||||||
|
|
||||||
// 获取商户列表
|
// 获取商户列表
|
||||||
@@ -647,22 +625,6 @@ function CreateWorkOrderForm({ onClose }: { onClose: () => void }) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取优先级列表
|
|
||||||
const fetchPriorities = async () => {
|
|
||||||
setLoadingPriorities(true)
|
|
||||||
try {
|
|
||||||
const response = await apiGet('/back/general/priorities')
|
|
||||||
if (response.code === 200) {
|
|
||||||
setPriorities(response.data || {})
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.error('获取优先级列表失败:', error)
|
|
||||||
setPriorities({})
|
|
||||||
} finally {
|
|
||||||
setLoadingPriorities(false)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const handleMerchantChange = (merchantId: string) => {
|
const handleMerchantChange = (merchantId: string) => {
|
||||||
setSelectedMerchant(merchantId)
|
setSelectedMerchant(merchantId)
|
||||||
setFormData({ ...formData, merchantId, equipmentId: "" })
|
setFormData({ ...formData, merchantId, equipmentId: "" })
|
||||||
@@ -706,7 +668,6 @@ function CreateWorkOrderForm({ onClose }: { onClose: () => void }) {
|
|||||||
workOrderNumber: workOrderNumber,
|
workOrderNumber: workOrderNumber,
|
||||||
workOrderType: formData.type,
|
workOrderType: formData.type,
|
||||||
workOrderSubtype: "", // 暂时为空
|
workOrderSubtype: "", // 暂时为空
|
||||||
priority: formData.priority,
|
|
||||||
equipmentId: formData.equipmentId,
|
equipmentId: formData.equipmentId,
|
||||||
equipmentName: selectedEquipmentObj.equipmentName,
|
equipmentName: selectedEquipmentObj.equipmentName,
|
||||||
merchantName: selectedMerchantObj.merchantName,
|
merchantName: selectedMerchantObj.merchantName,
|
||||||
@@ -718,7 +679,6 @@ function CreateWorkOrderForm({ onClose }: { onClose: () => void }) {
|
|||||||
responsibleVirtualPhone: selectedMerchantObj.contactPhone,
|
responsibleVirtualPhone: selectedMerchantObj.contactPhone,
|
||||||
workerVirtualPhone: selectedWorkerObj.phone,
|
workerVirtualPhone: selectedWorkerObj.phone,
|
||||||
workerName: selectedWorkerObj.name,
|
workerName: selectedWorkerObj.name,
|
||||||
scheduledDate: formData.dueDate,
|
|
||||||
createdDate: new Date().toISOString().split('T')[0],
|
createdDate: new Date().toISOString().split('T')[0],
|
||||||
completedDate: ""
|
completedDate: ""
|
||||||
}
|
}
|
||||||
@@ -812,30 +772,6 @@ function CreateWorkOrderForm({ onClose }: { onClose: () => void }) {
|
|||||||
</Select>
|
</Select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="space-y-2">
|
|
||||||
<Label htmlFor="priority">优先级</Label>
|
|
||||||
<Select
|
|
||||||
value={formData.priority}
|
|
||||||
onValueChange={(value) => setFormData({ ...formData, priority: value })}
|
|
||||||
onOpenChange={(open) => {
|
|
||||||
if (open && Object.keys(priorities).length === 0 && !loadingPriorities) {
|
|
||||||
fetchPriorities()
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<SelectTrigger>
|
|
||||||
<SelectValue placeholder={loadingPriorities ? "加载中..." : "选择优先级"} />
|
|
||||||
</SelectTrigger>
|
|
||||||
<SelectContent>
|
|
||||||
{Object.entries(priorities).map(([key, value]) => (
|
|
||||||
<SelectItem key={key} value={key}>
|
|
||||||
{value}
|
|
||||||
</SelectItem>
|
|
||||||
))}
|
|
||||||
</SelectContent>
|
|
||||||
</Select>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className="space-y-2">
|
<div className="space-y-2">
|
||||||
<Label htmlFor="assignee">分配工人</Label>
|
<Label htmlFor="assignee">分配工人</Label>
|
||||||
<Select
|
<Select
|
||||||
@@ -859,16 +795,6 @@ function CreateWorkOrderForm({ onClose }: { onClose: () => void }) {
|
|||||||
</SelectContent>
|
</SelectContent>
|
||||||
</Select>
|
</Select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="space-y-2">
|
|
||||||
<Label htmlFor="dueDate">到期日期</Label>
|
|
||||||
<Input
|
|
||||||
id="dueDate"
|
|
||||||
type="date"
|
|
||||||
value={formData.dueDate}
|
|
||||||
onChange={(e) => setFormData({ ...formData, dueDate: e.target.value })}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="space-y-2">
|
<div className="space-y-2">
|
||||||
|
Reference in New Issue
Block a user