import type { SxtKanbanItem, SxtKanbanRow } from '#/api/x/lims/shiyanshi/sxt';
|
|
const renwuStatusLabels: Record<SxtKanbanItem['renwu_zhuangtai'], string> = {
|
blocked_config_invalid: '配置无效(已阻断)',
|
generated: '已请验',
|
generating: '未执行',
|
pending: '未执行',
|
};
|
|
export function getTaskRowKey(
|
item: Pick<SxtKanbanItem | SxtKanbanRow, 'quyang_didian' | 'quyangdian_bianhao' | 'suoshu_chejian' | 'yangpin_leixing'> & {
|
quyangdian_id?: string;
|
},
|
) {
|
if (item.quyangdian_id) return item.quyangdian_id;
|
return `${item.yangpin_leixing || ''}__${item.suoshu_chejian || ''}__${item.quyang_didian || ''}__${item.quyangdian_bianhao || ''}`;
|
}
|
|
export function buildTaskCellMap<
|
T extends Pick<SxtKanbanItem, 'jihua_riqi' | 'quyang_didian' | 'quyangdian_bianhao' | 'suoshu_chejian' | 'yangpin_leixing'> & {
|
quyangdian_id?: string;
|
},
|
>(items: T[]) {
|
const result = new Map<string, T[]>();
|
for (const item of items) {
|
const key = `${getTaskRowKey(item)}|${item.jihua_riqi}`;
|
const cellItems = result.get(key) || [];
|
cellItems.push(item);
|
result.set(key, cellItems);
|
}
|
return result;
|
}
|
|
export function getTaskCellState(items: Array<Pick<SxtKanbanItem, 'renwu_zhuangtai'>>) {
|
if (items.some((item) => item.renwu_zhuangtai === 'blocked_config_invalid')) return 'blocked';
|
return items.length > 0 && items.every((item) => item.renwu_zhuangtai === 'generated') ? 'done' : 'pending';
|
}
|
|
export function getTaskDisplayStatus(item: Pick<SxtKanbanItem, 'renwu_zhuangtai'>) {
|
return renwuStatusLabels[item.renwu_zhuangtai] || '未执行';
|
}
|