Compare commits
2 Commits
7efb5ed160
...
466a000633
| Author | SHA1 | Date |
|---|---|---|
|
|
466a000633 | |
|
|
793097dcb9 |
|
|
@ -27,29 +27,30 @@ public class OrganConfigController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/selectOrganList")
|
@GetMapping("/selectOrganList")
|
||||||
public Map<String, List<Object>> selectOrganList(){
|
public List<OrganConfig> selectOrganList(){
|
||||||
List<CodeMgt> organList = codeMgtService.selectCodeMgtList("OG");
|
List<CodeMgt> organCdList = codeMgtService.selectCodeMgtList("OG");
|
||||||
List<OrganConfig> usedOrganList = organConfigService.selectSavedOrganList();
|
List<OrganConfig> organConfigList = organConfigService.selectSavedOrganList();
|
||||||
List<CodeMgt> notUsedOrganList = new ArrayList<>();
|
for(CodeMgt organCode: organCdList){
|
||||||
for(CodeMgt organCode: organList){
|
|
||||||
if(!organCode.getItemCd().equals("OG001")){
|
if(!organCode.getItemCd().equals("OG001")){
|
||||||
boolean usedFlag = false;
|
boolean usedFlag = false;
|
||||||
for(OrganConfig usedOrgan: usedOrganList){
|
for(OrganConfig organConfig: organConfigList){
|
||||||
if(organCode.getItemCd().equals(usedOrgan.getOrganCd())){
|
if(organCode.getItemCd().equals(organConfig.getOrganCd())){
|
||||||
usedFlag = true;
|
usedFlag = true;
|
||||||
usedOrgan.setOrganNm(organCode.getItemValue());
|
organConfig.setOrganNm(organCode.getItemValue());
|
||||||
|
organConfig.setUseState("T");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!usedFlag){
|
if(!usedFlag){
|
||||||
notUsedOrganList.add(organCode);
|
OrganConfig organConfig = new OrganConfig();
|
||||||
|
organConfig.setOrganCd(organCode.getItemCd());
|
||||||
|
organConfig.setOrganNm(organCode.getItemValue());
|
||||||
|
organConfig.setUseState("F");
|
||||||
|
organConfigList.add(organConfig);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Map<String, List<Object>> returnMap = new HashMap<>();
|
return organConfigList;
|
||||||
returnMap.put("notUsedOrganList", Collections.singletonList(notUsedOrganList));
|
|
||||||
returnMap.put("usedOrganList", Collections.singletonList(usedOrganList));
|
|
||||||
return returnMap;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/saveOrganConfig")
|
@PostMapping("/saveOrganConfig")
|
||||||
|
|
|
||||||
|
|
@ -27,5 +27,7 @@ public class OrganConfig {
|
||||||
|
|
||||||
@Transient
|
@Transient
|
||||||
private String organNm;
|
private String organNm;
|
||||||
|
@Transient
|
||||||
|
private String useState;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
let notUsedOrganList = [];
|
let organList = [];
|
||||||
let usedOrganList = [];
|
|
||||||
let selectedMiddleOrganCd = "";
|
let selectedMiddleOrganCd = "";
|
||||||
|
|
||||||
$(function (){
|
$(function (){
|
||||||
|
|
@ -8,8 +7,7 @@ $(function (){
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
dataType:"json",
|
dataType:"json",
|
||||||
success: function(data){
|
success: function(data){
|
||||||
notUsedOrganList = data.notUsedOrganList[0];
|
organList = data;
|
||||||
usedOrganList = data.usedOrganList[0];
|
|
||||||
setUsedOrganTr("OG001", "OGC002");
|
setUsedOrganTr("OG001", "OGC002");
|
||||||
},
|
},
|
||||||
error:function(){
|
error:function(){
|
||||||
|
|
@ -29,43 +27,38 @@ $(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");
|
||||||
usedOrganList.forEach(function (organ, idx){
|
organList.forEach(function (organ, idx){
|
||||||
if(organ.organCd === selector.val()
|
if(organ.organCd === selector.val() //해당관서
|
||||||
|| organ.parentOrgan === selector.val()){
|
|| organ.parentOrgan === selector.val()){ // 해당 지방청을 상위로 둔 관할 서
|
||||||
notUsedOrganList.push({
|
organ.useState = "F";
|
||||||
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 selectedItemCd = this.value;
|
const selector = this;
|
||||||
const selectedItemValue = this.selectedOptions[0].text;
|
const selectedItemCd = selector.value;
|
||||||
const tbodyId = $(this).parents('tbody').id
|
const tbodyId = $(this).parents('tbody')[0].id
|
||||||
usedOrganList.forEach(function (organ, idx){
|
organList.forEach(function (organ, idx){
|
||||||
if(organ.organCd === selectedItemCd){
|
if(organ.organCd === selectedItemCd){
|
||||||
alert("이미 등록된 관서입니다.")
|
switch (organ.useState){
|
||||||
return null;
|
case "T":
|
||||||
}
|
selector[0].selected = true;
|
||||||
})
|
alert("다른 위치에 등록된 관서입니다.")
|
||||||
for(var i=0; i<this.options.length; i++){
|
$(selector).find("[value='"+selectedItemCd+"']").remove()
|
||||||
if(this.options[i].index !== this.options.selectedIndex){
|
break;
|
||||||
this.options[i].remove();
|
case "F":
|
||||||
|
for(var i=0; i<selector.options.length; i++){
|
||||||
|
if(selector.options[i].index !== selector.options.selectedIndex){
|
||||||
|
selector.options[i].remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
usedOrganList.push({
|
organ.parentOrgan = tbodyId==='middleTbody'?'OG001':selectedMiddleOrganCd;
|
||||||
parentOrgan: tbodyId==="middleTbody"?"OG001":selectedMiddleOrganCd,
|
organ.organType = tbodyId==='middleTbody'?'OGC002':'OGC003';
|
||||||
organCd: selectedItemCd,
|
organ.useState = "T";
|
||||||
organNm: selectedItemValue,
|
break;
|
||||||
organType: tbodyId==="middleTbody"?"OGC002":"OGC003"
|
}
|
||||||
})
|
|
||||||
notUsedOrganList.forEach(function (organ, idx){
|
|
||||||
if(organ.itemCd === selectedItemCd){
|
|
||||||
notUsedOrganList = notUsedOrganList.slice(0,idx).concat(notUsedOrganList.slice(idx+1, notUsedOrganList.length));
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
@ -83,10 +76,15 @@ $(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(usedOrganList),
|
data : JSON.stringify(saveList),
|
||||||
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());
|
||||||
|
|
@ -104,13 +102,14 @@ $(document).on('click', '#organSaveBtn', function (){
|
||||||
})
|
})
|
||||||
|
|
||||||
function addTr(tbody){
|
function addTr(tbody){
|
||||||
if(notUsedOrganList.length===0){
|
|
||||||
alert("추가할 수 있는 관서가 없습니다.")
|
|
||||||
}else{
|
|
||||||
let options = '';
|
let options = '';
|
||||||
notUsedOrganList.forEach(function (organ) {
|
organList.forEach(function (organ) {
|
||||||
options+= '<option value="'+organ.itemCd+'">'+organ.itemValue+'</option>'
|
if(organ.useState==="F")
|
||||||
|
options+= '<option value="'+organ.organCd+'">'+organ.organNm+'</option>'
|
||||||
});
|
});
|
||||||
|
if(options===''){
|
||||||
|
alert("배정되지 않은 관서가 없습니다.");
|
||||||
|
}else{
|
||||||
$('#'+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>' +
|
||||||
|
|
@ -125,7 +124,8 @@ function addTr(tbody){
|
||||||
|
|
||||||
function setUsedOrganTr(parentOrgan, organType){
|
function setUsedOrganTr(parentOrgan, organType){
|
||||||
const target = organType==="OGC002"?$("#middleTbody"):$("#bottomTbody")
|
const target = organType==="OGC002"?$("#middleTbody"):$("#bottomTbody")
|
||||||
usedOrganList.forEach(function (organ){
|
organList.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"':'')+'>' +
|
||||||
|
|
@ -136,5 +136,6 @@ function setUsedOrganTr(parentOrgan, organType){
|
||||||
'</tr>'
|
'</tr>'
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue