Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
corporate-culture-qd
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王立鹏
corporate-culture-qd
Commits
5d676393
Commit
5d676393
authored
Apr 16, 2026
by
lijiabin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【需求 21402】 feat: 完成私信相关的功能
parent
674789ad
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
49 additions
and
1 deletions
+49
-1
index.ts
src/api/selfMessage/index.ts
+10
-0
types.ts
src/api/selfMessage/types.ts
+10
-0
index.vue
src/views/selfMessage/index.vue
+0
-0
index.vue
src/views/userPage/index.vue
+29
-1
No files found.
src/api/selfMessage/index.ts
View file @
5d676393
...
...
@@ -5,6 +5,7 @@ import type {
ConversationResponseDto
,
GetMessageDetailListDto
,
MessageDetailListItem
,
DeleteMessageDto
,
}
from
'./types'
// 关于私信的相关接口
...
...
@@ -37,3 +38,12 @@ export const getMessageDetailList = (data: GetMessageDetailListDto) => {
data
,
})
}
// 删除某个私信
export
const
deleteMessage
=
(
data
:
DeleteMessageDto
)
=>
{
return
service
.
request
({
url
:
'/api/cultureDialog/deleteMessage'
,
method
:
'POST'
,
data
,
})
}
src/api/selfMessage/types.ts
View file @
5d676393
...
...
@@ -78,3 +78,13 @@ export interface MessageDetailListItem {
is_self
:
boolean
image_list
:
string
[]
}
/** 删除私信:会话或单条消息 */
export
type
DeleteCultureMessageKind
=
'user'
|
'message'
export
interface
DeleteMessageDto
{
/** user:按会话删除;message:按消息删除 */
type
:
DeleteCultureMessageKind
/** 会话 id 列表或消息 id 列表 */
idList
:
number
[]
}
src/views/selfMessage/index.vue
View file @
5d676393
This diff is collapsed.
Click to expand it.
src/views/userPage/index.vue
View file @
5d676393
...
...
@@ -112,6 +112,12 @@
<component
:is=
"item.icon"
/>
</el-icon>
<span
class=
"text-sm"
>
{{
item
.
label
}}
</span>
<el-badge
v-if=
"item.tab === '我的私信'"
:value=
"privateMessageUnreadDisplay > 99 ? '99+' : privateMessageUnreadDisplay"
:hidden=
"privateMessageUnreadDisplay
<
=
0
"
class=
"ml-auto"
/>
</div>
</div>
<!-- 左侧菜单 —— 官方账号菜单 审核操作等 -->
...
...
@@ -164,7 +170,7 @@
<
script
lang=
"tsx"
setup
>
import
{
storeToRefs
}
from
'pinia'
import
EditUserInfo
from
'./components/editUserInfo.vue'
import
{
generateLoginKey
,
hasOfficialAccount
}
from
'@/api'
import
{
generateLoginKey
,
hasOfficialAccount
,
getMessageList
}
from
'@/api'
import
type
{
OfficialAccountItemDto
}
from
'@/api/user/types'
import
{
wxLogin
}
from
'@/utils/wxUtil'
import
type
{
RouteLocationNormalizedLoadedGeneric
}
from
'vue-router'
...
...
@@ -198,6 +204,8 @@ const componentRef = useTemplateRef<{
const
editUserInfoRef
=
useTemplateRef
<
InstanceType
<
typeof
EditUserInfo
>>
(
'editUserInfoRef'
)
const
userStore
=
useUserStore
()
const
{
userInfo
}
=
storeToRefs
(
userStore
)
const
anonymousUnreadCount
=
ref
(
0
)
const
realUnreadCount
=
ref
(
0
)
// 左侧普通用户菜单
const
menuUserItems
=
[
...
...
@@ -281,6 +289,11 @@ const menuOfficialItems = [
const
isReal
=
ref
<
BooleanFlag
>
(
BooleanFlag
.
NO
)
/** 与私信页一致:实名 → realUnreadCount,匿名 → anonymousUnreadCount */
const
privateMessageUnreadDisplay
=
computed
(()
=>
isReal
.
value
===
BooleanFlag
.
YES
?
realUnreadCount
.
value
:
anonymousUnreadCount
.
value
,
)
provide
(
IS_REAL_KEY
,
isReal
)
watch
(
isReal
,
()
=>
{
...
...
@@ -321,6 +334,17 @@ const getIsOfficial = async () => {
officialAccountList
.
value
=
data
}
const
getSelfMessageUnreadCount
=
async
()
=>
{
try
{
const
{
data
}
=
await
getMessageList
({})
anonymousUnreadCount
.
value
=
data
?.
anonymousUnreadCount
??
0
realUnreadCount
.
value
=
data
?.
realUnreadCount
??
0
}
catch
{
anonymousUnreadCount
.
value
=
0
realUnreadCount
.
value
=
0
}
}
const
handleSwitchAccount
=
async
()
=>
{
const
selectedEmail
=
ref
(
''
)
ElMessageBox
({
...
...
@@ -429,6 +453,10 @@ const handleClearCache = async () => {
onMounted
(()
=>
{
getIsOfficial
()
})
onActivated
(()
=>
{
getSelfMessageUnreadCount
()
})
</
script
>
<
style
scoped
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment