parent
9f810d14bb
commit
684848e43e
|
|
@ -43,9 +43,8 @@ public class AuthMgtController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/saveAuth")
|
@PostMapping("/saveAuth")
|
||||||
public String saveAuth(@RequestBody AuthMgt authMgt){
|
public void saveAuth(@RequestBody AuthMgt authMgt){
|
||||||
authMgtService.saveAuth(authMgt);
|
authMgtService.saveAuth(authMgt);
|
||||||
return "";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,10 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관
|
||||||
}else {
|
}else {
|
||||||
affairBoard.setRatingOrgan(loginUser.getOgCd());
|
affairBoard.setRatingOrgan(loginUser.getOgCd());
|
||||||
switch (apprvAuth) {
|
switch (apprvAuth) {
|
||||||
|
case "APC004APC001": // 계장대행+부장
|
||||||
|
case "APC003APC002": // 계장+부장대행
|
||||||
|
affairBoard.setQueryType("normalStayList");
|
||||||
|
break;
|
||||||
case "APC004": // 계장대행
|
case "APC004": // 계장대행
|
||||||
case "APC003": // 계장 // 결재대기 문서 조회
|
case "APC003": // 계장 // 결재대기 문서 조회
|
||||||
affairBoard.setAffairStatus("DST002");
|
affairBoard.setAffairStatus("DST002");
|
||||||
|
|
@ -75,6 +79,10 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관
|
||||||
}else{
|
}else{
|
||||||
affairBoard.setRatingOrgan(loginUser.getOgCd());
|
affairBoard.setRatingOrgan(loginUser.getOgCd());
|
||||||
switch (apprvAuth) {
|
switch (apprvAuth) {
|
||||||
|
case "APC004APC001": // 계장대행+부장
|
||||||
|
case "APC003APC002": // 계장+부장대행
|
||||||
|
affairBoard.setQueryType("normalCommitList");
|
||||||
|
break;
|
||||||
case "APC004": // 계장대행
|
case "APC004": // 계장대행
|
||||||
case "APC003": // 계장 // 계장반려, 계장승인 문서 조회
|
case "APC003": // 계장 // 계장반려, 계장승인 문서 조회
|
||||||
affairBoard.setQueryType("sectionCommitList");
|
affairBoard.setQueryType("sectionCommitList");
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,8 @@ public class MonitoringReport extends FileInfo {
|
||||||
|
|
||||||
@Transient
|
@Transient
|
||||||
private MultipartFile file;
|
private MultipartFile file;
|
||||||
|
@Transient
|
||||||
|
private Boolean saveFlag;
|
||||||
|
|
||||||
|
|
||||||
@Embeddable
|
@Embeddable
|
||||||
|
|
|
||||||
|
|
@ -38,11 +38,13 @@ import com.dbnt.faisp.main.fpiMgt.monitoring.repository.MonitoringResultInfoRepo
|
||||||
import com.dbnt.faisp.main.fpiMgt.monitoring.repository.MonitoringResultRepository;
|
import com.dbnt.faisp.main.fpiMgt.monitoring.repository.MonitoringResultRepository;
|
||||||
import com.dbnt.faisp.main.userInfo.model.UserAlarm;
|
import com.dbnt.faisp.main.userInfo.model.UserAlarm;
|
||||||
import com.dbnt.faisp.main.userInfo.service.UserAlarmService;
|
import com.dbnt.faisp.main.userInfo.service.UserAlarmService;
|
||||||
|
import com.dbnt.faisp.util.Utils;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
import org.apache.commons.fileupload.FileItem;
|
import org.apache.commons.fileupload.FileItem;
|
||||||
import org.apache.commons.fileupload.disk.DiskFileItem;
|
import org.apache.commons.fileupload.disk.DiskFileItem;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
@ -240,32 +242,44 @@ public class MonitoringService extends BaseService {
|
||||||
private void saveReportList(Integer mrKey, List<MonitoringReport> reportList){
|
private void saveReportList(Integer mrKey, List<MonitoringReport> reportList){
|
||||||
//파일삭제
|
//파일삭제
|
||||||
List<MonitoringReport> fileList = monitoringReportRepository.findByMrKey(mrKey);
|
List<MonitoringReport> fileList = monitoringReportRepository.findByMrKey(mrKey);
|
||||||
if(fileList != null) {
|
for(MonitoringReport savedReport : fileList){
|
||||||
for(MonitoringReport file: fileList){
|
for(MonitoringReport editReport: reportList){
|
||||||
if(file.getOrigNm() != null) {
|
if(!Utils.isEmpty(editReport.getConvNm()) && editReport.getConvNm().equals(savedReport.getConvNm())){
|
||||||
deleteStoredFile(new File(file.getSavePath(), file.getConvNm()));
|
savedReport.setSaveFlag(false);
|
||||||
|
int temp = editReport.getInfoSeq();
|
||||||
|
BeanUtils.copyProperties(savedReport, editReport);
|
||||||
|
editReport.setInfoSeq(temp);
|
||||||
|
break;
|
||||||
|
}else{
|
||||||
|
savedReport.setSaveFlag(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for(MonitoringReport savedReport: fileList){
|
||||||
monitoringReportRepository.deleteByMrKey(mrKey);
|
if(savedReport.getOrigNm() != null && savedReport.getSaveFlag()) {
|
||||||
for(MonitoringReport info: reportList){
|
deleteStoredFile(new File(savedReport.getSavePath(), savedReport.getConvNm()));
|
||||||
if(info.getFile() != null) {
|
}
|
||||||
MultipartFile file = info.getFile();
|
if(savedReport.getSaveFlag()){
|
||||||
String saveName = UUID.randomUUID().toString();
|
monitoringReportRepository.deleteById(new MonitoringReportId(savedReport.getMrKey(), savedReport.getInfoSeq()));
|
||||||
|
}
|
||||||
|
}
|
||||||
String path = locationPath+monitoringPath;
|
String path = locationPath+monitoringPath;
|
||||||
|
for(MonitoringReport report: reportList){
|
||||||
|
if(report.getFile() != null && report.getMrKey()==null) {
|
||||||
|
MultipartFile file = report.getFile();
|
||||||
|
String saveName = UUID.randomUUID().toString();
|
||||||
saveFile(file, new File(path+File.separator+saveName));
|
saveFile(file, new File(path+File.separator+saveName));
|
||||||
|
report.setConvNm(saveName);
|
||||||
String originalFilename = file.getOriginalFilename();
|
String originalFilename = file.getOriginalFilename();
|
||||||
int extnIdx = originalFilename.lastIndexOf(".");
|
int extnIdx = originalFilename.lastIndexOf(".");
|
||||||
info.setOrigNm(originalFilename.substring(0, extnIdx));
|
report.setOrigNm(originalFilename.substring(0, extnIdx));
|
||||||
info.setFileExtn(originalFilename.substring(extnIdx+1));
|
report.setFileExtn(originalFilename.substring(extnIdx+1));
|
||||||
info.setConvNm(saveName);
|
report.setFileSize(calculationSize(file.getSize()));
|
||||||
info.setFileSize(calculationSize(file.getSize()));
|
report.setSavePath(path);
|
||||||
info.setSavePath(path);
|
|
||||||
}
|
}
|
||||||
info.setMrKey(mrKey);
|
report.setMrKey(mrKey);
|
||||||
monitoringReportRepository.save(info);
|
|
||||||
}
|
}
|
||||||
|
monitoringReportRepository.saveAll(reportList);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<MonitoringResult> selectResultList(MonitoringResult mr) {
|
public List<MonitoringResult> selectResultList(MonitoringResult mr) {
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,14 @@
|
||||||
$(document).on('click', '.userInfoTr', function (){
|
$(document).on('click', '.userInfoTr', function (){
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/authMgt/authEditModal',
|
url: '/authMgt/authEditModal',
|
||||||
data: {userSeq: Number($(this).find(".userSeq").val())},
|
data: {
|
||||||
|
userSeq: Number($(this).find(".userSeq").val()),
|
||||||
|
userNm: $(this).find(".userNm").val()
|
||||||
|
},
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
dataType:"html",
|
dataType:"html",
|
||||||
success: function(html){
|
success: function(html){
|
||||||
$("#configInfo").empty().append(html)
|
$("#authEditModalContent").empty().append(html)
|
||||||
$("#accessTab").click();
|
$("#accessTab").click();
|
||||||
$("#authEditModal").modal('show');
|
$("#authEditModal").modal('show');
|
||||||
},
|
},
|
||||||
|
|
@ -16,42 +19,104 @@ $(document).on('click', '.userInfoTr', function (){
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '.radioTd', function (){
|
|
||||||
$(this).find('input').prop('checked', true);
|
|
||||||
})
|
|
||||||
$(document).on('click', '.selectTh', function (){
|
$(document).on('click', '.selectTh', function (){
|
||||||
const type = $(this).attr("data-type");
|
const type = $(this).attr("data-type");
|
||||||
const target = $(this).attr("data-target");
|
const target = $(this).attr("data-target");
|
||||||
if(target){
|
if(target){
|
||||||
|
$("."+type+"RadioEmpty").prop("checked", false)
|
||||||
$("."+type+"Radio"+target).prop("checked", true)
|
$("."+type+"Radio"+target).prop("checked", true)
|
||||||
|
switch (target) {
|
||||||
|
case "APC004":
|
||||||
|
$(".approvalRadioAPC003").prop("checked", false);
|
||||||
|
$(".approvalRadioAPC002").prop("checked", false);
|
||||||
|
break;
|
||||||
|
case "APC003":
|
||||||
|
$(".approvalRadioAPC004").prop("checked", false);
|
||||||
|
$(".approvalRadioAPC001").prop("checked", false);
|
||||||
|
break;
|
||||||
|
case "APC002":
|
||||||
|
$(".approvalRadioAPC004").prop("checked", false);
|
||||||
|
$(".approvalRadioAPC001").prop("checked", false);
|
||||||
|
break;
|
||||||
|
case "APC001":
|
||||||
|
$(".approvalRadioAPC003").prop("checked", false);
|
||||||
|
$(".approvalRadioAPC002").prop("checked", false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}else{
|
}else{
|
||||||
|
$(".approvalRadio").prop("checked", false)
|
||||||
$("."+type+"RadioEmpty").prop("checked", true)
|
$("."+type+"RadioEmpty").prop("checked", true)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
$(document).on('click', '.radioTd', function (event){
|
||||||
|
const chkbox = $(this).find('input');
|
||||||
|
if(event.target.type !== "checkbox"){
|
||||||
|
chkbox.prop('checked', !chkbox[0].checked);
|
||||||
|
}
|
||||||
|
apprvChkboxControl(chkbox[0]);
|
||||||
|
})
|
||||||
|
$(document).on('change', '.approvalRadioEmpty', function (){
|
||||||
|
apprvChkboxControl(this);
|
||||||
|
})
|
||||||
|
$(document).on('change', '.approvalRadio', function (){
|
||||||
|
apprvChkboxControl(this);
|
||||||
|
})
|
||||||
|
|
||||||
|
function apprvChkboxControl(target){
|
||||||
|
if(target.className === "approvalRadioEmpty"){
|
||||||
|
if(target.checked){
|
||||||
|
$(target).parents('tr').find('.approvalRadio').prop("checked", false);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if(target.checked){
|
||||||
|
const tr = $(target).parents('tr');
|
||||||
|
tr.find('.approvalRadioEmpty').prop("checked", false);
|
||||||
|
switch ($(target).val()) {
|
||||||
|
case "APC004":
|
||||||
|
tr.find(".approvalRadioAPC003").prop("checked", false);
|
||||||
|
tr.find(".approvalRadioAPC002").prop("checked", false);
|
||||||
|
break;
|
||||||
|
case "APC003":
|
||||||
|
tr.find(".approvalRadioAPC004").prop("checked", false);
|
||||||
|
tr.find(".approvalRadioAPC001").prop("checked", false);
|
||||||
|
break;
|
||||||
|
case "APC002":
|
||||||
|
tr.find(".approvalRadioAPC004").prop("checked", false);
|
||||||
|
tr.find(".approvalRadioAPC001").prop("checked", false);
|
||||||
|
break;
|
||||||
|
case "APC001":
|
||||||
|
tr.find(".approvalRadioAPC003").prop("checked", false);
|
||||||
|
tr.find(".approvalRadioAPC002").prop("checked", false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$(document).on('click', '#saveAuthBtn', function (){
|
$(document).on('click', '#saveAuthBtn', function (){
|
||||||
if(confirm("저장하시겠습니까?")){
|
if(confirm("저장하시겠습니까?")){
|
||||||
contentFade("in");
|
contentFade("in");
|
||||||
const userSeq = Number($("#userSeq").val());
|
const userSeq = Number($("#userSeq").val());
|
||||||
const accessConfigList = []
|
const accessConfigList = []
|
||||||
$("#accessEditTable").find('tbody').children().each(function (idx, tr){
|
$("#accessEditTable").find('tbody').children().each(function (idx, tr){
|
||||||
accessConfigList.push(
|
accessConfigList.push({
|
||||||
{
|
|
||||||
userSeq: userSeq,
|
userSeq: userSeq,
|
||||||
menuKey: Number($(this).find('.menuKey').val()),
|
menuKey: Number($(this).find('.menuKey').val()),
|
||||||
accessAuth: $(this).find('input:checked').val()
|
accessAuth: $(this).find('input:checked').val()
|
||||||
}
|
})
|
||||||
)
|
|
||||||
})
|
})
|
||||||
const approvalConfigList = []
|
const approvalConfigList = []
|
||||||
$("#approvalEditTable").find('input:checked').each(function (idx, tr){
|
$("#approvalEditTable").find('tbody').children().each(function (idx, tr){
|
||||||
approvalConfigList.push(
|
let apprvAuth = "";
|
||||||
{
|
$.each($(this).find("input:checked"), function (idx, input){
|
||||||
|
apprvAuth+=input.value;
|
||||||
|
})
|
||||||
|
approvalConfigList.push({
|
||||||
userSeq: userSeq,
|
userSeq: userSeq,
|
||||||
menuKey: Number($(this).parents('tr').find('.menuKey').val()),
|
menuKey: Number($(this).find('.menuKey').val()),
|
||||||
approvalAuth: $(this).val()
|
approvalAuth: apprvAuth
|
||||||
}
|
})
|
||||||
)
|
|
||||||
})
|
})
|
||||||
const authList = {};
|
const authList = {};
|
||||||
authList.accessConfigList = accessConfigList;
|
authList.accessConfigList = accessConfigList;
|
||||||
|
|
|
||||||
|
|
@ -227,6 +227,7 @@ function saveResult(mrState){
|
||||||
formData.append('reportList['+(idx)+'].contactDate', $(div).find(".contactDate").val());
|
formData.append('reportList['+(idx)+'].contactDate', $(div).find(".contactDate").val());
|
||||||
formData.append('reportList['+(idx)+'].writeDate', $(div).find(".writeDate").val());
|
formData.append('reportList['+(idx)+'].writeDate', $(div).find(".writeDate").val());
|
||||||
formData.append('reportList['+(idx)+'].reportTitle', $(div).find(".reportTitle").val());
|
formData.append('reportList['+(idx)+'].reportTitle', $(div).find(".reportTitle").val());
|
||||||
|
formData.append('reportList['+(idx)+'].convNm', $(div).find(".convNm").val());
|
||||||
if($(div).find(".file").val() != ""){
|
if($(div).find(".file").val() != ""){
|
||||||
formData.append('reportList['+(idx)+'].file', $(div).find(".file")[0].files[0]);
|
formData.append('reportList['+(idx)+'].file', $(div).find(".file")[0].files[0]);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,21 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||||
<input type="hidden" id="userSeq" th:value="${userInfo.userSeq}">
|
<div class="modal-header bg-dark">
|
||||||
<div class="tab-pane fade p-2 show active" id="accessTabPanel" role="tabpanel" aria-labelledby="accessTab" tabindex="0">
|
<h5 class="modal-title text-white" id="menuEditModalLabel" th:text="|${userInfo.userNm} 권한 편집|"></h5>
|
||||||
|
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<input type="hidden" id="userSeq" th:value="${userInfo.userSeq}">
|
||||||
|
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
||||||
|
<li class="nav-item" role="presentation">
|
||||||
|
<button class="nav-link active" id="accessTab" data-bs-toggle="tab" data-bs-target="#accessTabPanel" type="button" role="tab" aria-controls="accessTabPanel" aria-selected="true">메뉴</button>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item" role="presentation">
|
||||||
|
<button class="nav-link" id="approvalTab" data-bs-toggle="tab" data-bs-target="#approvalTabPanel" type="button" role="tab" aria-controls="approvalTabPanel" aria-selected="false">결재</button>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div class="tab-content bg-white border border-top-0" id="configInfo">
|
||||||
|
<div class="tab-pane fade p-2 show active" id="accessTabPanel" role="tabpanel" aria-labelledby="accessTab" tabindex="0">
|
||||||
<table class="table table-sm table-hover text-center" id="accessEditTable">
|
<table class="table table-sm table-hover text-center" id="accessEditTable">
|
||||||
<thead>
|
<thead>
|
||||||
<tr class="table-secondary">
|
<tr class="table-secondary">
|
||||||
|
|
@ -46,8 +60,8 @@
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-pane fade p-2" id="approvalTabPanel" role="tabpanel" aria-labelledby="approvalTab" tabindex="0">
|
<div class="tab-pane fade p-2" id="approvalTabPanel" role="tabpanel" aria-labelledby="approvalTab" tabindex="0">
|
||||||
<table class="table table-sm table-hover text-center" id="approvalEditTable">
|
<table class="table table-sm table-hover text-center" id="approvalEditTable">
|
||||||
<thead>
|
<thead>
|
||||||
<tr class="table-secondary">
|
<tr class="table-secondary">
|
||||||
|
|
@ -56,41 +70,41 @@
|
||||||
<th>소분류</th>
|
<th>소분류</th>
|
||||||
<th class="selectTh mouse-hover-clickable" data-type="approval">해제</th>
|
<th class="selectTh mouse-hover-clickable" data-type="approval">해제</th>
|
||||||
<th:block th:each="code:${session.commonCode.get('APC')}">
|
<th:block th:each="code:${session.commonCode.get('APC')}">
|
||||||
<th class="selectTh mouse-hover-clickable" data-type="approval" th:data-target="${code.itemCd}" th:text="${code.itemValue}"></th>
|
<th class="selectTh mouse-hover-clickable" data-type="approval" th:data-target="${code.itemCd}" th:utext="${#strings.replace(code.itemValue, '+', ',<br>')}"></th>
|
||||||
</th:block>
|
</th:block>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr th:each="approvalConfig:${userInfo.approvalConfigList}">
|
<tr th:each="approvalConfig:${userInfo.approvalConfigList}">
|
||||||
<input type="hidden" class="menuKey" th:value="${approvalConfig.menuKey}">
|
<input type="hidden" class="menuKey" th:value="${approvalConfig.menuKey}">
|
||||||
|
<td>
|
||||||
<th:block th:each="commonCode:${session.commonCode.get('CAT1')}">
|
<th:block th:each="commonCode:${session.commonCode.get('CAT1')}">
|
||||||
<th:block th:if="${commonCode.itemCd eq approvalConfig.cat1Cd}">
|
<th:block th:if="${commonCode.itemCd eq approvalConfig.cat1Cd}" th:text="${commonCode.itemValue}"></th:block>
|
||||||
<td th:text="${commonCode.itemValue}">.</td>
|
|
||||||
</th:block>
|
|
||||||
</th:block>
|
</th:block>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
<th:block th:each="commonCode:${session.commonCode.get('CAT2')}">
|
<th:block th:each="commonCode:${session.commonCode.get('CAT2')}">
|
||||||
<th:block th:if="${commonCode.itemCd eq approvalConfig.cat2Cd}">
|
<th:block th:if="${commonCode.itemCd eq approvalConfig.cat2Cd}" th:text="${commonCode.itemValue}"></th:block>
|
||||||
<td th:text="${commonCode.itemValue}">.</td>
|
|
||||||
</th:block>
|
|
||||||
</th:block>
|
|
||||||
<th:block th:if="${#strings.isEmpty(approvalConfig.cat3Cd)}">
|
|
||||||
<td></td>
|
|
||||||
</th:block>
|
</th:block>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
<th:block th:unless="${#strings.isEmpty(approvalConfig.cat3Cd)}" th:each="commonCode:${session.commonCode.get('CAT3')}">
|
<th:block th:unless="${#strings.isEmpty(approvalConfig.cat3Cd)}" th:each="commonCode:${session.commonCode.get('CAT3')}">
|
||||||
<th:block th:if="${commonCode.itemCd eq approvalConfig.cat3Cd}">
|
<th:block th:if="${commonCode.itemCd eq approvalConfig.cat3Cd}" th:text="${commonCode.itemValue}"></th:block>
|
||||||
<td th:text="${commonCode.itemValue}"></td>
|
|
||||||
</th:block>
|
</th:block>
|
||||||
</th:block>
|
|
||||||
<td class="radioTd">
|
|
||||||
<input type="radio" class="approvalRadioEmpty" th:name="${#strings.concat('approvalAuth',approvalConfig.menuKey)}" value="">
|
|
||||||
</td>
|
</td>
|
||||||
<th:block th:each="code:${session.commonCode.get('APC')}">
|
|
||||||
<td class="radioTd">
|
<td class="radioTd">
|
||||||
<input type="radio" th:class="${#strings.concat('approvalRadio', code.itemCd)}" th:name="${#strings.concat('approvalAuth',approvalConfig.menuKey)}" th:value="${code.itemCd}" th:checked="${code.itemCd eq approvalConfig.approvalAuth}">
|
<input type="checkbox" class="approvalRadioEmpty" th:name="${#strings.concat('approvalAuth',approvalConfig.menuKey)}" value="">
|
||||||
|
</td>
|
||||||
|
<td class="radioTd" th:each="code:${session.commonCode.get('APC')}">
|
||||||
|
<input type="checkbox" class="approvalRadio" th:classappend="${#strings.concat('approvalRadio', code.itemCd)}" th:name="${#strings.concat('approvalAuth',approvalConfig.menuKey)}" th:value="${code.itemCd}" th:checked="${approvalConfig.approvalAuth ne null && #strings.contains(approvalConfig.approvalAuth, code.itemCd)}">
|
||||||
</td>
|
</td>
|
||||||
</th:block>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer bg-light">
|
||||||
|
<button type="button" class="btn btn-primary" id="saveAuthBtn">저장</button>
|
||||||
</div>
|
</div>
|
||||||
</html>
|
</html>
|
||||||
|
|
@ -67,7 +67,6 @@
|
||||||
<table class="table table-sm table-hover table-bordered">
|
<table class="table table-sm table-hover table-bordered">
|
||||||
<thead>
|
<thead>
|
||||||
<tr class="table-secondary">
|
<tr class="table-secondary">
|
||||||
<th></th>
|
|
||||||
<th>소속</th>
|
<th>소속</th>
|
||||||
<th>부서</th>
|
<th>부서</th>
|
||||||
<th>계급</th>
|
<th>계급</th>
|
||||||
|
|
@ -79,9 +78,7 @@
|
||||||
<tbody class="table-group-divider">
|
<tbody class="table-group-divider">
|
||||||
<tr class="userInfoTr" th:each="userInfo:${userInfoList}">
|
<tr class="userInfoTr" th:each="userInfo:${userInfoList}">
|
||||||
<input type="hidden" class="userSeq" th:value="${userInfo.userSeq}">
|
<input type="hidden" class="userSeq" th:value="${userInfo.userSeq}">
|
||||||
<td>
|
<input type="hidden" class="userNm" th:value="${userInfo.userNm}">
|
||||||
<input type="checkbox" class="userInfoCheckBox" th:value="${userInfo.userSeq}">
|
|
||||||
</td>
|
|
||||||
<td>
|
<td>
|
||||||
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
|
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
|
||||||
<th:block th:if="${commonCode.itemCd == userInfo.ogCd}" th:text="${commonCode.itemValue}"></th:block>
|
<th:block th:if="${commonCode.itemCd == userInfo.ogCd}" th:text="${commonCode.itemValue}"></th:block>
|
||||||
|
|
@ -139,29 +136,9 @@
|
||||||
<div class="modal fade" id="authEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="authEditModalLabel" aria-hidden="true">
|
<div class="modal fade" id="authEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="authEditModalLabel" aria-hidden="true">
|
||||||
<div class="modal-dialog modal-lg modal-dialog-scrollable">
|
<div class="modal-dialog modal-lg modal-dialog-scrollable">
|
||||||
<div class="modal-content" id="authEditModalContent">
|
<div class="modal-content" id="authEditModalContent">
|
||||||
<div class="modal-header bg-dark">
|
|
||||||
<h5 class="modal-title text-white" id="menuEditModalLabel">권한 편집</h5>
|
|
||||||
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
|
||||||
<li class="nav-item" role="presentation">
|
|
||||||
<button class="nav-link active" id="accessTab" data-bs-toggle="tab" data-bs-target="#accessTabPanel" type="button" role="tab" aria-controls="accessTabPanel" aria-selected="true">메뉴</button>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item" role="presentation">
|
|
||||||
<button class="nav-link" id="approvalTab" data-bs-toggle="tab" data-bs-target="#approvalTabPanel" type="button" role="tab" aria-controls="approvalTabPanel" aria-selected="false">결재</button>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<div class="tab-content bg-white border border-top-0" id="configInfo">
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer bg-light">
|
|
||||||
<!-- <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>-->
|
|
||||||
<button type="button" class="btn btn-primary" id="saveAuthBtn">저장</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</html>
|
</html>
|
||||||
|
|
@ -221,8 +221,7 @@
|
||||||
<div class="px-2">
|
<div class="px-2">
|
||||||
<form action="#" method="post" id="apprvForm">
|
<form action="#" method="post" id="apprvForm">
|
||||||
<input type="hidden" name="affairKey" th:value="${affair.affairKey}">
|
<input type="hidden" name="affairKey" th:value="${affair.affairKey}">
|
||||||
<th:block
|
<th:block th:if="${(#strings.contains(apprvAuth, 'APC003') or #strings.contains(apprvAuth, 'APC004')) and affair.affairStatus eq 'DST002' and affair.rateList.get(0).ratingOrgan eq userOrgan}">
|
||||||
th:if="${(apprvAuth eq 'APC003' or apprvAuth eq 'APC004') and affair.affairStatus eq 'DST002' and affair.rateList.get(0).ratingOrgan eq userOrgan}">
|
|
||||||
<input type="hidden" name="sectionApprv" id="sectionApprv">
|
<input type="hidden" name="sectionApprv" id="sectionApprv">
|
||||||
<div class="row border-top-0 border-secondary">
|
<div class="row border-top-0 border-secondary">
|
||||||
<div class="col-10">
|
<div class="col-10">
|
||||||
|
|
@ -241,12 +240,11 @@
|
||||||
</div>
|
</div>
|
||||||
</th:block>
|
</th:block>
|
||||||
<th:block
|
<th:block
|
||||||
th:if="${(apprvAuth eq 'APC001' or apprvAuth eq 'APC002') and affair.affairStatus eq 'DST004' and affair.rateList.get(0).ratingOrgan eq userOrgan}">
|
th:if="${(#strings.contains(apprvAuth, 'APC001') or #strings.contains(apprvAuth, 'APC002')) and affair.affairStatus eq 'DST004' and affair.rateList.get(0).ratingOrgan eq userOrgan}">
|
||||||
<input type="hidden" name="headApprv" id="headApprv">
|
<input type="hidden" name="headApprv" id="headApprv">
|
||||||
<div class="row border-top-0 border-secondary">
|
<div class="row border-top-0 border-secondary">
|
||||||
<div class="col-8">
|
<div class="col-8">
|
||||||
<input type="text" class="form-control form-control-sm etc" name="headEtc"
|
<input type="text" class="form-control form-control-sm etc" name="headEtc" placeholder="추가의견, 반려사유 기입">
|
||||||
placeholder="추가의견, 반려사유 기입">
|
|
||||||
<input type="text" class="d-none" id="submitPrevention">
|
<input type="text" class="d-none" id="submitPrevention">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
|
|
|
||||||
|
|
@ -320,10 +320,10 @@
|
||||||
<div class="col-3">
|
<div class="col-3">
|
||||||
<input type="text" class="form-control form-control-sm reportTitle" th:value="${info.reportTitle}">
|
<input type="text" class="form-control form-control-sm reportTitle" th:value="${info.reportTitle}">
|
||||||
</div>
|
</div>
|
||||||
|
<th:block th:unless="${#strings.isEmpty(info.origNm)}">
|
||||||
<th:block th:if="${not #strings.isEmpty(info.origNm)}">
|
|
||||||
<div class="col-3" id="deleteFile">
|
<div class="col-3" id="deleteFile">
|
||||||
<div class="input-group" id="fileDelete">
|
<div class="input-group" id="fileDelete">
|
||||||
|
<input type="hidden" class="convNm" th:value="${info.convNm}">
|
||||||
<input type="text" class="form-control form-control-sm" th:value="|${info.origNm}.${info.fileExtn}|" readonly>
|
<input type="text" class="form-control form-control-sm" th:value="|${info.origNm}.${info.fileExtn}|" readonly>
|
||||||
<button type="button" class="btn btn-sm btn-danger" id="deleteFileBtn">
|
<button type="button" class="btn btn-sm btn-danger" id="deleteFileBtn">
|
||||||
<i class="bi bi-x"></i>
|
<i class="bi bi-x"></i>
|
||||||
|
|
@ -332,9 +332,10 @@
|
||||||
<input class="file d-none" id="updateFile" type="file">
|
<input class="file d-none" id="updateFile" type="file">
|
||||||
</div>
|
</div>
|
||||||
</th:block>
|
</th:block>
|
||||||
<th:block th:unless="${not #strings.isEmpty(info.origNm)}">
|
<th:block th:if="${#strings.isEmpty(info.origNm)}">
|
||||||
<div class="col-3" id="addFile">
|
<div class="col-3" id="addFile">
|
||||||
<div class="input-group" id="fileAdd">
|
<div class="input-group" id="fileAdd">
|
||||||
|
<input type="hidden" class="origNm" value="">
|
||||||
<input type="text" class="form-control form-control-sm" value="등록된 파일이 없습니다." readonly>
|
<input type="text" class="form-control form-control-sm" value="등록된 파일이 없습니다." readonly>
|
||||||
<button type="button" class="btn btn-sm btn-primary" id="addFileBtn">
|
<button type="button" class="btn btn-sm btn-primary" id="addFileBtn">
|
||||||
<i class="bi bi-plus"></i>
|
<i class="bi bi-plus"></i>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue