提交
This commit is contained in:
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' ? '生产过程' : '样本接收')
|
||||
}
|
||||
Reference in new issue
Block a user