|
@@ -25,7 +25,9 @@
|
|
|
/>
|
|
|
<main class="message-body" @click.stop>
|
|
|
<div
|
|
|
- v-if="message.flow === 'in' && message.conversationType === 'GROUP'"
|
|
|
+ v-if="
|
|
|
+ message.flow === 'in' && message.conversationType === 'GROUP'
|
|
|
+ "
|
|
|
class="message-body-nick-name"
|
|
|
>
|
|
|
{{ props.content.showName }}
|
|
@@ -55,7 +57,10 @@
|
|
|
message.type === TYPES.MSG_VIDEO) &&
|
|
|
message.hasRiskContent
|
|
|
"
|
|
|
- :class="['message-risk-replace', !isPC && 'message-risk-replace-h5']"
|
|
|
+ :class="[
|
|
|
+ 'message-risk-replace',
|
|
|
+ !isPC && 'message-risk-replace-h5',
|
|
|
+ ]"
|
|
|
:src="riskImageReplaceUrl"
|
|
|
/>
|
|
|
<template v-else>
|
|
@@ -63,7 +68,10 @@
|
|
|
</template>
|
|
|
</div>
|
|
|
<!-- Risk Content Tips -->
|
|
|
- <div v-if="message.hasRiskContent" class="content-has-risk-tips">
|
|
|
+ <div
|
|
|
+ v-if="message.hasRiskContent"
|
|
|
+ class="content-has-risk-tips"
|
|
|
+ >
|
|
|
{{ riskContentText }}
|
|
|
</div>
|
|
|
</div>
|
|
@@ -141,6 +149,7 @@ import { shallowCopyMessage } from "../../utils/utils";
|
|
|
import { isPC } from "../../../../utils/env";
|
|
|
import { watchEffect, ref } from "../../../../adapter-vue";
|
|
|
import { isUrl, JSONToObject } from "../../../../utils/index";
|
|
|
+import moment from "moment";
|
|
|
interface IProps {
|
|
|
messageItem: IMessageModel;
|
|
|
content?: any;
|
|
@@ -154,7 +163,11 @@ interface IProps {
|
|
|
interface IEmits {
|
|
|
(e: "resendMessage"): void;
|
|
|
(e: "blinkMessage", messageID: string): void;
|
|
|
- (e: "setReadReceiptPanelVisible", visible: boolean, message?: IMessageModel): void;
|
|
|
+ (
|
|
|
+ e: "setReadReceiptPanelVisible",
|
|
|
+ visible: boolean,
|
|
|
+ message?: IMessageModel
|
|
|
+ ): void;
|
|
|
(
|
|
|
e: "changeSelectMessageIDList",
|
|
|
options: { type: "add" | "remove" | "clearAll"; messageID: string }
|
|
@@ -171,20 +184,62 @@ watchEffect(() => {
|
|
|
isCustom.value = JSONToObject(payload.data);
|
|
|
});
|
|
|
function messageClass(message) {
|
|
|
- let businessId = message._message.payload.data
|
|
|
- ? JSON.parse(message._message.payload.data).businessID
|
|
|
- : "";
|
|
|
- console.log(businessId);
|
|
|
-
|
|
|
- if (message.flow === "out" && businessId != "red_envelope_message") {
|
|
|
- return "content-out";
|
|
|
- } else if (message.flow === "in" && businessId != "red_envelope_message") {
|
|
|
- return "content-in";
|
|
|
- } else if (message.flow === "out" && businessId == "red_envelope_message") {
|
|
|
- return "contentCustom-out";
|
|
|
- } else if (message.flow === "in" && businessId == "red_envelope_message") {
|
|
|
- return "contentCustom-in";
|
|
|
+ // 从消息负载数据中提取 businessId
|
|
|
+ const businessId =
|
|
|
+ message._message &&
|
|
|
+ message._message.payload &&
|
|
|
+ message._message.payload.data
|
|
|
+ ? JSON.parse(message._message.payload.data).businessID
|
|
|
+ : "";
|
|
|
+ const msgtime =
|
|
|
+ message._message &&
|
|
|
+ message._message.payload &&
|
|
|
+ message._message.payload.data
|
|
|
+ ? JSON.parse(message._message.payload.data).redEnvelopeExpireTime
|
|
|
+ : "";
|
|
|
+
|
|
|
+ let expireTime = moment(msgtime).format("YYYY-MM-DD");
|
|
|
+ let expired = false;
|
|
|
+ const now = moment();
|
|
|
+ if (expireTime && now.isAfter(expireTime)) {
|
|
|
+ expired = true;
|
|
|
+ } else if (expireTime) {
|
|
|
+ expired = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断消息流向是 "out"
|
|
|
+ if (message.flow === "out") {
|
|
|
+ // 判断 businessId 是否为红包消息相关
|
|
|
+ if (businessId === "red_envelope_message") {
|
|
|
+ if (expired) {
|
|
|
+ return "contentCustom-in-lq";
|
|
|
+ } else {
|
|
|
+ return "contentCustom-in";
|
|
|
+ }
|
|
|
+ } else if (businessId === "red_envelope_message_gq") {
|
|
|
+ return "contentCustom-in-lq";
|
|
|
+ } else {
|
|
|
+ return "content-out";
|
|
|
+ }
|
|
|
}
|
|
|
+ // 判断消息流向是 "in"
|
|
|
+ else if (message.flow === "in") {
|
|
|
+ // 判断 businessId 是否为红包消息相关
|
|
|
+ if (businessId === "red_envelope_message") {
|
|
|
+ if (expired) {
|
|
|
+ return "contentCustom-in-lq";
|
|
|
+ } else {
|
|
|
+ return "contentCustom-in";
|
|
|
+ }
|
|
|
+ } else if (businessId === "red_envelope_message_gq") {
|
|
|
+ return "contentCustom-in-lq";
|
|
|
+ } else {
|
|
|
+ return "content-in";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果消息流向不是 "in" 或 "out",返回空字符串
|
|
|
+ return "";
|
|
|
}
|
|
|
|
|
|
const props = withDefaults(defineProps<IProps>(), {
|
|
@@ -243,7 +298,9 @@ const riskContentText = computed<string>(() => {
|
|
|
content += TUITranslateService.t("TUIChat.发送失败");
|
|
|
} else {
|
|
|
content += TUITranslateService.t(
|
|
|
- message.value.type === TYPES.MSG_AUDIO ? "TUIChat.无法收听" : "TUIChat.无法查看"
|
|
|
+ message.value.type === TYPES.MSG_AUDIO
|
|
|
+ ? "TUIChat.无法收听"
|
|
|
+ : "TUIChat.无法查看"
|
|
|
);
|
|
|
}
|
|
|
return content;
|
|
@@ -293,6 +350,18 @@ function openReadUserPanel() {
|
|
|
box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(226, 226, 226, 0.23);
|
|
|
border-radius: 0px 20px 20px 20px;
|
|
|
}
|
|
|
+
|
|
|
+.contentCustom-in-lq {
|
|
|
+ opacity: 0.5;
|
|
|
+ height: 100px;
|
|
|
+ // background: linear-gradient(225deg, #f74d30 0%, #ff7633 100%);
|
|
|
+ background: url("../../../../../static/img/hbbj.png") no-repeat;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ padding: 16px 20px !important;
|
|
|
+ display: block !important;
|
|
|
+ box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(226, 226, 226, 0.23);
|
|
|
+ border-radius: 0px 20px 20px 20px;
|
|
|
+}
|
|
|
:not(not) {
|
|
|
display: flex;
|
|
|
flex-direction: column;
|