"use strict"; const common_vendor = require("../../../common/vendor.js"); const components_ChatId = require("../../../components/ChatId.js"); const components_TimeFormatting = require("../../../components/TimeFormatting.js"); require("../../../components/picturesVideosMessages.js"); require("../../../components/audioMessages.js"); const components_request = require("../../../components/request.js"); const components_goEasyTool_tool = require("../../../components/goEasyTool/tool.js"); const textmessage = () => "./messageComponent/textmessage.js"; const customPKMessage = () => "./messageComponent/customPKMessage.js"; const InvitationComponents = () => "./moreMessageComponents/InvitationComponents.js"; const _sfc_main = { data() { return { userId: "", // 对方用户id nickname: "", // 对方用户昵称 avatar: "", // 对方用户头像 chatList: [], // 聊天记录 userinfo: {}, // 自己用户信息 ButtonStatus: false, // 发送按钮状态 MoreStatus: false, // 更多消息类型弹窗状态 KeyboardHeight: 0, // 键盘高度 content: "", // 输入框内容 MoreItemStatus: null, // 更多消息类型弹窗点击属性 ioshide: 0, // 隐藏ios键盘 ElementPositioning: null, // 元素定位 scrollviewheight: 0, // 滚动视图高度 Elementheight: 0, // 元素高度 Scrolling: false, // 滚动状态 scrollTop: 0, // 滚动高度 judgescrollTop: false, // 判断滚动高度 onPage: false, // 是否在页面 timer: null, // 定时器 lastTimestamp: null, // 上一次刷新时间戳 LastTime: null, // 最后聊天记录的时间戳 MoreMessageList: [], Record: null, // 定位记录 myitem: null, //直接发送自定义消息的我的选中主播 youritem: null, //直接发送自定义消息的对方选中主播 type: null, //直接发送自定义消息的消息类型 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 = true; common_vendor.index.onKeyboardHeightChange((res) => { this.KeyboardHeight = res.height * 2 - this.ioshide; }); }, onHide() { this.onPage = false; }, onLoad(options) { common_vendor.index.getStorage({ key: "userinfo", success: (res) => { this.userinfo = res.data; } }); this.userId = options.userId; this.nickname = options.nickname; this.avatar = options.avatar; this.type = options.type; try { this.myitem = JSON.parse(options.myitem); this.youritem = JSON.parse(options.youritem); } catch (e) { } if (this.type == "pk") { setTimeout(() => { this.sendCustomMessage(); }, 500); } components_goEasyTool_tool.getConversationMessages(this.$goeasy, this.userId, null).then((res) => { this.chatList = res.map((item) => { item.id = components_ChatId.generateId(); item.timestampStatus = this.checkInterval(item.timestamp); return item; }); setTimeout(() => { if (this.chatList.length > 0) { this.ElementPositioning = this.chatList[this.chatList.length - 1].id; this.LastTime = this.chatList[0].timestamp; } else { common_vendor.index.showToast({ title: "您和对方暂无聊天记录,快去聊天吧", icon: "none", duration: 2e3 }); } }, 300); const query = common_vendor.index.createSelectorQuery().in(this); query.select(".inputComponent").boundingClientRect((res2) => { this.Elementheight = res2.height * 2; }).exec(); }); components_goEasyTool_tool.messageRead(this.$goeasy, this.userId).then((res) => { common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:300", "已读对方的消息"); }); this.getIOSDeviceType(); var im = this.$goeasy.im; im.on(common_vendor.jo.IM_EVENT.PRIVATE_MESSAGE_RECEIVED, this.onPrivateMessageReceived); im.on(common_vendor.jo.IM_EVENT.MESSAGE_READ, this.onMessageRead); this.getscrollviewheight(); }, methods: { //直接发送自定义消息 sendCustomMessage() { components_request.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: true }).then((res) => { if (res.code == 200) { const customData = { id: res.data.id, pkIdA: this.youritem.id, pkIdB: this.myitem.id }; let order = { customData, link: "https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/pk.png", text: "PK邀请消息" }; components_goEasyTool_tool.sendCustomMessage( this.$goeasy, this.type, this.userId, order, this.avatar, this.nickname ).then((res2) => { this.ElementPositioning = res2.id = components_ChatId.generateId(); res2.timestampStatus = this.checkInterval(res2.timestamp); this.chatList.push(res2); common_vendor.index.showToast({ title: "发送成功", icon: "none" }); }); } else { common_vendor.index.showToast({ title: res.msg, icon: "none" }); } }); }, //时间显示 checkInterval(timestamp) { if (!this.lastTimestamp) { this.lastTimestamp = timestamp; return true; } const timeDiff = timestamp - this.lastTimestamp; if (timeDiff >= 3e5) { this.lastTimestamp = timestamp; return true; } return false; }, //时间格式化 TimeFormatting: components_TimeFormatting.TimeFormatting, //获取容器高度 getscrollviewheight() { const queryheight = common_vendor.index.createSelectorQuery().in(this); queryheight.select(".scroll").boundingClientRect((res) => { this.scrollviewheight = res.height; }).exec(); }, //滚动事件 onScroll(event) { if (!this.judgescrollTop) { this.scrollTop = event.detail.scrollTop; this.judgescrollTop = true; } else if (this.scrollTop - event.detail.scrollTop > this.scrollviewheight) { this.Scrolling = true; } else if (this.scrollTop - event.detail.scrollTop < this.scrollviewheight) { this.Scrolling = false; } }, //获取更多聊天记录 onScrollToUpper() { this.lastTimestamp = null; components_goEasyTool_tool.getConversationMessages(this.$goeasy, this.userId, this.LastTime).then((res) => { this.Record = this.chatList[0].id; this.MoreMessageList = res.map((item) => { item.id = components_ChatId.generateId(); item.timestampStatus = this.checkInterval(item.timestamp); return item; }); }); setTimeout(() => { this.chatList = [...this.MoreMessageList, ...this.chatList]; common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:418", "获取更多聊天记录", this.chatList); this.LastTime = this.chatList[0].timestamp; this.ElementPositioning = this.Record; }, 300); }, //监听已读消息 onMessageRead(message) { common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:425", "1已读消息", message); }, //监听接受消息 onPrivateMessageReceived(message) { if (!this.Scrolling) { this.ElementPositioning = message.id = components_ChatId.generateId(); message.timestampStatus = this.checkInterval(message.timestamp); this.judgescrollTop = false; } else { message.id = components_ChatId.generateId(); message.timestampStatus = this.checkInterval(message.timestamp); } this.chatList.push(message); if (this.onPage) { components_goEasyTool_tool.messageRead(this.$goeasy, this.userId).then((res) => { common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:440", "已读对方的消息"); }); } }, //发送消息 onSend() { if (this.content != "") { components_goEasyTool_tool.sendMessage( this.$goeasy, this.userId, this.content, this.avatar, this.nickname ).then((res) => { common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:454", "发送成功", res); this.ElementPositioning = res.id = components_ChatId.generateId(); res.timestampStatus = this.checkInterval(res.timestamp); this.chatList.push(res); this.judgescrollTop = false; }); this.content = ""; this.ButtonStatus = false; } }, //自定义消息发送返回处理 refreshMessage(message) { this.MoreItemStatus = null; this.ElementPositioning = message.message.id = components_ChatId.generateId(); message.timestampStatus = this.checkInterval(message.message.timestamp); this.chatList.push(message.message); this.judgescrollTop = false; this.MoreStatus = false; }, //ios兼容 getIOSDeviceType() { const systemInfo = common_vendor.index.getSystemInfoSync(); const model = systemInfo.model; if (/iPhone X|iPhone11|iPhone12|iPhone13|iPhone14/i.test(model)) { if (/iPhone X|iPhone XS|iPhone 11 Pro/i.test(model)) { this.ioshide = 88; } else if (/iPhone 12|iPhone 13|iPhone 14/i.test(model)) { this.ioshide = 94; } } }, //更多消息类型弹窗事件 onMore(Status) { if (!this.Scrolling) { this.ElementPositioning = null; setTimeout(() => { this.ElementPositioning = this.chatList[this.chatList.length - 1].id; }, 100); this.judgescrollTop = false; } this.getscrollviewheight(); this.MoreStatus = Status; const query = common_vendor.index.createSelectorQuery().in(this); query.select(".inputComponent").boundingClientRect((res) => { this.Elementheight = res.height * 2; }).exec(); }, //更多消息类型弹窗点击事件 onMoreItem(type) { if (type == "Album") { this.onSendMedia(); } else { this.MoreItemStatus = type; } }, //发送图片,视频消息 onSendMedia() { common_vendor.index.chooseMedia({ count: 9, mediaType: ["image", "video"], sourceType: ["album", "camera"], maxDuration: 60, camera: "front", success(res) { common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:523", res.tempFiles); if (res.tempFiles.fileType == "image") ; else if (res.tempFiles.fileType == "video") ; } }); }, //发送音频消息 onSendAudio() { }, // 获取键盘高度 onFocus(event) { if (!this.Scrolling) { this.ElementPositioning = null; setTimeout(() => { this.ElementPositioning = this.chatList[this.chatList.length - 1].id; }, 100); this.judgescrollTop = false; } this.getscrollviewheight(); const query = common_vendor.index.createSelectorQuery().in(this); query.select(".inputComponent").boundingClientRect((res) => { this.Elementheight = res.height * 2; }).exec(); }, //键盘消失 onBlur(event) { const query = common_vendor.index.createSelectorQuery().in(this); query.select(".inputComponent").boundingClientRect((res) => { this.Elementheight = res.height * 2; }).exec(); this.getscrollviewheight(); }, //按钮切换 SendInput(event) { const query = common_vendor.index.createSelectorQuery().in(this); query.select(".inputComponent").boundingClientRect((res) => { this.Elementheight = res.height * 2; }).exec(); if (event.target.value != "") { this.ButtonStatus = true; } else { this.ButtonStatus = false; } }, // 返回上一页 onBack() { this.onPage = false; common_vendor.wx$1.navigateBack({ delta: 1 }); } }, components: { textmessage, InvitationComponents, customPKMessage } }; if (!Array) { const _component_textmessage = common_vendor.resolveComponent("textmessage"); const _component_customPKMessage = common_vendor.resolveComponent("customPKMessage"); const _component_InvitationComponents = common_vendor.resolveComponent("InvitationComponents"); (_component_textmessage + _component_customPKMessage + _component_InvitationComponents)(); } function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return common_vendor.e({ a: common_vendor.o(($event) => $options.onMore(false)), b: common_vendor.o((...args) => $options.onBack && $options.onBack(...args)), c: common_vendor.t($data.nickname), d: common_vendor.o(($event) => $options.onMore(false)), e: common_vendor.f($data.chatList, (item, index, i0) => { return common_vendor.e({ a: item.timestampStatus }, item.timestampStatus ? { b: common_vendor.t($options.TimeFormatting(item.timestamp)) } : {}, { c: item.senderId == $data.userId }, item.senderId == $data.userId ? common_vendor.e({ d: $data.avatar, e: item.type == "text" }, item.type == "text" ? { f: "f4b42ac4-0-" + i0, g: common_vendor.p({ messagetext: item.payload.text }) } : {}, { h: item.type == "pk" }, item.type == "pk" ? { i: "f4b42ac4-1-" + i0, j: common_vendor.p({ message: item.payload }) } : {}) : {}, { k: item.senderId == $data.userinfo.id }, item.senderId == $data.userinfo.id ? common_vendor.e({ l: $data.userinfo.headerIcon, m: item.type == "text" }, item.type == "text" ? { n: "f4b42ac4-2-" + i0, o: common_vendor.p({ messagetext: item.payload.text }) } : {}, { p: item.type == "pk" }, item.type == "pk" ? { q: "f4b42ac4-3-" + i0, r: common_vendor.p({ message: item.payload }) } : {}) : {}, { s: item.id, t: item.id }); }), f: common_vendor.o((...args) => $options.onScrollToUpper && $options.onScrollToUpper(...args)), g: $data.ElementPositioning, h: common_vendor.o((...args) => $options.onScroll && $options.onScroll(...args)), i: common_vendor.o(($event) => $options.onMore(false)), j: $data.MoreStatus || $data.KeyboardHeight != 0 || $data.Elementheight != 0 ? $data.MoreStatus ? 650 + $data.Elementheight + "rpx" : $data.KeyboardHeight != 0 ? $data.KeyboardHeight + $data.Elementheight + "rpx" : $data.Elementheight + "rpx" : $data.Elementheight + "rpx", k: common_vendor.o([($event) => $data.content = $event.detail.value, (...args) => $options.SendInput && $options.SendInput(...args)]), l: common_vendor.o((...args) => $options.onFocus && $options.onFocus(...args)), m: common_vendor.o((...args) => $options.onBlur && $options.onBlur(...args)), n: $data.content, o: !$data.ButtonStatus }, !$data.ButtonStatus ? { p: common_vendor.o(($event) => $options.onMore(!$data.MoreStatus)) } : {}, { q: $data.ButtonStatus }, $data.ButtonStatus ? { r: common_vendor.o((...args) => $options.onSend && $options.onSend(...args)) } : {}, { s: $data.MoreStatus || $data.KeyboardHeight > 300 ? $data.MoreStatus ? "650rpx" : $data.KeyboardHeight > 300 ? $data.KeyboardHeight + "rpx" : "0" : "0", t: common_vendor.f($data.popUpList, (item, index, i0) => { return { a: item.icon, b: common_vendor.t(item.name), c: common_vendor.o(($event) => $options.onMoreItem(item.type), index), d: index }; }), v: $data.MoreStatus || $data.KeyboardHeight > 300 ? $data.MoreStatus ? "0" : $data.KeyboardHeight > 300 ? "0" : $data.KeyboardHeight + "rpx" : "-650rpx", w: $data.MoreItemStatus == "Invitation" }, $data.MoreItemStatus == "Invitation" ? { x: common_vendor.o($options.refreshMessage), y: common_vendor.p({ oppositeId: $data.userId, myId: $data.userinfo.id, avatar: $data.avatar, nickname: $data.nickname }) } : {}, { z: common_vendor.o(() => { }), A: $data.MoreItemStatus == null ? "-1000rpx" : "0", B: common_vendor.o(($event) => $options.onMoreItem(null)), C: $data.MoreItemStatus == null ? "100vh" : "0" }); } const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-f4b42ac4"]]); wx.createPage(MiniProgramPage); //# sourceMappingURL=../../../../.sourcemap/mp-weixin/pages/index/chat/chat.js.map