fix(WEB): 작업일지 담당자 정보 및 슬랫 데이터 파이프라인 연동
- 작업일지(스크린/슬랫/절곡): 담당자→수주담당자, 연락처→담당자연락처, 생산담당자 분리 표시 - SlatWorkLogContent: 방화유리 수량을 slatInfo.glassQty에서 표시 - SlatInfo 타입에 glassQty 추가 (WorkOrders/types, WorkerScreen/types) - WorkerScreen: salesManager/managerPhone API 연동 - slat_info 변환 로직에 glass_qty 매핑 추가
This commit is contained in:
@@ -39,6 +39,8 @@ interface WorkOrderApiItem {
|
||||
id: number;
|
||||
order_no: string;
|
||||
client?: { id: number; name: string };
|
||||
client_contact?: string;
|
||||
options?: { manager_name?: string; [key: string]: unknown };
|
||||
root_nodes_count?: number;
|
||||
};
|
||||
team_id?: number | null;
|
||||
@@ -189,6 +191,8 @@ function transformToWorkerScreenFormat(api: WorkOrderApiItem): WorkOrder {
|
||||
delayDays,
|
||||
instruction: api.memo || undefined,
|
||||
salesOrderNo: api.sales_order?.order_no || undefined,
|
||||
salesManager: api.sales_order?.options?.manager_name as string || undefined,
|
||||
managerPhone: api.sales_order?.client_contact || undefined,
|
||||
teamId: api.team_id ?? null,
|
||||
teamName: api.team?.name || undefined,
|
||||
processDepartment: api.process?.department || undefined,
|
||||
@@ -635,8 +639,8 @@ export async function getWorkOrderDetail(
|
||||
workItem.cuttingInfo = { width: ci.width, sheets: ci.sheets };
|
||||
}
|
||||
if (opts.slat_info) {
|
||||
const si = opts.slat_info as { length: number; slat_count: number; joint_bar: number };
|
||||
workItem.slatInfo = { length: si.length, slatCount: si.slat_count, jointBar: si.joint_bar };
|
||||
const si = opts.slat_info as { length: number; slat_count: number; joint_bar: number; glass_qty: number };
|
||||
workItem.slatInfo = { length: si.length, slatCount: si.slat_count, jointBar: si.joint_bar, glassQty: si.glass_qty || 0 };
|
||||
}
|
||||
if (opts.bending_info) {
|
||||
const bi = opts.bending_info as {
|
||||
|
||||
@@ -118,7 +118,7 @@ const MOCK_ITEMS: Record<ProcessTab, WorkItemData[]> = {
|
||||
{
|
||||
id: 'mock-l1', itemNo: 1, itemCode: 'KQTS01', itemName: '슬랫코일', floor: '1층', code: 'FSS-01',
|
||||
width: 8260, height: 8350, quantity: 2, processType: 'slat',
|
||||
slatInfo: { length: 3910, slatCount: 40, jointBar: 4 },
|
||||
slatInfo: { length: 3910, slatCount: 40, jointBar: 4, glassQty: 2 },
|
||||
steps: [
|
||||
{ id: 'l1-1', name: '자재투입', isMaterialInput: true, isCompleted: true },
|
||||
{ id: 'l1-2', name: '포밍/절단', isMaterialInput: false, isCompleted: false },
|
||||
@@ -132,7 +132,7 @@ const MOCK_ITEMS: Record<ProcessTab, WorkItemData[]> = {
|
||||
{
|
||||
id: 'mock-l2', itemNo: 2, itemCode: 'KQTS03', itemName: '슬랫코일(광폭)', floor: '2층', code: 'FSS-02',
|
||||
width: 10500, height: 6200, quantity: 3, processType: 'slat',
|
||||
slatInfo: { length: 5200, slatCount: 55, jointBar: 6 },
|
||||
slatInfo: { length: 5200, slatCount: 55, jointBar: 6, glassQty: 3 },
|
||||
steps: [
|
||||
{ id: 'l2-1', name: '자재투입', isMaterialInput: true, isCompleted: false },
|
||||
{ id: 'l2-2', name: '포밍/절단', isMaterialInput: false, isCompleted: false },
|
||||
@@ -709,8 +709,8 @@ export default function WorkerScreen() {
|
||||
workItem.cuttingInfo = { width: ci.width, sheets: ci.sheets };
|
||||
}
|
||||
if (opts.slat_info) {
|
||||
const si = opts.slat_info as { length: number; slat_count: number; joint_bar: number };
|
||||
workItem.slatInfo = { length: si.length, slatCount: si.slat_count, jointBar: si.joint_bar };
|
||||
const si = opts.slat_info as { length: number; slat_count: number; joint_bar: number; glass_qty: number };
|
||||
workItem.slatInfo = { length: si.length, slatCount: si.slat_count, jointBar: si.joint_bar, glassQty: si.glass_qty || 0 };
|
||||
}
|
||||
if (opts.bending_info) {
|
||||
const bi = opts.bending_info as {
|
||||
@@ -864,8 +864,8 @@ export default function WorkerScreen() {
|
||||
salesOrderNo: apiOrder.salesOrderNo || '-',
|
||||
siteName: apiOrder.projectName || '-',
|
||||
client: apiOrder.client || '-',
|
||||
salesManager: apiOrder.assignees?.[0] || '-',
|
||||
managerPhone: '-',
|
||||
salesManager: apiOrder.salesManager || '-',
|
||||
managerPhone: apiOrder.managerPhone || '-',
|
||||
shippingDate: apiOrder.dueDate ? new Date(apiOrder.dueDate).toLocaleDateString('ko-KR') : '-',
|
||||
};
|
||||
}
|
||||
@@ -892,8 +892,8 @@ export default function WorkerScreen() {
|
||||
salesOrderNo: first.salesOrderNo || '-',
|
||||
siteName: first.projectName || '-',
|
||||
client: first.client || '-',
|
||||
salesManager: first.assignees?.[0] || '-',
|
||||
managerPhone: '-',
|
||||
salesManager: first.salesManager || '-',
|
||||
managerPhone: first.managerPhone || '-',
|
||||
shippingDate: first.dueDate ? new Date(first.dueDate).toLocaleDateString('ko-KR') : '-',
|
||||
};
|
||||
}, [filteredWorkOrders, selectedSidebarOrderId, activeProcessTabKey]);
|
||||
|
||||
@@ -60,7 +60,7 @@ export const MOCK_ITEMS: Record<ProcessTab, WorkItemData[]> = {
|
||||
{
|
||||
id: 'mock-l1', itemNo: 1, itemCode: 'KQTS01', itemName: '슬랫코일', floor: '1층', code: 'FSS-01',
|
||||
width: 8260, height: 8350, quantity: 2, processType: 'slat',
|
||||
slatInfo: { length: 3910, slatCount: 40, jointBar: 4 },
|
||||
slatInfo: { length: 3910, slatCount: 40, jointBar: 4, glassQty: 2 },
|
||||
steps: [
|
||||
{ id: 'l1-1', name: '자재투입', isMaterialInput: true, isCompleted: true },
|
||||
{ id: 'l1-2', name: '포밍/절단', isMaterialInput: false, isCompleted: false },
|
||||
@@ -73,7 +73,7 @@ export const MOCK_ITEMS: Record<ProcessTab, WorkItemData[]> = {
|
||||
{
|
||||
id: 'mock-l2', itemNo: 2, itemCode: 'KQTS03', itemName: '슬랫코일(광폭)', floor: '2층', code: 'FSS-02',
|
||||
width: 10500, height: 6200, quantity: 3, processType: 'slat',
|
||||
slatInfo: { length: 5200, slatCount: 55, jointBar: 6 },
|
||||
slatInfo: { length: 5200, slatCount: 55, jointBar: 6, glassQty: 3 },
|
||||
steps: [
|
||||
{ id: 'l2-1', name: '자재투입', isMaterialInput: true, isCompleted: false },
|
||||
{ id: 'l2-2', name: '포밍/절단', isMaterialInput: false, isCompleted: false },
|
||||
|
||||
@@ -77,6 +77,7 @@ export interface SlatInfo {
|
||||
length: number; // 길이 (mm)
|
||||
slatCount: number; // 슬랫 매수
|
||||
jointBar: number; // 조인트바 개수
|
||||
glassQty: number; // 방화유리 수량
|
||||
}
|
||||
|
||||
// ===== 슬랫 조인트바 전용 정보 =====
|
||||
|
||||
Reference in New Issue
Block a user