Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
admin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
0beda6ec
authored
Apr 18, 2023
by
dhb52
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor: 重构MP/autoReply, 拆分组件
parent
39d8ecbf
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
165 additions
and
0 deletions
+165
-0
src/views/mp/autoReply/components/ReplyTable.vue
+118
-0
src/views/mp/autoReply/components/types.ts
+47
-0
src/views/mp/autoReply/index.vue
+0
-0
No files found.
src/views/mp/autoReply/components/ReplyTable.vue
0 → 100644
View file @
0beda6ec
<
template
>
<el-table
v-loading=
"props.loading"
:data=
"props.list"
>
<el-table-column
label=
"请求消息类型"
align=
"center"
prop=
"requestMessageType"
v-if=
"msgType === MsgType.Message"
/>
<el-table-column
label=
"关键词"
align=
"center"
prop=
"requestKeyword"
v-if=
"msgType === MsgType.Keyword"
/>
<el-table-column
label=
"匹配类型"
align=
"center"
prop=
"requestMatch"
v-if=
"msgType === MsgType.Keyword"
>
<template
#
default=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.MP_AUTO_REPLY_REQUEST_MATCH"
:value=
"scope.row.requestMatch"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"回复消息类型"
align=
"center"
>
<
template
#
default=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.MP_MESSAGE_TYPE"
:value=
"scope.row.responseMessageType"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"回复内容"
align=
"center"
>
<
template
#
default=
"scope"
>
<div
v-if=
"scope.row.responseMessageType === 'text'"
>
{{
scope
.
row
.
responseContent
}}
</div>
<div
v-else-if=
"scope.row.responseMessageType === 'voice'"
>
<WxVoicePlayer
v-if=
"scope.row.responseMediaUrl"
:url=
"scope.row.responseMediaUrl"
/>
</div>
<div
v-else-if=
"scope.row.responseMessageType === 'image'"
>
<a
target=
"_blank"
:href=
"scope.row.responseMediaUrl"
>
<img
:src=
"scope.row.responseMediaUrl"
style=
"width: 100px"
/>
</a>
</div>
<div
v-else-if=
"
scope.row.responseMessageType === 'video' ||
scope.row.responseMessageType === 'shortvideo'
"
>
<WxVideoPlayer
v-if=
"scope.row.responseMediaUrl"
:url=
"scope.row.responseMediaUrl"
style=
"margin-top: 10px"
/>
</div>
<div
v-else-if=
"scope.row.responseMessageType === 'news'"
>
<WxNews
:articles=
"scope.row.responseArticles"
/>
</div>
<div
v-else-if=
"scope.row.responseMessageType === 'music'"
>
<WxMusic
:title=
"scope.row.responseTitle"
:description=
"scope.row.responseDescription"
:thumb-media-url=
"scope.row.responseThumbMediaUrl"
:music-url=
"scope.row.responseMusicUrl"
:hq-music-url=
"scope.row.responseHqMusicUrl"
/>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"创建时间"
align=
"center"
prop=
"createTime"
:formatter=
"dateFormatter"
width=
"180"
/>
<el-table-column
label=
"操作"
align=
"center"
>
<
template
#
default=
"scope"
>
<el-button
type=
"primary"
link
@
click=
"emit('on-update', scope.row.id)"
v-hasPermi=
"['mp:auto-reply:update']"
>
修改
</el-button>
<el-button
type=
"danger"
link
@
click=
"emit('on-delete', scope.row.id)"
v-hasPermi=
"['mp:auto-reply:delete']"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
</template>
<
script
setup
lang=
"ts"
>
import
WxVideoPlayer
from
'@/views/mp/components/wx-video-play/main.vue'
import
WxVoicePlayer
from
'@/views/mp/components/wx-voice-play/main.vue'
import
WxMusic
from
'@/views/mp/components/wx-music/main.vue'
import
WxNews
from
'@/views/mp/components/wx-news/main.vue'
import
{
dateFormatter
}
from
'@/utils/formatTime'
import
{
DICT_TYPE
}
from
'@/utils/dict'
import
{
MsgType
}
from
'./types'
const
props
=
defineProps
<
{
loading
:
boolean
list
:
any
[]
msgType
:
MsgType
}
>
()
const
emit
=
defineEmits
<
{
(
e
:
'on-update'
,
v
:
number
)
(
e
:
'on-delete'
,
v
:
number
)
}
>
()
</
script
>
<
style
scoped
></
style
>
src/views/mp/autoReply/components/types.ts
0 → 100644
View file @
0beda6ec
// 消息类型(Follow: 关注时回复;Message: 消息回复;Keyword: 关键词回复)
// 作为tab.name,enum的数字不能随意修改,与api参数相关
export
enum
MsgType
{
Follow
=
1
,
Message
=
2
,
Keyword
=
3
}
type
ReplyType
=
'text'
|
'image'
|
'voice'
|
'video'
|
'shortvideo'
|
'location'
|
'link'
export
interface
ReplyForm
{
// relation:
id
?:
number
accountId
?:
number
type
?:
MsgType
// request:
requestMessageType
?:
ReplyType
requestMatch
?:
number
requestKeyword
?:
string
// response:
responseMessageType
?:
ReplyType
responseContent
?:
string
responseMediaId
?:
number
responseMediaUrl
?:
string
responseTitle
?:
string
responseDescription
?:
number
responseThumbMediaId
?:
string
responseThumbMediaUrl
?:
string
responseArticles
?:
any
[]
responseMusicUrl
?:
string
responseHqMusicUrl
?:
string
}
export
interface
ObjData
{
type
:
ReplyType
accountId
?:
number
content
?:
string
mediaId
?:
number
url
?:
string
title
?:
string
description
?:
string
thumbMediaId
?:
number
thumbMediaUrl
?:
string
articles
?:
any
[]
musicUrl
?:
string
hqMusicUrl
?:
string
}
src/views/mp/autoReply/index.vue
View file @
0beda6ec
This diff is collapsed.
Click to expand it.
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