diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-10-27 10:03:06 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-10-27 10:03:06 +0000 |
| commit | a3525f8bdfcf849cc1716fab81cb8facadbe9a8e (patch) | |
| tree | 0b5b534e92bcfe188d4906db7d16c37044262c2f /lib/pq/pq-review-table-new | |
| parent | e87b7b06d92dc7e7235ecda24c212169f30e82ec (diff) | |
(최겸) 구매 협력업체 관리(PQ/실사관리, 정기평가 협력업체 제출 상세 dialog 개발,
Diffstat (limited to 'lib/pq/pq-review-table-new')
4 files changed, 62 insertions, 34 deletions
diff --git a/lib/pq/pq-review-table-new/edit-investigation-dialog.tsx b/lib/pq/pq-review-table-new/edit-investigation-dialog.tsx index c5470e47..c4057798 100644 --- a/lib/pq/pq-review-table-new/edit-investigation-dialog.tsx +++ b/lib/pq/pq-review-table-new/edit-investigation-dialog.tsx @@ -224,7 +224,7 @@ export function EditInvestigationDialog({ name="confirmedAt"
render={({ field }) => (
<FormItem className="flex flex-col">
- <FormLabel>실사 확정일</FormLabel>
+ <FormLabel>실사 계획 확정일</FormLabel>
<Popover>
<PopoverTrigger asChild>
<FormControl>
diff --git a/lib/pq/pq-review-table-new/request-investigation-dialog.tsx b/lib/pq/pq-review-table-new/request-investigation-dialog.tsx index 6941adbb..aaf10a71 100644 --- a/lib/pq/pq-review-table-new/request-investigation-dialog.tsx +++ b/lib/pq/pq-review-table-new/request-investigation-dialog.tsx @@ -55,7 +55,7 @@ const requestInvestigationFormSchema = z.object({ required_error: "QM 담당자를 선택해주세요.",
}),
forecastedAt: z.date({
- required_error: "실사 예정일을 선택해주세요.",
+ required_error: "실사 수행 예정일을 선택해주세요.",
}),
investigationAddress: z.string().min(1, "실사 장소를 입력해주세요."),
investigationMethod: z.string().optional(),
@@ -189,7 +189,7 @@ export function RequestInvestigationDialog({ name="forecastedAt"
render={({ field }) => (
<FormItem className="flex flex-col">
- <FormLabel>실사 예정일</FormLabel>
+ <FormLabel>실사 수행 예정일</FormLabel>
<Popover>
<PopoverTrigger asChild>
<FormControl>
@@ -201,7 +201,7 @@ export function RequestInvestigationDialog({ {field.value ? (
format(field.value, "yyyy년 MM월 dd일")
) : (
- <span>실사 예정일을 선택하세요</span>
+ <span>실사 수행 예정일을 선택하세요</span>
)}
<CalendarIcon className="ml-auto h-4 w-4 opacity-50" />
</Button>
diff --git a/lib/pq/pq-review-table-new/send-results-dialog.tsx b/lib/pq/pq-review-table-new/send-results-dialog.tsx index 3c8614cc..6c75e6ca 100644 --- a/lib/pq/pq-review-table-new/send-results-dialog.tsx +++ b/lib/pq/pq-review-table-new/send-results-dialog.tsx @@ -123,7 +123,9 @@ export function SendResultsDialog({ </div>
<div className="grid grid-cols-3 gap-4">
<div className="font-medium text-muted-foreground">Vendor</div>
- <div className="col-span-2">{result.vendorCode} | {result.vendorName}</div>
+ <div className="col-span-2">
+ {(result.vendorCode === "N/A" ? "미등록" : result.vendorCode)} | {result.vendorName}
+ </div>
</div>
<div className="grid grid-cols-3 gap-4">
<div className="font-medium text-muted-foreground">수신자</div>
@@ -151,7 +153,9 @@ export function SendResultsDialog({ </div>
{result.investigationNotes && (
<div className="grid grid-cols-3 gap-4">
- <div className="font-medium text-muted-foreground">실사합격조건</div>
+ <div className="font-medium text-muted-foreground">
+ {result.auditResult.includes("Pass") ? "QM 의견" : "실사합격조건"}
+ </div>
<div className="col-span-2">{result.investigationNotes}</div>
</div>
)}
diff --git a/lib/pq/pq-review-table-new/vendors-table-columns.tsx b/lib/pq/pq-review-table-new/vendors-table-columns.tsx index ffa15e56..30b1c83f 100644 --- a/lib/pq/pq-review-table-new/vendors-table-columns.tsx +++ b/lib/pq/pq-review-table-new/vendors-table-columns.tsx @@ -3,6 +3,11 @@ import * as React from "react"
import { type DataTableRowAction } from "@/types/table"
import { type ColumnDef } from "@tanstack/react-table"
+
+// ColumnDef 타입 확장
+type ExtendedColumnDef<T> = ColumnDef<T> & {
+ excelHeader?: string;
+}
import { Ellipsis, Eye, FileEdit, Trash2, Building2, FileText, Edit } from "lucide-react"
import { formatDate } from "@/lib/utils"
@@ -116,11 +121,11 @@ function getStatusBadge(status: string) { /**
* tanstack table 컬럼 정의
*/
-export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef<PQSubmission>[] {
+export function getColumns({ setRowAction, router }: GetColumnsProps): ExtendedColumnDef<PQSubmission>[] {
// ----------------------------------------------------------------
// 1) select 컬럼 (체크박스)
// ----------------------------------------------------------------
- const selectColumn: ColumnDef<PQSubmission> = {
+ const selectColumn: ExtendedColumnDef<PQSubmission> = {
id: "select",
header: ({ table }) => {
const selectedRows = table.getSelectedRowModel().rows;
@@ -180,7 +185,7 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef // --------------------------
// --------------------------------------
- const pqNoColumn: ColumnDef<PQSubmission> = {
+ const pqNoColumn: ExtendedColumnDef<PQSubmission> = {
accessorKey: "pqNumber",
header: ({ column }) => (
<DataTableColumnHeaderSimple column={column} title="PQ No." />
@@ -190,10 +195,11 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef <span className="font-medium">{row.getValue("pqNumber")}</span>
</div>
),
+ excelHeader: "PQ No.",
}
// 협력업체 컬럼
- const vendorColumn: ColumnDef<PQSubmission> = {
+ const vendorColumn: ExtendedColumnDef<PQSubmission> = {
accessorKey: "vendorName",
header: ({ column }) => (
<DataTableColumnHeaderSimple column={column} title="협력업체" />
@@ -206,10 +212,11 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef ),
enableSorting: true,
enableHiding: true,
+ excelHeader: "협력업체",
}
// PQ 유형 컬럼
- const typeColumn: ColumnDef<PQSubmission> = {
+ const typeColumn: ExtendedColumnDef<PQSubmission> = {
accessorKey: "type",
header: ({ column }) => (
<DataTableColumnHeaderSimple column={column} title="PQ 유형" />
@@ -233,10 +240,11 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef },
enableSorting: true,
enableHiding: true,
+ excelHeader: "PQ 유형",
}
// 프로젝트 컬럼
- const projectColumn: ColumnDef<PQSubmission> = {
+ const projectColumn: ExtendedColumnDef<PQSubmission> = {
accessorKey: "projectName",
header: ({ column }) => (
<DataTableColumnHeaderSimple column={column} title="프로젝트" />
@@ -260,10 +268,11 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef },
enableSorting: true,
enableHiding: true,
+ excelHeader: "프로젝트",
}
// 상태 컬럼
- const statusColumn: ColumnDef<PQSubmission> = {
+ const statusColumn: ExtendedColumnDef<PQSubmission> = {
accessorKey: "combinedStatus",
header: ({ column }) => (
<DataTableColumnHeaderSimple column={column} title="진행현황" />
@@ -278,6 +287,7 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef },
enableSorting: true,
enableHiding: true,
+ excelHeader: "진행현황",
};
// PQ 상태와 실사 상태를 결합하는 헬퍼 함수
@@ -371,7 +381,7 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef // };
- const evaluationResultColumn: ColumnDef<PQSubmission> = {
+ const evaluationResultColumn: ExtendedColumnDef<PQSubmission> = {
accessorKey: "evaluationResult",
header: ({ column }) => (
<DataTableColumnHeaderSimple column={column} title="평가 결과" />
@@ -401,10 +411,11 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef },
enableSorting: true,
enableHiding: true,
+ excelHeader: "평가 결과",
};
// 답변 수 컬럼
- const answerCountColumn: ColumnDef<PQSubmission> = {
+ const answerCountColumn: ExtendedColumnDef<PQSubmission> = {
accessorKey: "answerCount",
header: ({ column }) => (
<DataTableColumnHeaderSimple column={column} title="답변 수" />
@@ -416,9 +427,10 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef </div>
)
},
+ excelHeader: "답변 수",
}
- const investigationAddressColumn: ColumnDef<PQSubmission> = {
+ const investigationAddressColumn: ExtendedColumnDef<PQSubmission> = {
accessorKey: "investigationAddress",
header: ({ column }) => (
<DataTableColumnHeaderSimple column={column} title="실사 주소" />
@@ -436,8 +448,9 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef </div>
)
},
+ excelHeader: "실사 주소",
}
- const investigationRequestedAtColumn: ColumnDef<PQSubmission> = {
+ const investigationRequestedAtColumn: ExtendedColumnDef<PQSubmission> = {
accessorKey: "investigationRequestedAt",
header: ({ column }) => (
<DataTableColumnHeaderSimple column={column} title="실사 의뢰일" />
@@ -456,9 +469,10 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef </div>
)
},
+ excelHeader: "실사 의뢰일",
}
- const investigationNotesColumn: ColumnDef<PQSubmission> = {
+ const investigationNotesColumn: ExtendedColumnDef<PQSubmission> = {
accessorKey: "investigationNotes",
header: ({ column }) => (
<DataTableColumnHeaderSimple column={column} title="QM 의견" />
@@ -476,8 +490,9 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef </div>
)
},
+ excelHeader: "QM 의견",
}
- const investigationMethodColumn: ColumnDef<PQSubmission> = {
+ const investigationMethodColumn: ExtendedColumnDef<PQSubmission> = {
accessorKey: "investigationMethod",
header: ({ column }) => (
<DataTableColumnHeaderSimple column={column} title="QM실사방법" />
@@ -501,10 +516,11 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef return <span>{investigation.investigationMethod}</span>;
}
},
+ excelHeader: "실사품목",
}
// 실사품목 컬럼
- const pqItemsColumn: ColumnDef<PQSubmission> = {
+ const pqItemsColumn: ExtendedColumnDef<PQSubmission> = {
accessorKey: "pqItems",
header: ({ column }) => (
<DataTableColumnHeaderSimple column={column} title="실사품목" />
@@ -536,10 +552,10 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef - const investigationForecastedAtColumn: ColumnDef<PQSubmission> = {
+ const investigationForecastedAtColumn: ExtendedColumnDef<PQSubmission> = {
accessorKey: "investigationForecastedAt",
header: ({ column }) => (
- <DataTableColumnHeaderSimple column={column} title="실사 예정일" />
+ <DataTableColumnHeaderSimple column={column} title="실사 수행 예정일" />
),
cell: ({ row }) => {
const investigation = row.original.investigation;
@@ -555,12 +571,13 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef </div>
)
},
+ excelHeader: "실사 수행 예정일",
}
- const investigationConfirmedAtColumn: ColumnDef<PQSubmission> = {
+ const investigationConfirmedAtColumn: ExtendedColumnDef<PQSubmission> = {
accessorKey: "investigationConfirmedAt",
header: ({ column }) => (
- <DataTableColumnHeaderSimple column={column} title="실사 확정일" />
+ <DataTableColumnHeaderSimple column={column} title="실사 계획 확정일" />
),
cell: ({ row }) => {
const investigation = row.original.investigation;
@@ -576,9 +593,10 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef </div>
)
},
+ excelHeader: "실사 계획 확정일",
}
- const investigationCompletedAtColumn: ColumnDef<PQSubmission> = {
+ const investigationCompletedAtColumn: ExtendedColumnDef<PQSubmission> = {
accessorKey: "investigationCompletedAt",
header: ({ column }) => (
<DataTableColumnHeaderSimple column={column} title="실제 실사일" />
@@ -597,10 +615,11 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef </div>
)
},
+ excelHeader: "실제 실사일",
}
// 제출일 컬럼
- const createdAtColumn: ColumnDef<PQSubmission> = {
+ const createdAtColumn: ExtendedColumnDef<PQSubmission> = {
accessorKey: "createdAt",
header: ({ column }) => (
<DataTableColumnHeaderSimple column={column} title="PQ 전송일" />
@@ -609,10 +628,11 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef const dateVal = row.original.createdAt as Date
return formatDate(dateVal, 'KR')
},
+ excelHeader: "PQ 전송일",
}
// 제출일 컬럼
- const submittedAtColumn: ColumnDef<PQSubmission> = {
+ const submittedAtColumn: ExtendedColumnDef<PQSubmission> = {
accessorKey: "submittedAt",
header: ({ column }) => (
<DataTableColumnHeaderSimple column={column} title="PQ 회신일" />
@@ -621,10 +641,11 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef const dateVal = row.original.submittedAt as Date
return dateVal ? formatDate(dateVal, 'KR') : "-"
},
+ excelHeader: "PQ 회신일",
}
// 승인/거부일 컬럼
- const approvalDateColumn: ColumnDef<PQSubmission> = {
+ const approvalDateColumn: ExtendedColumnDef<PQSubmission> = {
accessorKey: "approvedAt",
header: ({ column }) => (
<DataTableColumnHeaderSimple column={column} title="PQ 승인/거부일" />
@@ -638,12 +659,13 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef }
return "-"
},
+ excelHeader: "PQ 승인/거부일",
}
// ----------------------------------------------------------------
// 3) actions 컬럼 (Dropdown 메뉴)
// ----------------------------------------------------------------
- const actionsColumn: ColumnDef<PQSubmission> = {
+ const actionsColumn: ExtendedColumnDef<PQSubmission> = {
id: "actions",
enableHiding: false,
cell: function Cell({ row }) {
@@ -676,7 +698,7 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef ) : (
<>
<Eye className="mr-2 h-4 w-4" />
- 보기
+ PQ 현황
</>
)}
</DropdownMenuItem>
@@ -697,7 +719,7 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef }}
>
<Building2 className="mr-2 h-4 w-4" />
- 방문실사
+ 실사 정보 전달 및 요청
</DropdownMenuItem>
<DropdownMenuItem
onSelect={(e) => {
@@ -710,7 +732,7 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef }}
>
<FileText className="mr-2 h-4 w-4" />
- 협력업체 정보 조회
+ 실사 실시 확정 정보
</DropdownMenuItem>
</>
)}
@@ -758,7 +780,7 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef }
// 요청자 컬럼 추가
-const requesterColumn: ColumnDef<PQSubmission> = {
+const requesterColumn: ExtendedColumnDef<PQSubmission> = {
accessorKey: "requesterName",
header: ({ column }) => (
<DataTableColumnHeaderSimple column={column} title="PQ/실사 요청자" />
@@ -779,8 +801,9 @@ const requesterColumn: ColumnDef<PQSubmission> = { ? <span>{pqRequesterName}</span>
: <span className="text-muted-foreground">-</span>;
},
+ excelHeader: "PQ/실사 요청자",
};
-const qmManagerColumn: ColumnDef<PQSubmission> = {
+const qmManagerColumn: ExtendedColumnDef<PQSubmission> = {
accessorKey: "qmManager",
header: ({ column }) => (
<DataTableColumnHeaderSimple column={column} title="QM 담당자" />
@@ -801,6 +824,7 @@ const qmManagerColumn: ColumnDef<PQSubmission> = { </div>
);
},
+ excelHeader: "QM 담당자",
};
|
