From f0aee6ba14b5804cfd9adbe9f655e52424592665 Mon Sep 17 00:00:00 2001
From: cbb <1055026847@qq.com>
Date: Fri, 16 Jan 2026 17:57:43 +0800
Subject: [PATCH] =?UTF-8?q?=E7=BA=A2=E5=8C=85=E9=80=BB=E8=BE=91=E9=9C=80?=
=?UTF-8?q?=E8=A6=81=E9=87=8D=E6=9E=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.env | 4 +-
.../components/TUIChat/message-list/index.vue | 48 ++++-
.../message-elements/message-custom.vue | 18 +-
api/mall.js | 5 +-
api/tui-kit.js | 16 ++
components/nav-bar/nav-bar.vue | 2 -
components/register-app/register-app.vue | 1 -
pages.json | 7 +
pages/discover/punch.vue | 4 +-
pages/mall/comment.vue | 51 ++++--
pages/mall/confirm-order.vue | 2 +
pages/mall/detail.vue | 23 ++-
pages/red-packet/details.vue | 171 ++++++++++++++++++
stores/user.js | 23 ++-
styles/login.scss | 1 +
utils/request.js | 4 +-
16 files changed, 335 insertions(+), 45 deletions(-)
create mode 100644 pages/red-packet/details.vue
diff --git a/.env b/.env
index ce0e40e..2d1b476 100644
--- a/.env
+++ b/.env
@@ -1,6 +1,6 @@
# API
-# VITE_SYSTEM_URL = "http://w6972efb.natappfree.cc"
-VITE_SYSTEM_URL = "https://dev.cqjcteach.cn/prod-api"
+VITE_SYSTEM_URL = "http://w6972efb.natappfree.cc"
+# VITE_SYSTEM_URL = "https://dev.cqjcteach.cn/prod-api"
# 第三方客户 channelId
VITE_CHANNEL_ID = "7b81ec142eca42baa045820793b821bb"
diff --git a/TUIKit/components/TUIChat/message-list/index.vue b/TUIKit/components/TUIChat/message-list/index.vue
index 7ebe245..234ddb0 100644
--- a/TUIKit/components/TUIChat/message-list/index.vue
+++ b/TUIKit/components/TUIChat/message-list/index.vue
@@ -279,7 +279,12 @@
import chatStorage from '../utils/chatStorage'
import { IAudioContext } from '../../../interface'
import { CHAT_MSG_CUSTOM_TYPE } from '../../../constant'
- import { receiveRedEnvelope } from '../../../../api/tui-kit'
+ import {
+ receiveRedEnvelope,
+ getRedEnvelopeDetail
+ } from '../../../../api/tui-kit'
+ import { navigateTo } from '../../../../utils/router'
+ import { useUI } from '../../../../utils/use-ui'
interface IEmits {
(e: 'closeInputToolBar'): void
@@ -604,9 +609,10 @@
})
}
+ const { showDialog } = useUI()
/** 领取红包 */
const onClaim = (item: IMessageModel) => {
- const { conversationType, flow, payload } = item
+ const { conversationType, cloudCustomData, flow, payload } = item
const data = JSON.parse(payload.data)
// 群聊
if (conversationType === TYPES.value.CONV_GROUP) {
@@ -617,7 +623,43 @@
})
} else {
// 个人红包
- // 只能对方领取
+ getRedEnvelopeDetail(data.id).then(async (res: any) => {
+ console.log(res)
+ let newMessage = {
+ // ...data,
+ in: false,
+ out: false
+ }
+ if (cloudCustomData) {
+ newMessage = JSON.parse(cloudCustomData)
+ }
+ // 只能对方领取
+ if (flow === 'in') {
+ if (res.data.hasReceived) {
+ // 直接去详情页
+ } else {
+ const show = await showDialog('提示', '是否领取该红包?')
+ if (show) {
+ newMessage.in = true
+
+ item.modifyMessage({
+ cloudCustomData: JSON.stringify(newMessage)
+ })
+ }
+ }
+ } else {
+ newMessage.out = true
+ item.modifyMessage({
+ cloudCustomData: JSON.stringify(newMessage)
+ })
+ navigateTo('/pages/red-packet/details', {
+ id: data.id,
+ type: conversationType
+ })
+ }
+ })
+
+ return
if (flow === 'in') {
// 修改后的消息
const newMessage = {
diff --git a/TUIKit/components/TUIChat/message-list/message-elements/message-custom.vue b/TUIKit/components/TUIChat/message-list/message-elements/message-custom.vue
index a61ab66..e865164 100644
--- a/TUIKit/components/TUIChat/message-list/message-elements/message-custom.vue
+++ b/TUIKit/components/TUIChat/message-list/message-elements/message-custom.vue
@@ -86,6 +86,13 @@
积分红包{{ customData.isOpen }}
+
+
@@ -95,7 +102,13 @@
@@ -51,6 +60,7 @@
:default-page-size="15"
safe-area-inset-bottom
use-safe-area-placeholder
+ :show-loading-more-no-more-view="total !== listData.length"
:auto="false"
@query="getList"
>
@@ -69,7 +79,19 @@
+
- {{ item.userName }}
+
+ {{ item.isAnonymous ? '匿名用户' : item.userName }}
+
@@ -104,15 +128,16 @@
{{ item.content }}
-
diff --git a/pages/red-packet/details.vue b/pages/red-packet/details.vue
new file mode 100644
index 0000000..d87693e
--- /dev/null
+++ b/pages/red-packet/details.vue
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ userInfo?.userName }}发出的的红包
+
+ {{ viewData?.title }}
+
+
+
+
+
+ {{
+ viewData.hasReceived
+ ? `${viewData.remainCount}个红包${viewData.remainAmount}积分`
+ : `红包${viewData.remainAmount}积分,等待对方领取`
+ }}
+
+ 1个红包共5.00元
+
+
+
+
+
+
+
+ 用户名称
+ 5积分
+
+ 用户名称
+
+
+
+
+
+
+
diff --git a/stores/user.js b/stores/user.js
index 1b9f2de..c04e151 100644
--- a/stores/user.js
+++ b/stores/user.js
@@ -118,21 +118,27 @@ export const useUserStore = defineStore('user', () => {
// #ifdef APP-PLUS
await useLoginState().logout()
// #endif
- clearToken()
- removeUserInfoData()
- removeSig()
- removeFontSize()
+ clearAllUserInfo()
await showToast('退出登录成功', 'success')
reLaunch('/pages/login/login')
} catch (error) {
- clearToken()
- removeUserInfoData()
- removeSig()
- removeFontSize()
+ clearAllUserInfo()
await showToast('退出登录成功', 'success')
reLaunch('/pages/login/login')
}
}
+
+ /** 清空所有用户缓存 */
+ const clearAllUserInfo = async () => {
+ userInfo.value = null
+ tencentUserSig.value = null
+ fontSizeData.value = 26
+ clearToken()
+ removeUserInfoData()
+ removeSig()
+ removeFontSize()
+ }
+
/** 刷新用户信息(如用户信息被修改) */
const refreshUserInfo = async () => {
const res = await getUserData()
@@ -159,6 +165,7 @@ export const useUserStore = defineStore('user', () => {
userInfo,
tencentUserSig,
fontSizeData,
+ clearAllUserInfo,
updateFontSize,
logout,
refreshUserInfo,
diff --git a/styles/login.scss b/styles/login.scss
index 3f85741..3563730 100644
--- a/styles/login.scss
+++ b/styles/login.scss
@@ -33,6 +33,7 @@
padding: 120rpx 32rpx 66rpx;
display: flex;
justify-content: space-between;
+ align-items: center;
.title-left,
.title-right {
font-family: PingFang SC, PingFang SC;
diff --git a/utils/request.js b/utils/request.js
index 0ccc46b..09830a4 100644
--- a/utils/request.js
+++ b/utils/request.js
@@ -105,9 +105,9 @@ const handleError = (statusCode, data) => {
content: '登录已过期,请重新登录',
showCancel: false,
success: async () => {
- await useUserStore().logout()
+ await useUserStore().clearAllUserInfo()
// 可选:跳转登录页
- // uni.redirectTo({ url: '/pages/login/index' })
+ uni.redirectTo({ url: '/pages/login/index' })
console.log('登录已过期,====')
},
complete: () => {