수정요청사항 작업중.

master
강석 최 2023-01-09 18:46:11 +09:00
parent efddb3c7b7
commit ff4bfb9dee
15 changed files with 191 additions and 137 deletions

View File

@ -11,6 +11,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.core.session.SessionRegistryImpl;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.crypto.password.Pbkdf2PasswordEncoder;
import org.springframework.security.web.AuthenticationEntryPoint;
@ -111,6 +112,14 @@ public class SecurityConfig{
@Bean
protected SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.authorizeRequests() // 페이지 권한 설정
.antMatchers(
"/css/**",
"/img/**",
"/js/**",
"/vendor/**",
"/login",
"/Crosseditor/uploadImg"
).permitAll() // 권한 없이 접근 허용
.antMatchers(
"/dashboard",
"/myInfo/**",
@ -140,14 +149,6 @@ public class SecurityConfig{
"/organMgt/**",
"/menuMgt/**"
).hasRole(Role.ADMIN.name()) // ADMIN 접근 허용
.antMatchers(
"/login",
"/css/**",
"/img/**",
"/js/**",
"/vendor/**",
"/Crosseditor/uploadImg"
).permitAll() // 로그인 페이지는 권한 없이 접근 허용
.and() // 로그인 설정
.formLogin().loginPage("/login") // Custom login form 사용
.failureHandler(loginFailureHandler()) // 로그인 실패시 동작 수행
@ -169,6 +170,7 @@ public class SecurityConfig{
http.headers().frameOptions().sameOrigin();
// 나모에디터 이미지 업로드시 csrf 토큰을 추가할 수 없어서 예외처리.
http.csrf().ignoringAntMatchers("/Crosseditor/uploadImg");
return http.build();
}

View File

@ -98,7 +98,29 @@ public class CodeMgtService{
}
public String searchCodeToCategoryAndValue(String categoryCd, String value){
CodeMgt code = codeMgtRepository.findByCategoryCdAndItemValue(categoryCd, value).orElse(null);
return code==null?null:code.getItemCd();
if(code==null){
List<CodeMgt> codeList = codeMgtRepository.findByCategoryCdOrderByItemCdAsc(categoryCd);
Integer codeNum = 1;
String itemCd="";
for(CodeMgt savedCode : codeList){
if(!savedCode.getItemValue().equals("기타") && !savedCode.getItemValue().equals("직접입력")){
codeNum = Integer.parseInt(savedCode.getItemCd().replace(categoryCd, ""));
}
if(codeNum==1){
itemCd = savedCode.getItemCd().replace(categoryCd, "").replace("1", "");
}
}
codeNum++;
itemCd = categoryCd+(itemCd.substring((int)Math.log10((double)codeNum)))+codeNum;
CodeMgt newCode = new CodeMgt();
newCode.setCategoryCd(categoryCd);
newCode.setItemCd(itemCd);
newCode.setItemValue(value);
newCode.setUseChk("T");
codeMgtRepository.save(newCode);
return newCode.getItemCd();
}
return code.getItemCd();
}
public List<CodeCatg> selectAllCategoryList() {

View File

@ -185,6 +185,7 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관
affairBoard.setWrtPart(loginUser.getOfcCd());
affairBoard.setWrtUserSeq(loginUser.getUserSeq());
affairBoard.setWrtUserNm(loginUser.getUserNm());
affairBoard.setWrtUserGrd(loginUser.getTitleCd());
affairBoard.setWrtDt(LocalDateTime.now());
affairBoard.setReportDt(LocalDate.now());
}

View File

@ -61,6 +61,8 @@ public class AffairBoard extends BaseModel {
private String viewStatus;
@Column(name = "affair_category")
private String affairCategory;
@Column(name = "wrt_user_grd")
private String wrtUserGrd;
@Transient
private String organUp;

File diff suppressed because one or more lines are too long

View File

@ -19,24 +19,6 @@
background-color: #ffffff;
}
#fadeSearchDiv{
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background-color: #00000050;
z-index: 2090;
}
#fadeSearchDiv > div{
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
background-color: #ffffff;
}
#alarmCntDiv{
width: 16px;
height: 16px;

