summaryrefslogtreecommitdiff
path: root/lib/approval
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-11-24 11:16:32 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-11-24 11:16:32 +0000
commita8674e6b91fb4d356c311fad0251878de154da53 (patch)
tree8bdf91ef99b2628f319df37912ccede1e2f5009c /lib/approval
parent68160eba15a2c8408329b6e14b94d5e44fa7e3ab (diff)
(최겸) 구매 입찰 수정(폐찰, 낙찰 결재 기능 추가 등)
Diffstat (limited to 'lib/approval')
-rw-r--r--lib/approval/handlers-registry.ts10
-rw-r--r--lib/approval/templates/입찰 결과 업체 선정 품의 요청서.html788
-rw-r--r--lib/approval/templates/폐찰 품의 요청서.html581
3 files changed, 1379 insertions, 0 deletions
diff --git a/lib/approval/handlers-registry.ts b/lib/approval/handlers-registry.ts
index 5c173565..beb6b971 100644
--- a/lib/approval/handlers-registry.ts
+++ b/lib/approval/handlers-registry.ts
@@ -68,6 +68,16 @@ export async function initializeApprovalHandlers() {
// 입찰초대 핸들러 등록 (결재 승인 후 실행될 함수 requestBiddingInvitationInternal)
registerActionHandler('bidding_invitation', requestBiddingInvitationInternal);
+ // 9. 폐찰 핸들러
+ const { requestBiddingClosureInternal } = await import('@/lib/bidding/handlers');
+ // 폐찰 핸들러 등록 (결재 승인 후 실행될 함수 requestBiddingClosureInternal)
+ registerActionHandler('bidding_closure', requestBiddingClosureInternal);
+
+ // 10. 낙찰 핸들러
+ const { requestBiddingAwardInternal } = await import('@/lib/bidding/handlers');
+ // 낙찰 핸들러 등록 (결재 승인 후 실행될 함수 requestBiddingAwardInternal)
+ registerActionHandler('bidding_award', requestBiddingAwardInternal);
+
// ... 추가 핸들러 등록
console.log('[Approval Handlers] All handlers registered successfully');
diff --git a/lib/approval/templates/입찰 결과 업체 선정 품의 요청서.html b/lib/approval/templates/입찰 결과 업체 선정 품의 요청서.html
new file mode 100644
index 00000000..50e1ff54
--- /dev/null
+++ b/lib/approval/templates/입찰 결과 업체 선정 품의 요청서.html
@@ -0,0 +1,788 @@
+<div
+ style="
+ max-width: 1000px;
+ margin: 0 auto;
+ font-family: 'Malgun Gothic', 'Segoe UI', sans-serif;
+ font-size: 14px;
+ color: #333;
+ line-height: 1.5;
+ border: 1px solid #666; /* 전체적인 테두리 추가 */
+ "
+>
+
+ <!-- 1. 제목 -->
+ <table
+ style="
+ width: 100%;
+ border-collapse: collapse;
+ margin-bottom: 0px;
+ border-bottom: 2px solid #000;
+ "
+ >
+ <thead>
+ <tr>
+ <th
+ style="
+ background-color: #fff;
+ color: #000;
+ padding: 15px;
+ text-align: center;
+ font-size: 20px;
+ font-weight: 700;
+ "
+ >
+ 입찰 결과 업체 선정 품의 요청서 ({{제목}})
+ </th>
+ </tr>
+ <tr>
+ <td
+ style="
+ padding: 5px 15px;
+ text-align: right;
+ font-size: 12px;
+ color: #666;
+ border-bottom: 1px solid #ccc;
+ "
+ >
+ *결재 완료 후 낙찰이 반영되며, 협력사로 통보됩니다.
+ </td>
+ </tr>
+ </thead>
+ </table>
+
+
+
+ <!-- 2. 입찰 기본 정보 -->
+ <table
+ style="
+ width: 100%;
+ border-collapse: collapse;
+ margin-bottom: 15px;
+ "
+ >
+ <thead>
+ <tr>
+ <th
+ colspan="4"
+ style="
+ background-color: #333;
+ color: #fff;
+ padding: 10px;
+ text-align: left;
+ font-size: 15px;
+ font-weight: 600;
+ border-bottom: 1px solid #666;
+ "
+ >
+ ■ 입찰 기본 정보
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <!-- 1행 -->
+ <tr>
+ <td
+ style="
+ background-color: #f5f5f5;
+ padding: 8px 10px;
+ font-weight: 600;
+ width: 15%;
+ border: 1px solid #ccc;
+ text-align: center;
+ "
+ >
+ 입찰명
+ </td>
+ <td
+ style="
+ padding: 8px 10px;
+ width: 35%;
+ border: 1px solid #ccc;
+ "
+ >
+ {{입찰명}}
+ </td>
+ <td
+ style="
+ background-color: #f5f5f5;
+ padding: 8px 10px;
+ font-weight: 600;
+ width: 15%;
+ border: 1px solid #ccc;
+ text-align: center;
+ "
+ >
+ 입찰번호
+ </td>
+ <td
+ style="
+ padding: 8px 10px;
+ width: 35%;
+ border: 1px solid #ccc;
+ "
+ >
+ {{입찰번호}}
+ </td>
+ </tr>
+ <!-- 2행 -->
+ <tr>
+ <td
+ style="
+ background-color: #f5f5f5;
+ padding: 8px 10px;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ text-align: center;
+ "
+ >
+ 낙찰업체수
+ </td>
+ <td
+ style="
+ padding: 8px 10px;
+ border: 1px solid #ccc;
+ "
+ >
+ {{낙찰업체수}}
+ </td>
+ <td
+ style="
+ background-color: #f5f5f5;
+ padding: 8px 10px;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ text-align: center;
+ "
+ >
+ 계약구분
+ </td>
+ <td
+ style="
+ padding: 8px 10px;
+ border: 1px solid #ccc;
+ "
+ >
+ {{계약구분}}
+ </td>
+ </tr>
+ <!-- 3행 -->
+ <tr>
+ <td
+ style="
+ background-color: #f5f5f5;
+ padding: 8px 10px;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ text-align: center;
+ "
+ >
+ P/R번호
+ </td>
+ <td
+ style="
+ padding: 8px 10px;
+ border: 1px solid #ccc;
+ "
+ >
+ {{P/R번호}}
+ </td>
+ <td
+ style="
+ background-color: #f5f5f5;
+ padding: 8px 10px;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ text-align: center;
+ "
+ >
+ 예산
+ </td>
+ <td
+ style="
+ padding: 8px 10px;
+ border: 1px solid #ccc;
+ "
+ >
+ {{예산}}
+ </td>
+ </tr>
+ <!-- 4행 -->
+ <tr>
+ <td
+ style="
+ background-color: #f5f5f5;
+ padding: 8px 10px;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ text-align: center;
+ "
+ >
+ 내정액
+ </td>
+ <td
+ style="
+ padding: 8px 10px;
+ border: 1px solid #ccc;
+ "
+ >
+ {{내정액}}
+ </td>
+ <td
+ style="
+ background-color: #f5f5f5;
+ padding: 8px 10px;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ text-align: center;
+ "
+ >
+ 입찰담당자
+ </td>
+ <td
+ style="
+ padding: 8px 10px;
+ border: 1px solid #ccc;
+ "
+ >
+ {{입찰담당자}}
+ </td>
+ </tr>
+ <!-- 5행: 입찰 개요 -->
+ <tr>
+ <td
+ style="
+ background-color: #f5f5f5;
+ padding: 8px 10px;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ text-align: center;
+ "
+ >
+ 입찰 개요
+ </td>
+ <td
+ colspan="3"
+ style="
+ padding: 8px 10px;
+ height: 80px;
+ border: 1px solid #ccc;
+ vertical-align: top;
+ "
+ >
+ {{입찰개요}}
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+
+ <!-- 3. 업체 선정 결과 -->
+ <table
+ style="
+ width: 100%;
+ border-collapse: collapse;
+ margin-bottom: 15px;
+ "
+ >
+ <thead>
+ <tr>
+ <th
+ colspan="11"
+ style="
+ background-color: #333;
+ color: #fff;
+ padding: 10px;
+ text-align: left;
+ font-size: 15px;
+ font-weight: 600;
+ border-bottom: 1px solid #666;
+ "
+ >
+ ■ 업체 선정 결과
+ </th>
+ </tr>
+ <tr>
+ <td
+ style="
+ background-color: #f5f5f5;
+ padding: 8px 10px;
+ font-weight: 600;
+ width: 15%;
+ border: 1px solid #ccc;
+ text-align: center;
+ "
+ >
+ 선정 사유
+ </td>
+ <td
+ colspan="10"
+ style="
+ padding: 8px 10px;
+ height: 50px;
+ border: 1px solid #ccc;
+ vertical-align: top;
+ "
+ >
+ {{업체선정사유}}
+ </td>
+ </tr>
+ <!-- 업체 선정 결과 테이블 헤더 -->
+ <tr>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 8px 10px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 5%;
+ "
+ >
+ 순번
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 8px 10px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 10%;
+ "
+ >
+ 협력사 코드
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 8px 10px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 15%;
+ "
+ >
+ 협력사명
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 8px 10px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 8%;
+ "
+ >
+ 기업규모
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 8px 10px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 8%;
+ "
+ >
+ 연동제 희망
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 8px 10px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 8%;
+ "
+ >
+ 연동제 적용
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 8px 10px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 8%;
+ "
+ >
+ 낙찰 유무
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 8px 10px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 12%;
+ "
+ >
+ 확정 금액
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 8px 10px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 8%;
+ "
+ >
+ 내정액
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 8px 10px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 8%;
+ "
+ >
+ 입찰액
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 8px 10px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 10%;
+ "
+ >
+ 입찰액/내정액(%)
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <!-- 업체 선정 결과 데이터 행 (반복 영역) -->
+ <tr>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">1</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">{{협력사_코드_1}}</td>
+ <td style="padding: 8px 10px; border: 1px solid #ccc;">{{협력사명_1}}</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">{{기업규모_1}}</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">{{연동제희망여부_1}}</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">{{연동제적용여부_1}}</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">{{낙찰유무_1}}</td>
+ <td style="padding: 8px 10px; text-align: right; border: 1px solid #ccc;">{{확정금액_1}}</td>
+ <td style="padding: 8px 10px; text-align: right; border: 1px solid #ccc;">{{내정액_1}}</td>
+ <td style="padding: 8px 10px; text-align: right; border: 1px solid #ccc;">{{입찰액_1}}</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">{{비율_1}}</td>
+ </tr>
+ <tr>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">2</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">{{협력사_코드_2}}</td>
+ <td style="padding: 8px 10px; border: 1px solid #ccc;">{{협력사명_2}}</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">{{기업규모_2}}</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">{{연동제희망여부_2}}</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">{{연동제적용여부_2}}</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">{{낙찰유무_2}}</td>
+ <td style="padding: 8px 10px; text-align: right; border: 1px solid #ccc;">{{확정금액_2}}</td>
+ <td style="padding: 8px 10px; text-align: right; border: 1px solid #ccc;">{{내정액_2}}</td>
+ <td style="padding: 8px 10px; text-align: right; border: 1px solid #ccc;">{{입찰액_2}}</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">{{비율_2}}</td>
+ </tr>
+ <!-- /업체 선정 결과 데이터 행 -->
+ </tbody>
+ </table>
+
+
+
+ <!-- 4. 자재별 입찰 정보 -->
+ <table
+ style="
+ width: 100%;
+ border-collapse: collapse;
+ margin-bottom: 15px;
+ "
+ >
+ <thead>
+ <tr>
+ <th
+ colspan="13"
+ style="
+ background-color: #333;
+ color: #fff;
+ padding: 10px;
+ text-align: left;
+ font-size: 15px;
+ font-weight: 600;
+ border-bottom: 1px solid #666;
+ "
+ >
+ ■ 품목별 입찰 정보 (총 {{대상_자재_수}} 건 - 결재본문 내 표시 품목은 10건 이하로 제한됩니다)
+ </th>
+ </tr>
+ <tr style="font-size: 12px;">
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 5%;
+ "
+ >
+ 순번
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 10%;
+ "
+ >
+ 자재번호
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 15%;
+ "
+ >
+ 자재내역(품목명)
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 5%;
+ "
+ >
+ 구매단위
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 5%;
+ "
+ >
+ 수량
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 5%;
+ "
+ >
+ 수량단위
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 5%;
+ "
+ >
+ 총중량
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 5%;
+ "
+ >
+ 중량단위
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 5%;
+ "
+ >
+ 통화
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 10%;
+ "
+ >
+ 내정액
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 15%;
+ "
+ >
+ 낙찰 협력사명
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 10%;
+ "
+ >
+ 입찰액
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <!-- 자재별 입찰 정보 데이터 행 (반복 영역) -->
+ <tr style="font-size: 12px;">
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">1</td>
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">{{자재번호_1}}</td>
+ <td style="padding: 6px 4px; border: 1px solid #ccc;">{{자재내역_1}}</td>
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">{{구매단위_1}}</td>
+ <td style="padding: 6px 4px; text-align: right; border: 1px solid #ccc;">{{수량_1}}</td>
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">{{수량단위_1}}</td>
+ <td style="padding: 6px 4px; text-align: right; border: 1px solid #ccc;">{{총중량_1}}</td>
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">{{중량단위_1}}</td>
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">{{통화_1}}</td>
+ <td style="padding: 6px 4px; text-align: right; border: 1px solid #ccc;">{{내정액_1}}</td>
+ <td style="padding: 6px 4px; border: 1px solid #ccc;">{{협력사명_1}}</td>
+ <td style="padding: 6px 4px; text-align: right; border: 1px solid #ccc;">{{입찰액_1}}</td>
+ </tr>
+ <tr style="font-size: 12px;">
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">2</td>
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">{{자재번호_2}}</td>
+ <td style="padding: 6px 4px; border: 1px solid #ccc;">{{자재내역_2}}</td>
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">{{구매단위_2}}</td>
+ <td style="padding: 6px 4px; text-align: right; border: 1px solid #ccc;">{{수량_2}}</td>
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">{{수량단위_2}}</td>
+ <td style="padding: 6px 4px; text-align: right; border: 1px solid #ccc;">{{총중량_2}}</td>
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">{{중량단위_2}}</td>
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">{{통화_2}}</td>
+ <td style="padding: 6px 4px; text-align: right; border: 1px solid #ccc;">{{내정액_2}}</td>
+ <td style="padding: 6px 4px; border: 1px solid #ccc;">{{협력사명_2}}</td>
+ <td style="padding: 6px 4px; text-align: right; border: 1px solid #ccc;">{{입찰액_2}}</td>
+ </tr>
+ <!-- /자재별 입찰 정보 데이터 행 -->
+ </tbody>
+ </table>
+
+
+
+ <!-- 5. 연동제 NOTE (템플릿만 - TODO) -->
+ <table
+ style="
+ width: 100%;
+ border-collapse: collapse;
+ margin-bottom: 15px;
+ "
+ >
+ <thead>
+ <tr>
+ <th
+ colspan="3"
+ style="
+ background-color: #333;
+ color: #fff;
+ padding: 10px;
+ text-align: left;
+ font-size: 15px;
+ font-weight: 600;
+ border-bottom: 1px solid #666;
+ "
+ >
+ ■ 연동제 NOTE
+ </th>
+ </tr>
+ <tr>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 8px 10px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 33%;
+ "
+ >
+ 업체명
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 8px 10px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 33%;
+ "
+ >
+ 연동 합의서
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 8px 10px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 34%;
+ "
+ >
+ 미연동 합의서
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <!-- 연동제 NOTE 데이터 행 (반복 영역 - 변수 매핑 불필요 - TODO) -->
+ <tr>
+ <td style="padding: 8px 10px; border: 1px solid #ccc;">{{업체명_연동제_1}}</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">[첨부파일 링크 또는 Y/N]</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">[첨부파일 링크 또는 Y/N]</td>
+ </tr>
+ <tr>
+ <td style="padding: 8px 10px; border: 1px solid #ccc;">{{업체명_연동제_2}}</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">[첨부파일 링크 또는 Y/N]</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">[첨부파일 링크 또는 Y/N]</td>
+ </tr>
+ <!-- /연동제 NOTE 데이터 행 -->
+ </tbody>
+ </table>
+
+</div>
diff --git a/lib/approval/templates/폐찰 품의 요청서.html b/lib/approval/templates/폐찰 품의 요청서.html
new file mode 100644
index 00000000..dafda83c
--- /dev/null
+++ b/lib/approval/templates/폐찰 품의 요청서.html
@@ -0,0 +1,581 @@
+<div
+ style="
+ max-width: 1000px;
+ margin: 0 auto;
+ font-family: 'Malgun Gothic', 'Segoe UI', sans-serif;
+ font-size: 14px;
+ color: #333;
+ line-height: 1.5;
+ border: 1px solid #666; /* 전체적인 테두리 추가 */
+ "
+>
+
+ <!-- 1. 제목 -->
+ <table
+ style="
+ width: 100%;
+ border-collapse: collapse;
+ margin-bottom: 0px;
+ border-bottom: 2px solid #000;
+ "
+ >
+ <thead>
+ <tr>
+ <th
+ style="
+ background-color: #fff;
+ color: #000;
+ padding: 15px;
+ text-align: center;
+ font-size: 20px;
+ font-weight: 700;
+ "
+ >
+ 폐찰 품의 요청서 ({{제목}})
+ </th>
+ </tr>
+ <tr>
+ <td
+ style="
+ padding: 5px 15px;
+ text-align: right;
+ font-size: 12px;
+ color: #666;
+ border-bottom: 1px solid #ccc;
+ "
+ >
+ *결재 완료 후 폐찰 처리됩니다.
+ </td>
+ </tr>
+ </thead>
+ </table>
+
+
+
+ <!-- 2. 입찰 기본 정보 -->
+ <table
+ style="
+ width: 100%;
+ border-collapse: collapse;
+ margin-bottom: 15px;
+ "
+ >
+ <thead>
+ <tr>
+ <th
+ colspan="4"
+ style="
+ background-color: #333;
+ color: #fff;
+ padding: 10px;
+ text-align: left;
+ font-size: 15px;
+ font-weight: 600;
+ border-bottom: 1px solid #666;
+ "
+ >
+ ■ 입찰 기본 정보
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <!-- 1행 -->
+ <tr>
+ <td
+ style="
+ background-color: #f5f5f5;
+ padding: 8px 10px;
+ font-weight: 600;
+ width: 15%;
+ border: 1px solid #ccc;
+ text-align: center;
+ "
+ >
+ 입찰명
+ </td>
+ <td
+ style="
+ padding: 8px 10px;
+ width: 35%;
+ border: 1px solid #ccc;
+ "
+ >
+ {{입찰명}}
+ </td>
+ <td
+ style="
+ background-color: #f5f5f5;
+ padding: 8px 10px;
+ font-weight: 600;
+ width: 15%;
+ border: 1px solid #ccc;
+ text-align: center;
+ "
+ >
+ 입찰번호
+ </td>
+ <td
+ style="
+ padding: 8px 10px;
+ width: 35%;
+ border: 1px solid #ccc;
+ "
+ >
+ {{입찰번호}}
+ </td>
+ </tr>
+ <!-- 2행 -->
+ <tr>
+ <td
+ style="
+ background-color: #f5f5f5;
+ padding: 8px 10px;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ text-align: center;
+ "
+ >
+ 낙찰업체수
+ </td>
+ <td
+ style="
+ padding: 8px 10px;
+ border: 1px solid #ccc;
+ "
+ >
+ {{낙찰업체수}}
+ </td>
+ <td
+ style="
+ background-color: #f5f5f5;
+ padding: 8px 10px;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ text-align: center;
+ "
+ >
+ 계약구분
+ </td>
+ <td
+ style="
+ padding: 8px 10px;
+ border: 1px solid #ccc;
+ "
+ >
+ {{계약구분}}
+ </td>
+ </tr>
+ <!-- 3행 -->
+ <tr>
+ <td
+ style="
+ background-color: #f5f5f5;
+ padding: 8px 10px;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ text-align: center;
+ "
+ >
+ 내정가
+ </td>
+ <td
+ style="
+ padding: 8px 10px;
+ border: 1px solid #ccc;
+ "
+ >
+ {{내정가}}
+ </td>
+ <td
+ style="
+ background-color: #f5f5f5;
+ padding: 8px 10px;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ text-align: center;
+ "
+ >
+ 입찰담당자
+ </td>
+ <td
+ style="
+ padding: 8px 10px;
+ border: 1px solid #ccc;
+ "
+ >
+ {{입찰담당자}}
+ </td>
+ </tr>
+ <!-- 4행: 입찰 개요 -->
+ <tr>
+ <td
+ style="
+ background-color: #f5f5f5;
+ padding: 8px 10px;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ text-align: center;
+ "
+ >
+ 입찰 개요
+ </td>
+ <td
+ colspan="3"
+ style="
+ padding: 8px 10px;
+ height: 80px;
+ border: 1px solid #ccc;
+ vertical-align: top;
+ "
+ >
+ {{입찰개요}}
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+
+ <!-- 3. 입찰 현황 및 폐찰 결과 -->
+ <table
+ style="
+ width: 100%;
+ border-collapse: collapse;
+ margin-bottom: 15px;
+ "
+ >
+ <thead>
+ <tr>
+ <th
+ colspan="7"
+ style="
+ background-color: #333;
+ color: #fff;
+ padding: 10px;
+ text-align: left;
+ font-size: 15px;
+ font-weight: 600;
+ border-bottom: 1px solid #666;
+ "
+ >
+ ■ 입찰 현황 및 폐찰 결과
+ </th>
+ </tr>
+ <tr>
+ <td
+ style="
+ background-color: #f5f5f5;
+ padding: 8px 10px;
+ font-weight: 600;
+ width: 15%;
+ border: 1px solid #ccc;
+ text-align: center;
+ "
+ >
+ 폐찰 사유
+ </td>
+ <td
+ colspan="6"
+ style="
+ padding: 8px 10px;
+ height: 50px;
+ border: 1px solid #ccc;
+ vertical-align: top;
+ "
+ >
+ {{폐찰_사유}}
+ </td>
+ </tr>
+ <!-- 폐찰 결과 테이블 헤더 -->
+ <tr>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 8px 10px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 5%;
+ "
+ >
+ 순번
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 8px 10px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 15%;
+ "
+ >
+ 협력사 코드
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 8px 10px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 25%;
+ "
+ >
+ 협력사명
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 8px 10px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 10%;
+ "
+ >
+ 응찰 유무
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 8px 10px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 15%;
+ "
+ >
+ 내정가
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 8px 10px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 15%;
+ "
+ >
+ 입찰가
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 8px 10px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 15%;
+ "
+ >
+ 입찰가/내정가(%)
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <!-- 폐찰 결과 데이터 행 (반복 영역) -->
+ <tr>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">1</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">{{협력사_코드_1}}</td>
+ <td style="padding: 8px 10px; border: 1px solid #ccc;">{{협력사명_1}}</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">{{응찰유무_1}}</td>
+ <td style="padding: 8px 10px; text-align: right; border: 1px solid #ccc;">{{내정가_1}}</td>
+ <td style="padding: 8px 10px; text-align: right; border: 1px solid #ccc;">{{입찰가_1}}</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">{{비율_1}}</td>
+ </tr>
+ <tr>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">2</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">{{협력사_코드_2}}</td>
+ <td style="padding: 8px 10px; border: 1px solid #ccc;">{{협력사명_2}}</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">{{응찰유무_2}}</td>
+ <td style="padding: 8px 10px; text-align: right; border: 1px solid #ccc;">{{내정가_2}}</td>
+ <td style="padding: 8px 10px; text-align: right; border: 1px solid #ccc;">{{입찰가_2}}</td>
+ <td style="padding: 8px 10px; text-align: center; border: 1px solid #ccc;">{{비율_2}}</td>
+ </tr>
+ <!-- /폐찰 결과 데이터 행 -->
+ </tbody>
+ </table>
+
+
+
+ <!-- 4. 품목별 입찰 정보 -->
+ <table
+ style="
+ width: 100%;
+ border-collapse: collapse;
+ margin-bottom: 15px;
+ "
+ >
+ <thead>
+ <tr>
+ <th
+ colspan="10"
+ style="
+ background-color: #333;
+ color: #fff;
+ padding: 10px;
+ text-align: left;
+ font-size: 15px;
+ font-weight: 600;
+ border-bottom: 1px solid #666;
+ "
+ >
+ ■ 품목별 입찰 정보
+ </th>
+ </tr>
+ <tr style="font-size: 12px;">
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 5%;
+ "
+ >
+ 순번
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 10%;
+ "
+ >
+ 품목 코드
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 15%;
+ "
+ >
+ 품목명
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 5%;
+ "
+ >
+ 수량
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 5%;
+ "
+ >
+ 단위
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 5%;
+ "
+ >
+ 통화
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 15%;
+ "
+ >
+ 내정가
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 10%;
+ "
+ >
+ 협력사 코드
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 15%;
+ "
+ >
+ 협력사명
+ </th>
+ <th
+ style="
+ background-color: #e8e8e8;
+ padding: 6px 4px;
+ text-align: center;
+ font-weight: 600;
+ border: 1px solid #ccc;
+ width: 15%;
+ "
+ >
+ 입찰가
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <!-- 품목별 입찰 정보 데이터 행 (반복 영역) -->
+ <tr style="font-size: 12px;">
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">1</td>
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">{{품목코드_1}}</td>
+ <td style="padding: 6px 4px; border: 1px solid #ccc;">{{품목명_1}}</td>
+ <td style="padding: 6px 4px; text-align: right; border: 1px solid #ccc;">{{수량_1}}</td>
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">{{단위_1}}</td>
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">{{통화_1}}</td>
+ <td style="padding: 6px 4px; text-align: right; border: 1px solid #ccc;">{{내정가_1}}</td>
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">{{협력사코드_1}}</td>
+ <td style="padding: 6px 4px; border: 1px solid #ccc;">{{협력사명_1}}</td>
+ <td style="padding: 6px 4px; text-align: right; border: 1px solid #ccc;">{{입찰가_1}}</td>
+ </tr>
+ <tr style="font-size: 12px;">
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">2</td>
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">{{품목코드_2}}</td>
+ <td style="padding: 6px 4px; border: 1px solid #ccc;">{{품목명_2}}</td>
+ <td style="padding: 6px 4px; text-align: right; border: 1px solid #ccc;">{{수량_2}}</td>
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">{{단위_2}}</td>
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">{{통화_2}}</td>
+ <td style="padding: 6px 4px; text-align: right; border: 1px solid #ccc;">{{내정가_2}}</td>
+ <td style="padding: 6px 4px; text-align: center; border: 1px solid #ccc;">{{협력사코드_2}}</td>
+ <td style="padding: 6px 4px; border: 1px solid #ccc;">{{협력사명_2}}</td>
+ <td style="padding: 6px 4px; text-align: right; border: 1px solid #ccc;">{{입찰가_2}}</td>
+ </tr>
+ <!-- /품목별 입찰 정보 데이터 행 -->
+ </tbody>
+ </table>
+
+</div>