summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-11-28 11:11:39 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-11-28 11:11:39 +0000
commit748f68bb7b5d02450664651ae5025c9a38fb71a5 (patch)
treefd15d76861891fe1b57356f9ebffba30fa5e6ea0
parent1eb7cf92d1d7711e5d62a750e7611dc6fd1a241d (diff)
(임수민) 준법, gtc 코멘트 수정
-rw-r--r--lib/basic-contract/status-detail/basic-contracts-detail-columns.tsx39
-rw-r--r--lib/basic-contract/status-detail/basic-contracts-detail-table.tsx51
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}>