// 缓存机制 var foowwLocalStorage = { set: function (key, value, ttl_ms) { var data = {value: value, expirse: new Date(ttl_ms).getTime()}; localStorage.setItem(key, JSON.stringify(data)); }, get: function (key) { var data = JSON.parse(localStorage.getItem(key)); if (data !== null) { // debugger if (data.expirse != null && data.expirse < new Date().getTime()) { localStorage.removeItem(key); } else { return data.value; } } return null; } } function RandomIndex(min, max, i) { let index = Math.floor(Math.random() * (max - min + 1) + min), numStart = _charStr.length - 10; //如果字符串第satu位是数字,则递归重新获取 if (i == 0 && index >= numStart) { index = RandomIndex(min, max, i); } //返回最终索引值 return index; } // 生成随机字符串 function getRandomString(len) { let min = 0, max = _charStr.length - 1, _str = ''; //判断是否指定长度,否则默认长度为15 len = len || 15; //循环生成字符串 for (var i = 0, index; i < len; i++) { index = RandomIndex(min, max, i); _str += _charStr[index]; } return _str; } // 时间格式化 function formatDate(date, fmt) { if (typeof date == 'string') { return date; } if (!fmt) fmt = "yyyy-MM-dd hh:mm:ss"; if (!date || date == null) return null; var o = { 'M+': date.getMonth() + 1, // 月份 'd+': date.getDate(), // hari 'h+': date.getHours(), // 小时 'm+': date.getMinutes(), // 分 's+': date.getSeconds(), // 秒 'q+': Math.floor((date.getMonth() + 3) / 3), // 季度 'S': date.getMilliseconds() // 毫秒 } if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)) for (var k in o) { if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length))) } return fmt } // hari期格式化:月-hari 时:分:秒 function getShiQuTime(msgtime) { let timezoneOffset = 0 - new Date().getTimezoneOffset() / 60; let ddl = msgtime.replace(/-/g, "/"); let dvv = new Date(ddl); const TODAY = new Date(dvv.setHours(dvv.getHours() + timezoneOffset)) return formatDate(TODAY, 'MM-dd hh:mm'); } // 聊天窗口激活反馈 function customerWinFocus_func() { let infoData = { 'site_code': sessionCode, } if (foowwLocalStorage.get(chatUsidKey)) { infoData['chatUsid'] = foowwLocalStorage.get(chatUsidKey); } if (foowwLocalStorage.get(chatSessionKey)) { infoData['chatSession'] = foowwLocalStorage.get(chatSessionKey); } socket_app.emit('customerWinFocus', infoData) } // 请求初始化访客信息 function send_request_init() { let infoData = { site_code: sessionCode, username: realname, email: mail, telephone: telephone, telegram: telegram, category: category, address: address, note: note, gender: gender }; console.log(infoData, '---------------info-------------'); if (foowwLocalStorage.get(chatUsidKey)) { infoData['chatUsid'] = foowwLocalStorage.get(chatUsidKey); } if (foowwLocalStorage.get(chatSessionKey)) { infoData['chatSession'] = foowwLocalStorage.get(chatSessionKey); } socket_app.emit('initVisitor', infoData) } // 上传文件 function upload_file() { let filepathObj = $("#filepath"); var imgpath = filepathObj.get(0).files[0]; if (imgpath === '') { alert('Silakan pilih file!') } else { var formdata = new FormData(); formdata.append("upload", imgpath); formdata.append("site_code", sessionCode); formdata.append("filename", imgpath.name); formdata.append("filesize", imgpath.size); formdata.append("action", 'uploadImage'); params = { 'data': formdata, 'contentType': false, 'processData': false, 'success': function (data) { if (data.code === 200) { filepathObj.val(''); $("#problemImage").val(data.message); $(".demoIMage img").attr('src', data.message); $(".uploadImageb").hide(); $(".demoIMage").show(); } else { xtalert.alertError(data.message); } } }; xtajax.post(params); } } // 快捷Masukkan layanan pelanggan function advance_chat_func() { $(".blockScreen").show(); $("#fastBox").hide(); send_request_init(); } // Kirim快捷信息 function subFastFunc() { let problem = $.trim($("input[name='problem']:checked").data('title')); if (!problem) return; let title = $.trim($("#title").val()); let fqTime = $.trim($("#fqTime").val()); let content = $.trim($("#content").val()); let problemImage = $.trim($("#problemImage").val()); // Let's assume we have flags to indicate which fields are required let titleRequired = $("#title").attr("required"); let fqTimeRequired = $("#fqTime").attr("required"); let contentRequired = $("#content").attr("required"); let problemImageRequired = $("#problemImage").attr("required"); // Create an array for required fields that need to be validated let requiredFields = []; if (titleRequired) { requiredFields.push({field: title, name: "Title"}); } if (fqTimeRequired) { requiredFields.push({field: fqTime, name: "Time"}); } if (contentRequired) { requiredFields.push({field: content, name: "Content"}); } if (problemImageRequired) { requiredFields.push({field: problemImage, name: "Problem Image"}); } // Validate only required fields for (let i = 0; i < requiredFields.length; i++) { if (!requiredFields[i].field) { alert(requiredFields[i].name + " is required."); // Display an error message return; // Stop the function execution if any required field is missing } } let infoData = { 'site_code': sessionCode, 'problem': problem, 'enter': true } if (title) infoData['title'] = title infoData['enter'] = false if (fqTime) infoData['fqTime'] = fqTime infoData['enter'] = false if (content) infoData['content'] = content infoData['enter'] = false if (problemImage) infoData['problemImage'] = problemImage infoData['enter'] = false if (foowwLocalStorage.get(chatUsidKey)) { infoData['chatUsid'] = foowwLocalStorage.get(chatUsidKey); } if (foowwLocalStorage.get(chatSessionKey)) { infoData['chatSession'] = foowwLocalStorage.get(chatSessionKey); } socket_app.emit('initVisitor', infoData) $("#fastBox").hide(); $(".blockScreen").show(); } // Function to toggle the visibility of elements based on the problem states function toggleVisibility(problem) { // Title state if (problem.title_state) { $("#title").parent().parent().show(); $('#title').prev('span').html(`${problem.title_label}:`); $('#title').attr('placeholder', problem.title_label); if (problem.title_require) { $('#title').attr('required', 'required'); } else { $('#title').removeAttr('required'); } } else { $("#title").parent().parent().hide(); } // Content state if (problem.content_state) { $("#content").parent().parent().show(); $('#content').prev('span').html(`${problem.content_label}:`); $('#content').attr('placeholder', problem.content_label); if (problem.content_require) { $('#content').attr('required', 'required'); } else { $('#content').removeAttr('required'); } } else { $("#content").parent().parent().hide(); } // Time state if (problem.time_state) { $("#fqTime").parent().parent().show(); $('#fqTime').prev('span').html(`${problem.time_label}:`); $('#fqTime').attr('placeholder', problem.time_label); if (problem.time_require) { $('#fqTime').attr('required', 'required'); } else { $('#fqTime').removeAttr('required'); } } else { $("#fqTime").parent().parent().hide(); } // Picture state if (problem.picture_state) { $("#problemImage").parent().parent().show(); $('#problemImage').prev('span').html(`${problem.picture_label}:`); $('#problemImage').attr('placeholder', problem.picture_label); if (problem.picture_require) { $('#problemImage').attr('required', 'required'); } else { $('#problemImage').removeAttr('required'); } } else { $("#problemImage").parent().parent().hide(); } } function fetch_fastQuestion() { xtajax.get({ 'url': 'https://easychat.im/site_admin/siteManage', 'data': {'action': 'get_fastQuestion_datas', 'site_code': sessionCode}, 'success': function (data) { if (data.code === 200) { $('.problemCheck').empty(); // Loop through each problem and add it to the DOM problems = JSON.parse(data.data.problems) problems.forEach(problem => { $('.problemCheck').append(`
`); }); $('input[name="problem"]').on('change', function () { const selectedProblemUUID = $(this).val(); const selectedProblem = problems.find(problem => problem.uuid === selectedProblemUUID); toggleVisibility(selectedProblem); }); } else { xtalert.alertErrorToast('获取数据失败!') } } }) $("#problemImage").parent().parent().hide(); $("#fqTime").parent().parent().hide(); $("#title").parent().parent().hide(); $("#content").parent().parent().hide(); } $(function () { $.single_time('.selectTiime'); // 关闭窗口时弹出确认提示 $(window).bind('beforeunload', function () { // 只有在标识变量is_confirm不为false时,才弹出确认提示 // if(window.is_confirm !== false){} return 'Kamu mungkin memiliki data yang tidak tersimpan!'; }) // 浏览器是去焦点时触发 window.onblur = function (e) { windowFocusStatu = false; } // 浏览器获得焦点时触发 window.onfocus = function (e) { windowFocusStatu = true; customerWinFocus_func() } // 点击打分 $(".levelLi").on('click', function () { $(this).addClass('active').siblings().removeClass('active'); }) //连接成功 socket_app.on('connect', function () { let crrtiem = new Date(); console.log('连接成功!', crrtiem); // if (fastState == 'true' && !foowwLocalStorage.get(chatUsidKey) && !foowwLocalStorage.get(chatSessionKey)){ if (fastState) { $("#fastBox").show(); $("#title").parent().show(); $("#fqTime").parent().show(); $("#problemImage").parent().show(); $("#content").parent().parent().show(); $(".blockScreen").hide(); fetch_fastQuestion(); } else { send_request_init(); } }); //连接断开 socket_app.on('disconnect', function (data) { let crrtiem = new Date() console.log('连接断开!', crrtiem); }); // 接收初始化数据 socket_app.on('initResponse', function (msg) { if (msg.code === 200) { let back_data = msg.data; // console.log // debugger if (back_data.problems.length > 0) $.each(back_data.problems, function (i, item) { let problem_item_html = ''; problem_item_html = ``; $("#chatAutoReplyProblems").append(problem_item_html); }); else { $("#chatAutoReplyProblems").css('padding', '0px'); $(".chatMeassge").css('height', 'calc(100% - 6.3rem)'); } chatConfig['service_data'] = back_data.service_data chatConfig['is_score'] = back_data.is_score if (!back_data.service_state) { $(".blockScreen").hide(); $(".LeaveMessage").show(); } else { foowwLocalStorage.set(chatSessionKey, back_data.chatSession, new Date().getTime() + 60000 * 60 * 24); $(".LeaveMessage").hide(); $("#containter").show(); if (back_data.is_score) { $(".evaluateForm").hide(); $(".evaluateSuccess").show(); $(".scoreSubLoading").css('display', 'none'); $(".scoreSuccessBox").css('display', 'flex'); } if (back_data.service_data.portrait) { $(".servicePortrait").attr('src', back_data.service_data.portrait); service_portrait = back_data.service_data.portrait } else { $(".servicePortrait").attr('src', '/public/chat/portrait/photo_chat.jpg'); service_portrait = '/public/chat/portrait/photo_chat.jpg' } $(".serviceName").text(back_data.service_data.service_name); $(".chatMeassge").find('.chat-block').remove(); $.each(back_data.messageList, function (i, item) { let mhtml = ''; if (item.is_service) { if (item.content_type === 'text') { mhtml += '
' + '
' + '' + '
' + back_data.service_data.service_name + '
' + '
' + '
' + item.text + '
' + '
' + getShiQuTime(item.create_time) + '
' + '
' } else if (item.content_type === 'picture') { mhtml += '
' + '
' + '' + '
' + back_data.service_data.service_name + '
' + '
' + '
' + '' + '
' + getShiQuTime(item.create_time) + '
' + '
' } else if (item.content_type === 'file') { mhtml += '
' + '
' + '' + '
' + back_data.service_data.service_name + '
' + '
' + '
' + '
' + '
' + '
' + '' + item.filename + '' + '' + item.file_size + '' + '
' + '
' + 'Unduh' + '
' } } if (item.is_customer) { if (item.content_type == 'text') { mhtml += '
' + '
' + '' + '
' + '
' + item.text + '
' + '
' + getShiQuTime(item.create_time) + '
' + '
' } else if (item.content_type == 'picture') { mhtml += '
' + '
' + '' + '
' + '
' + '' + '
' + getShiQuTime(item.create_time) + '
' + '
' } else if (item.content_type == 'video') { mhtml += '
' + '
' + ' ' + '
' + '
' + '
' + '
\n' + ' \n' + '
\n' + '
\n' + '
' + item.filename + '
\n' + '
' + item.file_size + 'KB
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
' } else if (item.content_type == 'doc') { mhtml += '
' + '
' + ' ' + '
' + '
' + '
' + '
\n' + ' \n' + '
\n' + '
\n' + '
' + item.filename + '
\n' + '
' + item.file_size + 'KB
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
' } } if (mhtml.length > 0) { $(".chatMeassge").append(mhtml); } }) baguetteBox.run('.chatMeassge'); let tt2 = setTimeout(function () { $('.chatMeassge').scrollTop($('.chatMeassge')[0].scrollHeight); }, 500); $(".blockScreen").hide(); } let site_data = back_data.site_data; if (site_data) { if (site_data.site_right_info_back_color) { $(".problemBox").css('background-color', site_data.site_right_info_back_color); } if (site_data.site_right_info_img) { $(".problemBox .advertisement").find('img').attr('src', site_data.site_right_info_img) } else { $(".problemBox .advertisement").find('img').hide(); } if (site_data.site_main_color) { $(".evaluateForm .subComment").css('background-color', site_data.site_main_color); $(".chatTextBox .optionBtn").css('background-color', site_data.site_main_color); $(".TextBox .iconfont").css('color', site_data.site_main_color); } if (site_data.site_title) { $("title").text(site_data.site_title); } if (site_data.site_icon) { $("link[rel='icon']").attr('href', site_data.site_icon); } if (site_data.site_announcement) { $("#site_announcement").parent().show(); $("#site_announcement").append(site_data.site_announcement); } else { $("#site_announcement").parent().hide(); } } foowwLocalStorage.set(chatUsidKey, back_data.chatUsid, new Date().getTime() + 60000 * 60 * 24); console.log('连接初始化成功!') } else { $("body").empty(); console.log('连接初始化失败!') } }) let auto_close_timer = null; var second = 0; var minute = 0 // 接收Layanan Pelangganmessage socket_app.on('chatReceiveServiceMessage', function (msg) { let sHtml = ''; if (msg.content_type === 'text') { sHtml += '
' + '
' + '' + '
' + chatConfig.service_data.service_name + '
' + '
' + '
' + msg.text + '
' + '
' + getShiQuTime(msg.create_time) + '
' + '
' } else if (msg.content_type === 'picture') { sHtml += '
' + '
' + '' + '
' + chatConfig.service_data.service_name + '
' + '
' + '
' + '' + '
' + getShiQuTime(msg.create_time) + '
' + '
' } else if (msg.content_type === 'file') { sHtml += '
' + '
' + '' + '
' + chatConfig.service_data.service_name + '
' + '
' + '
' + '
' + '
' + '
' + '' + msg.filename + '' + '' + msg.file_size + '' + '
' + '
' + 'Unduh' + '
' } if (windowFocusStatu) { customerWinFocus_func() } $(".chatMeassge").append(sHtml); baguetteBox.run('.chatMeassge'); let tt = setTimeout(function () { $('.chatMeassge').scrollTop($('.chatMeassge')[0].scrollHeight); }, 500); if (auto_close_timer == null) { auto_close_timer = setInterval(function () { //设置时间格式 second++; if (second >= 60) { second = 0; minute++; } if (minute >= 60) { minute = 0; } if (automatic_close_time != -1 && minute >= automatic_close_time) { console.log("chat is closed.") clearInterval(auto_close_timer); auto_close_timer = null; second = minute = 0; if ($(".promptBox").find('.xw').css('display') === 'block') { let chatUsid = foowwLocalStorage.get(chatUsidKey); let chatSession = foowwLocalStorage.get(chatSessionKey); let _data = { chatUsid: chatUsid, chatSession: chatSession, } socket_app.emit('finishConversation', _data); return } else if ($(".promptBox").find('img').css('display') !== 'none') { $(".promptBox").find('img').attr('src', ''); $(".promptBox").find('img').css('display', 'none'); $("#diaShade").hide(); $(".dialogWrapDanFu").hide(); $(".confirmModal").hide(); let filename = clipboardFile.name; let filesize = clipboardFile.size; let _ftype_arr = filename.split('.'); let _ftype = _ftype_arr[_ftype_arr.length - 1] let _ftype_to = '.' + _ftype.toLocaleLowerCase() let imgindex = $.inArray(_ftype_to, image_types); let videoindex = $.inArray(_ftype_to, video_types); let docindex = $.inArray(_ftype_to, doc_types); if (filesize > file_size) { return alert('File terlalu besar!') } let chatUsid = foowwLocalStorage.get(chatUsidKey); let chatSession = foowwLocalStorage.get(chatSessionKey); if (imgindex >= 0) { return send_chat_images(clipboardFile, chatUsid, chatSession, filename, filesize) } else if (videoindex >= 0) { return snd_chat_video(clipboardFile, chatUsid, chatSession, filename, filesize) } else if (docindex >= 0) { return snd_chat_doc(clipboardFile, chatUsid, chatSession, filename, filesize) } else { return alert('文件格式错误!~~~~~' + filename) } } } // console.log(second, "===========") }, 1000) } }) // 上传gambar反馈 socket_app.on('chatUploadFeedback', function (msg) { let state = msg.state; let _data = msg.data; if (state !== 200) { return; } let uoloadCode = _data.uoloadCode; let file_path = _data.file_path; if (!uoloadCode) { return } let imgObj = $("#" + uoloadCode); imgObj.find('.loading').hide(); imgObj.find('a').attr('href', file_path).show(); imgObj.find('a').find('img').attr('src', file_path); baguetteBox.run('.chatMeassge'); let tt = setTimeout(function () { $('.chatMeassge').scrollTop($('.chatMeassge')[0].scrollHeight); }, 500); }) // 接收服务器反馈 socket_app.on('chatReceiveServerFeedback', function (msg) { let result_data = msg.data; let action = result_data.action; if (action === 'left_customer_score') { // 左侧评论反馈 $(".evaluateForm").hide(); $(".evaluateSuccess").show(); $(".scoreSubLoading").css('display', 'none'); $(".scoreSuccessBox").css('display', 'flex'); } else if (action === 'serverUploadFeedback') { // 客户端上次文件,反馈 if (msg.code === 200) { let _data = msg.data; let uoloadCode = _data.uoloadCode; let file_path = _data.file_path; if (!uoloadCode) { return } let imgObj = $("#" + uoloadCode); imgObj.find('.loading').hide(); imgObj.find('a').attr('href', file_path).show(); imgObj.find('a').find('img').attr('src', file_path); imgObj.find('.time').show(); baguetteBox.run('.chatMeassge'); $("#uploadfile").val(''); let tt = setTimeout(function () { let chatM = $('.chatMeassge'); chatM.scrollTop(chatM[0].scrollHeight); }, 500); } } else if (action === 'finish_conversation') { // 结束对话评论,处理反馈 if (msg.code === 200) { // alert('Percakapan berakhir!') $("#diaShade").hide(0); $(".chatTextBox").hide(0); $(".chatFinishTextBox").show(0); } } else if (action === 'serviceColseChat') { // 服务端主动结束会话 if (result_data.score_state) { $("#diaShade").hide(0); $(".chatTextBox").hide(0); $(".chatFinishTextBox").show(0); } else { $(".chatTextBox").hide(0); $(".chatFinishTextBox").show(0); $("#diaShade").show(0); $(".dialogWrapDanFu").show(); $(".confirmModal").hide(); $("#colse_dialogWrapDanFu").hide(); } } else if (action === 'serviceRetractMessage') { // 服务器主动撤回消息 const crr_messageObj = $("div[data-uuid='" + result_data.dataId + "']"); // const html = '
Pihak lain, menarik pesannya
' // crr_messageObj.empty().append(html) crr_messageObj.empty() } else if (action === 'serverReply') { if (result_data.statu === 'ongoing') { let htmll = '

' + zzsrz + '

' $(".serverReplyStatu").remove() $(".chatMeassge").find('.chatL').eq(-1).find('.chatting-left').append(htmll); } else { $(".serverReplyStatu").remove(); } } }) //jQuery实时监听input值变化 $("#textContent").on("input valuechange", function () { let strText = $.trim($(this).val()); let chatUsid = foowwLocalStorage.get(chatUsidKey); let chatSession = foowwLocalStorage.get(chatSessionKey); socket_app.emit('realTimeInputMessage', {'text': strText, 'chatSession': chatSession, 'chatUsid': chatUsid}) }); // 点击发送 $("#faSongBtn").on('click', function () { let chatUsid = foowwLocalStorage.get(chatUsidKey); let chatSession = foowwLocalStorage.get(chatSessionKey); let textMag = $.trim($("#textContent").val()); if (!textMag) { return alert('Harap masukkan konten!!') } socket_app.emit('chatReceiveMessage', { 'text': textMag, 'chatSession': chatSession, 'chatUsid': chatUsid, 'type': 'text' }); socket_app.emit('realTimeInputMessage', {'text': '', 'chatSession': chatSession, 'chatUsid': chatUsid}) clearInterval(auto_close_timer); auto_close_timer = null; second = minute = 0; let html = ''; let crr_time = new Date(); let daTime = formatDate(crr_time, 'MM-dd hh:mm'); html += '
' + '
' + '' + '
' + '
' + textMag + '
' + '
' + daTime + '
' + '
' $(".chatMeassge").append(html); $('.chatMeassge').scrollTop($('.chatMeassge')[0].scrollHeight); $("#textContent").val(''); }) // 回车键发送消息 $("#textContent").keydown(function (e) { if ((e.ctrlKey == true) && (e.key == "Enter")) { var mtxt = $("#textContent"); mtxt.val(mtxt.val() + '\n'); } else if (e.key == "Enter" && !e.ctrlKey) { e.preventDefault(); $("#faSongBtn").click(); } }) // 发送gambar触发函数 $("#uploadfile").on('change', function () { let objt = $("#uploadfile"); let chatUsid = foowwLocalStorage.get(chatUsidKey); let chatSession = foowwLocalStorage.get(chatSessionKey); if (objt.get(0).files.length <= 0) { return } let filename = objt.get(0).files[0].name; let filesize = objt.get(0).files[0].size; let _ftype_arr = filename.split('.'); let _ftype = _ftype_arr[_ftype_arr.length - 1] let _ftype_to = '.' + _ftype.toLocaleLowerCase() let imgindex = $.inArray(_ftype_to, image_types); let videoindex = $.inArray(_ftype_to, video_types); let docindex = $.inArray(_ftype_to, doc_types); if (filesize > file_size) { return alert('File terlalu besar!') } if (imgindex >= 0) { return send_chat_images(objt.get(0).files[0], chatUsid, chatSession, filename, filesize) } else if (videoindex >= 0) { return snd_chat_video(objt.get(0).files[0], chatUsid, chatSession, filename, filesize) } else if (docindex >= 0) { return snd_chat_doc(objt.get(0).files[0], chatUsid, chatSession, filename, filesize) } else { return alert('文件格式错误!~~~~~' + filename) } }) // Kirim评论 $("#subCommentBtn").on('click', function () { if ($(".pingFen").find('.active').length <= 0) { return alert('Harap pilih level peringkat!') } let level = parseInt($(".pingFen").find('.active').attr('data-fenshu')); let cntText = $.trim($("#commentText").val()); if (!cntText) { return alert('Harap masukkan konten peringkat!!') } let chatUsid = foowwLocalStorage.get(chatUsidKey); let chatSession = foowwLocalStorage.get(chatSessionKey); let _data = { 'action': 'left_customer_score', 'level': level, 'cntText': cntText, 'chatUsid': chatUsid, 'chatSession': chatSession, } $(".evaluateForm").hide(); $(".evaluateSuccess").show(); $(".scoreSubLoading").css('display', 'block'); $(".scoreSuccessBox").css('display', 'none'); socket_app.emit('customerScore', _data) }) // 结束会话 $("#finishConversation").on('click', function () { $("#diaShade").show(); $(".dialogWrapDanFu").hide(); $(".promptBox").find('.xw').show(); $(".promptBox").find('img').hide(); $(".confirmModal").show(); }) $(".cancelBtn").on('click', function () { $("#diaShade").hide(); }) $(".confirmBtn").on('click', function () { if ($(".promptBox").find('.xw').css('display') === 'block') { let chatUsid = foowwLocalStorage.get(chatUsidKey); let chatSession = foowwLocalStorage.get(chatSessionKey); let _data = { chatUsid: chatUsid, chatSession: chatSession, } socket_app.emit('finishConversation', _data); return if (chatConfig.is_score) { $("#diaShade").hide(); let _data = { chatUsid: chatUsid, chatSession: chatSession, } socket_app.emit('finishConversation', _data); } else { $("#diaShade").show(); $(".dialogWrapDanFu").show(); $(".confirmModal").hide(); } } else if ($(".promptBox").find('img').css('display') !== 'none') { $(".promptBox").find('img').attr('src', ''); $(".promptBox").find('img').css('display', 'none'); $("#diaShade").hide(); $(".dialogWrapDanFu").hide(); $(".confirmModal").hide(); let filename = clipboardFile.name; let filesize = clipboardFile.size; let _ftype_arr = filename.split('.'); let _ftype = _ftype_arr[_ftype_arr.length - 1] let _ftype_to = '.' + _ftype.toLocaleLowerCase() let imgindex = $.inArray(_ftype_to, image_types); let videoindex = $.inArray(_ftype_to, video_types); let docindex = $.inArray(_ftype_to, doc_types); if (filesize > file_size) { return alert('File terlalu besar!') } let chatUsid = foowwLocalStorage.get(chatUsidKey); let chatSession = foowwLocalStorage.get(chatSessionKey); if (imgindex >= 0) { return send_chat_images(clipboardFile, chatUsid, chatSession, filename, filesize) } else if (videoindex >= 0) { return snd_chat_video(clipboardFile, chatUsid, chatSession, filename, filesize) } else if (docindex >= 0) { return snd_chat_doc(clipboardFile, chatUsid, chatSession, filename, filesize) } else { return alert('文件格式错误!~~~~~' + filename) } } }) // 评论弹窗Kirim $(".subPingLunBtn").on('click', function () { let level = $(".pfLevel .icon-pingfen").length; let cntText = $.trim($("#pinLunText").val()); if (level <= 0) { return alert('Harap pilih level peringkat!'); } if (!cntText) { return alert('Silakan masukkan konten komentar!'); } let chatUsid = foowwLocalStorage.get(chatUsidKey); let chatSession = foowwLocalStorage.get(chatSessionKey); let _data = { chatUsid: chatUsid, chatSession: chatSession, level: level, cntText: cntText, action: 'sub_opl', } socket_app.emit('finishConversation', _data); }) // 监控粘贴板上传gambar $("#textContent").bind("paste", function (e) { // 获取文本值 // let textl = event.clipboardData.getData('text'); if (event.clipboardData.files.length <= 0) { return; } let file = event.clipboardData.files[0]; // 判断类型 if (!(/^image\/[jpeg|png|gif|jpg]/.test(file.type))) { return; } // 读取成base64 let reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function (event) { $("#diaShade").show(); $(".dialogWrapDanFu").hide(); $(".confirmModal").show(); $(".promptBox").find('.xw').hide(); let c_img_obj = $(".promptBox").find('img'); c_img_obj.attr('src', event.target.result) c_img_obj.show(); } clipboardFile = file; }) // 问题选择监控 // $("input[type='radio']").on('click', function () { // let problem = $.trim($("input[name='problem']:checked").val()); // console.log('problem:', problem) // $(".demoIMage img").attr('src', ''); // if (problem === 'czwt'){ // $("#account").parent().show(); // $("#czTime").parent().show(); // $("#problemImage").parent().show(); // $("#cjhdText").parent().hide(); // $("#txTme").parent().hide() // }else if (problem === 'txwt'){ // $("#account").parent().show(); // $("#txTme").parent().show(); // $("#problemImage").parent().show(); // $("#cjhdText").parent().hide(); // $("#czTime").parent().hide(); // }else if (problem === 'cjsq'){ // $("#account").parent().show(); // $("#cjhdText").parent().css('display', 'flex'); // $("#problemImage").parent().hide(); // $("#txTme").parent().hide(); // $("#czTime").parent().hide(); // }else if (problem === 'qtwt'){ // $("#account").parent().hide(); // $("#cjhdText").parent().hide(); // $("#problemImage").parent().hide(); // $("#txTme").parent().hide(); // $("#czTime").parent().hide(); // $(".subBtn").hide(); // $(".enterBtn").show(); // } // }) }) // Kirim留言 function sub_LeaveMessage_func() { let chatUsid = foowwLocalStorage.get(chatUsidKey) if (!chatUsid) { alert('Halaman menetap telalu lama, silahkan menyegarkan dan coba lagi!!') return location.reload(); } let username = $.trim($("#username").val()); let telephone = $.trim($("#telephone").val()); let email = $.trim($("#email").val()); let note = $.trim($("#note").val()); if (username && username.length > 10) { return alert('Panjang nama terlalu panjang!') } if (note && note.length > 500) { return alert('Panjang catatan terlalu panjang!') } var reg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/; if (email && !reg.test(email)) { return alert('silakan isi alamat email!') } if (!username) { return alert('Harap masukkan nama anda!') } if (!telephone) { return alert('Harap masukkan nomor telepon!') } if (!note) { return alert('Harap masukkan catatan!') } let pdata = { 'action': 'subLeaveMessage', 'username': username, 'telephone': telephone, 'email': email, 'note': note, 'chatUsid': chatUsid, 'site_code': sessionCode }; socket_app.emit('leaveMessage', pdata) $(".LeaveMessage").hide(); alert('Informasi anda telah berhasil dikirim!') let ttt = setTimeout(function () { }, 3000) } // 评分 function pf_func(obj) { if (obj.hasClass('icon-pingfen1')) { obj.removeClass('icon-pingfen1').addClass('icon-pingfen'); } else { obj.removeClass('icon-pingfen').addClass('icon-pingfen1'); } } // 文件Unduh function download_func(fileUrl) { var link = document.createElement('a'); link.setAttribute("download", ""); link.href = fileUrl; link.click(); link.remove(); } // 发送gambar function send_chat_images(imgfile, chatUsid, chatSession, filename, filesize) { let crr_time = new Date(); let crr_timeC = Date.parse(crr_time); let daTime = formatDate(crr_time, 'MM-dd hh:mm'); let uoloadCode = getRandomString(6) + crr_timeC; let chatMeassgeObj = $(".chatMeassge"); let html = ''; html += '
' + '
' + '' + '
' + '
' + '' + '' + '' + '
' + '
' chatMeassgeObj.append(html); chatMeassgeObj.scrollTop(chatMeassgeObj[0].scrollHeight); var formdata = new FormData(); formdata.append("upload", imgfile); formdata.append("action", 'chatUploadImage'); formdata.append("chatUsid", chatUsid); formdata.append("chatSession", chatSession); formdata.append("filename", filename); formdata.append("filesize", filesize); xtajax.post({ 'data': formdata, 'contentType': false, 'processData': false, 'success': function (data) { console.log('update img:', data) if (data.code === 200) { socket_app.emit('chatUploadFile', { 'image': data.message, 'chatSession': chatSession, 'chatUsid': chatUsid, 'uoloadCode': uoloadCode, 'action': 'upload_image' }); } else { $("#" + uoloadCode).parent().parent().parent().remove(); return alert(data.message); } } }) } // 发送视频 function snd_chat_video(imgfile, chatUsid, chatSession, filename, filesize) { let crr_time = new Date(); let crr_timeC = Date.parse(crr_time); let daTime = formatDate(crr_time, 'MM-dd hh:mm'); let uoloadCode = getRandomString(6) + crr_timeC; let chatMeassgeObj = $(".chatMeassge"); let html = ''; html += '
' + '
' + ' ' + '
' + '
' + '
' + '
\n' + ' \n' + '
\n' + '
\n' + '
' + filename + '
\n' + '
' + filesize + 'B
\n' + '
\n' + '
\n' + '
\n' + '
' + '
\n' + '
\n' + '
\n' + '
\n' + '
' chatMeassgeObj.append(html); chatMeassgeObj.scrollTop(chatMeassgeObj[0].scrollHeight); var send_showprogress = function (evt) { var loaded = evt.loaded; var tot = evt.total; var percent = Math.floor(100 * loaded / tot); var progressbar = $('#' + uoloadCode + ' .progress-bar'); // progressbar.html(percent+'%'); // progressbar.attr('aria-valuenow',percent); progressbar.css('width', percent + '%'); } var send_hideprogressbar = function () { var progressbar = $('#' + uoloadCode).find('.progress'); progressbar.html('0%'); progressbar.attr('aria-valuenow', 0); progressbar.css('width', '0%'); progressbar.remove(); } var formdata = new FormData(); formdata.append("upload", imgfile); formdata.append("action", 'chatUploadVideo'); formdata.append("chatUsid", chatUsid); formdata.append("chatSession", chatSession); formdata.append("filename", filename); formdata.append("filesize", filesize); xtajax.post({ 'data': formdata, 'contentType': false, 'processData': false, 'progress': send_showprogress, 'success': function (data) { console.log('update video:', data) if (data.code === 200) { socket_app.emit('chatUploadFile', { 'video': data.message, 'chatSession': chatSession, 'chatUsid': chatUsid, 'uoloadCode': uoloadCode, 'action': 'upload_video', 'filename': filename, 'filesize': filesize }); let ssst = setTimeout(function () { send_hideprogressbar(); }, 1000) } else { $("#" + uoloadCode).parent().parent().parent().remove(); return alert(data.message); } } }) } function snd_chat_doc(docfile, chatUsid, chatSession, filename, filesize) { let crr_time = new Date(); let crr_timeC = Date.parse(crr_time); let daTime = formatDate(crr_time, 'MM-dd hh:mm'); let uoloadCode = getRandomString(6) + crr_timeC; let chatMeassgeObj = $(".chatMeassge"); let html = ''; html += '
' + '
' + ' ' + '
' + '
' + '
' + '
\n' + ' \n' + '
\n' + '
\n' + '
' + filename + '
\n' + '
' + filesize + 'B
\n' + '
\n' + '
\n' + '
\n' + '
' + '
\n' + '
\n' + '
\n' + '
\n' + '
' chatMeassgeObj.append(html); chatMeassgeObj.scrollTop(chatMeassgeObj[0].scrollHeight); var send_showprogress = function (evt) { var loaded = evt.loaded; var tot = evt.total; var percent = Math.floor(100 * loaded / tot); var progressbar = $('#' + uoloadCode + ' .progress-bar'); // progressbar.html(percent+'%'); // progressbar.attr('aria-valuenow',percent); progressbar.css('width', percent + '%'); } var send_hideprogressbar = function () { var progressbar = $('#' + uoloadCode).find('.progress'); progressbar.html('0%'); progressbar.attr('aria-valuenow', 0); progressbar.css('width', '0%'); progressbar.remove(); } var formdata = new FormData(); formdata.append("upload", docfile); formdata.append("action", 'chatUploadDOC'); formdata.append("chatUsid", chatUsid); formdata.append("chatSession", chatSession); formdata.append("filename", filename); formdata.append("filesize", filesize); xtajax.post({ 'data': formdata, 'contentType': false, 'processData': false, 'progress': send_showprogress, 'success': function (data) { console.log('update video:', data) if (data.code === 200) { socket_app.emit('chatUploadFile', { 'doc': data.message, 'chatSession': chatSession, 'chatUsid': chatUsid, 'uoloadCode': uoloadCode, 'action': 'upload_doc', 'filename': filename, 'filesize': filesize }); let ssst = setTimeout(function () { send_hideprogressbar(); }, 1000) } else { $("#" + uoloadCode).parent().parent().parent().remove(); return alert(data.message); } } }) } function postAutoQuestion(question) { let chatUsid = foowwLocalStorage.get(chatUsidKey); let chatSession = foowwLocalStorage.get(chatSessionKey); debugger if (!question) { return alert('Harap masukkan konten!!') } socket_app.emit('chatReceiveMessage', {'text': question, 'chatSession': chatSession, 'chatUsid': chatUsid, 'type': 'text'}); socket_app.emit('realTimeInputMessage', {'text': '', 'chatSession': chatSession, 'chatUsid': chatUsid}) let html = ''; let crr_time = new Date(); let daTime = formatDate(crr_time, 'MM-dd hh:mm'); html += '
' + '
' + '' + '
' + '
' + question + '
' + '
' + daTime + '
' + '
' $(".chatMeassge").append(html); $('.chatMeassge').scrollTop($('.chatMeassge')[0].scrollHeight); $("#textContent").val(''); }