diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-11-28 11:11:39 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-11-28 11:11:39 +0000 |
| commit | 748f68bb7b5d02450664651ae5025c9a38fb71a5 (patch) | |
| tree | fd15d76861891fe1b57356f9ebffba30fa5e6ea0 | |
| parent | 1eb7cf92d1d7711e5d62a750e7611dc6fd1a241d (diff) | |
(임수민) 준법, gtc 코멘트 수정
| -rw-r--r-- | lib/basic-contract/status-detail/basic-contracts-detail-columns.tsx | 39 | ||||
| -rw-r--r-- | lib/basic-contract/status-detail/basic-contracts-detail-table.tsx | 51 |
2 files changed, 34 insertions, 56 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 047866f7..8783894c 100644 --- a/lib/basic-contract/status-detail/basic-contracts-detail-columns.tsx +++ b/lib/basic-contract/status-detail/basic-contracts-detail-columns.tsx @@ -172,12 +172,6 @@ export function getDetailColumns({ <Mail className="mr-2 h-4 w-4" /> 재발송 </DropdownMenuItem> - <DropdownMenuItem onClick={() => { - setRowAction({ type: "view", row }); - }}> - <FileText className="mr-2 h-4 w-4" /> - 상세 정보 - </DropdownMenuItem> </DropdownMenuContent> </DropdownMenu> ) @@ -305,6 +299,7 @@ export function getDetailColumns({ const isComplianceContract = contract.templateName?.includes('준법') const contractGtcData = gtcData[contract.id] const complianceNegotiation = agreementCommentData[contract.id] + const hasComplianceRedFlag = !!redFlagData[contract.id] const isNegotiationCompleted = !!contract.negotiationCompletedAt const handleOpenGTC = (e: React.MouseEvent) => { @@ -312,6 +307,7 @@ export function getDetailColumns({ // 상세보기와 동일하게 contract.id를 경로 파라미터로 사용 const params = new URLSearchParams(); + params.set("contractId", contract.id.toString()); if (contract.templateId) { params.set("templateId", contract.templateId.toString()); } @@ -394,7 +390,36 @@ export function getDetailColumns({ <MessageCircle className="h-3 w-3 mr-1" /> 협의 진행중 ({complianceNegotiation.commentCount}) </Badge> - ) : null} + ) : ( + hasComplianceRedFlag && !isNegotiationCompleted && ( + <Badge + variant="outline" + className="text-xs bg-blue-50 text-blue-700 border-blue-200" + title="SHI에서 협의 코멘트를 시작합니다" + onClick={(event) => { + event.stopPropagation() + if (typeof window === "undefined") return + const params = new URLSearchParams() + if (contract.templateId) { + params.set("templateId", contract.templateId.toString()) + } + if (contract.vendorId) { + params.set("vendorId", contract.vendorId.toString()) + } + if (contract.vendorName) { + params.set("vendorName", contract.vendorName) + } + const query = params.toString() + const complianceUrl = `/evcp/basic-contract/compliance-comments/${contract.id}${query ? `?${query}` : ""}` + window.open(complianceUrl, "_blank", "noopener,noreferrer") + }} + style={{ cursor: "pointer" }} + > + <MessageCircle className="h-3 w-3 mr-1" /> + 협의 코멘트 작성 + </Badge> + ) + )} </div> )} </div> diff --git a/lib/basic-contract/status-detail/basic-contracts-detail-table.tsx b/lib/basic-contract/status-detail/basic-contracts-detail-table.tsx index 9c5da894..cface6b3 100644 --- a/lib/basic-contract/status-detail/basic-contracts-detail-table.tsx +++ b/lib/basic-contract/status-detail/basic-contracts-detail-table.tsx @@ -16,7 +16,6 @@ import { checkRedFlagsForContracts } from "@/lib/basic-contract/actions/check-re import { checkRedFlagResolutionForContracts } from "@/lib/basic-contract/actions/check-red-flag-resolution" import { BasicContractView } from "@/db/schema" import { BasicContractDetailTableToolbarActions } from "./basic-contract-detail-table-toolbar-actions" -import { toast } from "sonner" import { useRouter } from "next/navigation" interface BasicContractsDetailTableProps { @@ -227,57 +226,11 @@ type RedFlagResolutionState = { clearOnDefault: true, }) - // rowAction 처리 로직 추가 React.useEffect(() => { if (rowAction) { - switch (rowAction.type) { - case "view": - // GTC 템플릿인 경우 GTC 협의 페이지로 이동 - const contract = rowAction.row.original; - if (contract.templateName?.includes('GTC')) { - // GTC 템플릿인 경우 GTC 협의 페이지로 이동 - // 준법과 동일하게 contract.id를 경로 파라미터로 사용 - const params = new URLSearchParams(); - if (contract.templateId) { - params.set("templateId", contract.templateId.toString()); - } - if (contract.vendorId) { - params.set("vendorId", contract.vendorId.toString()); - } - if (contract.vendorName) { - params.set("vendorName", contract.vendorName); - } - const query = params.toString(); - const gtcUrl = `/evcp/basic-contract/vendor-gtc/${contract.id}${query ? `?${query}` : ""}`; - router.push(gtcUrl); - } else if (contract.templateName?.includes('준법')) { - // 준법 템플릿인 경우 준법 코멘트 페이지로 이동 - const params = new URLSearchParams(); - if (contract.templateId) { - params.set("templateId", contract.templateId.toString()); - } - if (contract.vendorId) { - params.set("vendorId", contract.vendorId.toString()); - } - if (contract.vendorName) { - params.set("vendorName", contract.vendorName); - } - const query = params.toString(); - const complianceUrl = `/evcp/basic-contract/compliance-comments/${contract.id}${query ? `?${query}` : ""}`; - router.push(complianceUrl); - } else { - // 일반 계약서인 경우: 상세 정보를 보여주는 기능 - // 현재는 준비 중이지만, 향후 다이얼로그나 시트를 열 수 있음 - toast.info("상세 정보 기능은 준비 중입니다."); - } - setRowAction(null); - break; - default: - setRowAction(null); - break; - } + setRowAction(null) } - }, [rowAction, router, gtcData]); + }, [rowAction]); return ( <DataTable table={table}> |
