fix:优化再拼一次bug,优化打手端移动端拼单列表显示
This commit is contained in:
@@ -98,6 +98,7 @@ export {
|
||||
resolveWorkOrderOperationalStatus,
|
||||
resolveWorkerShareProductName,
|
||||
resolveWorkerShareStatus,
|
||||
stripWorkerPersonalShareFields,
|
||||
} from './work-order-display-mappers.js'
|
||||
|
||||
export {
|
||||
|
||||
@@ -6,6 +6,7 @@ import {
|
||||
isWorkerOrderVipEvidencePending,
|
||||
pickWorkerRepresentativeShare,
|
||||
resolveWorkerOrderStatusTabs,
|
||||
stripWorkerPersonalShareFields,
|
||||
summarizeWorkerShares,
|
||||
} from './work-order-display-mappers.js'
|
||||
|
||||
@@ -248,3 +249,18 @@ test('份额级问题单:已验收份额被标记后只归问题单,母单
|
||||
})
|
||||
assert.deepEqual(tabs, ['problem'])
|
||||
})
|
||||
|
||||
test('大厅广播快照必须剔除打手私有份额字段', () => {
|
||||
const snapshot = stripWorkerPersonalShareFields({
|
||||
workOrderId: 1,
|
||||
myShare: null,
|
||||
myShares: [],
|
||||
sharingProgress: { joinedQuantity: 2, pendingSubmissionCount: 1 },
|
||||
})
|
||||
// 前端对广播行做浅合并:带 null/[] 过去会把缓存里的个人份额冲掉,
|
||||
// 表现为拼单成功后按钮变回「拼单 ¥x/份」。
|
||||
assert.equal('myShare' in snapshot, false)
|
||||
assert.equal('myShares' in snapshot, false)
|
||||
assert.deepEqual(snapshot.sharingProgress, { joinedQuantity: 2, pendingSubmissionCount: 1 })
|
||||
assert.equal(snapshot.workOrderId, 1)
|
||||
})
|
||||
|
||||
@@ -605,6 +605,22 @@ export function mapWorkOrderForWorker(
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 大厅广播快照必须剔除打手私有字段。
|
||||
*
|
||||
* 大厅广播是发给所有打手的通用快照,`myShare`/`myShares` 只有本人可见。
|
||||
* 若原样带 `null`/`[]` 过去,前端 `patchWorkerWorkOrderListEnvelope` 的浅合并
|
||||
* 会用空值覆盖行上已有的个人份额,按钮从「再拼一次」变回「拼单 ¥x/份」。
|
||||
*/
|
||||
export function stripWorkerPersonalShareFields<T extends { myShare?: unknown; myShares?: unknown }>(
|
||||
snapshot: T,
|
||||
): Record<string, unknown> {
|
||||
const result: Record<string, unknown> = { ...snapshot }
|
||||
delete result.myShare
|
||||
delete result.myShares
|
||||
return result
|
||||
}
|
||||
|
||||
/**
|
||||
* 抢单大厅专用轻量映射。
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user