diff options
Diffstat (limited to 'lib/tech-vendors/items-table')
| -rw-r--r-- | lib/tech-vendors/items-table/add-item-dialog.tsx | 39 | ||||
| -rw-r--r-- | lib/tech-vendors/items-table/item-table.tsx | 19 |
2 files changed, 27 insertions, 31 deletions
diff --git a/lib/tech-vendors/items-table/add-item-dialog.tsx b/lib/tech-vendors/items-table/add-item-dialog.tsx index bd1c32f5..e4d74204 100644 --- a/lib/tech-vendors/items-table/add-item-dialog.tsx +++ b/lib/tech-vendors/items-table/add-item-dialog.tsx @@ -37,14 +37,14 @@ import { type CreateTechVendorItemSchema, } from "@/lib/tech-vendors/validations" -import { createTechVendorItem, getItemsByVendorType, ItemDropdownOption } from "../service" +import { createTechVendorItem, getItemsForTechVendor, ItemDropdownOption } from "../service" interface AddItemDialogProps { vendorId: number - vendorType: string + vendorType: string // UI에서 전달하지만 내부적으로는 사용하지 않음 } -export function AddItemDialog({ vendorId, vendorType }: AddItemDialogProps) { +export function AddItemDialog({ vendorId }: AddItemDialogProps) { const router = useRouter() const [open, setOpen] = React.useState(false) const [commandOpen, setCommandOpen] = React.useState(false) @@ -69,30 +69,21 @@ export function AddItemDialog({ vendorId, vendorType }: AddItemDialogProps) { const fetchItems = React.useCallback(async () => { if (items.length > 0) return - console.log(`[AddItemDialog] fetchItems - 벤더 타입: ${vendorType || '알 수 없음'}, 벤더 ID: ${vendorId} 시작`) - - if (!vendorType) { - console.error("[AddItemDialog] 벤더 타입이 지정되지 않았습니다. 아이템을 불러올 수 없습니다.") - toast.error("벤더 타입이 지정되지 않아 아이템을 불러올 수 없습니다.") - setIsLoading(false) - return - } + console.log(`[AddItemDialog] fetchItems - 벤더 ID: ${vendorId} 시작`) setIsLoading(true) try { - console.log(`[AddItemDialog] getItemsByVendorType 호출 - 타입: ${vendorType}`) - const result = await getItemsByVendorType(vendorType, "") - console.log(`[AddItemDialog] getItemsByVendorType 결과:`, result) + console.log(`[AddItemDialog] getItemsForTechVendor 호출 - vendorId: ${vendorId}`) + const result = await getItemsForTechVendor(vendorId) + console.log(`[AddItemDialog] getItemsForTechVendor 결과:`, result) if (result.data) { - const formattedItems = result.data.map(item => ({ - itemCode: item.itemCode, - itemName: "기술영업", - description: "" - })) - console.log(`[AddItemDialog] 포맷된 아이템 목록:`, formattedItems) - setItems(formattedItems) - setFilteredItems(formattedItems) + console.log(`[AddItemDialog] 사용 가능한 아이템 목록:`, result.data) + setItems(result.data) + setFilteredItems(result.data) + } else if (result.error) { + console.error("[AddItemDialog] 아이템 조회 실패:", result.error) + toast.error(result.error) } } catch (err) { console.error("[AddItemDialog] 아이템 조회 실패:", err) @@ -101,7 +92,7 @@ export function AddItemDialog({ vendorId, vendorType }: AddItemDialogProps) { setIsLoading(false) console.log(`[AddItemDialog] fetchItems 완료`) } - }, [items.length, vendorType, vendorId]) + }, [items.length, vendorId]) React.useEffect(() => { if (commandOpen) { @@ -157,7 +148,7 @@ export function AddItemDialog({ vendorId, vendorType }: AddItemDialogProps) { console.log(`[AddItemDialog] createTechVendorItem 호출 - vendorId: ${data.vendorId}, itemCode: ${data.itemCode}`) const submitData = { ...data, - itemName: "기술영업" + itemName: selectedItem?.itemName || "기술영업" } console.log(`[AddItemDialog] 최종 제출 데이터:`, submitData) diff --git a/lib/tech-vendors/items-table/item-table.tsx b/lib/tech-vendors/items-table/item-table.tsx index 52e5a57f..2eecd829 100644 --- a/lib/tech-vendors/items-table/item-table.tsx +++ b/lib/tech-vendors/items-table/item-table.tsx @@ -11,17 +11,20 @@ import { useDataTable } from "@/hooks/use-data-table" import { DataTable } from "@/components/data-table/data-table" import { DataTableAdvancedToolbar } from "@/components/data-table/data-table-advanced-toolbar" import { getColumns } from "./item-table-columns" -import { TechVendorItemsView } from "@/db/schema/techVendors" +import { getVendorItemsByType } from "@/lib/tech-vendors/service" import { TechVendorItemsTableToolbarActions } from "./item-table-toolbar-actions" interface TechVendorItemsTableProps { - data: (TechVendorItemsView & { techVendorType?: string })[] + promises: Promise<Awaited<ReturnType<typeof getVendorItemsByType>>> vendorId: number vendorType: string } -export function TechVendorItemsTable({ data, vendorId, vendorType }: TechVendorItemsTableProps) { - const [rowAction, setRowAction] = React.useState<DataTableRowAction<TechVendorItemsView> | null>(null) +export function TechVendorItemsTable({ promises, vendorId, vendorType }: TechVendorItemsTableProps) { + // Suspense로 받아온 데이터 + const { data } = React.use(promises) + + const [rowAction, setRowAction] = React.useState<DataTableRowAction<any> | null>(null) const columns = React.useMemo( () => getColumns({ @@ -31,11 +34,13 @@ export function TechVendorItemsTable({ data, vendorId, vendorType }: TechVendorI [vendorType] ) - const filterFields: DataTableFilterField<TechVendorItemsView>[] = [] + const filterFields: DataTableFilterField<any>[] = [] - const advancedFilterFields: DataTableAdvancedFilterField<TechVendorItemsView>[] = [ - { id: "itemName", label: "Item Name", type: "text" }, + const advancedFilterFields: DataTableAdvancedFilterField<any>[] = [ + { id: "itemList", label: "Item List", type: "text" }, { id: "itemCode", label: "Item Code", type: "text" }, + { id: "workType", label: "Work Type", type: "text" }, + { id: "subItemList", label: "Sub Item List", type: "text" }, { id: "createdAt", label: "Created at", type: "date" }, { id: "updatedAt", label: "Updated at", type: "date" }, ] |
