summaryrefslogtreecommitdiff
path: root/lib/vendor-pool
diff options
context:
space:
mode:
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.tsx83
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