fix : 방첩활동 중간저장

master
TaehunPark 2023-01-05 18:00:37 +09:00
parent ad417c81d4
commit 54c423bfa5
17 changed files with 892 additions and 27 deletions

View File

@ -158,6 +158,9 @@ public class CounterIntelligenceController {
case "FI": // 외국인커뮤니티모니터링
ciService.saveForeigner(cia);
break;
case "EI": // 방첩교육실시
ciService.saveEdu(cia);
break;
}
return ciKey;
@ -223,7 +226,7 @@ public class CounterIntelligenceController {
public ModelAndView ciaForeignerEditModal(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
ModelAndView mav = new ModelAndView("counterIntelligence/ciaForeignerEditModal");
if(cia.getCiKey() != null) {
cia = ciService.selectManageCompanyInfo(cia);
cia = ciService.selectForeignerInfo(cia);
}
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
@ -231,4 +234,47 @@ public class CounterIntelligenceController {
return mav;
}
@GetMapping("/ciaForeignerViewModal")
public ModelAndView ciaForeignerViewModal(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
ModelAndView mav = new ModelAndView("counterIntelligence/ciaForeignerViewModal");
mav.addObject("lineSeparator", '\n');
mav.addObject("viewUserSeq", loginUser.getUserSeq());
mav.addObject("cia", ciService.selectForeignerInfo(cia));
return mav;
}
@GetMapping("/ciaEduList")
public ModelAndView ciaEduList(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
ModelAndView mav = new ModelAndView("counterIntelligence/ciaEduList");
cia.setDownOrganCdList(loginUser.getDownOrganCdList());
cia.setQueryInfo();
mav.addObject("eiList", ciService.selectCiaEduList(cia));
cia.setContentCnt(ciService.selectCiaEduListCnt(cia));
cia.setPaginationInfo();
mav.addObject("searchParams", cia);
return mav;
}
@GetMapping("/ciaEduEditModal")
public ModelAndView ciaEduEditModal(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
ModelAndView mav = new ModelAndView("counterIntelligence/ciaEduEditModal");
if(cia.getCiKey() != null) {
cia = ciService.selectEduInfo(cia);
}
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
mav.addObject("cia", cia);
return mav;
}
@GetMapping("/ciaEduViewModal")
public ModelAndView ciaEduViewModal(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
ModelAndView mav = new ModelAndView("counterIntelligence/ciaEduViewModal");
mav.addObject("lineSeparator", '\n');
mav.addObject("viewUserSeq", loginUser.getUserSeq());
mav.addObject("cia", ciService.selectEduInfo(cia));
return mav;
}
}

View File

@ -34,4 +34,8 @@ public interface CounterIntelligenceMapper {
List<ForeignerInfo> selectCiaForeignerList(CounterIntelligenceActivity cia);
Integer selectCiaForeignerListCnt(CounterIntelligenceActivity cia);
List<CounterIntelligenceActivity> selectCiaEduList(CounterIntelligenceActivity cia);
Integer selectCiaEduListCnt(CounterIntelligenceActivity cia);
}

View File

@ -57,6 +57,8 @@ public class CounterIntelligenceActivity extends BaseModel {
@Transient
private ForeignerInfo foreignerInfo;
@Transient
private EduInfo eduInfo;
@Transient
private String mgtOrgan;
@Transient
private String companyNm;
@ -86,6 +88,13 @@ public class CounterIntelligenceActivity extends BaseModel {
private String monitoringInfo;
@Transient
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate eduDate;
@Transient
private String eduType;
@Transient
private Integer peopleCnt;
@Transient
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate fixDate;
@Transient
private List<CiaFile> fileList;

View File

@ -0,0 +1,39 @@
package com.dbnt.faisp.main.counterIntelligence.model;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
import javax.persistence.*;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "edu_info")
public class EduInfo {
@Id
@Column(name = "ci_key")
private Integer ciKey;
@Column(name = "mgt_organ")
private String mgtOrgan;
@Column(name = "edu_date")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate eduDate;
@Column(name = "edu_type")
private String eduType;
@Column(name = "people_cnt")
private Integer peopleCnt;
@Column(name = "description")
private String description;
}

View File

@ -0,0 +1,13 @@
package com.dbnt.faisp.main.counterIntelligence.repository;
import com.dbnt.faisp.main.counterIntelligence.model.EduInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
public interface EduInfoRepository extends JpaRepository<EduInfo, Integer> {
}

View File

@ -8,6 +8,7 @@ import com.dbnt.faisp.main.counterIntelligence.model.CiaFile;
import com.dbnt.faisp.main.counterIntelligence.model.CiwFile;
import com.dbnt.faisp.main.counterIntelligence.model.CounterIntelligenceActivity;
import com.dbnt.faisp.main.counterIntelligence.model.CounterIntelligenceWork;
import com.dbnt.faisp.main.counterIntelligence.model.EduInfo;
import com.dbnt.faisp.main.counterIntelligence.model.ForeignerInfo;
import com.dbnt.faisp.main.counterIntelligence.model.HashTagLinkCiw;
import com.dbnt.faisp.main.counterIntelligence.model.ManageCompanyInfo;
@ -16,6 +17,7 @@ import com.dbnt.faisp.main.counterIntelligence.repository.CiaFileRepository;
import com.dbnt.faisp.main.counterIntelligence.repository.CiwFileRepository;
import com.dbnt.faisp.main.counterIntelligence.repository.CounterIntelligenceActivityRepository;
import com.dbnt.faisp.main.counterIntelligence.repository.CounterIntelligenceWorkRepository;
import com.dbnt.faisp.main.counterIntelligence.repository.EduInfoRepository;
import com.dbnt.faisp.main.counterIntelligence.repository.ForeignerInfoRepository;
import com.dbnt.faisp.main.counterIntelligence.repository.HashTagLinkCiwRepository;
import com.dbnt.faisp.main.counterIntelligence.repository.ManageCompanyInfoRepository;
@ -42,6 +44,7 @@ public class CounterIntelligenceService extends BaseService {
private final SaftyDemandInfoRepository saftyDemandInfoRepository;
private final ManageCompanyInfoRepository manageCompanyInfoRepository;
private final ForeignerInfoRepository foreignerInfoRepository;
private final EduInfoRepository eduInfoRepository;
private final CounterIntelligenceMapper ciMapper;
public List<CounterIntelligenceWork> selectCounterIntelligenceWorkList(CounterIntelligenceWork ciWork){
@ -270,4 +273,42 @@ public class CounterIntelligenceService extends BaseService {
return ciMapper.selectCiaForeignerListCnt(cia);
}
public CounterIntelligenceActivity selectForeignerInfo(CounterIntelligenceActivity cia) {
CounterIntelligenceActivity dbCia = counterIntelligenceActivityRepository.findById(cia.getCiKey()).orElse(null);
if(dbCia!=null){
dbCia.setFileList(ciaFileRepository.findByCiKey(cia.getCiKey()));
dbCia.setForeignerInfo(foreignerInfoRepository.findById(cia.getCiKey()).orElse(null));
}
return dbCia;
}
@Transactional
public void saveEdu(CounterIntelligenceActivity cia) {
EduInfo ei = new EduInfo();
ei.setCiKey(cia.getCiKey());
ei.setMgtOrgan(cia.getMgtOrgan());
ei.setEduType(cia.getEduType());
ei.setEduDate(cia.getEduDate());
ei.setPeopleCnt(cia.getPeopleCnt());
ei.setDescription(cia.getDescription());
eduInfoRepository.save(ei);
}
public List<CounterIntelligenceActivity> selectCiaEduList(CounterIntelligenceActivity cia) {
return ciMapper.selectCiaEduList(cia);
}
public Integer selectCiaEduListCnt(CounterIntelligenceActivity cia) {
return ciMapper.selectCiaEduListCnt(cia);
}
public CounterIntelligenceActivity selectEduInfo(CounterIntelligenceActivity cia) {
CounterIntelligenceActivity dbCia = counterIntelligenceActivityRepository.findById(cia.getCiKey()).orElse(null);
if(dbCia!=null){
dbCia.setFileList(ciaFileRepository.findByCiKey(cia.getCiKey()));
dbCia.setEduInfo(eduInfoRepository.findById(cia.getCiKey()).orElse(null));
}
return dbCia;
}
}

View File

@ -245,6 +245,8 @@
fi.select_reason,
fi.monitoring_info,
fi.fix_date,
(select item_value from code_mgt where item_cd = cia.wrt_user_grd) as wrt_user_grd,
cia.wrt_user_nm,
cia.wrt_dt
from counter_intelligence_activity cia,
foreigner_info fi
@ -269,6 +271,8 @@
fi.select_reason,
fi.monitoring_info,
fi.fix_date,
(select item_value from code_mgt where item_cd = cia.wrt_user_grd) as wrt_user_grd,
cia.wrt_user_nm,
cia.wrt_dt
from counter_intelligence_activity cia,
foreigner_info fi
@ -280,5 +284,49 @@
ORDER BY cia.ci_key DESC
)a
</select>
<select id="selectCiaEduList" parameterType="CounterIntelligenceActivity" resultType="CounterIntelligenceActivity">
select cia.ci_key,
(select item_value from code_mgt where item_cd = ei.mgt_organ) as mgt_organ,
ei.edu_date,
ei.edu_type,
ei.people_cnt,
ei.description,
(select item_value from code_mgt where item_cd = cia.wrt_user_grd) as wrt_user_grd,
cia.wrt_user_nm,
cia.wrt_dt
from counter_intelligence_activity cia,
edu_info ei
where cia.ci_key = ei.ci_key
and ei.mgt_organ in
<foreach collection="downOrganCdList" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
ORDER BY cia.ci_key DESC
LIMIT #{rowCnt} OFFSET #{firstIndex}
</select>
<select id="selectCiaEduListCnt" parameterType="CounterIntelligenceActivity" resultType="Integer">
select count(*)
from(
select cia.ci_key,
(select item_value from code_mgt where item_cd = ei.mgt_organ) as mgt_organ,
ei.edu_date,
ei.edu_type,
ei.people_cnt,
ei.description,
(select item_value from code_mgt where item_cd = cia.wrt_user_grd) as wrt_user_grd,
cia.wrt_user_nm,
cia.wrt_dt
from counter_intelligence_activity cia,
edu_info ei
where cia.ci_key = ei.ci_key
and ei.mgt_organ in
<foreach collection="downOrganCdList" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
ORDER BY cia.ci_key DESC
)a
</select>
</mapper>

View File

@ -0,0 +1,85 @@
$(document).on('click', '#addBtn', function (){
getCiaEduEditModal(null);
})
function getCiaEduEditModal(ciKey){
$.ajax({
url: '/counterIntelligence/ciaEduEditModal',
data: {ciKey: ciKey},
type: 'GET',
dataType:"html",
success: function(html){
$("#ciaEduEditModalContent").empty().append(html);
$("#eduDate").datepicker({
format: "yyyy-mm-dd",
language: "ko",
autoclose: true
});
setUploadDiv();
$("#ciaEduEditModal").modal('show');
},
error:function(){
}
});
}
$(document).on('click', '#saveBtn', function (){
if(confirm("저장하시겠습니까?")){
const formData = new FormData($("#ciaEduEditForm")[0]);
for(const file of files) {
if(!file.isDelete)
formData.append('uploadFiles', file, file.name);
}
$(".text-decoration-line-through").each(function (idx, el){
formData.append('fileSeq', $(el).attr("data-fileseq"));
})
$.ajax({
type : 'POST',
data : formData,
url : "/counterIntelligence/saveCiActivity",
processData: false,
contentType: false,
success : function(result) {
alert("저장되었습니다.");
contentFade("out");
location.reload();
},
error : function(xhr, status) {
alert("저장에 실패하였습니다.")
contentFade("out");
}
})
}
})
$(document).on('click', '.eiTr', function (){
getCiaEduViewModal($(this).find(".ciKey").val());
})
function getCiaEduViewModal(ciKey){
$.ajax({
url: '/counterIntelligence/ciaEduViewModal',
data: {ciKey: ciKey},
type: 'GET',
dataType:"html",
success: function(html){
$("#ciaEduViewModalBody").empty().append(html)
$("#ciaEduViewModal").modal('show');
},
error:function(){
}
});
}
$(document).on('click', '#editBtn', function (){
$("#ciaEduViewModal").modal('hide');
getCiaEduEditModal($(this).attr("data-cikey"));
})
$(document).on('click', '#excelDown', function (){
exportExcel("방첩교육 실시 현황","ciaEduTb");
})

View File

@ -56,19 +56,19 @@ $(document).on('click', '#saveBtn', function (){
}
})
$(document).on('click', '.mciTr', function (){
getCiaManageCompanyViewModal($(this).find(".ciKey").val());
$(document).on('click', '.fiTr', function (){
getCiaForeignerViewModal($(this).find(".ciKey").val());
})
function getCiaManageCompanyViewModal(ciKey){
function getCiaForeignerViewModal(ciKey){
$.ajax({
url: '/counterIntelligence/ciaManageCompanyViewModal',
url: '/counterIntelligence/ciaForeignerViewModal',
data: {ciKey: ciKey},
type: 'GET',
dataType:"html",
success: function(html){
$("#ciaManageCompanyViewModalBody").empty().append(html)
$("#ciaManageCompanyViewModal").modal('show');
$("#ciaForeignerViewModalBody").empty().append(html)
$("#ciaForeignerViewModal").modal('show');
},
error:function(){
@ -77,6 +77,14 @@ function getCiaManageCompanyViewModal(ciKey){
}
$(document).on('click', '#editBtn', function (){
$("#ciaManageCompanyViewModal").modal('hide');
getCiaManageCompanyEditModal($(this).attr("data-cikey"));
$("#ciaForeignerViewModal").modal('hide');
getCiaForeignerEditModal($(this).attr("data-cikey"));
})
$(document).on('click', '#excelDown', function (){
exportExcel("외국인 커뮤니티 모니터링 현황","ciaForeignerTb");
})
function OnInitCompleted(e){
e.editorTarget.SetBodyValue(document.getElementById("monitoringInfo").value);
}

View File

@ -0,0 +1,125 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="modal-header bg-dark">
<h5 class="modal-title text-white" th:text="${cia.ciKey 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="ciaEduEditBody">
<form action="#" method="post" id="ciaEduEditForm">
<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="ciType" value="EI">
<input type="hidden" name="ciKey" th:value="${cia.ciKey}">
<input type="hidden" name="wrtOrgan" th:value="${cia.wrtOrgan}">
<input type="hidden" name="wrtPart" th:value="${cia.wrtPart}">
<input type="hidden" name="wrtUserSeq" th:value="${cia.wrtUserSeq}">
<input type="hidden" name="wrtUserGrd" th:value="${cia.wrtUserGrd}">
<input type="hidden" name="wrtUserNm" th:value="${cia.wrtUserNm}">
<input type="hidden" name="wrtDt" th:value="${#temporals.format(cia.wrtDt, 'yyyy-MM-dd HH:mm')}">
<th:block th:if="${cia.ciKey eq null}">
<div class="row mb-1">
<label for="wrtNm" class="col-sm-1 col-form-label col-form-label-sm text-center">시행관서</label>
<div class="col-sm-2">
<select class="form-select" id="mgtOrgan" name="mgtOrgan">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
<th:block th:if="${#lists.contains(mgtOrganList, commonCode.itemCd)}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
</th:block>
</th:block>
</select>
</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="eduDate" name="eduDate" readonly>
</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" placeholder="작성일자동입력" readonly>
</div>
</div>
<div class="row mb-1">
<label for="wrtNm" 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="eduType" name="eduType">
</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="number" class="form-control form-control-sm" id="peopleCnt" name="peopleCnt">
</div>
</div>
<div class="row mb-1">
<label for="contentInfoDiv" class="col-sm-1 col-form-label col-form-label-sm text-center">내용/비고</label>
<div class="col-sm-11" id="contentInfoDiv">
<textarea class="form-control form-control-sm" rows="5" cols="30" name="description"></textarea>
</div>
</div>
</th:block>
<th:block th:unless="${cia.ciKey eq null}">
<div class="row mb-1">
<label for="wrtNm" class="col-sm-1 col-form-label col-form-label-sm text-center">시행관서</label>
<div class="col-sm-2">
<select class="form-select" id="mgtOrgan" name="mgtOrgan">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
<th:block th:if="${#lists.contains(mgtOrganList, commonCode.itemCd)}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${cia.eduInfo.mgtOrgan eq commonCode.itemCd}"></option>
</th:block>
</th:block>
</select>
</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="eduDate" name="eduDate" th:value="${cia.eduInfo.eduDate}" readonly>
</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" placeholder="작성일자동입력" readonly>
</div>
</div>
<div class="row mb-1">
<label for="wrtNm" 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="eduType" name="eduType" th:value="${cia.eduInfo.eduType}">
</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="number" class="form-control form-control-sm" id="peopleCnt" name="peopleCnt" th:value="${cia.eduInfo.peopleCnt}">
</div>
</div>
<div class="row mb-1">
<label for="contentInfoDiv" class="col-sm-1 col-form-label col-form-label-sm text-center">내용/비고</label>
<div class="col-sm-11" id="contentInfoDiv">
<textarea class="form-control form-control-sm" rows="5" cols="30" name="description" th:utext="${cia.eduInfo.description}"></textarea>
</div>
</div>
</th:block>
<div class="row mb-1">
<label for="fileInputer" class="col-sm-1 col-form-label col-form-label-sm text-center">첨부파일</label>
<div class="col-sm-11" style="min-height: 70px;">
<div class="w-100 h-100 border border-info rounded text-center" id="uploadDiv">
<th:block th:if="${#arrays.isEmpty(cia.fileList)}">
<br>파일을 업로드 해주세요.
</th:block>
<th:block th:unless="${#arrays.isEmpty(cia.fileList)}">
<div class='row-col-6' th:each="file:${cia.fileList}">
<span th:data-fileseq="${file.fileSeq}" th:text="|${file.origNm}.${file.fileExtn} ${file.fileSize}|"></span>
<a href='#' class='uploadedFileDelete text-danger text-decoration-none'>삭제</a>
</div>
</th:block>
</div>
<input type="file" class="d-none" id="fileInputer" multiple>
</div>
</div>
</form>
</div>
<div class="modal-footer justify-content-between bg-light">
<div class="col-auto">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
</div>
<div class="col-auto">
<button type="button" class="btn btn-warning" id="saveTempBtn">임시저장</button>
<button type="button" class="btn btn-primary" id="saveBtn">저장</button>
</div>
</div>
</html>

View File

@ -0,0 +1,187 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout/layout}">
<th:block layout:fragment="script">
<script type="text/javascript" th:src="@{/js/counterIntelligence/ciaEdu.js}"></script>
</th:block>
<div layout:fragment="content">
<main>
<div class="row justify-content-between">
<div class="col-auto">
<h4>방첩교육 실시 현황</h4>
</div>
<div class="col-auto">
<p class="mb-0 mt-2">외사방첩관리 > 방첩활동 > 방첩교육 실시 현황</p>
</div>
</div>
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
<div class="row mx-0">
<div class="col-12 card bg-light text-center">
<div class="card-body">
<div class="tab-content bg-white border border-top-0 p-2">
<form method="get" th:action="@{/counterIntelligence/ciaEduList}">
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between py-1">
<div class="col-auto">
<select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option>
</th:block>
</select>
</div>
<div class="col-8">
<!-- <div class="row">
<div class="col-11">
<div class="row justify-content-end pb-1">
<div class="col-2" th:if="${accessAuth eq 'ACC003'}">
<select class="form-select form-select-sm" name="wrtOrgan">
<option value="">관서 선택</option>
<th:block th:each="code:${session.commonCode.get('OG')}">
<th:block th:if="${#lists.contains(downOrganCdList, code.itemCd)}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq searchParams.wrtOrgan}"></option>
</th:block>
</th:block>
</select>
</div>
<div class="col-2">
<select class="form-select form-select-sm" name="workRating">
<option value="">등급</option>
<th:block th:each="code:${session.commonCode.get('CIWR')}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq searchParams.workRating}"></option>
</th:block>
</select>
</div>
<div class="col-2">
<select class="form-select form-select-sm" name="arrestType1">
<option value="">검거유형1</option>
<th:block th:each="code:${session.commonCode.get('AT')}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq searchParams.arrestType1}"></option>
</th:block>
</select>
</div>
<div class="col-2">
<select class="form-select form-select-sm" name="arrestType2">
<option value="">검거유형2</option>
<th:block th:each="code:${session.commonCode.get(arrestType1)}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq searchParams.arrestType2}"></option>
</th:block>
</select>
</div>
</div>
<div class="row justify-content-end">
<div class="col-2">
<input type="text" class="form-control form-control-sm" placeholder="제목" name="title" th:value="${searchParams.title}">
</div>
<div class="col-2">
<input type="text" class="form-control form-control-sm" placeholder="해시태그" name="hashTags" th:value="${searchParams.hashTags}">
</div>
<div class="col-2">
<input type="text" class="form-control form-control-sm" placeholder="작성자" name="wrtUserNm" th:value="${searchParams.wrtUserNm}">
</div>
<div class="col-4">
<div class="input-group input-daterange" id="dateSelectorDiv">
<select class="form-select form-select-sm w-30" name="dateSelector">
<option value="wrtDt" th:selected="${searchParams.dateSelector eq 'wrtDt'}">작성일</option>
<option value="workStartDate" th:selected="${searchParams.dateSelector eq 'workStartDate'}">착수일</option>
<option value="workEndDate" th:selected="${searchParams.dateSelector eq 'workEndDate'}">종결일</option>
<option value="reRatingDate1" th:selected="${searchParams.dateSelector eq 'reRatingDate1'}">1차재평가</option>
<option value="reRatingDate2" th:selected="${searchParams.dateSelector eq 'reRatingDate2'}">2차재평가</option>
</select>
<input type="text" class="form-control form-control-sm w-35" id="startDate" name="startDate" placeholder="시작일" autocomplete="off" readonly th:value="${searchParams.startDate}">
<input type="text" class="form-control form-control-sm w-35" id="endDate" name="endDate" placeholder="종료일" autocomplete="off" readonly th:value="${searchParams.endDate}">
</div>
</div>
</div>
</div>
<div class="col-1 d-grid gap-2">
<input type="submit" class="btn btn-sm btn-primary" id="searchBtn" value="검색">
</div>
</div> -->
</div>
</div>
</form>
<div class="row">
<div class="col-12">
<table class="table table-sm table-bordered table-hover" id="ciaEduTb">
<thead>
<tr class="table-secondary">
<th>시행일자</th>
<th>시행관서</th>
<th>교육방식</th>
<th>교육인원</th>
<th>비고</th>
<th>작성자</th>
</tr>
</thead>
<tbody class="table-group-divider">
<tr class="eiTr" th:each="list:${eiList}">
<td th:text="${list.eduDate}"></td>
<td th:text="${list.mgtOrgan}"></td>
<td th:text="${list.eduType}"></td>
<td th:text="${list.peopleCnt}"></td>
<td th:utext="${list.description}"></td>
<td th:text="|${list.wrtUserGrd} ${list.wrtUserNm}|"></td>
<th:block>
<input type="hidden" class="ciKey" th:value="${list.ciKey}">
</th:block>
</tr>
</tbody>
</table>
</div>
</div>
<div class="row justify-content-between">
<div class="col-auto"></div>
<div class="col-auto">
<nav aria-label="Page navigation">
<ul class="pagination mb-0">
<th:block th:if="${searchParams.pageIndex>3}">
<li class="page-item" th:data-pageindex="${(searchParams.pageIndex)-3}">
<a class="page-link" href="#" aria-label="Previous">
<span aria-hidden="true">&laquo;</span>
</a>
</li>
</th:block>
<th:block th:each="num : ${#numbers.sequence(searchParams.startNum, searchParams.endNum)}">
<li class="page-item" th:data-pageindex="${num}" th:classappend="${searchParams.pageIndex eq num?'active':''}">
<a class="page-link" href="#" th:text="${num}"></a>
</li>
</th:block>
<th:block th:if="${searchParams.maxNum>searchParams.endNum+2}">
<li class="page-item" th:data-pageindex="${(searchParams.pageIndex)+3}">
<a class="page-link" href="#" aria-label="Next">
<span aria-hidden="true">&raquo;</span>
</a>
</li>
</th:block>
</ul>
</nav>
</div>
<div class="col-auto">
<input type="button" class="btn btn-success" value="등록" id="addBtn" th:unless="${accessAuth eq 'ACC001'}">
<button type="button" class="btn btn-success" id="excelDown" th:unless="${accessAuth eq 'ACC001'}">엑셀다운</button>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
<div class="modal fade" id="ciaEduEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="ciWorkModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-scrollable">
<div class="modal-content" id="ciaEduEditModalContent">
</div>
</div>
</div>
<div class="modal fade" id="ciaEduViewModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="ciWorkModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-scrollable">
<div class="modal-content" id="ciaEduViewModalBody">
</div>
</div>
</div>
</div>
</html>

View File

@ -0,0 +1,98 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="modal-header bg-dark">
<h5 class="modal-title text-white" id="ciWorkViewModalLabel">방첩교육 실시 현황 열람</h5>
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body" id="ciWorkViewBody">
<ul class="nav nav-tabs" id="userTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="boardTab" data-bs-toggle="tab" data-bs-target="#boardTabPanel" type="button" role="tab" aria-controls="boardTabPanel" aria-selected="true">본문</button>
</li>
<li class="nav-item" role="presentation" th:if="${#lists.size(cia.fileList)>0}">
<button class="nav-link" id="fileTab" data-bs-toggle="tab" data-bs-target="#fileTabPanel" type="button" role="tab" aria-controls="fileTabPanel" aria-selected="false" th:text="${#strings.concat('첨부파일(', #lists.size(cia.fileList), ')')}"></button>
</li>
</ul>
<div class="tab-content bg-white border border-top-0 p-2">
<div class="tab-pane fade p-2 show active" id="boardTabPanel" role="tabpanel" tabindex="0">
<div class="row mb-1">
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">작성자</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start">
<th:block th:each="commonCode:${session.commonCode.get('JT')}">
<option th:value="${commonCode.itemCd}" th:if="${commonCode.itemCd eq cia.wrtUserGrd}" th:text="|${commonCode.itemValue} ${cia.wrtUserNm}|"></option>
</th:block>
</label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">작성일시</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${#temporals.format(cia.wrtDt, 'yyyy-MM-dd HH:mm')}"></label>
</div>
<div class="row mb-1">
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">시행관서</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start">
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
<option th:value="${commonCode.itemCd}" th:if="${commonCode.itemCd eq cia.eduInfo.mgtOrgan}" th:text="${commonCode.itemValue}"></option>
</th:block>
</label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">시행일</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${cia.eduInfo.eduDate}"></label>
</div>
<hr class="my-1">
<div class="row mb-1">
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">교육방식</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${cia.eduInfo.eduType}"></label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">교육인원</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${cia.eduInfo.peopleCnt}"></label>
</div>
<hr class="my-1">
<div class="row mb-1">
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">내용/비고</label>
<div class="col-sm-11 form-control-sm" th:utext="${#strings.replace(cia.eduInfo.description, lineSeparator, '<br>')}"></div>
</div>
</div>
<div class="tab-pane fade p-2" id="fileTabPanel" role="tabpanel" tabindex="0">
<div class="row mb-3">
<div class="col-sm-12">
<table class="table table-sm" id="fileTable">
<thead>
<tr>
<th>파일명</th>
<th>사이즈</th>
</tr>
</thead>
<tbody>
<th:block th:if="${#lists.isEmpty(cia.fileList)}">
<tr>
<td colspan="2">파일이 없습니다.</td>
</tr>
</th:block>
<th:block th:unless="${#lists.isEmpty(cia.fileList)}">
<th:block th:each="file:${cia.fileList}">
<tr class="fileInfoTr">
<td>
<a href="#" class="fileDownLink" data-board="ciWork"
th:data-parentkey="${file.ciKey}" th:data-fileseq="${file.fileSeq}"
th:text="|${file.origNm}.${file.fileExtn}|"></a>
</td>
<td th:text="${file.fileSize}"></td>
</tr>
</th:block>
</th:block>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer justify-content-between bg-light">
<div class="col-auto">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
<th:block th:if="${accessAuth eq 'ACC003'}">
<button type="button" class="btn btn-danger" id="deleteCiWorkBtn" th:data-cikey="${cia.ciKey}">삭제</button>
</th:block>
</div>
<div class="col-auto">
<th:block th:if="${viewUserSeq eq cia.wrtUserSeq}">
<button type="button" class="btn btn-warning" id="editBtn" th:data-cikey="${cia.ciKey}">수정</button>
</th:block>
</div>
</div>

View File

@ -9,13 +9,14 @@
<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="ciType" value="FI">
<!-- <input type="hidden" name="ciKey" th:value="${cia.ciKey}">
<input type="hidden" name="ciKey" th:value="${cia.ciKey}">
<input type="hidden" name="wrtOrgan" th:value="${cia.wrtOrgan}">
<input type="hidden" name="wrtPart" th:value="${cia.wrtPart}">
<input type="hidden" name="wrtUserSeq" th:value="${cia.wrtUserSeq}">
<input type="hidden" name="wrtUserGrd" th:value="${cia.wrtUserGrd}">
<input type="hidden" name="wrtUserNm" th:value="${cia.wrtUserNm}">
<input type="hidden" name="wrtDt" th:value="${#temporals.format(cia.wrtDt, 'yyyy-MM-dd HH:mm')}"> -->
<input type="hidden" name="wrtDt" th:value="${#temporals.format(cia.wrtDt, 'yyyy-MM-dd HH:mm')}">
<th:block th:if="${cia.ciKey eq null}">
<div class="row mb-1">
<label for="wrtNm" class="col-sm-1 col-form-label col-form-label-sm text-center">관리관서</label>
<div class="col-sm-2">
@ -23,8 +24,7 @@
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
<th:block th:if="${#lists.contains(mgtOrganList, commonCode.itemCd)}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:if="${cia.ciKey eq null}"></option>
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:unless="${cia.ciKey eq null}" th:selected="${commonCode.itemCd eq cia.manageCompanyInfo.mgtOrgan}"></option>
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
</th:block>
</th:block>
</select>
@ -42,7 +42,6 @@
<input type="text" class="form-control form-control-sm" placeholder="작성일자동입력" readonly>
</div>
</div>
<th:block th:if="${cia.ciKey eq null}">
<div class="row mb-1">
<label for="wrtNm" class="col-sm-1 col-form-label col-form-label-sm text-center">소재지</label>
<div class="col-sm-2">
@ -71,6 +70,60 @@
</div>
</div>
</th:block>
<th:block th:unless="${cia.ciKey eq null}">
<div class="row mb-1">
<label for="wrtNm" class="col-sm-1 col-form-label col-form-label-sm text-center">관리관서</label>
<div class="col-sm-2">
<select class="form-select" id="mgtOrgan" name="mgtOrgan">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
<th:block th:if="${#lists.contains(mgtOrganList, commonCode.itemCd)}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq cia.foreignerInfo.mgtOrgan}"></option>
</th:block>
</th:block>
</select>
</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="fixDate" name="fixDate" th:value="${cia.foreignerInfo.fixDate}" readonly>
</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="manager" name="manager" th:value="${cia.foreignerInfo.manager}">
</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" placeholder="작성일자동입력" readonly>
</div>
</div>
<div class="row mb-1">
<label for="wrtNm" 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="commuLocation" name="commuLocation" th:value="${cia.foreignerInfo.commuLocation}">
</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="commuNational" name="commuNational" th:value="${cia.foreignerInfo.commuNational}">
</div>
<label for="wrtDt" class="col-sm-1 col-form-label col-form-label-sm text-center">주소지</label>
<div class="col-sm-5">
<input type="text" class="form-control form-control-sm" id="commuAddress" name="commuAddress" th:value="${cia.foreignerInfo.commuAddress}">
</div>
</div>
<div class="row mb-1">
<label for="contentInfoDiv" class="col-sm-1 col-form-label col-form-label-sm text-center">선정사유</label>
<div class="col-sm-11" id="contentInfoDiv">
<textarea class="form-control form-control-sm" rows="5" cols="30" name="selectReason" th:utext="${cia.foreignerInfo.selectReason}"></textarea>
</div>
</div>
<div class="row mb-1">
<label for="content" class="col-sm-1 col-form-label col-form-label-sm text-center">모니터링 사항</label>
<div class="col-sm-11">
<div id="editor"></div>
<textarea class="d-none" id="monitoringInfo" th:utext="${cia.foreignerInfo.monitoringInfo}"></textarea>
</div>
</div>
</th:block>
<div class="row mb-1">
<label for="fileInputer" class="col-sm-1 col-form-label col-form-label-sm text-center">첨부파일</label>
<div class="col-sm-11" style="min-height: 70px;">

View File

@ -104,7 +104,7 @@
</form>
<div class="row">
<div class="col-12">
<table class="table table-sm table-bordered table-hover">
<table class="table table-sm table-bordered table-hover" id="ciaForeignerTb">
<thead>
<tr class="table-secondary">
<th rowspan="2">관리관서</th>
@ -124,19 +124,19 @@
</thead>
<tbody class="table-group-divider">
<tr class="fiTr" th:each="list:${fiList}">
<th:block>
<input type="hidden" class="ciKey" th:value="${list.ciKey}">
</th:block>
<td th:text="${list.mgtOrgan}"></td>
<td th:text="${list.manager}"></td>
<td th:text="${list.commuLocation}"></td>
<td th:text="${list.commuNational}"></td>
<td th:text="${list.commuAddress}"></td>
<td th:text="${list.selectReason}"></td>
<td th:utext="${list.selectReason}"></td>
<td th:utext="${list.monitoringInfo}"></td>
<td th:text="${list.fixDate}"></td>
<td th:text="${list.mgtOrgan}"></td>
<td th:text="${#temporals.format(list.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
<td th:text="|${list.wrtUserGrd} ${list.wrtUserNm}|"></td>
<td th:text="${#temporals.format(list.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
<th:block>
<input type="hidden" class="ciKey" th:value="${list.ciKey}">
</th:block>
</tr>
</tbody>
</table>
@ -171,6 +171,7 @@
</div>
<div class="col-auto">
<input type="button" class="btn btn-success" value="등록" id="addBtn" th:unless="${accessAuth eq 'ACC001'}">
<button type="button" class="btn btn-success" id="excelDown" th:unless="${accessAuth eq 'ACC001'}">엑셀다운</button>
</div>
</div>
</div>
@ -186,9 +187,9 @@
</div>
</div>
</div>
<div class="modal fade" id="ciaManageCompanyViewModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="ciWorkModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-scrollable">
<div class="modal-content" id="ciaManageCompanyViewModalBody">
<div class="modal fade" id="ciaForeignerViewModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="ciWorkModalLabel" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-scrollable">
<div class="modal-content" id="ciaForeignerViewModalBody">
</div>
</div>

View File

@ -0,0 +1,105 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="modal-header bg-dark">
<h5 class="modal-title text-white" id="ciWorkViewModalLabel">외국인 커뮤니티 모니터링 열람</h5>
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body" id="ciWorkViewBody">
<ul class="nav nav-tabs" id="userTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="boardTab" data-bs-toggle="tab" data-bs-target="#boardTabPanel" type="button" role="tab" aria-controls="boardTabPanel" aria-selected="true">본문</button>
</li>
<li class="nav-item" role="presentation" th:if="${#lists.size(cia.fileList)>0}">
<button class="nav-link" id="fileTab" data-bs-toggle="tab" data-bs-target="#fileTabPanel" type="button" role="tab" aria-controls="fileTabPanel" aria-selected="false" th:text="${#strings.concat('첨부파일(', #lists.size(cia.fileList), ')')}"></button>
</li>
</ul>
<div class="tab-content bg-white border border-top-0 p-2">
<div class="tab-pane fade p-2 show active" id="boardTabPanel" role="tabpanel" tabindex="0">
<div class="row mb-1">
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">관리관서</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start">
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
<option th:value="${commonCode.itemCd}" th:if="${commonCode.itemCd eq cia.foreignerInfo.mgtOrgan}" th:text="${commonCode.itemValue}"></option>
</th:block>
</label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">작성자</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start">
<th:block th:each="commonCode:${session.commonCode.get('JT')}">
<option th:value="${commonCode.itemCd}" th:if="${commonCode.itemCd eq cia.wrtUserGrd}" th:text="|${commonCode.itemValue} ${cia.wrtUserNm}|"></option>
</th:block>
</label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">작성일시</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${#temporals.format(cia.wrtDt, 'yyyy-MM-dd HH:mm')}"></label>
</div>
<hr class="my-1">
<div class="row mb-1">
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">소재지</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${cia.foreignerInfo.commuLocation}"></label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">국적</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${cia.foreignerInfo.commuNational}"></label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">주소지</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${cia.foreignerInfo.commuAddress}"></label>
</div>
<div class="row mb-1">
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">담당관</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${cia.foreignerInfo.manager}"></label>
</div>
<hr class="my-1">
<div class="row mb-1">
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">선정사유</label>
<div class="col-sm-11 form-control-sm" th:utext="${#strings.replace(cia.foreignerInfo.selectReason, lineSeparator, '<br>')}"></div>
</div>
<hr class="my-1">
<div class="row mb-1">
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">모니터링<br>사항</label>
<div class="col-sm-11 form-control-sm" th:utext="${cia.foreignerInfo.monitoringInfo}"></div>
</div>
</div>
<div class="tab-pane fade p-2" id="fileTabPanel" role="tabpanel" tabindex="0">
<div class="row mb-3">
<div class="col-sm-12">
<table class="table table-sm" id="fileTable">
<thead>
<tr>
<th>파일명</th>
<th>사이즈</th>
</tr>
</thead>
<tbody>
<th:block th:if="${#lists.isEmpty(cia.fileList)}">
<tr>
<td colspan="2">파일이 없습니다.</td>
</tr>
</th:block>
<th:block th:unless="${#lists.isEmpty(cia.fileList)}">
<th:block th:each="file:${cia.fileList}">
<tr class="fileInfoTr">
<td>
<a href="#" class="fileDownLink" data-board="ciWork"
th:data-parentkey="${file.ciKey}" th:data-fileseq="${file.fileSeq}"
th:text="|${file.origNm}.${file.fileExtn}|"></a>
</td>
<td th:text="${file.fileSize}"></td>
</tr>
</th:block>
</th:block>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer justify-content-between bg-light">
<div class="col-auto">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
<th:block th:if="${accessAuth eq 'ACC003'}">
<button type="button" class="btn btn-danger" id="deleteCiWorkBtn" th:data-cikey="${cia.ciKey}">삭제</button>
</th:block>
</div>
<div class="col-auto">
<th:block th:if="${viewUserSeq eq cia.wrtUserSeq}">
<button type="button" class="btn btn-warning" id="editBtn" th:data-cikey="${cia.ciKey}">수정</button>
</th:block>
</div>
</div>

View File

@ -21,7 +21,7 @@
<div class="col-12 card bg-light text-center">
<div class="card-body">
<div class="tab-content bg-white border border-top-0 p-2">
<form method="get" th:action="${searchUrl}">
<form method="get" th:action="@{/counterIntelligence/ciaSaftyDemandList}">
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between py-1">
<div class="col-auto">

View File

@ -16,11 +16,14 @@
<div class="tab-content bg-white border border-top-0 p-2">
<div class="tab-pane fade p-2 show active" id="boardTabPanel" role="tabpanel" tabindex="0">
<div class="row mb-1">
<div class="col-sm-9"></div>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">작성일시</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${#temporals.format(cia.wrtDt, 'yyyy-MM-dd HH:mm')}"></label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">작성자</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${cia.wrtUserNm}"></label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start">
<th:block th:each="commonCode:${session.commonCode.get('JT')}">
<option th:value="${commonCode.itemCd}" th:if="${commonCode.itemCd eq cia.wrtUserGrd}" th:text="|${commonCode.itemValue} ${cia.wrtUserNm}|"></option>
</th:block>
</label>
</div>
<hr class="my-1">
<div class="row mb-1">