fix(WEB): 작업지시 개소 균등 분배 + 작업일지/작업자 화면 글자 크기 통일
- WorkOrderDetail 동일 그룹 시 인덱스 기반 균등 분배 로직 추가 - ScreenWorkLogContent LOT/품명 text-[10px] 제거 - WorkOrderListPanel 품목명 text-xs → text-sm
This commit is contained in:
@@ -513,13 +513,36 @@ export function WorkOrderDetail({ orderId }: WorkOrderDetailProps) {
|
||||
{(() => {
|
||||
// 개소(층/부호)별로 그룹화
|
||||
const nodeGroups = new Map<string, { label: string; items: typeof order.items }>();
|
||||
for (const item of order.items) {
|
||||
const key = item.floorCode !== '-' ? item.floorCode : (item.orderNodeId != null ? String(item.orderNodeId) : 'none');
|
||||
const label = item.floorCode !== '-' ? item.floorCode : item.orderNodeName;
|
||||
if (!nodeGroups.has(key)) {
|
||||
nodeGroups.set(key, { label, items: [] });
|
||||
|
||||
// 모든 아이템이 동일 그룹으로 들어가는지 확인
|
||||
const uniqueKeys = new Set(order.items.map(item =>
|
||||
item.floorCode !== '-' ? item.floorCode : String(item.orderNodeId ?? 'none')
|
||||
));
|
||||
const allSameGroup = uniqueKeys.size <= 1;
|
||||
const locationCount = order.shutterCount || 1;
|
||||
|
||||
if (allSameGroup && locationCount > 1) {
|
||||
// 인덱스 기반 균등 분배
|
||||
const itemsPerLoc = Math.ceil(order.items.length / locationCount);
|
||||
for (let loc = 0; loc < locationCount; loc++) {
|
||||
const start = loc * itemsPerLoc;
|
||||
const end = Math.min(start + itemsPerLoc, order.items.length);
|
||||
if (start >= order.items.length) break;
|
||||
const key = `loc-${loc}`;
|
||||
nodeGroups.set(key, {
|
||||
label: `개소 ${loc + 1}`,
|
||||
items: order.items.slice(start, end),
|
||||
});
|
||||
}
|
||||
} else {
|
||||
for (const item of order.items) {
|
||||
const key = item.floorCode !== '-' ? item.floorCode : (item.orderNodeId != null ? String(item.orderNodeId) : 'none');
|
||||
const label = item.floorCode !== '-' ? item.floorCode : item.orderNodeName;
|
||||
if (!nodeGroups.has(key)) {
|
||||
nodeGroups.set(key, { label, items: [] });
|
||||
}
|
||||
nodeGroups.get(key)!.items.push(item);
|
||||
}
|
||||
nodeGroups.get(key)!.items.push(item);
|
||||
}
|
||||
|
||||
const rows: React.ReactNode[] = [];
|
||||
|
||||
@@ -271,8 +271,8 @@ export function ScreenWorkLogContent({ data: order, materialLots = [] }: ScreenW
|
||||
return (
|
||||
<tr key={item.id}>
|
||||
<td className="border border-gray-400 p-1 text-center">{idx + 1}</td>
|
||||
<td className="border border-gray-400 p-1 text-center text-[10px]">{lotNoDisplay}</td>
|
||||
<td className="border border-gray-400 p-1 text-[10px]">{item.productName}</td>
|
||||
<td className="border border-gray-400 p-1 text-center">{lotNoDisplay}</td>
|
||||
<td className="border border-gray-400 p-1">{item.productName}</td>
|
||||
<td className="border border-gray-400 p-1 text-center whitespace-nowrap">{getSymbolCode(item.floorCode)}</td>
|
||||
<td className="border border-gray-400 p-1 text-center whitespace-nowrap font-bold text-red-600">{fmt(item.width)}</td>
|
||||
<td className="border border-gray-400 p-1 text-center whitespace-nowrap font-bold text-red-600">{fmt(item.height)}</td>
|
||||
|
||||
@@ -75,7 +75,7 @@ export function WorkOrderListPanel({
|
||||
</div>
|
||||
|
||||
{/* 품목명 */}
|
||||
<p className="text-xs text-gray-600 truncate ml-8">{order.productName}</p>
|
||||
<p className="text-sm text-gray-600 truncate ml-8">{order.productName}</p>
|
||||
|
||||
{/* 현장명 + 수량 */}
|
||||
<div className="flex items-center justify-between mt-1.5 ml-8">
|
||||
|
||||
Reference in New Issue
Block a user