청산보고 작업중.
parent
ae1d49cb04
commit
227f5ec5a2
|
|
@ -84,7 +84,11 @@ public class SecurityConfig{
|
||||||
"/refreshSession",
|
"/refreshSession",
|
||||||
"/publicBoard/**",
|
"/publicBoard/**",
|
||||||
"/affairPlan/**",
|
"/affairPlan/**",
|
||||||
"/affair/**"
|
"/affair/**",
|
||||||
|
"/affairResult/**",
|
||||||
|
"/equip/**",
|
||||||
|
"/target/**",
|
||||||
|
"/translator/**"
|
||||||
).hasRole(Role.USER.name()) // USER 접근 허용
|
).hasRole(Role.USER.name()) // USER 접근 허용
|
||||||
.antMatchers(
|
.antMatchers(
|
||||||
"/authMgt/**",
|
"/authMgt/**",
|
||||||
|
|
|
||||||
|
|
@ -43,8 +43,9 @@ public class ResultController { // 첩보수집활동 > 외사경찰 견문관
|
||||||
mav.addObject("accessAuth", accessAuth);
|
mav.addObject("accessAuth", accessAuth);
|
||||||
mav.addObject("apprvAuth", apprvAuth);
|
mav.addObject("apprvAuth", apprvAuth);
|
||||||
resultBoard.setQueryInfo();
|
resultBoard.setQueryInfo();
|
||||||
mav.addObject("resultList", resultService.selectResultBoardList(resultBoard));
|
// mav.addObject("resultList", resultService.selectResultBoardList(resultBoard));
|
||||||
resultBoard.setContentCnt(resultService.selectResultBoardListCnt(resultBoard));
|
// resultBoard.setContentCnt(resultService.selectResultBoardListCnt(resultBoard));
|
||||||
|
resultBoard.setContentCnt(0);
|
||||||
resultBoard.setPaginationInfo();
|
resultBoard.setPaginationInfo();
|
||||||
mav.addObject("searchParams", resultBoard);
|
mav.addObject("searchParams", resultBoard);
|
||||||
return mav;
|
return mav;
|
||||||
|
|
|
||||||
|
|
@ -15,28 +15,21 @@
|
||||||
<if test='wrtOrgan != null and wrtOrgan != ""'>
|
<if test='wrtOrgan != null and wrtOrgan != ""'>
|
||||||
and a.wrt_organ = #{wrtOrgan}
|
and a.wrt_organ = #{wrtOrgan}
|
||||||
</if>
|
</if>
|
||||||
<if test='contentTitle != null and contentTitle != ""'>
|
<if test='clearTitle != null and clearTitle != ""'>
|
||||||
and a.content_title like '%'||#{contentTitle}||'%'
|
and a.clear_title like '%'||#{clearTitle}||'%'
|
||||||
|
</if>
|
||||||
|
<if test='resultTitle != null and resultTitle != ""'>
|
||||||
|
and a.result_title like '%'||#{resultTitle}||'%'
|
||||||
</if>
|
</if>
|
||||||
<if test='resultState != null and resultState != ""'>
|
<if test='resultState != null and resultState != ""'>
|
||||||
and a.result_state = #{resultState}
|
and a.result_state = #{resultState}
|
||||||
</if>
|
</if>
|
||||||
<if test='dateSelector == "resultDt"'>
|
|
||||||
<if test='startDate != null and startDate != ""'>
|
|
||||||
and a.result_dt >= #{startDate}::date
|
|
||||||
</if>
|
|
||||||
<if test='endDate != null and endDate != ""'>
|
|
||||||
and a.result_dt <= #{endDate}::date+1
|
|
||||||
</if>
|
|
||||||
</if>
|
|
||||||
<if test='dateSelector == "wrtDt"'>
|
|
||||||
<if test='startDate != null and startDate != ""'>
|
<if test='startDate != null and startDate != ""'>
|
||||||
and a.wrt_dt >= #{startDate}::date
|
and a.wrt_dt >= #{startDate}::date
|
||||||
</if>
|
</if>
|
||||||
<if test='endDate != null and endDate != ""'>
|
<if test='endDate != null and endDate != ""'>
|
||||||
and a.wrt_dt <= #{endDate}::date+1
|
and a.wrt_dt <= #{endDate}::date+1
|
||||||
</if>
|
</if>
|
||||||
</if>
|
|
||||||
<if test="downOrganCdList != null">
|
<if test="downOrganCdList != null">
|
||||||
and a.wrt_organ in
|
and a.wrt_organ in
|
||||||
<foreach collection="downOrganCdList" item="organCd" separator="," open="(" close=")">
|
<foreach collection="downOrganCdList" item="organCd" separator="," open="(" close=")">
|
||||||
|
|
|
||||||
|
|
@ -7,32 +7,32 @@ $(function(){
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '#planTab', function (){
|
$(document).on('click', '#resultTab', function (){
|
||||||
location.href = "/affairPlan/planMgt";
|
location.href = "/affairResult/resultMgt";
|
||||||
})
|
})
|
||||||
$(document).on('click', '#stayTab', function (){
|
$(document).on('click', '#stayTab', function (){
|
||||||
location.href = "/affairPlan/stayPage";
|
location.href = "/affairResult/stayPage";
|
||||||
})
|
})
|
||||||
$(document).on('click', '#commitTab', function (){
|
$(document).on('click', '#commitTab', function (){
|
||||||
location.href = "/affairPlan/commitPage";
|
location.href = "/affairResult/commitPage";
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '#addPlanBtn', function (){
|
$(document).on('click', '#addResultBtn', function (){
|
||||||
getPlanEditModal(null)
|
getResultEditModal(null)
|
||||||
})
|
})
|
||||||
$(document).on('click', '#editPlanBtn', function (){
|
$(document).on('click', '#editResultBtn', function (){
|
||||||
$("#planViewModal").modal('hide');
|
$("#resultViewModal").modal('hide');
|
||||||
getPlanEditModal(Number($("#planViewBody").find("[name='planKey']").val()));
|
getResultEditModal(Number($("#resultViewBody").find("[name='resultKey']").val()));
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '#planAddBtn', function (){
|
$(document).on('click', '#resultAddBtn', function (){
|
||||||
$("#planDiv").append("<input type='text' class='form-control' name='planInfos'>")
|
$("#resultDiv").append("<input type='text' class='form-control' name='resultInfos'>")
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '#detailPlanAddBtn', function (){
|
$(document).on('click', '#detailResultAddBtn', function (){
|
||||||
const detailPlanDiv = $("#detailPlanDiv");
|
const detailResultDiv = $("#detailResultDiv");
|
||||||
detailPlanDiv.append("<textarea type='text' name='detailPlanInfos'></textarea>");
|
detailResultDiv.append("<textarea type='text' name='detailResultInfos'></textarea>");
|
||||||
const lastAppendTextarea = detailPlanDiv.children()[detailPlanDiv.children().length-1];
|
const lastAppendTextarea = detailResultDiv.children()[detailResultDiv.children().length-1];
|
||||||
$(lastAppendTextarea).summernote({
|
$(lastAppendTextarea).summernote({
|
||||||
lang:'ko-KR',
|
lang:'ko-KR',
|
||||||
height: 120,
|
height: 120,
|
||||||
|
|
@ -47,30 +47,30 @@ $(document).on('click', '#detailPlanAddBtn', function (){
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '#savePlanBtn', function (){
|
$(document).on('click', '#saveResultBtn', function (){
|
||||||
savePlan('DST002')
|
saveResult('DST002')
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '#saveTempBtn', function (){
|
$(document).on('click', '#saveTempBtn', function (){
|
||||||
savePlan('DST001')
|
saveResult('DST001')
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '.planTr', function (){
|
$(document).on('click', '.resultTr', function (){
|
||||||
$(".trChkBox").prop("checked", false);
|
$(".trChkBox").prop("checked", false);
|
||||||
$(this).find(".trChkBox").prop("checked", true);
|
$(this).find(".trChkBox").prop("checked", true);
|
||||||
getPlanViewModal(Number($(this).find(".planKey").val()));
|
getResultViewModal(Number($(this).find(".resultKey").val()));
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '.apprvBtn', function (){
|
$(document).on('click', '.apprvBtn', function (){
|
||||||
$("#apprvFormPlanKey").val($("#viewModalPlanKey").val());
|
$("#apprvFormResultKey").val($("#viewModalResultKey").val());
|
||||||
$("#viewModalApprvValue").val($(this).attr("data-planstate"));
|
$("#viewModalApprvValue").val($(this).attr("data-resultstate"));
|
||||||
if(confirm($(this).val()+"하시겠습니까?")){
|
if(confirm($(this).val()+"하시겠습니까?")){
|
||||||
const formData = new FormData($("#apprvForm")[0]);
|
const formData = new FormData($("#apprvForm")[0]);
|
||||||
contentFade("in")
|
contentFade("in")
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type : 'POST',
|
type : 'POST',
|
||||||
data : formData,
|
data : formData,
|
||||||
url : "/affairPlan/planStateChange",
|
url : "/affairResult/resultStateChange",
|
||||||
processData: false,
|
processData: false,
|
||||||
contentType: false,
|
contentType: false,
|
||||||
beforeSend: function (xhr){
|
beforeSend: function (xhr){
|
||||||
|
|
@ -78,7 +78,7 @@ $(document).on('click', '.apprvBtn', function (){
|
||||||
},
|
},
|
||||||
success : function(result) {
|
success : function(result) {
|
||||||
alert("저장되었습니다")
|
alert("저장되었습니다")
|
||||||
getPlanViewModal(result);
|
getResultViewModal(result);
|
||||||
contentFade("out");
|
contentFade("out");
|
||||||
},
|
},
|
||||||
error : function(xhr, status) {
|
error : function(xhr, status) {
|
||||||
|
|
@ -89,15 +89,15 @@ $(document).on('click', '.apprvBtn', function (){
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
function getPlanViewModal(planKey){
|
function getResultViewModal(resultKey){
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/affairPlan/planViewModal',
|
url: '/affairResult/resultViewModal',
|
||||||
data: {planKey: planKey},
|
data: {resultKey: resultKey},
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
dataType:"html",
|
dataType:"html",
|
||||||
success: function(html){
|
success: function(html){
|
||||||
$("#planViewBody").empty().append(html)
|
$("#resultViewBody").empty().append(html)
|
||||||
$("#planViewModal").modal('show');
|
$("#resultViewModal").modal('show');
|
||||||
},
|
},
|
||||||
error:function(){
|
error:function(){
|
||||||
|
|
||||||
|
|
@ -105,20 +105,20 @@ function getPlanViewModal(planKey){
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function getPlanEditModal(planKey){
|
function getResultEditModal(resultKey){
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/affairPlan/planEditModal',
|
url: '/affairResult/resultEditModal',
|
||||||
data: {planKey: planKey},
|
data: {resultKey: resultKey},
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
dataType:"html",
|
dataType:"html",
|
||||||
success: function(html){
|
success: function(html){
|
||||||
$("#planEditModalContent").empty().append(html)
|
$("#resultEditModalContent").empty().append(html)
|
||||||
$("#planEditModal").modal('show');
|
$("#resultEditModal").modal('show');
|
||||||
$("#planDt").datepicker({
|
$("#resultDt").datepicker({
|
||||||
format: "yyyy-mm-dd",
|
format: "yyyy-mm-dd",
|
||||||
language: "ko"
|
language: "ko"
|
||||||
});
|
});
|
||||||
$("[name='detailPlanInfos']").summernote({
|
$("[name='detailResultInfos']").summernote({
|
||||||
lang:'ko-KR',
|
lang:'ko-KR',
|
||||||
height: 120,
|
height: 120,
|
||||||
disableDragAndDrop: true,
|
disableDragAndDrop: true,
|
||||||
|
|
@ -137,12 +137,12 @@ function getPlanEditModal(planKey){
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function savePlan(planState){
|
function saveResult(resultState){
|
||||||
if(contentCheck()){
|
if(contentCheck()){
|
||||||
if(confirm("저장하시겠습니까?")){
|
if(confirm("저장하시겠습니까?")){
|
||||||
$("#planState").val(planState);
|
$("#resultState").val(resultState);
|
||||||
contentFade("in");
|
contentFade("in");
|
||||||
const formData = new FormData($("#planEditForm")[0]);
|
const formData = new FormData($("#resultEditForm")[0]);
|
||||||
for(const file of files) {
|
for(const file of files) {
|
||||||
if(!file.isDelete)
|
if(!file.isDelete)
|
||||||
formData.append('uploadFiles', file, file.name);
|
formData.append('uploadFiles', file, file.name);
|
||||||
|
|
@ -153,14 +153,14 @@ function savePlan(planState){
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type : 'POST',
|
type : 'POST',
|
||||||
data : formData,
|
data : formData,
|
||||||
url : "/affairPlan/savePlan",
|
url : "/affairResult/saveResult",
|
||||||
processData: false,
|
processData: false,
|
||||||
contentType: false,
|
contentType: false,
|
||||||
success : function(result) {
|
success : function(result) {
|
||||||
alert("저장되었습니다.");
|
alert("저장되었습니다.");
|
||||||
contentFade("out");
|
contentFade("out");
|
||||||
$("#planEditModal").modal('hide');
|
$("#resultEditModal").modal('hide');
|
||||||
getPlanViewModal(result);
|
getResultViewModal(result);
|
||||||
},
|
},
|
||||||
error : function(xhr, status) {
|
error : function(xhr, status) {
|
||||||
alert("저장에 실패하였습니다.")
|
alert("저장에 실패하였습니다.")
|
||||||
|
|
@ -178,7 +178,7 @@ function contentCheck(){
|
||||||
alert("제목을 입력해주세요.")
|
alert("제목을 입력해주세요.")
|
||||||
flag = false;
|
flag = false;
|
||||||
}
|
}
|
||||||
if(!$("#planDt").val()){
|
if(!$("#resultDt").val()){
|
||||||
alert("시행일자를 입력해주세요.")
|
alert("시행일자를 입력해주세요.")
|
||||||
flag = false;
|
flag = false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -112,12 +112,9 @@
|
||||||
<td th:text="${plan.wrtUserNm}"></td>
|
<td th:text="${plan.wrtUserNm}"></td>
|
||||||
<td th:text="${#temporals.format(plan.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
|
<td th:text="${#temporals.format(plan.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
|
||||||
<td th:text="${plan.fileCnt eq null?'파일 없음':#strings.concat(plan.fileCnt,' 건')}"></td>
|
<td th:text="${plan.fileCnt eq null?'파일 없음':#strings.concat(plan.fileCnt,' 건')}"></td>
|
||||||
<td th:if="${plan.planState eq 'DST001'}">임시저장</td>
|
<th:block th:each="commonCode:${session.commonCode.get('DST')}">
|
||||||
<td th:if="${plan.planState eq 'DST002'}">결재대기</td>
|
<td th:if="${plan.planState eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
|
||||||
<td th:if="${plan.planState eq 'DST003'}">계장반려</td>
|
</th:block>
|
||||||
<td th:if="${plan.planState eq 'DST004'}">계장결재</td>
|
|
||||||
<td th:if="${plan.planState eq 'DST005'}">부장반려</td>
|
|
||||||
<td th:if="${plan.planState eq 'DST006'}">부장결재</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
||||||
|
|
@ -1,80 +1,92 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title" id="planEditModalLabel" th:text="${plan.planKey eq null?'월간 계획 작성':'월간 계획 수정'}"></h5>
|
<h5 class="modal-title" id="resultEditModalLabel" th:text="${result.resultKey eq null?'청산보고서 작성':'청산보고서 수정'}"></h5>
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body" id="planEditBody">
|
<div class="modal-body" id="resultEditBody">
|
||||||
<form action="#" method="post" id="planEditForm">
|
<form action="#" method="post" id="resultEditForm">
|
||||||
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
|
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
|
||||||
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
||||||
<input type="hidden" name="planKey" th:value="${plan.planKey}">
|
<input type="hidden" name="resultKey" th:value="${result.resultKey}">
|
||||||
<input type="hidden" name="wrtOrgan" th:value="${plan.wrtOrgan}">
|
<input type="hidden" name="wrtOrgan" th:value="${result.wrtOrgan}">
|
||||||
<input type="hidden" name="wrtPart" th:value="${plan.wrtPart}">
|
<input type="hidden" name="wrtPart" th:value="${result.wrtPart}">
|
||||||
<input type="hidden" name="wrtUserSeq" th:value="${plan.wrtUserSeq}">
|
<input type="hidden" name="wrtUserSeq" th:value="${result.wrtUserSeq}">
|
||||||
<input type="hidden" name="planState" id="planState" th:value="${plan.planState}">
|
<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="affairListTab" data-bs-toggle="tab" data-bs-target="#affairListTabPanel" type="button" role="tab" aria-controls="affairListTabPanel" aria-selected="false">견문목록&증빙자료</button>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div class="tab-content 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="mb-3 row">
|
<div class="mb-3 row">
|
||||||
<label for="wrtUserNm" class="col-sm-2 col-form-label text-center">작성자</label>
|
<label for="wrtUserNm" class="col-sm-1 col-form-label col-form-label-sm text-center">작성자</label>
|
||||||
<div class="col-sm-2">
|
<div class="col-sm-2">
|
||||||
<input type="text" class="form-control" id="wrtUserNm" name="wrtUserNm" th:value="${plan.wrtUserNm}" readonly>
|
<input type="text" class="form-control form-control-sm" id="wrtUserNm" name="wrtUserNm" th:value="${result.wrtUserNm}" readonly>
|
||||||
</div>
|
</div>
|
||||||
<label for="wrtDt" class="col-sm-2 col-form-label text-center">작성일시</label>
|
<label for="wrtDt" class="col-sm-1 col-form-label col-form-label-sm text-center">작성일시</label>
|
||||||
<div class="col-sm-2">
|
<div class="col-sm-2">
|
||||||
<input type="text" class="form-control" id="wrtDt" name="wrtDt" th:value="${#temporals.format(plan.wrtDt, 'yyyy-MM-dd HH:mm')}" readonly>
|
<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>
|
||||||
|
<label for="wrtDt" class="col-sm-1 col-form-label col-form-label-sm text-center">사용기간</label>
|
||||||
|
<div class="col-sm-3">
|
||||||
|
<div class="input-group w-auto input-daterange" id="dateSelectorDiv">
|
||||||
|
<input type="text" class="form-control form-control-sm" id="wrtDt" name="wrtDt" th:value="${#temporals.format(result.wrtDt, 'yyyy-MM-dd')}" readonly>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="wrtDt" name="wrtDt" th:value="${#temporals.format(result.wrtDt, 'yyyy-MM-dd')}" readonly>
|
||||||
</div>
|
</div>
|
||||||
<label for="planDt" class="col-sm-2 col-form-label text-center">시행일자</label>
|
|
||||||
<div class="col-sm-2">
|
|
||||||
<input type="text" class="form-control" id="planDt" name="planDt" th:value="${#temporals.format(plan.planDt, 'yyyy-MM-dd')}" autocomplete="off">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3 row">
|
<div class="mb-3 row">
|
||||||
<label for="contentTitle" class="col-sm-2 col-form-label text-center">제목</label>
|
<label for="contentTitle" class="col-sm-1 col-form-label col-form-label-sm text-center">목적(제목)</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-11">
|
||||||
<input type="text" class="form-control" id="contentTitle" name="contentTitle" th:value="${plan.contentTitle}">
|
<input type="text" class="form-control form-control-sm" id="contentTitle" name="clearTitle" th:value="${result.clearTitle}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3 row">
|
||||||
|
<label for="wrtUserNm" class="col-sm-1 col-form-label col-form-label-sm text-center">사업기간</label>
|
||||||
|
<div class="col-sm-3">
|
||||||
|
<div class="input-group w-auto input-daterange" id="dateSelectorDiv">
|
||||||
|
<input type="text" class="form-control form-control-sm" id="wrtDt" name="wrtDt" th:value="${#temporals.format(result.wrtDt, 'yyyy-MM-dd')}" readonly>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="wrtDt" name="wrtDt" th:value="${#temporals.format(result.wrtDt, 'yyyy-MM-dd')}" readonly>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<label for="wrtDt" class="col-sm-1 col-form-label col-form-label-sm text-center">계획금액</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<input type="text" class="form-control form-control-sm" id="planPrice" name="wrtDt">
|
||||||
|
</div>
|
||||||
|
<label for="wrtDt" class="col-sm-1 col-form-label col-form-label-sm text-center">집행액</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<input type="text" class="form-control form-control-sm" id="usePrice" name="wrtDt">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3 row justify-content-center">
|
<div class="mb-3 row justify-content-center">
|
||||||
<label for="planDiv" class="col-sm-2 col-form-label text-center">주요 사업계획</label>
|
<label for="detailResultDiv" class="col-sm-1 col-form-label col-form-label-sm text-center">세부<br>집행내역</label>
|
||||||
<div class="col-sm-10" id="planDiv">
|
<div class="col-sm-11" id="detailResultDiv">
|
||||||
<th:block th:if="${plan.planKey eq null}">
|
<th:block th:if="${result.resultKey eq null}">
|
||||||
<input type='text' class='form-control' name='planInfos'>
|
<textarea type='text' name='detailResultInfos'></textarea>
|
||||||
</th:block>
|
|
||||||
<th:block th:each="infoList:${plan.mainInfoList}">
|
|
||||||
<th:block th:if="${infoList.planType eq 'S'}">
|
|
||||||
<input type="text" class="form-control" name="planInfos" th:value="${infoList.planInfo}">
|
|
||||||
</th:block>
|
|
||||||
</th:block>
|
</th:block>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-auto">
|
<div class="col-sm-auto">
|
||||||
<button type="button" class="btn btn-sm btn-outline-primary" id="planAddBtn"><i class="bi bi-plus-lg"></i></button>
|
<button type="button" class="btn btn-sm btn-outline-primary" id="detailResultAddBtn"><i class="bi bi-plus-lg"></i></button>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="mb-3 row justify-content-center">
|
|
||||||
<label for="detailPlanDiv" class="col-sm-2 col-form-label text-center">사업개요 및 추진계획</label>
|
|
||||||
<div class="col-sm-10" id="detailPlanDiv">
|
|
||||||
<th:block th:if="${plan.planKey eq null}">
|
|
||||||
<textarea type='text' name='detailPlanInfos'></textarea>
|
|
||||||
</th:block>
|
|
||||||
<th:block th:each="infoList:${plan.mainInfoList}">
|
|
||||||
<th:block th:if="${infoList.planType eq 'D'}">
|
|
||||||
<textarea type='text' name='detailPlanInfos' th:utext="${infoList.planInfo}"></textarea>
|
|
||||||
</th:block>
|
|
||||||
</th:block>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-auto">
|
|
||||||
<button type="button" class="btn btn-sm btn-outline-primary" id="detailPlanAddBtn"><i class="bi bi-plus-lg"></i></button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<label for="fileInputer" class="col-sm-2 col-form-label text-center">업로드 자료</label>
|
<label for="fileInputer" class="col-sm-1 col-form-label col-form-label-sm text-center">업로드<br>자료</label>
|
||||||
<div class="col-sm-10" style="min-height: 70px;">
|
<div class="col-sm-11" style="min-height: 70px;">
|
||||||
<div class="w-100 h-100 border border-info rounded text-center" id="uploadDiv">
|
<div class="w-100 h-100 border border-info rounded text-center" id="uploadDiv">
|
||||||
<th:block th:if="${#arrays.isEmpty(plan.fileList)}">
|
<th:block th:if="${#arrays.isEmpty(result.fileList)}">
|
||||||
<br>파일을 업로드 해주세요.
|
<br>파일을 업로드 해주세요.
|
||||||
</th:block>
|
</th:block>
|
||||||
<th:block th:unless="${#arrays.isEmpty(plan.fileList)}">
|
<th:block th:unless="${#arrays.isEmpty(result.fileList)}">
|
||||||
<div class='row-col-6' th:each="planFile:${plan.fileList}">
|
<div class='row-col-6' th:each="resultFile:${result.fileList}">
|
||||||
<span th:data-fileseq="${planFile.fileSeq}" th:text="|${planFile.origNm}.${planFile.fileExtn} ${planFile.fileSize}|"></span>
|
<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>
|
<a href='#' class='uploadedFileDelete text-danger text-decoration-none'>삭제</a>
|
||||||
</div>
|
</div>
|
||||||
</th:block>
|
</th:block>
|
||||||
|
|
@ -82,10 +94,18 @@
|
||||||
</div>
|
</div>
|
||||||
<input type="file" class="d-none" id="fileInputer" multiple>
|
<input type="file" class="d-none" id="fileInputer" multiple>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tab-pane fade p-2" id="resultReportTabPanel" role="tabpanel" aria-labelledby="resultReportTab" tabindex="0">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="tab-pane fade p-2" id="affairListTabPanel" role="tabpanel" aria-labelledby="affairListTab" tabindex="0">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
|
<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-warning" id="saveTempBtn">임시저장</button>
|
||||||
<button type="button" class="btn btn-primary" id="savePlanBtn">저장</button>
|
<button type="button" class="btn btn-primary" id="saveResultBtn">저장</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -3,12 +3,12 @@
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||||
layout:decorate="~{layout/layout}">
|
layout:decorate="~{layout/layout}">
|
||||||
<th:block layout:fragment="script">
|
<th:block layout:fragment="script">
|
||||||
<script type="text/javascript" th:src="@{/js/igActivities/fpiMgt/plan/planMgt.js}"></script>
|
<script type="text/javascript" th:src="@{/js/igActivities/fpiMgt/result/resultMgt.js}"></script>
|
||||||
</th:block>
|
</th:block>
|
||||||
<div layout:fragment="content">
|
<div layout:fragment="content">
|
||||||
<main class="pt-3">
|
<main class="pt-3">
|
||||||
<p>첩보수집활동 > 외사경찰 견문관리 > 계획수립</p>
|
<p>첩보수집활동 > 외사경찰 견문관리 > 청산보고서</p>
|
||||||
<h4>계획수립</h4>
|
<h4>청산보고서</h4>
|
||||||
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
|
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
|
||||||
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
||||||
<div class="row mx-0">
|
<div class="row mx-0">
|
||||||
|
|
@ -49,26 +49,21 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<input type="text" class="form-control form-control-sm" placeholder="제목" name="contentTitle" th:value="${searchParams.contentTitle}">
|
<input type="text" class="form-control form-control-sm" placeholder="청산보고서 제목" name="clearTitle" th:value="${searchParams.clearTitle}">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto" th:if="${accessAuth eq 'ACC003'}">
|
<div class="col-auto" th:if="${accessAuth eq 'ACC003'}">
|
||||||
<input type="text" class="form-control form-control-sm" placeholder="작성자" name="wrtUserNm" th:value="${searchParams.wrtUserNm}">
|
<input type="text" class="form-control form-control-sm" placeholder="작성자" name="wrtUserNm" th:value="${searchParams.wrtUserNm}">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<select class="form-select form-select-sm" name="planState">
|
<select class="form-select form-select-sm" name="resultState">
|
||||||
<option value="">상태 선택</option>
|
<option value="">상태 선택</option>
|
||||||
<th:block th:each="commonCode:${session.commonCode.get('DST')}">
|
<th:block th:each="commonCode:${session.commonCode.get('DST')}">
|
||||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.planState}"></option>
|
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.resultState}"></option>
|
||||||
</th:block>
|
</th:block>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-4">
|
<div class="col-4">
|
||||||
<div class="input-group w-auto input-daterange" id="dateSelectorDiv">
|
<div class="input-group w-auto input-daterange" id="dateSelectorDiv">
|
||||||
<select class="form-select form-select-sm" name="dateSelector">
|
|
||||||
<option value="">조건선택</option>
|
|
||||||
<option value="planDt" th:selected="${searchParams.dateSelector eq 'planDt'}">시행일</option>
|
|
||||||
<option value="wrtDt" th:selected="${searchParams.dateSelector eq 'wrtDt'}">작성일</option>
|
|
||||||
</select>
|
|
||||||
<input type="text" class="form-control form-control-sm" id="startDate" name="startDate" placeholder="시작일" autocomplete="off" readonly th:value="${searchParams.startDate}">
|
<input type="text" class="form-control form-control-sm" id="startDate" name="startDate" placeholder="시작일" autocomplete="off" readonly th:value="${searchParams.startDate}">
|
||||||
<input type="text" class="form-control form-control-sm" id="endDate" name="endDate" placeholder="종료일" autocomplete="off" readonly th:value="${searchParams.endDate}">
|
<input type="text" class="form-control form-control-sm" id="endDate" name="endDate" placeholder="종료일" autocomplete="off" readonly th:value="${searchParams.endDate}">
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -98,7 +93,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr class="planTr" th:each="plan:${planList}">
|
<!--<tr class="planTr" th:each="plan:${planList}">
|
||||||
<input type="hidden" class="planKey" th:value="${plan.planKey}">
|
<input type="hidden" class="planKey" th:value="${plan.planKey}">
|
||||||
<td><input type="checkbox" class="trChkBox"></td>
|
<td><input type="checkbox" class="trChkBox"></td>
|
||||||
<td th:text="${plan.contentTitle}"></td>
|
<td th:text="${plan.contentTitle}"></td>
|
||||||
|
|
@ -118,7 +113,7 @@
|
||||||
<td th:if="${plan.planState eq 'DST004'}">계장결재</td>
|
<td th:if="${plan.planState eq 'DST004'}">계장결재</td>
|
||||||
<td th:if="${plan.planState eq 'DST005'}">부장반려</td>
|
<td th:if="${plan.planState eq 'DST005'}">부장반려</td>
|
||||||
<td th:if="${plan.planState eq 'DST006'}">부장결재</td>
|
<td th:if="${plan.planState eq 'DST006'}">부장결재</td>
|
||||||
</tr>
|
</tr>-->
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -150,7 +145,7 @@
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<input type="button" class="btn btn-success" value="등록" id="addPlanBtn" th:unless="${accessAuth eq 'ACC001'}">
|
<input type="button" class="btn btn-success" value="등록" id="addResultBtn" th:unless="${accessAuth eq 'ACC001'}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -163,16 +158,16 @@
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div class="modal fade" id="planEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="planEditModalLabel" aria-hidden="true">
|
<div class="modal fade" id="resultEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="resultEditModalLabel" aria-hidden="true">
|
||||||
<div class="modal-dialog modal-xl modal-dialog-scrollable">
|
<div class="modal-dialog modal-xl modal-dialog-scrollable">
|
||||||
<div class="modal-content" id="planEditModalContent">
|
<div class="modal-content" id="resultEditModalContent">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal fade" id="planViewModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="planViewModalLabel" aria-hidden="true">
|
<div class="modal fade" id="resultViewModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="resultViewModalLabel" aria-hidden="true">
|
||||||
<div class="modal-dialog modal-xl modal-dialog-scrollable">
|
<div class="modal-dialog modal-xl modal-dialog-scrollable">
|
||||||
<div class="modal-content" id="planViewBody">
|
<div class="modal-content" id="resultViewBody">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue