= {
"ITB": "ITB",
"RFQ": "RFQ",
"일반견적": "일반견적"
}
return typeMap[value as string] || value || "-"
},
size: 100,
minSize: 80,
maxSize: 120,
enableResizing: true,
enableHiding: true,
},
// {
// accessorKey: "rfqTitle",
// header: ({ column }) => (
//
// ),
// cell: ({ row }) => {
// const rfqCode = row.original.rfqCode
// const value = row.getValue("rfqTitle")
// // F로 시작하지 않으면 빈 값 반환
// if (!rfqCode?.startsWith('F')) {
// return null
// }
// return value || "-"
// },
// minSize: 200,
// maxSize: 400,
// enableResizing: true,
// enableHiding: true,
// },
{
accessorKey: "projectName",
header: ({ column }) => (
),
cell: ({ row }) => (
{row.original.projectCode}
{row.original.projectName || "-"}
),
minSize: 150,
maxSize: 300,
enableResizing: true,
},
{
accessorKey: "itemName",
header: ({ column }) => (
),
cell: ({ row }) => row.getValue("itemName") || "-",
minSize: 150,
maxSize: 300,
enableResizing: true,
},
{
accessorKey: "packageName",
header: ({ column }) => (
),
cell: ({ row }) => (
{row.original.packageNo}
{row.original.packageName || "-"}
),
minSize: 120,
maxSize: 250,
enableResizing: true,
},
{
accessorKey: "MaterialGroup",
header: ({ column }) => (
),
cell: ({ row }) => (
{row.original.majorItemMaterialCategory}
{row.original.majorItemMaterialDescription || "-"}
),
minSize: 120,
maxSize: 250,
enableResizing: true,
},
{
id: "rfqDocument",
header: ({ column }) => ,
cell: ({ row }) => (
),
size: 80,
},
// 견적품목수 - 수정됨
{
accessorKey: "prItemsCount",
header: ({ column }) => ,
cell: ({ row }) => (
),
size: 90,
},
{
accessorKey: "engPicName",
header: ({ column }) => ,
cell: ({ row }) => row.original.engPicName || "-",
size: 100,
},
{
accessorKey: "picUserName",
header: ({ column }) => ,
cell: ({ row }) => row.original.picUserName || row.original.picName || "-",
size: 100,
},
{
accessorKey: "submittedAt",
header: ({ column }) => (
),
cell: ({ row }) => {
return row.original.submittedAt
? formatDateTime(new Date(row.original.submittedAt))
: "-"
},
size: 150,
minSize: 120,
maxSize: 180,
enableResizing: true,
},
{
accessorKey: "totalAmount",
header: ({ column }) => (
),
cell: ({ row }) => {
if (!row.original.totalAmount) return "-"
return formatCurrency(
row.original.totalAmount,
row.original.vendorCurrency || "USD"
)
},
size: 140,
minSize: 120,
maxSize: 180,
enableResizing: true,
},
{
accessorKey: "displayStatus", // 변경: responseStatus → displayStatus
header: ({ column }) => (
),
cell: ({ row }) => ,
size: 120,
minSize: 100,
maxSize: 150,
enableResizing: true,
},
{
accessorKey: "rfqSendDate",
header: ({ column }) => (
),
cell: ({ row }) => {
const value = row.getValue("rfqSendDate")
return value ? formatDateTime(new Date(value as string)) : "-"
},
size: 150,
minSize: 120,
maxSize: 180,
enableResizing: true,
},
{
accessorKey: "participationRepliedAt", // 추가: 참여 응답일
header: ({ column }) => (
),
cell: ({ row }) => {
const value = row.getValue("participationRepliedAt")
return value ? formatDateTime(new Date(value as string)) : "-"
},
size: 150,
minSize: 120,
maxSize: 180,
enableResizing: true,
enableHiding: true, // 선택적 표시
},
{
accessorKey: "dueDate",
header: ({ column }) => (
),
cell: ({ row }) => {
const value = row.getValue("dueDate")
const now = new Date()
const dueDate = value ? new Date(value as string) : null
const isOverdue = dueDate && dueDate < now
const isNearDeadline = dueDate &&
(dueDate.getTime() - now.getTime()) < (24 * 60 * 60 * 1000) // 24시간 이내
return (
{dueDate ? formatDateTime(dueDate) : "-"}
)
},
size: 150,
minSize: 120,
maxSize: 180,
enableResizing: true,
},
actionsColumn,
]
return columns
}