1 line
122 KiB
JavaScript
1 line
122 KiB
JavaScript
|
"use strict";(self["webpackChunkmining_pool"]=self["webpackChunkmining_pool"]||[]).push([[956],{4710:function(t,s,e){Object.defineProperty(s,"B",{value:!0}),s.A=void 0,e(44114),e(18111),e(22489),e(20116),e(7588),e(61701),e(13579);var i=e(51775),a=e(92500);s.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){console.log("e:hhhhshshsshshshhh好的好的和",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.debug=t=>{(t.includes("CONNECTED")||t.includes("DISCONNECTED")||t.includes("ERROR"))&&console.log("[客服系统]",t)};const s={email:this.userEmail,type:this.userType};this.stompClient.connect(s,(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,{id:`customer_${this.userEmail}`}),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 s=t.body;console.log("收到聊天室关闭通知:",s);const e=this.contacts.findIndex((t=>t.name===s));if(-1!==e){this.currentContactId===this.contacts[e].roomId&&(this.currentCon
|