청산보고서 등록 작업중.
parent
9a78cf701e
commit
455410eb65
|
|
@ -12,6 +12,7 @@ import com.dbnt.faisp.fpiMgt.affairPlan.repository.PlanApprvRepository;
|
|||
import com.dbnt.faisp.fpiMgt.affairPlan.repository.PlanBoardRepository;
|
||||
import com.dbnt.faisp.fpiMgt.affairPlan.repository.PlanFileRepository;
|
||||
import com.dbnt.faisp.fpiMgt.affairPlan.repository.PlanMainInfoRepository;
|
||||
import com.dbnt.faisp.fpiMgt.affairResult.repository.ClearInfoRepository;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
package com.dbnt.faisp.fpiMgt.affairResult;
|
||||
|
||||
import com.dbnt.faisp.authMgt.service.AuthMgtService;
|
||||
import com.dbnt.faisp.codeMgt.service.CodeMgtService;
|
||||
import com.dbnt.faisp.fpiMgt.affair.model.AffairBoard;
|
||||
import com.dbnt.faisp.fpiMgt.affair.service.AffairService;
|
||||
import com.dbnt.faisp.fpiMgt.affairResult.model.ResultApprv;
|
||||
import com.dbnt.faisp.fpiMgt.affairResult.model.ResultBoard;
|
||||
import com.dbnt.faisp.fpiMgt.affairResult.model.ClearInfo;
|
||||
|
|
@ -21,7 +24,9 @@ import java.util.List;
|
|||
@RequestMapping("/affairResult")
|
||||
public class ResultController { // 첩보수집활동 > 외사경찰 견문관리 > 계획수립
|
||||
private final ResultService resultService;
|
||||
private final AffairService affairService;
|
||||
private final AuthMgtService authMgtService;
|
||||
private final CodeMgtService codeMgtService;
|
||||
|
||||
@GetMapping("/resultMgt")
|
||||
public ModelAndView resultMgtPage(@AuthenticationPrincipal UserInfo loginUser, ResultBoard resultBoard){
|
||||
|
|
@ -166,6 +171,17 @@ public class ResultController { // 첩보수집활동 > 외사경찰 견문관
|
|||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping("/affairListModal")
|
||||
public ModelAndView affairListModal(@AuthenticationPrincipal UserInfo loginUser, AffairBoard affair){
|
||||
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairResult/affairListModal");
|
||||
affair.setWrtUserSeq(loginUser.getUserSeq());
|
||||
affair.setRatingOrgan(loginUser.getOgCd());
|
||||
affair.setFirstIndex(0);
|
||||
affair.setRowCnt(9999);
|
||||
mav.addObject("affairList", affairService.selectAffairBoardList(affair));
|
||||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping("/resultViewModal")
|
||||
public ModelAndView resultViewModal(@AuthenticationPrincipal UserInfo loginUser, ResultBoard resultBoard){
|
||||
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairResult/resultViewModal");
|
||||
|
|
@ -183,8 +199,7 @@ public class ResultController { // 첩보수집활동 > 외사경찰 견문관
|
|||
MultipartHttpServletRequest request,
|
||||
@RequestParam(value = "fileSeq", required = false) List<Integer> deleteFileSeq){
|
||||
resultBoard.setMultipartFileList(request.getMultiFileMap().get("uploadFiles"));
|
||||
return 0;
|
||||
// return resultService.saveResultBoard(resultBoard, deleteFileSeq);
|
||||
return resultService.saveResultBoard(resultBoard, deleteFileSeq);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -200,6 +215,8 @@ public class ResultController { // 첩보수집활동 > 외사경찰 견문관
|
|||
public ModelAndView getClearInfoRow(ClearInfo info){
|
||||
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairResult/clearInfoRow");
|
||||
mav.addObject("info", info);
|
||||
mav.addObject("categoryList", codeMgtService.selectCodeMgtList("RIC"));
|
||||
mav.addObject("codeList", codeMgtService.selectCodeMgtList("RID"));
|
||||
return mav;
|
||||
}
|
||||
@GetMapping("/getResultInfoRow")
|
||||
|
|
|
|||
|
|
@ -81,4 +81,6 @@ public class ResultBoard extends BaseModel {
|
|||
private List<ClearInfo> clearInfoList;
|
||||
@Transient
|
||||
private List<ResultInfo> resultInfoList;
|
||||
@Transient
|
||||
private List<ResultToAffair> affairList;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
package com.dbnt.faisp.fpiMgt.affairResult.repository;
|
||||
|
||||
import com.dbnt.faisp.fpiMgt.affairResult.model.ClearInfo;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
|
||||
public interface ClearInfoRepository extends JpaRepository<ClearInfo, ClearInfo.ClearInfoId> {
|
||||
void deleteByResultKey(Integer resultKey);
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
package com.dbnt.faisp.fpiMgt.affairResult.repository;
|
||||
|
||||
import com.dbnt.faisp.fpiMgt.affairResult.model.ResultInfo;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
|
||||
public interface ResultInfoRepository extends JpaRepository<ResultInfo, ResultInfo.ResultInfoId> {
|
||||
|
||||
void deleteByResultKey(Integer resultKey);
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
package com.dbnt.faisp.fpiMgt.affairResult.repository;
|
||||
|
||||
import com.dbnt.faisp.fpiMgt.affairResult.model.ResultToAffair;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
|
||||
public interface ResultToAffairRepository extends JpaRepository<ResultToAffair, ResultToAffair.ResultToAffairId> {
|
||||
|
||||
void deleteByResultKey(Integer resultKey);
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
package com.dbnt.faisp.fpiMgt.affairResult.repository;
|
||||
|
||||
import com.dbnt.faisp.fpiMgt.affairResult.model.ResultToPlan;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
|
||||
public interface ResultToPlanRepository extends JpaRepository<ResultToPlan, ResultToPlan.ResultToPlanId> {
|
||||
|
||||
}
|
||||
|
|
@ -4,12 +4,8 @@ package com.dbnt.faisp.fpiMgt.affairResult.service;
|
|||
import com.dbnt.faisp.config.BaseService;
|
||||
import com.dbnt.faisp.config.FileInfo;
|
||||
import com.dbnt.faisp.fpiMgt.affairResult.mapper.ResultMapper;
|
||||
import com.dbnt.faisp.fpiMgt.affairResult.model.ResultApprv;
|
||||
import com.dbnt.faisp.fpiMgt.affairResult.model.ResultBoard;
|
||||
import com.dbnt.faisp.fpiMgt.affairResult.model.ResultFile;
|
||||
import com.dbnt.faisp.fpiMgt.affairResult.repository.ResultApprvRepository;
|
||||
import com.dbnt.faisp.fpiMgt.affairResult.repository.ResultBoardRepository;
|
||||
import com.dbnt.faisp.fpiMgt.affairResult.repository.ResultFileRepository;
|
||||
import com.dbnt.faisp.fpiMgt.affairResult.model.*;
|
||||
import com.dbnt.faisp.fpiMgt.affairResult.repository.*;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
|
@ -22,9 +18,13 @@ import java.util.UUID;
|
|||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class ResultService extends BaseService { // 월간계획
|
||||
private final ClearInfoRepository clearInfoRepository;
|
||||
private final ResultApprvRepository resultApprvRepository;
|
||||
private final ResultBoardRepository resultBoardRepository;
|
||||
private final ResultFileRepository resultFileRepository;
|
||||
private final ResultApprvRepository resultApprvRepository;
|
||||
private final ResultInfoRepository resultInfoRepository;
|
||||
private final ResultToAffairRepository resultToAffairRepository;
|
||||
private final ResultToPlanRepository resultToPlanRepository;
|
||||
private final ResultMapper resultMapper;
|
||||
|
||||
public List<ResultBoard> selectResultBoardList(ResultBoard resultBoard) {
|
||||
|
|
@ -53,9 +53,32 @@ public class ResultService extends BaseService { // 월간계획
|
|||
if(resultBoard.getMultipartFileList()!=null){
|
||||
saveUploadFiles(resultKey, resultBoard.getMultipartFileList());
|
||||
}
|
||||
if (resultBoard.getClearInfoList() != null){
|
||||
saveClearInfoList(resultKey, resultBoard.getClearInfoList());
|
||||
}
|
||||
if (resultBoard.getResultInfoList() != null){
|
||||
saveResultInfoList(resultKey, resultBoard.getResultInfoList());
|
||||
}
|
||||
if (resultBoard.getAffairList() != null){
|
||||
saveResultToAffair(resultKey, resultBoard.getAffairList());
|
||||
}
|
||||
return resultKey;
|
||||
}
|
||||
|
||||
public FileInfo selectResultFile(Integer resultKey, Integer fileSeq) {
|
||||
return resultFileRepository.findById(new ResultFile.ResultFileId(resultKey, fileSeq)).orElse(null);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Integer resultStateChange(ResultApprv apprv) {
|
||||
ResultBoard savedResult = resultBoardRepository.findById(apprv.getResultKey()).orElse(null);
|
||||
savedResult.setResultState(apprv.getState());
|
||||
ResultApprv lastApprv = resultApprvRepository.findTopByResultKeyOrderByApprvSeqDesc(apprv.getResultKey()).orElse(null);
|
||||
apprv.setApprvSeq(lastApprv==null?1:lastApprv.getApprvSeq()+1);
|
||||
resultApprvRepository.save(apprv);
|
||||
return apprv.getApprvSeq();
|
||||
}
|
||||
|
||||
private void saveUploadFiles(Integer resultKey, List<MultipartFile> multipartFileList){
|
||||
ResultFile lastFileInfo = resultFileRepository.findTopByResultKeyOrderByFileSeqDesc(resultKey).orElse(null);
|
||||
int fileSeq = lastFileInfo==null?1:(lastFileInfo.getFileSeq()+1);
|
||||
|
|
@ -88,17 +111,28 @@ public class ResultService extends BaseService { // 월간계획
|
|||
}
|
||||
}
|
||||
|
||||
public FileInfo selectResultFile(Integer resultKey, Integer fileSeq) {
|
||||
return resultFileRepository.findById(new ResultFile.ResultFileId(resultKey, fileSeq)).orElse(null);
|
||||
|
||||
private void saveClearInfoList(Integer resultKey, List<ClearInfo> clearInfoList) {
|
||||
clearInfoRepository.deleteByResultKey(resultKey);
|
||||
for(ClearInfo info: clearInfoList){
|
||||
info.setResultKey(resultKey);
|
||||
}
|
||||
clearInfoRepository.saveAll(clearInfoList);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Integer resultStateChange(ResultApprv apprv) {
|
||||
ResultBoard savedResult = resultBoardRepository.findById(apprv.getResultKey()).orElse(null);
|
||||
savedResult.setResultState(apprv.getState());
|
||||
ResultApprv lastApprv = resultApprvRepository.findTopByResultKeyOrderByApprvSeqDesc(apprv.getResultKey()).orElse(null);
|
||||
apprv.setApprvSeq(lastApprv==null?1:lastApprv.getApprvSeq()+1);
|
||||
resultApprvRepository.save(apprv);
|
||||
return apprv.getApprvSeq();
|
||||
private void saveResultInfoList(Integer resultKey, List<ResultInfo> resultInfoList){
|
||||
resultInfoRepository.deleteByResultKey(resultKey);
|
||||
for(ResultInfo info: resultInfoList){
|
||||
info.setResultKey(resultKey);
|
||||
}
|
||||
resultInfoRepository.saveAll(resultInfoList);
|
||||
}
|
||||
|
||||
private void saveResultToAffair(Integer resultKey, List<ResultToAffair> resultToAffairList){
|
||||
resultToAffairRepository.deleteByResultKey(resultKey);
|
||||
for(ResultToAffair relation: resultToAffairList){
|
||||
relation.setResultKey(resultKey);
|
||||
}
|
||||
resultToAffairRepository.saveAll(resultToAffairList);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,15 +6,6 @@ function contentFade(action){
|
|||
}
|
||||
}
|
||||
|
||||
function sessionReload(){
|
||||
$.ajax({
|
||||
url: '/refreshSession',
|
||||
type: 'GET',
|
||||
success: function(){location.reload();},
|
||||
error:function(){}
|
||||
});
|
||||
}
|
||||
|
||||
$(document).on('click', '.allChk', function (){
|
||||
$(this).parents('table').find('[type="checkbox"]').prop("checked", this.checked);
|
||||
})
|
||||
|
|
@ -91,6 +82,20 @@ $(document).on('click', '.fileDownLink', function (){
|
|||
window.open(encodeURI(url));
|
||||
})
|
||||
|
||||
//Bootstrap multiple modal
|
||||
let count = 0; // 모달이 열릴 때 마다 count 해서 z-index값을 높여줌
|
||||
$(document).on('show.bs.modal', '.modal', function () {
|
||||
let zIndex = 1040 + (10 * count);
|
||||
$(this).css('z-index', zIndex);
|
||||
setTimeout(function() {
|
||||
$('.modal-backdrop').not('.modal-stack').css('z-index', zIndex - 1).addClass('modal-stack');
|
||||
}, 0);
|
||||
count = count + 1
|
||||
});
|
||||
// multiple modal Scrollbar fix
|
||||
$(document).on('hidden.bs.modal', '.modal', function(){
|
||||
$('.modal:visible').length && $(document.body).addClass('modal-open');
|
||||
});
|
||||
|
||||
function setUploadDiv(){
|
||||
files = [];
|
||||
|
|
|
|||
|
|
@ -29,6 +29,61 @@ $(document).on('click', '#resultAddBtn', function (){
|
|||
$("#resultDiv").append("<input type='text' class='form-control' name='resultInfos'>")
|
||||
})
|
||||
|
||||
$(document).on('change', '#clearTitle', function (){
|
||||
$("#resultTitle").val(this.value)
|
||||
})
|
||||
$(document).on('change', '#workStartDt', function (){
|
||||
$(".workStartDtCopy").val(this.value)
|
||||
})
|
||||
$(document).on('change', '#workEndDt', function (){
|
||||
$(".workEndDtCopy").val(this.value)
|
||||
})
|
||||
$(document).on('change', '#usePrice', function (){
|
||||
$("#usePriceCopy").val(this.value)
|
||||
})
|
||||
|
||||
$(document).on('click', '#affairModalBtn', function (){
|
||||
const workStartDt = $("#workStartDt").val()
|
||||
const workEndDt = $("#workEndDt").val()
|
||||
if(!workStartDt||!workEndDt){
|
||||
alert("청산보고서의 사업기간을 입력해주세요.");
|
||||
}else{
|
||||
$.ajax({
|
||||
url: '/affairResult/affairListModal',
|
||||
data: {
|
||||
startDate: workStartDt,
|
||||
endDate: workEndDt
|
||||
},
|
||||
type: 'GET',
|
||||
dataType:"html",
|
||||
success: function(html){
|
||||
$("#affairListModalContent").empty().append(html)
|
||||
$("#affairListModal").modal('show');
|
||||
},
|
||||
error:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
$(document).on('click', '.affairTr', function (){
|
||||
const chkBox = $(this).find(".rowChkBox");
|
||||
chkBox[0].checked = !chkBox[0].checked;
|
||||
})
|
||||
$(document).on('click', '#getAffairBtn', function (){
|
||||
let affairListTbody = "";
|
||||
$.each($(".rowChkBox:checked"), function (idx, chkBox){
|
||||
const affairTr = $(chkBox).parents(".affairTr")
|
||||
affairListTbody += "<tr>";
|
||||
affairListTbody += "<input type='hidden' name='affairList["+idx+"].affairKey' value='"+chkBox.value+"'>";
|
||||
affairListTbody += "<td>"+affairTr.find(".wrtDt")[0].innerText+"</td>";
|
||||
affairListTbody += "<td>"+affairTr.find(".title")[0].innerText+"</td>";
|
||||
affairListTbody += "<td>"+(affairTr.find(".affairRate")[0].innerText+(affairTr.find(".organUp")[0].innerText==="O"?"(상보)":""))+"</td>";
|
||||
affairListTbody += "</tr>";
|
||||
})
|
||||
$("#affairListTbody").empty().append(affairListTbody);
|
||||
})
|
||||
|
||||
$(document).on('click', '.rowDeleteBtn', function (){
|
||||
const isClearInfo = $(this).parents("#clearInfoRow").length !== 0;
|
||||
const infoSeq = $(this).parents(".infoRow").find(".infoSeq").val();
|
||||
|
|
@ -151,7 +206,11 @@ function getResultEditModal(resultKey){
|
|||
success: function(html){
|
||||
$("#resultEditModalContent").empty().append(html)
|
||||
$("#resultEditModal").modal('show');
|
||||
$("#resultDt").datepicker({
|
||||
$("#useDateSelectorDiv").datepicker({
|
||||
format: "yyyy-mm-dd",
|
||||
language: "ko"
|
||||
});
|
||||
$("#workDateSelectorDiv").datepicker({
|
||||
format: "yyyy-mm-dd",
|
||||
language: "ko"
|
||||
});
|
||||
|
|
@ -202,20 +261,56 @@ function setInfoSeq(target, infoSeq){
|
|||
if(childInfoSeq-->Number(infoSeq)){
|
||||
const infoRow = $(child).parent(".infoRow")
|
||||
child.innerText = childInfoSeq;
|
||||
infoRow[0].id = "row"+childInfoSeq;
|
||||
debugger
|
||||
infoRow[0].id = "row"+idx;
|
||||
$.each(infoRow.find("input"), function (idx2, input){
|
||||
input.name = input.name.replace("["+childInfoSeq+"]", "["+idx+"]");
|
||||
if(input.name.indexOf("infoSeq")>0){
|
||||
input.value -= input.value;
|
||||
}
|
||||
})
|
||||
$.each(infoRow.find("select"), function (idx2, select){
|
||||
select.name = select.name.replace("["+childInfoSeq+"]", "["+idx+"]");
|
||||
})
|
||||
$.each(infoRow.find("textarea"), function (idx2, textarea){
|
||||
if(textarea.id !== ''){
|
||||
textarea.id = "contactInfo"+idx;
|
||||
}
|
||||
if(textarea.name !== ''){
|
||||
textarea.name = textarea.name.replace("["+childInfoSeq+"]", "["+idx+"]");
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function contentCheck(){
|
||||
let flag = true;
|
||||
if(!$("#contentTitle").val()){
|
||||
alert("제목을 입력해주세요.")
|
||||
if(!$("#clearTitle").val()){
|
||||
alert("청산보고서 제목을 입력해주세요.")
|
||||
flag = false;
|
||||
}
|
||||
if(!$("#resultDt").val()){
|
||||
alert("시행일자를 입력해주세요.")
|
||||
if(!$("#workStartDt").val()){
|
||||
alert("사업기간 시작일을 입력해주세요.")
|
||||
flag = false;
|
||||
}
|
||||
if(!$("#workEndDt").val()){
|
||||
alert("사업기간 종료일을 입력해주세요.")
|
||||
flag = false;
|
||||
}
|
||||
if(!$("#planPrice").val()){
|
||||
alert("계획금액을 입력해주세요.")
|
||||
flag = false;
|
||||
}
|
||||
if(!$("#usePrice").val()){
|
||||
alert("집행액을 입력해주세요.")
|
||||
flag = false;
|
||||
}
|
||||
if($(".clearInfoSeq").length<=0){
|
||||
alert("세부 집행내역을 입력해주세요.")
|
||||
flag = false;
|
||||
}
|
||||
if($(".resultInfoSeq").length<=0){
|
||||
alert("활동내용을 입력해주세요.")
|
||||
flag = false;
|
||||
}
|
||||
flag = fileCheck(flag, files);
|
||||
|
|
|
|||
|
|
@ -1,13 +1,10 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="ko"
|
||||
xmlns:th="http://www.thymeleaf.org"
|
||||
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5" xmlns="http://www.w3.org/1999/html">
|
||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||
<div class="mx-3 pt-3" th:fragment="leftMenuFragment">
|
||||
<a href="/" class="d-flex">
|
||||
<img id="logo" th:src="@{/img/logo.png}" alt="logo" title="logo">
|
||||
<!--<span class="fs-4">해양경찰청 파일관리 시스템</span>-->
|
||||
</a>
|
||||
<ul class="nav nav-pills flex-column my-3" sec:authorize="isAuthenticated()">
|
||||
<ul class="nav nav-pills flex-column my-3">
|
||||
<li th:each="firstMenu:${session.menuList}">
|
||||
<th:block th:each="cat1Code:${session.commonCode.get('CAT1')}">
|
||||
<th:block th:if="${cat1Code.itemCd eq firstMenu.cat1Cd}">
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
<div class="card-body">
|
||||
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" th:classappend="${page eq 'main'?' active':''}" id="affairTab" data-bs-toggle="tab" type="button" role="tab">견문 목록</button>
|
||||
<button class="nav-link" th:classappend="${page eq 'main'?' active':''}" id="affairTab" data-bs-toggle="tab" type="button" role="tab">전체 목록</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" th:classappend="${page eq 'stay'?' active':''}" id="stayTab" data-bs-toggle="tab" type="button" role="tab">결재대기목록</button>
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
<div class="card-body">
|
||||
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" th:classappend="${page eq 'main'?' active':''}" id="planTab" data-bs-toggle="tab" type="button" role="tab">계획 목록</button>
|
||||
<button class="nav-link" th:classappend="${page eq 'main'?' active':''}" id="planTab" data-bs-toggle="tab" type="button" role="tab">전체 목록</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" th:classappend="${page eq 'stay'?' active':''}" id="stayTab" data-bs-toggle="tab" type="button" role="tab">결재대기목록</button>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,62 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="affairListModalLabel">견문목록</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body" id="affairListBody">
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><input type="checkbox" class="allChk"></th>
|
||||
<th>분야1</th>
|
||||
<th>분야2</th>
|
||||
<th>분야3</th>
|
||||
<th>분야4</th>
|
||||
<th>제목</th>
|
||||
<th>작성일</th>
|
||||
<th>첨부파일</th>
|
||||
<th>상태</th>
|
||||
<th>평가</th>
|
||||
<th>상보</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="affairTr" th:each="affair:${affairList}">
|
||||
<td><input type="checkbox" class="rowChkBox" th:value="${affair.affairKey}"></td>
|
||||
<th:block th:each="commonCode:${session.commonCode.get('DC01')}">
|
||||
<td th:if="${affair.affairType1 eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
|
||||
</th:block>
|
||||
<th:block th:each="commonCode:${session.commonCode.get('DC02')}">
|
||||
<td th:if="${affair.affairType2 eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
|
||||
</th:block>
|
||||
<th:block th:each="commonCode:${session.commonCode.get('DC03')}">
|
||||
<td th:if="${affair.affairType3 eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
|
||||
</th:block>
|
||||
<th:block th:each="commonCode:${session.commonCode.get('DC04')}">
|
||||
<td th:if="${affair.affairType4 eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
|
||||
</th:block>
|
||||
<td class="title" th:text="${affair.title}"></td>
|
||||
<td class="wrtDt" th:text="${#temporals.format(affair.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
|
||||
<td th:text="${affair.fileCnt eq null?'파일 없음':#strings.concat(affair.fileCnt,' 건')}"></td>
|
||||
<th:block th:each="commonCode:${session.commonCode.get('DST')}">
|
||||
<td th:if="${affair.affairStatus eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
|
||||
</th:block>
|
||||
<th:block th:if="${affair.affairStatus eq 'DST006'}">
|
||||
<th:block th:each="ratingCode:${session.commonCode.get('AAR')}">
|
||||
<td class="affairRate" th:if="${ratingCode.itemCd eq affair.affairRate}" th:text="${ratingCode.itemValue}"></td>
|
||||
</th:block>
|
||||
<td class="organUp" th:text="${affair.organUp eq 'T'?'O':'X'}"></td>
|
||||
</th:block>
|
||||
<th:block th:unless="${affair.affairStatus eq 'DST006'}">
|
||||
<td></td>
|
||||
<td></td>
|
||||
</th:block>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
|
||||
<button type="button" class="btn btn-primary" id="getAffairBtn">불러오기</button>
|
||||
</div>
|
||||
|
|
@ -6,16 +6,16 @@
|
|||
<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="commonCode:${session.commonCode.get('RIC')}">
|
||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
|
||||
<th:block th:each="category:${categoryList}">
|
||||
<option th:value="${category.itemCd}" th:text="${category.itemValue}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<select class="form-select form-select-sm" th:name="${#strings.concat('clearInfoList[', info.infoSeq,'].userDetail')}">
|
||||
<option value="">선택</option>
|
||||
<th:block th:each="commonCode:${session.commonCode.get('RID')}">
|
||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
|
||||
<th:block th:each="code:${codeList}">
|
||||
<option th:value="${code.itemCd}" th:text="${code.itemValue}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -37,9 +37,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="contentTitle" class="col-sm-2 col-form-label col-form-label-sm text-center">목적(제목)</label>
|
||||
<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="contentTitle" name="clearTitle" th:value="${result.clearTitle}">
|
||||
<input type="text" class="form-control form-control-sm" id="clearTitle" name="clearTitle" th:value="${result.clearTitle}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
|
|
@ -100,7 +100,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<!--<div class="mb-3 row">
|
||||
<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">
|
||||
|
|
@ -116,7 +116,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<input type="file" class="d-none" id="fileInputer" multiple>
|
||||
</div>
|
||||
</div>-->
|
||||
<div class="mb-3 row">
|
||||
<label for="clearEtc" class="col-sm-2 col-form-label col-form-label-sm text-center">비고</label>
|
||||
<div class="col-sm-10">
|
||||
|
|
@ -143,19 +143,20 @@
|
|||
<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">
|
||||
<input type="text" class="form-control form-control-sm" id="usePriceCopy" readonly>
|
||||
</div>
|
||||
<label for="usePriceCopy" class="col-sm-auto col-form-label col-form-label-sm">원</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row justify-content-center">
|
||||
<label for="resultInfoRow" class="col-sm-2 col-form-label col-form-label-sm text-center">세부<br>집행내역</label>
|
||||
<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-4">접촉 대상자</div>
|
||||
<div class="col-3">접촉 대상자</div>
|
||||
<div class="col-7">접촉 내용</div>
|
||||
<div class="col-1"></div>
|
||||
</div>
|
||||
<hr class="my-1">
|
||||
<div class="row">
|
||||
|
|
@ -204,7 +205,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="button" class="btn btn-sm btn-outline-primary" id="getAffairBtn" value="불러오기">
|
||||
<input type="button" class="btn btn-sm btn-outline-primary" id="affairModalBtn" value="불러오기">
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row justify-content-center">
|
||||
|
|
@ -217,7 +218,7 @@
|
|||
<th>활용</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tbody id="affairListTbody">
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -2,14 +2,14 @@
|
|||
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||
<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">
|
||||
<button type="button" class="btn btn-sm btn-outline-danger rowDeleteBtn"><i class="bi bi-x"></i></button>
|
||||
<span class="infoSeq" th:text="${info.infoSeq+1}"></span>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<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')}">
|
||||
</div>
|
||||
<div class="col-7">
|
||||
<textarea th:id="|contactInfo${info.infoSeq}|" th:name="${#strings.concat('resultInfoList[', info.infoSeq,'].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>
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
<div class="card-body">
|
||||
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" th:classappend="${page eq 'main'?' active':''}" id="planTab" data-bs-toggle="tab" type="button" role="tab">계획 목록</button>
|
||||
<button class="nav-link" th:classappend="${page eq 'main'?' active':''}" id="planTab" data-bs-toggle="tab" type="button" role="tab">전체 목록</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" th:classappend="${page eq 'stay'?' active':''}" id="stayTab" data-bs-toggle="tab" type="button" role="tab">결재대기목록</button>
|
||||
|
|
@ -165,6 +165,13 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal fade" id="affairListModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="affairListModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-xl modal-dialog-scrollable">
|
||||
<div class="modal-content" id="affairListModalContent">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<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-content" id="resultViewBody">
|
||||
|
|
|
|||
Loading…
Reference in New Issue