From ff902243a658067fae858a615c0629aa2e0a4837 Mon Sep 17 00:00:00 2001 From: dujinkim Date: Wed, 11 Jun 2025 12:18:38 +0000 Subject: (대표님) 20250611 21시 15분 OCR 등 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table/enhanced-doc-table-columns.tsx | 222 ++++++++++++--------- 1 file changed, 128 insertions(+), 94 deletions(-) (limited to 'lib/vendor-document-list/table/enhanced-doc-table-columns.tsx') diff --git a/lib/vendor-document-list/table/enhanced-doc-table-columns.tsx b/lib/vendor-document-list/table/enhanced-doc-table-columns.tsx index c8487d82..191ce3e2 100644 --- a/lib/vendor-document-list/table/enhanced-doc-table-columns.tsx +++ b/lib/vendor-document-list/table/enhanced-doc-table-columns.tsx @@ -1,4 +1,4 @@ -// updated-enhanced-doc-table-columns.tsx +// enhanced-doc-table-columns-with-b4.tsx "use client" import * as React from "react" @@ -32,13 +32,15 @@ import { Edit, Trash2, Building, - Code + Code, + Settings } from "lucide-react" import { cn } from "@/lib/utils" interface GetColumnsProps { setRowAction: React.Dispatch | null>> projectType: string | null + drawingKindFilter?: string // ✅ 추가 } // 유틸리티 함수들 @@ -140,11 +142,12 @@ const DueDateInfo = ({ export function getUpdatedEnhancedColumns({ setRowAction, - projectType + projectType, + drawingKindFilter = "all" // ✅ 추가 }: GetColumnsProps): ColumnDef[] { const isPlantProject = projectType === "plant" + const showB4Columns = drawingKindFilter === "B4" // ✅ B4 컬럼 표시 여부 - // 기본 컬럼들 const baseColumns: ColumnDef[] = [ // 체크박스 선택 @@ -174,7 +177,7 @@ export function getUpdatedEnhancedColumns({ enableHiding: false, }, - // 문서번호 + 우선순위 + // 문서번호 + Drawing Kind { accessorKey: "docNumber", header: ({ column }) => ( @@ -185,6 +188,11 @@ export function getUpdatedEnhancedColumns({ return (
{doc.docNumber} + {doc.drawingKind && ( + + {doc.drawingKind} + + )}
) }, @@ -196,7 +204,7 @@ export function getUpdatedEnhancedColumns({ }, ] - // ✅ Ship 프로젝트용 추가 컬럼들 + // ✅ Plant 프로젝트용 추가 컬럼들 const plantColumns: ColumnDef[] = isPlantProject ? [ // 벤더 문서번호 { @@ -233,7 +241,6 @@ export function getUpdatedEnhancedColumns({ const doc = row.original return (
- {/* */} {doc.projectCode || '-'} @@ -258,7 +265,6 @@ export function getUpdatedEnhancedColumns({ return (
- {/* */} {doc.vendorName || '-'} @@ -279,6 +285,116 @@ export function getUpdatedEnhancedColumns({ }, ] : [] + // ✅ B4 전용 컬럼들 (B4 필터 선택 시에만 표시) + const b4Columns: ColumnDef[] = showB4Columns ? [ + { + accessorKey: "cGbn", + header: ({ column }) => ( + + ), + cell: ({ row }) => { + const doc = row.original + return ( +
+ + {doc.cGbn || '-'} + +
+ ) + }, + size: 100, + enableResizing: true, + meta: { + excelHeader: "cGbn" + }, + }, + { + accessorKey: "dGbn", + header: ({ column }) => ( + + ), + cell: ({ row }) => { + const doc = row.original + return ( +
+ + {doc.dGbn || '-'} + +
+ ) + }, + size: 100, + enableResizing: true, + meta: { + excelHeader: "dGbn" + }, + }, + { + accessorKey: "degreeGbn", + header: ({ column }) => ( + + ), + cell: ({ row }) => { + const doc = row.original + return ( +
+ + {doc.degreeGbn || '-'} + +
+ ) + }, + size: 100, + enableResizing: true, + meta: { + excelHeader: "degreeGbn" + }, + }, + { + accessorKey: "deptGbn", + header: ({ column }) => ( + + ), + cell: ({ row }) => { + const doc = row.original + return ( +
+ + {doc.deptGbn || '-'} + +
+ ) + }, + size: 100, + enableResizing: true, + meta: { + excelHeader: "deptGbn" + }, + }, + { + accessorKey: "sGbn", + header: ({ column }) => ( + + ), + cell: ({ row }) => { + const doc = row.original + return ( +
+ + {doc.sGbn || '-'} + +
+ ) + }, + size: 100, + enableResizing: true, + meta: { + excelHeader: "sGbn" + }, + }, + + ] : [] + // 나머지 공통 컬럼들 const commonColumns: ColumnDef[] = [ // 문서명 + 담당자 @@ -310,7 +426,7 @@ export function getUpdatedEnhancedColumns({
) }, - size: isPlantProject ? 200 : 250, // Ship 프로젝트일 때는 너비 조정 + size: showB4Columns ? 180 : (isPlantProject ? 200 : 250), // ✅ B4 컬럼이 있을 때 너비 조정 enableResizing: true, meta: { excelHeader: "문서명" @@ -378,7 +494,7 @@ export function getUpdatedEnhancedColumns({ size: 140, enableResizing: true, meta: { - excelHeader: "계획일" + excelHeader: "일정" }, }, @@ -476,7 +592,6 @@ export function getUpdatedEnhancedColumns({ const canApprove = doc.currentStageStatus === 'SUBMITTED' const isPlantProject = projectType === "plant" - // 메뉴 아이템들을 그룹별로 정의 const viewActions = [ { key: "view", @@ -519,7 +634,6 @@ export function getUpdatedEnhancedColumns({ } ] - // 각 그룹에서 표시될 아이템이 있는지 확인 const hasEditActions = editActions.some(action => action.show) const hasFileActions = fileActions.some(action => action.show) const hasDangerActions = dangerActions.some(action => action.show) @@ -536,7 +650,6 @@ export function getUpdatedEnhancedColumns({ - {/* 기본 액션 그룹 */} {viewActions.map(action => action.show && ( ))} - {/* 편집 액션 그룹 */} {hasEditActions && ( <> @@ -571,7 +683,6 @@ export function getUpdatedEnhancedColumns({ )} - {/* 파일 액션 그룹 */} {hasFileActions && ( <> @@ -591,7 +702,6 @@ export function getUpdatedEnhancedColumns({ )} - {/* 위험한 액션 그룹 */} {hasDangerActions && ( <> @@ -621,84 +731,8 @@ export function getUpdatedEnhancedColumns({ // ✅ 모든 컬럼을 순서대로 결합 return [ ...baseColumns, // 체크박스, 문서번호 - ...plantColumns, // Ship 전용 컬럼들 (조건부) + ...plantColumns, // Plant 전용 컬럼들 (조건부) + ...b4Columns, // B4 전용 컬럼들 (조건부) ...commonColumns // 나머지 공통 컬럼들 ] -} - -// 확장된 행 컨텐츠 컴포넌트 (업데이트된 버전) -export const UpdatedExpandedRowContent = ({ - document -}: { - document: EnhancedDocumentsView -}) => { - if (!document.allStages || document.allStages.length === 0) { - return ( -
- 스테이지 정보가 없습니다. -
- ) - } - - return ( -
-

- - 전체 스테이지 현황 -

- -
- {document.allStages.map((stage, index) => ( -
-
-
-
- {stage.stageOrder || index + 1} -
-
-
- -
-
{stage.stageName}
- {stage.assigneeName && ( -
- - {stage.assigneeName} -
- )} -
-
- -
-
- 계획: - {formatDate(stage.planDate)} -
- {stage.actualDate && ( -
- 완료: - {formatDate(stage.actualDate)} -
- )} - -
- - {getPriorityText(stage.priority)} - - - {getStatusText(stage.stageStatus)} - -
-
-
- ))} -
-
- ) } \ No newline at end of file -- cgit v1.2.3