Files
eapim-admin/WebContent/jsp/onl/transaction/tracking/trackingManTransformpopup.jsp
T
Rinjae c54ef1903f init
2025-09-05 17:16:26 +09:00

599 lines
21 KiB
Plaintext

<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@ page import="java.io.*"%>
<%@ page import="com.eactive.eai.rms.common.login.SessionManager"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ include file="/jsp/common/include/localemessage.jsp" %>
<%
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Expires", "0");
%>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<jsp:include page="/jsp/common/include/css.jsp"/>
<jsp:include page="/jsp/common/include/script.jsp"/>
<script language="javascript" >
var srcGroup;
var tgtGroup;
var srcGrid ;
var tgtGrid ;
var url ='<c:url value="/onl/admin/rule/transformMan.json" />';
var url_excel = '<c:url value="/onl/admin/rule/layoutMan.excel"/>';
var returnUrl = getReturnUrlForReturn();
var roleString = "<%=SessionManager.getRoleIdString(request)%>";
var srcCurRowId;
var tarCurRowId;
var srcSelectRowId;
var tarSelectRowId;
var srcSelectRowId2;
var tarSelectRowId2;
function getSourceResult(cnvsnName){
$.ajax({
type : "POST",
url:url,
dataType:"json",
data:{cmd : 'LIST_TRANSFORM_SOURCE_RESULT', cnvsnName : cnvsnName},
success:function(json){
var data = json.rows;
if(data.length == 0){
alert("데이터 없음");
return;
}
var src = null;
var tgt = null;
var type = null;
for ( var i = 0; i < data.length; i++) {
if (data[i]['SOURCRSULTDSTCD'] == 'SRC_LAYOUT' ){
src = data[i]['LOUTNAME'];
$("input[name=srcLayout]").val(src);
type = data[i]['LOUTPTRNNAME'];
$("#srcType").text(type);
}else if (data[i]['SOURCRSULTDSTCD'] == 'TGT_LAYOUT' ){
tgt = data[i]['LOUTNAME'];
$("input[name=tgtLayout]").val(tgt);
type = data[i]['LOUTPTRNNAME'];
$("#tgtType").text(type);
}
}
if (src !=null){
srcGrid.setGridParam( {url :url ,postData: { cmd : 'LIST_LAYOUT_ITEM', loutName: src } }).trigger("reloadGrid");
}
if (tgt !=null){
tgtGrid.setGridParam( {url :url ,postData: { cmd : 'LIST_TRANSFORM_ITEM', loutName: tgt ,cnvsnName : cnvsnName} }).trigger("reloadGrid");
}
},
error:function(e){
alert(e.responseText);
}
});
}
function setTgtCell(){
var rowId = tgtGrid.getGridParam( "selrow" );
tgtGrid.jqGrid('setCell',rowId,'CNVSNRSULTITEMPATHNAME',$('textarea[name=CNVSNRSULTITEMPATHNAME]').val());
tgtGrid.jqGrid('setCell',rowId,'CNVSNCMDNAME',$('textarea[name=CNVSNCMDNAME]').val());
tgtGrid.jqGrid('setCell',rowId,'CNVSNITEMBASCVAL',$('input[name=CNVSNITEMBASCVAL]').val() == "" ? null : $('input[name=CNVSNITEMBASCVAL]').val());
tgtGrid.jqGrid('setCell',rowId,'CNVSNITEMSERNO',$('input[name=CNVSNITEMSERNO]').val());
}
function addGroupTag(group,data){
var result = data;
var datas = data.split(".");
var comp = datas[0];
var arr = new Array();
for(var i=1;i<datas.length;i++){
comp = comp +"." +datas[i];
if (group[comp] != undefined){
//값이 있음
arr.push(comp);
}
}
for(var i=arr.length;i > 0;i--){
var a = arr.pop();
result = result.substr(0,result.indexOf(a)+a.length) + "[*]"+ result.substring(result.indexOf(a)+a.length);
}
return result;
}
function tgtGridSelect(loutitempath, rowId){
var ids = $("#targetLayout").jqGrid('getDataIDs');
var tarItempath ;
//console.log("항목명 :"+loutitempath)
for ( var i = 0 ; i < ids.length; i++) {
tarItempath = $('#targetLayout').jqGrid('getCell', ids[i],'CNVSNCMDNAME'); //rowData.id;
tarItempath = tarItempath.replace("[*]","");
loutitempath = loutitempath.replace("[*]","");
//console.log("타겟항목명 :"+tarItempath)
if(loutitempath != '' && tarItempath.indexOf(loutitempath) > -1){
tarSelectRowId = ids[i];
srcSelectRowId = rowId;
if(tarSelectRowId2 != ids[i]){
$("#targetLayout tr[id="+ids[i]+"]").css("background-color","#BBEEEE");
}
if(srcSelectRowId2 != rowId){
$("#sourceLayout tr[id="+rowId+"]").css("background-color","#BBEEEE");
}
}else{
if(tarCurRowId != ids[i]){
$("#targetLayout tr[id="+ids[i]+"]").css("background-color","#FFFFFF");
}
}
}
}
function srcGridSelect(loutitempath , rowId){
var ids = $("#sourceLayout").jqGrid('getDataIDs');
var srcItempath ;
//ascii2ebcdic(removepoint(BFF_KFK128BK61_REQ1.InData.주택사용총면적,5,2)) // ascii2ebcdic(EAI_XML_ERR.OutData.RpsntErrInfo.ErrmsgTreatCd)
if(loutitempath.indexOf("(") > -1){
var startIndex = loutitempath.lastIndexOf("(");
var lastIndex = loutitempath.lastIndexOf(")");
loutitempath = loutitempath.substring(startIndex+1,lastIndex);
}
if(loutitempath.indexOf(",") > -1){ //EAI_XML_ERR.OutData.RpsntErrInfo.ErrmsgTreatCd,3
var lastIndex = loutitempath.indexOf(",");
loutitempath = loutitempath.substring(0,lastIndex);
}
loutitempath = loutitempath.replace("[*]","");
//console.log("변환명령 :"+loutitempath)
for ( var i = 0 ; i < ids.length; i++) {
srcItempath = $('#sourceLayout').jqGrid('getCell', ids[i],'LOUTITEMPATH'); //항목명
srcItempath = srcItempath.replace("[*]","");
//console.log("항목명 :"+srcItempath)
if(loutitempath != '' && loutitempath == srcItempath){
srcSelectRowId2 = ids[i];
tarSelectRowId2 = rowId;
if(srcSelectRowId != ids[i]){
$("#sourceLayout tr[id="+ids[i]+"]").css("background-color","#EDD5DD");
}
if(tarSelectRowId != rowId){
$("#targetLayout tr[id="+rowId+"]").css("background-color","#EDD5DD");
}
}else{
if(srcCurRowId != ids[i]){
$("#sourceLayout tr[id="+ids[i]+"]").css("background-color","#FFFFFF");
}
}
}
}
function fnModalClose(){
var opener = window.dialogArguments['self'];
var url = opener.document.location.href;
if(url.indexOf("pop=true")>0){
opener.fnModalClose();
top.opener = null;
top.window.close();
}else{
opener.document.location.href=opener.document.URL;
top.opener = null;
top.window.close();
}
}
$(document).ready(function() {
//combo
$.ajax({
type : "POST",
url:url,
dataType:"json",
data:{cmd : 'LIST_INIT_COMBO',eaiSvcName: '${param.eaiSvcName}'},
success:function(json){
isAdmin = json.isAdmin;
//eaiSvcName combo
$("input[name=eaiSvcName]").val('${param.eaiSvcName}');
$("input[name=eaiSvcDesc]").val('${param.eaiSvcDesc}');
//transform combo
new makeOptions("CODE","NAME").setObj($("select[name=transformForEaiSvcNameCombo]")).setData(json.transformRows).setFormat(codeOptionFormat).setAttr("desc","NAME").rendering();
new makeOptions("CODE","NAME").setObj($("select[name=eaiSevrDStcd]")).setData(json.svrDstcd).setFormat(codeName3OptionFormat).rendering();
new makeOptions("CODE","NAME").setObj($("select[name=useYn]")).setData(json.useYnRows).setFormat(codeName3OptionFormat).rendering();
$("select[name=eaiSevrDStcd]").val('${param.eaiSevrDStcd}');
$("select[name=useYn]").val('${param.useYn}');
//setSearchable(selectName); // 콤보에 searchable 설정
if(json.transformRows.length == 0){
$("select[name=transformForEaiSvcNameCombo]").append("<option value='"+"${param.cnvsnName}"+"'>"+"${param.cnvsnName}"+"</option>");
$("input[name=cnvsnDesc]").val(("${param.cnvsnDesc}"!="undefined")?"${param.cnvsnDesc}":"");
}else{
$("select[name=transformForEaiSvcNameCombo]").val("${param.cnvsnName}").change();
$("input[name=cnvsnDesc]").val($("select[name=transformForEaiSvcNameCombo] option:selected").attr("desc"));
}
getSourceResult("${param.cnvsnName}");
},
error:function(e){
alert(e.responseText);
}
});
srcGrid = $("#sourceLayout");
srcGrid.jqGrid({
//url: '<c:url value="/onl/admin/rule/transformMan.json" />',
//postData : { cmd : 'LAYOUT_ITEM', loutName: 'LAC_BBSA311_CBSS'},
datatype:'json',
loadui: "disable",
mtype: 'POST',
colNames: ["id","원천 항목명","원천 항목명","번호","노드타입","길이","항목타입","LOUTITEMNODEPTRNIDNAME","LOUTITEMPTRNIDNAME","LOUTITEMPATH","LOUTNAME","LOUTITEMMAXOCCURNOITM","LOUTITEMREFINFO2"],
colModel: [
{name: "id" , hidden:true,key:true},
{name: "LOUTITEMNAME" , width:"250"},
{name: "LOUTITEMDESC" },
{name: "LOUTITEMSERNO" , align : 'right' ,width:"30"},
{name: "LOUTITEMNODEPTRNIDDESC" , width:"60"},
{name: "LOUTITEMLENCNT" , align : 'right' , width:"60"},
{name: "LOUTITEMPTRNIDDESC" , width:"80"},
{name: "LOUTITEMNODEPTRNIDNAME" , hidden:true},
{name: "LOUTITEMPTRNIDNAME" , hidden:true},
{name: "LOUTITEMPATH" , hidden:true},
{name: "LOUTNAME" , hidden:true},
{name: "LOUTITEMMAXOCCURNOITM" , hidden:true},
{name: "LOUTITEMREFINFO2" , hidden:true}
],
treeGrid: true,
treeGridModel: "adjacency",
ExpandColumn: "LOUTITEMNAME",
height:"500",
//direction:"rtl",
//autowidth: true,
rowNum: 10000,
//autowidth: true,
//ExpandColClick: true,
treeIcons: {leaf:'ui-icon-document-b'},
jsonReader: {
repeatitems: false
},
loadComplete:function (d){
var data = d.rows;
srcGroup = new Object();
for ( var i = 0; i < data.length; i++) {
//if (data[i]["LOUTITEMREFINFO2"] == null) continue;
if (data[i]["LOUTITEMPATH"].length > 0
&& (data[i]["LOUTITEMNODEPTRNIDNAME"] == "2202")
&& (data[i]["LOUTITEMMAXOCCURNOITM"] > 1
|| ( data[i]["LOUTITEMREFINFO2"] != null && data[i]["LOUTITEMREFINFO2"].trim().length > 1 )
)
) {
srcGroup[data[i]["LOUTITEMPATH"]]= data[i]["LOUTITEMPATH"];
}
}
//select box 에 추가
$("select[name=cnvsnCmdCombo]").html("");
for ( var i = 0; i < data.length; i++) {
if (data[i]['LOUTITEMNODEPTRNIDNAME'] != "2203" && data[i]['LOUTITEMNODEPTRNIDNAME'] != "2204") continue;
var str = new makeOptions("CODE","NAME").setData(addGroupTag(srcGroup,data[i]['LOUTITEMPATH']),addGroupTag(srcGroup,data[i]['LOUTITEMDESC'])).setFormat(codeName3OptionFormat).getOption();
$("select[name=cnvsnCmdCombo]").append(str);
}
},
loadBeforeSend : function (xhr,settings){
if(this.p.url ==null || this.p.url == ""){
this.p.loadBeforeSend = null;
return false;
}
},
loadError: function (jqXHR, textStatus, errorThrown) {
var location ='<%=request.getContextPath()%>/';
comloadError(jqXHR, textStatus, errorThrown ,location);
},
onSelectRow: function(rowId) {
var rowData = $(this).getRowData(rowId);
$('select[name=cnvsnCmdCombo]').val(addGroupTag(srcGroup,rowData['LOUTITEMPATH']));
//색상변경 추가
srcCurRowId = rowId;
var ids = $("#sourceLayout").jqGrid('getDataIDs');
for ( var i = 0 ; i < ids.length; i++) {
if(rowId != ids[i] && srcSelectRowId2 != ids[i]){
$("#sourceLayout tr[id="+ids[i]+"]").css("background-color","#FFFFFF");
}
}
var loutitemnodeptrnidname = $("#sourceLayout").jqGrid("getCell", rowId, "LOUTITEMNODEPTRNIDNAME");
if (loutitemnodeptrnidname == "2203" || loutitemnodeptrnidname == "2204"){
var selectValue = $('select[name=cnvsnCmdCombo]').val(); //변환명령 콤보
tgtGridSelect(selectValue, rowId);
}
}
});
tgtGrid = $("#targetLayout");
tgtGrid.jqGrid({
//url: '<c:url value="/onl/admin/rule/transformMan.json" />',
//postData : { cmd : 'LAYOUT_ITEM', loutName: 'LAC_BBSA311_ORGS'},
datatype:'json',
loadui: "disable",
mtype: 'POST',
colNames: ["id","타겟 항목명","타겟 항목명","번호","노드타입","길이","항목타입","LOUTITEMNODEPTRNIDNAME","LOUTITEMPTRNIDNAME","LOUTITEMPATH","LOUTNAME","CNVSNNAME","CNVSNRSULTITEMPATHNAME" ,"변환 명령","CNVSNITEMBASCVAL","CNVSNITEMSERNO"
],
colModel: [
{name: "id" , hidden:true,key:true},
{name: "LOUTITEMNAME" , width:"250" },
{name: "LOUTITEMDESC" },
{name: "LOUTITEMSERNO" , align : 'right' , width:"30" },
{name: "LOUTITEMNODEPTRNIDDESC" , width:"60" },
{name: "LOUTITEMLENCNT" , align : 'right' , width:"60"},
{name: "LOUTITEMPTRNIDDESC" , width:"80" },
{name: "LOUTITEMNODEPTRNIDNAME" , hidden:true},
{name: "LOUTITEMPTRNIDNAME" , hidden:true},
{name: "LOUTITEMPATH" , hidden:true},
{name: "LOUTNAME" , hidden:true},
{name: "CNVSNNAME" , hidden:true}, //변환 명
{name: "CNVSNRSULTITEMPATHNAME" , hidden:true}, //타겟 항목명
{name: "CNVSNCMDNAME" , width:"400"}, //변환 명령
{name: "CNVSNITEMBASCVAL" , hidden:true}, //기본값
{name: "CNVSNITEMSERNO" , hidden:true} //매핑순서
],
treeGrid: true,
treeIcons : {
plus: "ui-icon-circlesmall-plus",
minus: "ui-icon-circlesmall-minus",
leaf : "ui-icon-document"
},
treeGridModel: "adjacency",
ExpandColumn: "LOUTITEMNAME",
height:"500",
//autowidth: true,
rowNum: 10000,
//ExpandColClick: true,
treeIcons: {leaf:'ui-icon-document-b'},
jsonReader: {
repeatitems: false
},
loadComplete:function (d){
var data = d.rows;
tgtGroup = new Object();
for ( var i = 0; i < data.length; i++) {
if (data[i]["LOUTITEMPATH"].length > 0
&& (data[i]["LOUTITEMNODEPTRNIDNAME"] == "2202")
&& (data[i]["LOUTITEMMAXOCCURNOITM"] > 1
|| ( data[i]["LOUTITEMREFINFO2"] != null && data[i]["LOUTITEMREFINFO2"].trim().length > 1 )
)
) {
tgtGroup[data[i]["LOUTITEMPATH"]]= data[i]["LOUTITEMPATH"];
}
}
},
loadBeforeSend : function (xhr,settings){
if(this.p.url ==null || this.p.url == ""){
this.p.loadBeforeSend = null;
return false;
}
},
loadError: function (jqXHR, textStatus, errorThrown) {
var location ='<%=request.getContextPath()%>/';
comloadError(jqXHR, textStatus, errorThrown ,location);
},
onSelectRow: function(rowId) {
var rowData = $(this).getRowData(rowId);
$('textarea[name=CNVSNRSULTITEMPATHNAME]').val(rowData['CNVSNRSULTITEMPATHNAME']);//
$('textarea[name=CNVSNCMDNAME]').val(rowData['CNVSNCMDNAME']);
$('input[name=CNVSNITEMBASCVAL]').val(rowData['CNVSNITEMBASCVAL']);
$('input[name=CNVSNITEMSERNO]').val(rowData['CNVSNITEMSERNO']);
//색상변경 추가
tarCurRowId = rowId;
var ids = $("#targetLayout").jqGrid('getDataIDs');
for ( var i = 0 ; i < ids.length; i++) {
if(tarSelectRowId != ids[i] && ids[i] != rowId ){
$("#targetLayout tr[id="+ids[i]+"]").css("background-color","#FFFFFF");
}
}
var loutitemnodeptrnidname = $("#targetLayout").jqGrid("getCell", rowId, "LOUTITEMNODEPTRNIDNAME");
if (loutitemnodeptrnidname == "2203" || loutitemnodeptrnidname == "2204"){
var selectValue = $("#targetLayout").jqGrid("getCell", rowId, "CNVSNCMDNAME"); //변환명령
srcGridSelect(selectValue , rowId);
}
}
});
resizeJqGridWidth('sourceLayout','sourceLayoutTd','1000');
resizeJqGridWidth('targetLayout','targetLayoutTd','1000');
$("input[name=srcLayout],[name=tgtLayout]").dblclick(function(){
var layoutName = $(this).val();
if($.trim(layoutName) =="") return;
var args = new Object();
var url = '<c:url value="/onl/admin/rule/layoutMan.view" />';
url += "?cmd=DETAILPOPUP";
url += '&loutName='+layoutName;
url += '&pop=true';
showModal2(url,args,890,940,'','scroll:on');
});
$("textarea[name=CNVSNRSULTITEMPATHNAME],textarea[name=CNVSNCMDNAME],input[name=CNVSNITEMBASCVAL],input[name=CNVSNITEMSERNO]").blur(function(){
var rowId = tgtGrid.getGridParam( "selrow" );
if (isNull(rowId)) return;
setTgtCell();
});
$("#btn_close").click(function(){
window.close();
});
$("#btn_excel_src").click(function(event) {
var url ='<c:url value="/onl/admin/rule/layoutMan.json" />';
event.stopPropagation(); // Do not propagate the event.
// Create an object that will manage to download the file.
var target = "excelDown" ; // iframe의 name
gridToExcelSubmit1(url_excel,target,"LIST_GRID_TO_EXCEL",srcGrid,$("#ajaxForm"),$("input[name=srcLayout]").val());
return false;
});
$("#btn_excel_tgt").click(function(event) {
var url ='<c:url value="/onl/admin/rule/layoutMan.json" />';
event.stopPropagation(); // Do not propagate the event.
// Create an object that will manage to download the file.
var target = "excelDown" ; // iframe의 name
gridToExcelSubmit1(url_excel,target,"LIST_GRID_TO_EXCEL",tgtGrid,$("#ajaxForm"),$("input[name=tgtLayout]").val());
return false;
});
$("#btn_cnvsnDetail").click(function(){
var cnvsnName = $("input[name=cnvsnName]").val(); //변환매핑 코드
var tgtLayout =$("input[name=tgtLayout]").val();
var srcLayout =$("input[name=srcLayout]").val();
var url2 = '<c:url value="/onl/admin/rule/transformMan.view" />';
var args = new Object();
url2 = url2 + "?cmd=DETAIL POPUP";
url2 += '&cnvsnName='+cnvsnName;
url2 += '&tgt_layout='+tgtLayout;
url2 += '&src_layout='+srcLayout;
url2 += '&pop=true';
showModal2(url2,args,1200,700,"","scroll:on");
});
buttonControl(true);
setBtnHide(roleString, "admin", "btn_initialize");
});
</script>
<style>
#btn_excel_src {cursor:pointer}
#btn_excel_tgt {cursor:pointer}
</style>
</head>
<body>
<div class="popup_box">
<div class="search_wrap">
<img id="btn_close" src="<c:url value="/img/btn_close.png"/>" level="R" status="DETAIL,NEW"/>
</div>
<div class="title">변환매핑 정보</div>
<table class="table_row" cellspacing="0" >
<tr>
<th style="width:180px;">IF서비스코드[명]</th>
<td>
<input type="text" name="eaiSvcName" value="${param.eaiSvcName }"readonly>
</td>
<th style="width:180px;">전문레이아웃변환매핑 코드</th>
<td>
<input type="text" name="cnvsnName" value="${param.cnvsnName }" readonly style="width:92%; display:inline-block;">
<img src="<c:url value="/images/bt/pop_detail.gif"/>" alt="" id="btn_cnvsnDetail"/>
</td>
</tr>
<!-- <tr> -->
<!-- <th style="width:180px;">전문레이아웃 변환 매핑 유형</th> -->
<!-- <td colspan="3"> -->
<!-- <select name="cnvsnTypeCombo" style="width:100%;height:25px;" readonly/> -->
<!-- </td> -->
<!-- </tr> -->
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%" style="table-layout:fixed;" >
<tr width="100%">
<td width="42%">
<table class="table_row" cellspacing="0" width=100%>
<tr>
<th class="search_td_title" width="35px">소스</th>
<td width="20px"><img id="btn_excel_src" src="<c:url value="/images/bt/bt_excel.gif"/>" level="W" status="DETAIL"/></td>
<td width="20px"><span id="srcType" /></td>
<td height="25px"><input type="text" name="srcLayout" style="width:100%;" readonly></td>
</tr>
</table>
<td width="2%"></td>
<td width="58%">
<table class="table_row" cellspacing="0" width=100%>
<tr>
<th class="search_td_title" width="35px">타겟</th>
<td width="20px"><img id="btn_excel_tgt" src="<c:url value="/images/bt/bt_excel.gif"/>" level="W" status="DETAIL"/></td>
<td width="20px"><span id="tgtType" /></td>
<td height="25px"><input type="text" name="tgtLayout" style="width:100%;" readonly></td>
</tr>
</table>
</td>
</tr>
<!-- tree 시작-->
<tr width="100%">
<td width="38%" id="sourceLayoutTd">
<table id="sourceLayout"></table>
<div id="sourcePage"></div>
<table class="table_row" cellspacing="0" style="margin-top:15px;">
<tr>
<th style="width:130px;"><%=localeMessage.getString("transformManDetail.transCmdName")%></th>
<td>
<div class="select-style" style="display:none;">
<select name="cnvsnCmdCombo"></select>
</div>
<textarea name="CNVSNCMDNAME"></textarea>
</td>
</tr>
<tr>
<th><%=localeMessage.getString("transformManDetail.default")%></th><td><input type="text" name="CNVSNITEMBASCVAL" readonly/></td>
</tr>
</table>
</td>
<td width="4%" align="center">
</td>
<td width="58%" id="targetLayoutTd">
<table id="targetLayout"></table>
<div id="targetPage"></div>
<table class="table_row" cellspacing="0" style="margin-top:15px;">
<tr>
<th style="width:130px;"><%=localeMessage.getString("transformManDetail.tgtItemName")%></th>
<td><textarea name="CNVSNRSULTITEMPATHNAME" readonly></textarea></td>
</tr>
<tr>
<th><%=localeMessage.getString("transformManDetail.mappSerNo")%></th>
<td><input type="text" name="CNVSNITEMSERNO" readonly/></td>
</tr>
</table>
</td>
</tr>
<!-- tree 끝-->
</table>
</div>
<iframe name=excelDown width=0 height=0></iframe>
</body>
</html>