diff options
Diffstat (limited to 'components/form-data-plant/form-data-table.tsx')
| -rw-r--r-- | components/form-data-plant/form-data-table.tsx | 91 |
1 files changed, 61 insertions, 30 deletions
diff --git a/components/form-data-plant/form-data-table.tsx b/components/form-data-plant/form-data-table.tsx index c6c79a69..30c176bd 100644 --- a/components/form-data-plant/form-data-table.tsx +++ b/components/form-data-plant/form-data-table.tsx @@ -76,8 +76,7 @@ interface GenericData { export interface DynamicTableProps { dataJSON: GenericData[]; columnsJSON: DataTableColumnJSON[]; - projectCode: string; - packageCode: string; + contractItemId: number; formCode: string; formId: number; projectId: number; @@ -90,8 +89,7 @@ export interface DynamicTableProps { export default function DynamicTable({ dataJSON, columnsJSON, - projectCode, - packageCode, + contractItemId, formCode, formId, projectId, @@ -158,8 +156,7 @@ export default function DynamicTable({ // 서버 액션 호출 const result = await excludeFormDataByTags({ formCode, - projectCode, - packageCode, + contractItemId, tagNumbers, }); @@ -291,7 +288,7 @@ export default function DynamicTable({ try { setIsLoadingStats(true); // getFormStatusByVendor 서버 액션 직접 호출 - const data = await getFormStatusByVendor(projectId, projectCode, packageCode,formCode); + const data = await getFormStatusByVendor(projectId, contractItemId, formCode); if (data && data.length > 0) { setFormStats(data[0]); @@ -342,7 +339,9 @@ export default function DynamicTable({ // SEDP compare dialog state const [sedpCompareOpen, setSedpCompareOpen] = React.useState(false); - const projectType = "plant"; + const [projectCode, setProjectCode] = React.useState<string>(''); + const [projectType, setProjectType] = React.useState<string>('plant'); + const [packageCode, setPackageCode] = React.useState<string>(''); // 새로 추가된 Template 다이얼로그 상태 const [templateDialogOpen, setTemplateDialogOpen] = React.useState(false); @@ -375,13 +374,43 @@ const [isLoadingRegisters, setIsLoadingRegisters] = React.useState(false); React.useEffect(() => { const getTempCount = async () => { - const tempList = await getReportTempList(projectCode, packageCode, formId); + const tempList = await getReportTempList(contractItemId, formId); setTempCount(tempList.length); }; getTempCount(); - }, [projectCode,packageCode, formId, tempUpDialog]); + }, [contractItemId, formId, tempUpDialog]); + React.useEffect(() => { + const getPackageCode = async () => { + try { + const packageCode = await getPackageCodeById(contractItemId); + setPackageCode(packageCode || ''); // 빈 문자열이나 다른 기본값 + } catch (error) { + console.error('패키지 조회 실패:', error); + setPackageCode(''); + } + }; + + getPackageCode(); + }, [contractItemId]) + // Get project code when component mounts + React.useEffect(() => { + const getProjectCode = async () => { + try { + const project = await getProjectById(projectId); + setProjectCode(project.code); + setProjectType(project.type); + } catch (error) { + console.error("Error fetching project code:", error); + toast.error("Failed to fetch project code"); + } + }; + + if (projectId) { + getProjectCode(); + } + }, [projectId]); // 선택된 행들의 실제 데이터 가져오기 const getSelectedRowsData = React.useCallback(() => { @@ -500,7 +529,7 @@ React.useEffect(() => { async function handleSyncTags() { try { setIsSyncingTags(true); - const result = await syncMissingTags(projectCode,packageCode, formCode); + const result = await syncMissingTags(contractItemId, formCode); // Prepare the toast messages based on what changed const changes = []; @@ -533,9 +562,9 @@ React.useEffect(() => { setIsLoadingTags(true); // API 엔드포인트 호출 - 작업 시작만 요청 - const response = await fetch('/api/cron/form-tags-plant/start', { + const response = await fetch('/api/cron/form-tags/start', { method: 'POST', - body: JSON.stringify({ projectCode, formCode, packageCode }) + body: JSON.stringify({ projectCode, formCode, contractItemId }) }); if (!response.ok) { @@ -574,7 +603,7 @@ React.useEffect(() => { // 5초마다 상태 확인 pollingRef.current = setInterval(async () => { try { - const response = await fetch(`/api/cron/form-tags-plant/status?id=${id}`); + const response = await fetch(`/api/cron/form-tags/status?id=${id}`); if (!response.ok) { throw new Error('Failed to get tag import status'); @@ -637,8 +666,7 @@ React.useEffect(() => { tableData, columnsJSON, formCode, - projectCode, - packageCode, + contractItemId, editableFieldsMap, // 추가: 편집 가능 필드 정보 전달 onPendingChange: setIsImporting, // Let importExcelData handle loading state onDataUpdate: (newData) => { @@ -719,8 +747,7 @@ React.useEffect(() => { const sedpResult = await sendFormDataToSEDP( formCode, // Send formCode instead of formName projectId, // Project ID - projectCode, - packageCode, + contractItemId, tableData.filter(v=>v.status !== 'excluded'), // Table data columnsJSON // Column definitions ); @@ -1199,8 +1226,7 @@ React.useEffect(() => { columns={columnsJSON} rowData={rowAction?.row.original ?? null} formCode={formCode} - projectCode={projectCode} - packageCode={packageCode} + contractItemId={contractItemId} editableFieldsMap={editableFieldsMap} onUpdateSuccess={(updatedValues) => { // Update the specific row in tableData when a single row is updated @@ -1218,8 +1244,7 @@ React.useEffect(() => { <DeleteFormDataDialog formData={deleteTarget} formCode={formCode} - projectCode={projectCode} - packageCode={packageCode} + contractItemId={contractItemId} projectId={projectId} open={deleteDialogOpen} onOpenChange={(open) => { @@ -1232,6 +1257,16 @@ React.useEffect(() => { showTrigger={false} /> + {/* Dialog for adding tags */} + {/* <AddFormTagDialog + projectId={projectId} + formCode={formCode} + formName={`Form ${formCode}`} + contractItemId={contractItemId} + packageCode={packageCode} + open={addTagDialogOpen} + onOpenChange={setAddTagDialogOpen} + /> */} {/* 새로 추가된 Template 다이얼로그 */} <TemplateViewDialog @@ -1241,8 +1276,7 @@ React.useEffect(() => { selectedRow={selectedRowsData[0]} // SPR_ITM_LST_SETUP용 tableData={tableData} // SPR_LST_SETUP용 - 새로 추가 formCode={formCode} - projectCode={projectCode} - packageCode={packageCode} + contractItemId={contractItemId} editableFieldsMap={editableFieldsMap} columnsJSON={columnsJSON} onUpdateSuccess={(updatedValues) => { @@ -1310,8 +1344,7 @@ React.useEffect(() => { columnsJSON={columnsJSON} open={tempUpDialog} setOpen={setTempUpDialog} - projectCode={projectCode} - packageCode={packageCode} + packageId={contractItemId} formCode={formCode} formId={formId} uploaderType="vendor" @@ -1323,8 +1356,7 @@ React.useEffect(() => { columnsJSON={columnsJSON} reportData={reportData} setReportData={setReportData} - projectCode={projectCode} - packageCode={packageCode} + packageId={contractItemId} formCode={formCode} formId={formId} /> @@ -1336,8 +1368,7 @@ React.useEffect(() => { setOpen={setBatchDownDialog} columnsJSON={columnsJSON} reportData={selectedRowCount > 0 ? getSelectedRowsData() : tableData} - projectCode={projectCode} - packageCode={packageCode} + packageId={contractItemId} formCode={formCode} formId={formId} /> |
