청산보고 작업중.

강석 최 2022-10-06 18:43:36 +09:00
parent ae1d49cb04
commit 227f5ec5a2
7 changed files with 170 additions and 160 deletions

View File

@ -84,7 +84,11 @@ public class SecurityConfig{
"/refreshSession",
"/publicBoard/**",
"/affairPlan/**",
"/affair/**"
"/affair/**",
"/affairResult/**",
"/equip/**",
"/target/**",
"/translator/**"
).hasRole(Role.USER.name()) // USER 접근 허용
.antMatchers(
"/authMgt/**",

View File

@ -43,8 +43,9 @@ public class ResultController { // 첩보수집활동 > 외사경찰 견문관
mav.addObject("accessAuth", accessAuth);
mav.addObject("apprvAuth", apprvAuth);
resultBoard.setQueryInfo();
mav.addObject("resultList", resultService.selectResultBoardList(resultBoard));
resultBoard.setContentCnt(resultService.selectResultBoardListCnt(resultBoard));
// mav.addObject("resultList", resultService.selectResultBoardList(resultBoard));
// resultBoard.setContentCnt(resultService.selectResultBoardListCnt(resultBoard));
resultBoard.setContentCnt(0);
resultBoard.setPaginationInfo();
mav.addObject("searchParams", resultBoard);
return mav;

View File

@ -15,27 +15,20 @@
<if test='wrtOrgan != null and wrtOrgan != ""'>
and a.wrt_organ = #{wrtOrgan}
</if>
<if test='contentTitle != null and contentTitle != ""'>
and a.content_title like '%'||#{contentTitle}||'%'
<if test='clearTitle != null and clearTitle != ""'>
and a.clear_title like '%'||#{clearTitle}||'%'
</if>
<if test='resultTitle != null and resultTitle != ""'>
and a.result_title like '%'||#{resultTitle}||'%'
</if>
<if test='resultState != null and resultState != ""'>
and a.result_state = #{resultState}
</if>
<if test='dateSelector == "resultDt"'>
<if test='startDate != null and startDate != ""'>
and a.result_dt >= #{startDate}::date
</if>
<if test='endDate != null and endDate != ""'>
and a.result_dt &lt;= #{endDate}::date+1
</if>
<if test='startDate != null and startDate != ""'>
and a.wrt_dt >= #{startDate}::date
</if>
<if test='dateSelector == "wrtDt"'>
<if test='startDate != null and startDate != ""'>
and a.wrt_dt >= #{startDate}::date
</if>
<if test='endDate != null and endDate != ""'>
and a.wrt_dt &lt;= #{endDate}::date+1
</if>
<if test='endDate != null and endDate != ""'>
and a.wrt_dt &lt;= #{endDate}::date+1
</if>
<if test="downOrganCdList != null">
and a.wrt_organ in

View File

@ -7,32 +7,32 @@ $(function(){
});
})
$(document).on('click', '#planTab', function (){
location.href = "/affairPlan/planMgt";
$(document).on('click', '#resultTab', function (){
location.href = "/affairResult/resultMgt";
})
$(document).on('click', '#stayTab', function (){
location.href = "/affairPlan/stayPage";
location.href = "/affairResult/stayPage";
})
$(document).on('click', '#commitTab', function (){
location.href = "/affairPlan/commitPage";
location.href = "/affairResult/commitPage";
})
$(document).on('click', '#addPlanBtn', function (){
getPlanEditModal(null)
$(document).on('click', '#addResultBtn', function (){
getResultEditModal(null)
})
$(document).on('click', '#editPlanBtn', function (){
$("#planViewModal").modal('hide');
getPlanEditModal(Number($("#planViewBody").find("[name='planKey']").val()));
$(document).on('click', '#editResultBtn', function (){
$("#resultViewModal").modal('hide');
getResultEditModal(Number($("#resultViewBody").find("[name='resultKey']").val()));
})
$(document).on('click', '#planAddBtn', function (){
$("#planDiv").append("<input type='text' class='form-control' name='planInfos'>")
$(document).on('click', '#resultAddBtn', function (){
$("#resultDiv").append("<input type='text' class='form-control' name='resultInfos'>")
})
$(document).on('click', '#detailPlanAddBtn', function (){
const detailPlanDiv = $("#detailPlanDiv");
detailPlanDiv.append("<textarea type='text' name='detailPlanInfos'></textarea>");
const lastAppendTextarea = detailPlanDiv.children()[detailPlanDiv.children().length-1];
$(document).on('click', '#detailResultAddBtn', function (){
const detailResultDiv = $("#detailResultDiv");
detailResultDiv.append("<textarea type='text' name='detailResultInfos'></textarea>");
const lastAppendTextarea = detailResultDiv.children()[detailResultDiv.children().length-1];
$(lastAppendTextarea).summernote({
lang:'ko-KR',
height: 120,
@ -47,30 +47,30 @@ $(document).on('click', '#detailPlanAddBtn', function (){
});
})
$(document).on('click', '#savePlanBtn', function (){
savePlan('DST002')
$(document).on('click', '#saveResultBtn', function (){
saveResult('DST002')
})
$(document).on('click', '#saveTempBtn', function (){
savePlan('DST001')
saveResult('DST001')
})
$(document).on('click', '.planTr', function (){
$(document).on('click', '.resultTr', function (){
$(".trChkBox").prop("checked", false);
$(this).find(".trChkBox").prop("checked", true);
getPlanViewModal(Number($(this).find(".planKey").val()));
getResultViewModal(Number($(this).find(".resultKey").val()));
})
$(document).on('click', '.apprvBtn', function (){
$("#apprvFormPlanKey").val($("#viewModalPlanKey").val());
$("#viewModalApprvValue").val($(this).attr("data-planstate"));
$("#apprvFormResultKey").val($("#viewModalResultKey").val());
$("#viewModalApprvValue").val($(this).attr("data-resultstate"));
if(confirm($(this).val()+"하시겠습니까?")){
const formData = new FormData($("#apprvForm")[0]);
contentFade("in")
$.ajax({
type : 'POST',
data : formData,
url : "/affairPlan/planStateChange",
url : "/affairResult/resultStateChange",
processData: false,
contentType: false,
beforeSend: function (xhr){
@ -78,7 +78,7 @@ $(document).on('click', '.apprvBtn', function (){
},
success : function(result) {
alert("저장되었습니다")
getPlanViewModal(result);
getResultViewModal(result);
contentFade("out");
},
error : function(xhr, status) {
@ -89,15 +89,15 @@ $(document).on('click', '.apprvBtn', function (){
}
})
function getPlanViewModal(planKey){
function getResultViewModal(resultKey){
$.ajax({
url: '/affairPlan/planViewModal',
data: {planKey: planKey},
url: '/affairResult/resultViewModal',
data: {resultKey: resultKey},
type: 'GET',
dataType:"html",
success: function(html){
$("#planViewBody").empty().append(html)
$("#planViewModal").modal('show');
$("#resultViewBody").empty().append(html)
$("#resultViewModal").modal('show');
},
error:function(){
@ -105,20 +105,20 @@ function getPlanViewModal(planKey){
});
}
function getPlanEditModal(planKey){
function getResultEditModal(resultKey){
$.ajax({
url: '/affairPlan/planEditModal',
data: {planKey: planKey},
url: '/affairResult/resultEditModal',
data: {resultKey: resultKey},
type: 'GET',
dataType:"html",
success: function(html){
$("#planEditModalContent").empty().append(html)
$("#planEditModal").modal('show');
$("#planDt").datepicker({
$("#resultEditModalContent").empty().append(html)
$("#resultEditModal").modal('show');
$("#resultDt").datepicker({
format: "yyyy-mm-dd",
language: "ko"
});
$("[name='detailPlanInfos']").summernote({
$("[name='detailResultInfos']").summernote({
lang:'ko-KR',
height: 120,
disableDragAndDrop: true,
@ -137,12 +137,12 @@ function getPlanEditModal(planKey){
}
});
}
function savePlan(planState){
function saveResult(resultState){
if(contentCheck()){
if(confirm("저장하시겠습니까?")){
$("#planState").val(planState);
$("#resultState").val(resultState);
contentFade("in");
const formData = new FormData($("#planEditForm")[0]);
const formData = new FormData($("#resultEditForm")[0]);
for(const file of files) {
if(!file.isDelete)
formData.append('uploadFiles', file, file.name);
@ -153,14 +153,14 @@ function savePlan(planState){
$.ajax({
type : 'POST',
data : formData,
url : "/affairPlan/savePlan",
url : "/affairResult/saveResult",
processData: false,
contentType: false,
success : function(result) {
alert("저장되었습니다.");
contentFade("out");
$("#planEditModal").modal('hide');
getPlanViewModal(result);
$("#resultEditModal").modal('hide');
getResultViewModal(result);
},
error : function(xhr, status) {
alert("저장에 실패하였습니다.")
@ -178,7 +178,7 @@ function contentCheck(){
alert("제목을 입력해주세요.")
flag = false;
}
if(!$("#planDt").val()){
if(!$("#resultDt").val()){
alert("시행일자를 입력해주세요.")
flag = false;
}

View File

@ -112,12 +112,9 @@
<td th:text="${plan.wrtUserNm}"></td>
<td th:text="${#temporals.format(plan.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
<td th:text="${plan.fileCnt eq null?'파일 없음':#strings.concat(plan.fileCnt,' 건')}"></td>
<td th:if="${plan.planState eq 'DST001'}">임시저장</td>
<td th:if="${plan.planState eq 'DST002'}">결재대기</td>
<td th:if="${plan.planState eq 'DST003'}">계장반려</td>
<td th:if="${plan.planState eq 'DST004'}">계장결재</td>
<td th:if="${plan.planState eq 'DST005'}">부장반려</td>
<td th:if="${plan.planState eq 'DST006'}">부장결재</td>
<th:block th:each="commonCode:${session.commonCode.get('DST')}">
<td th:if="${plan.planState eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
</th:block>
</tr>
</tbody>
</table>

View File

@ -1,91 +1,111 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="modal-header">
<h5 class="modal-title" id="planEditModalLabel" th:text="${plan.planKey eq null?'월간 계획 작성':'월간 계획 수정'}"></h5>
<h5 class="modal-title" id="resultEditModalLabel" th:text="${result.resultKey eq null?'청산보고서 작성':'청산보고서 수정'}"></h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body" id="planEditBody">
<form action="#" method="post" id="planEditForm">
<div class="modal-body" id="resultEditBody">
<form action="#" method="post" id="resultEditForm">
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
<input type="hidden" name="planKey" th:value="${plan.planKey}">
<input type="hidden" name="wrtOrgan" th:value="${plan.wrtOrgan}">
<input type="hidden" name="wrtPart" th:value="${plan.wrtPart}">
<input type="hidden" name="wrtUserSeq" th:value="${plan.wrtUserSeq}">
<input type="hidden" name="planState" id="planState" th:value="${plan.planState}">
<div class="mb-3 row">
<label for="wrtUserNm" class="col-sm-2 col-form-label text-center">작성자</label>
<div class="col-sm-2">
<input type="text" class="form-control" id="wrtUserNm" name="wrtUserNm" th:value="${plan.wrtUserNm}" 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(plan.wrtDt, 'yyyy-MM-dd HH:mm')}" readonly>
</div>
<label for="planDt" class="col-sm-2 col-form-label text-center">시행일자</label>
<div class="col-sm-2">
<input type="text" class="form-control" id="planDt" name="planDt" th:value="${#temporals.format(plan.planDt, 'yyyy-MM-dd')}" autocomplete="off">
</div>
</div>
<div class="mb-3 row">
<label for="contentTitle" class="col-sm-2 col-form-label text-center">제목</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="contentTitle" name="contentTitle" th:value="${plan.contentTitle}">
</div>
</div>
<div class="mb-3 row justify-content-center">
<label for="planDiv" class="col-sm-2 col-form-label text-center">주요 사업계획</label>
<div class="col-sm-10" id="planDiv">
<th:block th:if="${plan.planKey eq null}">
<input type='text' class='form-control' name='planInfos'>
</th:block>
<th:block th:each="infoList:${plan.mainInfoList}">
<th:block th:if="${infoList.planType eq 'S'}">
<input type="text" class="form-control" name="planInfos" th:value="${infoList.planInfo}">
</th:block>
</th:block>
</div>
<div class="col-sm-auto">
<button type="button" class="btn btn-sm btn-outline-primary" id="planAddBtn"><i class="bi bi-plus-lg"></i></button>
</div>
</div>
<div class="mb-3 row justify-content-center">
<label for="detailPlanDiv" class="col-sm-2 col-form-label text-center">사업개요 및 추진계획</label>
<div class="col-sm-10" id="detailPlanDiv">
<th:block th:if="${plan.planKey eq null}">
<textarea type='text' name='detailPlanInfos'></textarea>
</th:block>
<th:block th:each="infoList:${plan.mainInfoList}">
<th:block th:if="${infoList.planType eq 'D'}">
<textarea type='text' name='detailPlanInfos' th:utext="${infoList.planInfo}"></textarea>
</th:block>
</th:block>
</div>
<div class="col-sm-auto">
<button type="button" class="btn btn-sm btn-outline-primary" id="detailPlanAddBtn"><i class="bi bi-plus-lg"></i></button>
</div>
</div>
<div class="row mb-3">
<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(plan.fileList)}">
<br>파일을 업로드 해주세요.
</th:block>
<th:block th:unless="${#arrays.isEmpty(plan.fileList)}">
<div class='row-col-6' th:each="planFile:${plan.fileList}">
<span th:data-fileseq="${planFile.fileSeq}" th:text="|${planFile.origNm}.${planFile.fileExtn} ${planFile.fileSize}|"></span>
<a href='#' class='uploadedFileDelete text-danger text-decoration-none'>삭제</a>
<input type="hidden" name="resultKey" th:value="${result.resultKey}">
<input type="hidden" name="wrtOrgan" th:value="${result.wrtOrgan}">
<input type="hidden" name="wrtPart" th:value="${result.wrtPart}">
<input type="hidden" name="wrtUserSeq" th:value="${result.wrtUserSeq}">
<input type="hidden" name="resultState" id="resultState" th:value="${result.resultState}">
<ul class="nav nav-tabs" id="userTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="clearReportTab" data-bs-toggle="tab" data-bs-target="#clearReportTabPanel" type="button" role="tab" aria-controls="clearReportTabPanel" aria-selected="true">청산보고서</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="resultReportTab" data-bs-toggle="tab" data-bs-target="#resultReportTabPanel" type="button" role="tab" aria-controls="resultReportTabPanel" aria-selected="false">결과보고서</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="affairListTab" data-bs-toggle="tab" data-bs-target="#affairListTabPanel" type="button" role="tab" aria-controls="affairListTabPanel" aria-selected="false">견문목록&증빙자료</button>
</li>
</ul>
<div class="tab-content border border-top-0" id="configInfo">
<div class="tab-pane fade p-2 show active" id="clearReportTabPanel" role="tabpanel" aria-labelledby="clearReportTab" tabindex="0">
<div class="mb-3 row">
<label for="wrtUserNm" 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="wrtUserNm" name="wrtUserNm" th:value="${result.wrtUserNm}" 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="wrtDt" name="wrtDt" th:value="${#temporals.format(result.wrtDt, 'yyyy-MM-dd HH:mm')}" readonly>
</div>
<label for="wrtDt" class="col-sm-1 col-form-label col-form-label-sm text-center">사용기간</label>
<div class="col-sm-3">
<div class="input-group w-auto input-daterange" id="dateSelectorDiv">
<input type="text" class="form-control form-control-sm" id="wrtDt" name="wrtDt" th:value="${#temporals.format(result.wrtDt, 'yyyy-MM-dd')}" readonly>
<input type="text" class="form-control form-control-sm" id="wrtDt" name="wrtDt" th:value="${#temporals.format(result.wrtDt, 'yyyy-MM-dd')}" readonly>
</div>
</th:block>
</div>
</div>
<div class="mb-3 row">
<label for="contentTitle" 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="contentTitle" name="clearTitle" th:value="${result.clearTitle}">
</div>
</div>
<div class="mb-3 row">
<label for="wrtUserNm" class="col-sm-1 col-form-label col-form-label-sm text-center">사업기간</label>
<div class="col-sm-3">
<div class="input-group w-auto input-daterange" id="dateSelectorDiv">
<input type="text" class="form-control form-control-sm" id="wrtDt" name="wrtDt" th:value="${#temporals.format(result.wrtDt, 'yyyy-MM-dd')}" readonly>
<input type="text" class="form-control form-control-sm" id="wrtDt" name="wrtDt" th:value="${#temporals.format(result.wrtDt, 'yyyy-MM-dd')}" readonly>
</div>
</div>
<label for="wrtDt" class="col-sm-1 col-form-label col-form-label-sm text-center">계획금액</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="planPrice" name="wrtDt">
</div>
<label for="wrtDt" class="col-sm-1 col-form-label col-form-label-sm text-center">집행액</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="usePrice" name="wrtDt">
</div>
</div>
<div class="mb-3 row justify-content-center">
<label for="detailResultDiv" class="col-sm-1 col-form-label col-form-label-sm text-center">세부<br>집행내역</label>
<div class="col-sm-11" id="detailResultDiv">
<th:block th:if="${result.resultKey eq null}">
<textarea type='text' name='detailResultInfos'></textarea>
</th:block>
</div>
<div class="col-sm-auto">
<button type="button" class="btn btn-sm btn-outline-primary" id="detailResultAddBtn"><i class="bi bi-plus-lg"></i></button>
</div>
</div>
<div class="row mb-3">
<label for="fileInputer" class="col-sm-1 col-form-label col-form-label-sm text-center">업로드<br>자료</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(result.fileList)}">
<br>파일을 업로드 해주세요.
</th:block>
<th:block th:unless="${#arrays.isEmpty(result.fileList)}">
<div class='row-col-6' th:each="resultFile:${result.fileList}">
<span th:data-fileseq="${resultFile.fileSeq}" th:text="|${resultFile.origNm}.${resultFile.fileExtn} ${resultFile.fileSize}|"></span>
<a href='#' class='uploadedFileDelete text-danger text-decoration-none'>삭제</a>
</div>
</th:block>
</div>
</div>
<input type="file" class="d-none" id="fileInputer" multiple>
</div>
</div>
<input type="file" class="d-none" id="fileInputer" multiple>
<div class="tab-pane fade p-2" id="resultReportTabPanel" role="tabpanel" aria-labelledby="resultReportTab" tabindex="0">
</div>
<div class="tab-pane fade p-2" id="affairListTabPanel" role="tabpanel" aria-labelledby="affairListTab" tabindex="0">
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
<button type="button" class="btn btn-warning" id="saveTempBtn">임시저장</button>
<button type="button" class="btn btn-primary" id="savePlanBtn">저장</button>
<button type="button" class="btn btn-primary" id="saveResultBtn">저장</button>
</div>

View File

@ -3,12 +3,12 @@
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/igActivities/fpiMgt/plan/planMgt.js}"></script>
<script type="text/javascript" th:src="@{/js/igActivities/fpiMgt/result/resultMgt.js}"></script>
</th:block>
<div layout:fragment="content">
<main class="pt-3">
<p>첩보수집활동 > 외사경찰 견문관리 > 계획수립</p>
<h4>계획수립</h4>
<p>첩보수집활동 > 외사경찰 견문관리 > 청산보고서</p>
<h4>청산보고서</h4>
<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">
@ -49,26 +49,21 @@
</select>
</div>
<div class="col-auto">
<input type="text" class="form-control form-control-sm" placeholder="제목" name="contentTitle" th:value="${searchParams.contentTitle}">
<input type="text" class="form-control form-control-sm" placeholder="청산보고서 제목" name="clearTitle" th:value="${searchParams.clearTitle}">
</div>
<div class="col-auto" th:if="${accessAuth eq 'ACC003'}">
<input type="text" class="form-control form-control-sm" placeholder="작성자" name="wrtUserNm" th:value="${searchParams.wrtUserNm}">
</div>
<div class="col-auto">
<select class="form-select form-select-sm" name="planState">
<select class="form-select form-select-sm" name="resultState">
<option value="">상태 선택</option>
<th:block th:each="commonCode:${session.commonCode.get('DST')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.planState}"></option>
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.resultState}"></option>
</th:block>
</select>
</div>
<div class="col-4">
<div class="input-group w-auto input-daterange" id="dateSelectorDiv">
<select class="form-select form-select-sm" name="dateSelector">
<option value="">조건선택</option>
<option value="planDt" th:selected="${searchParams.dateSelector eq 'planDt'}">시행일</option>
<option value="wrtDt" th:selected="${searchParams.dateSelector eq 'wrtDt'}">작성일</option>
</select>
<input type="text" class="form-control form-control-sm" id="startDate" name="startDate" placeholder="시작일" autocomplete="off" readonly th:value="${searchParams.startDate}">
<input type="text" class="form-control form-control-sm" id="endDate" name="endDate" placeholder="종료일" autocomplete="off" readonly th:value="${searchParams.endDate}">
</div>
@ -98,7 +93,7 @@
</tr>
</thead>
<tbody>
<tr class="planTr" th:each="plan:${planList}">
<!--<tr class="planTr" th:each="plan:${planList}">
<input type="hidden" class="planKey" th:value="${plan.planKey}">
<td><input type="checkbox" class="trChkBox"></td>
<td th:text="${plan.contentTitle}"></td>
@ -118,7 +113,7 @@
<td th:if="${plan.planState eq 'DST004'}">계장결재</td>
<td th:if="${plan.planState eq 'DST005'}">부장반려</td>
<td th:if="${plan.planState eq 'DST006'}">부장결재</td>
</tr>
</tr>-->
</tbody>
</table>
</div>
@ -150,7 +145,7 @@
</nav>
</div>
<div class="col-auto">
<input type="button" class="btn btn-success" value="등록" id="addPlanBtn" th:unless="${accessAuth eq 'ACC001'}">
<input type="button" class="btn btn-success" value="등록" id="addResultBtn" th:unless="${accessAuth eq 'ACC001'}">
</div>
</div>
</div>
@ -163,16 +158,16 @@
</div>
</main>
<div class="modal fade" id="planEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="planEditModalLabel" aria-hidden="true">
<div class="modal fade" id="resultEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="resultEditModalLabel" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-scrollable">
<div class="modal-content" id="planEditModalContent">
<div class="modal-content" id="resultEditModalContent">
</div>
</div>
</div>
<div class="modal fade" id="planViewModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="planViewModalLabel" aria-hidden="true">
<div class="modal fade" id="resultViewModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="resultViewModalLabel" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-scrollable">
<div class="modal-content" id="planViewBody">
<div class="modal-content" id="resultViewBody">
</div>
</div>