This commit is contained in:
zlwu committed 2026-06-12 15:17:54 +08:00
1 parent 4ea71a1bae
commit 3abe69c1cc
83 files changed
+33505 -21867

No files matched your search

@@ -0,0 +1,42 @@
import type { QcWorkOrder } from '@/api/qc-work-order'
export type QcWorkOrderSampleGroupModel = {
groupKey: string
sampleCode: string
workOrders: QcWorkOrder[]
}
function triggerSortWeight(row: QcWorkOrder) {
return (row.triggerSource || 'reception') === 'reception' ? 0 : 1
}
function sortWorkOrdersInGroup(rows: QcWorkOrder[]) {
return [...rows].sort((a, b) => {
const byTrigger = triggerSortWeight(a) - triggerSortWeight(b)
if (byTrigger !== 0) return byTrigger
return String(a.createTime || '').localeCompare(String(b.createTime || ''))
})
}
/** 入库 Tab:按样本编码分组(前端分组,分页仍按工单条数) */
export function groupInboundQcWorkOrders(rows: QcWorkOrder[]): QcWorkOrderSampleGroupModel[] {
const map = new Map<string, QcWorkOrder[]>()
for (const row of rows) {
const key = (row.sampleCode || '').trim() || row.id
const list = map.get(key)
if (list) list.push(row)
else map.set(key, [row])
}
return Array.from(map.entries()).map(([groupKey, workOrders]) => {
const sorted = sortWorkOrdersInGroup(workOrders)
return {
groupKey,
sampleCode: sorted[0]?.sampleCode || '',
workOrders: sorted
}
})
}
export function triggerSourceTabLabel(row: QcWorkOrder) {
return row.triggerSourceLabel || ((row.triggerSource || 'reception') === 'production' ? '生产过程' : '样本接收')
}