Compare commits

..

No commits in common. "466a000633df7155b579aab0e08dc396b0cc67d3" and "7efb5ed160c259912e774c5ce7ef9dc6bb4afb0d" have entirely different histories.

3 changed files with 65 additions and 69 deletions

View File

@ -27,30 +27,29 @@ public class OrganConfigController {
} }
@GetMapping("/selectOrganList") @GetMapping("/selectOrganList")
public List<OrganConfig> selectOrganList(){ public Map<String, List<Object>> selectOrganList(){
List<CodeMgt> organCdList = codeMgtService.selectCodeMgtList("OG"); List<CodeMgt> organList = codeMgtService.selectCodeMgtList("OG");
List<OrganConfig> organConfigList = organConfigService.selectSavedOrganList(); List<OrganConfig> usedOrganList = organConfigService.selectSavedOrganList();
for(CodeMgt organCode: organCdList){ List<CodeMgt> notUsedOrganList = new ArrayList<>();
for(CodeMgt organCode: organList){
if(!organCode.getItemCd().equals("OG001")){ if(!organCode.getItemCd().equals("OG001")){
boolean usedFlag = false; boolean usedFlag = false;
for(OrganConfig organConfig: organConfigList){ for(OrganConfig usedOrgan: usedOrganList){
if(organCode.getItemCd().equals(organConfig.getOrganCd())){ if(organCode.getItemCd().equals(usedOrgan.getOrganCd())){
usedFlag = true; usedFlag = true;
organConfig.setOrganNm(organCode.getItemValue()); usedOrgan.setOrganNm(organCode.getItemValue());
organConfig.setUseState("T");
break; break;
} }
} }
if(!usedFlag){ if(!usedFlag){
OrganConfig organConfig = new OrganConfig(); notUsedOrganList.add(organCode);
organConfig.setOrganCd(organCode.getItemCd());
organConfig.setOrganNm(organCode.getItemValue());
organConfig.setUseState("F");
organConfigList.add(organConfig);
} }
} }
} }
return organConfigList; Map<String, List<Object>> returnMap = new HashMap<>();
returnMap.put("notUsedOrganList", Collections.singletonList(notUsedOrganList));
returnMap.put("usedOrganList", Collections.singletonList(usedOrganList));
return returnMap;
} }
@PostMapping("/saveOrganConfig") @PostMapping("/saveOrganConfig")

View File

@ -27,7 +27,5 @@ public class OrganConfig {
@Transient @Transient
private String organNm; private String organNm;
@Transient
private String useState;
} }

View File

