외사수사관리 모달 수정 완료.

강석 최 2022-12-08 11:07:56 +09:00
parent 228c38fdaf
commit 44a2834ccc
3 changed files with 260 additions and 279 deletions

View File

@ -1,212 +1,190 @@
$(document).on('click', '#ivsgtAddBtn', function () { $(document).on('click', '#ivsgtAddBtn', function () {
getIvsgtEditModal(null, $("input[name='ivsgtType']").val()); getIvsgtEditModal(null, $("input[name='ivsgtType']").val());
}); });
$(document).on('click', '#ivsgtEditBtn', function () { $(document).on('click', '#ivsgtEditBtn', function () {
$("#ivsgtViewModal").modal('hide'); $("#ivsgtViewModal").modal('hide');
getIvsgtEditModal(Number($("#ivsgtViewBody").find("[name='ivsgtKey']").val())); getIvsgtEditModal(Number($("#ivsgtViewBody").find("[name='ivsgtKey']").val()));
});
$(document).on('click', '#contentInfoAddBtn', function (){
$("#contentInfoDiv").append("<input type='text' class='form-control' name='contentInfos'>")
}); });
$(document).on('click', '#saveIvsgtBtn', function (){ $(document).on('click', '#saveIvsgtBtn', function (){
saveBoardInvestigation('N') saveBoardInvestigation('N')
}); });
$(document).on('click', '#saveTempBtn', function (){ $(document).on('click', '#saveTempBtn', function (){
saveBoardInvestigation('Y') saveBoardInvestigation('Y')
}); });
$(document).on('click', '.tr', function (){ $(document).on('click', '.tr', function (){
getIvsgtViewModal($(this).data('key')); getIvsgtViewModal($(this).data('key'));
}); });
$(document).on('click', '.ivsgtTab', function (){ $(document).on('click', '.ivsgtTab', function (){
location.href = "/ivsgt/"+ $(this).data("ivsgt-type"); location.href = "/ivsgt/"+ $(this).data("ivsgt-type");
}); });
$(document).on('click', '#relatedReportSearchBtn', function (){ $(document).on('click', '#relatedReportSearchBtn', function (){
let contentTitle = $("#ivsgtEditBody").find("[name='searchTitle']").val(); let contentTitle = $("#ivsgtEditBody").find("[name='searchTitle']").val();
let ivsgtType = $("#ivsgtEditBody").find("[name='ivsgtType']").val(); let ivsgtType = $("#ivsgtEditBody").find("[name='ivsgtType']").val();
getSearchViewModal(ivsgtType, contentTitle) getSearchViewModal(ivsgtType, contentTitle)
}); });
$(document).on('click', '#completeBtn', function (){ $(document).on('click', '#completeBtn', function (){
const checkbox = document.getElementsByClassName('reportChk'); const checkbox = document.getElementsByClassName('reportChk');
Array.from(checkbox).forEach(function(element) { Array.from(checkbox).forEach(function(element) {
if (element.checked) { if (element.checked) {
$('#relatedReportSearchDiv').append( $('#relatedReportSearchDiv').append(
'<input type="hidden" name="relatedReportsKeyList" value="0">' '<div class="col-auto">' +
+ '<input type="hidden" name="childIvsgtKeyList" value="' + element.value + '">' ' <input type="hidden" name="relatedReportsKeyList" value="0">'+
+ '<div class="col-auto"><input class="border-0" type="text" name="relatedReportsText" value="' + element.name + '" readonly>' ' <input type="hidden" name="childIvsgtKeyList" value="' + element.value + '">'+
+ '<button class="btn btn-sm btn-primary col-auto cancel-btn" >X</button></div>' ' <input type="hidden" name="relatedReportsText" value="' + element.name + '" readonly>'+
) ' <div class="row">' +
} ' <label class="col-sm-auto col-form-label col-form-label-sm">' + element.name + '</label>'+
}); ' <button class="btn btn-sm btn-primary col-auto cancel-btn" ><i class="bi-x"></i></button>' +
' </div>' +
'</div>'
)
}
});
}); });
$(document).on('click', '.cancel-btn', function (){ $(document).on('click', '.cancel-btn', function (){
$(this).parent().remove(); $(this).parent().remove();
let deleteKey = $(this).parent().children("input[name='relatedReportsKeyList']").val(); let deleteKey = $(this).parent().children("input[name='relatedReportsKeyList']").val();
$("#ivsgtEditForm").append('<input type="hidden" name="deleteKeyList" value="' + deleteKey + '">'); $("#ivsgtEditForm").append('<input type="hidden" name="deleteKeyList" value="' + deleteKey + '">');
}); });
$(document).on('change', '#arrestCd', function (){ $(document).on('change', '#arrestCd', function (){
dynamicOption('#arrestCd2', $(this).val()); dynamicOption('#arrestCd2', $(this).val());
}); });
$(document).on('change', '#searchArrestCd', function (){ $(document).on('change', '#searchArrestCd', function (){
dynamicOption('#searchArrestCd2', $(this).val(), '검거유형2'); dynamicOption('#searchArrestCd2', $(this).val(), '검거유형2');
}); });
$(function(){ $(function(){
$("#dateSelectorDiv").datepicker({ $("#dateSelectorDiv").datepicker({
format: "yyyy-mm-dd", format: "yyyy-mm-dd",
language: "ko", language: "ko",
autoclose: true autoclose: true
}); });
}); });
function getIvsgtViewModal(ivsgtKey){ function getIvsgtViewModal(ivsgtKey){
$.ajax({ $.ajax({
url: '/ivsgt/ivsgtViewModal', url: '/ivsgt/ivsgtViewModal',
data: {ivsgtKey: ivsgtKey}, data: {ivsgtKey: ivsgtKey},
type: 'GET', type: 'GET',
dataType:"html", dataType:"html",
success: function(html){ success: function(html){
$("#ivsgtViewBody").empty().append(html) $("#ivsgtViewBody").empty().append(html)
$("#ivsgtViewModal").modal('show'); $("#ivsgtViewModal").modal('show');
}, },
error:function(){ error:function(){
} }
}); });
} }
function getIvsgtEditModal(ivsgtKey, ivsgtType){ function getIvsgtEditModal(ivsgtKey, ivsgtType){
$.ajax({ $.ajax({
url: '/ivsgt/ivsgtEditModal', url: '/ivsgt/ivsgtEditModal',
data: { data: {
ivsgtKey: ivsgtKey, ivsgtKey: ivsgtKey,
ivsgtType: ivsgtType ivsgtType: ivsgtType
}, },
type: 'GET', type: 'GET',
dataType:"html", dataType:"html",
success: function(html){ success: function(html){
$("#ivsgtViewBody").empty(); $("#ivsgtViewBody").empty();
$("#ivsgtEditModalContent").empty().append(html) $("#ivsgtEditModalContent").empty().append(html)
$("#ivsgtEditModal").modal('show'); $("#ivsgtEditModal").modal('show');
$("[name='contentInfo']").summernote({ setEditor('editor', '400')
lang:'ko-KR', setUploadDiv();
height: 120, },
disableDragAndDrop: true, error:function(){
toolbar: [
['style', ['style']],
['font', ['bold', 'underline', 'clear']],
['color', ['color']],
['para', ['ul', 'ol', 'paragraph']],
['table', ['table']]
]
});
$("[name='contentMain']").summernote({
lang:'ko-KR',
height: 120,
disableDragAndDrop: true,
toolbar: [
['style', ['style']],
['font', ['bold', 'underline', 'clear']],
['color', ['color']],
['para', ['ul', 'ol', 'paragraph']],
['table', ['table']]
]
});
setUploadDiv();
},
error:function(){
} }
}); });
} }
function getSearchViewModal(ivsgtType, contentTitle){ function getSearchViewModal(ivsgtType, contentTitle){
$.ajax({ $.ajax({
url: '/ivsgt/searchViewModal', url: '/ivsgt/searchViewModal',
data: { data: {
contentTitle: contentTitle, contentTitle: contentTitle,
ivsgtType: ivsgtType ivsgtType: ivsgtType
}, },
type: 'GET', type: 'GET',
dataType:"html", dataType:"html",
success: function(html){ success: function(html){
$("#searchViewBody").empty().append(html) $("#searchViewBody").empty().append(html)
$("#searchViewModal").modal('show'); $("#searchViewModal").modal('show');
}, },
error:function(){ error:function(){
} }
}); });
} }
function saveBoardInvestigation(contentState){ function saveBoardInvestigation(contentState){
if(contentCheck()){ if(contentCheck()){
if(confirm("저장하시겠습니까?")){ if(confirm("저장하시겠습니까?")){
$("#contentStatus").val(contentState); $("#contentStatus").val(contentState);
contentFade("in"); contentFade("in");
const formData = new FormData($("#ivsgtEditForm")[0]); const formData = new FormData($("#ivsgtEditForm")[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);
} }
$(".text-decoration-line-through").each(function (idx, el){ $(".text-decoration-line-through").each(function (idx, el){
formData.append('fileSeq', $(el).attr("data-fileseq")); formData.append('fileSeq', $(el).attr("data-fileseq"));
}) })
$.ajax({ formData.append('contentMain', CrossEditor.GetBodyValue());
type : 'POST', $.ajax({
data : formData, type : 'POST',
url : "/ivsgt/saveBoardInvestigation", data : formData,
processData: false, url : "/ivsgt/saveBoardInvestigation",
contentType: false, processData: false,
success : function(result) { contentType: false,
alert("저장되었습니다."); success : function(result) {
contentFade("out"); alert("저장되었습니다.");
$("#ivsgtEditModal").modal('hide'); contentFade("out");
getIvsgtViewModal(result); $("#ivsgtEditModal").modal('hide');
}, getIvsgtViewModal(result);
error : function(xhr, status) { },
alert("저장에 실패하였습니다.") error : function(xhr, status) {
contentFade("out"); alert("저장에 실패하였습니다.")
} contentFade("out");
})
} }
})
} }
}
} }
function contentCheck(){ function contentCheck(){
let flag = true; let flag = true;
if(!$("#contentTitle").val()){ if(!$("#contentTitle").val()){
alert("제목을 입력해주세요.") alert("제목을 입력해주세요.")
flag = false; flag = false;
} }
else if(!$("#arrestCd").val()){ else if(!$("#arrestCd").val()){
alert("검거유형1을 선택해주세요.") alert("검거유형1을 선택해주세요.")
flag = false; flag = false;
} }
else if(!$("#arrestCd2").val()){ else if(!$("#arrestCd2").val()){
alert("검거유형2를 선택해주세요.") alert("검거유형2를 선택해주세요.")
flag = false; flag = false;
} }
else if(!$("#relatedReport").is(':checked') && $("input[name='ivsgtType']").val() != "arrest") { else if(!$("#relatedReport").is(':checked') && $("input[name='ivsgtType']").val() != "arrest") {
if ($('input[name="relatedReportsText"]').length < 1) { if ($('input[name="relatedReportsText"]').length < 1) {
alert("연관보고서를 확인해 주세요.") alert("연관보고서를 확인해 주세요.")
flag = false; flag = false;
}
} }
}
flag = fileCheck(flag, files); flag = fileCheck(flag, files);
return flag; return flag;
} }

