summaryrefslogtreecommitdiff
path: root/lib/basic-contract/status-detail/basic-contracts-detail-columns.tsx
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-11-21 06:04:56 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-11-21 06:04:56 +0000
commitb845ccde2910894911233cda273657d2b52e63f9 (patch)
treef12032484952225d099b3399f800d912bfdbda88 /lib/basic-contract/status-detail/basic-contracts-detail-columns.tsx
parenteacfa3f36274e495838a7114d68ff80a0f257a6a (diff)
(임수민) 준법 Red Flag 수정
Diffstat (limited to 'lib/basic-contract/status-detail/basic-contracts-detail-columns.tsx')
-rw-r--r--lib/basic-contract/status-detail/basic-contracts-detail-columns.tsx51
1 files changed, 47 insertions, 4 deletions
diff --git a/lib/basic-contract/status-detail/basic-contracts-detail-columns.tsx b/lib/basic-contract/status-detail/basic-contracts-detail-columns.tsx
index c872aede..b2c811fd 100644
--- a/lib/basic-contract/status-detail/basic-contracts-detail-columns.tsx
+++ b/lib/basic-contract/status-detail/basic-contracts-detail-columns.tsx
@@ -38,6 +38,8 @@ interface GetColumnsProps {
isLoadingGtcData: boolean
redFlagData: Record<number, boolean>
isLoadingRedFlagData: boolean
+ redFlagResolutionData: Record<number, { resolved: boolean; resolvedAt: Date | null }>
+ isLoadingRedFlagResolutionData: boolean
isComplianceTemplate: boolean
router: NextRouter;
}
@@ -61,6 +63,8 @@ export function getDetailColumns({
isLoadingGtcData,
redFlagData,
isLoadingRedFlagData,
+ redFlagResolutionData,
+ isLoadingRedFlagResolutionData,
isComplianceTemplate,
router
}: GetColumnsProps): ColumnDef<BasicContractView>[] {
@@ -223,6 +227,44 @@ export function getDetailColumns({
enableHiding: false,
}
+ // Red Flag 해제 컬럼 (준법서약 템플릿만)
+ const redFlagResolutionColumn: ColumnDef<BasicContractView> = {
+ id: "redFlagResolution",
+ header: ({ column }) => (
+ <DataTableColumnHeaderSimple column={column} title="Red Flag 해제" />
+ ),
+ cell: ({ row }) => {
+ const contract = row.original;
+ const contractId = contract.id;
+
+ // 로딩 중이면 로딩 표시
+ if (isLoadingRedFlagResolutionData) {
+ return <Loader2 className="h-4 w-4 animate-spin text-muted-foreground" />;
+ }
+
+ const resolution = redFlagResolutionData[contractId];
+
+ if (resolution?.resolved && resolution.resolvedAt) {
+ return (
+ <div className="text-sm">
+ <Badge variant="default" className="font-medium bg-green-600">
+ 해제됨
+ </Badge>
+ <div className="text-xs text-gray-500 mt-1">
+ {formatDateTime(resolution.resolvedAt, "KR")}
+ </div>
+ </div>
+ );
+ }
+
+ return (
+ <div className="text-sm text-gray-400">-</div>
+ );
+ },
+ minSize: 140,
+ enableHiding: false,
+ }
+
// 기본 컬럼 배열
const baseColumns: ColumnDef<BasicContractView>[] = [
selectColumn,
@@ -421,8 +463,9 @@ export function getDetailColumns({
),
cell: ({ row }) => {
const status = row.getValue("legalReviewStatus") as string | null
- const requestedDate = row.getValue("legalReviewRequestedAt") as Date | null
- const completedDate = row.getValue("legalReviewCompletedAt") as Date | null
+ const contract = row.original
+ const requestedDate = contract.legalReviewRequestedAt as Date | null
+ const completedDate = contract.legalReviewCompletedAt as Date | null
// 법무검토 상태 우선, 없으면 기존 로직으로 판단
if (status) {
@@ -554,7 +597,7 @@ export function getDetailColumns({
actionsColumn,
]
- // 준법서약 템플릿인 경우 Red Flag 컬럼을 법무검토 상태 뒤에 추가
+ // 준법서약 템플릿인 경우 Red Flag 컬럼과 해제 컬럼을 법무검토 상태 뒤에 추가
if (isComplianceTemplate) {
const legalReviewStatusIndex = baseColumns.findIndex((col) => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -562,7 +605,7 @@ export function getDetailColumns({
})
if (legalReviewStatusIndex !== -1) {
- baseColumns.splice(legalReviewStatusIndex + 1, 0, redFlagColumn)
+ baseColumns.splice(legalReviewStatusIndex + 1, 0, redFlagColumn, redFlagResolutionColumn)
}
}