增加待补图订单筛选
This commit is contained in:
@@ -95,10 +95,12 @@ const FILTERABLE_WORK_ORDER_STATUSES = [
|
||||
'in_progress',
|
||||
'pending_acceptance',
|
||||
'problem',
|
||||
'vip_evidence_pending',
|
||||
'accepted',
|
||||
'cancelled',
|
||||
] as const
|
||||
|
||||
const VIP_EVIDENCE_PENDING_STATUS = 'vip_evidence_pending'
|
||||
const SKIP_PUBLISH_CONFIRM_KEY = 'admin-work-order-skip-publish-confirm'
|
||||
|
||||
type MaterialFormValues = {
|
||||
@@ -158,6 +160,10 @@ export default function WorkOrdersPanel() {
|
||||
}>()
|
||||
// 仅单独筛选「待验收」时提供批量验收入口(多选状态下不启用勾选,避免误操作)
|
||||
const isPendingAcceptanceOnly = statuses.length === 1 && statuses[0] === 'pending_acceptance'
|
||||
const selectedWorkOrderStatuses = statuses.filter(
|
||||
(status) => status !== VIP_EVIDENCE_PENDING_STATUS,
|
||||
)
|
||||
const vipEvidencePending = statuses.includes(VIP_EVIDENCE_PENDING_STATUS)
|
||||
|
||||
const ordersQuery = useQuery({
|
||||
queryKey: [
|
||||
@@ -170,7 +176,9 @@ export default function WorkOrdersPanel() {
|
||||
],
|
||||
queryFn: () =>
|
||||
fetchAdminWorkOrders({
|
||||
status: statuses.length > 0 ? statuses.join(',') : undefined,
|
||||
status:
|
||||
selectedWorkOrderStatuses.length > 0 ? selectedWorkOrderStatuses.join(',') : undefined,
|
||||
vipEvidencePending: vipEvidencePending || undefined,
|
||||
keyword,
|
||||
workerId,
|
||||
page,
|
||||
@@ -875,6 +883,7 @@ export default function WorkOrdersPanel() {
|
||||
placeholder="全部状态(可多选)"
|
||||
style={{ minWidth: 220, maxWidth: 420 }}
|
||||
maxTagCount="responsive"
|
||||
listHeight={320}
|
||||
options={FILTERABLE_WORK_ORDER_STATUSES.map((item) => ({
|
||||
value: item,
|
||||
label: <Tag color={resolveStatusColor(item)}>{formatStatus(item)}</Tag>,
|
||||
|
||||
@@ -202,6 +202,7 @@ export function formatStatus(status: string) {
|
||||
in_progress: '代练中',
|
||||
pending_acceptance: '待验收',
|
||||
problem: '问题单',
|
||||
vip_evidence_pending: '待补图',
|
||||
accepted: '已验收',
|
||||
cancelled: '已取消',
|
||||
}
|
||||
@@ -216,6 +217,7 @@ export function resolveStatusColor(status: string) {
|
||||
in_progress: 'geekblue',
|
||||
pending_acceptance: 'purple',
|
||||
problem: 'red',
|
||||
vip_evidence_pending: 'gold',
|
||||
accepted: 'green',
|
||||
cancelled: 'default',
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@ const STATUS_OPTIONS = [
|
||||
{ value: 'pending_acceptance', label: '待验收' },
|
||||
{ value: 'problem', label: '问题单' },
|
||||
{ value: 'open', label: '已超时' },
|
||||
{ value: 'vip_evidence_pending', label: '待补图' },
|
||||
{ value: 'accepted', label: '已验收' },
|
||||
{ value: 'cancelled', label: '已取消' },
|
||||
{ value: '', label: '全部订单' },
|
||||
@@ -69,6 +70,15 @@ type WorkerNoteFormValues = {
|
||||
note?: string
|
||||
}
|
||||
|
||||
function buildWorkerOrderQuery(status: string, keyword: string, page: number, pageSize: number) {
|
||||
return {
|
||||
keyword,
|
||||
page,
|
||||
pageSize,
|
||||
...(status === 'vip_evidence_pending' ? { vipEvidencePending: true } : { status }),
|
||||
}
|
||||
}
|
||||
|
||||
type NoteTheme = 'success' | 'processing' | 'danger' | 'warning' | 'purple' | 'default'
|
||||
|
||||
const PRESET_NOTE_TAGS: Array<{ label: string; theme: NoteTheme }> = [
|
||||
@@ -187,7 +197,7 @@ export default function WorkerOrdersPage() {
|
||||
|
||||
const ordersQuery = useQuery({
|
||||
queryKey: ['worker-my-orders', status, keyword, page, pageSize],
|
||||
queryFn: () => fetchWorkerMyOrders({ status, keyword, page, pageSize }),
|
||||
queryFn: () => fetchWorkerMyOrders(buildWorkerOrderQuery(status, keyword, page, pageSize)),
|
||||
retry: false,
|
||||
})
|
||||
const pagination = ordersQuery.data?.data.pagination
|
||||
@@ -208,11 +218,7 @@ export default function WorkerOrdersPage() {
|
||||
queryFn: async () => {
|
||||
const results = await Promise.all(
|
||||
STATUS_OPTIONS.map(async (item) => {
|
||||
const response = await fetchWorkerMyOrders({
|
||||
status: item.value,
|
||||
page: 1,
|
||||
pageSize: 1,
|
||||
})
|
||||
const response = await fetchWorkerMyOrders(buildWorkerOrderQuery(item.value, '', 1, 1))
|
||||
return [item.value || 'all', response.data.pagination.total] as const
|
||||
}),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user