feat: 增加打手工单备注
This commit is contained in:
@@ -416,6 +416,7 @@ export function mapWorkOrderForWorker(
|
||||
workOrder: WorkOrderRow,
|
||||
permissions: { depositFreeAmount: number },
|
||||
myShare?: WorkOrderShareRow | null,
|
||||
workerNote = '',
|
||||
) {
|
||||
const mapped = mapWorkOrderAdmin(workOrder)
|
||||
const {
|
||||
@@ -429,6 +430,7 @@ export function mapWorkOrderForWorker(
|
||||
return {
|
||||
...visibleOrder,
|
||||
freezeDepositAmount: resolveFreezeDepositAmount(workOrder, permissions),
|
||||
workerNote,
|
||||
myShare: myShare ? mapWorkOrderShare(myShare) : null,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,6 +48,7 @@ import {
|
||||
listWorkerFinanceRequests,
|
||||
listWorkerSharesByWorker,
|
||||
listWorkerWalletLedgers,
|
||||
listWorkerWorkOrderNotes,
|
||||
listWorkCategories,
|
||||
listWorkOrders,
|
||||
listWorkProductRules,
|
||||
@@ -67,6 +68,7 @@ import {
|
||||
updateWorkOrderDraftAcceptance,
|
||||
updateWorkOrderShareAcceptanceRecord,
|
||||
updateWorkOrderShareDraftAcceptance,
|
||||
upsertWorkerWorkOrderNote,
|
||||
updateWorkerPassword,
|
||||
updateWorkerUser,
|
||||
upsertWorkCategory,
|
||||
@@ -981,14 +983,69 @@ export async function listWorkerMyOrders(query: JsonObject = {}, session: Worker
|
||||
const myShareByOrderId = new Map(
|
||||
myShares.map((share) => [Number(share.work_order_id), share]),
|
||||
)
|
||||
const notes = await listWorkerWorkOrderNotes(
|
||||
worker.id,
|
||||
items.map((item) => Number(item.id)),
|
||||
)
|
||||
const noteByOrderId = new Map(
|
||||
notes.map((item) => [Number(item.work_order_id), String(item.note || '')]),
|
||||
)
|
||||
return {
|
||||
items: items.map((item) =>
|
||||
mapWorkOrderForWorker(item, permissions, myShareByOrderId.get(Number(item.id))),
|
||||
mapWorkOrderForWorker(
|
||||
item,
|
||||
permissions,
|
||||
myShareByOrderId.get(Number(item.id)),
|
||||
noteByOrderId.get(Number(item.id)) || '',
|
||||
),
|
||||
),
|
||||
pagination: { page, pageSize, total },
|
||||
}
|
||||
}
|
||||
|
||||
export async function saveWorkerOrderNote(
|
||||
workOrderId: number | string,
|
||||
payload: JsonObject = {},
|
||||
session: WorkerSession,
|
||||
) {
|
||||
requireActiveWorkerSession(session)
|
||||
const workOrder = await getRequiredWorkOrder(workOrderId)
|
||||
const workerId = Number(session.workerId)
|
||||
const note = String(payload.note || '').trim()
|
||||
if (note.length > 100) {
|
||||
throw createHttpError('备注不能超过 100 个字符', {
|
||||
statusCode: 400,
|
||||
errorCode: 'work_order_note_too_long',
|
||||
})
|
||||
}
|
||||
|
||||
const worker = await getRequiredWorker(workerId)
|
||||
const sharingShare = await getWorkOrderShare(workOrder.id, workerId)
|
||||
const isOrderOwner =
|
||||
Number(workOrder.assigned_worker_id || 0) === workerId ||
|
||||
Number(workOrder.last_assigned_worker_id || 0) === workerId
|
||||
if (!sharingShare && !isOrderOwner) {
|
||||
throw createHttpError('只能修改自己的订单备注', {
|
||||
statusCode: 403,
|
||||
errorCode: 'work_order_note_owner_required',
|
||||
})
|
||||
}
|
||||
const savedNote = await upsertWorkerWorkOrderNote({
|
||||
workOrderId: Number(workOrder.id),
|
||||
workerId,
|
||||
note,
|
||||
now: nowIso(),
|
||||
})
|
||||
return {
|
||||
order: mapWorkOrderForWorker(
|
||||
workOrder,
|
||||
resolveWorkerPermissions(worker),
|
||||
sharingShare,
|
||||
savedNote,
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
export async function joinWorkerSharingOrder(
|
||||
workOrderId: number | string,
|
||||
payload: JsonObject = {},
|
||||
|
||||
Reference in New Issue
Block a user