Files
eapim-admin/WebContent/jsp/bap/admin/work/interfaceManBatchFep.jsp
T
Rinjae c54ef1903f init
2025-09-05 17:16:26 +09:00

648 lines
27 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");
String userId = SessionManager.getUserId(request);
String userNm = SessionManager.getUserName(request);
String rollId = SessionManager.getRoleIdString(request);
String arr[] = rollId.split(",");
for(int i=0;i<arr.length;i++){
if("admin".equals(arr[i]) || "dept_admin".equals(arr[i])){
rollId = "admin";
break;
}
}
/* String biz = SessionManager.getBizString(request); //담당 업무코드(APP코드) 가져오기
String bizArr[] = biz.split(","); */
%>
<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"/>
<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>
<!-- 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>
<script language="javascript" >
var url = '<c:url value="/bap/admin/work/interfaceManBatchFep.json" />';
var url_view = '<c:url value="/bap/admin/work/interfaceManBatchFep.view" />';
var url_file = '<c:url value="/bap/admin/work/interfaceManBatchFep.file"/>';
function gridRenderingInit() {
if("${param.userIdSpaceYN}" == "N"){
$("#searchUserId").val("${param.searchUserId}");
}else if("${param.userIdSpaceYN}" == "Y"){
$("#searchUserId").val("");
}else{
$("#searchUserId").val("<%=userId %>");
}
var rowNum = "${param.rowNum}";
if(rowNum == "") {rowNum = "${rmsDefaultRowNum}";}
var postData = getSearchForJqgrid("cmd","LIST_BATCH"); //jqgrid에서는 object 로
postData["infDstCd"] = "OUT"; //대외 일괄
var searchStatus = new Array();
$('input[name=status]:checked').each(function () {
searchStatus.push($(this).val());
});
postData['status'] = searchStatus.join(",");
if($('input[name="delFlag"]').is(":checked")){
postData['delFlag'] = "Y";
}else{
postData['delFlag'] = "N";
}
$('#grid').jqGrid({
datatype:"json",
mtype: 'POST',
url : url,
postData : postData,
colNames:[ //'No.'
'<%= localeMessage.getString("interface.interfaceId") %>'
, '<%= localeMessage.getString("interface.interfaceName") %>'
, '<%= localeMessage.getString("interface.bzwkdstcd") %>'
, '<%= localeMessage.getString("interface.sendRecvType") %>'
, '<%= localeMessage.getString("interface.internalSystem") %>'
, '<%= localeMessage.getString("common.appCode") %>'
, '<%= localeMessage.getString("interface.externalBusiness") %>'
, '<%= localeMessage.getString("common.ownerId") %>'
, '<%= localeMessage.getString("common.updateDatetime") %>'
],
colModel:[
{ name : 'INFID' , align:'center' , width:'100' } //인터페이스ID
, { name : 'BJOBMSGDSTICNAME' , align:'left' , width:'200' } //인터페이스명
, { name : 'BJOBBZWKDSTCD' , align:'center' , width:'30' } //업무구분코드
, { name : 'SNDSTNM' , align:'center' , width:'30'} //송수신구분
, { name : 'SYSCD' , align:'center' , width:'30' } //시스템코드
, { name : 'UAPPLCD' , align:'center' , width:'30' } //app코드
, { name : 'OUTBIZCD' , align:'center' , width:'30' } //대외업무코드
, { name : 'THISMSGAMNDRID' , align:'center' , width:'50' } //담당자id
, { name : 'THISMSGAMNDHMS' , align:'center' , width:'70' } //수정시간
],
jsonReader: {
repeatitems:false
},
pager : $('#pager'),
page : '${param.page}',
rowNum : rowNum, //'${rmsDefaultRowNum}',
autoheight : true,
height : $("#container").height(),
autowidth : true,
viewrecords: true,
multiselect: true,
rownumbers : true,
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}); //그리드 헤더 화살표 삭제(정렬X)
}
},
loadComplete:function (d){
if("<%= rollId %>" != "admin"){
var idArry = $("#grid").jqGrid("getDataIDs");
cnt = 0;
for(var i=0; i < idArry.length; i++){
var ret = $("#grid").getRowData(idArry[i]);
cnt = 0;
<%-- <% for(int j = 0; j < bizArr.length; j++){ %>
if(ret.APP_CD == "<%= bizArr[j] %>" && ret.DEL_FLAG == "N"){
if(ret.AUTHOR == "<%=userId %>") cnt++;
}
<%}%> --%>
if(cnt == 0){
$("#jqg_grid_" + idArry[i]).attr("disabled", true);
}
}
}
},
beforeSelectRow: function(rowid, e){
var cbsdis = $("tr#" + rowid + ".jqgrow > td > input.cbox:disabled", jQuery("#grid")[0]);
if(cbsdis.length === 0){
return true;
}else{
return false;
}
},
onSelectAll: function(aRowids, status){
if(status){
for(var i = 0; i < aRowids.length; i++){
if($("#jqg_grid_" + aRowids[i]).attr("disabled")){
$("#jqg_grid_" + aRowids[i]).removeAttr("checked");
$("#jqg_grid_" + aRowids[i]).removeClass("cbox");
$("#"+aRowids[i]).css("background-color", "#ffffff");
$("#"+aRowids[i]).css("border-color", "#dddddd");
}
}
}
},
ondblClickRow: function(rowId) {
var rowData = $(this).getRowData(rowId);
// 2자리 공백이 붙는 현상이 있어 trim 처리
var infId = $.trim(rowData['INFID']);
var searchStatus = [];
$('input[name=status]:checked').each(function () {
searchStatus.push($(this).val());
});
var roleSpace = "Y"; //담당자ID 입력값 없음
if ($("#searchUserId").val() != "") { //담당자ID 입력값 있음.
roleSpace = "N";
}
var url = url_view;
url = url + '?cmd=DETAIL';
url = url + '&page='+$(this).getGridParam("page");
url = url + '&rowNum=' + $(this).getGridParam("rowNum");
url = url + '&returnUrl='+getReturnUrl();
url = url + '&menuId='+'${param.menuId}';
//검색값
url = url + '&'+getSearchUrl();
//key값
url = url + '&infId='+infId;
url = url + '&userIdSpaceYN=' + roleSpace;
url = url + '&searchStatus='+searchStatus.join(",");
url = encodeURI(url);
goNav(url);
},
onSelectRow: function(rowId, status){
if($("#jqg_grid_" + rowId).attr("disabled")){
$("#jqg_grid_" + rowId).removeAttr("checked");
$("#jqg_grid_" + rowId).removeClass("cbox");
$("#"+rowId).css("background-color", "#ffffff");
$("#"+rowId).css("border-color", "#dddddd");
}
},
//전문공유
onCellSelect: function(rowId, iCol) {
if(iCol == 15){
if($(this).getCell(rowId, iCol) != ""){
btn_laysync($(this).getRowData(rowId));
}
}
}
});
if("<%= rollId %>" == "admin"){
$('#grid').jqGrid("showCol", ["SYNCRESULTS", "SHR_BTN"]);
}
resizeJqGridWidth('grid','content_middle','1000');
}
$(document).ready(function() {
// debugger;
init().done(function () {
gridRenderingInit();
});
$("#btn_search").click(function(){
detail();
});
$("#btn_new").click(function() {
var searchStatus = [];
$('input[name=status]:checked').each(function () {
searchStatus.push($(this).val());
});
var roleSpace = "Y"; //담당자ID 입력값 없음
if ($("#searchUserId").val() != "") { //담당자ID 입력값 있음.
roleSpace = "N";
}
var url = url_view;
url = url + '?cmd=DETAIL';
url = url + '&page='+$("#grid").getGridParam("page");
url = url + '&returnUrl='+getReturnUrl();
url = url + '&menuId='+'${param.menuId}';
//검색값
url = url + '&'+getSearchUrl();
url = url + '&delFlag=';
url = url + '&userIdSpaceYN=' + roleSpace;
url = url + '&searchStatus='+searchStatus.join(",");
goNav(encodeURI(url));
});
/* //엑셀 다운로드
$("#btn_excel_export").on('click', function(event) {
var postData = getSearchForJqgrid("cmd","LIST_BATCH"); //jqgrid에서는 object 로
postData["infDstCd"] = "OUT";
var searchStatus = new Array();
$('input[name=status]:checked').each(function () {
searchStatus.push($(this).val());
});
postData['status'] = searchStatus.join(",");
var linkHref = "/monitoring/iim/interface/interfaceMan.json?cmd=LIST_DOWNLOAD_EXCEL_ONL";
$.each(postData, function (name, value) {
console.log(name + "=" + value);
linkHref = linkHref + "&" + name + "=" + encodeURI(value);
});
console.log(linkHref);
var link = document.createElement('a');
document.body.appendChild(link);
link.href = linkHref;
link.click();
}); */
$("input[name^=search]").keydown(function(key){
if (key.keyCode == 13){
$("#btn_search").click();
}
});
/* //user리스트 팝업호출
$("#btn_user_list").click(function(){
var args = new Object();
var url2='<c:url value="/common/acl/user/userMan.view"/>';
url2 = url2 + "?cmd=LIST_POPUP";
var result = showModal(url2,args, 500, 650, 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 ret = args.returnValue;
$("#searchUserId").val(ret['userId']); //작성자ID
});
}); */
//어드민으로 로그인했을시에 표시되는 삭제체크박스
//삭제 체크시 상태체크박스는 모두 해제처리함
$('input[name="delFlag"]').on('click', function() {
$("#btn_author_change").show();
if($('input[name="delFlag"]').is(":checked")){
$('input[name="status"]').attr("checked", false);
$("#btn_author_change").hide();
}
});
$('input[name="status"]').on('click', function() {
if($('input[name="delFlag"]').is(":checked")){
$('input[name="status"]').attr("checked", false);
}
});
//담당자변경
<%-- $("#btn_author_change").on('click', function(event) {
sel = $("#grid").find("tr.jqgrow:has(td > input.cbox:checked)").map(function(){ return this.id; }).get();
if(sel.length == 0 || sel == ""){
alert("변경할 인터페이스를 선택해주세요.");
return;
}
var infIdArr = [];
for(var i=0; i < sel.length ; i++){
if("<%= rollId %>" != "admin"){
if(($("#grid").getCell(sel[i], "AUTHOR") !== "<%=userId %>")) {
alert("본인담당 인터페이스가 아닌 경우 담당자변경이 불가합니다.\n인터페이스ID [" + $("#grid").getCell(sel[i], "INF_ID") + "]");
return;
}
if($("#grid").getCell(sel[i], "DEL_FLAG") == "Y"){
alert("삭제된 인터페이스입니다.\n인터페이스ID [" + $("#grid").getCell(sel[i], "INF_ID") + "]");
return;
}
}
infIdArr[i] = $("#grid").getCell(sel[i], "INF_ID");
}
var args = new Object();
args['userId'] = "<%= userId %>"; //유저아이디
args['userNm'] = "<%= userNm %>"; //유저명
args['rollId'] = "<%= rollId %>"; //권한
var url2 = url_view + "?cmd=DETAIL_AUTHOR_CHANGE";
var result = showModal(url2,args, 560, 750, 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 ret = args.returnValue;
var postData = $('#ajaxForm').serializeArray();
postData.push({ name: "cmd" , value:"UPDATE_BATCH_AUTHOR"}
,{ name: "chngAfUserId", value:args.returnValue} //변경후
,{ name: "infIdArr", value:infIdArr} //변경대상 인터페이스
);
$.ajax({
type : "POST",
url:url,
data:postData,
success:function(json){
detail();
alert("담당자변경을 완료했습니다.");
},
error:function(e){
alert(e.responseText);
}
});
});
}); --%>
buttonControl();
// init(detail);
FilePond.registerPlugin(FilePondPluginFileValidateType);
// FilePond 인스턴스 생성
const pond = FilePond.create(document.querySelector('.filepond'), {
instantUpload: false, // 파일을 즉시 업로드하지 않음
allowRevert: false,
acceptedFileTypes: ['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/json'],
// 서버 설정
server: {
process: {
url: url_file + '?cmd=LIST_IMPORT_FILE&serviceType=' + sessionStorage["serviceType"],
method: 'POST',
// 필요한 경우 headers나 다른 설정 추가
},
// revert, load, restore, fetch 설정 (필요한 경우)
},
// 다른 필요한 옵션 추가
});
pond.on('processfiles', () => {
// 여기에 모든 파일 업로드 완료 후 실행할 코드를 작성
console.debug('모든 파일의 처리가 완료되었습니다.');
$('#btn_search').click();
});
// "업로드 시작" 버튼 클릭 이벤트 핸들러
document.getElementById('uploadButton').addEventListener('click', function() {
pond.processFiles(); // 선택된 모든 파일을 업로드
});
// 모달 닫기 이벤트 핸들러
$('#uploadModal').on('hidden.bs.modal', function (e) {
pond.removeFiles(); // 모달이 닫힐 때 파일 목록에서 모든 파일 제거
});
});
//Excel Upload ie8에서 사용하는 함수.
function getDoc(frame) {
var doc = null;
// IE8 cascading access check
try {
if (frame.contentWindow) {
doc = frame.contentWindow.document;
}
} catch(err) {
}
if (doc) { // successful getting content
return doc;
}
try { // simply checking may throw in ie8 under ssl or mismatched protocol
doc = frame.contentDocument ? frame.contentDocument : frame.document;
} catch(err) {
// last attempt
doc = frame.document;
}
return doc;
}
function makeBtnShr(cellvalue, options, rowObject){
if(rowObject.STATUS == "R" || rowObject.STATUS == "W"){
return "<img id='btn_laysync' src='<c:url value='/images/bt/bt_laysync.gif' />' level='W'/>";
}else{
return "";
}
};
//인터페이스 공유
function btn_laysync(obj) {
var infId = obj.INF_ID;
$.ajax({
type : "POST",
url: url,
dataType:"json",
async:false,
data:{cmd: "TRANSACTION_SYNC_BATCH", infId: JSON.stringify(infId)},
success:function(json){
if(status != undefined && status == 'fail'){
alert(json.errorMsg);
return;
}
var data="----result----"+"\n";
data +="성공건수("+json.succCnt+")"+"\n";
data +="실패건수("+json.failCnt+")"+"\n";
$.each(json.result,function(key,value){
data += key +"\n";
data += value +"\n";
});
alert(data);
detail();
},
error : function(e) {
alert(e.responseJSON.errorMsg);
//alert(e.responseText);
}
});
};
function init(callback){
return $.ajax({
type : "POST",
url:url,
dataType:"json",
data:{cmd: 'LIST_COMBO'},
success:function(json){
new makeOptions("BZWKDSTCD","CODENAME").setObj($("select[name=searchAppCd]")).setData(json.authList.rows).rendering(); //APP코드
$("#searchInterfaceId").val("${param.searchInterfaceId}"); // 인터페이스 ID
$("#searchInterfaceName").val("${param.searchInterfaceName}"); //인터페이스 명
$("#searchAppCd").val("${param.searchAppCd}"); //APP코드
if("${param.searchUserId}" != ""){
$("#searchUserId").val("${param.searchUserId}");
}
var searchStatus = new Array();
var searchStatus = "${param.searchStatus}".split(",");
$('input:checkbox[name="status"]').each(function(){
var cStatus = this;
searchStatus.forEach(function(val, idx){
if(cStatus.value == val){
cStatus.checked = true;
}
});
});
if("${param.delFlag}" == "Y"){
$('input[name="delFlag"]').attr("checked", true);
}
// if (typeof callback === 'function') {
// callback();
// }
},
error:function(e){
alert(e.responseText);
}
});
};
function detail(){
var postData = getSearchForJqgrid("cmd","LIST_BATCH"); //jqgrid에서는 object 로
postData["infDstCd"] = "OUT"; //대외 일괄
var searchStatus = new Array();
$('input[name=status]:checked').each(function () {
searchStatus.push($(this).val());
});
postData['status'] = searchStatus.join(",");
if($('input[name="delFlag"]').is(":checked")){
postData['delFlag'] = "Y";
}else{
postData['delFlag'] = "N";
}
$("#grid").setGridParam({url : url, postData : postData, page:1}).trigger("reloadGrid");
}
</script>
</head>
<body>
<div class="right_box">
<!-- path -->
<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">
<!-- button -->
<%-- <form id="multiform" method="POST" enctype="multipart/form-data" action="<c:url value="/iim/interface/interfaceMan.file" />">
<input type="file" name="file" style="display:block"/>
<input type="text" name="cmd" style="display:none" value="UPLOAD"/>
</form> --%>
<div class="search_wrap">
<%--<img id="btn_new" src="<c:url value="/img/btn_new.png"/>" level="W"/> <!-- 신규 -->--%>
<%--<img id="btn_search" src="<c:url value="/img/btn_search.png"/>" level="R"/> <!-- 검색 -->--%>
<%-- <img id="btn_excel_export" src="<c:url value="/images/bt/bt_excel_export.jpg"/>" level="R" /> <!-- 엑셀다운로드 --> --%>
<%-- <img id="btn_excel_import" src="<c:url value="/images/bt/bt_excel_import.jpg"/>" level="R" /> --%><!-- 엑셀업로드 -->
<%-- <img id="btn_author_change" src="<c:url value="/images/bt/bt_author_change.gif"/>" level="W" /><!-- 담당자변경 --> --%>
<button type="button" class="cssbtn" id="btn_import" level="W" 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_new" level="W" status="DETAIL,NEW"><i class="material-icons">add</i><%=localeMessage.getString("button.new")%></button>
<%--<button type="button" class="cssbtn" id="btn_delete" level="W" status="DETAIL"><i class="material-icons">delete</i><%=localeMessage.getString("button.delete")%></button>--%>
<button type="button" class="cssbtn" id="btn_search" level="R" status="DETAIL,NEW"><i class="material-icons">search</i><%=localeMessage.getString("button.search")%></button>
</div>
<!-- title -->
<div class="title">
<%= localeMessage.getString("interfaceBatchFep.title") %>
</div>
<form id="ajaxForm">
<table class="search_condition" cellspacing=0;>
<tr>
<th align="left" class="search_td_title" width="100px"><%= localeMessage.getString("interface.titleInterfaceId") %></th>
<td><input type="text" name="searchInterfaceId" value="${param.searchInterfaceId}" style="width:100%"></td>
<th align="left" class="search_td_title" width="100px"><%= localeMessage.getString("interface.titleInterfaceName") %></th>
<td><input type="text" name="searchInterfaceName" value="${param.searchInterfaceName}" style="width:100%"></td>
</tr>
<tr>
<th align="left" class="search_td_title" width="100px"><%= localeMessage.getString("common.appCode") %></th>
<td colspan="3">
<div class="select-style">
<select name="searchAppCd" id="searchAppCd">
</select>
</div>
</td>
<%-- <th align="left" class="search_td_title" width="100px"><%= localeMessage.getString("common.ownerId") %></th>
<td>
<span style="width:80%; display: inline-block;">
<input type="text" name="searchUserId" id="searchUserId" value="<%=userId %>" style="width:100%">
</span>
<img id="btn_user_list" src="<c:url value="/img/btn_pop_search.png"/>" level="R" status="DETAIL,NEW"/>
</td> --%>
</tr>
<%-- <tr>
<th align="left" class="search_td_title" width="100px"><%= localeMessage.getString("common.status") %></th>
<td>
<input type="checkbox" name="status" id="statusT" value="T"> <label for="statusT"><%= localeMessage.getString("common.status.temp") %></label>
<!-- <input type="checkbox" name="status" id="statusD"> <label for="statusD">작성중</label> -->
<input type="checkbox" name="status" id="statusW" value="W"> <label for="statusW"><%= localeMessage.getString("common.status.complete") %></label>
<input type="checkbox" name="status" id="statusR" value="R"> <label for="statusR"><%= localeMessage.getString("common.status.deployed") %></label>
<input type="checkbox" name="delFlag" id="delFlag" value="Y"> <label for="statusR"><%= localeMessage.getString("common.status.removed") %></label>
</td>
<th></th><td></td>
</tr> --%>
</table>
<!-- grid -->
<table id="grid" ></table>
<div id="pager"></div>
</form>
<%-- <div style="font-size:'6';color:red;font-family:courier;">
<p>※ <%= localeMessage.getString("interface.message.descToChangeOwner") %>
</div> --%>
</div><!-- end content_middle -->
</div><!-- end right_box -->
<!-- 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>
</body>
</html>