View File

@ -1,7 +1,7 @@
<!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 bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title text-white" id="planEditModalLabel"> <h5 class="modal-title text-white" id="planEditModalLabel">
<th:block th:if="${boardInvestigation.ivsgtKey eq null}"> <th:block th:if="${boardInvestigation.ivsgtKey eq null}">
<th:block th:if="${boardInvestigation.ivsgtType eq 'arrest'}"> <th:block th:if="${boardInvestigation.ivsgtType eq 'arrest'}">
검거보고서 작성 검거보고서 작성
@ -24,136 +24,140 @@
결과보고서 수정 결과보고서 수정
</th:block> </th:block>
</th:block> </th:block>
</h5> </h5>
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button> <button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
</div> </div>
<div class="modal-body" id="ivsgtEditBody"> <div class="modal-body" id="ivsgtEditBody">
<form action="#" method="post" id="ivsgtEditForm"> <form action="#" method="post" id="ivsgtEditForm">
<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="ivsgtKey" th:value="${boardInvestigation.ivsgtKey}"> <input type="hidden" name="ivsgtKey" th:value="${boardInvestigation.ivsgtKey}">
<input type="hidden" name="wrtOrgan" th:value="${boardInvestigation.wrtOrgan}"> <input type="hidden" name="wrtOrgan" th:value="${boardInvestigation.wrtOrgan}">
<input type="hidden" id="contentStatus" name="contentStatus"> <input type="hidden" id="contentStatus" name="contentStatus">
<input type="hidden" name="ivsgtType" th:value="${boardInvestigation.ivsgtType}"> <input type="hidden" name="ivsgtType" th:value="${boardInvestigation.ivsgtType}">
<input type="hidden" name="arrestTypeKey" th:value="${boardInvestigation.arrestType != null ? boardInvestigation.arrestType.arrestTypeKey: ''}"> <input type="hidden" name="arrestTypeKey" th:value="${boardInvestigation.arrestType != null ? boardInvestigation.arrestType.arrestTypeKey: ''}">
<div class="row mb-1"> <div class="row mb-1">
<label for="wrtNm" class="col-sm-2 col-form-label text-center">작성자</label> <label for="wrtNm" 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="wrtNm" name="wrtNm" th:value="${boardInvestigation.wrtNm}" readonly> <input type="text" class="form-control form-control-sm" id="wrtNm" name="wrtNm" th:value="${boardInvestigation.wrtNm}" readonly>
</div>
<label for="wrtDt" class="col-sm-2 col-form-label text-center">작성일시</label>
<div class="col-sm-2">
<input type="text" class="form-control" id="wrtDt" name="wrtDt" th:value="${#temporals.format(boardInvestigation.wrtDt, 'yyyy-MM-dd HH:mm')}" readonly>
</div>
</div> </div>
<div class="row mb-1"> <label for="wrtDt" class="col-sm-1 col-form-label col-form-label-sm text-center">작성일시</label>
<label for="contentTitle" class="col-sm-2 col-form-label text-center">제목</label> <div class="col-sm-2">
<div class="col-sm-10"> <input type="text" class="form-control form-control-sm" id="wrtDt" name="wrtDt" th:value="${#temporals.format(boardInvestigation.wrtDt, 'yyyy-MM-dd HH:mm')}" readonly>
<input type="text" class="form-control" id="contentTitle" name="contentTitle" th:value="${boardInvestigation.contentTitle}">
</div>
</div> </div>
<div class="row mb-1" id="arrestTypeDiv"> </div>
<label class="col-sm-2 col-form-label col-form-label-sm text-center">검거유형1</label> <div class="row mb-1">
<div class="col-sm-2"> <label for="contentTitle" class="col-sm-1 col-form-label col-form-label-sm text-center">제목</label>
<select class="form-select form-select-sm" name="arrestCd" id="arrestCd"> <div class="col-sm-11">
<option value="">검거유형1 선택-</option> <input type="text" class="form-control form-control-sm" id="contentTitle" name="contentTitle" th:value="${boardInvestigation.contentTitle}">
<th:block th:each="commonCode:${session.commonCode.get('AT')}"> </div>
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" </div>
th:selected="${boardInvestigation.arrestType != null and commonCode.itemCd eq boardInvestigation.arrestType.arrestCd}"></option> <div class="row mb-1" id="arrestTypeDiv">
<label class="col-sm-1 col-form-label col-form-label-sm text-center">검거유형1</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="arrestCd" id="arrestCd">
<option value="">검거유형1 선택-</option>
<th:block th:each="commonCode:${session.commonCode.get('AT')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${boardInvestigation.arrestType != null and commonCode.itemCd eq boardInvestigation.arrestType.arrestCd}"></option>
</th:block>
</select>
</div>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">검거유형2</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="arrestCd2" id="arrestCd2">
<option value="">검거유형2 선택-</option>
<th:block th:each="num : ${#numbers.sequence(1,#lists.size(session.commonCode.get('AT')))}">
<th:block th:if="${boardInvestigation.arrestType ne null && 'AT'+num == boardInvestigation.arrestType.arrestCd}" th:each="commonCode:${session.commonCode.get('AT'+num)}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${boardInvestigation.arrestType.arrestCd2 eq commonCode.itemCd}"></option>
</th:block> </th:block>
</select> </th:block>
</div> </select>
<label class="col-sm-2 col-form-label col-form-label-sm text-center">검거유형2</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="arrestCd2" id="arrestCd2">
<option value="">검거유형2 선택-</option>
<th:block th:each="num : ${#numbers.sequence(1,#lists.size(session.commonCode.get('AT')))}">
<th:block th:if="${boardInvestigation.arrestType ne null && 'AT'+num == boardInvestigation.arrestType.arrestCd}" th:each="commonCode:${session.commonCode.get('AT'+num)}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${boardInvestigation.arrestType.arrestCd2 eq commonCode.itemCd}"></option>
</th:block>
</th:block>
</select>
</div>
</div> </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" name='contentInfo' th:text="${boardInvestigation.contentInfo}"></textarea>
</div>
</div>
<div class="row mb-1">
<label for="contentMainDiv" class="col-sm-1 col-form-label col-form-label-sm text-center">주요내용</label>
<div class="col-sm-11" id="contentMainDiv">
<div id="editor"></div>
<textarea id='content' class="d-none" th:utext="${boardInvestigation.contentMain}"></textarea>
</div>
</div>
<div class="row mb-1">
<label for="hashTags" class="col-sm-1 col-form-label col-form-label-sm text-center">해시태그</label>
<div class="col-sm-11">
<input type="text" class="form-control form-control-sm" id="hashTags" name="hashTags" th:value="${boardInvestigation.hashTags}"
placeholder="띄어쓰기로 각 태그를 구분합니다. 한 태그 내에서는 띄어쓰기 없이 입력해주세요. ex)태그1 태그2">
</div>
</div>
<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(boardInvestigation.fileList)}">
<br>파일을 업로드 해주세요.
</th:block>
<th:block th:unless="${#arrays.isEmpty(boardInvestigation.fileList)}">
<div class='row-col-6' th:each="ivsgtFile:${boardInvestigation.fileList}">
<span th:data-fileseq="${ivsgtFile.fileSeq}" th:text="|${ivsgtFile.origNm}.${ivsgtFile.fileExtn} ${ivsgtFile.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>
<th:block th:if="${boardInvestigation.ivsgtType eq 'proceeding' or boardInvestigation.ivsgtType eq 'result'}">
<div class="row mb-1"> <div class="row mb-1">
<label for="contentInfoDiv" class="col-sm-2 col-form-label text-center">사건개요</label> <label for="relatedReportDiv" class="col-sm-1 col-form-label col-form-label-sm text-center">연관보고서</label>
<div class="col-sm-10" id="contentInfoDiv"> <div class="col-sm-11" id="relatedReportDiv">
<textarea type='text' name='contentInfo' th:utext="${boardInvestigation.contentInfo}"></textarea> <div class="row justify-content-start">
</div> <div class="col-4">
</div> <input type="text" class="form-control form-control-sm" placeholder="" name="searchTitle">
<div class="row mb-1"> </div>
<label for="contentMainDiv" class="col-sm-2 col-form-label text-center">주요내용</label> <input type="button" class="btn btn-sm btn-primary col-auto" id="relatedReportSearchBtn" value="검색">
<div class="col-sm-10" id="contentMainDiv"> <div class="col-auto">
<textarea type='text' name='contentMain' th:utext="${boardInvestigation.contentMain}"></textarea> <input type="checkbox" id="relatedReport" th:checked="${#lists.isEmpty(boardInvestigation.relatedReportsList)}">
</div> <label for="relatedReport">연관보고서 없음</label>
</div>
<div class="row mb-1">
<label for="hashTags" 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="hashTags" name="hashTags" th:value="${boardInvestigation.hashTags}"
placeholder="띄어쓰기로 각 태그를 구분합니다. 한 태그 내에서는 띄어쓰기 없이 입력해주세요. ex)태그1 태그2">
</div>
</div>
<div class="row mb-1">
<label for="fileInputer" class="col-sm-2 col-form-label text-center">업로드 자료</label>
<div class="col-sm-10" style="min-height: 70px;">
<div class="w-100 h-100 border border-info rounded text-center" id="uploadDiv">
<th:block th:if="${#arrays.isEmpty(boardInvestigation.fileList)}">
<br>파일을 업로드 해주세요.
</th:block>
<th:block th:unless="${#arrays.isEmpty(boardInvestigation.fileList)}">
<div class='row-col-6' th:each="ivsgtFile:${boardInvestigation.fileList}">
<span th:data-fileseq="${ivsgtFile.fileSeq}" th:text="|${ivsgtFile.origNm}.${ivsgtFile.fileExtn} ${ivsgtFile.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>
<th:block th:if="${boardInvestigation.ivsgtType eq 'proceeding' or boardInvestigation.ivsgtType eq 'result'}">
<div class="row mb-3">
<label for="relatedReportDiv" class="col-sm-2 col-form-label text-center">연관보고서</label>
<div class="col-sm-10" id="relatedReportDiv">
<div class="row justify-content-start">
<div class="col-4">
<input type="text" class="form-control form-control-sm" placeholder="" name="searchTitle">
</div>
<input type="button" class="btn btn-sm btn-primary col-auto" id="relatedReportSearchBtn" value="검색">
<div class="col-auto">
<input type="checkbox" id="relatedReport" th:checked="${#lists.isEmpty(boardInvestigation.relatedReportsList)}">
<label for="relatedReport">연관보고서 없음</label>
</div>
</div> </div>
</div> </div>
</div> </div>
<div class="row mb-3"> </div>
<label for="relatedReportDiv" class="col-sm-2 col-form-label text-center"></label> <div class="row">
<div class="col-sm-10 row mb-1" id="relatedReportSearchDiv"> <label for="relatedReportDiv" class="col-sm-1 col-form-label col-form-label-sm text-center"></label>
<th:block th:each="relatedReports:${boardInvestigation.relatedReportsList}"> <div class="col-sm-11 row mb-1" id="relatedReportSearchDiv">
<div class="col-auto"> <th:block th:each="relatedReports:${boardInvestigation.relatedReportsList}">
<input type="hidden" name="relatedReportsKeyList" th:value="${relatedReports.relatedReportsKey}"> <div class="col-auto">
<input type="hidden" name="childIvsgtKeyList" th:value="${relatedReports.childIvsgtKey}"> <input type="hidden" name="relatedReportsKeyList" th:value="${relatedReports.relatedReportsKey}">
<input class="border-0" type="text" name="relatedReportsText" th:value="${relatedReports.contentTitle}" readonly> <input type="hidden" name="childIvsgtKeyList" th:value="${relatedReports.childIvsgtKey}">
<button class="btn btn-sm btn-primary col-auto cancel-btn">X</button> <input type="hidden" name="relatedReportsText" th:value="${relatedReports.contentTitle}">
<div class="row">
<label class="col-sm-auto col-form-label col-form-label-sm" th:text="${relatedReports.contentTitle}"></label>
<button class="btn btn-sm btn-primary col-auto cancel-btn"><i class="bi-x"></i></button>
</div> </div>
</th:block>
</div>
</div>
<div class="modal fade" id="searchViewModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="searchViewModalLabel" aria-hidden="true" style="background-color: var(--bs-border-color-translucent);">
<div class="modal-dialog modal-s modal-dialog-scrollable">
<div class="modal-content" id="searchViewBody">
</div> </div>
</th:block>
</div>
</div>
<div class="modal fade" id="searchViewModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="searchViewModalLabel" aria-hidden="true" style="background-color: var(--bs-border-color-translucent);">
<div class="modal-dialog modal-s modal-dialog-scrollable">
<div class="modal-content" id="searchViewBody">
</div> </div>
</div> </div>
</th:block> </div>
</form> </th:block>
</div> </form>
<div class="modal-footer bg-light"> </div>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button> <div class="modal-footer bg-light">
<button type="button" class="btn btn-warning" id="saveTempBtn">임시저장</button> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
<button type="button" class="btn btn-primary" id="saveIvsgtBtn">저장</button> <button type="button" class="btn btn-warning" id="saveTempBtn">임시저장</button>
</div> <button type="button" class="btn btn-primary" id="saveIvsgtBtn">저장</button>
</div>
</html> </html>

