351 lines
20 KiB
HTML
351 lines
20 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
|
<div class="modal-header bg-dark">
|
|
<h5 class="modal-title text-white" id="resultEditModalLabel" th:text="${result.resultKey eq null?'청산보고서 작성':'청산보고서 수정'}"></h5>
|
|
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
</div>
|
|
<div class="modal-body" id="resultEditBody">
|
|
<form action="#" method="post" id="resultEditForm">
|
|
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
|
|
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
|
<input type="hidden" name="resultKey" th:value="${result.resultKey}">
|
|
<input type="hidden" name="wrtOrgan" th:value="${result.wrtOrgan}">
|
|
<input type="hidden" name="wrtPart" th:value="${result.wrtPart}">
|
|
<input type="hidden" name="wrtUserGrd" th:value="${result.wrtUserGrd}">
|
|
<input type="hidden" name="wrtUserSeq" th:value="${result.wrtUserSeq}">
|
|
<input type="hidden" name="resultState" id="resultState" th:value="${result.resultState}">
|
|
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
|
<li class="nav-item" role="presentation">
|
|
<button class="nav-link active" id="clearReportTab" data-bs-toggle="tab" data-bs-target="#clearReportTabPanel" type="button" role="tab" aria-controls="clearReportTabPanel" aria-selected="true">청산보고서</button>
|
|
</li>
|
|
<li class="nav-item" role="presentation">
|
|
<button class="nav-link" id="resultReportTab" data-bs-toggle="tab" data-bs-target="#resultReportTabPanel" type="button" role="tab" aria-controls="resultReportTabPanel" aria-selected="false">결과보고서</button>
|
|
</li>
|
|
<li class="nav-item" role="presentation">
|
|
<button class="nav-link" id="reportListTab" data-bs-toggle="tab" data-bs-target="#reportListTabPanel" type="button" role="tab" aria-controls="reportListTabPanel" aria-selected="false">연관보고서&증빙자료</button>
|
|
</li>
|
|
</ul>
|
|
<div class="tab-content bg-white border border-top-0" id="configInfo">
|
|
<div class="tab-pane fade p-2 show active" id="clearReportTabPanel" role="tabpanel" aria-labelledby="clearReportTab" tabindex="0">
|
|
<div class="row mb-1">
|
|
<label for="wrtUserNm" class="col-sm-2 col-form-label col-form-label-sm text-center">작성자</label>
|
|
<div class="col-sm-4">
|
|
<input type="text" class="form-control form-control-sm" id="wrtUserNm" name="wrtUserNm" th:value="${result.wrtUserNm}" readonly>
|
|
</div>
|
|
<label for="wrtDt" class="col-sm-2 col-form-label col-form-label-sm text-center">작성일시</label>
|
|
<div class="col-sm-4">
|
|
<input type="text" class="form-control form-control-sm" id="wrtDt" name="wrtDt" th:value="${#temporals.format(result.wrtDt, 'yyyy-MM-dd HH:mm')}" readonly>
|
|
</div>
|
|
</div>
|
|
<div class="row mb-1">
|
|
<label for="clearTitle" class="col-sm-2 col-form-label col-form-label-sm text-center">목적(제목)</label>
|
|
<div class="col-sm-10">
|
|
<input type="text" class="form-control form-control-sm" id="clearTitle" name="clearTitle" th:value="${result.clearTitle}">
|
|
</div>
|
|
</div>
|
|
<div class="row mb-1">
|
|
<label for="useDateSelectorDiv" class="col-sm-2 col-form-label col-form-label-sm text-center">사용기간</label>
|
|
<div class="col-sm-4">
|
|
<div class="input-group w-auto input-daterange" id="useDateSelectorDiv">
|
|
<input type="text" class="form-control form-control-sm" id="useStartDt" name="useStartDt" th:value="${#temporals.format(result.useStartDt, 'yyyy-MM-dd')}" readonly>
|
|
<input type="text" class="form-control form-control-sm" id="useEndDt" name="useEndDt" th:value="${#temporals.format(result.useEndDt, 'yyyy-MM-dd')}" readonly>
|
|
</div>
|
|
</div>
|
|
<label for="workDateSelectorDiv" class="col-sm-2 col-form-label col-form-label-sm text-center">사업기간</label>
|
|
<div class="col-sm-4">
|
|
<div class="input-group w-auto input-daterange" id="workDateSelectorDiv">
|
|
<input type="text" class="form-control form-control-sm" id="workStartDt" name="workStartDt" th:value="${#temporals.format(result.workStartDt, 'yyyy-MM-dd')}" readonly>
|
|
<input type="text" class="form-control form-control-sm" id="workEndDt" name="workEndDt" th:value="${#temporals.format(result.workEndDt, 'yyyy-MM-dd')}" readonly>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row mb-1">
|
|
<label for="planPrice" class="col-sm-2 col-form-label col-form-label-sm text-center">계획금액</label>
|
|
<div class="col-sm-4">
|
|
<div class="row">
|
|
<div class="col-auto me-0">
|
|
<input type="text" class="form-control form-control-sm" id="planPrice" name="planPrice" th:value="${#numbers.formatInteger(result.planPrice, 1)}">
|
|
</div>
|
|
<label for="planPrice" class="col-sm-auto col-form-label col-form-label-sm">원</label>
|
|
</div>
|
|
</div>
|
|
<label for="usePrice" class="col-sm-2 col-form-label col-form-label-sm text-center">집행액</label>
|
|
<div class="col-sm-4">
|
|
<div class="row">
|
|
<div class="col-auto me-0">
|
|
<input type="text" class="form-control form-control-sm" id="usePrice" name="usePrice" th:value="${#numbers.formatInteger(result.usePrice, 1)}">
|
|
</div>
|
|
<label for="usePrice" class="col-sm-auto col-form-label col-form-label-sm">원</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row mb-1 justify-content-center">
|
|
<label for="clearInfoAddBtn" class="col-sm-2 col-form-label col-form-label-sm text-center">세부<br>집행내역</label>
|
|
<div class="col-sm-10">
|
|
<div class="row">
|
|
<div class="col-1">no</div>
|
|
<div class="col-3">구분</div>
|
|
<div class="col-3">상세</div>
|
|
<div class="col-5">금액</div>
|
|
</div>
|
|
<hr class="my-1">
|
|
<div class="row">
|
|
<div class="col-12" id="clearInfoRow">
|
|
<th:block th:each="info:${result.clearInfoList}">
|
|
<div class="row my-1 infoRow" th:id="|row${info.infoSeq}|">
|
|
<input type="hidden" class="infoSeq clearInfoSeq" th:name="${#strings.concat('clearInfoList[', info.infoSeq,'].infoSeq')}" th:value="${info.infoSeq}">
|
|
<div class="col-1 infoSeq" th:text="${info.infoSeq+1}"></div>
|
|
<div class="col-3">
|
|
<select class="form-select form-select-sm" th:name="${#strings.concat('clearInfoList[', info.infoSeq,'].useCatg')}">
|
|
<option value="">선택</option>
|
|
<th:block th:each="category:${categoryList}">
|
|
<option th:value="${category.itemCd}" th:text="${category.itemValue}" th:selected="${category.itemCd eq info.useCatg}"></option>
|
|
</th:block>
|
|
</select>
|
|
</div>
|
|
<div class="col-3">
|
|
<select class="form-select form-select-sm" th:name="${#strings.concat('clearInfoList[', info.infoSeq,'].useDetail')}">
|
|
<option value="">선택</option>
|
|
<th:block th:each="code:${codeList}">
|
|
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq info.useDetail}"></option>
|
|
</th:block>
|
|
</select>
|
|
</div>
|
|
<div class="col-5">
|
|
<div class="row">
|
|
<div class="col-7 pe-0">
|
|
<input type="text" class="form-control form-control-sm" th:name="${#strings.concat('clearInfoList[', info.infoSeq,'].price')}" th:value="${#numbers.formatInteger(info.price, 1)}">
|
|
</div>
|
|
<label class="col-auto">원</label>
|
|
<div class="col-auto">
|
|
<button type="button" class="btn btn-sm btn-outline-danger rowDeleteBtn"><i class="bi bi-x"></i></button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</th:block>
|
|
</div>
|
|
</div>
|
|
<div class="row justify-content-center">
|
|
<div class="col-auto">
|
|
<button type="button" class="btn btn-sm btn-outline-primary" id="clearInfoAddBtn"><i class="bi bi-plus-lg"></i></button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!--<div class="row mb-1">
|
|
<label for="fileInputer" class="col-sm-2 col-form-label col-form-label-sm text-center">증빙서류</label>
|
|
<div class="col-sm-10" style="min-height: 70px;">
|
|
<div class="w-100 h-100 border border-info rounded text-center" id="uploadDiv">
|
|
<th:block th:if="${#arrays.isEmpty(result.fileList)}">
|
|
<br>파일을 업로드 해주세요.
|
|
</th:block>
|
|
<th:block th:unless="${#arrays.isEmpty(result.fileList)}">
|
|
<div class='row-col-6' th:each="resultFile:${result.fileList}">
|
|
<span th:data-fileseq="${resultFile.fileSeq}" th:text="|${resultFile.origNm}.${resultFile.fileExtn} ${resultFile.fileSize}|"></span>
|
|
<a href='#' class='uploadedFileDelete text-danger text-decoration-none'>삭제</a>
|
|
</div>
|
|
</th:block>
|
|
</div>
|
|
</div>
|
|
<input type="file" class="d-none" id="fileInputer" multiple>
|
|
</div>-->
|
|
<div class="row mb-1">
|
|
<label for="clearEtc" class="col-sm-2 col-form-label col-form-label-sm text-center">비고</label>
|
|
<div class="col-sm-10">
|
|
<input type="text" class="form-control form-control-sm" id="clearEtc" name="clearEtc" th:value="${result.clearEtc}">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="tab-pane fade p-2" id="resultReportTabPanel" role="tabpanel" aria-labelledby="resultReportTab" tabindex="0">
|
|
<div class="row mb-1">
|
|
<label for="resultTitle" class="col-sm-2 col-form-label col-form-label-sm text-center">사업명</label>
|
|
<div class="col-sm-10">
|
|
<input type="text" class="form-control form-control-sm" id="resultTitle" name="resultTitle" th:value="${result.clearTitle}">
|
|
</div>
|
|
</div>
|
|
<div class="row mb-1">
|
|
<label class="col-sm-2 col-form-label col-form-label-sm text-center">활동기간</label>
|
|
<div class="col-sm-4">
|
|
<div class="input-group w-auto">
|
|
<input type="text" class="form-control form-control-sm workStartDtCopy" th:value="${#temporals.format(result.workStartDt, 'yyyy-MM-dd')}" readonly>
|
|
<input type="text" class="form-control form-control-sm workEndDtCopy" th:value="${#temporals.format(result.workEndDt, 'yyyy-MM-dd')}" readonly>
|
|
</div>
|
|
</div>
|
|
<label for="usePriceCopy" class="col-sm-2 col-form-label col-form-label-sm text-center">집행액</label>
|
|
<div class="col-sm-4">
|
|
<div class="row">
|
|
<div class="col-auto me-0">
|
|
<input type="text" class="form-control form-control-sm" id="usePriceCopy" th:value="${result.usePrice}" readonly>
|
|
</div>
|
|
<label for="usePriceCopy" class="col-sm-auto col-form-label col-form-label-sm">원</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row mb-1 justify-content-center">
|
|
<label for="resultInfoRow" class="col-sm-2 col-form-label col-form-label-sm text-center">활동내용</label>
|
|
<div class="col-sm-10">
|
|
<div class="row">
|
|
<div class="col-1">no</div>
|
|
<div class="col-3">접촉 대상자</div>
|
|
<div class="col-7">접촉 내용</div>
|
|
<div class="col-1"></div>
|
|
</div>
|
|
<hr class="my-1">
|
|
<div class="row">
|
|
<div class="col-12" id="resultInfoRow">
|
|
<th:block th:each="info:${result.resultInfoList}">
|
|
<div class="row my-1 infoRow" th:id="|row${info.infoSeq}|">
|
|
<input type="hidden" class="infoSeq resultInfoSeq" th:name="${#strings.concat('resultInfoList[', info.infoSeq,'].infoSeq')}" th:value="${info.infoSeq}">
|
|
<div class="col-1 infoSeq" th:text="${info.infoSeq+1}"></div>
|
|
<div class="col-3">
|
|
<input type="text" class="form-control form-control-sm" th:name="${#strings.concat('resultInfoList[', info.infoSeq,'].contactTarget')}" th:value="${info.contactTarget}">
|
|
</div>
|
|
<div class="col-7">
|
|
<textarea class="form-control contactInfo" th:id="|contactInfo${info.infoSeq}|" th:name="${#strings.concat('resultInfoList[', info.infoSeq,'].contactInfo')}" th:utext="${info.contactInfo}"></textarea>
|
|
</div>
|
|
<div class="col-1">
|
|
<button type="button" class="btn btn-sm btn-outline-danger rowDeleteBtn"><i class="bi bi-x"></i></button>
|
|
</div>
|
|
</div>
|
|
</th:block>
|
|
</div>
|
|
</div>
|
|
<div class="row justify-content-center">
|
|
<div class="col-auto">
|
|
<button type="button" class="btn btn-sm btn-outline-primary" id="resultInfoAddBtn"><i class="bi bi-plus-lg"></i></button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!--<div class="row mb-1">
|
|
<label for="fileInputer" class="col-sm-2 col-form-label col-form-label-sm text-center">증빙서류</label>
|
|
<div class="col-sm-10" style="min-height: 70px;">
|
|
<div class="w-100 h-100 border border-info rounded text-center" id="uploadDiv">
|
|
<th:block th:if="${#arrays.isEmpty(result.fileList)}">
|
|
<br>파일을 업로드 해주세요.
|
|
</th:block>
|
|
<th:block th:unless="${#arrays.isEmpty(result.fileList)}">
|
|
<div class='row-col-6' th:each="resultFile:${result.fileList}">
|
|
<span th:data-fileseq="${resultFile.fileSeq}" th:text="|${resultFile.origNm}.${resultFile.fileExtn} ${resultFile.fileSize}|"></span>
|
|
<a href='#' class='uploadedFileDelete text-danger text-decoration-none'>삭제</a>
|
|
</div>
|
|
</th:block>
|
|
</div>
|
|
</div>
|
|
<input type="file" class="d-none" id="fileInputer" multiple>
|
|
</div>-->
|
|
<div class="row mb-1">
|
|
<label for="resultEtc" class="col-sm-2 col-form-label col-form-label-sm text-center">비고</label>
|
|
<div class="col-sm-10">
|
|
<input type="text" class="form-control form-control-sm" id="resultEtc" name="resultEtc" th:value="${result.clearEtc}">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="tab-pane fade p-2" id="reportListTabPanel" role="tabpanel" aria-labelledby="reportListTab" tabindex="0">
|
|
<div class="row mb-1">
|
|
<label class="col-sm-2 col-form-label col-form-label-sm text-center">활동기간</label>
|
|
<div class="col-sm-4">
|
|
<div class="input-group w-auto">
|
|
<input type="text" class="form-control form-control-sm workStartDtCopy" th:value="${#temporals.format(result.workStartDt, 'yyyy-MM-dd')}" readonly>
|
|
<input type="text" class="form-control form-control-sm workEndDtCopy" th:value="${#temporals.format(result.workEndDt, 'yyyy-MM-dd')}" readonly>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row mb-1 justify-content-center">
|
|
<div class="col-12">
|
|
<div class="row">
|
|
<div class="col-auto align-middle">
|
|
<h5 class="my-1"><i class="bi bi-square-fill"></i>계획목록</h5>
|
|
</div>
|
|
<div class="col-auto">
|
|
<input type="button" class="btn btn-sm btn-outline-primary" id="planModalBtn" value="불러오기">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-12" id="planListDiv">
|
|
<table class="table table-sm table-hover">
|
|
<colgroup>
|
|
<col style="width: 15%">
|
|
<col style="width: 85%">
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th>시행일자</th>
|
|
<th>제목</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="planListTbody">
|
|
<tr class="planTr" th:each="plan:${result.planBoardList}">
|
|
<input type="hidden" class="planKey" th:value="${plan.planKey}">
|
|
<td th:text="${#temporals.format(plan.planDt, 'yyyy-MM-dd')}"></td>
|
|
<td th:text="${plan.contentTitle}"></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="row mb-1 justify-content-center">
|
|
<div class="col-12">
|
|
<div class="row">
|
|
<div class="col-auto align-middle">
|
|
<h5 class="my-1"><i class="bi bi-square-fill"></i>견문목록</h5>
|
|
</div>
|
|
<div class="col-auto">
|
|
<input type="button" class="btn btn-sm btn-outline-primary" id="affairModalBtn" value="불러오기">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-12" id="affairListDiv">
|
|
<table class="table table-sm table-hover">
|
|
<colgroup>
|
|
<col style="width: 15%">
|
|
<col style="width: 70%">
|
|
<col style="width: 15%">
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th>작성일자</th>
|
|
<th>제목</th>
|
|
<th>활용</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="affairListTbody">
|
|
<tr class="affairTr" th:each="affair:${result.affairBoardList}">
|
|
<input type="hidden" class="affairKey" th:value="${affair.affairKey}">
|
|
<td th:text="${#temporals.format(affair.wrtDt, 'yyyy-MM-dd')}"></td>
|
|
<td th:text="${affair.title}"></td>
|
|
<th:block th:each="ratingCode:${session.commonCode.get('AAR')}">
|
|
<td class="affairRate" th:if="${ratingCode.itemCd eq affair.affairRate}" th:text="${#strings.concat(ratingCode.itemValue, (affair.organUp eq 'T'?'(상보)':''))}"></td>
|
|
</th:block>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="row mb-1">
|
|
<label for="fileInputer" class="col-sm-2 col-form-label col-form-label-sm text-center">증빙자료</label>
|
|
<div class="col-sm-10" style="min-height: 70px;">
|
|
<div class="w-100 h-100 border border-info rounded text-center" id="uploadDiv">
|
|
<th:block th:if="${#arrays.isEmpty(result.fileList)}">
|
|
<br>파일을 업로드 해주세요.
|
|
</th:block>
|
|
<th:block th:unless="${#arrays.isEmpty(result.fileList)}">
|
|
<div class='row-col-6' th:each="resultFile:${result.fileList}">
|
|
<span th:data-fileseq="${resultFile.fileSeq}" th:text="|${resultFile.origNm}.${resultFile.fileExtn} ${resultFile.fileSize}|"></span>
|
|
<a href='#' class='uploadedFileDelete text-danger text-decoration-none'>삭제</a>
|
|
</div>
|
|
</th:block>
|
|
</div>
|
|
</div>
|
|
<input type="file" class="d-none" id="fileInputer" multiple>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<div class="modal-footer bg-light">
|
|
<!-- <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>-->
|
|
<button type="button" class="btn btn-warning" id="saveTempBtn">임시저장</button>
|
|
<button type="button" class="btn btn-primary" id="saveResultBtn">저장</button>
|
|
</div> |