File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
<%--
Class Name : CateCodeTree.jsp
Description : 카테고리 코드
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2018.06.11 ITN 최초 생성
author : ITN
since : 2018.06.11
--%>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ page import="itn.com.cmm.service.EgovProperties"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Language" content="ko">
<link href="<c:url value='/'/>css/jstree/themes/default/style.min.css" rel="stylesheet" type="text/css">
<style>
.jstree_orgChart {
overflow: auto;
border: 1px solid silver;
min-height: 100px;
width: 390px;
}
</style>
<script src="<c:url value='/js/jquery-1.12.4.min.js' />"></script>
<script src="<c:url value='/js/jstree.min.js' />"></script>
<script src="<c:url value='/js/EgovCmmUtl.js' />"></script>
<script src="/direct/js/jquery.nice-select.js"></script>
<script>
$( document ).ready(function() {
jstreeInit();
$('.tbType2 input').keydown(function(e) {
if (e.keyCode == 13) {
$('.main1_save_btn').click();
}
});
});
/*********************************
* jstree
*********************************
*/
var newNodeId = "";
var modiNodeId = "";
function jstreeInit() {
$('#kopost_organization').jstree({
"core" : {
"animation" : 0,
"multiple" : false,
"check_callback" : true,
"themes" : { "stripes" : true },
"data" : {
"url" : "<c:url value='/sym/ccm/ccc/CateCodeTreeInitAjax.do'/>",
"dataType" : "json",
"data" : function (node) {
return {'id' : node.id }
}
}
},
"types" : {
"#" : {
/* "max_children" : 4, */
"max_depth" : 4,
"valid_children" : ["root"]
},
"root" : {
//"icon" : "/static/3.3.5/assets/images/tree_icon.png",
"icon" : "glyphicon glyphicon-flash",
"valid_children" : ["default"]
},
"default" : {
"valid_children" : ["default","file"]
},
"file" : {
//"icon" : "glyphicon glyphicon-file",
"icon" : "jstree-file",
"valid_children" : []
}
},
"plugins" : [
"contextmenu", "search",
"types"
//, "unique"
//, "wholerow"
// "dnd" move기능 삭제
// "checkbox" 체크박스 삭제
]
})
.bind('loaded.jstree', function(e, data) {
//console.log("jstree loaded");
//$(this).jstree(true).open_all();
$('#kopost_organization').jstree('open_node' , $('#10000') )
})
.on('select_node.jstree', function (e, data) {
if(!$('.organ_rightbox').is(":visible")){
$(".organ_rightbox").show();
}
/* 코드 선택 */
var cateNo = data.node.id;
var upperCateNo = data.node.parent;
//하위 코드가 있으면 코드 변경못하게
$('#nodeDepth').val(data.node.parents.length);
$('#upperCateNo').val(upperCateNo);
if(data.node.children.length > 0){
$('#cateNo').attr("readonly",true);
}else{
$('#cateNo').attr("readonly",false);
}
//코드 추가시 자동 선택되게
if(newNodeId !=""){
cateNo = newNodeId ;
newNodeId = "";
$('#'+data.instance.get_node(cateNo).a_attr.id).trigger("click"); //클릭 이벤트 발생
}
$("#menuTopNm").text(data.node.text);
$.ajax({
type:"POST",
url:"<c:url value='/sym/ccm/ccc/CateCodeInfoAjax.do' />",
data:{ "cateNo" : cateNo, "upperCateNo" : upperCateNo, "cateDepth" : data.node.parents.length},
dataType:'json',
async: false,
//timeout:(1000*30),
success : function(returnData, status) {
if (status == "success") {
var cateCodeVO = returnData.cateCodeVO;
fn_setting_menuNo(cateCodeVO);
} else { alert("코드 조회가 실패되었습니다."); return;}
},
error : function(request , status, error) {
},
complete : function () {
deleteLodingBar();
}
});
})
.on('rename_node.jstree', function (e, data) { //코드명 변경
var nodeId = data.node.id;
var oldText = data.old;
var newText = data.text;
var upperCateNo = data.node.parent;
if (data.node.parents.length == 1) {
alert("최상위 공통코드 명은 변경할수 없습니다.");
data.instance.refresh();
}else if (data.node.parents.length > 0) {
/* 부서명 변경 */
if (oldText != newText) {
if (confirm("코드명을 변경하시겠습니까?" )) {
$.ajax({
type:"POST",
//url:"<c:url value='/sym/ccm/ccc/EgovCcmCmmnInfoNmUpdateAjax.do' />",
url:"<c:url value='/sym/ccm/ccc/CateCodeInfoNmUpdateAjax.do' />",
data:{ "cateNo" : nodeId, "cateNm" : newText },
dataType:'json',
success : function(returnData, status) {
if (status == "success") {
alert("코드명이 변경되었습니다.");
} else { alert("코드명 변경이 실패되었습니다."); return;}
},
error : function(request , status, error) {
alert("코드명 변경이 실패되었습니다.");
},
complete : function () {
data.instance.refresh();
}
});
} else {
data.instance.refresh();
}
}
} else {/* 코드 추가 */
}
})
.on('delete_node.jstree', function (e, data) {
/* 코드 삭제 */
var upperCateNo = data.node.parent;
if(data.node.parents.length == 1){
alert("최상위 공통코드는 삭제할수 없습니다.");
data.instance.refresh();
}else{
if(data.node.children.length != 0){
alert("하위 코드를 먼저 삭제 후 코드를 삭제해 주세요.");
data.instance.refresh();
}else{
if (confirm("[" + data.node.text + "]" + " 코드를 삭제하시겠습니까?")){
$.ajax({
type:"POST",
//url:"<c:url value='/sym/ccm/ccc/EgovCcmCmmnInfoDeleteAjax.do' />",
url:"<c:url value='/sym/ccm/ccc/CateCodeInfoDeleteAjax.do' />",
data:{ "cateNo" : data.node.id , "upperCateNo" : upperCateNo, "nodeDepth" : data.node.parents.length },
dataType:'json',
//timeout:(1000*30),
success : function(returnData, status) {
if (status == "success") {
alert("코드 정보가 삭제되었습니다.");
fn_init_menuInfo();
} else { alert("코드 정보 삭제가 실패되었습니다."); return;}
},
error : function(request , status, error) {
alert("코드 정보 삭제가 실패되었습니다.");
//alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
},
complete : function () {
data.instance.refresh();
}
});
} else {
data.instance.refresh();
}
}
}
})
.on('create_node.jstree', function(e, data) {
if (data.node.parents.length > 4) {
alert("더 이상 하위 코드를 생성할수 없습니다.");
data.instance.refresh();
}else{
if (confirm("코드를 추가하시겠습니까?")){
var instance = data.instance;
var menuNm = data.text;
var upperCateNo = data.node.parent;
var menuOrdr = 1;
var childrenNodes = instance.get_node(upperCateNo).children;
// 하위 코드 있을 시 마지막 부서 sort_ord + 1
if (childrenNodes.length > 1) {
menuOrdr = childrenNodes.length ;
}
$.ajax({
type:"POST",
url:"<c:url value='/sym/ccm/ccc/CateCodeInfoInsertAjax.do' />",
data:{ "cateNm" : menuNm, "upperCateNo" : upperCateNo, "cateDepth" : data.node.parents.length },
dataType:'json',
success : function(returnData, status) {
if(returnData.status == "success") {
//alert("코드가 추가 되었습니다.");
newNodeId = returnData.newMenuNo ; //코드추가후 노드선택
}else if(returnData.status == "dupl"){
alert("중복된 아이디가 있습니다.\n 중복된 아이디변경/삭제후 다시 추가해 주세요\n"+ "("+returnData.menuManageVO.codeNm+")");
return;
}else{
alert("코드 추가가 실패하였습니다.");
return;
}
},
error : function(request , status, error) {
alert("코드 추가가 실패되었습니다.")
},
complete : function () {
data.instance.refresh();
}
});
}else{
data.instance.refresh();
}
}
})
.on('move_node.jstree', function (e, data) {
/* 코드 위치 변경 */
var instance = data.instance;
var cateNo = data.node.id;
var childrenNodes = instance.get_node(cateNo).children;
// 하위 코드 있을 시 이동 금지
/* if (childrenNodes.length > 1) {
alert("하위 코드가 있으면 코드 이동을 할 수 없습니다.");
data.instance.refresh();
return;
} */
if (confirm("코드 위치를 변경하시겠습니까?" )){
//var partIdx = data.node.id;
var upperCateNo = data.parent;
var menuOrdr = data.position + 1;
var sortOver = "A" ;
$.ajax({
type:"POST",
url:"<c:url value='/sym/mnu/mcm/EgovMenuInfoMoveAjax.do' />",
data:{ "cateNo" : cateNo, "upperCateNo" : upperCateNo, "menuOrdr" : menuOrdr},
dataType:'json',
//timeout:(1000*30),
success : function(returnData, status) {
if (status == "success") {
alert("코드 위치가 변경되었습니다.");
} else { alert("코드 위치 변경이 실패되었습니다."); return;}
},
error : function(request , status, error) {
alert("코드 위치 변경이 실패되었습니다.");
//alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
},
complete : function () {
data.instance.refresh();
}
});
} else {
data.instance.refresh();
}
})
.on("refresh.jstree", function (e,data) {
if(modiNodeId !=""){
$('#'+data.instance.get_node(modiNodeId).a_attr.id).trigger("click");
}
});
}
//코드 정보 세팅
function fn_setting_menuNo(cateCodeVO){
//upperIdxs = upperIdxs.join("|");
var tmpHtml = "";
if(cateCodeVO!=null){
$('#cateNo').val(cateCodeVO.id);
$('#beforeNo').val(cateCodeVO.id);
$('#cateNm').val(cateCodeVO.text);
$('#cateCode').val(cateCodeVO.cateCode);
$('#cateOrdr').val(cateCodeVO.cateOrdr);
$('#upperCateNoTxt').text(cateCodeVO.parent);
$('#upperCateNo').val(cateCodeVO.parent);
$('#cateDepth').text(cateCodeVO.cateDepth);
$('#useYn').val(cateCodeVO.useYn);
$(".main1_delete_btn").removeAttr("onclick");
$(".main1_delete_btn").attr("onclick", "fn_delete_menuInfo('"+cateCodeVO.id+"');return false;");
$(".main1_save_btn").removeAttr("onclick");
$(".main1_save_btn").attr("onclick", "fn_save_menuInfo('"+cateCodeVO.id+"');return false;");
//selectupdate
$('#useYn').niceSelect('update');
}
}
//코드 정보 삭제
function fn_delete_menuInfo(cateNo) {
if(cateNo == null || "undefined"== cateNo){
alert("삭제 하려는 코드를 먼저 선택해주세요.");
return ;
}
var instance = $('#kopost_organization').jstree(true);
if(instance.get_node(cateNo)==false){
cateNo = $('#upperCateNoText').text()+"__"+cateNo ;
}
if(instance.get_node(cateNo).children.length != 0){
alert("하위 코드를 먼저 삭제 후 코드를 삭제해 주세요.");
return;
}
if (confirm("코드를 삭제 하시겠습니까?")){
$.ajax({
type:"POST",
"url" : "<c:url value='/sym/ccm/ccc/EgovCcmCmmnInfoDeleteAjax.do'/>",
data:{ "cateNo" : cateNo , "nodeDepth" : instance.get_node(cateNo).parents.length , upperCateNo : $('#upperCateNo').val() },
dataType:'json',
//timeout:(1000*30),
success : function(returnData, status) {
if (returnData.status == "success") {
//코드 목록 갱신
var instance = $('#kopost_organization').jstree(true);
alert("코드 정보가 삭제 되었습니다.");
$("#kopost_organization").jstree("refresh");
fn_init_menuInfo();
} else if(returnData.status == "duplPk"){
alert("삭제하려는 코드를 참조하고 있는 코드가 있습니다.\n 참조하는 코드를 삭제후 다시 시도해 주세요\n"+ "("+returnData.menuManageResultVO.menuCours+")");
return;
}
else {
alert("코드 삭제가 실패되었습니다.");
return;
}
},
error : function(request , status, error) {
alert("코드 삭제가 실패되었습니다..");
},
complete : function () {
}
});
}
}
//코드정보 init(코드 초기화)
function fn_init_menuInfo() {
$("#menuTopNm").text("코드선택");
$("#menuForm input[type=text]").val("")
$('#menuCours').text("");
$('#upperCateNoText').text("");
/* $('#progrmFileNmText').text(""); */
}
//코드 초기화
function jstreeRefresh() {
var searchForm = document.searchForm ;
searchForm.authorCode.value = $('#authorCode').val();
searchForm.submit();
/* $('#kopost_organization').jstree("refresh");
$('#kopost_organization').jstree(true).open_all();
fn_init_menuInfo(); */
}
//코드 정보 저장. 등록/수정
function fn_save_menuInfo(cateNo) {
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?.]/gi;
if(special_pattern.test(document.menuForm.cateNo.value) == true){
alert("코드 코드는 특수문자를 쓸수 없습니다.") ;
return;
}
if(cateNo == null || "undefined"== cateNo){
alert("저장 하려는 코드를 먼저 코드트리에서 생성해 주세요."); return ;
}
var menuForm = document.menuForm;
if(""==menuForm.cateNo.value){
alert("코드는 필수 값입니다"); return false;
}
if(""==menuForm.cateCode.value){
alert("코드 ID는 필수 값입니다"); return false;
}
var url = "";
//url = "<c:url value='/sym/ccm/ccc/EgovCcmCmmnInfoUpdateAjax.do'/>";
url = "<c:url value='/sym/ccm/ccc/CateCodeInfoUpdateAjax.do'/>";
var params = $(menuForm).serialize();
$.ajax({
type:"POST",
"url":url,
data:params,
dataType:'json',
async: false,
success : function(returnData, status) {
if (returnData.status == "success") {
alert("코드 정보가 저장되었습니다.");
//modiNodeId = $('#menuNo').val();
modiNodeId = returnData.newMenuNo;
} else if(returnData.status == "upperDupl"){
alert("상위 코드 번호가 있습니다.");
return;
}else if(returnData.status == "dupl"){
alert("이미 사용하고 있는 코드 번호가 있습니다.");
return;
}else if(returnData.status == "duplProNm"){
alert("이미 사용하고 있는 프로그램파일명이 있습니다.");
return;
}else{
alert("코드 정보 저장이 실패되었습니다."); return;
}
},
error : function(request , status, error) {
alert("코드 정보 저장이 실패되었습니다.");
},
complete : function () {
$("#kopost_organization").jstree("refresh");
}
});
}
</script>
<title>코드관리</title>
</head>
<body>
<style>
.organ_rightbox span{
float: none; margin-top: unset;
font-size: unset; margin-left: 10px;
}
</style>
<div class="contWrap">
<form name="menuForm" id="menuForm" >
<input type="hidden" id="existChildNode" name="existChildNode" value="N" />
<input type="hidden" id="nodeDepth" name="nodeDepth" value="" />
<input type="hidden" id="upperCateNo" name="upperCateNo" value="" />
<div class="pageTitle">
<div class="pageIcon"><img src="/pb/img/pageTitIcon4.png" alt=""></div>
<h2 class="titType1 c_222222 fwBold">문자 카테고리 코드관리</h2>
<p class="tType6 c_999999">문자 카테고리 코드를 추가/수정/삭제할 수 있습니다.</p>
</div>
<div class="pageNav">
<img src="/pb/img/common/homeIcon.png" alt="홈이미지"> > <p class="topDepth">코드관리</p> > <p class="subDepth">코드관리</p>
</div>
<div class="pageCont">
<!-- 조직도 관리 시작 -->
<div class="orgWrap">
<div class="btnWrap">
<input type="button" id="evts_button_open_all" value="모두열기" class="btnType1" onclick="$('#kopost_organization').jstree('open_all' ); ">
<input type="button" id="evts_button_close_all" value="모두닫기" class="btnType2" onclick="$('#kopost_organization').jstree('close_node' , $('#10000') ); ">
</div>
<div id="kopost_organization" class="orgCont"></div>
</div>
<div class="tbWrap">
<span class="tbTit" id="menuTopNm" >코드를 선택하세요</span>
<table class="tbType2">
<colgroup>
<col style="width: 20%">
<col style="width: 80%">
</colgroup>
<tbody>
<tr>
<th><span>코드번호</span></th>
<td>
<input type="text" name="cateNo" id="cateNo" maxlength="8"/>
<input type="hidden" id="beforeNo" name="beforeNo"/><!-- 이전코드 No -->
</td>
</tr>
<tr>
<th><span>코드명</span></th>
<td>
<input type="text" name="cateNm" id="cateNm" />
<input type="hidden" id="tmp_Name" name="tmp_Name"/><!-- 이전코드 이름 -->
</td>
</tr>
<tr>
<th><span>코드ID</span></th>
<td>
<input type="text" name="cateCode" id="cateCode" />
</td>
</tr>
<tr>
<th><span>상위 코드</span></th>
<td>
<span id="upperCateNoTxt"></span>
</td>
</tr>
<tr>
<th><span>코드순서</span></th>
<td>
<input type="text" numberOnly name="cateOrdr" id="cateOrdr">
</td>
</tr>
<tr>
<th><span>사용/미사용</span></th>
<td>
<select name="useYn" id="useYn" >
<option value="Y" <c:if test="${userSearchVO.useYn == 'Y'}">selected="selected"</c:if> >사용</option>
<option value="N" <c:if test="${userSearchVO.useYn == 'N'}">selected="selected"</c:if> >미사용</option>
</select>
</td>
</tr>
<tr>
<th><span>뎁스</span></th>
<td>
<span id="cateDepth"></span>
</td>
</tr>
</tbody>
</table>
</div>
<div class="btnWrap">
<input type="button" class="btnType1 bg_456ded main1_save_btn" value="저 장" onClick="fn_save_menuInfo(); return false;">
<!-- 삭제 기능 제거 - 아래의 경우를 방지하기 위해 미사용/사용처리로 제어
1. 기존 카테고리 삭제
2. 신규 카테고리 등록
3. 신규 카테고리가 기존에 삭제했던 카테고리의 코드를 사용하는 경우. 신규 카테고리에 기존 카테고리의 문자샘플이 같이 조회되는 경우 방지 -->
<!-- <input type="button" class="btnType2 main1_delete_btn" value="삭 제" onClick="fn_delete_menuInfo(); return false;"> -->
</div>
</div>
</div>
</form>
<form name="searchForm" method="get" action="<c:url value='/sym/mnu/mcm/EgovMenuCreatSelectJtree.do'/>" >
<input name="authorCode" type="hidden" value="ROLE_ANONYMOUS" />
</form>
</div>
<script>
// document.getElementById("kopost_organization").style.fontSize="11px";
</script>
</body>
</html>