fix: 견적 선택 다이얼로그 개선
- actions.ts: for_order=true 파라미터 추가 (수주 전환된 견적 제외) - QuotationSelectDialog: 두 번 호출되는 문제 수정 - 두 개의 useEffect를 하나로 통합 - 초기 로드는 즉시, 검색은 디바운스 적용
This commit is contained in:
@@ -74,21 +74,17 @@ export function QuotationSelectDialog({
|
||||
}
|
||||
}, []);
|
||||
|
||||
// 다이얼로그 열릴 때 데이터 로드
|
||||
useEffect(() => {
|
||||
if (open) {
|
||||
setSearchTerm("");
|
||||
fetchQuotations();
|
||||
}
|
||||
}, [open, fetchQuotations]);
|
||||
|
||||
// 검색어 변경 시 디바운스 적용하여 API 호출
|
||||
// 다이얼로그 열릴 때 데이터 로드 + 검색어 변경 시 디바운스 적용
|
||||
useEffect(() => {
|
||||
if (!open) return;
|
||||
|
||||
// 검색어가 빈 문자열이면 즉시 호출 (다이얼로그 열림 시)
|
||||
// 검색어가 있으면 디바운스 적용
|
||||
const delay = searchTerm === "" ? 0 : 300;
|
||||
|
||||
const timer = setTimeout(() => {
|
||||
fetchQuotations(searchTerm || undefined);
|
||||
}, 300);
|
||||
}, delay);
|
||||
|
||||
return () => clearTimeout(timer);
|
||||
}, [searchTerm, open, fetchQuotations]);
|
||||
|
||||
@@ -1043,6 +1043,8 @@ export async function getQuotesForSelect(params?: {
|
||||
searchParams.set('status', 'finalized');
|
||||
// 품목 포함 (수주 전환용)
|
||||
searchParams.set('with_items', 'true');
|
||||
// 수주 전환용: 이미 수주가 생성된 견적 제외 (이중 체크)
|
||||
searchParams.set('for_order', 'true');
|
||||
if (params?.q) searchParams.set('q', params.q);
|
||||
if (params?.page) searchParams.set('page', String(params.page));
|
||||
if (params?.size) searchParams.set('size', String(params.size || 50));
|
||||
|
||||
Reference in New Issue
Block a user