refactor(WEB): 회계/견적/설정/생산 등 전반적 코드 개선 및 공통화 2차

- 회계 모듈 전면 개선: 청구/입금/출금/매입/매출/세금계산서/일반전표/거래처원장 등
- 견적 모듈 금액 포맷/할인/수식/미리보기 등 코드 정리
- 설정 모듈: 계정관리/직급/직책/권한 상세 간소화
- 생산 모듈: 작업지시서/작업자화면/검수 문서 코드 정리
- UniversalListPage 엑셀 다운로드 및 필터 기능 확장
- 대시보드/게시판/수주 등 날짜 유틸 공통화 적용
- claudedocs 문서 인덱스 업데이트

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
유병철
2026-02-20 10:45:47 +09:00
parent 71352923c8
commit f344dc7d00
123 changed files with 877 additions and 789 deletions

View File

@@ -58,3 +58,4 @@ export { useFCM } from './useFCM';
export { useMenuPolling } from './useMenuPolling';
export { useCEODashboard } from './useCEODashboard';
export { useCardManagementModals } from './useCardManagementModals';
export { useDeleteDialog } from './useDeleteDialog';

View File

@@ -268,14 +268,13 @@ export function useItemList(): UseItemListResult {
setTabColumns(initData.tabColumns);
}
// 2. 품목 목록 API 호출 + 전체 통계 병렬 조회
const [result, stats] = await Promise.all([
fetchItems(currentFilters.current),
fetchTotalStats(),
]);
// 2. 품목 목록 먼저 로드 (테이블 렌더링 우선)
const result = await fetchItems(currentFilters.current);
setItems(result.items);
setPagination(result.pagination);
setTotalStats(stats);
// 3. 전체 통계는 백그라운드로 로드 (테이블 렌더링을 블로킹하지 않음)
fetchTotalStats().then(stats => setTotalStats(stats));
} catch (err) {
console.error('품목 목록 로드 실패:', err);