支持待验收工单按VIP等级筛选

This commit is contained in:
yml2213
2026-08-20 18:02:13 +08:00
parent 3587e44261
commit 39aeb0baaa
4 changed files with 66 additions and 1 deletions
@@ -55,6 +55,7 @@ import {
deleteAdminWorkOrder,
fetchAdminWorkCategories,
fetchAdminWorkOrderSharing,
fetchAdminWorkerLevels,
fetchAdminWorkerUsers,
fetchAdminWorkOrders,
markAdminWorkOrderProblem,
@@ -138,6 +139,7 @@ export default function WorkOrdersPanel() {
const [keyword, setKeyword] = useState('')
const [keywordInput, setKeywordInput] = useState('')
const [workerId, setWorkerId] = useState<number | undefined>()
const [workerLevelIds, setWorkerLevelIds] = useState<number[]>([])
const [filterWorkerKeyword, setFilterWorkerKeyword] = useState('')
const [assignWorkerKeyword, setAssignWorkerKeyword] = useState('')
const [page, setPage] = useState(1)
@@ -184,6 +186,7 @@ export default function WorkOrdersPanel() {
(status) => status !== VIP_EVIDENCE_PENDING_STATUS,
)
const vipEvidencePending = statuses.includes(VIP_EVIDENCE_PENDING_STATUS)
const showWorkerLevelFilter = statuses.includes('pending_acceptance')
useEffect(() => {
const workOrderId = Number(searchParams.get('workOrderId') || 0)
@@ -193,6 +196,7 @@ export default function WorkOrdersPanel() {
setKeyword('')
setKeywordInput('')
setWorkerId(undefined)
setWorkerLevelIds([])
setPage(1)
setSearchParams(
(current) => {
@@ -209,6 +213,7 @@ export default function WorkOrdersPanel() {
statuses.join(','),
keyword,
workerId,
workerLevelIds.join(','),
targetWorkOrderId,
page,
pageSize,
@@ -221,6 +226,8 @@ export default function WorkOrdersPanel() {
workOrderId: targetWorkOrderId,
keyword,
workerId,
workerLevelIds:
showWorkerLevelFilter && workerLevelIds.length > 0 ? workerLevelIds.join(',') : undefined,
page,
pageSize,
}),
@@ -230,6 +237,11 @@ export default function WorkOrdersPanel() {
queryKey: ['admin-worker-platform-categories'],
queryFn: () => fetchAdminWorkCategories(),
})
const workerLevelsQuery = useQuery({
queryKey: ['admin-worker-platform-levels'],
queryFn: () => fetchAdminWorkerLevels(),
enabled: showWorkerLevelFilter,
})
const filterWorkersQuery = useQuery({
queryKey: ['admin-worker-platform-workers', 'order-filter', filterWorkerKeyword],
queryFn: () =>
@@ -258,7 +270,11 @@ export default function WorkOrdersPanel() {
useEffect(() => {
setSelectedAcceptanceOrderIds([])
}, [statuses, keyword, workerId, targetWorkOrderId, page, pageSize])
}, [statuses, keyword, workerId, workerLevelIds, targetWorkOrderId, page, pageSize])
useEffect(() => {
if (!showWorkerLevelFilter) setWorkerLevelIds([])
}, [showWorkerLevelFilter])
function openAssignModal(row: WorkOrder) {
setAssignOrder(row)
@@ -567,6 +583,7 @@ export default function WorkOrdersPanel() {
setKeyword('')
setStatuses([])
setWorkerId(undefined)
setWorkerLevelIds([])
setPage(1)
}
@@ -1042,6 +1059,25 @@ export default function WorkOrdersPanel() {
setPage(1)
}}
/>
{showWorkerLevelFilter ? (
<Select
mode="multiple"
allowClear
value={workerLevelIds}
placeholder="全部打手 VIP 等级"
style={{ minWidth: 180, maxWidth: 320 }}
maxTagCount="responsive"
loading={workerLevelsQuery.isLoading}
options={(workerLevelsQuery.data?.data.items || []).map((level) => ({
value: level.levelId,
label: level.name,
}))}
onChange={(nextWorkerLevelIds: number[]) => {
setWorkerLevelIds(nextWorkerLevelIds)
setPage(1)
}}
/>
) : null}
<Button type="primary" icon={<SearchOutlined />} onClick={searchOrders}>
</Button>