支持按接单人员筛选订单

This commit is contained in:
yml2213
2026-08-15 16:02:05 +08:00
parent 54551a1aeb
commit 1756cfb262
2 changed files with 31 additions and 3 deletions
@@ -560,11 +560,13 @@ export async function reviewAdminWorkerFinanceRequest(
export async function listAdminWorkOrders(query: JsonObject = {}) { export async function listAdminWorkOrders(query: JsonObject = {}) {
const page = normalizePage(query.page) const page = normalizePage(query.page)
const pageSize = normalizePageSize(query.pageSize) const pageSize = normalizePageSize(query.pageSize)
const workerId = normalizeOptionalId(query.workerId ?? query.worker_id) || 0
const { items, total } = await listWorkOrders({ const { items, total } = await listWorkOrders({
page, page,
pageSize, pageSize,
status: String(query.status || '').trim(), status: String(query.status || '').trim(),
keyword: String(query.keyword || '').trim(), keyword: String(query.keyword || '').trim(),
workerSharingId: workerId,
}) })
const shares = await listWorkOrderSharesByOrderIds(items.map((item) => Number(item.id))) const shares = await listWorkOrderSharesByOrderIds(items.map((item) => Number(item.id)))
const sharesByOrderId = new Map<number, WorkOrderShareRow[]>() const sharesByOrderId = new Map<number, WorkOrderShareRow[]>()
@@ -123,6 +123,7 @@ export default function WorkOrdersPanel() {
const [status, setStatus] = useState('') const [status, setStatus] = useState('')
const [keyword, setKeyword] = useState('') const [keyword, setKeyword] = useState('')
const [keywordInput, setKeywordInput] = useState('') const [keywordInput, setKeywordInput] = useState('')
const [workerId, setWorkerId] = useState<number | undefined>()
const [page, setPage] = useState(1) const [page, setPage] = useState(1)
const [pageSize, setPageSize] = useState(ADMIN_DEFAULT_PAGE_SIZE) const [pageSize, setPageSize] = useState(ADMIN_DEFAULT_PAGE_SIZE)
const [selectedAcceptanceOrderIds, setSelectedAcceptanceOrderIds] = useState<number[]>([]) const [selectedAcceptanceOrderIds, setSelectedAcceptanceOrderIds] = useState<number[]>([])
@@ -159,14 +160,18 @@ export default function WorkOrdersPanel() {
}>() }>()
const ordersQuery = useQuery({ const ordersQuery = useQuery({
queryKey: ['admin-worker-platform-orders', status, keyword, page, pageSize], queryKey: ['admin-worker-platform-orders', status, keyword, workerId, page, pageSize],
queryFn: () => fetchAdminWorkOrders({ status, keyword, page, pageSize }), queryFn: () => fetchAdminWorkOrders({ status, keyword, workerId, page, pageSize }),
}) })
const ordersPagination = ordersQuery.data?.data.pagination const ordersPagination = ordersQuery.data?.data.pagination
const categoriesQuery = useQuery({ const categoriesQuery = useQuery({
queryKey: ['admin-worker-platform-categories'], queryKey: ['admin-worker-platform-categories'],
queryFn: () => fetchAdminWorkCategories(), queryFn: () => fetchAdminWorkCategories(),
}) })
const filterWorkersQuery = useQuery({
queryKey: ['admin-worker-platform-workers', 'order-filter'],
queryFn: () => fetchAdminWorkerUsers({ page: 1, pageSize: 200 }),
})
const sharingQuery = useQuery({ const sharingQuery = useQuery({
queryKey: ['admin-worker-platform-order-sharing', sharingOrder?.workOrderId], queryKey: ['admin-worker-platform-order-sharing', sharingOrder?.workOrderId],
queryFn: () => fetchAdminWorkOrderSharing(Number(sharingOrder?.workOrderId)), queryFn: () => fetchAdminWorkOrderSharing(Number(sharingOrder?.workOrderId)),
@@ -180,7 +185,7 @@ export default function WorkOrdersPanel() {
useEffect(() => { useEffect(() => {
setSelectedAcceptanceOrderIds([]) setSelectedAcceptanceOrderIds([])
}, [status, keyword, page, pageSize]) }, [status, keyword, workerId, page, pageSize])
function openAssignModal(row: WorkOrder) { function openAssignModal(row: WorkOrder) {
setAssignOrder(row) setAssignOrder(row)
@@ -388,6 +393,7 @@ export default function WorkOrdersPanel() {
setKeywordInput('') setKeywordInput('')
setKeyword('') setKeyword('')
setStatus('') setStatus('')
setWorkerId(undefined)
setPage(1) setPage(1)
} }
@@ -834,6 +840,26 @@ export default function WorkOrdersPanel() {
setPage(1) setPage(1)
}} }}
/> />
<Select
allowClear
showSearch
optionFilterProp="label"
value={workerId}
placeholder="全部接单人员"
style={{ width: 180 }}
loading={filterWorkersQuery.isLoading}
options={(filterWorkersQuery.data?.data.items || []).map((worker) => ({
value: worker.workerId,
label:
worker.displayName && worker.displayName !== worker.username
? `${worker.displayName}${worker.username}`
: worker.username,
}))}
onChange={(nextWorkerId) => {
setWorkerId(nextWorkerId)
setPage(1)
}}
/>
<Button type="primary" icon={<SearchOutlined />} onClick={searchOrders}> <Button type="primary" icon={<SearchOutlined />} onClick={searchOrders}>
</Button> </Button>