This commit is contained in:
pengxiaolong
2025-07-25 16:39:52 +08:00
parent 7116e57fc3
commit 8580cd18fa
128 changed files with 2991 additions and 411 deletions

View File

@@ -2,12 +2,13 @@
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 imageMessage = () => "./messageComponent/imageMessage.js";
const videoMessage = () => "./messageComponent/videoMessage.js";
const voiceMessage = () => "./messageComponent/voiceMessage.js";
const InvitationComponents = () => "./moreMessageComponents/InvitationComponents.js";
const _sfc_main = {
data() {
@@ -63,12 +64,28 @@ const _sfc_main = {
//直接发送自定义消息的对方选中主播
type: null,
//直接发送自定义消息的消息类型
voiceStatus: false,
// 语音状态
inputfocus: false,
// 输入框焦点状态
voicepopUpstart: false,
// 语音长按状态/false关闭/true开启
voiceCancelOrSend: false,
// 语音取消/发送/false发送/true取消
recorderManager: common_vendor.index.getRecorderManager(),
playbackStatus: true,
// 语音播放状态
popUpList: [
{
name: "相册",
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/Video.png",
type: "Video"
},
{
name: "邀请",
icon: "https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/chat_invite.png",
@@ -88,6 +105,40 @@ const _sfc_main = {
this.onPage = false;
},
onLoad(options) {
this.recorderManager.onStop((res) => {
common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:384", "录音结束", res);
if (this.ioshide != 0) {
if (res.fileSize < 20 * 1024) {
common_vendor.index.showToast({
title: "您说话太短",
icon: "none",
duration: 2e3
});
} else {
if (this.voiceCancelOrSend) {
this.voiceCancelOrSend = false;
} else {
this.sendVoice(res);
this.voiceCancelOrSend = false;
}
}
} else {
if (res.fileSize < 2 * 1024) {
common_vendor.index.showToast({
title: "您说话太短",
icon: "none",
duration: 2e3
});
} else {
if (this.voiceCancelOrSend) {
this.voiceCancelOrSend = false;
} else {
this.sendVoice(res);
this.voiceCancelOrSend = false;
}
}
}
});
common_vendor.index.getStorage({
key: "userinfo",
success: (res) => {
@@ -132,7 +183,7 @@ const _sfc_main = {
}).exec();
});
components_goEasyTool_tool.messageRead(this.$goeasy, this.userId).then((res) => {
common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:300", "已读对方的消息");
common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:466", "已读对方的消息");
});
this.getIOSDeviceType();
var im = this.$goeasy.im;
@@ -141,6 +192,119 @@ const _sfc_main = {
this.getscrollviewheight();
},
methods: {
//暂停所有播放
notplayVoice(type) {
this.playbackStatus = type;
},
//发送录音
sendVoice(res) {
const im = this.$goeasy.im;
var message = im.createAudioMessage({
file: res,
to: {
type: common_vendor.jo.IM_SCENE.PRIVATE,
id: this.userId,
//对方用户id
data: { avatar: this.avatar, nickname: this.nickname }
},
onProgress: function(event) {
common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:491", "file uploading:", event);
}
//获取上传进度
});
components_goEasyTool_tool.sendGroupMessage(this.$goeasy, message).then((ress) => {
this.ElementPositioning = ress.id = components_ChatId.generateId();
ress.timestampStatus = this.checkInterval(ress.timestamp);
this.chatList.push(ress);
this.judgescrollTop = false;
});
},
//长按语音
voiceTouchstart() {
common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:503", "长按语音");
this.voicepopUpstart = true;
this.recorderManager.start();
this.notplayVoice(false);
},
//松开语音
voiceTouchend() {
setTimeout(() => {
this.recorderManager.stop();
}, 100);
common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:513", "松开语音");
this.voicepopUpstart = false;
},
//移动语音
voiceTouchmove(event) {
const threshold = common_vendor.index.getSystemInfoSync().windowHeight * 0.86;
try {
if (event.touches[0].clientY > threshold) {
this.voiceCancelOrSend = false;
} else {
this.voiceCancelOrSend = true;
}
} catch (e) {
}
},
//中断语音
voiceTouchcancel() {
common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:529", "中断语音");
this.voicepopUpstart = false;
this.voiceCancelOrSend = false;
},
//语音切换
onVoice(status) {
this.checkRecordPermission();
if (status) {
this.inputfocus = false;
this.MoreStatus = false;
} else {
this.inputfocus = true;
}
this.voiceStatus = status;
},
//录音权限
checkRecordPermission() {
common_vendor.index.getSetting({
success: (res) => {
const hasPermission = res.authSetting["scope.record"];
if (hasPermission === void 0) {
this.requestPermission();
} else if (!hasPermission) {
this.voiceStatus = false;
common_vendor.index.showModal({
title: "权限提示",
content: "需要录音权限才能正常使用功能,请在设置中开启",
confirmText: "去开启",
success: (modalRes) => {
if (modalRes.confirm) {
common_vendor.index.openSetting({
success: (settingRes) => {
if (settingRes.authSetting["scope.record"] === true) {
this.checkRecordPermission();
}
}
});
}
}
});
}
}
});
},
//请求录音权限
requestPermission() {
common_vendor.index.authorize({
scope: "scope.record",
fail: (err) => {
this.voiceStatus = false;
common_vendor.index.showToast({
title: "请授予麦克风权限,否则可能导致语音功能异常",
icon: "none"
});
}
});
},
//直接发送自定义消息
sendCustomMessage() {
components_request.request({
@@ -243,14 +407,14 @@ const _sfc_main = {
});
setTimeout(() => {
this.chatList = [...this.MoreMessageList, ...this.chatList];
common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:418", "获取更多聊天记录", this.chatList);
common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:695", "获取更多聊天记录", 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);
common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:702", "1已读消息", message);
},
//监听接受消息
onPrivateMessageReceived(message) {
@@ -265,7 +429,7 @@ const _sfc_main = {
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", "已读对方的消息");
common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:717", "已读对方的消息");
});
}
},
@@ -279,7 +443,7 @@ const _sfc_main = {
this.avatar,
this.nickname
).then((res) => {
common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:454", "发送成功", res);
common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:731", "发送成功", res);
this.ElementPositioning = res.id = components_ChatId.generateId();
res.timestampStatus = this.checkInterval(res.timestamp);
this.chatList.push(res);
@@ -320,7 +484,12 @@ const _sfc_main = {
this.judgescrollTop = false;
}
this.getscrollviewheight();
this.MoreStatus = Status;
if (Status) {
this.MoreStatus = Status;
this.voiceStatus = false;
} else {
this.MoreStatus = Status;
}
const query = common_vendor.index.createSelectorQuery().in(this);
query.select(".inputComponent").boundingClientRect((res) => {
this.Elementheight = res.height * 2;
@@ -330,29 +499,75 @@ const _sfc_main = {
onMoreItem(type) {
if (type == "Album") {
this.onSendMedia();
} else if (type == "Video") {
this.onSendVideo();
} else {
this.MoreItemStatus = type;
}
},
//发送图片,视频消息
onSendMedia() {
common_vendor.index.chooseMedia({
count: 9,
mediaType: ["image", "video"],
//发送视频
onSendVideo() {
var im = this.$goeasy.im;
common_vendor.index.chooseVideo({
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")
;
success: (res) => {
var message = im.createVideoMessage({
file: res,
//H5获得的视频file对象 Uniapp和小程序调用chooseVideosuccess时得到的res对象
to: {
type: common_vendor.jo.IM_SCENE.PRIVATE,
id: this.userId,
//对方用户id
data: { avatar: this.avatar, nickname: this.nickname }
},
onProgress: function(event) {
common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:811", "file uploading:", event);
}
//获取上传进度
});
components_goEasyTool_tool.sendGroupMessage(this.$goeasy, message).then((res2) => {
this.ElementPositioning = res2.id = components_ChatId.generateId();
res2.timestampStatus = this.checkInterval(res2.timestamp);
this.chatList.push(res2);
this.judgescrollTop = false;
});
}
});
},
//发送音频消息
onSendAudio() {
//发送图片
onSendMedia() {
var im = this.$goeasy.im;
common_vendor.index.chooseImage({
count: 9,
//默认9
sizeType: ["original", "compressed"],
//可以指定是原图还是压缩图,默认二者都有
sourceType: ["album", "camera"],
//从相册选择
success: (res) => {
const tempFiles = res.tempFiles;
tempFiles.forEach((item, index) => {
var message = im.createImageMessage({
file: item,
to: {
type: common_vendor.jo.IM_SCENE.PRIVATE,
id: this.userId,
data: { avatar: this.avatar, nickname: this.nickname }
},
onProgress: function(event) {
common_vendor.index.__f__("log", "at pages/index/chat/chat.vue:841", "上传进度", event);
}
//获取上传进度
});
components_goEasyTool_tool.sendGroupMessage(this.$goeasy, message).then((res2) => {
this.ElementPositioning = res2.id = components_ChatId.generateId();
res2.timestampStatus = this.checkInterval(res2.timestamp);
this.chatList.push(res2);
this.judgescrollTop = false;
});
});
}
});
},
// 获取键盘高度
onFocus(event) {
@@ -400,14 +615,20 @@ const _sfc_main = {
components: {
textmessage,
InvitationComponents,
customPKMessage
customPKMessage,
imageMessage,
videoMessage,
voiceMessage
}
};
if (!Array) {
const _component_textmessage = common_vendor.resolveComponent("textmessage");
const _component_customPKMessage = common_vendor.resolveComponent("customPKMessage");
const _component_imageMessage = common_vendor.resolveComponent("imageMessage");
const _component_videoMessage = common_vendor.resolveComponent("videoMessage");
const _component_voiceMessage = common_vendor.resolveComponent("voiceMessage");
const _component_InvitationComponents = common_vendor.resolveComponent("InvitationComponents");
(_component_textmessage + _component_customPKMessage + _component_InvitationComponents)();
(_component_textmessage + _component_customPKMessage + _component_imageMessage + _component_videoMessage + _component_voiceMessage + _component_InvitationComponents)();
}
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return common_vendor.e({
@@ -424,60 +645,135 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
c: item.senderId == $data.userId
}, item.senderId == $data.userId ? common_vendor.e({
d: $data.avatar,
e: item.type == "text"
e: item.type == "text" || item.type == "audio"
}, item.type == "text" || item.type == "audio" ? {} : {}, {
f: item.type == "text"
}, item.type == "text" ? {
f: "f4b42ac4-0-" + i0,
g: common_vendor.p({
g: "f4b42ac4-0-" + i0,
h: common_vendor.p({
messagetext: item.payload.text
})
} : {}, {
h: item.type == "pk"
i: item.type == "pk"
}, item.type == "pk" ? {
i: "f4b42ac4-1-" + i0,
j: common_vendor.p({
j: "f4b42ac4-1-" + i0,
k: common_vendor.p({
message: item.payload
})
} : {}) : {}, {
k: item.senderId == $data.userinfo.id
} : {}, {
l: item.type == "image"
}, item.type == "image" ? {
m: "f4b42ac4-2-" + i0,
n: common_vendor.p({
message: item.payload
})
} : {}, {
o: item.type == "video"
}, item.type == "video" ? {
p: "f4b42ac4-3-" + i0,
q: common_vendor.p({
message: item.payload
})
} : {}, {
r: item.type == "audio"
}, item.type == "audio" ? {
s: "f4b42ac4-4-" + i0,
t: common_vendor.p({
message: item.payload,
senderId: item.senderId,
userId: $data.userinfo.id
})
} : {}, {
v: item.type == "text" || item.type == "audio" ? "#7bbd0093" : "#ffffff"
}) : {}, {
w: item.senderId == $data.userinfo.id
}, item.senderId == $data.userinfo.id ? common_vendor.e({
l: $data.userinfo.headerIcon,
m: item.type == "text"
x: $data.userinfo.headerIcon,
y: item.type == "text" || item.type == "audio"
}, item.type == "text" || item.type == "audio" ? {} : {}, {
z: item.type == "text"
}, item.type == "text" ? {
n: "f4b42ac4-2-" + i0,
o: common_vendor.p({
A: "f4b42ac4-5-" + i0,
B: common_vendor.p({
messagetext: item.payload.text
})
} : {}, {
p: item.type == "pk"
C: item.type == "pk"
}, item.type == "pk" ? {
q: "f4b42ac4-3-" + i0,
r: common_vendor.p({
D: "f4b42ac4-6-" + i0,
E: common_vendor.p({
message: item.payload
})
} : {}) : {}, {
s: item.id,
t: item.id
} : {}, {
F: item.type == "image"
}, item.type == "image" ? {
G: "f4b42ac4-7-" + i0,
H: common_vendor.p({
message: item.payload
})
} : {}, {
I: item.type == "video"
}, item.type == "video" ? {
J: "f4b42ac4-8-" + i0,
K: common_vendor.p({
message: item.payload
})
} : {}, {
L: item.type == "audio"
}, item.type == "audio" ? {
M: common_vendor.o($options.notplayVoice, item.id),
N: "f4b42ac4-9-" + i0,
O: common_vendor.p({
message: item.payload,
senderId: item.senderId,
userId: $data.userinfo.id,
playbackStatus: $data.playbackStatus
})
} : {}, {
P: item.type == "text" || item.type == "audio" ? "#7bbd0093" : "#ffffff"
}) : {}, {
Q: item.id,
R: 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
j: $data.MoreStatus || $data.KeyboardHeight != 0 ? $data.MoreStatus ? 650 + $data.Elementheight + "rpx" : $data.KeyboardHeight != 0 ? $data.KeyboardHeight + $data.Elementheight + "rpx" : "10vh" : "10vh",
k: !$data.voiceStatus
}, !$data.voiceStatus ? {
l: common_vendor.o(($event) => $options.onVoice(!$data.voiceStatus))
} : {}, {
m: $data.voiceStatus
}, $data.voiceStatus ? {
n: common_vendor.o(($event) => $options.onVoice(!$data.voiceStatus))
} : {}, {
o: $data.voiceStatus
}, $data.voiceStatus ? {
p: common_vendor.o((...args) => $options.voiceTouchstart && $options.voiceTouchstart(...args)),
q: common_vendor.o((...args) => $options.voiceTouchend && $options.voiceTouchend(...args)),
r: common_vendor.o((...args) => $options.voiceTouchmove && $options.voiceTouchmove(...args)),
s: common_vendor.o((...args) => $options.voiceTouchcancel && $options.voiceTouchcancel(...args))
} : {}, {
t: !$data.voiceStatus
}, !$data.voiceStatus ? {
v: common_vendor.o([($event) => $data.content = $event.detail.value, (...args) => $options.SendInput && $options.SendInput(...args)]),
w: common_vendor.o((...args) => $options.onFocus && $options.onFocus(...args)),
x: $data.inputfocus,
y: common_vendor.o((...args) => $options.onBlur && $options.onBlur(...args)),
z: $data.content
} : {}, {
A: !$data.ButtonStatus
}, !$data.ButtonStatus ? {
p: common_vendor.o(($event) => $options.onMore(!$data.MoreStatus))
B: common_vendor.o(($event) => $options.onMore(!$data.MoreStatus))
} : {}, {
q: $data.ButtonStatus
C: $data.ButtonStatus
}, $data.ButtonStatus ? {
r: common_vendor.o((...args) => $options.onSend && $options.onSend(...args))
D: 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) => {
E: $data.MoreStatus || $data.KeyboardHeight > 300 ? $data.MoreStatus ? "650rpx" : $data.KeyboardHeight > 300 ? $data.KeyboardHeight + "rpx" : "0" : "0",
F: common_vendor.f($data.popUpList, (item, index, i0) => {
return {
a: item.icon,
b: common_vendor.t(item.name),
@@ -485,22 +781,27 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
d: index
};
}),
v: $data.MoreStatus || $data.KeyboardHeight > 300 ? $data.MoreStatus ? "0" : $data.KeyboardHeight > 300 ? "0" : $data.KeyboardHeight + "rpx" : "-650rpx",
w: $data.MoreItemStatus == "Invitation"
G: $data.MoreStatus || $data.KeyboardHeight > 300 ? $data.MoreStatus ? "0" : $data.KeyboardHeight > 300 ? "0" : $data.KeyboardHeight + "rpx" : "-650rpx",
H: $data.MoreItemStatus == "Invitation"
}, $data.MoreItemStatus == "Invitation" ? {
x: common_vendor.o($options.refreshMessage),
y: common_vendor.p({
I: common_vendor.o($options.refreshMessage),
J: common_vendor.p({
oppositeId: $data.userId,
myId: $data.userinfo.id,
avatar: $data.avatar,
nickname: $data.nickname
})
} : {}, {
z: common_vendor.o(() => {
K: common_vendor.o(() => {
}),
A: $data.MoreItemStatus == null ? "-1000rpx" : "0",
B: common_vendor.o(($event) => $options.onMoreItem(null)),
C: $data.MoreItemStatus == null ? "100vh" : "0"
L: $data.MoreItemStatus == null ? "-1000rpx" : "0",
M: common_vendor.o(($event) => $options.onMoreItem(null)),
N: $data.MoreItemStatus == null ? "100vh" : "0",
O: $data.voiceCancelOrSend ? "#ebebeb" : "#000000a9",
P: common_vendor.t($data.voiceCancelOrSend ? "取消" : "松手发送"),
Q: !$data.voiceCancelOrSend ? "#ebebeb" : "#000000a9",
R: $data.voicepopUpstart == false ? "-1000rpx" : "0",
S: $data.voicepopUpstart == false ? "100vh" : "0"
});
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-f4b42ac4"]]);

View File

@@ -3,6 +3,9 @@
"usingComponents": {
"textmessage": "./messageComponent/textmessage",
"custom-p-k-message": "./messageComponent/customPKMessage",
"image-message": "./messageComponent/imageMessage",
"video-message": "./messageComponent/videoMessage",
"voice-message": "./messageComponent/voiceMessage",
"invitation-components": "./moreMessageComponents/InvitationComponents"
}
}

File diff suppressed because one or more lines are too long

View File

@@ -134,7 +134,6 @@
.myChatNewsContent.data-v-f4b42ac4 {
width: auto;
height: auto;
background-color: #7bbd0093;
border-radius: 20rpx;
max-width: 450rpx;
}
@@ -143,6 +142,43 @@
height: 80rpx;
border-radius: 10rpx;
}
.Voice.data-v-f4b42ac4 {
width: 80rpx;
height: 80rpx;
border-radius: 50rpx;
margin-left: 10rpx;
display: flex;
justify-content: center;
align-items: center;
}
.KeyboardImg.data-v-f4b42ac4 {
width: 70rpx;
height: 70rpx;
border-radius: 50rpx;
display: flex;
justify-content: center;
align-items: center;
}
.Keyboardpng.data-v-f4b42ac4 {
width: 100%;
height: 100%;
border-radius: 50rpx;
}
.MicrophoneImg.data-v-f4b42ac4 {
margin-top: 5rpx;
width: 53rpx;
height: 53rpx;
border: 4rpx solid #424242;
border-radius: 50rpx;
display: flex;
justify-content: center;
align-items: center;
}
.Microphonepng.data-v-f4b42ac4 {
width: 80%;
height: 80%;
border-radius: 50rpx;
}
.textareacomponent.data-v-f4b42ac4 {
width: 570rpx;
height: auto;
@@ -157,6 +193,18 @@
overflow-wrap: break-word;
margin-left: 30rpx;
}
.VoiceInput.data-v-f4b42ac4 {
width: 95%;
background-color: #ffffff;
height: 60rpx;
border-radius: 10rpx;
padding: 10rpx;
overflow-wrap: break-word;
margin-left: 30rpx;
line-height: 60rpx;
text-align: center;
color: #000;
}
.sendComponent.data-v-f4b42ac4 {
margin-left: 40rpx;
}
@@ -219,6 +267,14 @@
transition: top 0.25s ease;
z-index: 1000;
}
.popUpVoice.data-v-f4b42ac4 {
position: fixed;
left: 0;
right: 0;
bottom: 0;
z-index: 1000;
background-color: #8b8b8bd7;
}
.popUpInvitationContent.data-v-f4b42ac4 {
position: absolute;
left: 0;
@@ -229,3 +285,54 @@
border-top-left-radius: 40rpx;
border-top-right-radius: 40rpx;
}
.popUpvoiceContent.data-v-f4b42ac4 {
position: absolute;
left: 0;
right: 0;
height: 1000rpx;
/* transition: bottom 0.1s ease; */
/* background-color: #ebebeb; */
}
.gifModule.data-v-f4b42ac4 {
padding: 20rpx;
border-radius: 20rpx;
overflow: hidden;
height: 120rpx;
background-color: #232123;
}
.voiceCenter.data-v-f4b42ac4 {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
}
.video-player.data-v-f4b42ac4 {
width: 300rpx;
height: 300rpx;
border-radius: 20rpx;
margin-top: -94rpx;
}
.CancelModule.data-v-f4b42ac4 {
width: 95%;
height: 100rpx;
text-align: center;
line-height: 100rpx;
background-color: #000000a9;
font-size: 30rpx;
color: #999999;
border-radius: 50rpx;
margin-top: 500rpx;
}
.btnModule.data-v-f4b42ac4 {
width: 100%;
height: 200rpx;
background-color: #000000;
color: #999999;
font-size: 30rpx;
text-align: center;
line-height: 200rpx;
border-top-left-radius: 50%;
border-top-right-radius: 50%;
}

View File

@@ -3,7 +3,7 @@ const common_vendor = require("../../../../common/vendor.js");
const _sfc_main = {
props: {
message: {
type: String,
type: Object,
default: ""
}
},

View File

@@ -0,0 +1,80 @@
"use strict";
const common_vendor = require("../../../../../common/vendor.js");
const _sfc_main = {
data() {
return {
url: ""
};
},
onLoad(options) {
this.url = options.url;
},
methods: {
//返回上一页
goBack() {
common_vendor.wx$1.navigateBack({
delta: 1
});
},
//保存图片
saveImage() {
common_vendor.index.showLoading({
title: "正在下载图片...",
mask: true
});
common_vendor.index.downloadFile({
url: this.url,
success: (downloadRes) => {
if (downloadRes.statusCode === 200) {
common_vendor.index.saveImageToPhotosAlbum({
filePath: downloadRes.tempFilePath,
success: () => {
common_vendor.index.hideLoading();
common_vendor.index.showToast({
title: "保存成功",
icon: "none",
duration: 2e3
});
},
fail: (saveErr) => {
common_vendor.index.hideLoading();
common_vendor.index.showToast({
title: "保存失败: " + saveErr.errMsg,
icon: "none",
duration: 2e3
});
}
});
} else {
common_vendor.index.hideLoading();
common_vendor.index.showToast({
title: "下载失败",
icon: "none",
duration: 2e3
});
}
},
fail: (downloadErr) => {
common_vendor.index.hideLoading();
common_vendor.index.showToast({
title: "下载失败: " + downloadErr.errMsg,
icon: "none",
duration: 2e3
});
}
});
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: $data.url,
b: common_vendor.o((...args) => $options.saveImage && $options.saveImage(...args)),
c: common_vendor.o(() => {
}),
d: common_vendor.o((...args) => $options.goBack && $options.goBack(...args))
};
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-61106fa9"]]);
wx.createPage(MiniProgramPage);
//# sourceMappingURL=../../../../../../.sourcemap/mp-weixin/pages/index/chat/messageComponent/fullscreen/imagePreview.js.map

View File

@@ -0,0 +1,4 @@
{
"navigationBarTitleText": "图片预览",
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="image-preview data-v-61106fa9" bindtap="{{d}}"><view class="data-v-61106fa9"></view><image class="image data-v-61106fa9" src="{{a}}" mode="aspectFill"></image><view class="Localbtn data-v-61106fa9" catchtap="{{c}}"><image class="Local data-v-61106fa9" src="https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/Local.png" mode="aspectFit" bindtap="{{b}}"></image></view></view>

View File

@@ -0,0 +1,26 @@
.image-preview.data-v-61106fa9 {
width: 100vw;
height: 100vh;
background-color: black;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
}
.image.data-v-61106fa9 {
width: 100vw;
object-fit: contain;
}
.Localbtn.data-v-61106fa9 {
width: 100vw;
height: 50rpx;
margin-bottom: 50rpx;
display: flex;
flex-direction: row-reverse;
}
.Local.data-v-61106fa9 {
width: 50rpx;
height: 50rpx;
margin-right: 50rpx;
}

View File

@@ -0,0 +1,80 @@
"use strict";
const common_vendor = require("../../../../../common/vendor.js");
const _sfc_main = {
data() {
return {
url: ""
};
},
onLoad(options) {
this.url = options.url;
},
methods: {
//返回上一页
goBack() {
common_vendor.wx$1.navigateBack({
delta: 1
});
},
//保存图片
saveImage() {
common_vendor.index.showLoading({
title: "正在下载视频...",
mask: true
});
common_vendor.index.downloadFile({
url: this.url,
success: (downloadRes) => {
if (downloadRes.statusCode === 200) {
common_vendor.index.saveVideoToPhotosAlbum({
filePath: downloadRes.tempFilePath,
success: () => {
common_vendor.index.hideLoading();
common_vendor.index.showToast({
title: "保存成功",
icon: "none",
duration: 2e3
});
},
fail: (saveErr) => {
common_vendor.index.hideLoading();
common_vendor.index.showToast({
title: "保存失败: " + saveErr.errMsg,
icon: "none",
duration: 2e3
});
}
});
} else {
common_vendor.index.hideLoading();
common_vendor.index.showToast({
title: "下载失败",
icon: "none",
duration: 2e3
});
}
},
fail: (downloadErr) => {
common_vendor.index.hideLoading();
common_vendor.index.showToast({
title: "下载失败: " + downloadErr.errMsg,
icon: "none",
duration: 2e3
});
}
});
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: common_vendor.o(($event) => $options.goBack()),
b: $data.url,
c: common_vendor.o((...args) => $options.saveImage && $options.saveImage(...args)),
d: common_vendor.o(() => {
})
};
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-3d18a684"]]);
wx.createPage(MiniProgramPage);
//# sourceMappingURL=../../../../../../.sourcemap/mp-weixin/pages/index/chat/messageComponent/fullscreen/videoPreview.js.map

View File

@@ -0,0 +1,4 @@
{
"navigationBarTitleText": "视频预览",
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="image-preview data-v-3d18a684"><view class="top data-v-3d18a684"><image class="Fork data-v-3d18a684" src="https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/crossCross.png" mode="scaleToFill" bindtap="{{a}}"/></view><video class="image data-v-3d18a684" src="{{b}}" mode="aspectFill"></video><view class="Localbtn data-v-3d18a684" catchtap="{{d}}"><image class="Local data-v-3d18a684" src="https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/Local.png" mode="aspectFit" bindtap="{{c}}"></image></view></view>

View File

@@ -0,0 +1,35 @@
.image-preview.data-v-3d18a684 {
width: 100vw;
height: 100vh;
background-color: black;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
}
.image.data-v-3d18a684 {
width: 100vw;
object-fit: contain;
}
.Localbtn.data-v-3d18a684 {
width: 100vw;
height: 50rpx;
margin-bottom: 50rpx;
display: flex;
flex-direction: row-reverse;
}
.Local.data-v-3d18a684 {
width: 50rpx;
height: 50rpx;
margin-right: 50rpx;
}
.Fork.data-v-3d18a684{
width: 60rpx;
height: 60rpx;
margin-left: 50rpx;
}
.top.data-v-3d18a684{
margin-top: 110rpx;
width: 100vw;
}

View File

@@ -0,0 +1,50 @@
"use strict";
const common_vendor = require("../../../../common/vendor.js");
const _sfc_main = {
props: {
message: {
type: Object,
default: ""
}
},
data() {
return {
imageHeight: 0,
imageWidth: 0
};
},
onLoad() {
},
methods: {
load(event) {
if (event.detail.height > 400) {
this.imageHeight = 400;
} else {
this.imageHeight = event.detail.height;
}
if (event.detail.width > 400) {
this.imageWidth = 400;
} else {
this.imageWidth = event.detail.width;
}
},
// 点击图片全屏显示
imadeFullScreen() {
common_vendor.wx$1.navigateTo({
url: "/pages/index/chat/messageComponent/fullscreen/imagePreview?url=" + this.message.url
});
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: $data.imageWidth + "rpx",
b: $data.imageHeight + "rpx",
c: common_vendor.o((...args) => $options.load && $options.load(...args)),
d: $props.message.url,
e: common_vendor.o((...args) => $options.imadeFullScreen && $options.imadeFullScreen(...args))
};
}
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-d774affd"]]);
wx.createComponent(Component);
//# sourceMappingURL=../../../../../.sourcemap/mp-weixin/pages/index/chat/messageComponent/imageMessage.js.map

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="image-message data-v-d774affd" bindtap="{{e}}"><image class="image data-v-d774affd" style="{{'width:' + a + ';' + ('height:' + b)}}" bindload="{{c}}" src="{{d}}" mode="aspectFit"></image></view>

View File

@@ -0,0 +1,8 @@
.image-message.data-v-d774affd{
width: 100%;
height: 100%;
}
.image.data-v-d774affd{
border-radius: 20rpx;
}

View File

@@ -0,0 +1,33 @@
"use strict";
const common_vendor = require("../../../../common/vendor.js");
const _sfc_main = {
props: {
message: {
type: Object,
default: ""
}
},
data() {
return {
title: "Hello"
};
},
onLoad() {
},
methods: {
onTap() {
common_vendor.wx$1.navigateTo({
url: "/pages/index/chat/messageComponent/fullscreen/videoPreview?url=" + this.message.video.url
});
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: $props.message.thumbnail.url,
b: common_vendor.o((...args) => $options.onTap && $options.onTap(...args))
};
}
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-23a12dbe"]]);
wx.createComponent(Component);
//# sourceMappingURL=../../../../../.sourcemap/mp-weixin/pages/index/chat/messageComponent/videoMessage.js.map

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="video-message data-v-23a12dbe" bindtap="{{b}}"><image class="video-player data-v-23a12dbe" src="{{a}}" mode="scaleToFill"/><image class="Play data-v-23a12dbe" src="https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/Play.png" mode="scaleToFill"/></view>

View File

@@ -0,0 +1,18 @@
.video-message.data-v-23a12dbe {
width: 450rpx;
height: 300rpx;
border-radius: 20px;
display: flex;
}
.video-player.data-v-23a12dbe {
width: 100%;
height: 100%;
border-radius: 20px;
}
.Play.data-v-23a12dbe {
width: 200rpx;
height: 200rpx;
margin-left: -330rpx;
margin-top: 50rpx;
}

View File

@@ -0,0 +1,92 @@
"use strict";
const common_vendor = require("../../../../common/vendor.js");
const _sfc_main = {
props: {
message: {
type: Object,
default: () => ({})
},
senderId: {
type: String,
default: ""
},
userId: {
type: Number
},
playbackStatus: {
type: Boolean
}
},
data() {
return {
innerAudioContext: null,
NumberClicks: 0
};
},
watch: {
playbackStatus(newVal) {
if (!newVal) {
if (this.innerAudioContext) {
this.innerAudioContext.pause();
this.innerAudioContext.destroy();
this.innerAudioContext = null;
this.NumberClicks = 0;
this.$emit("notplayVoice", true);
} else {
this.$emit("notplayVoice", true);
}
} else {
this.$emit("notplayVoice", true);
}
}
},
methods: {
floor(num) {
return Math.floor(num);
},
Play() {
this.$emit("notplayVoice", false);
setTimeout(() => {
this.innerAudioContext = common_vendor.index.createInnerAudioContext();
this.innerAudioContext.src = this.message.url;
this.innerAudioContext.onEnded(() => {
this.NumberClicks = 0;
this.innerAudioContext.destroy();
this.innerAudioContext = null;
});
this.innerAudioContext.onError((res) => {
this.NumberClicks = 0;
this.innerAudioContext.destroy();
this.innerAudioContext = null;
});
this.innerAudioContext.play();
this.NumberClicks = 1;
}, 500);
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return common_vendor.e({
a: $props.senderId == $props.userId
}, $props.senderId == $props.userId ? common_vendor.e({
b: common_vendor.t($options.floor($props.message.duration)),
c: $data.NumberClicks == 0
}, $data.NumberClicks == 0 ? {} : {}, {
d: $data.NumberClicks == 1
}, $data.NumberClicks == 1 ? {} : {}, {
e: $data.NumberClicks == 2
}, $data.NumberClicks == 2 ? {} : {}) : common_vendor.e({
f: $data.NumberClicks == 0
}, $data.NumberClicks == 0 ? {} : {}, {
g: $data.NumberClicks == 1
}, $data.NumberClicks == 1 ? {} : {}, {
h: $data.NumberClicks == 2
}, $data.NumberClicks == 2 ? {} : {}, {
i: common_vendor.t($options.floor($props.message.duration))
}), {
j: common_vendor.o((...args) => $options.Play && $options.Play(...args))
});
}
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-2ecc0080"]]);
wx.createComponent(Component);
//# sourceMappingURL=../../../../../.sourcemap/mp-weixin/pages/index/chat/messageComponent/voiceMessage.js.map

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="voice-message data-v-2ecc0080" bindtap="{{j}}"><view wx:if="{{a}}" class="voice-message-content data-v-2ecc0080"><view class="data-v-2ecc0080">{{b}}"</view><image wx:if="{{c}}" class="voice-message-avatar data-v-2ecc0080" src="https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/voice.png" mode="scaleToFill"/><view wx:if="{{d}}" class="voice-message-name data-v-2ecc0080">播放中...</view><view wx:if="{{e}}" class="voice-message-name data-v-2ecc0080">暂停中...</view></view><view wx:else class="voice-message-content data-v-2ecc0080"><image wx:if="{{f}}" class="voice-message-avatar data-v-2ecc0080" src="https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/voice.png" mode="scaleToFill"/><view wx:if="{{g}}" class="voice-message-name data-v-2ecc0080">播放中...</view><view wx:if="{{h}}" class="voice-message-name data-v-2ecc0080">暂停中...</view><view class="data-v-2ecc0080">"{{i}}"</view></view></view>

View File

@@ -0,0 +1,20 @@
.voice-message.data-v-2ecc0080 {
padding: 0 20rpx 0 20rpx;
}
.voice-message-avatar.data-v-2ecc0080 {
width: 100rpx;
height: 80rpx;
margin-left: 10rpx;
}
.voice-message-content.data-v-2ecc0080 {
display: flex;
align-items: center;
}
.voice-message-name.data-v-2ecc0080 {
height: 80rpx;
margin-left: 10rpx;
font-size: 28rpx;
color: #999;
line-height: 80rpx;
}