summaryrefslogtreecommitdiff
path: root/lib/tech-vendors/items-table
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tech-vendors/items-table')
-rw-r--r--lib/tech-vendors/items-table/add-item-dialog.tsx39
-rw-r--r--lib/tech-vendors/items-table/item-table.tsx19
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" },
]