View File

@ -8,15 +8,11 @@ function contentFade(action){
$("#fadeDiv").hide()
}
}
function searchFade(action){
if(action === "in"){
$("#fadeSearchDiv").show()
}else{
$("#fadeSearchDiv").hide()
$(document).on('mouseenter', '.leftMenuItem', function (e){
if($(this).attr("aria-expanded")==='false'){
$(this).click();
}
}
})
$(document).on('click', '#bellIcon', function (){
const alarmListDiv = $("#alarmListDiv")[0];
if(alarmListDiv.className.includes('d-none')){

View File

@ -77,7 +77,7 @@ $(document).on('click', '#sailorAddBtn', function (e){
e.preventDefault();
$('#sailorDiv').append(
'<div class="row">'
+ '<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 fw-bold">선원이름</label>'
+ '<div class="col-sm-2">'
+ '<input class="form-control form-control-sm" name="sailorNameKr">'
+ '</div>'

View File

@ -79,19 +79,19 @@ $(document).on('click', '#spiAddBtn', function (){
$("#spiDiv").append(
'<div class="row dynamic spi-list pb-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 fw-bold">성별</label>'
+ '<div class="col-sm-2" id="sexFormDiv">'
+ '<select class="form-select form-select-sm" name="sex">'
+ sex
+ '</select>'
+ '</div>'
+ '<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 fw-bold">나이</label>'
+ '<div class="col-sm-2" id="ageFormDiv">'
+ '<select class="form-select form-select-sm" name="age">'
+ age
+ '</select>'
+ '</div>'
+ '<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 fw-bold">국적</label>'
+ '<div class="col-sm-2" id="countryFormDiv">'
+ '<select class="form-select form-select-sm country" name="country">'
+ country
@ -148,7 +148,7 @@ $(document).on('change', '#crimeType', function (){
if ($(this).val() == 'CTH2') {
makeArrestAreaDiv('장소');
$('#smugglingAmountDiv').append(
'<label class="col-sm-2 col-form-label col-form-label-sm text-center">밀수입출 품목</label>'
'<label class="col-sm-2 col-form-label col-form-label-sm text-center fw-bold">밀수입출 품목</label>'
+ '<div class="col-sm-2">'
+ '<select class="form-select form-select-sm" name="smuggledGoods" id="smugglingAmount">'
+ '<option>선택</option>'
@ -156,11 +156,11 @@ $(document).on('change', '#crimeType', function (){
+ '<option value="etc">기타</option>'
+ '</select>'
+ '</div>'
+ '<label class="col-sm-2 col-form-label col-form-label-sm text-center">밀수가액</label>'
+ '<label class="col-sm-2 col-form-label col-form-label-sm text-center fw-bold">밀수가액</label>'
+ '<div class="col-sm-2">'
+ '<input class="form-control form-control-sm" type="number" min="0" name="smugglingAmount">'
+ '</div>'
+ '<label class="col-sm-2 col-form-label col-form-label-sm text-center">단속 인원(경찰관)</label>'
+ '<label class="col-sm-2 col-form-label col-form-label-sm text-center fw-bold">단속 인원(경찰관)</label>'
+ '<div class="col-sm-2">'
+ '<input class="form-control form-control-sm" type="number" min="0" name="caseNum">'
+ '</div>'

View File

@ -56,7 +56,7 @@ $(document).on('change', '#autoDeleteSelector', function (){
})
$(document).on('click', '#saveAffairBtn', function (){
saveAffair('DST002')
saveAffair($(this).attr("data-status"))
})
$(document).on('click', '#saveTempBtn', function (){
saveAffair('DST001')
@ -94,6 +94,7 @@ $(document).on('click', '.apprvBtn', function (){
$(document).on('click', '#tableApprvBtn', function (){
const ratingList = [];
const apprvAuth = $(this).attr("data-apprvauth")
let affairRateFlag = true;
$.each($(".apprvTd"), function (idx, el) {
if (apprvAuth === "APC003" || apprvAuth === "APC004") {
const chkbox = $(el).find(".apprvChkbox:checked")
@ -113,12 +114,21 @@ $(document).on('click', '#tableApprvBtn', function (){
if(selectorValue !== ""){
affairRating["affairRate"] = selectorValue;
affairRating["organUp"] = $(el).find(".organUpChkBox").prop("checked")?"T":"F";
}else{
if(chkbox.val()==="DST006"){
//부장승인 & 평가 미입력.
affairRateFlag = false;
}
}
ratingList.push(affairRating);
}
}
})
if(affairRateFlag){
affairStateChange(ratingList);
}else{
alert("평가가 선택되지 않은 항목이 있습니다.")
}
})
$(document).on('change', '.apprvChkbox', function (){
@ -182,8 +192,12 @@ function getAffairEditModal(affairKey){
});
}
function saveAffair(affairStatus){
if(contentCheck()){
if(confirm("저장하시겠습니까?")){
let flag = true;
if(affairStatus!=="DST001"){
flag = contentCheck()
}
if(flag){
$("#affairStatus").val(affairStatus);
contentFade("in");
const formData = new FormData($("#affairEditForm")[0]);
@ -242,35 +256,33 @@ function affairStateChange(ratingList){
})
}
function contentCheck(){
let flag = true;
if(!$("#title").val()){
alert("제목을 입력해주세요.")
flag = false;
return false;
}
if(!$("#affairType1").val()){
alert("분야1을 입력해주세요.")
flag = false;
return false;
}
if(!$("#affairType2").val()){
alert("분야2을 입력해주세요.")
flag = false;
return false;
}
if(!$("#affairType3").val()){
alert("분야3을 입력해주세요.")
flag = false;
return false;
}
if(!$("#affairType4").val()){
alert("분야4을 입력해주세요.")
flag = false;
return false;
}
if(!$("#viewStatus").val()){
alert("공개여부를 입력해주세요.")
flag = false;
return false;
}
if(!$("#hashTags").val()){
alert("해시태그를 입력해주세요.")
flag = false;
return false;
}
flag = fileCheck(flag, files);
return flag;
return fileCheck(true, files);
}

View File

@ -6,7 +6,7 @@
<li class="mb-1" th:each="firstMenu:${session.menuList}">
<th:block th:each="cat1Code:${session.commonCode.get('CAT1')}">
<th:block th:if="${cat1Code.itemCd eq firstMenu.cat1Cd}">
<button class="btn btn-toggle align-items-center rounded collapsed text-light"
<button class="btn btn-toggle align-items-center rounded collapsed leftMenuItem text-light"
data-bs-toggle="collapse" aria-expanded="false"
th:data-bs-target="'#collapse'+${cat1Code.itemCd}" th:text="${cat1Code.itemValue}">
</button>
@ -18,7 +18,7 @@
<ul class="list-unstyled ps-0">
<li class="mb-1">
<th:block th:unless="${#lists.isEmpty(secondMenu.childList)}">
<button class="btn btn-toggle align-items-center rounded collapsed text-light"
<button class="btn btn-toggle align-items-center rounded collapsed leftMenuItem text-light"
data-bs-toggle="collapse" aria-expanded="false" th:onclick="location.href='#'"
th:data-bs-target="'#collapse'+${cat2Code.itemCd}" th:text="${cat2Code.itemValue}">
</button>

View File

@ -13,6 +13,7 @@
<input type="hidden" name="wrtOrgan" th:value="${affair.wrtOrgan}">
<input type="hidden" name="wrtPart" th:value="${affair.wrtPart}">
<input type="hidden" name="wrtUserSeq" th:value="${affair.wrtUserSeq}">
<input type="hidden" name="wrtUserGrd" th:value="${affair.wrtUserGrd}">
<input type="hidden" name="affairStatus" id="affairStatus" th:value="${affair.affairStatus}">
<input type="hidden" name="wrtDt" id="wrtDt" th:value="${#temporals.format(affair.wrtDt, 'yyyy-MM-dd HH:mm')}">
<div class="row mb-1">
@ -119,6 +120,8 @@
</div>
<div class="modal-footer bg-light">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
<th:block th:if="${affair.affairKey eq null or (affair.affairStatus eq 'DST001' or affair.affairStatus eq 'DST002')}">
<button type="button" class="btn btn-warning" id="saveTempBtn">임시저장</button>
<button type="button" class="btn btn-primary" id="saveAffairBtn">저장</button>
</th:block>
<button type="button" class="btn btn-primary" id="saveAffairBtn" th:data-status="${(affair.affairStatus eq 'DST004' or affair.affairStatus eq 'DST006')?affair.affairStatus:'DST002'}">저장</button>
</div>

View File

@ -130,6 +130,7 @@
<thead>
<tr class="table-secondary">
<th></th>
<th>문서번호</th>
<th>분야1</th>
<th>분야2</th>
<th>분야3</th>
@ -154,31 +155,46 @@
<tr class="affairTr" th:each="affair:${affairList}">
<input type="hidden" class="affairKey" th:value="${affair.affairKey}">
<td><input type="checkbox" class="trChkBox"></td>
<td th:text="|해양경찰청외사-${affair.affairKey}|"></td>
<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:if="${affair.affairType1 eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block>
</th:block>
</td>
<td>
<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:if="${affair.affairType2 eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block>
</th:block>
</td>
<td>
<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:if="${affair.affairType3 eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block>
</th:block>
</td>
<td>
<th:block th:each="commonCode:${session.commonCode.get('DC04')}">
<td th:if="${affair.affairType4 eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
<th:block th:if="${affair.affairType4 eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block>
</th:block>
</td>
<td th:text="${affair.title}"></td>
<td>
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
<td th:if="${affair.wrtOrgan eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
<th:block th:if="${affair.wrtOrgan eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block>
</th:block>
</td>
<td>
<th:block th:each="commonCode:${session.commonCode.get('OFC')}">
<td th:if="${affair.wrtPart eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
<th:block th:if="${affair.wrtPart eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block>
</th:block>
</td>
<td th:text="${affair.wrtUserNm}"></td>
<td th:text="${#temporals.format(affair.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
<td th:text="${affair.fileCnt eq null?'파일 없음':#strings.concat(affair.fileCnt,' 건')}"></td>
<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:if="${affair.affairStatus eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block>
</th:block>
</td>
<th:block th:if="${page eq 'stay'}">
<th:block th:if="${apprvAuth eq 'APC004' or apprvAuth eq 'APC003'}">
<td class="apprvTd">

View File

@ -17,17 +17,26 @@
<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">작성자</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${affair.wrtUserNm}"></label>
<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 fw-bold">문서번호</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="|해양경찰청외사-${affair.affairKey}|"></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="code:${session.commonCode.get('JT')}">
<th:block th:if="${code.itemCd eq affair.wrtUserGrd}" th:text="${code.itemValue}"></th:block>
</th:block>
<th:block th:text="${affair.wrtUserNm}"></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(affair.reportDt, 'yyyy-MM-dd')}"></label>
<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 fw-bold">공개여부</label>
<th:block th:each="code:${session.commonCode.get('AVS')}">
<th:block th:if="${code.itemCd eq affair.viewStatus}">
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${code.itemValue}"></label>
</th:block>
</th:block>
<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 fw-bold">상태</label>
<th:block th:each="code:${session.commonCode.get('DST')}">
<th:block th:if="${code.itemCd eq affair.affairStatus}">
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${code.itemValue}"></label>
@ -36,27 +45,27 @@
</div>
<hr>
<div class="row">
<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 fw-bold">제목</label>
<label class="col-sm-11 col-form-label col-form-label-sm text-start" th:text="${affair.title}"></label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">분야1</label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">분야1</label>
<th:block th:each="code:${session.commonCode.get('DC01')}">
<th:block th:if="${code.itemCd eq affair.affairType1}">
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${code.itemValue}"></label>
</th:block>
</th:block>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">분야2</label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">분야2</label>
<th:block th:each="code:${session.commonCode.get('DC02')}">
<th:block th:if="${code.itemCd eq affair.affairType2}">
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${code.itemValue}"></label>
</th:block>
</th:block>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">분야3</label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">분야3</label>
<th:block th:each="code:${session.commonCode.get('DC03')}">
<th:block th:if="${code.itemCd eq affair.affairType3}">
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${code.itemValue}"></label>
</th:block>
</th:block>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">분야4</label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">분야4</label>
<th:block th:each="code:${session.commonCode.get('DC04')}">
<th:block th:if="${code.itemCd eq affair.affairType4}">
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${code.itemValue}"></label>
@ -65,18 +74,18 @@
</div>
<hr>
<div class="row">
<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 fw-bold">내용</label>
<div class="col-sm-11 form-control-sm" id="contentDiv">
<div th:utext="${affair.content}"></div>
</div>
</div>
<hr>
<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 fw-bold">해시태그</label>
<label class="col-sm-11 col-form-label col-form-label-sm text-start" th:text="${affair.hashTags}"></label>
</div>
<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 fw-bold">비고</label>
<label class="col-sm-11 col-form-label col-form-label-sm text-start" th:text="${affair.etc}"></label>
</div>
</div>
@ -111,7 +120,7 @@
<hr>
<th:block th:each="rate:${affair.rateList}">
<div class="row py-1">
<label class="col-sm-1 col-form-label col-form-label-sm text-center">
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">
<th:block th:each="code:${session.commonCode.get('OG')}">
<th:block th:if="${code.itemCd eq rate.ratingOrgan}" th:text="${code.itemValue}"></th:block>
</th:block>
@ -121,24 +130,24 @@
<label class="col-sm-auto col-form-label col-form-label-sm text-center">결재정보가 없습니다.</label>
</div>
<div class="row" th:if="${rate.sectionApprv ne null}">
<label class="col-sm-auto col-form-label col-form-label-sm text-center">결재결과: </label>
<label class="col-sm-auto col-form-label col-form-label-sm text-center fw-bold">결재결과: </label>
<label class="col-sm-auto col-form-label col-form-label-sm text-start">
<th:block th:each="code:${session.commonCode.get('DST')}">
<th:block th:if="${code.itemCd eq rate.sectionApprv}" th:text="${code.itemValue}"></th:block>
</th:block>
</label>
<label class="col-sm-auto col-form-label col-form-label-sm text-center">결재자: </label>
<label class="col-sm-auto col-form-label col-form-label-sm text-center fw-bold">결재자: </label>
<label class="col-sm-auto col-form-label col-form-label-sm text-start" th:text="${rate.sectionNm}"></label>
<label class="col-sm-auto col-form-label col-form-label-sm text-center">결재일시: </label>
<label class="col-sm-auto col-form-label col-form-label-sm text-center fw-bold">결재일시: </label>
<label class="col-sm-auto col-form-label col-form-label-sm text-start" th:text="${#temporals.format(rate.sectionApprvDt, 'yyyy-MM-dd HH:mm:ss')}"></label>
</div>
<div class="row" th:if="${rate.sectionApprv ne null and !#strings.isEmpty(rate.sectionEtc)}">
<label class="col-sm-auto col-form-label col-form-label-sm text-center">기타의견: </label>
<label class="col-sm-auto col-form-label col-form-label-sm text-center fw-bold">기타의견: </label>
<label class="col-sm-auto col-form-label col-form-label-sm text-start" th:text="${rate.sectionEtc}"></label>
</div>
<div class="row" th:if="${rate.headApprv ne null}">
<th:block th:if="${rate.headApprv eq 'DST006'}">
<label class="col-sm-auto col-form-label col-form-label-sm text-center">견문평가: </label>
<label class="col-sm-auto col-form-label col-form-label-sm text-center fw-bold">견문평가: </label>
<label class="col-sm-auto col-form-label col-form-label-sm text-start">
<th:block th:each="code:${session.commonCode.get('AAR')}">
<th:block th:if="${code.itemCd eq rate.affairRate}" th:text="|${code.itemValue}${rate.organUp eq 'T'?'(상보)':''}|"></th:block>
@ -146,20 +155,20 @@
</label>
</th:block>
<th:block th:if="${rate.headApprv eq 'DST005'}">
<label class="col-sm-auto col-form-label col-form-label-sm text-center">결재결과: </label>
<label class="col-sm-auto col-form-label col-form-label-sm text-center fw-bold">결재결과: </label>
<label class="col-sm-auto col-form-label col-form-label-sm text-start">
<th:block th:each="code:${session.commonCode.get('DST')}">
<th:block th:if="${code.itemCd eq rate.headApprv}" th:text="${code.itemValue}"></th:block>
</th:block>
</label>
</th:block>
<label class="col-sm-auto col-form-label col-form-label-sm text-center">결재자: </label>
<label class="col-sm-auto col-form-label col-form-label-sm text-center fw-bold">결재자: </label>
<label class="col-sm-auto col-form-label col-form-label-sm text-start" th:text="${rate.headNm}"></label>
<label class="col-sm-auto col-form-label col-form-label-sm text-center">결재일시: </label>
<label class="col-sm-auto col-form-label col-form-label-sm text-center fw-bold">결재일시: </label>
<label class="col-sm-auto col-form-label col-form-label-sm text-start" th:text="${#temporals.format(rate.headApprvDt, 'yyyy-MM-dd HH:mm:ss')}"></label>
</div>
<div class="row" th:if="${rate.headApprv ne null and !#strings.isEmpty(rate.headEtc)}">
<label class="col-sm-auto col-form-label col-form-label-sm text-center">기타의견: </label>
<label class="col-sm-auto col-form-label col-form-label-sm text-center fw-bold">기타의견: </label>
<label class="col-sm-auto col-form-label col-form-label-sm text-start" th:text="${rate.headEtc}"></label>
</div>
</div>
@ -217,8 +226,16 @@
</div>
</div>
<div class="modal-footer bg-light">
<th:block th:unless="${affair.affairStatus eq 'DST004' or affair.affairStatus eq 'DST006'}"><!--승인 상태일때는 수정 불가-->
<th:block th:if="${userSeq eq affair.wrtUserSeq or accessAuth eq 'ACC003'}"><!--작성자일 경우 수정 허용--><!--관리자일 경우 수정 허용-->
<th:block th:unless="${affair.affairStatus eq 'DST004' or affair.affairStatus eq 'DST006'}">
<!--승인 상태일때는 수정 불가-->
<th:block th:if="${userSeq eq affair.wrtUserSeq or accessAuth eq 'ACC003'}">
<!--작성자일 경우 수정 허용--><!--관리자일 경우 수정 허용-->
<button type="button" class="btn btn-warning" id="editAffairBtn">수정</button>
</th:block>
</th:block>
<th:block th:if="${affair.affairStatus eq 'DST004' or affair.affairStatus eq 'DST006'}">
<!--승인 상태일때 본청 관리자 수정 허용-->
<th:block th:if="${userOrgan eq 'OG001' and accessAuth eq 'ACC003'}">
<button type="button" class="btn btn-warning" id="editAffairBtn">수정</button>
</th:block>
</th:block>

View File

@ -9,7 +9,7 @@
<div class="mb-3 mt-3 row">
<label for="dicCode" class="col-sm-2 col-form-label col-form-label-sm text-center ">공무원식별번호</label>
<div class="col-sm-3">
<input type="text" class="form-control form-control-sm" id="dicCode" name="dicCode" autocomplete="off" th:value="${userInfo.dicCode}">
<input type="text" class="form-control form-control-sm" id="dicCode" name="dicCode" autocomplete="off" th:value="${userInfo.dic}">
<label for="dicCode" style="font-size: 12px" th:text="${msg}"></label>
</div>
<button type="button" class="btn btn-sm btn-outline-primary col-sm-1" id="dicCodeSearchBtn">검색</button>