Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
foreign
/
customer-service
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
ef633167
authored
Nov 26, 2021
by
zhousil
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
withdraw controll
parent
830cf5ea
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
51 additions
and
25 deletions
components/message.vue
components/message.vue
View file @
ef633167
...
@@ -16,6 +16,30 @@
...
@@ -16,6 +16,30 @@
>
>
{{
isQuestionAnswerMessage
?
""
:
userName
}}
{{
isQuestionAnswerMessage
?
""
:
userName
}}
</div>
</div>
<div
class=
"d-flex"
>
<template
v-if=
"backend && showReadSummary && !isWithdrawMessage"
>
<div
v-if=
"isMyMessage"
class=
"msg-read pos-rel"
>
<span
@
click=
"openReaderList"
class=
"pointer"
:class=
"
{ all: isAllRead }"
>
<template
v-if=
"isAllRead"
>
全部已读
</
template
>
<
template
v-else-if=
"data.read_count > 0"
>
{{
data
.
read_count
}}
人已读
</
template
>
<
template
v-else
>
未读
</
template
>
</span>
<who-read-list
v-if=
"readListVisibility"
@
blur=
"readListVisibility = false"
:msgId=
"data.id"
:class=
"{ offset: readerListOffset }"
/>
</div>
</template>
<div
<div
class=
"content-avatar d-flex align-items-start"
class=
"content-avatar d-flex align-items-start"
:class=
"{
:class=
"{
...
@@ -36,7 +60,8 @@
...
@@ -36,7 +60,8 @@
<avatar
<avatar
v-if=
"!isQuestionAnswerMessage && !isWithdrawMessage"
v-if=
"!isQuestionAnswerMessage && !isWithdrawMessage"
:src=
"
:src=
"
chatRole === 'admin' || chatRole === 'customer-service'
chatRole === 'admin' ||
chatRole === 'customer-service'
? defaultAvatar
? defaultAvatar
: avatar
: avatar
"
"
...
@@ -44,6 +69,7 @@
...
@@ -44,6 +69,7 @@
/>
/>
</div>
</div>
</div>
</div>
</div>
<i
<i
class=
"el-icon-warning text-danger"
class=
"el-icon-warning text-danger"
...
@@ -52,36 +78,17 @@
...
@@ -52,36 +78,17 @@
></i>
></i>
<i
class=
"el-icon-loading"
v-else-if=
"isSendingMessage"
></i>
<i
class=
"el-icon-loading"
v-else-if=
"isSendingMessage"
></i>
<template
v-if=
"backend && showReadSummary && !isWithdrawMessage"
>
<div
v-if=
"isMyMessage"
class=
"msg-read pos-rel"
>
<span
@
click=
"openReaderList"
class=
"pointer"
:class=
"
{ all: isAllRead }"
>
<template
v-if=
"isAllRead"
>
全部已读
</
template
>
<
template
v-else-if=
"data.read_count > 0"
>
{{
data
.
read_count
}}
人已读
</
template
>
<
template
v-else
>
未读
</
template
>
</span>
<who-read-list
v-if=
"readListVisibility"
@
blur=
"readListVisibility = false"
:msgId=
"data.id"
:class=
"{ offset: readerListOffset }"
/>
</div>
</template>
<span
<span
class=
"withdraw"
class=
"withdraw"
v-if=
"
v-if=
"
isMyMessage &&
isMyMessage &&
canWithdraw &&
canWithdraw &&
isWithdraw &&
!isWithdrawMessage &&
!isWithdrawMessage &&
!isQuestionAnswerMessage
!isQuestionAnswerMessage &&
!isChatMember
"
"
@
mouseenter=
"hoverWithdraw"
@
click=
"withdraw"
@
click=
"withdraw"
>
撤回此消息
</span
>
撤回此消息
</span
>
>
...
@@ -147,6 +154,7 @@
...
@@ -147,6 +154,7 @@
import
xim
from
"./../xim"
;
import
xim
from
"./../xim"
;
import
{
ChatRole
}
from
"@/customer-service/model"
;
import
{
ChatRole
}
from
"@/customer-service/model"
;
import
{
getUserMapping
}
from
"../utils/user-info"
;
import
{
getUserMapping
}
from
"../utils/user-info"
;
import
Xim
from
"@/customer-service/xim"
;
const
twoMinutes
=
2
*
60
*
1000
;
const
twoMinutes
=
2
*
60
*
1000
;
...
@@ -202,6 +210,9 @@
...
@@ -202,6 +210,9 @@
@
chatStore
.
Getter
(
ChatStore
.
GETTER_CURRENT_CURRENT_CHAT
)
@
chatStore
.
Getter
(
ChatStore
.
GETTER_CURRENT_CURRENT_CHAT
)
private
readonly
currentChat
!
:
ChatStore
.
GETTER_CURRENT_CURRENT_CHAT
;
private
readonly
currentChat
!
:
ChatStore
.
GETTER_CURRENT_CURRENT_CHAT
;
@
chatStore
.
State
(
ChatStore
.
STATE_CHAT_CURRENT_IS_CHAT_MEMBER
)
private
readonly
isChatMember
!
:
ChatStore
.
STATE_CHAT_CURRENT_IS_CHAT_MEMBER
;
@
Prop
({
type
:
Object
,
default
:
()
=>
Object
.
create
(
null
)
})
@
Prop
({
type
:
Object
,
default
:
()
=>
Object
.
create
(
null
)
})
private
readonly
data
!
:
dto
.
Message
;
private
readonly
data
!
:
dto
.
Message
;
...
@@ -227,6 +238,11 @@
...
@@ -227,6 +238,11 @@
private
readerListOffset
=
false
;
private
readerListOffset
=
false
;
private
defaultMessageHandledStatus
=
dto
.
MessageHandled
.
Default
;
private
defaultMessageHandledStatus
=
dto
.
MessageHandled
.
Default
;
private
isWithdraw
=
true
;
private
overTwoMinutes
=
new
Date
().
valueOf
()
-
this
.
data
.
ts
*
1000
<
twoMinutes
;
private
get
canWithdraw
()
{
private
get
canWithdraw
()
{
if
(
this
.
backend
&&
this
.
data
)
{
if
(
this
.
backend
&&
this
.
data
)
{
return
new
Date
().
valueOf
()
-
this
.
data
.
ts
*
1000
<
twoMinutes
;
return
new
Date
().
valueOf
()
-
this
.
data
.
ts
*
1000
<
twoMinutes
;
...
@@ -297,7 +313,8 @@
...
@@ -297,7 +313,8 @@
private
getFilterUsername
(
name
:
string
)
{
private
getFilterUsername
(
name
:
string
)
{
if
(
if
(
this
.
currentChat
&&
this
.
currentChat
.
catalog
===
"福利宝"
&&
this
.
currentChat
&&
this
.
currentChat
.
catalog
===
"福利宝"
&&
this
.
chatRole
===
"customer-service"
this
.
chatRole
===
"customer-service"
)
{
)
{
return
`采购顾问
${
name
}
`
;
return
`采购顾问
${
name
}
`
;
...
@@ -398,6 +415,10 @@
...
@@ -398,6 +415,10 @@
}
}
private
withdraw
()
{
private
withdraw
()
{
if
(
new
Date
().
valueOf
()
-
this
.
data
.
ts
*
1000
>
twoMinutes
)
{
Xim
.
error
(
"超过两分钟的消息不能撤回"
);
return
;
}
ximInstance
.
withdraw
(
this
.
chatId
!
,
this
.
data
.
id
).
finally
(()
=>
{
ximInstance
.
withdraw
(
this
.
chatId
!
,
this
.
data
.
id
).
finally
(()
=>
{
dbController
dbController
.
removeMessage
(
this
.
chatId
!
,
this
.
data
.
id
)
.
removeMessage
(
this
.
chatId
!
,
this
.
data
.
id
)
...
@@ -408,6 +429,11 @@
...
@@ -408,6 +429,11 @@
});
});
}
}
private
hoverWithdraw
()
{
this
.
isWithdraw
=
new
Date
().
valueOf
()
-
this
.
data
.
ts
*
1000
<
twoMinutes
;
}
private
openReaderList
(
e
:
MouseEvent
)
{
private
openReaderList
(
e
:
MouseEvent
)
{
this
.
readerListOffset
=
e
.
x
<
450
;
this
.
readerListOffset
=
e
.
x
<
450
;
this
.
readListVisibility
=
true
;
this
.
readListVisibility
=
true
;
...
...
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