feat: 物品规则接单金额可填0并限制零元发布,客服增加发单指派权限
- 物品规则接单金额允许填 0(按数量计价不受影响) - 接单金额为 0 的工单禁止发布:前端发布按钮置灰 + 后端 409 拦截 - 客服(support)获得发布工单与指派打手权限
This commit is contained in:
@@ -344,7 +344,7 @@ router.put(
|
|||||||
|
|
||||||
router.post(
|
router.post(
|
||||||
'/worker-platform/orders/:workOrderId/assign',
|
'/worker-platform/orders/:workOrderId/assign',
|
||||||
requireAdminRoles(['admin', 'operator']),
|
requireAdminRoles(['admin', 'operator', 'support']),
|
||||||
createJsonHandler(
|
createJsonHandler(
|
||||||
(req) => assignAdminWorkOrderToWorker(String(req.params.workOrderId || ''), req.body || {}),
|
(req) => assignAdminWorkOrderToWorker(String(req.params.workOrderId || ''), req.body || {}),
|
||||||
{
|
{
|
||||||
@@ -379,7 +379,7 @@ router.delete(
|
|||||||
|
|
||||||
router.post(
|
router.post(
|
||||||
'/worker-platform/orders/:workOrderId/publish',
|
'/worker-platform/orders/:workOrderId/publish',
|
||||||
requireAdminRoles(['admin', 'operator']),
|
requireAdminRoles(['admin', 'operator', 'support']),
|
||||||
createJsonHandler((req) => publishAdminWorkOrder(String(req.params.workOrderId || '')), {
|
createJsonHandler((req) => publishAdminWorkOrder(String(req.params.workOrderId || '')), {
|
||||||
successMessage: '订单已发布到抢单大厅',
|
successMessage: '订单已发布到抢单大厅',
|
||||||
errorMessage: '发布接单订单失败',
|
errorMessage: '发布接单订单失败',
|
||||||
|
|||||||
@@ -247,11 +247,6 @@ export async function saveAdminWorkProductRule(payload: JsonObject = {}) {
|
|||||||
errorCode: 'work_product_rule_sharing_amount_invalid',
|
errorCode: 'work_product_rule_sharing_amount_invalid',
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
} else if (rewardAmount <= 0 && unitPriceFen <= 0) {
|
|
||||||
throw createHttpError('接单金额必须大于 0', {
|
|
||||||
statusCode: 400,
|
|
||||||
errorCode: 'work_product_rule_reward_invalid',
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
const finalRewardAmount = sharingEnabled ? resolvedSharingTotalAmount : rewardAmount
|
const finalRewardAmount = sharingEnabled ? resolvedSharingTotalAmount : rewardAmount
|
||||||
|
|
||||||
@@ -1001,6 +996,12 @@ export async function publishAdminWorkOrder(workOrderId: number | string) {
|
|||||||
errorCode: 'work_order_publish_status_invalid',
|
errorCode: 'work_order_publish_status_invalid',
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
if (Number(workOrder.reward_amount || 0) <= 0) {
|
||||||
|
throw createHttpError('接单金额为 0,无法发布到大厅', {
|
||||||
|
statusCode: 409,
|
||||||
|
errorCode: 'work_order_publish_reward_invalid',
|
||||||
|
})
|
||||||
|
}
|
||||||
const now = nowIso()
|
const now = nowIso()
|
||||||
const updated = await updateWorkOrder(workOrder.id, {
|
const updated = await updateWorkOrder(workOrder.id, {
|
||||||
status: WORK_ORDER_STATUS.OPEN,
|
status: WORK_ORDER_STATUS.OPEN,
|
||||||
|
|||||||
@@ -454,9 +454,13 @@ export default function ProductRulesPanel() {
|
|||||||
/>
|
/>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
) : (
|
) : (
|
||||||
<Form.Item label="接单金额" name="rewardAmount">
|
<Form.Item
|
||||||
|
label="接单金额"
|
||||||
|
name="rewardAmount"
|
||||||
|
extra="可填 0,但接单金额为 0 的工单不能发布到大厅"
|
||||||
|
>
|
||||||
<InputNumber
|
<InputNumber
|
||||||
min={0.01}
|
min={0}
|
||||||
step={1}
|
step={1}
|
||||||
addonAfter="元"
|
addonAfter="元"
|
||||||
className="full-width"
|
className="full-width"
|
||||||
|
|||||||
@@ -661,6 +661,12 @@ export default function WorkOrdersPanel() {
|
|||||||
{row.status === 'unassigned' ? (
|
{row.status === 'unassigned' ? (
|
||||||
<Button
|
<Button
|
||||||
icon={<SendOutlined />}
|
icon={<SendOutlined />}
|
||||||
|
disabled={Number(row.rewardAmount || 0) <= 0}
|
||||||
|
title={
|
||||||
|
Number(row.rewardAmount || 0) <= 0
|
||||||
|
? '接单金额为 0,不能发布到大厅'
|
||||||
|
: undefined
|
||||||
|
}
|
||||||
onClick={() =>
|
onClick={() =>
|
||||||
runAction(
|
runAction(
|
||||||
() => publishAdminWorkOrder(row.workOrderId),
|
() => publishAdminWorkOrder(row.workOrderId),
|
||||||
|
|||||||
Reference in New Issue
Block a user