936 lines
32 KiB
Plaintext
936 lines
32 KiB
Plaintext
<%--
|
|
Class Name : EgovOrgChartManage.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="kcc.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: 290px;
|
|
}
|
|
</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>
|
|
/*********************************
|
|
* jstree
|
|
*********************************
|
|
*/
|
|
|
|
$( document ).ready(function() {
|
|
jstreeInit();
|
|
});
|
|
|
|
var newNodeId = "";
|
|
function jstreeInit() {
|
|
$('#itn_organization').jstree({
|
|
"core" : {
|
|
"animation" : 0,
|
|
"multiple" : false,
|
|
"check_callback" : true,
|
|
"themes" : { "stripes" : true },
|
|
"data" : {
|
|
"url" : "<c:url value='/sym/mnu/mcm/EgovMenuCreatSelectJtreeAjax.do'/>",
|
|
"dataType" : "json",
|
|
"data" : function (node) {
|
|
console.log("node.id :: ", node.id);
|
|
return {'id' : node.id, 'authorCode' : $('#authorCode').val() };
|
|
}
|
|
}
|
|
},
|
|
"types" : {
|
|
"#" : {
|
|
/* "max_children" : 4, */
|
|
"max_depth" : 5,
|
|
"valid_children" : ["root"]
|
|
},
|
|
"root" : {
|
|
"icon" : "glyphicon glyphicon-flash",
|
|
"valid_children" : ["default"]
|
|
},
|
|
"default" : {
|
|
"valid_children" : ["default","file"]
|
|
},
|
|
"file" : {
|
|
"icon" : "jstree-file",
|
|
"valid_children" : []
|
|
}
|
|
},
|
|
"plugins" : [
|
|
"contextmenu", "dnd", "search",
|
|
"types"
|
|
]
|
|
})
|
|
.bind('loaded.jstree', function(e, data) {
|
|
$('#itn_organization').jstree('open_node' , $('#0') );
|
|
|
|
var tree = $.jstree.reference('itn_organization');
|
|
tree.select_node(tree.get_node('#').children[0]);
|
|
})
|
|
.on('select_node.jstree', function (e, data) {
|
|
if(!$('.organ_rightbox').is(":visible")){
|
|
$(".organ_rightbox").show();
|
|
}
|
|
/* 메뉴 선택 */
|
|
var menuNo = data.node.id;
|
|
var upperMenuId = data.node.parent;
|
|
//하위 메뉴가 있으면 메뉴코드 변경못하게
|
|
if(data.node.children.length > 0){
|
|
$('#menuNo').attr("readonly",true);
|
|
$('#existChildNode').val("Y");
|
|
}else{
|
|
$('#menuNo').attr("readonly",false);
|
|
$('#existChildNode').val("N");
|
|
}
|
|
|
|
/* 메뉴 선택 */
|
|
var menuNo = data.node.id;
|
|
//메뉴 추가시 자동 선택되게
|
|
if(newNodeId !=""){
|
|
menuNo = newNodeId ;
|
|
newNodeId = "";
|
|
$('#'+data.instance.get_node(menuNo).a_attr.id).trigger("click") //클릭 이벤트 발생
|
|
}
|
|
|
|
$("#menuTopNm").text(data.node.text);
|
|
|
|
$.ajax({
|
|
type:"POST",
|
|
url:"<c:url value='/sym/mnu/mcm/EgovMenuInfoAjax.do' />",
|
|
data:{ "menuNo" : menuNo , "authorCode" : $('#authorCode').val()},
|
|
dataType:'json',
|
|
//timeout:(1000*30),
|
|
success : function(returnData, status) {
|
|
if (status == "success") {
|
|
var menuManageVO = returnData.menuManageVO;
|
|
var menuUserTypeList = returnData.menuUserTypeList;
|
|
var authorList = returnData.authorList;
|
|
fn_select_menuNo(menuManageVO, menuUserTypeList, authorList);
|
|
} else { alert("ERROR"); }
|
|
},
|
|
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;
|
|
|
|
if (nodeId > 0) {
|
|
/* 부서명 변경 */
|
|
if (oldText != newText) {
|
|
if (confirm("메뉴명을 변경하시겠습니까?" )) {
|
|
$.ajax({
|
|
type:"POST",
|
|
url:"<c:url value='/sym/mnu/mcm/EgovMenuInfoNmUpdateAjax.do' />",
|
|
data:{ "menuNo" : nodeId, "menuNm" : newText },
|
|
dataType:'json',
|
|
success : function(returnData, status) {
|
|
if (status == "success") {
|
|
alert("메뉴명이 변경되었습니다.");
|
|
} else { alert("ERROR"); }
|
|
},
|
|
error : function(request , status, error) {
|
|
alert("메뉴명이 변경이 실패되었습니다.");
|
|
},
|
|
complete : function () {
|
|
data.instance.refresh();
|
|
deleteLodingBar();
|
|
}
|
|
});
|
|
} else {
|
|
data.instance.refresh();
|
|
}
|
|
}
|
|
} else {/* 메뉴 추가 */
|
|
|
|
}
|
|
})
|
|
.on('delete_node.jstree', function (e, data) {
|
|
/* 메뉴 삭제 */
|
|
if(data.node.children.length != 0){
|
|
alert("하위 메뉴를 먼저 삭제 후 메뉴를 삭제해 주세요.");
|
|
data.instance.refresh();
|
|
}else{
|
|
if (confirm("[" + data.node.text + "]" + " 메뉴를 삭제하시겠습니까?")){
|
|
$.ajax({
|
|
type:"POST",
|
|
url:"<c:url value='/sym/mnu/mcm/EgovMenuInfoDeleteAjax.do' />",
|
|
data:{ "menuNo" : data.node.id , "authorCode" : $('#authorCode').val() },
|
|
dataType:'json',
|
|
//timeout:(1000*30),
|
|
success : function(returnData, status) {
|
|
if (status == "success") {
|
|
alert("메뉴 정보가 삭제되었습니다.");
|
|
fn_init_menuInfo();
|
|
} else { alert("ERROR"); }
|
|
},
|
|
error : function(request , status, error) {
|
|
alert("메뉴 정보 삭제가 실패되었습니다.");
|
|
//alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
|
|
},
|
|
complete : function () {
|
|
data.instance.refresh();
|
|
deleteLodingBar();
|
|
}
|
|
});
|
|
} else {
|
|
data.instance.refresh();
|
|
}
|
|
}
|
|
|
|
})
|
|
.on('create_node.jstree', function(e, data) {
|
|
if (confirm("메뉴를 추가하시겠습니까?")){
|
|
var instance = data.instance;
|
|
var menuNm = data.text;
|
|
var upperMenuId = data.node.parent;
|
|
var menuOrdr = 1;
|
|
var childrenNodes = instance.get_node(upperMenuId).children;
|
|
|
|
// 하위 메뉴 있을 시 마지막 부서 sort_ord + 1
|
|
if (childrenNodes.length > 1) {
|
|
//var lastChildrenNode = instance.get_node(childrenNodes[childrenNodes.length - 2]);
|
|
//sortOrd = lastChildrenNode.li_attr.sortOrd + 1;
|
|
menuOrdr = childrenNodes.length ;
|
|
}
|
|
|
|
$.ajax({
|
|
type:"POST",
|
|
url:"<c:url value='/sym/mnu/mcm/EgovMenuInfoInsertAjax.do' />",
|
|
data:{ "menuNm" : menuNm, "upperMenuId" : upperMenuId, "menuOrdr" : menuOrdr , "authorCode" : $('#authorCode').val() },
|
|
dataType:'json',
|
|
//timeout:(1000*30),
|
|
success : function(returnData, status) {
|
|
if (returnData.status == "success") {
|
|
alert("메뉴가 추가 되었습니다.");
|
|
//fn_select_menuNo(returnData.menuManageVO, returnData.menuManageVO.menuUserType);
|
|
newNodeId = returnData.menuManageVO.menuNo ;
|
|
}else if(returnData.status == "dupl"){
|
|
alert("중복된 아이디가 있습니다.\n 중복된 아이디변경/삭제후 다시 추가해 주세요\n"+ "("+returnData.menuManageResultVO.menuCours+")");
|
|
|
|
}else{
|
|
alert("메뉴 추가가 실패하였습니다.");
|
|
|
|
}
|
|
},
|
|
error : function(request , status, error) {
|
|
alert("메뉴 추가가 실패되었습니다.")
|
|
},
|
|
complete : function () {
|
|
data.instance.refresh();
|
|
deleteLodingBar();
|
|
}
|
|
});
|
|
}else{
|
|
data.instance.refresh();
|
|
}
|
|
})
|
|
.on('move_node.jstree', function (e, data) {
|
|
/* 메뉴 위치 변경 */
|
|
var instance = data.instance;
|
|
var menuNo = data.node.id;
|
|
var childrenNodes = instance.get_node(menuNo).children;
|
|
|
|
if (confirm("메뉴 위치를 변경하시겠습니까?" )){
|
|
//var partIdx = data.node.id;
|
|
var upperMenuId = data.parent;
|
|
var menuOrdr = data.position + 1;
|
|
var sortOver = "A" ;
|
|
$.ajax({
|
|
type:"POST",
|
|
url:"<c:url value='/sym/mnu/mcm/EgovMenuInfoMoveAjax.do' />",
|
|
data:{ "menuNo" : menuNo, "upperMenuId" : upperMenuId, "menuOrdr" : menuOrdr , "authorCode" : $('#authorCode').val()},
|
|
dataType:'json',
|
|
success : function(returnData, status) {
|
|
if (status == "success") {
|
|
alert("메뉴 위치가 변경되었습니다.");
|
|
} else { alert("ERROR"); }
|
|
},
|
|
error : function(request , status, error) {
|
|
alert("메뉴 위치 변경이 실패되었습니다.");
|
|
},
|
|
complete : function () {
|
|
data.instance.refresh();
|
|
deleteLodingBar();
|
|
}
|
|
});
|
|
} else {
|
|
data.instance.refresh();
|
|
}
|
|
}) ;
|
|
|
|
|
|
}
|
|
|
|
//메뉴 정보 세팅
|
|
function fn_select_menuNo(menuManageVO, menuUserTypeList, authorList){
|
|
var tmpHtml = "";
|
|
if(menuManageVO!=null){
|
|
$('#menuNo').val(menuManageVO.menuNo);
|
|
$('#tmp_Id').val(menuManageVO.menuNo);
|
|
$('#menuCours').text(menuManageVO.menuCours);
|
|
$('#menuOrdr').val(menuManageVO.menuOrdr);
|
|
$('#menuNm').val(menuManageVO.menuNm);
|
|
$('#menuDc').val(menuManageVO.menuDc);
|
|
$('#upperMenuIdText').text(menuManageVO.upperMenuId);
|
|
$('#upperMenuId').val(menuManageVO.upperMenuId);
|
|
$('#progrmFileNm').val(menuManageVO.progrmFileNm);
|
|
/* $('#progrmFileNmText').text(menuManageVO.progrmFileNm); */
|
|
$('#tmp_Name').val(menuManageVO.progrmFileNm);
|
|
$('#dc_Name').val(menuManageVO.menuDc);
|
|
$('#relateImageNm').val(menuManageVO.relateImageNm);
|
|
$('#relateImagePath').val(menuManageVO.relateImagePath);
|
|
$('#userType').val(menuManageVO.userType);
|
|
$('#url').val(menuManageVO.url);
|
|
$('#useYn').val(menuManageVO.useYn);
|
|
$('#satisYn').val(menuManageVO.satisYn);
|
|
if(""!=menuManageVO.emplyrId) $('#emplyrId').val(menuManageVO.emplyrId); //담당자 세팅
|
|
if(""!=menuManageVO.emplyrIdTxt) $('#emplyrIdTxt').val(menuManageVO.emplyrIdTxt); //담당자 세팅
|
|
|
|
if(menuManageVO.satisYn == null){
|
|
$('#satisYn').val('N')
|
|
}
|
|
$("#menuTopNm").text( menuManageVO.menuNm );
|
|
$("#progrmHtmlFileId").val( menuManageVO.progrmHtmlFileId );
|
|
$("#progrmBbsId").val(menuManageVO.progrmBbsId);
|
|
$('#progrmFileNm_tmp').val(menuManageVO.progrmFileNm);
|
|
var menuType = menuManageVO.menuType ;
|
|
|
|
if(menuType == "M"){
|
|
$("#satisTr").css("display", "none");
|
|
}else{
|
|
$("#satisTr").css("display", "");
|
|
}
|
|
if(menuManageVO.progrmFileNm == 'dir' || menuType == 'M'){
|
|
$("#menuType").val("M"); //메뉴로 세팅
|
|
$('#progrmFileNm').attr("readonly", true);
|
|
$('#progrmFileNm_tmp').val("");
|
|
$('#url_tmp').val("");
|
|
}else{
|
|
$("#menuType").val(menuType);
|
|
//$('#progrmFileNm').attr("readonly", false);
|
|
$('#url_tmp').val(menuManageVO.url);
|
|
}
|
|
|
|
//메뉴타입 설정
|
|
initShowUrl('Y');
|
|
$('#url').val(menuManageVO.url);
|
|
$(".main1_delete_btn").removeAttr("onclick");
|
|
$(".main1_delete_btn").attr("onclick", "fn_delete_menuInfo('"+menuManageVO.menuNo+"' , '"+menuManageVO.progrmFileNm+"' );return false;");
|
|
$(".main1_save_btn").removeAttr("onclick");
|
|
$(".main1_save_btn").attr("onclick", "fn_save_menuInfo('"+menuManageVO.menuNo+"');return false;");
|
|
|
|
$('.tr_item').remove();
|
|
if( ( "P" == $('#menuType').val() || "C" == $('#menuType').val()) && "ROLE_ANONYMOUS"==$('#authorCode').val() ){ //추가 게시판 조회(프로그램/사용자 화면만 조회)
|
|
$('#tr_add_bbs').show();
|
|
set_bbs();
|
|
}else{
|
|
$('#tr_add_bbs').hide();
|
|
}
|
|
|
|
$('#htmlComfirm').hide();
|
|
if(""!=menuManageVO.progrmHtmlFileId){
|
|
$('#htmlComfirm').show();
|
|
$('#a_contentLink').attr("onclick" , "htmlComfirm('"+menuManageVO.progrmHtmlFileId+"');")
|
|
}
|
|
|
|
if(menuManageVO.menuNo > 10){
|
|
$('#menuOpen').show();
|
|
var authorChkList = $("input[name=authorChkList]");
|
|
|
|
$("input[name=authorChkList]").prop('checked', false);
|
|
|
|
for(var i = 0 ; i < authorChkList.size() ; i++){
|
|
for(var j = 0 ; j < authorList.length ; j++){
|
|
if(authorChkList[i].id == authorList[j].authorCode){
|
|
authorChkList[i].checked = true;
|
|
}
|
|
}
|
|
}
|
|
}else{
|
|
$('#menuOpen').hide();
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
//메뉴 정보 삭제
|
|
function fn_delete_menuInfo(menuNo , progrmFileNm ) {
|
|
if(menuNo == null || "undefined"== menuNo){
|
|
alert("삭제 하려는 메뉴를 먼저 선택해주세요.");
|
|
return ;
|
|
}
|
|
|
|
var instance = $('#itn_organization').jstree(true);
|
|
if(instance.get_node(menuNo).children.length != 0){
|
|
alert("하위 메뉴를 먼저 삭제 후 메뉴를 삭제해 주세요.");
|
|
return;
|
|
}
|
|
|
|
if (confirm("메뉴를 삭제 하시겠습니까?")){
|
|
$.ajax({
|
|
type:"POST",
|
|
"url" : "<c:url value='/sym/mnu/mcm/EgovMenuInfoDeleteAjax.do'/>",
|
|
data:{ "menuNo" : menuNo , "progrmFileNm" : progrmFileNm , "authorCode" : $('#authorCode').val() },
|
|
dataType:'json',
|
|
//timeout:(1000*30),
|
|
success : function(returnData, status) {
|
|
if (returnData.status == "success") {
|
|
// 직원 목록 갱신
|
|
var instance = $('#itn_organization').jstree(true);
|
|
//$("#" + instance.get_node(partIdx).a_attr.id).trigger("click");
|
|
alert("메뉴 정보가 삭제 되었습니다.");
|
|
$("#itn_organization").jstree("refresh");
|
|
fn_init_menuInfo();
|
|
} else if(returnData.status == "duplPk"){
|
|
alert("삭제하려는 메뉴를 참조하고 있는 메뉴가 있습니다.\n 참조하는 메뉴를 삭제후 다시 시도해 주세요\n"+ "("+returnData.menuManageResultVO.menuCours+")");
|
|
|
|
}
|
|
else {
|
|
alert("메뉴 삭제가 실패되었습니다.");
|
|
|
|
}
|
|
},
|
|
error : function(request , status, error) {
|
|
alert("메뉴 삭제가 실패되었습니다..");
|
|
},
|
|
complete : function (){
|
|
deleteLodingBar();
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
//메뉴정보 init(메뉴 초기화)
|
|
function fn_init_menuInfo() {
|
|
$("#menuTopNm").text("메뉴선택");
|
|
$("#menuForm input[type=text]").val("")
|
|
$('#menuCours').text("");
|
|
$('#upperMenuIdText').text("");
|
|
/* $('#progrmFileNmText').text(""); */
|
|
}
|
|
|
|
//메뉴 초기화
|
|
function jstreeRefresh() {
|
|
var searchForm = document.searchForm ;
|
|
searchForm.authorCode.value = $('#authorCode').val();
|
|
searchForm.submit();
|
|
}
|
|
|
|
|
|
//메뉴 정보 저장. 등록/수정
|
|
function fn_save_menuInfo(menuNo) {
|
|
if(menuNo == null || "undefined"== menuNo){
|
|
alert("저장 하려는 메뉴를 먼저 메뉴트리에서 생성해 주세요."); return ;
|
|
}
|
|
|
|
var menuForm = document.menuForm;
|
|
if(""==menuForm.menuNo.value){
|
|
alert("메뉴번호는 필수 값입니다"); return;
|
|
}
|
|
|
|
if(!$.isNumeric(menuForm.menuNo.value)){
|
|
alert("메뉴번호는 숫자만 가능합니다."); return;
|
|
}
|
|
|
|
if(!$.isNumeric(menuForm.menuOrdr.value)){
|
|
alert("메뉴순서는 숫자만 가능합니다."); return;
|
|
}
|
|
|
|
var menuType = $("#menuType option:selected").val();
|
|
if(menuType !="M"){
|
|
if($("#progrmFileNm").val() == ""){
|
|
alert("프로그램 파일명은 필수 값입니다");
|
|
return;
|
|
}
|
|
}
|
|
|
|
if(!confirm("저장하시겠습니까?")) return;
|
|
|
|
var url = "";
|
|
url = "<c:url value='/sym/mnu/mcm/EgovMenuInfoUpdateAjax.do'/>";
|
|
var params = $(menuForm).serialize();
|
|
$.ajax({
|
|
type:"POST",
|
|
"url":url,
|
|
data:params,
|
|
dataType:'json',
|
|
success : function(returnData, status) {
|
|
if (returnData.status == "success") {
|
|
alert("메뉴 정보가 저장 되었습니다.");
|
|
var instance = $('#itn_organization').jstree(true);
|
|
$('#'+instance.get_node($('#tmp_Id').val()).a_attr.id).trigger("click");//이전 메뉴id선택되게
|
|
$('#tmp_Id').val($('#menuNo').val());
|
|
} else if(returnData.status == "upperDupl"){
|
|
alert("상위 메뉴 번호가 있습니다.");
|
|
|
|
}else if(returnData.status == "dupl"){
|
|
alert("이미 사용하고 있는 메뉴 번호가 있습니다.");
|
|
|
|
}else if(returnData.status == "duplProNm"){
|
|
alert("이미 사용하고 있는 프로그램파일명이 있습니다.");
|
|
|
|
}else if(returnData.status == "authorFail"){
|
|
alert("메뉴권한등록에 실패했습니다.");
|
|
|
|
}else{
|
|
alert("ERROR");
|
|
}
|
|
},
|
|
error : function(request , status, error) {
|
|
alert("메뉴 정보 저장이 실패되었습니다.");
|
|
},
|
|
complete : function () {
|
|
$("#itn_organization").jstree("refresh");
|
|
deleteLodingBar();
|
|
}
|
|
});
|
|
}
|
|
|
|
//메뉴 초기화
|
|
function initShowUrl(init){
|
|
var menuType = $("#menuType option:selected").val();
|
|
|
|
$("#url").val("");
|
|
$("#showUrl").hide();
|
|
$("#btnContent").hide();
|
|
$("#btnBBS").hide();
|
|
$('#htmlComfirm').hide();
|
|
$('#BBSNameSpan').text("");
|
|
if("M" == menuType){ //메뉴
|
|
$("#progrmFileNm").val("dir");
|
|
$("#url").val("");
|
|
$('#progrmFileNm').attr("readonly", true);
|
|
}else{
|
|
$("#progrmFileNm").val($("#progrmFileNm_tmp").val());
|
|
$("#url").val($("#url_tmp").val());
|
|
|
|
if("P" == menuType){ //프로그램
|
|
$('#progrmFileNm').attr("readonly", false);
|
|
$("#url").attr("readonly", false);
|
|
}else if("C" == menuType ){ //컨텐츠
|
|
$('#progrmFileNm').attr("readonly", false);
|
|
$("#url").attr("readonly", false);
|
|
}else if("B" == menuType){ //게시판
|
|
$('#progrmFileNm').attr("readonly", false);
|
|
$("#url").attr("readonly", false);
|
|
}else if("O" == menuType){ //게시판
|
|
$('#progrmFileNm').attr("readonly", false);
|
|
$("#url").attr("readonly", false);
|
|
}
|
|
if(init=='N'){
|
|
var instance = $('#itn_organization').jstree(true);
|
|
if($('#itn_organization').jstree('get_selected')[0] != null){
|
|
if(instance.get_node($('#itn_organization').jstree('get_selected')[0]).children.length != 0){
|
|
alert("하위 메뉴가 있을경우는 다른타입으로 변경할수 없습니다.");
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
$("#showUrl").show();
|
|
if("C" == menuType){
|
|
$("#btnContent").show();
|
|
$("#url").attr("readonly", false);
|
|
}else if("B" == menuType){
|
|
$("#btnBBS").show();
|
|
$("#url").attr("readonly", false);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
var docWidth = screen.availWidth;
|
|
var docHeight = screen.availHeight;
|
|
var scX = window.screenX||window.screenLeft||0;
|
|
var scY = window.screenY||window.screenTop||0;
|
|
/* ********************************************************
|
|
* 게시판목록조회 함수
|
|
******************************************************** */
|
|
function searchBBSId(obj) {
|
|
var popupX = scX + (docWidth - 185) / 2;
|
|
var popupY = scY + (docHeight - 195) / 2;
|
|
|
|
memuPopup = window.open('', 'memuPopup', "width=800, height=730, left="+popupX+", top="+popupY, "location = no","status= no","toolbars= no");
|
|
document.searchForm.method = "post";
|
|
if("menuAdd"==$(obj).attr('id')){ //추가게시판 버튼 클릭시
|
|
document.searchForm.seCd.value = $(obj).attr('id');
|
|
document.searchForm.searchNm.value = $(obj).attr('value');
|
|
}
|
|
document.searchForm.action = "/cop/bbs/EgovBBSIdListSearch.do";
|
|
document.searchForm.target = "memuPopup" ;
|
|
document.searchForm.submit();
|
|
document.searchForm.target = "_self" ;
|
|
document.searchForm.action= "/sym/mnu/mcm/EgovMenuCreatSelectJtree.do";
|
|
}
|
|
|
|
/* ********************************************************
|
|
* 화면컨텐츠ID 검색 팝업
|
|
******************************************************** */
|
|
var memuPopup ="";
|
|
function searchContentList() {
|
|
var popupX = scX + (docWidth - 185) / 2;
|
|
var popupY = scY + (docHeight - 195) / 2;
|
|
|
|
memuPopup = window.open('', 'memuPopup', "width=800, height=730, left="+popupX+", top="+popupY, "location = no","status= no","toolbars= no");
|
|
document.searchForm.method = "post";
|
|
document.searchForm.action = "/uss/ion/cnt/contentListPopup.do";
|
|
document.searchForm.target = "memuPopup" ;
|
|
document.searchForm.submit();
|
|
document.searchForm.target = "_self" ;
|
|
document.searchForm.action= "/sym/mnu/mcm/EgovMenuCreatSelectJtree.do";
|
|
}
|
|
|
|
function onkeyContentName(event){
|
|
var tempContentUrl = "/web/content.do?proFn=" ;
|
|
if($("#menuType option:selected").val()=="C"){
|
|
$("#url").val(tempContentUrl + $("#progrmFileNm").val()) ;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//행추가
|
|
function add_line(bbsInfo){
|
|
var eva_temp_tr = $('#temp_tr').clone();
|
|
$('#tbl_bbsId').append(eva_temp_tr);
|
|
eva_temp_tr.attr('id' , 'tr_bbs').attr('class' , 'tr_item');
|
|
{ //변수 변경
|
|
var tr_item_length = $('.tr_item').size()-1 ;
|
|
eva_temp_tr.find("#temp_bbsTxt").attr('name', eva_temp_tr.find("#temp_bbsTxt").attr('name').replace('[]' , '['+tr_item_length+']' )) ;
|
|
eva_temp_tr.find("#temp_bbsTxt").attr('id' , 'bbsTxt_'+tr_item_length) ;
|
|
eva_temp_tr.find("#temp_bbsIds").attr('name', eva_temp_tr.find("#temp_bbsIds").attr('name').replace('[]' , '['+tr_item_length+']' )) ;
|
|
eva_temp_tr.find("#temp_bbsIds").attr('id' , 'menuAdd_'+tr_item_length) ;
|
|
eva_temp_tr.find("#temp_bbsSorts").attr('name' , eva_temp_tr.find("#temp_bbsSorts").attr('name').replace('[]' , '['+tr_item_length+']' ) ) ;
|
|
eva_temp_tr.find("#temp_bbsSorts").attr('id' , 'bbsSorts_'+tr_item_length) ;
|
|
eva_temp_tr.find("#menuAdd").attr('value' , 'menuAdd_'+tr_item_length ) ;
|
|
}
|
|
if(null != bbsInfo){
|
|
$('#bbsTxt_'+tr_item_length).val(bbsInfo.bbsNm);
|
|
$('#bbsSorts_'+tr_item_length).val(bbsInfo.bbsSort);
|
|
$('#menuAdd_'+tr_item_length).val(bbsInfo.bbsId);
|
|
|
|
}
|
|
}
|
|
|
|
//삭제시 배열 초기화
|
|
var arrCd = [];
|
|
function set_count(){ //tr 세팅
|
|
$('.tr_item').each(function(index, item){
|
|
$(this).find('input[name^=bbsTxt]').attr('name', 'bbsTxt['+index+']' ).attr('id' , 'bbsTxt_'+index ) ;
|
|
$(this).find('input[name^=bbsSorts]').attr('name', 'bbsSorts['+index+']' );
|
|
$(this).find('input[name^=bbsIds]').attr('name', 'bbsIds['+index+']' ).attr('id' , 'menuAdd_'+index ) ;
|
|
$(this).find('#menuAdd').attr('value' , 'menuAdd_'+index) ;
|
|
});
|
|
}
|
|
|
|
var arrDel = []; //1차배열
|
|
function delete_line(obj){
|
|
$(obj).parent().parent().remove();
|
|
set_count();
|
|
}
|
|
|
|
function htmlComfirm(progrmHtmlFileId) {
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/sym/mnu/mcm/HtmlComfirmAjax.do",
|
|
data:{
|
|
"cntId": progrmHtmlFileId
|
|
},
|
|
dataType:'json',
|
|
timeout: 600000,
|
|
success: function (returnData, status) {
|
|
if(status == 'success'){
|
|
console.log("sdfsdf");
|
|
window.open("/uss/ion/cnt/cntManageInsert.do?cntId="+returnData.cntManageVO.cntId+"&cntDtId="+returnData.cntManageVO.cntDtId);
|
|
}else{
|
|
//alert("등록에 실패하였습니다.");
|
|
return false;
|
|
}
|
|
},
|
|
error: function (e) {
|
|
console.log("ERROR : ", e);
|
|
alert("등록에 실패하였습니다.");
|
|
}
|
|
});
|
|
}
|
|
|
|
function set_bbs(){
|
|
var frm = document.menuForm;
|
|
var data = new FormData(frm);
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/sym/mnu/mcm/MenuBbsSelectAjax.do",
|
|
data: data,
|
|
dataType:'json',
|
|
processData: false,
|
|
contentType: false,
|
|
cache: false,
|
|
timeout: 600000,
|
|
success: function (returnData, status) {
|
|
if(status == 'success'){
|
|
for(var i = 0 ; i < returnData.boardMasterList.length ; i++){
|
|
add_line(returnData.boardMasterList[i]);
|
|
}
|
|
}else{
|
|
alert("등록에 실패하였습니다.");
|
|
}
|
|
},
|
|
error: function (e) {
|
|
console.log("ERROR : ", e);
|
|
alert("등록에 실패하였습니다.");
|
|
}
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
</script>
|
|
<title>메뉴관리</title>
|
|
</head>
|
|
<body>
|
|
|
|
<form name="searchForm" method="get" action="<c:url value='/sym/mnu/mcm/EgovMenuCreatSelectJtree.do'/>" >
|
|
<input name="authorCode" type="hidden" value="ROLE_ADMIN" />
|
|
<input name="seCd" type="hidden" value="" />
|
|
<input name="searchNm" type="hidden" value="" />
|
|
</form>
|
|
<form name="menuForm" id="menuForm" >
|
|
<input type="hidden" id="existChildNode" name="existChildNode" value="N" />
|
|
<input type="hidden" name="emplyrId" id="emplyrId" /><!-- 담당자ID -->
|
|
|
|
<!-- cont -->
|
|
<div class="cont_wrap">
|
|
|
|
<div class="box">
|
|
|
|
<!-- cont_tit -->
|
|
<div class="cont_tit">
|
|
<h2>메뉴관리</h2>
|
|
<ul class="cont_nav">
|
|
<li class="home"><a href="/"><i></i></a></li>
|
|
<li>
|
|
<p>메뉴 관리</p>
|
|
</li>
|
|
<li><span class="cur_nav">메뉴 관리</span></li>
|
|
</ul>
|
|
</div>
|
|
<!-- //cont_tit -->
|
|
|
|
|
|
<div class="cont">
|
|
|
|
<%-- <div class="menu_select">
|
|
<select name="authorCode" id="authorCode" class="select" onchange="jstreeRefresh(); return false;" title="검색조건선택">
|
|
<option value='ROLE_ANONYMOUS' <c:if test="${menuCreatVO.authorCode == 'ROLE_ANONYMOUS' || empty menuCreatVO.authorCode }">selected</c:if>>사용자</option>
|
|
<option value='ROLE_ADMIN' <c:if test="${menuCreatVO.authorCode == 'ROLE_ADMIN' }">selected</c:if>>관리자</option>
|
|
<c:forEach var="authorList" items="${authorList}" varStatus="status">
|
|
<option value='${authorList.authorCode}' <c:if test="${menuCreatVO.authorCode == authorList.authorCode}">selected</c:if>>${authorList.authorCode}</option>
|
|
</c:forEach>
|
|
</select>
|
|
</div> --%>
|
|
|
|
<div class="menu_wrap">
|
|
<div class="menu_area">
|
|
<div class="btn_wrap">
|
|
<button type="button" class="btnType02 all_open" onclick="$('#itn_organization').jstree('open_all' );">모두열기</button>
|
|
<button type="button" class="btnType03 all_close" onclick="$('#itn_organization').jstree('close_node' , $('#0') );">모두닫기</button>
|
|
</div>
|
|
<div class="menu_list" id="itn_organization" class="jstree_orgChart"></div>
|
|
</div>
|
|
<div class="menu_detail">
|
|
<p class="menu_detail_tit">메뉴 추가등록 상세</p>
|
|
<table class="tbType02">
|
|
<colgroup>
|
|
<col style="width: 215px;">
|
|
<col style="width: auto;">
|
|
</colgroup>
|
|
<tbody>
|
|
<tr>
|
|
<th><span>메뉴번호</span></th>
|
|
<td>
|
|
<div id="select_part">
|
|
<input type="text" name="menuNo" id="menuNo" />
|
|
<input type="hidden" id="tmp_Id" name="tmp_Id"/><!-- 이전메뉴 No -->
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th><span>메뉴명</span></th>
|
|
<td>
|
|
<input type="text" name="menuNm" id="menuNm" />
|
|
<input type="hidden" id="tmp_Name" name="tmp_Name"/><!-- 이전메뉴 이름 -->
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th><span>메뉴설명</span></th>
|
|
<td>
|
|
<input type="text" name="menuDc" id="menuDc" style="width:100%;"/>
|
|
<input type="hidden" id="dc_Name" name="dc_Name"/><!-- 이전메뉴 이름 -->
|
|
<br/>상세페이지에 대한 제어가 필요한 경우 상세 페이지 주소를 넣으면 된다.
|
|
<br/>ex)adjReqMgrRegDetail
|
|
</td>
|
|
</tr>
|
|
|
|
|
|
|
|
<tr>
|
|
<th><span>타입</span></th>
|
|
<td>
|
|
<select name="menuType" id="menuType" title="" onchange="initShowUrl('N'); return false;">
|
|
<option value="M" <c:if test="${userSearchVO.menuType == 'M'}">selected="selected"</c:if> >메뉴</option>
|
|
<option value="P" <c:if test="${userSearchVO.menuType == 'P'}">selected="selected"</c:if> >프로그램</option>
|
|
<option value="C" <c:if test="${userSearchVO.menuType == 'C'}">selected="selected"</c:if> >HTML컨텐츠</option>
|
|
<option value="B" <c:if test="${userSearchVO.menuType == 'B'}">selected="selected"</c:if> >게시판</option>
|
|
<option value="O" <c:if test="${userSearchVO.menuType == 'O'}">selected="selected"</c:if> >외부링크</option>
|
|
</select>
|
|
<span>
|
|
|
|
<a style="display: none;cursor:pointer;" id="btnContent"
|
|
target="_blank" title="새창으로" onclick="searchContentList(); return false;"
|
|
style="selector-dummy:expression(this.hideFocus=false);" >
|
|
<img src="<c:url value='/img/post/serch_img.png' />" alt='컨텐츠ID 검색' width="15" height="15" />
|
|
<span style="vertical-align: middle;">(화면컨텐츠ID 검색)</span>
|
|
</a>
|
|
<span style="display: none;cursor:pointer;padding-left:30px;vertical-align:middle;" id="htmlComfirm">
|
|
<a href="#" onclick="htmlComfirm();" id="a_contentLink">확인</a>
|
|
</span>
|
|
|
|
<span id="contentNameSpan" style="color: blue"></span>
|
|
<a style="display: none;cursor:pointer;" id="btnBBS"
|
|
target="_blank" title="새창으로" onclick="searchBBSId(); return false;"
|
|
style="selector-dummy:expression(this.hideFocus=false);" >
|
|
<img src="<c:url value='/img/post/serch_img.png' />" alt='게시판ID 검색' width="15" height="15" />
|
|
<span style="vertical-align: middle;">(게시판ID 검색)</span>
|
|
</a>
|
|
<span id="BBSNameSpan" style="color: blue"></span>
|
|
<span id="showUrl" style="display: none;" >
|
|
<br>
|
|
URL <input type="text" name="url" id="url" style="width:100%;"/>
|
|
<input type="hidden" id="url_tmp" name="url_tmp"/>
|
|
</span>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th><span>상위메뉴번호</span></th>
|
|
<td>
|
|
<span id="upperMenuIdText"></span>
|
|
<input type="hidden" id="upperMenuId" name="upperMenuId"/>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th><span>프로그램파일명</span></th>
|
|
<td>
|
|
<input type="text" name="progrmFileNm" id="progrmFileNm" readonly="readonly" onkeyup="onkeyContentName(event);" />
|
|
<input type="hidden" name="progrmHtmlFileId" id="progrmHtmlFileId" />
|
|
<input type="hidden" name="progrmBbsId" id="progrmBbsId" />
|
|
<input type="hidden" name="progrmFileNm_tmp" id="progrmFileNm_tmp" />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th><span>메뉴경로</span></th>
|
|
<td>
|
|
<span id="menuCours">
|
|
</span>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th><span>메뉴순서</span></th>
|
|
<td>
|
|
<input type="text" name="menuOrdr" id="menuOrdr" />
|
|
</td>
|
|
</tr>
|
|
<tr id="menuOpen">
|
|
<th><span>메뉴노출</span></th>
|
|
<td>
|
|
<!-- <select name="useYn" id="useYn" title="" > -->
|
|
<!-- </select> -->
|
|
<%-- <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> --%>
|
|
<c:forEach var="authorList" items="${authorList}" varStatus="status">
|
|
<div>
|
|
<%-- <input type="checkbox" id="${authorList.authorCode}" name="${authorList.authorCode}" value="${authorList.authorCode}"/>
|
|
<label for="${authorList.authorCode}"> ${authorList.authorNm} </label> --%>
|
|
<input name="authorChkList" id="<c:out value="${authorList.authorCode}"/>" title="Check <c:out value="${status.count}"/>" type="checkbox" value="${authorList.authorCode}"/>
|
|
<label for="<c:out value="${authorList.authorCode}"/>" style="position: unset;"><c:out value="${authorList.authorCode}"/></label>
|
|
</div>
|
|
</c:forEach>
|
|
</td>
|
|
</tr>
|
|
<c:if test="${menuManageVO.authorCode == 'ROLE_ANONYMOUS'}">
|
|
<tr id="satisTr">
|
|
<th><span>만족도 평가</span></th>
|
|
<td>
|
|
<select name="satisYn" id="satisYn" title="" >
|
|
<option value="Y" <c:if test="${userSearchVO.satisYn == 'Y'}">selected="selected"</c:if> >사용</option>
|
|
<option value="N" <c:if test="${userSearchVO.satisYn == 'N'}">selected="selected"</c:if> >미사용</option>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
</c:if>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- btn_wrap -->
|
|
<div class="btn_wrap btn_layout01">
|
|
<div class="area_left">
|
|
|
|
</div>
|
|
<div class="area_right">
|
|
<button type="button" class="btnType04 main1_delete_btn" onClick="fn_delete_menuInfo(); return false;">삭제</button>
|
|
<button type="button" class="btnType06 main1_save_btn" onClick="fn_save_menuInfo(); return false;">저장</button>
|
|
</div>
|
|
</div>
|
|
<!-- //btn_wrap -->
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- //cont -->
|
|
</form>
|
|
|
|
<table id="eva_temp_table" style="display:none">
|
|
<tr id="temp_tr">
|
|
<td>
|
|
게시판<input type="text" name="bbsTxt[]" id="temp_bbsTxt" style="width:4%;" readonly="readonly">
|
|
순서<input type="text" name="bbsSorts[]" id="temp_bbsSorts" style="width:1%;" >
|
|
<input type="hidden" name="bbsIds[]" id="temp_bbsIds" style="width:4%;" readonly="readonly">
|
|
<input type="button" value="삭제" onclick="delete_line(this);">
|
|
<a id="menuAdd" value="bbsIds[]" style="cursor:pointer;" target="_blank" title="새창으로" onclick="searchBBSId(this); return false;">
|
|
<img src="/img/post/serch_img.png" alt="게시판ID 검색" width="15" height="15">
|
|
<span style="vertical-align: middle;">게시판 검색</span>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</body>
|
|
</html>
|