刘光辉
9 小时以前 0dfe84494048ce27ba8449831782128412d3eb13
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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] || '未执行';
}