接单工单新增流转记录(订单详情时间线)
- 后端:新增工单事件查询接口(管理端 + 打手端),事件带操作人显示名(管理员用户名 / 打手昵称 / 系统) - 补齐关键节点事件:抢单接手(grabbed)、验收通过(accepted 带操作人) - 管理端/打手端事件写入操作人(admin session username 贯通至事件) - 前端:订单详情新增「流转记录」时间线,按订单生命周期节点展示(创建/发单/接手/资料/验收/问题/取消),时间+操作人+状态流转
This commit is contained in:
@@ -15,6 +15,7 @@ import {
|
||||
deleteAdminWorkerLevel,
|
||||
getAdminWorkerFinanceConfig,
|
||||
getAdminWorkerPlatformSummary,
|
||||
getAdminWorkOrderEvents,
|
||||
getAdminWorkOrderSharing,
|
||||
listAdminWorkerFinanceRequests,
|
||||
listAdminWorkCategories,
|
||||
@@ -311,7 +312,12 @@ router.post(
|
||||
'/worker-platform/orders/:workOrderId/material',
|
||||
requireAdminRoles(['admin', 'operator', 'support']),
|
||||
createJsonHandler(
|
||||
(req) => submitAdminWorkOrderMaterial(String(req.params.workOrderId || ''), req.body || {}),
|
||||
(req) =>
|
||||
submitAdminWorkOrderMaterial(
|
||||
String(req.params.workOrderId || ''),
|
||||
req.body || {},
|
||||
req.adminSession?.username || '',
|
||||
),
|
||||
{
|
||||
successMessage: '订单资料已保存',
|
||||
errorMessage: '补充订单资料失败',
|
||||
@@ -333,6 +339,7 @@ router.put(
|
||||
(req) =>
|
||||
updateAdminWorkOrder(String(req.params.workOrderId || ''), req.body || {}, {
|
||||
canEditRequirementFields: req.adminSession?.role !== 'support',
|
||||
actorName: req.adminSession?.username || '',
|
||||
}),
|
||||
{
|
||||
successMessage: '工单信息已保存',
|
||||
@@ -352,7 +359,12 @@ router.post(
|
||||
'/worker-platform/orders/:workOrderId/assign',
|
||||
requireAdminRoles(['admin', 'operator', 'support']),
|
||||
createJsonHandler(
|
||||
(req) => assignAdminWorkOrderToWorker(String(req.params.workOrderId || ''), req.body || {}),
|
||||
(req) =>
|
||||
assignAdminWorkOrderToWorker(
|
||||
String(req.params.workOrderId || ''),
|
||||
req.body || {},
|
||||
req.adminSession?.username || '',
|
||||
),
|
||||
{
|
||||
successMessage: '已指派打手',
|
||||
errorMessage: '指派打手失败',
|
||||
@@ -370,24 +382,36 @@ router.post(
|
||||
router.post(
|
||||
'/worker-platform/orders/:workOrderId/unassign',
|
||||
requireAdminRoles(['admin', 'operator', 'support']),
|
||||
createJsonHandler((req) => unassignAdminWorkOrder(String(req.params.workOrderId || '')), {
|
||||
successMessage: '已取消指派',
|
||||
errorMessage: '取消指派失败',
|
||||
scope: '[admin/worker-platform/orders/:workOrderId/unassign]',
|
||||
audit: (req, data) => ({
|
||||
action: 'work_order_worker_unassigned',
|
||||
targetType: 'work_order',
|
||||
targetId: String(req.params.workOrderId || ''),
|
||||
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
|
||||
}),
|
||||
}),
|
||||
createJsonHandler(
|
||||
(req) =>
|
||||
unassignAdminWorkOrder(
|
||||
String(req.params.workOrderId || ''),
|
||||
req.adminSession?.username || '',
|
||||
),
|
||||
{
|
||||
successMessage: '已取消指派',
|
||||
errorMessage: '取消指派失败',
|
||||
scope: '[admin/worker-platform/orders/:workOrderId/unassign]',
|
||||
audit: (req, data) => ({
|
||||
action: 'work_order_worker_unassigned',
|
||||
targetType: 'work_order',
|
||||
targetId: String(req.params.workOrderId || ''),
|
||||
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
|
||||
}),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/worker-platform/orders/:workOrderId/cancel',
|
||||
requireAdminRoles(['admin', 'operator', 'support']),
|
||||
createJsonHandler(
|
||||
(req) => cancelAdminWorkOrder(String(req.params.workOrderId || ''), req.body || {}),
|
||||
(req) =>
|
||||
cancelAdminWorkOrder(
|
||||
String(req.params.workOrderId || ''),
|
||||
req.body || {},
|
||||
req.adminSession?.username || '',
|
||||
),
|
||||
{
|
||||
successMessage: '撤单处理完成,打手额度已恢复',
|
||||
errorMessage: '撤单失败',
|
||||
@@ -424,40 +448,56 @@ router.delete(
|
||||
router.post(
|
||||
'/worker-platform/orders/:workOrderId/publish',
|
||||
requireAdminRoles(['admin', 'operator', 'support']),
|
||||
createJsonHandler((req) => publishAdminWorkOrder(String(req.params.workOrderId || '')), {
|
||||
successMessage: '订单已发布到抢单大厅',
|
||||
errorMessage: '发布接单订单失败',
|
||||
scope: '[admin/worker-platform/orders/:workOrderId/publish]',
|
||||
audit: (req, data) => ({
|
||||
action: 'work_order_published',
|
||||
targetType: 'work_order',
|
||||
targetId: String(req.params.workOrderId || ''),
|
||||
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
|
||||
}),
|
||||
}),
|
||||
createJsonHandler(
|
||||
(req) =>
|
||||
publishAdminWorkOrder(String(req.params.workOrderId || ''), req.adminSession?.username || ''),
|
||||
{
|
||||
successMessage: '订单已发布到抢单大厅',
|
||||
errorMessage: '发布接单订单失败',
|
||||
scope: '[admin/worker-platform/orders/:workOrderId/publish]',
|
||||
audit: (req, data) => ({
|
||||
action: 'work_order_published',
|
||||
targetType: 'work_order',
|
||||
targetId: String(req.params.workOrderId || ''),
|
||||
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
|
||||
}),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/worker-platform/orders/:workOrderId/unpublish',
|
||||
requireAdminRoles(['admin', 'operator', 'support']),
|
||||
createJsonHandler((req) => unpublishAdminWorkOrder(String(req.params.workOrderId || '')), {
|
||||
successMessage: '订单已撤回到未分配',
|
||||
errorMessage: '下架接单订单失败',
|
||||
scope: '[admin/worker-platform/orders/:workOrderId/unpublish]',
|
||||
audit: (req, data) => ({
|
||||
action: 'work_order_unpublished',
|
||||
targetType: 'work_order',
|
||||
targetId: String(req.params.workOrderId || ''),
|
||||
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
|
||||
}),
|
||||
}),
|
||||
createJsonHandler(
|
||||
(req) =>
|
||||
unpublishAdminWorkOrder(
|
||||
String(req.params.workOrderId || ''),
|
||||
req.adminSession?.username || '',
|
||||
),
|
||||
{
|
||||
successMessage: '订单已撤回到未分配',
|
||||
errorMessage: '下架接单订单失败',
|
||||
scope: '[admin/worker-platform/orders/:workOrderId/unpublish]',
|
||||
audit: (req, data) => ({
|
||||
action: 'work_order_unpublished',
|
||||
targetType: 'work_order',
|
||||
targetId: String(req.params.workOrderId || ''),
|
||||
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
|
||||
}),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/worker-platform/orders/:workOrderId/pin',
|
||||
requireAdminRoles(['admin', 'operator', 'support']),
|
||||
createJsonHandler(
|
||||
(req) => pinAdminWorkOrder(String(req.params.workOrderId || ''), req.body || {}),
|
||||
(req) =>
|
||||
pinAdminWorkOrder(
|
||||
String(req.params.workOrderId || ''),
|
||||
req.body || {},
|
||||
req.adminSession?.username || '',
|
||||
),
|
||||
{
|
||||
successMessage: '置顶状态已更新',
|
||||
errorMessage: '更新置顶状态失败',
|
||||
@@ -482,11 +522,26 @@ router.get(
|
||||
}),
|
||||
)
|
||||
|
||||
router.get(
|
||||
'/worker-platform/orders/:workOrderId/events',
|
||||
requireAdminRoles(['admin', 'operator', 'support']),
|
||||
createJsonHandler((req) => getAdminWorkOrderEvents(String(req.params.workOrderId || '')), {
|
||||
successMessage: 'ok',
|
||||
errorMessage: '读取工单流转记录失败',
|
||||
scope: '[admin/worker-platform/orders/:workOrderId/events]',
|
||||
}),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/worker-platform/orders/:workOrderId/sharing',
|
||||
requireAdminRoles(['admin', 'operator']),
|
||||
createJsonHandler(
|
||||
(req) => updateAdminWorkOrderSharing(String(req.params.workOrderId || ''), req.body || {}),
|
||||
(req) =>
|
||||
updateAdminWorkOrderSharing(
|
||||
String(req.params.workOrderId || ''),
|
||||
req.body || {},
|
||||
req.adminSession?.username || '',
|
||||
),
|
||||
{
|
||||
successMessage: '拼单配置已保存',
|
||||
errorMessage: '保存拼单配置失败',
|
||||
@@ -505,7 +560,12 @@ router.post(
|
||||
'/worker-platform/orders/:workOrderId/problem',
|
||||
requireAdminRoles(['admin', 'operator', 'support']),
|
||||
createJsonHandler(
|
||||
(req) => markAdminWorkOrderProblem(String(req.params.workOrderId || ''), req.body || {}),
|
||||
(req) =>
|
||||
markAdminWorkOrderProblem(
|
||||
String(req.params.workOrderId || ''),
|
||||
req.body || {},
|
||||
req.adminSession?.username || '',
|
||||
),
|
||||
{
|
||||
successMessage: '订单已标记为问题单',
|
||||
errorMessage: '标记问题单失败',
|
||||
@@ -524,7 +584,12 @@ router.post(
|
||||
'/worker-platform/orders/:workOrderId/problem/resolve',
|
||||
requireAdminRoles(['admin', 'operator']),
|
||||
createJsonHandler(
|
||||
(req) => resolveAdminProblemWorkOrder(String(req.params.workOrderId || ''), req.body || {}),
|
||||
(req) =>
|
||||
resolveAdminProblemWorkOrder(
|
||||
String(req.params.workOrderId || ''),
|
||||
req.body || {},
|
||||
req.adminSession?.username || '',
|
||||
),
|
||||
{
|
||||
successMessage: '问题单已处置',
|
||||
errorMessage: '处置问题单失败',
|
||||
@@ -542,35 +607,42 @@ router.post(
|
||||
router.post(
|
||||
'/worker-platform/orders/:workOrderId/accept',
|
||||
requireAdminRoles(['admin', 'operator']),
|
||||
createJsonHandler((req) => acceptAdminWorkOrder(String(req.params.workOrderId || '')), {
|
||||
successMessage: '订单已验收通过',
|
||||
errorMessage: '验收接单订单失败',
|
||||
scope: '[admin/worker-platform/orders/:workOrderId/accept]',
|
||||
audit: (req, data) => ({
|
||||
action: 'work_order_accepted',
|
||||
targetType: 'work_order',
|
||||
targetId: String(req.params.workOrderId || ''),
|
||||
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
|
||||
}),
|
||||
}),
|
||||
createJsonHandler(
|
||||
(req) =>
|
||||
acceptAdminWorkOrder(String(req.params.workOrderId || ''), req.adminSession?.username || ''),
|
||||
{
|
||||
successMessage: '订单已验收通过',
|
||||
errorMessage: '验收接单订单失败',
|
||||
scope: '[admin/worker-platform/orders/:workOrderId/accept]',
|
||||
audit: (req, data) => ({
|
||||
action: 'work_order_accepted',
|
||||
targetType: 'work_order',
|
||||
targetId: String(req.params.workOrderId || ''),
|
||||
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
|
||||
}),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/worker-platform/orders/accept-batch',
|
||||
requireAdminRoles(['admin', 'operator']),
|
||||
createJsonHandler((req) => acceptAdminWorkOrders(req.body || {}), {
|
||||
successMessage: '选中订单已验收通过',
|
||||
errorMessage: '批量验收接单订单失败',
|
||||
scope: '[admin/worker-platform/orders/accept-batch]',
|
||||
audit: (req, data) => ({
|
||||
action: 'work_orders_batch_accepted',
|
||||
targetType: 'work_order',
|
||||
targetId: Array.isArray(req.body?.workOrderIds)
|
||||
? req.body.workOrderIds.map((item: unknown) => String(item)).join(',')
|
||||
: '',
|
||||
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
|
||||
}),
|
||||
}),
|
||||
createJsonHandler(
|
||||
(req) => acceptAdminWorkOrders(req.body || {}, req.adminSession?.username || ''),
|
||||
{
|
||||
successMessage: '选中订单已验收通过',
|
||||
errorMessage: '批量验收接单订单失败',
|
||||
scope: '[admin/worker-platform/orders/accept-batch]',
|
||||
audit: (req, data) => ({
|
||||
action: 'work_orders_batch_accepted',
|
||||
targetType: 'work_order',
|
||||
targetId: Array.isArray(req.body?.workOrderIds)
|
||||
? req.body.workOrderIds.map((item: unknown) => String(item)).join(',')
|
||||
: '',
|
||||
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
|
||||
}),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
router.post(
|
||||
@@ -578,7 +650,11 @@ router.post(
|
||||
requireAdminRoles(['admin', 'operator']),
|
||||
createJsonHandler(
|
||||
(req) =>
|
||||
deductAdminWorkOrderPendingDeposit(String(req.params.workOrderId || ''), req.body || {}),
|
||||
deductAdminWorkOrderPendingDeposit(
|
||||
String(req.params.workOrderId || ''),
|
||||
req.body || {},
|
||||
req.adminSession?.username || '',
|
||||
),
|
||||
{
|
||||
successMessage: '待解冻押金已扣减',
|
||||
errorMessage: '扣减待解冻押金失败',
|
||||
|
||||
Reference in New Issue
Block a user