var menuVal = 'rcpmonitoringoutscenariomanage' var Outscenario = { searchData: {}, oprMngCodeList: [], oprMngCodeUpperList: [], custCodeList: [], allScenarioIdList: [], curSearchOpr: '', logTypeVal: '', talkSeqVal: '', pageSize: 10, init: function() { this.setOprMngCode(); this.setCurrentDate(); this.setScenarioNameList(); this.getOutscenarioList(); }, setOprMngCode: function() { $.ajax({ type: "GET", async: false, datatype: "JSON", contentType : "application/json; charset=utf-8", url: "/adm/menu/oprmng", data: {menuval: menuVal}, success: (function(data) { var html = ''; if (data.length > 1) { html += ''; } $('#oprMngCode').html(''); for(var i=0; i' + data[i].serviceGroupName + ''; Outscenario.oprMngCodeList.push(data[i].custCode + '_RCP_' + data[i].serviceGroup); Outscenario.oprMngCodeUpperList.push(data[i].custCode + '_RCP_' + data[i].serviceGroupUpper); Outscenario.custCodeList.push(data[i].custCode); } $('#oprMngCode').html(html); $('#oprMngCode').niceSelect('update'); }) }); }, setCurrentDate: function() { var today = new Date(); var year = today.getFullYear(); // 년도 var month = today.getMonth() + 1; // 월 var date = today.getDate(); // 날짜 // $('#dataFrom').val(year + '-' + month + '-' + date + ' 00:00'); // $('#dataTo').val(year + '-' + month + '-' + date + ' 23:59'); var fromDate = year + '-' + month + '-' + date; var toDate = year + '-' + month + '-' + date; $('.datetimepicker_from').datetimepicker().data('DateTimePicker').format('YYYY-MM-DD'); $('.datetimepicker_to').datetimepicker().data('DateTimePicker').format('YYYY-MM-DD'); // date Set $('.datetimepicker_from').datetimepicker().data('DateTimePicker').date(fromDate); $('.datetimepicker_to').datetimepicker().data('DateTimePicker').date(toDate); }, setWeekDate: function() { var today = new Date(); var todayYear = today.getFullYear(); // 년도 var todayMonth = today.getMonth() + 1; // 월 var todayDate = today.getDate(); // 날짜 var week = new Date(todayYear, todayMonth - 1, todayDate - 6); var weekYear = week.getFullYear(); // 년도 var weekMonth = week.getMonth() + 1; // 월 var weekDate = week.getDate(); // 날짜 // $('#dataFrom').val(weekYear + '-' + weekMonth + '-' + weekDate + ' 00:00'); // $('#dataTo').val(todayYear + '-' + todayMonth + '-' + todayDate + ' 23:59'); fromDate = weekYear + '-' + weekMonth + '-' + weekDate; toDate = todayYear + '-' + todayMonth + '-' + todayDate; $('.datetimepicker_from').datetimepicker().data('DateTimePicker').format('YYYY-MM-DD'); $('.datetimepicker_to').datetimepicker().data('DateTimePicker').format('YYYY-MM-DD'); // date Set $('.datetimepicker_from').datetimepicker().data('DateTimePicker').date(fromDate); $('.datetimepicker_to').datetimepicker().data('DateTimePicker').date(toDate); }, setScenarioNameList: function() { var param = { oprMngCode: $('#oprMngCode').val(), oprMngCodeList: Outscenario.oprMngCodeList } var html = ''; html += '
' + '' + '' + '
' $.ajax({ type: "POST", async: false, datatype: "JSON", contentType : "application/json; charset=utf-8", url: "/admin/rcp/statistics/monitoring/outscenario/scenarionamelist.do", data: JSON.stringify(param), success: (function(data) { for (var i=0; i' + '' + '' Outscenario.allScenarioIdList.push(data[i].seq); } }) }); $('#scenarioChkbox').html(html); Outscenario.resetMoreOpenBtn($("input:checkbox[name=checkbox]").length); }, fncScenarioChk: function() { var cnt = 0; var html = ''; if ($("input:checkbox[name=checkbox]:checked").length > 0) { $("input:checkbox[name='all']").prop("checked", false); } this.resetMoreOpenBtn($("input:checkbox[name=checkbox]:checked").length); }, resetMoreOpenBtn: function(cnt) { var html = '+ ' + cnt + '개' $('.moreOpenBtn').html(html); }, chkDate31: function() { const dateA = new Date($('#dataTo').val().substring(0,10)); const dateB = new Date($('#dataFrom').val().substring(0,10)); const diffMSec = dateA.getTime() - dateB.getTime(); const diffDate = diffMSec / (24 * 60 * 60 * 1000); return diffDate; }, getOutscenarioList: function() { if (Outscenario.chkDate31() > 31) { $.utils.warning('31일 이내로 조회 가능합니다.'); return; } $("#testTb1").dataTable(); $("#testTb1").dataTable({ "ajax": { url: "/admin/rcp/statistics/monitoring/outscenario/outscenariolist.do", contentType: "application/json; charset=utf-8", type: "POST", dataType: "JSON", async: false, data : function(d) { var chkScenarioAllCd = ''; var valueArr = new Array(); var list = $("input[name='checkbox']:checked"); if ($('#chk').is(':checked')) { chkScenarioAllCd = 'Y'; } for (var i=0; i<"clear">', "destroy": true, "serverSide": true, "aaSorting": [], "drawCallback": function () { modalUi(); Outscenario.curSearchOpr = $('#oprMngCode').val(); } }); }, chkListCnt: function() { var cnt = 0; $.ajax({ type: "POST", async: false, datatype: "JSON", contentType : "application/json; charset=utf-8", url: "/admin/rcp/statistics/monitoring/outscenario/chklistcnt.do", data: JSON.stringify(Outscenario.searchData), success: (function(data) { cnt = data; }) }); return cnt; }, excelDownload: function() { if (Outscenario.chkListCnt() > 1000000) { $.utils.warning('엑셀 다운로드는 백만 건 이하로 가능합니다.'); } else { var titleList = ['시나리오 그룹', '시나리오 명 (건수)', '이탈 구간 노드 코드 (노드 형태) (건수)', '이탈 노드 차지 비율']; const req = new XMLHttpRequest(); const formData = new FormData(); formData.append("monitoringOutscenarioVO.oprMngCode", Outscenario.searchData.oprMngCode); formData.append("monitoringOutscenarioVO.oprMngCodeList", Outscenario.searchData.oprMngCodeList); formData.append("monitoringOutscenarioVO.callInitDateFrom", Outscenario.searchData.callInitDateFrom); formData.append("monitoringOutscenarioVO.callInitDateTo", Outscenario.searchData.callInitDateTo); formData.append("monitoringOutscenarioVO.scenarioIdList", Outscenario.searchData.scenarioIdList); formData.append("monitoringOutscenarioVO.allScenarioIdList", Outscenario.searchData.allScenarioIdList); formData.append("monitoringOutscenarioVO.chkScenarioAll", Outscenario.searchData.chkScenarioAll); for (let i = 0; i < titleList.length; i++) { formData.append("titleList[" + i + "]", titleList[i]); } formData.append("menuVal", menuVal); if ($('#oprMngCode').val() == 'all') { formData.append("oprMngCode", $('#mainOpr').val()); } else { if (Outscenario.curSearchOpr == '') { formData.append("oprMngCode", $('#oprMngCode').val().split('_')[2]); } else { formData.append("oprMngCode", Outscenario.curSearchOpr.split('_')[2]); } } req.open("POST", '/admin/rcp/statistics/monitoring/outscenario/exceldownload.do', true); req.responseType = "arraybuffer"; req.onload = function () { const arrayBuffer = req.response; if (arrayBuffer) { var blob = new Blob([arrayBuffer], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}); var link = document.createElement('a'); link.href = window.URL.createObjectURL(blob); link.download = "시나리오_이탈_노드_관리.xlsx"; link.click(); } }; req.send(formData); } }, getTokenList: function(oprMngCode, scenarioSeq, nodeCode) { var result = []; var param = { oprMngCode: oprMngCode, scenarioSeq: scenarioSeq, nodeCode: nodeCode, callInitDateFrom: Outscenario.searchData.callInitDateFrom, callInitDateTo: Outscenario.searchData.callInitDateTo } $.ajax({ type: "POST", async: false, datatype: "JSON", contentType : "application/json; charset=utf-8", url: "/admin/rcp/statistics/monitoring/outscenario/tokenlist.do", data: JSON.stringify(param), success: (function(data) { result = data; }) }); return result; }, setModal: function(obj) { $('#detailTalk').html(''); $("#moveScenario").attr("href", "/admin/rcp/conversation/scenario/manage.do?scenarioSeq="+$(obj).data('scenario-seq')); // var tokenListVal = $(obj).data('token-list').split(','); var tokenListVal = Outscenario.getTokenList($(obj).data('opr'), $(obj).data('scenario-seq'), $(obj).data('node-code')); var param = { tokenList: tokenListVal } var html = ''; $.ajax({ type: "POST", async: false, datatype: "JSON", contentType : "application/json; charset=utf-8", url: "/admin/rcp/statistics/monitoring/outscenario/calllist.do", data: JSON.stringify(param), success: (function(data) { $('#testTb2').DataTable().destroy(); if (data.length > 0) { for (var i=0; i' + '' + data[i].rownum + '' + '' + data[i].telNo.substr(0, 3) + '-' + data[i].telNo.substr(3, 4).replaceAll(data[i].telNo.substr(3, 4), '****') + '-' + data[i].telNo.substr(7, 4) + '' + '' + data[i].dnisNo + '' + '' + data[i].callTime + '' + '' + data[i].callInitDate + '' + '' } $('#callDataArea').html(html); $("#testTb2").dataTable({ "autoWidth": false, "paging": true, "pagingType": "full_numbers", "ordering": true, "info": false, "filter": false, "lengthChange": true, "dom": 'rt<"bottom"fip><"clear">', }); $("#testTb2").dataTable(); } }) }); }, // 관리자(봇) 채팅 append appendAdminMsg: function(obj) { var chkRecFileBool = true; // const regExp1 = /https?:\/\/[\w\-\.]+[:|0-9/_a-zA-Z]+.wav/; const regExp1 = /recordfile\/[0-9]{8}\/[:|0-9\/_a-zA-Z]+.wav/; const filePathValidation = regExp1.test(obj.recFilePath); if($.utils.isBlank(obj.recFilePath) || !filePathValidation) { chkRecFileBool = false; } var chkCnt = 0; var html = ''; chkCnt = parseInt(obj.COUNT); html += '
' + '
' + '' + '
' + '
' + '

' + obj.CHAT_TEXT + '

' + '
' + '' if (chkRecFileBool) { html += "녹취 듣기" + "녹취 다운로드" } if (chkCnt > 0) { html += "대화 책갈피 제거" } else { html += "대화 책갈피 추가" } html += '' + '
' $("#detailTalk").append(html); }, // 사용자 채팅 append appendUserMsg: function(obj) { var chkRecFileBool = true; // const regExp1 = /https?:\/\/[\w\-\.]+[:|0-9/_a-zA-Z]+.wav/; const regExp1 = /recordfile\/[0-9]{8}\/[:|0-9\/_a-zA-Z]+.wav/; const filePathValidation = regExp1.test(obj.recFilePath); if($.utils.isBlank(obj.recFilePath) || !filePathValidation) { chkRecFileBool = false; } var chkCnt = 0; var html = ''; chkCnt = parseInt(obj.COUNT); html += '
' + '
' + '

' + obj.CHAT_TEXT + '

' + '
' + '
' + '' + '
' + '' if (chkRecFileBool) { html += "녹취 듣기" + "녹취 다운로드" } if (chkCnt > 0) { html += "대화 책갈피 제거" } else { html += "대화 책갈피 추가" } html += '' + '
' $("#detailTalk").append(html); }, setBookmarkModal: function(obj) { multiModalUi(); $('#bookmarkText').text($(obj).data('text')); this.setBookmarkErrCd(); $('#addOprMngCode').val($(obj).data('opr')); Outscenario.logTypeVal = $(obj).data('logType'); $('#tokenVal').val($(obj).data('token')); Outscenario.talkSeqVal = $(obj).data('talkSeq'); }, setRemoveBookmarkModal: function(obj) { $('#measureInfo').val(''); multiModalUi(); $('#removeBookmarkText').val($(obj).data('text')); this.setMeasureTypeCd(); $('#removeOprMngCode').val($(obj).data('opr')); $('#seqVal').val($(obj).data('seq')); Outscenario.logTypeVal = $(obj).data('logType'); $('#tokenVal').val($(obj).data('token')); Outscenario.talkSeqVal = $(obj).data('talkSeq'); }, setBookmarkErrCd: function() { var arr = $('#oprMngCode').val().split('_'); var param = { oprMngCode: $('#oprMngCode').val(), custCode: arr[0], custCodeList: Outscenario.custCodeList, oprMngCodeUpper: arr[0] + '_RCP_' + $('#oprMngCode').find(':selected').data('sg-upper'), oprMngCodeUpperList: Outscenario.oprMngCodeUpperList, majorCode: 'BOOKMARK_ERR_CODE' } $.ajax({ type: "POST", async: false, datatype: "JSON", contentType : "application/json; charset=utf-8", url: "/admin/rcp/statistics/monitoring/consulting/commonCodeSelectList.do", data: JSON.stringify(param), success: (function(data) { var bookmarkErrHtml = ''; $('#bookmarkErr').html(''); for(var i=0; i' + data[i].description + ''; } $('#bookmarkErr').html(bookmarkErrHtml); $('#bookmarkErr').niceSelect('update'); }) }); }, setMeasureTypeCd: function() { var arr = $('#oprMngCode').val().split('_'); var param = { oprMngCode: $('#oprMngCode').val(), custCode: arr[0], custCodeList: Outscenario.custCodeList, oprMngCodeUpper: arr[0] + '_RCP_' + $('#oprMngCode').find(':selected').data('sg-upper'), oprMngCodeUpperList: Outscenario.oprMngCodeUpperList, majorCode: 'MEASURE_TYPE' } $.ajax({ type: "POST", async: false, datatype: "JSON", contentType : "application/json; charset=utf-8", url: "/admin/rcp/statistics/monitoring/consulting/commonCodeSelectList.do", data: JSON.stringify(param), success: (function(data) { var html = ''; $('#measureType').html(''); for(var i=0; i' + data[i].description + ''; } $('#measureType').html(html); $('#measureType').niceSelect('update'); }) }); }, addBookmark: function(obj) { if (obj.bookmarkErrCode == null || obj.bookmarkErrCode == '') { $.utils.warning('책갈피 유형을 선택해주세요.'); return; } var param = { logType: obj.logType, token: obj.token, talkSeq: obj.talkSeq, talkText: obj.talkText, bookmarkErrCode: obj.bookmarkErrCode, menuVal: menuVal, oprMngCode: obj.oprMngCode.split('_')[2] } $.ajax({ type: "POST", async: false, datatype: "JSON", contentType : "application/json; charset=utf-8", url: "/admin/rcp/statistics/monitoring/conversationMark/insert.do", data: JSON.stringify(param), success: (function(data) { if (data == 1) { $.utils.success('저장되었습니다.'); } $('#addedBookmark').fadeOut(250); removeDimMulti(); // $('#addBookmarkBtn').off('click'); $('#addedBookmark').attr('class', 'modal multi'); var isVisible = $('#addedBookmark').is(':visible'); var modalLength = $('.modal.multi:visible').length; if (isVisible) { if (modalLength > 1) { $('#addedBookmark').fadeOut(250); } else { $('.dim-multi').fadeOut(250); } } Outscenario.resetAddIcon(obj); }) }); }, resetAddIcon: function(obj) { var param = { logType: obj.logType, token: obj.token, talkSeq: obj.talkSeq } $.ajax({ type: "POST", async: false, datatype: "JSON", contentType : "application/json; charset=utf-8", url: "/admin/rcp/statistics/monitoring/conversationMark/checkbookmark.do", data: JSON.stringify(param), success: (function(data) { var logType = Outscenario.logTypeVal; var talkSeq = Outscenario.talkSeqVal; var fncLtTs = 'fnc'; if (logType != null && logType != '' && talkSeq != null && talkSeq != '') { fncLtTs += logType; fncLtTs += talkSeq; var $fncLtTs = $('#' + fncLtTs); $fncLtTs.find('.addedIco').attr('rel', 'removeBookmark'); $fncLtTs.find('.addedIco').attr('data-seq', data.SEQ); $fncLtTs.find('.addedIco').addClass('removeIco'); $fncLtTs.find('.addedIco').removeClass('addedIco'); } }) }); }, removeBookmark: function(obj) { if (obj.measureType == null || obj.measureType == '') { $.utils.warning('조치 유형을 선택해주세요.'); return; } if (obj.measureInfo == null || obj.measureInfo == '') { $.utils.warning('조치 내용을 입력해주세요.'); return; } var param = { measureType: obj.measureType, seq: obj.seq, menuVal: menuVal, oprMngCode: obj.oprMngCode.split('_')[2], measureInfo: obj.measureInfo } $.ajax({ type: "POST", async: false, datatype: "JSON", contentType : "application/json; charset=utf-8", url: "/admin/rcp/statistics/monitoring/conversationMark/update.do", data: JSON.stringify(param), success: (function(data) { if (data == 1) { $.utils.success('삭제되었습니다.'); } $('#removeBookmark').fadeOut(250); removeDimMulti(); // $('#removeBookmarkBtn').off('click'); $('#removeBookmark').attr('class', 'modal multi'); var isVisible = $('#removeBookmark').is(':visible'); var modalLength = $('.modal.multi:visible').length; if (isVisible) { if (modalLength > 1) { $('#removeBookmark').fadeOut(250); } else { $('.dim-multi').fadeOut(250); } } Outscenario.resetRemoveIcon(obj); }) }); }, resetRemoveIcon: function(obj) { var param = { logType: obj.logType, token: obj.token, talkSeq: obj.talkSeq } $.ajax({ type: "POST", async: false, datatype: "JSON", contentType : "application/json; charset=utf-8", url: "/admin/rcp/statistics/monitoring/conversationMark/checkbookmark.do", data: JSON.stringify(param), success: (function(data) { var logType = Outscenario.logTypeVal; var talkSeq = Outscenario.talkSeqVal; var fncLtTs = 'fnc'; if (logType != null && logType != '' && talkSeq != null && talkSeq != '') { fncLtTs += logType; fncLtTs += talkSeq; var $fncLtTs = $('#' + fncLtTs); $fncLtTs.find('.removeIco').attr('rel', 'addedBookmark'); $fncLtTs.find('.removeIco').addClass('addedIco'); $fncLtTs.find('.removeIco').removeClass('removeIco'); } }) }); } } $(document).ready(function () { Outscenario.init(); $('#oprMngCode').on('change', function() { Outscenario.setScenarioNameList(); // Outscenario.resetMoreOpenBtn(0); }); $('#addBookmarkBtn').on('click', function() { var param = { oprMngCode: $('#addOprMngCode').val(), logType: Outscenario.logTypeVal, token: $('#tokenVal').val(), talkSeq: Outscenario.talkSeqVal, talkText: $('#bookmarkText').text(), bookmarkErrCode: $('#bookmarkErr').val() } Outscenario.addBookmark(param); }); $('#removeBookmarkBtn').on('click', function() { var param = { oprMngCode: $('#removeOprMngCode').val(), measureType: $('#measureType').val(), seq: $('#seqVal').val(), measureInfo: $('#measureInfo').val() } Outscenario.removeBookmark(param); }); }); $(document).on("click", ".addedIco", function() { Outscenario.setBookmarkModal(this); }); $(document).on("click", ".removeIco", function() { Outscenario.setRemoveBookmarkModal(this); }); $(document).on("click", ".stopBtnIco", function() { var audio = $(".audio-box audio")[0]; audio.pause(); $(this).removeClass('stopBtnIco'); $(this).addClass('listeningIco'); }); $(document).on("click", ".listeningIco", function() { var varThis = this; var audio = $(".audio-box audio")[0]; $('a.stopBtnIco').each(function(index,item){ $(this).removeClass('stopBtnIco'); $(this).addClass('listeningIco'); }); $(this).removeClass('listeningIco'); $(this).addClass('stopBtnIco'); var param = { fileName: $(this).data("file-path"), menuVal: menuVal, oprMngCode: $(this).data("opr").split('_')[2] } $.ajax({ type: "POST", async: false, datatype: "JSON", contentType : "application/json; charset=utf-8", url: "/admin/rcp/statistics/monitoring/consulting/play.do", data: JSON.stringify(param), success: (function(data) { if (audio.src == data) { audio.play(); } else { audio.pause(); audio.src = data; audio.play(); } }) }); audio.onended = function() { $(varThis).removeClass('stopBtnIco'); $(varThis).addClass('listeningIco'); }; }); $(document).on("click", ".downloaderIco", function() { const req = new XMLHttpRequest(); const formData = new FormData(); formData.append("fileName", $(this).data("file-path")); formData.append("menuVal", menuVal); formData.append("oprMngCode", $(this).data("opr").split('_')[2]); req.open("POST", '/admin/rcp/statistics/monitoring/consulting/downloadRecordFile.do', true); req.responseType = "arraybuffer"; req.onload = function() { const arrayBuffer = req.response; if (arrayBuffer) { var blob = new Blob([arrayBuffer], { type: "application/octetstream" }); var link=document.createElement('a'); link.href=window.URL.createObjectURL(blob); link.download="녹취파일.wav"; link.click(); } }; req.send(formData); }); $(document).on("click", ".scenarioChkBox", function() { if ($(this).find('input').attr('name') == 'all') { $("input:checkbox[name='checkbox']").prop("checked", false); if ($('#chk').is(':checked')) { Outscenario.resetMoreOpenBtn($("input:checkbox[name=checkbox]").length); } else { Outscenario.resetMoreOpenBtn(0); } } else { Outscenario.fncScenarioChk(); } }); $(document).on("click", "tr.detailTalk", function() { $("#detailTalk").html(''); var param = { token: $(this).data('token') } $.ajax({ type: "POST", async: false, datatype: "JSON", contentType : "application/json; charset=utf-8", url: "/admin/rcp/statistics/monitoring/consulting/recordCallList.do", data: JSON.stringify(param), success: (function(data) { if(data.length > 0) { for(var i in data) { var item = data[i]; if(item.TYPE == "B") { Outscenario.appendAdminMsg(item); } else { Outscenario.appendUserMsg(item); } } } modalUi(); multiModalUi(); }) }); }); $(document).on("dblclick", "tr.modalLoad", function() { Outscenario.setModal(this); }); function multiModalUi() { $('.multiModalLoad').on('click', function () { var $self = $(this); var $thisrel = $self.attr('rel'); var $target = $('#' + $thisrel); // open and focusin $target.attr('tabindex', '0').fadeIn(250).focus(); $target.css({ display: 'table' }); $target.attr('class', 'modal multi open'); // create sizing var layerHeight = $target.outerHeight(); var layerWidth = $target.outerWidth(); $target.css({ marginLeft: -layerWidth / 2, marginTop: -layerHeight / 2 }); // create background createDimMulti(); // close and focusout $target.find(".close").on('click', function (e) { e.preventDefault(); $target.fadeOut(250); removeDimMulti(); $(this).off('click'); $target.attr('class', 'modal multi'); var isVisible = $target.is(':visible'); var modalLength = $('.modal.multi:visible').length; if (isVisible) { if (modalLength > 1) { $target.fadeOut(250); } else { $('.dim-multi').fadeOut(250); } } }); }); } function createDimMulti() { if (!$('.dim-multi').length) { $('body').append('
'); } $('.dim-multi').fadeIn(250); $('body').css({ overflow: 'hidden' }).bind('touchmove', function (e) { e.preventDefault(); }); } function removeDimMulti() { $('.dim-multi').fadeOut(250); $('body').css({ overflow: 'inherit' }).unbind('touchmove'); }