@ -1,4 +1,5 @@
let organList = []; let notUsedOrganList = [];
let usedOrganList = [];
let selectedMiddleOrganCd = ""; let selectedMiddleOrganCd = "";
$(function (){ $(function (){
@ -7,7 +8,8 @@ $(function (){
type: 'GET', type: 'GET',
dataType:"json", dataType:"json",
success: function(data){ success: function(data){
organList = data; notUsedOrganList = data.notUsedOrganList[0];
usedOrganList = data.usedOrganList[0];
setUsedOrganTr("OG001", "OGC002"); setUsedOrganTr("OG001", "OGC002");
}, },
error:function(){ error:function(){
@ -27,38 +29,43 @@ $(document).on('click', '#bottomAddBtn', function (){
$(document).on('click', '.rowDeleteBtn', function (){ $(document).on('click', '.rowDeleteBtn', function (){
const targetTr = $(this).parents('tr'); const targetTr = $(this).parents('tr');
const selector = targetTr.find("select"); const selector = targetTr.find("select");
organList.forEach(function (organ, idx){ usedOrganList.forEach(function (organ, idx){
if(organ.organCd === selector.val() //해당관서 if(organ.organCd === selector.val()
|| organ.parentOrgan === selector.val()){ // 해당 지방청을 상위로 둔 관할 서 || organ.parentOrgan === selector.val()){
organ.useState = "F"; notUsedOrganList.push({
itemCd: organ.organCd,
itemValue: organ.organNm
})
usedOrganList = usedOrganList.splice(0, idx).concat(usedOrganList.splice(idx+1, usedOrganList.length));
} }
}) })
targetTr.remove(); targetTr.remove();
}) })
$(document).on('change', '.organSelector', function () { $(document).on('change', '.organSelector', function () {
const selector = this; const selectedItemCd = this.value;
const selectedItemCd = selector.value; const selectedItemValue = this.selectedOptions[0].text;
const tbodyId = $(this).parents('tbody')[0].id const tbodyId = $(this).parents('tbody').id
organList.forEach(function (organ, idx){ usedOrganList.forEach(function (organ, idx){
if(organ.organCd === selectedItemCd){ if(organ.organCd===selectedItemCd){
switch (organ.useState){ alert("이미 등록된 관서입니다.")
case "T": return null;
selector[0].selected = true; }
alert("다른 위치에 등록된 관서입니다.") })
$(selector).find("[value='"+selectedItemCd+"']").remove() for(var i=0; i<this.options.length; i++){
break; if(this.options[i].index !== this.options.selectedIndex){
case "F": this.options[i].remove();
for(var i=0; i<selector.options.length; i++){ }
if(selector.options[i].index !== selector.options.selectedIndex){ }
selector.options[i].remove(); usedOrganList.push({
} parentOrgan: tbodyId==="middleTbody"?"OG001":selectedMiddleOrganCd,
} organCd: selectedItemCd,
organ.parentOrgan = tbodyId==='middleTbody'?'OG001':selectedMiddleOrganCd; organNm: selectedItemValue,
organ.organType = tbodyId==='middleTbody'?'OGC002':'OGC003'; organType: tbodyId==="middleTbody"?"OGC002":"OGC003"
organ.useState = "T"; })
break; notUsedOrganList.forEach(function (organ, idx){
} if(organ.itemCd === selectedItemCd){
notUsedOrganList = notUsedOrganList.slice(0,idx).concat(notUsedOrganList.slice(idx+1, notUsedOrganList.length));
} }
}) })
}) })
@ -76,15 +83,10 @@ $(document).on('click', '.middleTr', function (){
}) })
$(document).on('click', '#organSaveBtn', function (){ $(document).on('click', '#organSaveBtn', function (){
contentFade("in"); contentFade("in");
const saveList = [];
organList.forEach(function (organ) {
if(organ.useState==="T")
saveList.push(organ);
});
$.ajax({ $.ajax({
type : 'POST', type : 'POST',
url : "/organMgt/saveOrganConfig", url : "/organMgt/saveOrganConfig",
data : JSON.stringify(saveList), data : JSON.stringify(usedOrganList),
contentType: 'application/json', contentType: 'application/json',
beforeSend: function (xhr){ beforeSend: function (xhr){
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val()); xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
@ -102,14 +104,13 @@ $(document).on('click', '#organSaveBtn', function (){
}) })
function addTr(tbody){ function addTr(tbody){
let options = ''; if(notUsedOrganList.length===0){
organList.forEach(function (organ) { alert("추가할 수 있는 관서가 없습니다.")
if(organ.useState==="F")
options+= '<option value="'+organ.organCd+'">'+organ.organNm+'</option>'
});
if(options===''){
alert("배정되지 않은 관서가 없습니다.");
}else{ }else{
let options = '';
notUsedOrganList.forEach(function (organ) {
options+= '<option value="'+organ.itemCd+'">'+organ.itemValue+'</option>'
});
$('#'+tbody).append( $('#'+tbody).append(
'<tr '+(tbody==="middleTbody"?'class="middleTr"':'')+'>' + '<tr '+(tbody==="middleTbody"?'class="middleTr"':'')+'>' +
'<td><button class="btn btn-sm btn-outline-danger rowDeleteBtn"><i class="bi bi-x"></i></button></td>' + '<td><button class="btn btn-sm btn-outline-danger rowDeleteBtn"><i class="bi bi-x"></i></button></td>' +
@ -124,18 +125,16 @@ function addTr(tbody){
function setUsedOrganTr(parentOrgan, organType){ function setUsedOrganTr(parentOrgan, organType){
const target = organType==="OGC002"?$("#middleTbody"):$("#bottomTbody") const target = organType==="OGC002"?$("#middleTbody"):$("#bottomTbody")
organList.forEach(function (organ){ usedOrganList.forEach(function (organ){
if(organ.useState === "T"){ if(organ.parentOrgan===parentOrgan && organ.organType===organType){
if(organ.parentOrgan===parentOrgan && organ.organType===organType){ target.append(
target.append( '<tr '+(organType==="OGC002"?'class="middleTr"':'')+'>' +
'<tr '+(organType==="OGC002"?'class="middleTr"':'')+'>' + '<td><button class="btn btn-sm btn-outline-danger rowDeleteBtn"><i class="bi bi-x"></i></button></td>' +
'<td><button class="btn btn-sm btn-outline-danger rowDeleteBtn"><i class="bi bi-x"></i></button></td>' + '<td><select class="organSelector form-select-sm">' +
'<td><select class="organSelector form-select-sm">' + '<option value="'+organ.organCd+'">'+organ.organNm+'</option>' +
'<option value="'+organ.organCd+'">'+organ.organNm+'</option>' + '</select></td>' +
'</select></td>' + '</tr>'
'</tr>' )
)
}
} }
}) })
} }