View File

@ -51,9 +51,10 @@
<div class="row mb-1"> <div class="row mb-1">
<label class="col-sm-1 col-form-label col-form-label-sm text-center">사건개요</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center">사건개요</label>
<div class="col-sm-11"> <div class="col-sm-11">
<div class="form-control-sm" th:utext="${boardInvestigation.contentInfo}"></div> <div class="form-control-sm" th:text="${boardInvestigation.contentInfo}"></div>
</div> </div>
</div> </div>
<hr class="my-1">
<div class="row mb-1"> <div class="row mb-1">
<label class="col-sm-1 col-form-label col-form-label-sm text-center">주요내용</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center">주요내용</label>
<div class="col-sm-11"> <div class="col-sm-11">
@ -99,9 +100,7 @@
<div class="col-sm-11" id="relatedReportDiv"> <div class="col-sm-11" id="relatedReportDiv">
<div class="row justify-content-start"> <div class="row justify-content-start">
<th:block th:each="relatedReports:${boardInvestigation.relatedReportsList}"> <th:block th:each="relatedReports:${boardInvestigation.relatedReportsList}">
<div class="col-auto"> <label class="col-sm-auto col-form-label col-form-label-sm" th:text="${relatedReports.contentTitle}"></label>
<input class="border-0" type="text" name="relatedReportsText" th:value="${relatedReports.contentTitle}" readonly>
</div>
</th:block> </th:block>
</div> </div>
</div> </div>