Merge branch 'dev1023' into dev
解决 9 个冲突文件,并修复合并后遗留问题: - 大厅候选集:采用 FIFO 窗口 + 全部置顶单 UNION(列表与抢单/拼单复核同源) - 拼单份额:采用多次参与模型(每次参与 INSERT 新份额、requestId 幂等), 取消后可重新参与;移除 HEAD 已废弃的单行 rejoin 逻辑与对应测试 - 工单迁移与成本中心 103–108 编号撞车:合并重写为 109_work_order_share_participation / 110_work_order_hall_and_shop_indexes; 临时库全量执行与重跑幂等验证通过(10 列、唯一键已删、7 个索引) - 实时补丁:保留个性化字段、置顶重排、分页总数同步;补回 orderTimelineVisible 类型 - 打手大厅:保留 memo 组件化,移植「再拼一次」多份额按钮逻辑 - 全项目表格统一 PercentTable:WorkerOrderShareTable 改造 验证:backend typecheck/lint/check:sql/test(833 pass)、 frontend typecheck/lint/test(172 pass)/build 全绿。
This commit is contained in:
@@ -7,7 +7,10 @@ import {
|
||||
cancelAdminWorkOrderSharing,
|
||||
deductAdminWorkOrderPendingDeposit,
|
||||
markAdminWorkOrderProblem,
|
||||
markAdminWorkOrderShareProblem,
|
||||
reduceAdminWorkOrderShareQuantity,
|
||||
resolveAdminProblemWorkOrder,
|
||||
disposeAdminWorkOrderShareProblem,
|
||||
} from '../../../services/worker-platform/index.js'
|
||||
import { createJsonHandler, requireAdminPermission, requireAnyAdminPermission } from '../session.js'
|
||||
|
||||
@@ -148,7 +151,7 @@ router.post(
|
||||
req.adminSession?.displayName || req.adminSession?.username || '',
|
||||
),
|
||||
{
|
||||
successMessage: '拼单参与者已撤单,份数已退回大厅',
|
||||
successMessage: '拼单参与者已撤单,押金已退还,母单状态保持不变',
|
||||
errorMessage: '撤销拼单参与者失败',
|
||||
scope: '[admin/worker-platform/orders/:workOrderId/shares/:shareId/cancel]',
|
||||
audit: (req, data) => ({
|
||||
@@ -161,6 +164,84 @@ router.post(
|
||||
),
|
||||
)
|
||||
|
||||
// 按份数撤销部分份额:减少的份数自动回到大厅,押金保持原冻结额。
|
||||
router.post(
|
||||
'/worker-platform/orders/:workOrderId/shares/:shareId/reduce-quantity',
|
||||
requireAdminPermission('worker_order.cancel_share'),
|
||||
createJsonHandler(
|
||||
(req) =>
|
||||
reduceAdminWorkOrderShareQuantity(
|
||||
String(req.params.workOrderId || ''),
|
||||
String(req.params.shareId || ''),
|
||||
req.body || {},
|
||||
req.adminSession?.displayName || req.adminSession?.username || '',
|
||||
),
|
||||
{
|
||||
successMessage: '已撤销指定份数,剩余份数继续履约',
|
||||
errorMessage: '撤销拼单份额失败',
|
||||
scope: '[admin/worker-platform/orders/:workOrderId/shares/:shareId/reduce-quantity]',
|
||||
audit: (req, data) => ({
|
||||
action: 'work_order_share_quantity_reduced',
|
||||
targetType: 'work_order_share',
|
||||
targetId: String(req.params.shareId || ''),
|
||||
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
|
||||
}),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
// 份额级问题单:只影响该份额持有人,母单状态不变。
|
||||
router.post(
|
||||
'/worker-platform/orders/:workOrderId/shares/:shareId/problem',
|
||||
requireAdminPermission('worker_order.manage_problem'),
|
||||
createJsonHandler(
|
||||
(req) =>
|
||||
markAdminWorkOrderShareProblem(
|
||||
String(req.params.workOrderId || ''),
|
||||
String(req.params.shareId || ''),
|
||||
req.body || {},
|
||||
req.adminSession?.displayName || req.adminSession?.username || '',
|
||||
),
|
||||
{
|
||||
successMessage: '该份额已标记为问题单,仅影响该打手',
|
||||
errorMessage: '标记份额问题单失败',
|
||||
scope: '[admin/worker-platform/orders/:workOrderId/shares/:shareId/problem]',
|
||||
audit: (req, data) => ({
|
||||
action: 'work_order_share_marked_problem',
|
||||
targetType: 'work_order_share',
|
||||
targetId: String(req.params.shareId || ''),
|
||||
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
|
||||
}),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
// 份额级问题单处置:处置方式与母单一致,但只作用于这一份份额,母单状态不变。
|
||||
router.post(
|
||||
'/worker-platform/orders/:workOrderId/shares/:shareId/problem/dispose',
|
||||
requireAdminPermission('worker_order.manage_problem'),
|
||||
createJsonHandler(
|
||||
(req) =>
|
||||
disposeAdminWorkOrderShareProblem(
|
||||
String(req.params.workOrderId || ''),
|
||||
String(req.params.shareId || ''),
|
||||
req.body || {},
|
||||
req.adminSession?.displayName || req.adminSession?.username || '',
|
||||
),
|
||||
{
|
||||
successMessage: '该份额问题单已处置',
|
||||
errorMessage: '处置份额问题单失败',
|
||||
scope: '[admin/worker-platform/orders/:workOrderId/shares/:shareId/problem/dispose]',
|
||||
audit: (req, data) => ({
|
||||
action: 'work_order_share_problem_disposed',
|
||||
targetType: 'work_order_share',
|
||||
targetId: String(req.params.shareId || ''),
|
||||
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
|
||||
}),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/worker-platform/orders/:workOrderId/deduct-pending-deposit',
|
||||
requireAdminPermission('worker_order.deduct_deposit'),
|
||||
|
||||
Reference in New Issue
Block a user