-
+
+
+
-
+
- 我:
+
+ {{ iSentIt ? '我' : peerNickname }}:
+
{{ request.applyContent }}
-
+
- 来源
- {{ addSourceLabel }}
+ 来源
+
+ {{ getDictLabel(DICT_TYPE.IM_FRIEND_ADD_SOURCE, request.addSource) }}
+
-
-
-
-
+
- 拒绝理由
+ 拒绝理由
{{ request.handleContent }}
@@ -63,18 +72,8 @@
拒绝
同意
-
-
- 发消息
-
-
- 已拒绝
-
+ 已拒绝
@@ -85,11 +84,12 @@ import { useMessage } from '@/hooks/web/useMessage'
import { ElMessageBox } from 'element-plus'
import UserAvatar from '../../components/user/UserAvatar.vue'
+import UserInfo from '../../components/user/UserInfo.vue'
import { useFriendStore } from '../../store/friendStore'
import { getCurrentUserId } from '../../../utils/storage'
import { ImFriendRequestHandleResult } from '../../../utils/constants'
import { DICT_TYPE, getDictLabel } from '@/utils/dict'
-import type { FriendRequest } from '../../types'
+import type { FriendRequest, User } from '../../types'
defineOptions({ name: 'ImContactFriendRequestDetail' })
@@ -109,6 +109,16 @@ const currentUserId = Number(getCurrentUserId() || 0)
/** 是不是我发起的(fromUserId === me) */
const iSentIt = computed(() => props.request.fromUserId === currentUserId)
+/** 是否「已拒绝」态:模板里多处用到,computed 一次省得到处写枚举比对 */
+const refused = computed(
+ () => props.request.handleResult === ImFriendRequestHandleResult.REFUSED
+)
+
+/** 是否「已通过」态:转走 UserInfo 好友详情入口 */
+const agreed = computed(
+ () => props.request.handleResult === ImFriendRequestHandleResult.AGREED
+)
+
/** 对端的用户编号 / 昵称 / 头像 */
const peerUserId = computed(() =>
iSentIt.value ? props.request.toUserId : props.request.fromUserId
@@ -122,13 +132,12 @@ const peerAvatar = computed(() =>
iSentIt.value ? props.request.toAvatar : props.request.fromAvatar
)
-/** 添加来源文案:走字典,对齐后端 ImFriendAddSourceEnum */
-// TODO @AI:通过 html 里处理掉。不用抽个方法;
-const addSourceLabel = computed(() =>
- props.request.addSource
- ? getDictLabel(DICT_TYPE.IM_FRIEND_ADD_SOURCE, props.request.addSource)
- : ''
-)
+/** 透给 UserInfo 的最小用户信息;UserInfo 内部会按 id 调 getSimpleUser 补齐性别 / 部门 */
+const peerUser = computed
(() => ({
+ id: peerUserId.value,
+ nickname: peerNickname.value,
+ avatar: peerAvatar.value
+}))
const agreeing = ref(false)
const refusing = ref(false)
diff --git a/src/views/im/home/pages/contact/FriendRequestList.vue b/src/views/im/home/pages/contact/FriendRequestList.vue
index 0a3400f2e..0917b02f0 100644
--- a/src/views/im/home/pages/contact/FriendRequestList.vue
+++ b/src/views/im/home/pages/contact/FriendRequestList.vue
@@ -40,7 +40,7 @@
{{ getPeerNickname(request) }}
- {{ statusLabel(request) }}
+ {{ getDictLabel(DICT_TYPE.IM_FRIEND_REQUEST_HANDLE_RESULT, request.handleResult) }}
diff --git a/src/views/im/home/store/friendStore.ts b/src/views/im/home/store/friendStore.ts
index a4c8132a6..6ed0fab6f 100644
--- a/src/views/im/home/store/friendStore.ts
+++ b/src/views/im/home/store/friendStore.ts
@@ -177,6 +177,7 @@ export const useFriendStore = defineStore('imFriendStore', {
request.handleTime = Date.now()
} else {
// 列表过期场景兜底重拉
+ // TODO @AI:是不是只拉这个人?避免拉所有?
await this.fetchFriendRequests()
}
},
@@ -202,6 +203,7 @@ export const useFriendStore = defineStore('imFriendStore', {
/** 按 id 查申请记录 */
findFriendRequest(requestId: number): FriendRequest | undefined {
+ // TODO @AI:request
return this.friendRequests.find((r) => r.id === requestId)
},