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

636 lines
28 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" %>
<%@ page import="com.eactive.eai.common.util.SystemUtil"%>
<%
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Expires", "0");
request.setCharacterEncoding("UTF-8");
%>
<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"/>
<!-- FilePond stylesheet -->
<link href="<c:url value="/addon/filepond/filepond.min.css"/>" rel="stylesheet">
<!-- FilePond JavaScript library -->
<script src="<c:url value="/addon/filepond/filepond.min.js"/>"></script>
<!-- FilePond plugin for file validation -->
<script src="<c:url value="/addon/filepond/plugin/filepond-plugin-file-validate-type.min.js"/>"></script>
<link href="<c:url value="/addon/bootstrap-5.3.2/css/bootstrap.min.css"/>" rel="stylesheet" />
<script src="<c:url value="/addon/bootstrap-5.3.2/js/bootstrap.bundle.min.js"/>"></script>
<script language="javascript" >
var url = '<c:url value="/onl/admin/rule/layoutMan.json"/>';
var url_view = '<c:url value="/onl/admin/rule/layoutMan.view"/>';
var url_excel = '<c:url value="/onl/admin/rule/layoutMan.excel"/>';
var url_file = '<c:url value="/onl/admin/rule/layoutMan.file"/>';
var roleString = "<%=SessionManager.getRoleIdString(request)%>";
var devSvr = <%=SystemUtil.isDevServer()%>;
var svrInst = new Array();
function dateFormater(cellvalue, options, rowObject){
if (cellvalue==null|| cellvalue==undefined) return "";
if (cellvalue.trim().length < 16) return "";
var display = "";
display=display+cellvalue.substr(0,4)+"-";
display=display+cellvalue.substr(4,2)+"-";
display=display+cellvalue.substr(6,2)+" ";
display=display+cellvalue.substr(8,2)+":";
display=display+cellvalue.substr(10,2)+":";
display=display+cellvalue.substr(12,2)+".";
display=display+cellvalue.substr(14,2);
return display;
}
function init (){
$.ajax({
type : "POST",
url : url,
dataType : "json",
data : {cmd : "LIST_INIT_COMBO"},
success:function(json){
var inoutTypeData = json.inoutTypeRows;
new makeOptions("CODE","NAME").setObj($("select[name=searchEaiSevrDstcd]")).setNoValueInclude(true)
.setNoValue("", "<%=localeMessage.getString("combo.all")%>").setData(inoutTypeData).setFormat(codeName3OptionFormat).rendering();
new makeOptions("CODE","NAME").setObj($("select[name=searchLayoutTypeName]")).setNoValueInclude(true).setNoValue("", "전체").setData(json.typeRows).setFormat(codeName3OptionFormat).rendering();
new makeOptions("CODE","NAME").setObj($("select[name=searchUseYn]")).setNoValueInclude(true).setNoValue("", "전체").setData(json.useYnRows).setFormat(codeName3OptionFormat).rendering();
svrInst = inoutTypeData;
putSelectFromParam();
/* var chkRole = roleString.indexOf('admin');
if(chkRole==-1){
$("select[name=searchEaiSevrDstcd] option[value='9']").remove();
} */
}
});
}
function formatter (cellvalue, options, rowObject){
for(var i=0; i<svrInst.length; i++){
if(cellvalue==svrInst[i].CODE){
return "["+svrInst[i].CODE+"] "+svrInst[i].NAME;
}
}
}
$(document).ready(function() {
init();
$('#grid').jqGrid({
datatype: "json",
mtype: 'POST',
url: url,
postData: {
cmd: 'LIST'
, searchEaiBzwkDstcd: $('input[name=searchEaiBzwkDstcd]').val()
, searchLoutName: $('input[name=searchLoutName]').val()
, searchLoutDesc: $('input[name=searchLoutDesc]').val()
, searchEaiSevrDstcd: "${param.searchEaiSevrDstcd}"
, searchLayoutTypeName: "${param.searchLayoutTypeName}"
, searchUseYn: "${param.searchUseYn}"
},
colNames: ['<%=localeMessage.getString("layoutMan.bzwkdstcd")%>',
'<%=localeMessage.getString("layoutMan.bzwkdstcdName")%>',
'<%=localeMessage.getString("layoutMan.layoutCd")%>',
'<%=localeMessage.getString("layoutMan.layoutDesc")%>',
'<%=localeMessage.getString("layoutMan.sevrDstCd")%>',
'<%=localeMessage.getString("layoutMan.layoutTypeName")%>',
'<%=localeMessage.getString("combo.useYn")%>',
'<%=localeMessage.getString("layoutMan.modifyHMS")%>',
'<%=localeMessage.getString("layoutMan.verInfo")%>',
'flag'
],
colModel: [
{name: 'EAIBZWKDSTCD', align: 'center', sortable: false, width: "50"},
{name: 'BZWKDSTICNAME', align: 'left'},
{name: 'LOUTNAME', align: 'left'},
{name: 'LOUTDESC', align: 'left'},
{name: 'EAISEVRDSTCD', align: 'left', width: "50", formatter: formatter},
{name: 'LOUTPTRNNAME', align: 'left'},
{
name: 'USEYN',
align: 'center',
width: 30,
editoptions: {value: "0:<%= localeMessage.getString("combo.usen")%>;1:<%= localeMessage.getString("combo.usey")%>"},
formatter: "select"
},
{name: 'LASTAMNDHMS', align: 'center', formatter: dateFormater, width: "100"},
{name: 'VERINFO', align: 'center', width: "100"},
{name: 'FLAG', hidden: true}
],
jsonReader: {
repeatitems: false
},
pager: $('#pager'),
page: '${param.page}',
rowNum: '${rmsDefaultRowNum}',
autoheight: true,
height: $("#container").height(),
autowidth: true,
viewrecords: true,
multiselect: true,
multiboxonly: false,
rowList: eval('[${rmsDefaultRowList}]'),
gridComplete: function (d) {
var colModel = $(this).getGridParam("colModel");
for (var i = 0; i < colModel.length; i++) {
$(this).setColProp(colModel[i].name, {sortable: false});
}
},
loadComplete: function () {
var ids = $("#grid").jqGrid('getDataIDs');
for (var i = 0; i < ids.length; i++) {
var rowObject = $("#grid").getRowData(ids[i]);
if (rowObject.FLAG == "X") {
var cbs = $("tr#" + ids[i] + ".jqgrow>td>input.cbox", $("#grid")[0]);
cbs.attr("disabled", "disabled");
}
}
},
beforeSelectRow: function (rowId, e) {
var cbsdis = $("tr#" + rowId + ".jqgrow>td>input.cbox:disabled", $("#grid")[0]);
if (cbsdis.length === 0) {
return true;
} else {
return false;
}
},
ondblClickRow: function (rowId) {
var rowData = $(this).getRowData(rowId);
var key = rowData['LOUTNAME'];
var url2 = url_view;
url2 += '?cmd=DETAIL';
url2 += '&page=' + $(this).getGridParam("page");
url2 += '&returnUrl=' + getReturnUrl();
url2 += '&menuId=' + '${param.menuId}';
//검색값
url2 += '&' + getSearchUrl();
//key값
url2 += '&loutName=' + key;
goNav(url2);
}, loadError: function (jqXHR, textStatus, errorThrown) {
var location = '<%=request.getContextPath()%>/';
comloadError(jqXHR, textStatus, errorThrown, location);
}, onSelectAll: function (rowId, status) {
if (status) {
var cbs = $("tr.jqgrow>td>input.cbox:disabled", $("grid")[0]);
cbs.removeAttr("checked");
$("#grid")[0].p.selarrow = $("#grid").find("tr.jqgrow:has(td > input.cbox:checked)").map(function () {
return this.id;
}).get();
} else {
$("#grid")[0].p.selarrow = "";
}
}
});
resizeJqGridWidth('grid', 'content_middle', '1000');
$("#btn_search").click(function () {
var postData = getSearchForJqgrid("cmd", "LIST"); //jqgrid에서는 object 로
$("#grid").setGridParam({postData: postData, page: "1"}).trigger("reloadGrid");
});
$("#btn_excel").click(function (event) {
event.stopPropagation(); // Do not propagate the event.
// Create an object that will manage to download the file.
var target = "excelDown"; // iframe의 name
//(url,cmd,gridObj,formObject,fileName,merge)
gridToExcelSubmit2(url_excel, "LIST_GRID_TO_EXCEL", $("#grid"), $("#ajaxForm"), 'layout');
return false;
});
$("#btn_excel_export").click(function () {
const exportArr = new Array();
const ids = $("#grid").jqGrid('getDataIDs');
let chkCnt = 0;
for (var i = 0; i < ids.length; i++) {
if ($("input:checkbox[id='jqg_grid_" + ids[i] + "']").is(":checked")) {
var rowObject = $("#grid").getRowData(ids[i]);
exportArr.push(rowObject['LOUTNAME']);
chkCnt++;
}
}
const url = url_excel + '?cmd=LIST_EXPORT_TO_EXCEL';
downloadFiles(url, JSON.stringify(exportArr))
return false;
});
$("#btn_new").click(function () {
var url2 = url_view;
url2 += '?cmd=DETAIL';
url2 += '&page=' + $("#grid").getGridParam("page");
url2 += '&returnUrl=' + getReturnUrl();
url2 += '&menuId=' + '${param.menuId}';
//검색값
url2 += '&' + getSearchUrl();
//key값
url2 += '&layoutName=';
goNav(url2);
});
$("#btn_initialize").click(function () {
var id = "grid";
var chkArr = new Array();
var ids = $("#grid").jqGrid('getDataIDs');
var chkcnt = 0;
for (var i = 0; i < ids.length; i++) {
if ($("input:checkbox[id='jqg_" + id + "_" + ids[i] + "']").is(":checked")) {
var rowObject = $("#grid").getRowData(ids[i]);
chkArr.push(rowObject['LOUTNAME']);
chkcnt++;
}
}
if (chkcnt == 0) {
if (confirm("레이아웃이 선택되지 않았습니다. 전체 초기화 하겠습니까?")) {
$.ajax({
type: "POST",
url: url,
dataType: "json",
data: {cmd: 'INITIALIZES'},
success: function (json) {
alert(json.message);
},
error: function (e) {
alert(e.responseText);
}
});
}
return false;
} else {
if (confirm("초기화 하시겠습니까?")) {
var postData = [];
postData.push({name: "cmd", value: "LIST_INITIALIZE"});
postData.push({name: "chkItems", value: chkArr});
$.ajax({
type: "POST",
url: url,
dataType: "json",
data: postData,
success: function (json) {
alert(json.message);
},
error: function (e) {
alert(e.responseText);
}
});
} else {
return false;
}
}
});
$("input[name^=search]").keydown(function (key) {
if (key.keyCode == 13) {
$("#btn_search").click();
}
});
$('#btn_cmsave').click(onclickBtnCmSave);
$('#btn_import').click(onclickExcelImport);
$("#btn_delete").click(function () {
var id = "grid";
var delArr = new Array();
var ids = $("#grid").jqGrid('getDataIDs');
var chkcnt = 0;
for (var i = 0; i < ids.length; i++) {
if ($("input:checkbox[id='jqg_" + id + "_" + ids[i] + "']").is(":checked")) {
var rowObject = $("#grid").getRowData(ids[i]);
delArr.push(rowObject['LOUTNAME']);
chkcnt++;
}
}
if (chkcnt == 0) {
alert("레이아웃을 선택해 주세요");
return false;
}
if (confirm("<%= localeMessage.getString("common.confirmMsg")%>")) {
var postData = [];
postData.push({name: "cmd", value: "DELETE_LIST"});
postData.push({name: "delItems", value: delArr});
$.ajax({
type: "POST",
url: url,
dataType: "json",
data: postData,
success: function (json) {
alert(json.message);
$("#btn_search").click();
},
error: function (e) {
alert("error" + e.responseText);
}
});
} else {
return false;
}
});
buttonControl();
// setBtnHide(roleString, "admin", "btn_excel");
// setBtnHide(roleString, "admin", "btn_download");
// setBtnHide(roleString, "admin", "btn_initialize");
// setBtnControl(roleString, "admin,dept_developer", "btn_import");
//setBtnControl(roleString, "admin", "btn_cmsave");
// if(!devSvr){
// }
$("#btn_cmsave").hide();
FilePond.registerPlugin(FilePondPluginFileValidateType);
// FilePond 인스턴스 생성
const pond = FilePond.create(document.querySelector('.filepond'), {
instantUpload: false, // 파일을 즉시 업로드하지 않음
allowRevert: false,
acceptedFileTypes: ['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],
// 서버 설정
server: {
process: {
url: url_file + '?cmd=LIST_IMPORT_FROM_EXCEL&serviceType=' + sessionStorage["serviceType"],
method: 'POST',
// 필요한 경우 headers나 다른 설정 추가
},
// revert, load, restore, fetch 설정 (필요한 경우)
},
// 다른 필요한 옵션 추가
});
// "업로드 시작" 버튼 클릭 이벤트 핸들러
document.getElementById('uploadButton').addEventListener('click', function() {
pond.processFiles(); // 선택된 모든 파일을 업로드
});
// 모달 닫기 이벤트 핸들러
$('#uploadModal').on('hidden.bs.modal', function (e) {
pond.removeFiles(); // 모달이 닫힐 때 파일 목록에서 모든 파일 제거
});
});
function setBtnControl(roleString, condiVal, compoId)
{
var strRole = roleString;
var strVal = condiVal;
var arrRoleID = strRole.split(',');
var arrVal = strVal.split(',');
var flag = false;
$(arrRoleID).each(function(i, role) {
$(arrVal).each(function(j, val) {
if (role == val) {
flag = true;
return false;
}
});
});
if(flag)
$("#"+compoId).show();
else
$("#"+compoId).hide();
}
function onclickBtnCmSave() {
var sel = new Array();
var ids = $("#grid").jqGrid('getDataIDs');
var chkcnt = 0;
for(var i=0;i
<ids.length
;i++){
if($("input:checkbox[id='jqg_grid_"+ids[i]+"']").is(":checked")){
var rowObject = $("#grid").getRowData(ids[i]);
sel.push(ids[i]);
chkcnt++;
}
}
if(chkcnt == 0){
alert('먼저 다운로드할 데이터를 체크해 주세요.');
return false;
}
//var sel = $('#grid').jqGrid('getGridParam', 'selarrrow');
var validEAIBzwkDstCd = 'NONE';
var loutNames = '';
for (var i=0; i<sel.length; i++) {
var eaiBzwkDstCd = ($('#grid').getCell(sel[i], 'EAIBZWKDSTCD')).replace(/^\s+|\s+$/g,"");
if (eaiBzwkDstCd == 'XXX' || eaiBzwkDstCd == '') {
continue;
}
var loutName = $('#grid').getCell(sel[i], 'LOUTNAME');
if(loutName.indexOf("EAI_")!=-1){
if(roleString.indexOf("admin")==-1){
alert("EAI 표준 레이아웃은 업무 CM 대상이 아닙니다.["+loutName+"]");
return;
}
}
if (validEAIBzwkDstCd == 'NONE') {
validEAIBzwkDstCd = eaiBzwkDstCd;
loutNames = loutName;
} else {
loutNames += ',' + loutName;
if (validEAIBzwkDstCd != eaiBzwkDstCd) {
alert('하나의 업무코드를 선택해야 합니다. \n\r예외:EAI, 업무구분코드 없음');
return;
}
}
}
var url2 = url_view;
/* if (validEAIBzwkDstCd == 'ESS' || validEAIBzwkDstCd == 'ISS') {
url2 += '?cmd=CM LIST POPUP EX';
} else {
url2 += '?cmd=CM LIST POPUP';
} */
url2 += '?cmd=CM LIST POPUP';
var args = new Object();
args['eaiBzwkDstCd'] = validEAIBzwkDstCd;
showModal(url2,args,540,400, function(arg){
var args = null;
if(arg == null || arg == undefined ) {
//chrome
args = this.dialogArguments;
args.returnValue = this.returnValue;
} else {
//ie
args = arg;
}
if( !args || !args.returnValue ) return;
addCMResource(validEAIBzwkDstCd, args.returnValue, loutNames);
});
/*
//local test하기 위해서 변경함
var params = new Object();
params['CmId']='TST999999';
addCMResource(validEAIBzwkDstCd, params, loutNames);
*/
}
function addCMResource(eaiBzwkDsdCd, obj, loutNames) {
var params = new Object();
params['cmd'] = 'CHANGE_EXPORT';
params['eaiBzwkDstCd'] = eaiBzwkDsdCd;
params['cmId'] = obj.CmId;
params['loutNames'] = loutNames;
$.ajax({
type : "POST",
url:url,
dataType:"json",
data:params,
success:function(json){
alert(json.message);
},
error:function(xhr,status,error){
if (xhr.responseText != null) {
try {
alert(JSON.parse(xhr.responseText).errorMsg);
} catch (e) {
alert(error);
}
}
}
});
}
function onclickExcelImport() {
var url2 = url_view;
url2 += '?cmd=EX IMP POPUP';
var args = new Object();
showModal(url2,args,800,400, function(arg) {
var args = null;
if(arg == null || arg == undefined ) {
//chrome
args = this.dialogArguments;
args.returnValue = this.returnValue;
} else {
//ie
args = arg;
}
if( !args || !args.returnValue ) return;
var names = encodeURIComponent(args.returnValue.ExcelNames);
parent.leftFrame.goPage('<c:url value="/onl/admin/rule/layoutExcelMan.do"/>?names='+names, '0707007');
});
}
</script>
</head>
<body>
<div class="right_box">
<div class="content_top">
<ul class="path">
<li><a href="#">${rmsMenuPath}</a></li>
</ul>
</div><!-- end content_top -->
<div class="content_middle" id="content_middle">
<div class="search_wrap">
<button type="button" class="cssbtn" id="btn_excel_import" level="R" data-bs-toggle="modal" data-bs-target="#uploadModal"><i class="material-icons">upload</i> <%=localeMessage.getString("button.import")%></button>
<button type="button" class="cssbtn" id="btn_excel_export" level="R" ><i class="material-icons">download</i> <%=localeMessage.getString("button.exportExcel")%></button>
<button type="button" class="cssbtn" id="btn_excel" level="W" ><i class="material-icons">table_view</i> <%= localeMessage.getString("button.excel") %></button>
<button type="button" class="cssbtn" id="btn_initialize" level="W" ><i class="material-icons">restart_alt</i> <%= localeMessage.getString("button.reset") %></button>
<button type="button" class="cssbtn" id="btn_delete" level="W" ><i class="material-icons">delete</i> <%= localeMessage.getString("button.delete") %></button>
<button type="button" class="cssbtn" id="btn_new" level="W"><i class="material-icons">add</i> <%= localeMessage.getString("button.new") %></button>
<button type="button" class="cssbtn" id="btn_search" level="R" ><i class="material-icons">search</i> <%= localeMessage.getString("button.search") %></button>
<%-- <img id="btn_import" src="<c:url value="/img/btn_import.png"/>" level="W" />&nbsp; --%>
<!-- img id="btn_cmsave" src="<c:url value="/img/btn_cmsave.png"/>" level="R" /-->&nbsp;&nbsp;&nbsp;
<%-- <img id="btn_excel" src="<c:url value="/img/btn_excel.png"/>" level="W" status="DETAIL"/> --%>
<%-- <img id="btn_initialize" src="<c:url value="/img/btn_initialize.png"/>" alt="" level="W" /> --%>
<%-- <img src="<c:url value="/img/btn_delete.png"/>" alt="" id="btn_delete" level="W" status="DETAIL,NEW"/> --%>
<%-- <img id="btn_search" src="<c:url value="/img/btn_search.png"/>" alt="" level="R" /> --%>
</div>
<div class="title"><%=localeMessage.getString("layoutMan.title2")%><span class="tooltip"><%=localeMessage.getString("layoutMan.tooltip")%></span></div>
<form id="ajaxForm" onsubmit="return false;">
<table class="search_condition" cellspacing=0;>
<tbody>
<tr>
<th width="10%"><%=localeMessage.getString("layoutMan.layoutCd")%></th>
<td width="25%">
<input type="text" name="searchLoutName" value="${param.searchLoutName}">
</td>
<th width="10%"><%=localeMessage.getString("layoutMan.bzwkdstcd")%></th>
<td width="25%">
<input type="text" name="searchEaiBzwkDstcd" value="${param.searchEaiBzwkDstcd}">
</td>
<th width="10%"><%=localeMessage.getString("layoutMan.layoutDesc")%></th>
<td width="20%">
<input type="text" name="searchLoutDesc" value="${param.searchLoutDesc}">
</td>
</tr>
<tr>
<th><%=localeMessage.getString("layoutMan.sevrDstCd")%></th>
<td>
<div class="select-style">
<select name="searchEaiSevrDstcd" value="${param.searchEaiSevrDstcd}"/>
</div>
</td>
<th><%=localeMessage.getString("layoutMan.layoutTypeName")%></th>
<td>
<div class="select-style">
<select name="searchLayoutTypeName" value="${param.searchLayoutTypeName}"/>
</div>
</td>
<th><%=localeMessage.getString("combo.useYn")%></th>
<td>
<div class="select-style">
<select name="searchUseYn" value="${param.searchUseYn}"/>
</div>
</td>
</tr>
</tbody>
</table>
</form>
<table id="grid"></table>
<div id="pager"></div>
</div><!-- end content_middle -->
</div><!-- end right_box -->
</body>
<!-- Modal -->
<div class="modal fade" id="uploadModal" tabindex="-1" aria-labelledby="uploadModalLabel" aria-hidden="true">
<!-- 모달 내용 -->
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title"><i class="material-icons" style="vertical-align: sub; font-size: 25px">publish</i> <%=localeMessage.getString("button.import")%></h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<input type="file" class="filepond" name="file" multiple data-allow-reorder="true" data-max-file-size="3MB" data-max-files="10">
</div>
<div class="modal-footer">
<button id="uploadButton" class="btn btn-primary">IMPORT <%=localeMessage.getString("button.execute")%></button>
</div>
</div>
</div>
</div>
<iframe name=excelDown width=0 height=0></iframe>
</html>