From d0cf491201be1e10160443c4e9e43c470c45b83a Mon Sep 17 00:00:00 2001
From: cbb <1055026847@qq.com>
Date: Tue, 30 Dec 2025 17:52:19 +0800
Subject: [PATCH] =?UTF-8?q?=E9=9C=80=E8=A6=81=E5=BC=80=E5=8F=91=20IM?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 9 +-
api/index.js | 33 +++
api/my-index.js | 52 +++++
.../agreement-checkbox/agreement-checkbox.vue | 10 +-
.../app-article-detail/app-article-detail.vue | 38 ++++
components/cb-search/cb-search.vue | 9 +-
components/nav-bar/nav-bar.vue | 12 +-
composables/useAuthUser.js | 3 +-
constants/storage-keys.js | 3 +-
pages.json | 20 +-
pages/discover/company.vue | 24 ++-
pages/discover/dynamic/release.vue | 16 +-
pages/discover/punch.vue | 199 ++++++++++++++++--
pages/login/protocol.vue | 9 +
pages/login/regime.vue | 9 +
pages/mall/detail.vue | 5 +-
.../wallet/bank-card/card-details.vue | 16 +-
pages/my-index/wallet/index.vue | 11 +
pages/news-list/news-list.vue | 16 +-
stores/user.js | 24 ++-
styles/global.scss | 13 ++
utils/dateUtils.js | 25 +++
utils/storage.js | 20 +-
23 files changed, 515 insertions(+), 61 deletions(-)
create mode 100644 api/my-index.js
create mode 100644 components/app-article-detail/app-article-detail.vue
create mode 100644 pages/login/protocol.vue
create mode 100644 pages/login/regime.vue
create mode 100644 utils/dateUtils.js
diff --git a/README.md b/README.md
index 9d84c55..3b67e0f 100644
--- a/README.md
+++ b/README.md
@@ -17,4 +17,11 @@ unaipp多端im+会议+积分商城
### TUILiveKit 文档地址
-```https://trtc.io/zh/document/60034?platform=ios&product=live```
\ No newline at end of file
+```https://trtc.io/zh/document/60034?platform=ios&product=live```
+
+### 直播与语音 文档
+
+```https://cloud.tencent.com/document/product/647/111859```
+
+### 聊天列表
+```https://cloud.tencent.com/document/product/269/105582```
\ No newline at end of file
diff --git a/api/index.js b/api/index.js
index 9b9642f..018efa1 100644
--- a/api/index.js
+++ b/api/index.js
@@ -95,3 +95,36 @@ export const getUserIntegralRank = data => {
data
})
}
+
+/** 签到列表 */
+export const getSignList = data => {
+ return http({
+ url: '/api/system/signRecord/list',
+ method: 'get',
+ data
+ })
+}
+
+/** 签到 */
+export const signIn = () => {
+ return http({
+ url: '/api/system/signRecord',
+ method: 'post'
+ })
+}
+
+/** 根据id获取文章详细信息 */
+export const getArticleDetail = id => {
+ return http({
+ url: `/api/service/articleContent/type/${id}`,
+ method: 'get'
+ })
+}
+
+/** 获取腾讯usersig */
+export const getTencentUserSig = () => {
+ return http({
+ url: '/api/user/usersig',
+ method: 'get'
+ })
+}
diff --git a/api/my-index.js b/api/my-index.js
new file mode 100644
index 0000000..585c4cd
--- /dev/null
+++ b/api/my-index.js
@@ -0,0 +1,52 @@
+import http from '@/utils/request'
+
+/** 添加银行卡 */
+export const addUserAddress = data => {
+ return http({
+ url: '/api/service/userCard',
+ method: 'post',
+ data
+ })
+}
+
+/** 修改银行卡 */
+export const updateUserAddress = data => {
+ return http({
+ url: '/api/service/userCard',
+ method: 'put',
+ data
+ })
+}
+
+/** 获取用户银行卡列表 */
+export const getUserAddress = data => {
+ return http({
+ url: '/api/service/userCard/list',
+ method: 'get',
+ data
+ })
+}
+
+/** 删除银行卡 */
+export const deleteUserAddress = id => {
+ return http({
+ url: `/api/service/userCard/${id}`,
+ method: 'delete'
+ })
+}
+
+/** 获取用户银行卡详情 */
+export const getUserAddressDetail = id => {
+ return http({
+ url: `/api/service/userCard/details/${id}`,
+ method: 'get'
+ })
+}
+
+/** 获取用户支付密码详细信息 */
+export const getUserPayPwd = () => {
+ return http({
+ url: '/api/service/userPassword/details',
+ method: 'get'
+ })
+}
diff --git a/components/agreement-checkbox/agreement-checkbox.vue b/components/agreement-checkbox/agreement-checkbox.vue
index dc4c8e2..5af9c6b 100644
--- a/components/agreement-checkbox/agreement-checkbox.vue
+++ b/components/agreement-checkbox/agreement-checkbox.vue
@@ -1,4 +1,6 @@
+
+
+
+
+
+
+
+
diff --git a/components/cb-search/cb-search.vue b/components/cb-search/cb-search.vue
index d226799..e5783b3 100644
--- a/components/cb-search/cb-search.vue
+++ b/components/cb-search/cb-search.vue
@@ -1,5 +1,10 @@
+
- 名字
+ {{ formData.articleTitle }}
- 富文本
+
+
+
diff --git a/pages/discover/dynamic/release.vue b/pages/discover/dynamic/release.vue
index 4d37a7f..a4b16a7 100644
--- a/pages/discover/dynamic/release.vue
+++ b/pages/discover/dynamic/release.vue
@@ -23,7 +23,9 @@ text-transform: none;`
- 发布
+
+ 发布
+
@@ -46,18 +48,6 @@ text-transform: none;`
diff --git a/pages/login/regime.vue b/pages/login/regime.vue
new file mode 100644
index 0000000..fde4920
--- /dev/null
+++ b/pages/login/regime.vue
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/pages/mall/detail.vue b/pages/mall/detail.vue
index 411699a..cfcadf8 100644
--- a/pages/mall/detail.vue
+++ b/pages/mall/detail.vue
@@ -138,7 +138,10 @@
商品详情
-
+
diff --git a/pages/my-index/wallet/bank-card/card-details.vue b/pages/my-index/wallet/bank-card/card-details.vue
index 341a90a..5857636 100644
--- a/pages/my-index/wallet/bank-card/card-details.vue
+++ b/pages/my-index/wallet/bank-card/card-details.vue
@@ -20,6 +20,16 @@
// 图片链接
img: ''
})
+
+ const onAdd = () => {
+ console.log(formData)
+ const data = {
+ bankName: formData.name,
+ cardNumber: formData.cardNum,
+ bankName: formData.khName
+ }
+ }
+
onLoad(e => {
const titltData = {
0: '添加银行卡',
@@ -33,7 +43,11 @@
-
+
+
+ 添加
+
+
import { navigateTo } from '@/utils/router'
+ import { onShow } from '@dcloudio/uni-app'
+ import { getUserPayPwd } from '@/api/my-index'
const itemList = [
{
@@ -15,6 +17,15 @@
},
{ title: '实名认证', key: '4', url: '/pages/my-index/wallet/real-id' }
]
+
+ const getData = async () => {
+ const res = await getUserPayPwd()
+ console.log(res, '===')
+ }
+
+ onShow(() => {
+ getData()
+ })
diff --git a/pages/news-list/news-list.vue b/pages/news-list/news-list.vue
index 1103874..1878fbc 100644
--- a/pages/news-list/news-list.vue
+++ b/pages/news-list/news-list.vue
@@ -1,13 +1,21 @@
- 消息列表
+
+
+ 右侧按钮
+
+
+ 消息列表
+
diff --git a/stores/user.js b/stores/user.js
index 227efea..0917ba8 100644
--- a/stores/user.js
+++ b/stores/user.js
@@ -3,13 +3,17 @@ import {
getToken,
getUserInfoData,
setUserInfoData,
- removeUserInfoData
+ removeUserInfoData,
+ getSig,
+ setSig,
+ removeSig
} from '@/utils/storage'
import { useTokenStore } from './token'
import { getUserData, userLogout } from '@/api'
import { ref } from 'vue'
import { useUI } from '@/utils/use-ui'
import { reLaunch } from '@/utils/router'
+import { getTencentUserSig } from '@/api'
export const useUserStore = defineStore('user', () => {
const { clearToken } = useTokenStore()
@@ -18,8 +22,8 @@ export const useUserStore = defineStore('user', () => {
const userInfo = ref(
getUserInfoData() ? JSON?.parse(getUserInfoData()) : {}
)
-
- /** 用户信息对象 */
+ /** 腾讯 IM 存储数据 */
+ const tencentUserSig = ref(getSig() ? JSON?.parse(getSig()) : {})
/**
* 获取用户信息(可从缓存或接口)
@@ -28,23 +32,27 @@ export const useUserStore = defineStore('user', () => {
// 尝试从本地缓存读取
const cachedToken = getToken()
const cachedUserInfo = getUserInfoData()
+ const cachedSig = getSig()
if (cachedToken && cachedUserInfo) {
userInfo.value = JSON.parse(cachedUserInfo)
+ tencentUserSig.value = JSON.parse(cachedSig)
return
}
const res = await getUserData()
- setUserInfo(res.data)
+ await setUserInfo(res.data)
return
}
/**
* 设置用户信息
*/
- const setUserInfo = data => {
+ const setUserInfo = async data => {
+ const res = await getTencentUserSig()
+ tencentUserSig.value = res.data
userInfo.value = data
- // 同步到本地存储
setUserInfoData(data)
+ setSig(res.data)
}
/**
@@ -57,6 +65,7 @@ export const useUserStore = defineStore('user', () => {
userInfo.value = null
clearToken()
removeUserInfoData()
+ removeSig()
reLaunch('/pages/login/login')
}
}
@@ -64,7 +73,7 @@ export const useUserStore = defineStore('user', () => {
/** 刷新用户信息(如用户信息被修改) */
const refreshUserInfo = async () => {
const res = await getUserData()
- setUserInfo(res.data)
+ await setUserInfo(res.data)
}
/**
@@ -78,6 +87,7 @@ export const useUserStore = defineStore('user', () => {
return {
userInfo,
+ tencentUserSig,
refreshUserInfo,
fetchUserInfo,
setUserInfo,
diff --git a/styles/global.scss b/styles/global.scss
index 2fa036b..58e0484 100644
--- a/styles/global.scss
+++ b/styles/global.scss
@@ -2,3 +2,16 @@
page {
background-color: #fff;
}
+
+/** 顶部导航栏右侧按钮样式 */
+.public-navbar__right-btn {
+ font-family: PingFang SC, PingFang SC;
+ font-weight: 500;
+ font-size: 28rpx;
+ color: #ffffff;
+ font-style: normal;
+ text-transform: none;
+ background: linear-gradient(0deg, #00d993 0%, #00d9c5 100%);
+ padding: 12rpx 36rpx;
+ border-radius: 8rpx;
+}
diff --git a/utils/dateUtils.js b/utils/dateUtils.js
new file mode 100644
index 0000000..f72ad62
--- /dev/null
+++ b/utils/dateUtils.js
@@ -0,0 +1,25 @@
+/** 日期格式化 YYYY-MM-DD */
+export const formatDate = date => {
+ const d = new Date(date)
+ const year = d.getFullYear()
+ const month = String(d.getMonth() + 1).padStart(2, '0') // 月份从0开始
+ const day = String(d.getDate()).padStart(2, '0')
+ return `${year}-${month}-${day}`
+}
+
+/** 日期格式化:月.日 */
+export const formatMonthDay = date => {
+ // 统一处理为 Date 对象
+ const d = new Date(date)
+
+ // 检查是否是有效日期
+ if (isNaN(d.getTime())) {
+ console.error('Invalid date:', date)
+ return '--.--'
+ }
+
+ const month = String(d.getMonth() + 1).padStart(2, '0') // getMonth() 是 0-11
+ const day = String(d.getDate()).padStart(2, '0')
+
+ return `${month}.${day}`
+}
diff --git a/utils/storage.js b/utils/storage.js
index 43bb563..0655c1e 100644
--- a/utils/storage.js
+++ b/utils/storage.js
@@ -17,7 +17,7 @@ export const removeToken = () => {
/** 保存用户信息 */
export const setUserInfoData = v => {
- return uni.setStorageSync(STORAGE_KEYS.USER, JSON.stringify(v))
+ return uni.setStorageSync(STORAGE_KEYS.USER, JSON.stringify(v))
}
/** 获取用户信息 */
@@ -29,3 +29,21 @@ export const getUserInfoData = () => {
export const removeUserInfoData = () => {
return uni.removeStorageSync(STORAGE_KEYS.USER)
}
+
+/** 保存腾讯 IM */
+export const setSig = v => {
+ return uni.setStorageSync(
+ STORAGE_KEYS.TENCENT_USER_SIG,
+ JSON.stringify(v)
+ )
+}
+
+/** 获取腾讯 IM */
+export const getSig = () => {
+ return uni.getStorageSync(STORAGE_KEYS.TENCENT_USER_SIG) || ''
+}
+
+/** 删除腾讯 IM */
+export const removeSig = () => {
+ return uni.removeStorageSync(STORAGE_KEYS.TENCENT_USER_SIG)
+}