Files
tk-mini-program/unpackage/dist/build/mp-weixin/pages/index/chat/chat.js
pengxiaolong 0044f8f334 优化代码
2025-09-29 20:48:31 +08:00

2 lines
14 KiB
JavaScript

"use strict";const e=require("../../../common/vendor.js"),t=require("../../../components/ChatId.js"),i=require("../../../components/TimeFormatting.js"),s=require("../../../components/request.js"),o=require("../../../components/goEasyTool/tool.js"),n={data:()=>({userId:"",nickname:"",avatar:"",chatList:[],userinfo:{},ButtonStatus:!1,MoreStatus:!1,KeyboardHeight:0,content:"",MoreItemStatus:null,ioshide:0,ElementPositioning:null,scrollviewheight:0,Elementheight:0,Scrolling:!1,scrollTop:0,judgescrollTop:!1,onPage:!1,timer:null,lastTimestamp:null,LastTime:null,MoreMessageList:[],Record:null,myitem:null,youritem:null,type:null,voiceStatus:!1,inputfocus:!1,voicepopUpstart:!1,voiceCancelOrSend:!1,recorderManager:e.index.getRecorderManager(),playbackStatus:!0,popUpList:[{name:"图片",icon:"https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/Album.png",type:"Album"},{name:"邀请",icon:"https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/chat_invite.png",type:"Invitation"}]}),onShow(){this.onPage=!0,e.index.onKeyboardHeightChange((e=>{this.KeyboardHeight=2*e.height-this.ioshide}))},onHide(){this.onPage=!1},onUnload(){this.onPage=!1},onLoad(i){this.recorderManager.onStop((t=>{console.log("录音结束",t),0!=this.ioshide?t.fileSize<20480?e.index.showToast({title:"您说话太短",icon:"none",duration:2e3}):(this.voiceCancelOrSend||this.sendVoice(t),this.voiceCancelOrSend=!1):t.fileSize<2048?e.index.showToast({title:"您说话太短",icon:"none",duration:2e3}):(this.voiceCancelOrSend||this.sendVoice(t),this.voiceCancelOrSend=!1)})),e.index.getStorage({key:"userinfo",success:e=>{this.userinfo=e.data}}),this.userId=i.userId,this.nickname=i.nickname,this.avatar=i.avatar,this.type=i.type;try{this.myitem=JSON.parse(i.myitem),this.youritem=JSON.parse(i.youritem)}catch(n){}"pk"==this.type&&setTimeout((()=>{this.sendCustomMessage()}),500),o.getConversationMessages(this.$goeasy,this.userId,null).then((i=>{this.chatList=i.map((e=>(e.id=t.generateId(),e.timestampStatus=this.checkInterval(e.timestamp),e))),setTimeout((()=>{this.chatList.length>0?(this.ElementPositioning=this.chatList[this.chatList.length-1].id,this.LastTime=this.chatList[0].timestamp):e.index.showToast({title:"您和对方暂无聊天记录,快去聊天吧",icon:"none",duration:2e3})}),300);e.index.createSelectorQuery().in(this).select(".inputComponent").boundingClientRect((e=>{this.Elementheight=2*e.height})).exec()})),o.messageRead(this.$goeasy,this.userId).then((e=>{console.log("已读对方的消息")})),this.getIOSDeviceType();var s=this.$goeasy.im;s.on(e.jo.IM_EVENT.PRIVATE_MESSAGE_RECEIVED,this.onPrivateMessageReceived),s.on(e.jo.IM_EVENT.MESSAGE_READ,this.onMessageRead),this.getscrollviewheight(),this.checkRecordPermission()},methods:{notplayVoice(e){this.playbackStatus=e},sendVoice(i){var s=this.$goeasy.im.createAudioMessage({file:i,to:{type:e.jo.IM_SCENE.PRIVATE,id:this.userId,data:{avatar:this.avatar,nickname:this.nickname}},onProgress:function(e){console.log("file uploading:",e)}});o.sendGroupMessage(this.$goeasy,s).then((e=>{this.ElementPositioning=e.id=t.generateId(),e.timestampStatus=this.checkInterval(e.timestamp),this.chatList.push(e),this.judgescrollTop=!1}))},voiceTouchstart(){console.log("长按语音"),this.voicepopUpstart=!0,this.recorderManager.start(),this.notplayVoice(!1)},voiceTouchend(){setTimeout((()=>{this.recorderManager.stop()}),100),console.log("松开语音"),this.voicepopUpstart=!1},voiceTouchmove(t){const i=.86*e.index.getSystemInfoSync().windowHeight;try{t.touches[0].clientY>i?this.voiceCancelOrSend=!1:this.voiceCancelOrSend=!0}catch(s){}},voiceTouchcancel(){console.log("中断语音"),this.voicepopUpstart=!1,this.voiceCancelOrSend=!1},onVoice(e){e?(this.inputfocus=!1,this.MoreStatus=!1):this.inputfocus=!0,this.voiceStatus=e},checkRecordPermission(){e.index.getSetting({success:t=>{const i=t.authSetting["scope.record"];void 0===i?this.requestPermission():i||(this.voiceStatus=!1,e.index.showModal({title:"权限提示",content:"需要录音权限才能正常使用功能,请在设置中开启",confirmText:"去开启",success:t=>{t.confirm&&e.index.openSetting({success:e=>{!0===e.authSetting["scope.record"]&&this.checkRecordPermission()}})}}))}})},requestPermission(){e.index.authorize({scope:"scope.record",fail:t=>{this.voiceStatus=!1,e.index.showToast({title:"请授予麦克风权限,否则可能导致语音功能异常",icon:"none"})}})},sendCustomMessage(){s.request({url:"pk/createPkRecord",method:"POST",data:{pkIdA:this.youritem.id,pkIdB:this.myitem.id,userIdA:this.userId,userIdB:this.userinfo.id,pkTime:this.youritem.pkTime,pkNumber:this.youritem.pkNumber,anchorIdA:this.youritem.anchorId,anchorIdB:this.myitem.anchorId,anchorIconA:this.youritem.anchorIcon,anchorIconB:this.myitem.anchorIcon,piIdA:this.youritem.id,piIdB:this.myitem.id},userInfo:!0}).then((i=>{if(200==i.code){let s={customData:{id:i.data.id,pkIdA:this.youritem.id,pkIdB:this.myitem.id},link:"https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/pk.png",text:"PK邀请消息"};o.sendCustomMessage(this.$goeasy,this.type,this.userId,s,this.avatar,this.nickname).then((i=>{this.ElementPositioning=i.id=t.generateId(),i.timestampStatus=this.checkInterval(i.timestamp),this.chatList.push(i),e.index.showToast({title:"发送成功",icon:"none"})}))}else e.index.showToast({title:i.msg,icon:"none"})}))},checkInterval(e){if(!this.lastTimestamp)return this.lastTimestamp=e,!0;return e-this.lastTimestamp>=3e5&&(this.lastTimestamp=e,!0)},TimeFormatting:i.TimeFormatting,getscrollviewheight(){e.index.createSelectorQuery().in(this).select(".scroll").boundingClientRect((e=>{this.scrollviewheight=e.height})).exec()},onScroll(e){this.judgescrollTop?this.scrollTop-e.detail.scrollTop>this.scrollviewheight?this.Scrolling=!0:this.scrollTop-e.detail.scrollTop<this.scrollviewheight&&(this.Scrolling=!1):(this.scrollTop=e.detail.scrollTop,this.judgescrollTop=!0)},onScrollToUpper(){this.lastTimestamp=null,o.getConversationMessages(this.$goeasy,this.userId,this.LastTime).then((e=>{this.Record=this.chatList[0].id,this.MoreMessageList=e.map((e=>(e.id=t.generateId(),e.timestampStatus=this.checkInterval(e.timestamp),e)))})),setTimeout((()=>{this.chatList=[...this.MoreMessageList,...this.chatList],console.log("获取更多聊天记录",this.chatList),this.LastTime=this.chatList[0].timestamp,this.ElementPositioning=this.Record}),300)},onMessageRead(e){console.log("1已读消息",e)},onPrivateMessageReceived(e){this.Scrolling?(e.id=t.generateId(),e.timestampStatus=this.checkInterval(e.timestamp)):(this.ElementPositioning=e.id=t.generateId(),e.timestampStatus=this.checkInterval(e.timestamp),this.judgescrollTop=!1),this.chatList.push(e),this.onPage&&o.messageRead(this.$goeasy,this.userId).then((e=>{console.log("已读对方的消息")}))},onSend(){""!=this.content&&(o.sendMessage(this.$goeasy,this.userId,this.content,this.avatar,this.nickname).then((e=>{console.log("发送成功",e),this.ElementPositioning=e.id=t.generateId(),e.timestampStatus=this.checkInterval(e.timestamp),this.chatList.push(e),this.judgescrollTop=!1})),this.content="",this.ButtonStatus=!1)},refreshMessage(e){this.MoreItemStatus=null,this.ElementPositioning=e.message.id=t.generateId(),e.timestampStatus=this.checkInterval(e.message.timestamp),this.chatList.push(e.message),this.judgescrollTop=!1,this.MoreStatus=!1},getIOSDeviceType(){const t=e.index.getSystemInfoSync().model;/iPhone X|iPhone11|iPhone12|iPhone13|iPhone14|iPhone15|iPhone16|iPhone15 Pro|iPhone15 Pro Max|iPhone14 Pro|iPhone14 Pro Max|iPhone13 Pro|iPhone13 Pro Max|iPhone12 Pro|iPhone12 Pro Max|iPhone11 Pro|iPhone11 Pro Max|iPhone13 mini|iPhone12 mini|iPhoneXS|iPhoneXS Max/i.test(t)&&(/iPhone X|iPhone XS|iPhone 11 Pro|iPhone 11 Pro Max|iPhone 12 Pro|iPhone 12 Pro Max|iPhone 13 Pro|iPhone 13 Pro Max|iPhone 14 Pro|iPhone 14 Pro Max|iPhone 15 Pro|iPhone 15 Pro Max|iPhone 16/i.test(t)?this.ioshide=88:/iPhone 12|iPhone 13|iPhone 14/i.test(t)&&(this.ioshide=94))},onMore(t){this.Scrolling||(this.ElementPositioning=null,setTimeout((()=>{this.ElementPositioning=this.chatList[this.chatList.length-1].id}),100),this.judgescrollTop=!1),this.getscrollviewheight(),t?(this.MoreStatus=t,this.voiceStatus=!1):this.MoreStatus=t;e.index.createSelectorQuery().in(this).select(".inputComponent").boundingClientRect((e=>{this.Elementheight=2*e.height})).exec()},onMoreItem(e){"Album"==e?this.onSendMedia():"Video"==e?this.onSendVideo():this.MoreItemStatus=e},onSendVideo(){var i=this.$goeasy.im;e.index.chooseVideo({sourceType:["album","camera"],success:s=>{var n=i.createVideoMessage({file:s,to:{type:e.jo.IM_SCENE.PRIVATE,id:this.userId,data:{avatar:this.avatar,nickname:this.nickname}},onProgress:function(e){console.log("file uploading:",e)}});o.sendGroupMessage(this.$goeasy,n).then((e=>{this.ElementPositioning=e.id=t.generateId(),e.timestampStatus=this.checkInterval(e.timestamp),this.chatList.push(e),this.judgescrollTop=!1}))}})},onSendMedia(){var i=this.$goeasy.im;e.index.chooseImage({count:9,sizeType:["original","compressed"],sourceType:["album","camera"],success:s=>{s.tempFiles.forEach(((s,n)=>{var a=i.createImageMessage({file:s,to:{type:e.jo.IM_SCENE.PRIVATE,id:this.userId,data:{avatar:this.avatar,nickname:this.nickname}},onProgress:function(e){console.log("上传进度",e)}});o.sendGroupMessage(this.$goeasy,a).then((e=>{this.ElementPositioning=e.id=t.generateId(),e.timestampStatus=this.checkInterval(e.timestamp),this.chatList.push(e),this.judgescrollTop=!1}))}))}})},onFocus(t){this.Scrolling||(this.ElementPositioning=null,setTimeout((()=>{this.ElementPositioning=this.chatList[this.chatList.length-1].id}),100),this.judgescrollTop=!1),this.getscrollviewheight();e.index.createSelectorQuery().in(this).select(".inputComponent").boundingClientRect((e=>{this.Elementheight=2*e.height})).exec()},onBlur(t){e.index.createSelectorQuery().in(this).select(".inputComponent").boundingClientRect((e=>{this.Elementheight=2*e.height})).exec(),this.getscrollviewheight()},SendInput(t){e.index.createSelectorQuery().in(this).select(".inputComponent").boundingClientRect((e=>{this.Elementheight=2*e.height})).exec(),""!=t.target.value?this.ButtonStatus=!0:this.ButtonStatus=!1},onBack(){this.onPage=!1,e.wx$1.navigateBack({delta:1})}},components:{textmessage:()=>"./messageComponent/textmessage.js",InvitationComponents:()=>"./moreMessageComponents/InvitationComponents.js",customPKMessage:()=>"./messageComponent/customPKMessage.js",imageMessage:()=>"./messageComponent/imageMessage.js",videoMessage:()=>"./messageComponent/videoMessage.js",voiceMessage:()=>"./messageComponent/voiceMessage.js"}};if(!Array){(e.resolveComponent("textmessage")+e.resolveComponent("customPKMessage")+e.resolveComponent("imageMessage")+e.resolveComponent("videoMessage")+e.resolveComponent("voiceMessage")+e.resolveComponent("InvitationComponents"))()}const a=e._export_sfc(n,[["render",function(t,i,s,o,n,a){return e.e({a:e.o((e=>a.onMore(!1))),b:e.o(((...e)=>a.onBack&&a.onBack(...e))),c:e.t(n.nickname),d:e.o((e=>a.onMore(!1))),e:e.f(n.chatList,((t,i,s)=>e.e({a:t.timestampStatus},t.timestampStatus?{b:e.t(a.TimeFormatting(t.timestamp))}:{},{c:t.senderId==n.userId},t.senderId==n.userId?e.e({d:n.avatar,e:"text"==t.type||"audio"==t.type},("text"==t.type||t.type,{}),{f:"text"==t.type},"text"==t.type?{g:"b3ef6bbb-0-"+s,h:e.p({messagetext:t.payload.text})}:{},{i:"pk"==t.type},"pk"==t.type?{j:"b3ef6bbb-1-"+s,k:e.p({message:t.payload})}:{},{l:"image"==t.type},"image"==t.type?{m:"b3ef6bbb-2-"+s,n:e.p({message:t.payload})}:{},{o:"video"==t.type},"video"==t.type?{p:"b3ef6bbb-3-"+s,q:e.p({message:t.payload})}:{},{r:"audio"==t.type},"audio"==t.type?{s:"b3ef6bbb-4-"+s,t:e.p({message:t.payload,senderId:t.senderId,userId:n.userinfo.id})}:{},{v:"text"==t.type||"audio"==t.type?"#7bbd0093":"#ffffff"}):{},{w:t.senderId==n.userinfo.id},t.senderId==n.userinfo.id?e.e({x:n.userinfo.headerIcon,y:"text"==t.type||"audio"==t.type},("text"==t.type||t.type,{}),{z:"text"==t.type},"text"==t.type?{A:"b3ef6bbb-5-"+s,B:e.p({messagetext:t.payload.text})}:{},{C:"pk"==t.type},"pk"==t.type?{D:"b3ef6bbb-6-"+s,E:e.p({message:t.payload})}:{},{F:"image"==t.type},"image"==t.type?{G:"b3ef6bbb-7-"+s,H:e.p({message:t.payload})}:{},{I:"video"==t.type},"video"==t.type?{J:"b3ef6bbb-8-"+s,K:e.p({message:t.payload})}:{},{L:"audio"==t.type},"audio"==t.type?{M:e.o(a.notplayVoice,t.id),N:"b3ef6bbb-9-"+s,O:e.p({message:t.payload,senderId:t.senderId,userId:n.userinfo.id,playbackStatus:n.playbackStatus})}:{},{P:"text"==t.type||"audio"==t.type?"#7bbd0093":"#ffffff"}):{},{Q:t.id,R:t.id}))),f:e.o(((...e)=>a.onScrollToUpper&&a.onScrollToUpper(...e))),g:n.ElementPositioning,h:e.o(((...e)=>a.onScroll&&a.onScroll(...e))),i:e.o((e=>a.onMore(!1))),j:n.MoreStatus||0!=n.KeyboardHeight?n.MoreStatus?650+n.Elementheight+"rpx":0!=n.KeyboardHeight?n.KeyboardHeight+n.Elementheight+"rpx":"10vh":"10vh",k:!n.voiceStatus},n.voiceStatus?{}:{l:e.o((e=>a.onVoice(!n.voiceStatus)))},{m:n.voiceStatus},n.voiceStatus?{n:e.o((e=>a.onVoice(!n.voiceStatus)))}:{},{o:n.voiceStatus},n.voiceStatus?{p:e.o(((...e)=>a.voiceTouchstart&&a.voiceTouchstart(...e))),q:e.o(((...e)=>a.voiceTouchend&&a.voiceTouchend(...e))),r:e.o(((...e)=>a.voiceTouchmove&&a.voiceTouchmove(...e))),s:e.o(((...e)=>a.voiceTouchcancel&&a.voiceTouchcancel(...e)))}:{},{t:!n.voiceStatus},n.voiceStatus?{}:{v:e.o([e=>n.content=e.detail.value,(...e)=>a.SendInput&&a.SendInput(...e)]),w:e.o(((...e)=>a.onFocus&&a.onFocus(...e))),x:n.inputfocus,y:e.o(((...e)=>a.onBlur&&a.onBlur(...e))),z:n.content},{A:!n.ButtonStatus},n.ButtonStatus?{}:{B:e.o((e=>a.onMore(!n.MoreStatus)))},{C:n.ButtonStatus},n.ButtonStatus?{D:e.o(((...e)=>a.onSend&&a.onSend(...e)))}:{},{E:n.MoreStatus||n.KeyboardHeight>300?n.MoreStatus?"650rpx":n.KeyboardHeight>300?n.KeyboardHeight+"rpx":"0":"0",F:e.f(n.popUpList,((t,i,s)=>({a:t.icon,b:e.t(t.name),c:e.o((e=>a.onMoreItem(t.type)),i),d:i}))),G:n.MoreStatus||n.KeyboardHeight>300?n.MoreStatus||n.KeyboardHeight>300?"0":n.KeyboardHeight+"rpx":"-650rpx",H:"Invitation"==n.MoreItemStatus},"Invitation"==n.MoreItemStatus?{I:e.o(a.refreshMessage),J:e.p({oppositeId:n.userId,myId:n.userinfo.id,avatar:n.avatar,nickname:n.nickname})}:{},{K:e.o((()=>{})),L:null==n.MoreItemStatus?"-1000rpx":"0",M:e.o((e=>a.onMoreItem(null))),N:null==n.MoreItemStatus?"100vh":"0",O:n.voiceCancelOrSend?"#ebebeb":"#000000a9",P:e.t(n.voiceCancelOrSend?"取消":"松手发送"),Q:n.voiceCancelOrSend?"#000000a9":"#ebebeb",R:0==n.voicepopUpstart?"-1000rpx":"0",S:0==n.voicepopUpstart?"100vh":"0"})}],["__scopeId","data-v-b3ef6bbb"]]);wx.createPage(a);