fix: [작업자화면] 생산일자/부서/담당자 변경 시 이전 값으로 복원되는 버그 수정

- useEffect 의존성에서 filteredWorkOrders 제거
- prevSidebarOrderIdRef로 작업지시 변경 시에만 세팅 (사용자 수정값 보존)
- 같은 작업지시 선택 상태에서 onChange 값이 덮어쓰이지 않음
This commit is contained in:
김보곤
2026-03-22 18:26:43 +09:00
parent 255e0be370
commit 250c203bfb

View File

@@ -20,7 +20,7 @@ function extractLengthFromName(name?: string | null): number {
return m ? parseInt(m[1], 10) : 0;
}
import { useState, useMemo, useCallback, useEffect } from 'react';
import { useState, useMemo, useCallback, useEffect, useRef } from 'react';
import dynamic from 'next/dynamic';
import { useSearchParams, useRouter, usePathname } from 'next/navigation';
import { useSidebarCollapsed } from '@/stores/menuStore';
@@ -863,8 +863,13 @@ export default function WorkerScreen() {
}, [selectedSidebarOrderId, workItems.length]);
// ===== 작업지시 변경 시 작업 정보 자동 세팅 =====
// ===== 작업지시 변경 시 작업 정보 자동 세팅 (선택 변경 시에만) =====
const prevSidebarOrderIdRef = useRef<string | null>(null);
useEffect(() => {
// 같은 작업지시를 다시 선택한 경우 덮어쓰지 않음 (사용자 수정값 보존)
if (prevSidebarOrderIdRef.current === selectedSidebarOrderId) return;
prevSidebarOrderIdRef.current = selectedSidebarOrderId;
const apiOrder = filteredWorkOrders.find((wo) => wo.id === selectedSidebarOrderId);
if (apiOrder) {
// 부서 세팅: 1순위 work_orders.team_id → 2순위 process.department(부서명 매칭)
@@ -885,8 +890,8 @@ export default function WorkerScreen() {
setProductionManagerId('');
setProductionDate('');
}
}, [selectedSidebarOrderId, filteredWorkOrders, departmentList]);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [selectedSidebarOrderId]);
// ===== 수주 정보 (사이드바 선택 항목 기반) =====
const orderInfo = useMemo(() => {