diff options
| author | joonhoekim <26rote@gmail.com> | 2025-09-23 20:05:46 +0900 |
|---|---|---|
| committer | joonhoekim <26rote@gmail.com> | 2025-09-23 20:05:46 +0900 |
| commit | 3cde5c2c7d157bb0fe353de5e67e4b35506bb4e2 (patch) | |
| tree | ea2dd4927ce79543317ad5fc37a45d4bf193f670 /lib/vendor-pool | |
| parent | a72c894c5b65b45f99fe03770f2d54098c5507c3 (diff) | |
(김준회) Vendorpool 수정요청사항
- 컬럼리사이징 관련 문제 해결
- 공통컴포넌트에 columnResizeMode: "onChange" 속성 추가
Diffstat (limited to 'lib/vendor-pool')
| -rw-r--r-- | lib/vendor-pool/table/vendor-pool-table-columns.tsx (renamed from lib/vendor-pool/table/columns.tsx) | 51 | ||||
| -rw-r--r-- | lib/vendor-pool/table/vendor-pool-table.tsx | 83 |
2 files changed, 9 insertions, 125 deletions
diff --git a/lib/vendor-pool/table/columns.tsx b/lib/vendor-pool/table/vendor-pool-table-columns.tsx index 0a6b0c8f..8f09e684 100644 --- a/lib/vendor-pool/table/columns.tsx +++ b/lib/vendor-pool/table/vendor-pool-table-columns.tsx @@ -100,10 +100,7 @@ export type VendorPoolItem = { // 테이블 컬럼 정의 export const columns: ColumnDef<VendorPoolItem>[] = [ - // 기본 정보 그룹 - { - header: "기본 정보", - columns: [ + { id: "select", header: ({ table }) => ( @@ -466,12 +463,6 @@ export const columns: ColumnDef<VendorPoolItem>[] = [ }, size: 100, }, - ] - }, - // 자재 정보 그룹 - { - header: "자재 정보", - columns: [ { accessorKey: "similarMaterialNamePurchase", header: ({ column }) => ( @@ -524,12 +515,6 @@ export const columns: ColumnDef<VendorPoolItem>[] = [ }, size: 140, }, - ] - }, - // 협력업체 정보 그룹 - { - header: "협력업체 정보", - columns: [ { accessorKey: "vendorCode", header: ({ column }) => ( @@ -1009,12 +994,6 @@ export const columns: ColumnDef<VendorPoolItem>[] = [ }, size: 120, }, - ] - }, - // AVL 적용 선종(조선) 그룹 - { - header: "AVL 적용 선종(조선)", - columns: [ { accessorKey: "shipTypeCommon", header: "공통", @@ -1151,12 +1130,6 @@ export const columns: ColumnDef<VendorPoolItem>[] = [ }, size: 80, }, - ] - }, - // AVL 적용 선종(해양) 그룹 - { - header: "AVL 적용 선종(해양)", - columns: [ { accessorKey: "offshoreTypeCommon", header: "공통", @@ -1311,12 +1284,6 @@ export const columns: ColumnDef<VendorPoolItem>[] = [ }, size: 80, }, - ] - }, - // eVCP 미등록 정보 그룹 - { - header: "eVCP 미등록 정보", - columns: [ { accessorKey: "picName", header: ({ column }) => ( @@ -1354,7 +1321,6 @@ export const columns: ColumnDef<VendorPoolItem>[] = [ await table.options.meta.onCellUpdate(row.original.id, "picEmail", newValue) } } - return ( <EditableCell value={value} @@ -1467,12 +1433,6 @@ export const columns: ColumnDef<VendorPoolItem>[] = [ }, size: 120, }, - ] - }, - // 업체 실적 현황 그룹 - { - header: "업체 실적 현황", - columns: [ { accessorKey: "recentQuoteDate", header: ({ column }) => ( @@ -1575,12 +1535,6 @@ export const columns: ColumnDef<VendorPoolItem>[] = [ }, size: 130, }, - ] - }, - // 업데이트 히스토리 그룹 - { - header: "업데이트 히스토리", - columns: [ { accessorKey: "registrationDate", header: ({ column }) => ( @@ -1617,8 +1571,6 @@ export const columns: ColumnDef<VendorPoolItem>[] = [ }, size: 120, }, - ] - }, // 액션 그룹 { id: "actions", @@ -1685,3 +1637,4 @@ export const columns: ColumnDef<VendorPoolItem>[] = [ enableHiding: false, }, ] + diff --git a/lib/vendor-pool/table/vendor-pool-table.tsx b/lib/vendor-pool/table/vendor-pool-table.tsx index 54c6ea4d..43dd64c1 100644 --- a/lib/vendor-pool/table/vendor-pool-table.tsx +++ b/lib/vendor-pool/table/vendor-pool-table.tsx @@ -14,12 +14,9 @@ import { Button } from "@/components/ui/button" import { toast } from "sonner" import { BulkImportDialog } from "./bulk-import-dialog" -import { columns, type VendorPoolItem } from "./columns" +import { columns, type VendorPoolItem } from "./vendor-pool-table-columns" import { createVendorPool, updateVendorPool, deleteVendorPool } from "../service" -import { getVendorByTaxId } from "@/lib/vendors/service" -import { getMaterialGroupDetail } from "@/lib/material-groups/services" import type { VendorPool } from "../types" -import { cn } from "@/lib/utils" // 테이블 메타 타입 확장 declare module "@tanstack/react-table" { @@ -31,8 +28,6 @@ declare module "@tanstack/react-table" { onCancelEmptyRow?: (tempId: string) => void isEmptyRow?: (id: string) => boolean getPendingChanges?: () => Record<string, Partial<VendorPoolItem>> - onTaxIdChange?: (id: string, taxId: string) => Promise<void> - onMaterialGroupCodeChange?: (id: string, materialGroupCode: string) => Promise<void> } } @@ -83,68 +78,6 @@ export function VendorPoolTable({ data, pageCount, onRefresh }: VendorPoolTableP })) }, []) - // 사업자번호 변경 시 자동 vendor 검색 핸들러 - const handleTaxIdChange = React.useCallback(async (id: string, taxId: string) => { - if (!taxId || taxId.trim() === '') return - - try { - const result = await getVendorByTaxId(taxId.trim()) - if (result.data) { - // vendor 정보가 있으면 vendorCode와 vendorName을 자동으로 설정 - await handleCellUpdate(id, 'vendorCode', result.data.vendorCode || '') - await handleCellUpdate(id, 'vendorName', result.data.vendorName || '') - toast.success(`사업자번호로 '${result.data.vendorName}' 업체 정보를 자동 입력했습니다.`) - } else { - // vendor 정보가 없으면 vendorCode와 vendorName을 빈 값으로 설정 - await handleCellUpdate(id, 'vendorCode', '') - await handleCellUpdate(id, 'vendorName', '') - } - } catch (error) { - console.error('사업자번호 검색 실패:', error) - toast.error('사업자번호 검색 중 오류가 발생했습니다.') - } - }, [handleCellUpdate]) - - // 자재그룹코드 변경 시 자동 materialGroupName 검색 및 Equip/Bulk 구분 설정 핸들러 - const handleMaterialGroupCodeChange = React.useCallback(async (id: string, materialGroupCode: string) => { - if (!materialGroupCode || materialGroupCode.trim() === '') return - - const code = materialGroupCode.trim() - - try { - const materialGroup = await getMaterialGroupDetail(code) - if (materialGroup) { - // 자재그룹 정보가 있으면 materialGroupName을 자동으로 설정 - await handleCellUpdate(id, 'materialGroupName', materialGroup.materialGroupDesc || '') - toast.success(`자재그룹코드로 '${materialGroup.materialGroupDesc}' 정보를 자동 입력했습니다.`) - } else { - // 자재그룹 정보가 없으면 materialGroupName을 빈 값으로 설정 - await handleCellUpdate(id, 'materialGroupName', '') - } - - // Equip/Bulk 구분 자동 설정 - let equipBulkDivision = '' - if (code.startsWith('A1')) { - equipBulkDivision = 'S' - } else if (code.startsWith('A') || code.startsWith('B7') || code === 'SP1328' || code === 'SP1329') { - equipBulkDivision = 'B' - } else if (code.startsWith('B')) { - equipBulkDivision = 'E' - } - - if (equipBulkDivision) { - await handleCellUpdate(id, 'equipBulkDivision', equipBulkDivision) - toast.success(`자재그룹코드에 따라 Equip/Bulk 구분을 '${equipBulkDivision}'으로 자동 설정했습니다.`) - } else { - // Equip/Bulk 구분을 빈 값으로 설정하여 pendingChanges에 반영 - await handleCellUpdate(id, 'equipBulkDivision', '') - toast.info('현 자재그룹코드에 따라 Equip/Bulk 구분을 자동 설정할 수 없습니다.') - } - } catch (error) { - console.error('자재그룹코드 검색 실패:', error) - toast.error('자재그룹코드 검색 중 오류가 발생했습니다.') - } - }, [handleCellUpdate]) // 편집 취소 핸들러 @@ -631,7 +564,7 @@ export function VendorPoolTable({ data, pageCount, onRefresh }: VendorPoolTableP filterFields, enablePinning: true, enableAdvancedFilter: true, - enableColumnResizing: true, + // enableColumnResizing: true, columnResizeMode: "onChange", initialState: { sorting: [{ id: "registrationDate", desc: true }], @@ -658,8 +591,8 @@ export function VendorPoolTable({ data, pageCount, onRefresh }: VendorPoolTableP toast.info('저장 기능은 개발 중입니다.') break - case 'fixed-values': - toast.info('고정값 설정 기능은 개발 중입니다.') + case 'excel-import': + toast.info('Excel Import 기능은 개발 중입니다.') break case 'delete': @@ -722,9 +655,7 @@ export function VendorPoolTable({ data, pageCount, onRefresh }: VendorPoolTableP onSaveEmptyRow: saveEmptyRow, onCancelEmptyRow: cancelEmptyRow, isEmptyRow: (id: string) => String(id).startsWith('temp-'), - getPendingChanges: () => pendingChanges, - onTaxIdChange: handleTaxIdChange, - onMaterialGroupCodeChange: handleMaterialGroupCodeChange + getPendingChanges: () => pendingChanges } @@ -769,11 +700,11 @@ export function VendorPoolTable({ data, pageCount, onRefresh }: VendorPoolTableP </Button> <Button - onClick={() => handleToolbarAction('fixed-values')} + onClick={() => handleToolbarAction('excel-import')} variant="outline" size="sm" > - FA 상세 + Excel Import </Button> <Button |
