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(() => {
|
useEffect(() => {
|
||||||
if (!open) return;
|
if (!open) return;
|
||||||
|
|
||||||
|
// 검색어가 빈 문자열이면 즉시 호출 (다이얼로그 열림 시)
|
||||||
|
// 검색어가 있으면 디바운스 적용
|
||||||
|
const delay = searchTerm === "" ? 0 : 300;
|
||||||
|
|
||||||
const timer = setTimeout(() => {
|
const timer = setTimeout(() => {
|
||||||
fetchQuotations(searchTerm || undefined);
|
fetchQuotations(searchTerm || undefined);
|
||||||
}, 300);
|
}, delay);
|
||||||
|
|
||||||
return () => clearTimeout(timer);
|
return () => clearTimeout(timer);
|
||||||
}, [searchTerm, open, fetchQuotations]);
|
}, [searchTerm, open, fetchQuotations]);
|
||||||
|
|||||||
@@ -1043,6 +1043,8 @@ export async function getQuotesForSelect(params?: {
|
|||||||
searchParams.set('status', 'finalized');
|
searchParams.set('status', 'finalized');
|
||||||
// 품목 포함 (수주 전환용)
|
// 품목 포함 (수주 전환용)
|
||||||
searchParams.set('with_items', 'true');
|
searchParams.set('with_items', 'true');
|
||||||
|
// 수주 전환용: 이미 수주가 생성된 견적 제외 (이중 체크)
|
||||||
|
searchParams.set('for_order', 'true');
|
||||||
if (params?.q) searchParams.set('q', params.q);
|
if (params?.q) searchParams.set('q', params.q);
|
||||||
if (params?.page) searchParams.set('page', String(params.page));
|
if (params?.page) searchParams.set('page', String(params.page));
|
||||||
if (params?.size) searchParams.set('size', String(params.size || 50));
|
if (params?.size) searchParams.set('size', String(params.size || 50));
|
||||||
|
|||||||
Reference in New Issue
Block a user