支持批量验收接单订单
This commit is contained in:
@@ -44,6 +44,7 @@ import ImagePreviewList from '@/components/files/ImagePreviewList'
|
||||
import PageHeader from '@/components/admin/PageHeader'
|
||||
import {
|
||||
acceptAdminWorkOrder,
|
||||
acceptAdminWorkOrders,
|
||||
assignAdminWorkOrderToWorker,
|
||||
createAdminMockWorkOrder,
|
||||
unassignAdminWorkOrder,
|
||||
@@ -124,6 +125,7 @@ export default function WorkOrdersPanel() {
|
||||
const [keywordInput, setKeywordInput] = useState('')
|
||||
const [page, setPage] = useState(1)
|
||||
const [pageSize, setPageSize] = useState(ADMIN_DEFAULT_PAGE_SIZE)
|
||||
const [selectedAcceptanceOrderIds, setSelectedAcceptanceOrderIds] = useState<number[]>([])
|
||||
const [detailOrder, setDetailOrder] = useState<WorkOrder | null>(null)
|
||||
const [problemOrder, setProblemOrder] = useState<WorkOrder | null>(null)
|
||||
const [resolutionOrder, setResolutionOrder] = useState<WorkOrder | null>(null)
|
||||
@@ -176,6 +178,10 @@ export default function WorkOrdersPanel() {
|
||||
enabled: Boolean(assignOrder),
|
||||
})
|
||||
|
||||
useEffect(() => {
|
||||
setSelectedAcceptanceOrderIds([])
|
||||
}, [status, keyword, page, pageSize])
|
||||
|
||||
function openAssignModal(row: WorkOrder) {
|
||||
setAssignOrder(row)
|
||||
setAssignWorkerId(undefined)
|
||||
@@ -304,6 +310,27 @@ export default function WorkOrdersPanel() {
|
||||
}
|
||||
}
|
||||
|
||||
function confirmBatchAcceptance() {
|
||||
const workOrderIds = selectedAcceptanceOrderIds
|
||||
if (workOrderIds.length === 0) {
|
||||
message.warning('请先选择待验收订单')
|
||||
return
|
||||
}
|
||||
modal.confirm({
|
||||
title: `确认验收 ${workOrderIds.length} 个订单?`,
|
||||
content: '验收通过后将结算打手奖励,并按配置处理押金。',
|
||||
okText: '一键验收',
|
||||
cancelText: '取消',
|
||||
onOk: async () => {
|
||||
const succeeded = await runAction(
|
||||
() => acceptAdminWorkOrders(workOrderIds),
|
||||
`已验收 ${workOrderIds.length} 个订单`,
|
||||
)
|
||||
if (succeeded) setSelectedAcceptanceOrderIds([])
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
async function submitProblem(values: { note?: string }) {
|
||||
if (!problemOrder) return
|
||||
const succeeded = await runAction(
|
||||
@@ -821,6 +848,16 @@ export default function WorkOrdersPanel() {
|
||||
title="接单工单"
|
||||
extra={
|
||||
<Space>
|
||||
{status === 'pending_acceptance' ? (
|
||||
<Button
|
||||
type="primary"
|
||||
icon={<CheckOutlined />}
|
||||
disabled={selectedAcceptanceOrderIds.length === 0}
|
||||
onClick={confirmBatchAcceptance}
|
||||
>
|
||||
批量验收({selectedAcceptanceOrderIds.length})
|
||||
</Button>
|
||||
) : null}
|
||||
<Button
|
||||
icon={<ReloadOutlined />}
|
||||
loading={ordersQuery.isFetching}
|
||||
@@ -837,6 +874,15 @@ export default function WorkOrdersPanel() {
|
||||
loading={ordersQuery.isLoading}
|
||||
dataSource={ordersQuery.data?.data.items || []}
|
||||
columns={columns}
|
||||
rowSelection={
|
||||
status === 'pending_acceptance'
|
||||
? {
|
||||
selectedRowKeys: selectedAcceptanceOrderIds,
|
||||
onChange: (selectedRowKeys) =>
|
||||
setSelectedAcceptanceOrderIds(selectedRowKeys.map((item) => Number(item))),
|
||||
}
|
||||
: undefined
|
||||
}
|
||||
pagination={buildAdminTablePagination({
|
||||
current: ordersPagination?.page || page,
|
||||
pageSize: ordersPagination?.pageSize || pageSize,
|
||||
|
||||
@@ -313,6 +313,13 @@ export function acceptAdminWorkOrder(workOrderId: number) {
|
||||
)
|
||||
}
|
||||
|
||||
export function acceptAdminWorkOrders(workOrderIds: number[]) {
|
||||
return apiPost<{ orders: WorkOrder[] }>(
|
||||
'/api/v1/admin/worker-platform/orders/accept-batch',
|
||||
{ workOrderIds },
|
||||
)
|
||||
}
|
||||
|
||||
export function deductAdminWorkOrderPendingDeposit(
|
||||
workOrderId: number,
|
||||
payload: { amount: number; note: string },
|
||||
|
||||
Reference in New Issue
Block a user