1 line
125 KiB
JavaScript
1 line
125 KiB
JavaScript
|
"use strict";(self["webpackChunkmining_pool"]=self["webpackChunkmining_pool"]||[]).push([[956],{4710:function(t,e,s){Object.defineProperty(e,"B",{value:!0}),e.A=void 0,s(44114),s(18111),s(22489),s(20116),s(7588),s(61701),s(13579);var i=s(51775),a=s(92500);e.A={name:"CustomerServiceChat",data(){return{searchText:"",inputMessage:"",currentContactId:null,previewVisible:!1,previewImageUrl:"",contacts:[],messages:{},messagesLoading:!1,sending:!1,loadingRooms:!0,stompClient:null,wsConnected:!1,userEmail:"497681109@qq.com",userType:1,loadingHistory:!1,userViewHistory:!1,userScrolled:!1,history7Params:{id:"",roomId:"",userType:2,email:"497681109@qq.com"},historyAllParams:{id:"",roomId:"",userType:2},receiveUserType:"",manualCreatedRooms:[],chatRooms:[],isWebSocketConnected:!1,connectionStatus:"disconnected",isLoadingMoreContacts:!1,lastContactTime:null,showScrollButton:!1,visibilityHandler:null,reconnectTimer:null,maxReconnectAttempts:5,reconnectInterval:5e3,reconnectAttempts:0,lastActivityTime:Date.now(),activityCheckInterval:null}},computed:{filteredContacts(){return this.searchText?this.contacts.filter((t=>t.name.toLowerCase().includes(this.searchText.toLowerCase()))):this.contacts},currentContact(){return this.contacts.find((t=>t.roomId===this.currentContactId))},currentMessages(){return this.messages[this.currentContactId]||[]}},async created(){try{await this.fetchRoomList(),this.contacts.length>0&&this.selectContact(this.contacts[0].roomId),this.loadManualCreatedRooms(),this.initWebSocket()}catch(t){console.error("初始化失败:",t)}},async mounted(){await this.fetchRoomList(),this.contacts.length>0&&this.selectContact(this.contacts[0].roomId);let t=localStorage.getItem("userEmail");this.userEmail=JSON.parse(t),window.addEventListener("setItem",(()=>{let t=localStorage.getItem("userEmail");this.userEmail=JSON.parse(t)})),this.$nextTick((()=>{this.scrollToBottom()})),this.$nextTick((()=>{this.$refs.messageContainer&&this.$refs.messageContainer.addEventListener("scroll",this.handleScroll)})),this.$nextTick((()=>{const t=document.querySelector(".cs-contacts");t&&t.addEventListener("scroll",this.handleContactListScroll)})),this.visibilityHandler=()=>{"visible"===document.visibilityState&&this.checkAndReconnect()},document.addEventListener("visibilitychange",this.visibilityHandler),this.startActivityCheck()},methods:{handleKeyDown(t){t.ctrlKey||(t.preventDefault(),this.sendMessage())},initWebSocket(){if(!this.isWebSocketConnected)try{const t="https://test.m2pool.com/api/chat/ws";this.stompClient=a.Stomp.client(t),this.stompClient.splitLargeFrames=!0,this.stompClient.maxWebSocketFrameSize=16777216,this.stompClient.maxWebSocketMessageSize=16777216,this.stompClient.webSocketFactory=()=>{const e=new WebSocket(t);return e.binaryType="arraybuffer",e},this.stompClient.debug=t=>{(t.includes("CONNECTED")||t.includes("DISCONNECTED")||t.includes("ERROR"))&&console.log("[客服系统]",t)},this.userType=2;const e={email:this.userEmail,type:this.userType};this.stompClient.connect(e,(t=>{console.log("[客服系统] WebSocket 连接成功",t),this.isWebSocketConnected=!0,this.connectionStatus="connected",this.reconnectAttempts=0,this.subscribeToMessages(),this.updateLastActivityTime()}),(t=>{console.error("[客服系统] WebSocket 错误:",t),this.handleDisconnect()})),this.stompClient.heartbeat.outgoing=2e4,this.stompClient.heartbeat.incoming=2e4}catch(t){console.error("初始化 CustomerService WebSocket 失败:",t),this.handleDisconnect()}},subscribeToMessages(){if(this.stompClient&&this.isWebSocketConnected)try{this.stompClient.subscribe(`/sub/queue/customer/${this.userEmail}`,this.handleIncomingMessage),this.stompClient.subscribe(`/sub/queue/close/room/${this.userEmail}`,this.handleRoomClose),console.log("CustomerService 成功订阅消息频道:",`/sub/queue/customer/${this.userEmail}`),console.log("CustomerService 成功订阅关闭消息频道:",`/sub/queue/close/room/${this.userEmail}`)}catch(t){console.error("CustomerService 订阅消息失败:",t)}},handleRoomClose(t){try{const e=t.body,s=t=>t?("object"===typeof t&&"value"in t&&
|