Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
F
frontend
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Redmine
Redmine
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
other-project
frontend
Commits
26154ae9
Commit
26154ae9
authored
Feb 06, 2020
by
liuyang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
完成微信相关功能
parent
72799552
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
38 additions
and
1450 deletions
+38
-1450
article-add-or-update.vue
src/views/modules/api/wx/article-add-or-update.vue
+0
-0
article.vue
src/views/modules/api/wx/article.vue
+0
-201
material-file-add-or-update.vue
src/views/modules/api/wx/material-file-add-or-update.vue
+5
-5
material-file.vue
src/views/modules/api/wx/material-file.vue
+11
-13
material-news.vue
src/views/modules/api/wx/material-news.vue
+9
-13
msgreplyrule-add-or-update.vue
src/views/modules/api/wx/msgreplyrule-add-or-update.vue
+0
-206
msgreplyrule.vue
src/views/modules/api/wx/msgreplyrule.vue
+0
-214
msgtemplate-add-or-update.vue
src/views/modules/api/wx/msgtemplate-add-or-update.vue
+0
-129
msgtemplate.vue
src/views/modules/api/wx/msgtemplate.vue
+0
-184
templatemsglog.vue
src/views/modules/api/wx/templatemsglog.vue
+0
-178
wx-menu-button-editor.vue
src/views/modules/api/wx/wx-menu-button-editor.vue
+2
-2
wx-menu.vue
src/views/modules/api/wx/wx-menu.vue
+11
-18
wxqrcode-add-or-update.vue
src/views/modules/api/wx/wxqrcode-add-or-update.vue
+0
-93
wxqrcode.vue
src/views/modules/api/wx/wxqrcode.vue
+0
-194
No files found.
src/views/modules/api/wx/article-add-or-update.vue
deleted
100644 → 0
View file @
72799552
This diff is collapsed.
Click to expand it.
src/views/modules/api/wx/article.vue
deleted
100644 → 0
View file @
72799552
<
template
>
<div
class=
"mod-config"
>
<el-form
:inline=
"true"
:model=
"dataForm"
@
keyup
.
enter
.
native=
"getDataList()"
>
<el-form-item>
<el-select
v-model=
"dataForm.type"
placeholder=
"选择文章类型"
>
<el-option
v-for=
"(name,key) in ARTICLE_TYPES"
:key=
"name"
:label=
"name"
:value=
"key"
allow-create
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-input
v-model=
"dataForm.title"
placeholder=
"标题"
clearable
></el-input>
</el-form-item>
<el-form-item>
<el-button
@
click=
"pageIndex=1;getDataList()"
>
查询
</el-button>
<el-button
v-if=
"isAuth('wx:article:save')"
type=
"primary"
@
click=
"addOrUpdateHandle()"
>
新增
</el-button>
<el-button
v-if=
"isAuth('wx:article:delete')"
type=
"danger"
@
click=
"deleteHandle()"
:disabled=
"dataListSelections.length
<
=
0
"
>
批量删除
</el-button>
</el-form-item>
</el-form>
<el-table
:data=
"dataList"
border
v-loading=
"dataListLoading"
@
selection-change=
"selectionChangeHandle"
style=
"width: 100%;"
>
<el-table-column
type=
"selection"
header-align=
"center"
align=
"center"
width=
"50"
>
</el-table-column>
<el-table-column
prop=
"id"
header-align=
"center"
align=
"center"
label=
"ID"
>
</el-table-column>
<el-table-column
prop=
"type"
header-align=
"center"
align=
"center"
label=
"文章类型"
>
</el-table-column>
<el-table-column
prop=
"title"
header-align=
"center"
align=
"center"
show-overflow-tooltip
label=
"标题"
>
<a
:href=
"scope.row.targetLink"
slot-scope=
"scope"
>
{{
scope
.
row
.
title
}}
</a>
</el-table-column>
<el-table-column
prop=
"category"
header-align=
"center"
align=
"center"
label=
"一级分类"
>
</el-table-column>
<el-table-column
prop=
"subCategory"
header-align=
"center"
align=
"center"
label=
"二级分类"
>
</el-table-column>
<el-table-column
fixed=
"right"
header-align=
"center"
align=
"center"
width=
"150"
label=
"操作"
>
<template
slot-scope=
"scope"
>
<el-button
type=
"text"
size=
"small"
@
click=
"addOrUpdateHandle(scope.row.id)"
>
修改
</el-button>
<el-button
type=
"text"
size=
"small"
@
click=
"deleteHandle(scope.row.id)"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<el-pagination
@
size-change=
"sizeChangeHandle"
@
current-change=
"currentChangeHandle"
:current-page=
"pageIndex"
:page-sizes=
"[10, 20, 50, 100]"
:page-size=
"pageSize"
:total=
"totalCount"
layout=
"total, sizes, prev, pager, next, jumper"
>
</el-pagination>
</div>
</template>
<
script
>
export
default
{
data
()
{
return
{
dataForm
:
{
title
:
''
,
type
:
''
},
dataList
:
[],
pageIndex
:
1
,
pageSize
:
10
,
totalCount
:
0
,
dataListLoading
:
false
,
dataListSelections
:
[],
addOrUpdateVisible
:
false
}
},
computed
:{
ARTICLE_TYPES
:{
get
(){
return
this
.
$store
.
state
.
article
.
ARTICLE_TYPES
}
}
},
components
:
{
},
activated
()
{
this
.
getDataList
()
console
.
log
(
this
.
ARTICLE_TYPES
)
},
methods
:
{
// 获取数据列表
getDataList
()
{
this
.
dataListLoading
=
true
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/article/list'
),
method
:
'get'
,
params
:
this
.
$http
.
adornParams
({
'page'
:
this
.
pageIndex
,
'limit'
:
this
.
pageSize
,
'title'
:
this
.
dataForm
.
title
,
'type'
:
this
.
dataForm
.
type
,
'sidx'
:
'id'
,
'order'
:
'desc'
})
}).
then
(({
data
})
=>
{
if
(
data
&&
data
.
code
===
200
)
{
this
.
dataList
=
data
.
page
.
list
this
.
totalCount
=
data
.
page
.
totalCount
}
else
{
this
.
dataList
=
[]
this
.
totalCount
=
0
}
this
.
dataListLoading
=
false
})
},
// 每页数
sizeChangeHandle
(
val
)
{
this
.
pageSize
=
val
this
.
pageIndex
=
1
this
.
getDataList
()
},
// 当前页
currentChangeHandle
(
val
)
{
this
.
pageIndex
=
val
this
.
getDataList
()
},
// 多选
selectionChangeHandle
(
val
)
{
this
.
dataListSelections
=
val
},
// 新增 / 修改
addOrUpdateHandle
(
id
)
{
// this.addOrUpdateVisible = true
// this.$nextTick(() => {
// this.$refs.addOrUpdate.init(id)
// })
id
=
id
||
''
this
.
$router
.
push
(
'/article-add-or-update?id='
+
id
)
},
// 删除
deleteHandle
(
id
)
{
var
ids
=
id
?
[
id
]
:
this
.
dataListSelections
.
map
(
item
=>
{
return
item
.
id
})
this
.
$confirm
(
`确定对[id=
${
ids
.
join
(
','
)}
]进行[
${
id
?
'删除'
:
'批量删除'
}
]操作?`
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/article/delete'
),
method
:
'post'
,
data
:
this
.
$http
.
adornData
(
ids
,
false
)
}).
then
(({
data
})
=>
{
if
(
data
&&
data
.
code
===
200
)
{
this
.
$message
({
message
:
'操作成功'
,
type
:
'success'
,
duration
:
1500
,
onClose
:
()
=>
{
this
.
getDataList
()
}
})
}
else
{
this
.
$message
.
error
(
data
.
msg
)
}
})
})
},
articleTypeFormat
(
row
,
column
,
cellValue
)
{
return
this
.
ARTICLE_TYPES
[
cellValue
];
}
}
}
</
script
>
src/views/modules/api/wx/material-file-add-or-update.vue
View file @
26154ae9
...
...
@@ -66,19 +66,19 @@
dataFormSubmit
()
{
this
.
$refs
[
'dataForm'
].
validate
((
valid
)
=>
{
if
(
valid
)
{
console
.
log
(
this
.
dataForm
)
//
console.log(this.dataForm)
let
form
=
new
FormData
();
form
.
append
(
'mediaId'
,
this
.
dataForm
.
mediaId
||
''
)
form
.
append
(
'file'
,
this
.
dataForm
.
file
)
form
.
append
(
'fileName'
,
this
.
dataForm
.
fileName
)
form
.
append
(
'mediaType'
,
this
.
dataForm
.
mediaType
)
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
`/manage/wxAssets/materialFileUpload`
),
url
:
this
.
$http
.
adornUrl
(
`/
api/wx/
manage/wxAssets/materialFileUpload`
),
method
:
'post'
,
data
:
form
,
headers
:
{
'Content-Type'
:
'multipart/form-data'
}
}).
then
((
{
data
}
)
=>
{
if
(
data
&&
data
.
code
===
200
)
{
}).
then
((
data
)
=>
{
if
(
data
&&
data
.
data
==
'ok'
)
{
this
.
$message
({
message
:
'操作成功'
,
type
:
'success'
,
...
...
@@ -89,7 +89,7 @@
}
})
}
else
{
this
.
$message
.
error
(
data
.
m
sg
)
this
.
$message
.
error
(
data
.
m
essage
)
}
})
}
...
...
src/views/modules/api/wx/material-file.vue
View file @
26154ae9
...
...
@@ -43,7 +43,7 @@
width=
"150"
label=
"操作"
>
<template
slot-scope=
"scope"
>
<
el-button
type=
"text"
size=
"small"
@
click=
"addOrUpdateHandle(scope.row.mediaId)"
>
修改
</el-button
>
<
!--
<el-button
type=
"text"
size=
"small"
@
click=
"addOrUpdateHandle(scope.row.mediaId)"
>
修改
</el-button>
--
>
<el-button
type=
"text"
size=
"small"
@
click=
"deleteHandle(scope.row.mediaId)"
>
删除
</el-button>
</
template
>
</el-table-column>
...
...
@@ -83,20 +83,18 @@ export default {
materialFileBatchGet
(){
this
.
dataListLoading
=
true
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/wxAssets/materialFileBatchGet'
),
url
:
this
.
$http
.
adornUrl
(
'/
api/wx/
manage/wxAssets/materialFileBatchGet'
),
params
:
this
.
$http
.
adornParams
({
'page'
:
this
.
pageIndex
})
}).
then
(({
data
})
=>
{
}).
then
((
data
)
=>
{
// console.log(data)
this
.
dataListLoading
=
false
if
(
data
&&
data
.
code
==
200
){
if
(
data
&&
data
.
data
.
message
){
this
.
$message
.
error
(
data
.
data
.
message
)
}
else
{
this
.
dataList
=
data
.
data
.
items
this
.
totalCount
=
data
.
data
.
totalCount
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
data
.
msg
});
}
})
},
...
...
@@ -115,11 +113,11 @@ export default {
type
:
'warning'
}).
then
(()
=>
{
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/wxAssets/materialDelete'
),
url
:
this
.
$http
.
adornUrl
(
'/
api/wx/
manage/wxAssets/materialDelete'
),
method
:
'post'
,
data
:
{
mediaId
:
id
}
}).
then
((
{
data
}
)
=>
{
if
(
data
&&
data
.
code
===
200
)
{
}).
then
((
data
)
=>
{
if
(
data
&&
data
.
data
==
true
)
{
this
.
$message
({
message
:
'操作成功'
,
type
:
'success'
,
...
...
@@ -129,7 +127,7 @@ export default {
}
})
}
else
{
this
.
$message
.
error
(
data
.
msg
)
this
.
$message
.
error
(
data
.
message
)
}
})
})
...
...
src/views/modules/api/wx/material-news.vue
View file @
26154ae9
...
...
@@ -76,21 +76,16 @@ export default {
materialNewsBatchGet
(){
this
.
dataListLoading
=
true
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/wxAssets/materialNewsBatchGet'
),
url
:
this
.
$http
.
adornUrl
(
'/
api/wx/
manage/wxAssets/materialNewsBatchGet'
),
params
:
this
.
$http
.
adornParams
({
'page'
:
this
.
pageIndex
})
}).
then
((
{
data
}
)
=>
{
}).
then
((
data
)
=>
{
this
.
dataListLoading
=
false
if
(
data
.
code
==
200
){
this
.
dataList
=
data
.
data
.
items
this
.
totalCount
=
data
.
data
.
totalCount
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
data
.
msg
});
}
})
},
loadTree
(
tree
,
treeNode
,
resolve
){
...
...
@@ -105,11 +100,12 @@ export default {
type
:
'warning'
}).
then
(()
=>
{
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/wxAssets/materialDelete'
),
url
:
this
.
$http
.
adornUrl
(
'/
api/wx/
manage/wxAssets/materialDelete'
),
method
:
'post'
,
data
:
{
mediaId
:
id
}
}).
then
(({
data
})
=>
{
if
(
data
&&
data
.
code
===
200
)
{
}).
then
((
data
)
=>
{
console
.
log
(
data
)
if
(
data
&&
data
.
data
===
true
)
{
this
.
$message
({
message
:
'操作成功'
,
type
:
'success'
,
...
...
@@ -119,7 +115,7 @@ export default {
}
})
}
else
{
this
.
$message
.
error
(
data
.
msg
)
this
.
$message
.
error
(
data
.
data
.
message
)
}
})
})
...
...
src/views/modules/api/wx/msgreplyrule-add-or-update.vue
deleted
100644 → 0
View file @
72799552
<
template
>
<el-dialog
:title=
"!dataForm.id ? '新增' : '修改'"
:close-on-click-modal=
"false"
:visible
.
sync=
"visible"
>
<el-form
:model=
"dataForm"
:rules=
"dataRule"
ref=
"dataForm"
label-width=
"80px"
>
<el-form-item
label=
"规则名称"
prop=
"ruleName"
>
<el-input
v-model=
"dataForm.ruleName"
placeholder=
"规则名称"
></el-input>
</el-form-item>
<el-form-item
label=
"匹配词"
prop=
"matchValue"
>
<tags-editor
v-model=
"dataForm.matchValue"
></tags-editor>
</el-form-item>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
label=
"回复类型"
prop=
"replyType"
>
<el-select
v-model=
"dataForm.replyType"
@
change=
"onReplyTypeChange"
>
<el-option
v-for=
"(name,key) in KefuMsgType"
:key=
"key"
:value=
"key"
:label=
"name"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"是否启用"
prop=
"status"
>
<el-switch
v-model=
"dataForm.status"
:active-value=
"1"
:inactive-value=
"0"
></el-switch>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
label=
"生效时间"
prop=
"effectTimeStart"
>
<el-time-picker
v-model=
"dataForm.effectTimeStart"
value-format=
"HH:mm:ss"
></el-time-picker>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"失效时间"
prop=
"effectTimeEnd"
>
<el-time-picker
v-model=
"dataForm.effectTimeEnd"
value-format=
"HH:mm:ss"
></el-time-picker>
</el-form-item>
</el-col>
</el-row>
<el-form-item
label=
"回复内容"
prop=
"replyContent"
>
<el-input
v-model=
"dataForm.replyContent"
type=
"textarea"
:rows=
"5"
placeholder=
"文本、图文ID、media_id、json配置"
></el-input>
<el-button
type=
"text"
v-show=
"'text'==dataForm.replyType"
@
click=
"addLink"
>
插入链接
</el-button>
</el-form-item>
<el-form-item
label=
"备注说明"
prop=
"desc"
>
<el-input
v-model=
"dataForm.desc"
placeholder=
"备注说明"
></el-input>
</el-form-item>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"visible = false"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"dataFormSubmit()"
>
确定
</el-button>
</span>
</el-dialog>
</
template
>
<
script
>
export
default
{
components
:{
tagsEditor
:()
=>
import
(
'@/components/tags-editor'
)
},
data
()
{
return
{
visible
:
false
,
dataForm
:
{
ruleId
:
0
,
ruleName
:
""
,
matchValue
:
""
,
replyType
:
'text'
,
replyContent
:
""
,
status
:
1
,
desc
:
""
,
effectTimeStart
:
"00:00:00"
,
effectTimeEnd
:
"23:59:59"
},
dataRule
:
{
ruleName
:
[
{
required
:
true
,
message
:
"规则名称不能为空"
,
trigger
:
"blur"
}
],
matchValue
:
[
{
required
:
true
,
message
:
"匹配的关键词、事件等不能为空"
,
trigger
:
"blur"
}
],
replyType
:
[
{
required
:
true
,
message
:
"回复类型(1:文本2:图文3媒体)不能为空"
,
trigger
:
"blur"
}
],
replyContent
:
[
{
required
:
true
,
message
:
"回复内容不能为空"
,
trigger
:
"blur"
}
],
status
:
[
{
required
:
true
,
message
:
"是否有效不能为空"
,
trigger
:
"blur"
}
],
effectTimeStart
:
[
{
required
:
true
,
message
:
"生效起始时间不能为空"
,
trigger
:
"blur"
}
],
effectTimeEnd
:
[
{
required
:
true
,
message
:
"生效结束时间不能为空"
,
trigger
:
"blur"
}
]
}
};
},
computed
:{
KefuMsgType
:{
get
(){
return
this
.
$store
.
state
.
message
.
KefuMsgType
}
}
},
methods
:
{
init
(
id
)
{
this
.
dataForm
.
ruleId
=
id
||
0
;
this
.
visible
=
true
;
this
.
$nextTick
(()
=>
{
this
.
$refs
[
"dataForm"
].
resetFields
();
if
(
this
.
dataForm
.
ruleId
)
{
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
`/manage/msgreplyrule/info/
${
this
.
dataForm
.
ruleId
}
`
),
method
:
"get"
,
params
:
this
.
$http
.
adornParams
()
}).
then
(({
data
})
=>
{
if
(
data
&&
data
.
code
===
200
)
{
this
.
dataForm
.
ruleName
=
data
.
msgReplyRule
.
ruleName
;
this
.
dataForm
.
matchValue
=
data
.
msgReplyRule
.
matchValue
;
this
.
dataForm
.
replyType
=
data
.
msgReplyRule
.
replyType
;
this
.
dataForm
.
replyContent
=
data
.
msgReplyRule
.
replyContent
;
this
.
dataForm
.
status
=
data
.
msgReplyRule
.
status
;
this
.
dataForm
.
desc
=
data
.
msgReplyRule
.
desc
;
this
.
dataForm
.
effectTimeStart
=
data
.
msgReplyRule
.
effectTimeStart
;
this
.
dataForm
.
effectTimeEnd
=
data
.
msgReplyRule
.
effectTimeEnd
;
}
});
}
});
},
// 表单提交
dataFormSubmit
()
{
this
.
$refs
[
"dataForm"
].
validate
(
valid
=>
{
if
(
valid
)
{
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
`/manage/msgreplyrule/
${
!
this
.
dataForm
.
ruleId
?
"save"
:
"update"
}
`
),
method
:
"post"
,
data
:
this
.
$http
.
adornData
({
ruleId
:
this
.
dataForm
.
ruleId
||
undefined
,
ruleName
:
this
.
dataForm
.
ruleName
,
matchValue
:
this
.
dataForm
.
matchValue
,
replyType
:
this
.
dataForm
.
replyType
,
replyContent
:
this
.
dataForm
.
replyContent
,
status
:
this
.
dataForm
.
status
,
desc
:
this
.
dataForm
.
desc
,
effectTimeStart
:
this
.
dataForm
.
effectTimeStart
,
effectTimeEnd
:
this
.
dataForm
.
effectTimeEnd
})
}).
then
(({
data
})
=>
{
if
(
data
&&
data
.
code
===
200
)
{
this
.
$message
({
message
:
"操作成功"
,
type
:
"success"
,
duration
:
1500
,
onClose
:
()
=>
{
this
.
visible
=
false
;
this
.
$emit
(
"refreshDataList"
);
}
});
}
else
{
this
.
$message
.
error
(
data
.
msg
);
}
});
}
});
},
addLink
(){
this
.
dataForm
.
replyContent
+=
'<a href="链接地址">链接文字</a>'
},
onReplyTypeChange
(
value
){
if
(
"miniprogrampage"
==
value
){
let
demo
=
{
title
:
"标题"
,
appid
:
"小程序APPID"
,
pagepath
:
"页面地址"
,
thumb_media_id
:
"缩略图media_id"
};
this
.
dataForm
.
replyContent
=
JSON
.
stringify
(
demo
,
null
,
4
)
}
else
if
(
"music"
==
value
){
let
demo
=
{
musicurl
:
"音乐链接"
,
hqmusicurl
:
"高品质链接"
,
title
:
"标题"
,
description
:
"描述"
,
thumb_media_id
:
"缩略图media_id"
}
this
.
dataForm
.
replyContent
=
JSON
.
stringify
(
demo
,
null
,
4
)
}
else
if
(
"msgmenu"
==
value
){
let
demo
=
{
head_content
:
"开头文字"
,
list
:
[{
id
:
"菜单1ID"
,
content
:
"菜单2内容"
},{
id
:
"菜单2ID"
,
content
:
"菜单2内容"
},{
id
:
"菜单nID"
,
content
:
"菜单n内容"
}],
tail_content
:
"结尾文字"
}
this
.
dataForm
.
replyContent
=
JSON
.
stringify
(
demo
,
null
,
4
)
}
else
{
this
.
dataForm
.
replyContent
=
''
}
}
}
};
</
script
>
src/views/modules/api/wx/msgreplyrule.vue
deleted
100644 → 0
View file @
72799552
<
template
>
<div
class=
"mod-config"
>
<el-form
:inline=
"true"
:model=
"dataForm"
@
keyup
.
enter
.
native=
"getDataList()"
>
<el-form-item>
<el-input
v-model=
"dataForm.matchValue"
placeholder=
"匹配关键词"
clearable
></el-input>
</el-form-item>
<el-form-item>
<el-button
@
click=
"getDataList()"
>
查询
</el-button>
<el-button
v-if=
"isAuth('wx:msgreplyrule:save')"
type=
"primary"
@
click=
"addOrUpdateHandle()"
>
新增
</el-button>
<el-button
v-if=
"isAuth('wx:msgreplyrule:delete')"
type=
"danger"
@
click=
"deleteHandle()"
:disabled=
"dataListSelections.length
<
=
0
"
>
批量删除
</el-button>
</el-form-item>
</el-form>
<el-table
:data=
"dataList"
border
type=
"expand"
v-loading=
"dataListLoading"
@
selection-change=
"selectionChangeHandle"
style=
"width: 100%;"
>
<el-table-column
type=
"expand"
>
<template
slot-scope=
"props"
>
<el-form
label-position=
"left"
inline
class=
"demo-table-expand"
>
<el-form-item
label=
"ID"
>
<span>
{{
props
.
row
.
ruleId
}}
</span>
</el-form-item>
<el-form-item
label=
"是否有效"
>
<span>
{{
props
.
row
.
status
}}
</span>
</el-form-item>
<el-form-item
label=
"备注说明"
>
<span>
{{
props
.
row
.
desc
}}
</span>
</el-form-item>
<el-form-item
label=
"生效时间"
>
<span>
{{
props
.
row
.
effectTimeStart
}}
</span>
</el-form-item>
<el-form-item
label=
"失效时间"
>
<span>
{{
props
.
row
.
effectTimeEnd
}}
</span>
</el-form-item>
</el-form>
</
template
>
</el-table-column>
<el-table-column
type=
"selection"
header-align=
"center"
align=
"center"
width=
"50"
>
</el-table-column>
<el-table-column
prop=
"ruleName"
header-align=
"center"
align=
"center"
show-overflow-tooltip
label=
"规则名称"
>
</el-table-column>
<el-table-column
prop=
"matchValue"
header-align=
"center"
align=
"center"
show-overflow-tooltip
label=
"匹配关键词"
>
</el-table-column>
<el-table-column
prop=
"replyType"
header-align=
"center"
align=
"center"
:formatter=
"replyTypeFormat"
label=
"消息类型"
>
</el-table-column>
<el-table-column
prop=
"replyContent"
header-align=
"center"
align=
"center"
show-overflow-tooltip
label=
"回复内容"
>
</el-table-column>
<el-table-column
fixed=
"right"
header-align=
"center"
align=
"center"
width=
"150"
label=
"操作"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"text"
size=
"small"
@
click=
"addOrUpdateHandle(scope.row.ruleId)"
>
修改
</el-button>
<el-button
type=
"text"
size=
"small"
@
click=
"deleteHandle(scope.row.ruleId)"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<el-pagination
@
size-change=
"sizeChangeHandle"
@
current-change=
"currentChangeHandle"
:current-page=
"pageIndex"
:page-sizes=
"[10, 20, 50, 100]"
:page-size=
"pageSize"
:total=
"totalCount"
layout=
"total, sizes, prev, pager, next, jumper"
>
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update
v-if=
"addOrUpdateVisible"
ref=
"addOrUpdate"
@
refreshDataList=
"getDataList"
></add-or-update>
</div>
</template>
<
script
>
import
AddOrUpdate
from
'./msgreplyrule-add-or-update'
export
default
{
components
:
{
AddOrUpdate
},
data
()
{
return
{
dataForm
:
{
matchValue
:
''
},
dataList
:
[],
pageIndex
:
1
,
pageSize
:
10
,
totalCount
:
0
,
dataListLoading
:
false
,
dataListSelections
:
[],
addOrUpdateVisible
:
false
}
},
computed
:{
KefuMsgType
:{
get
(){
return
this
.
$store
.
state
.
message
.
KefuMsgType
}
}
},
activated
()
{
this
.
getDataList
()
},
methods
:
{
// 获取数据列表
getDataList
()
{
this
.
dataListLoading
=
true
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/msgreplyrule/list'
),
method
:
'get'
,
params
:
this
.
$http
.
adornParams
({
'page'
:
this
.
pageIndex
,
'limit'
:
this
.
pageSize
,
'matchValue'
:
this
.
dataForm
.
matchValue
,
'sidx'
:
'rule_id'
,
'order'
:
'desc'
})
}).
then
(({
data
})
=>
{
if
(
data
&&
data
.
code
===
200
)
{
this
.
dataList
=
data
.
page
.
list
this
.
totalCount
=
data
.
page
.
totalCount
}
else
{
this
.
dataList
=
[]
this
.
totalCount
=
0
}
this
.
dataListLoading
=
false
})
},
// 每页数
sizeChangeHandle
(
val
)
{
this
.
pageSize
=
val
this
.
pageIndex
=
1
this
.
getDataList
()
},
// 当前页
currentChangeHandle
(
val
)
{
this
.
pageIndex
=
val
this
.
getDataList
()
},
// 多选
selectionChangeHandle
(
val
)
{
this
.
dataListSelections
=
val
},
// 新增 / 修改
addOrUpdateHandle
(
id
)
{
this
.
addOrUpdateVisible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
addOrUpdate
.
init
(
id
)
})
},
// 删除
deleteHandle
(
id
)
{
var
ids
=
id
?
[
id
]
:
this
.
dataListSelections
.
map
(
item
=>
{
return
item
.
ruleId
})
this
.
$confirm
(
`确定对[id=
${
ids
.
join
(
','
)}
]进行[
${
id
?
'删除'
:
'批量删除'
}
]操作?`
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/msgreplyrule/delete'
),
method
:
'post'
,
data
:
this
.
$http
.
adornData
(
ids
,
false
)
}).
then
(({
data
})
=>
{
if
(
data
&&
data
.
code
===
200
)
{
this
.
$message
({
message
:
'操作成功'
,
type
:
'success'
,
duration
:
1500
,
onClose
:
()
=>
{
this
.
getDataList
()
}
})
}
else
{
this
.
$message
.
error
(
data
.
msg
)
}
})
})
},
replyTypeFormat
(
row
,
column
,
cellValue
)
{
return
this
.
KefuMsgType
[
cellValue
];
}
}
}
</
script
>
src/views/modules/api/wx/msgtemplate-add-or-update.vue
deleted
100644 → 0
View file @
72799552
<
template
>
<el-dialog
:title=
"!dataForm.id ? '新增' : '修改'"
:close-on-click-modal=
"false"
:visible
.
sync=
"visible"
>
<el-form
:model=
"dataForm"
:rules=
"dataRule"
ref=
"dataForm"
label-width=
"80px"
>
<el-form-item
label=
"标题"
prop=
"title"
>
<el-input
v-model=
"dataForm.title"
placeholder=
"标题"
></el-input>
</el-form-item>
<el-form-item
label=
"内容"
prop=
"data"
>
<el-input
v-model=
"dataForm.data"
placeholder=
"内容"
></el-input>
</el-form-item>
<el-form-item
label=
"链接"
prop=
"url"
>
<el-input
v-model=
"dataForm.url"
placeholder=
"链接"
></el-input>
</el-form-item>
<el-form-item
label=
"颜色"
prop=
"color"
>
<el-input
v-model=
"dataForm.color"
placeholder=
"颜色"
></el-input>
</el-form-item>
<el-form-item
label=
"是否有效"
prop=
"status"
>
<el-input
v-model=
"dataForm.status"
placeholder=
"是否有效"
></el-input>
</el-form-item>
<el-form-item
label=
"模版名称"
prop=
"name"
>
<el-input
v-model=
"dataForm.name"
placeholder=
"模版名称"
></el-input>
</el-form-item>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"visible = false"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"dataFormSubmit()"
>
确定
</el-button>
</span>
</el-dialog>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
visible
:
false
,
dataForm
:
{
templateId
:
0
,
title
:
''
,
data
:
''
,
url
:
''
,
color
:
''
,
status
:
''
,
name
:
''
},
dataRule
:
{
title
:
[
{
required
:
true
,
message
:
'标题不能为空'
,
trigger
:
'blur'
}
],
data
:
[
{
required
:
true
,
message
:
'内容不能为空'
,
trigger
:
'blur'
}
],
url
:
[
{
required
:
true
,
message
:
'链接不能为空'
,
trigger
:
'blur'
}
],
color
:
[
{
required
:
true
,
message
:
'颜色不能为空'
,
trigger
:
'blur'
}
],
status
:
[
{
required
:
true
,
message
:
'是否有效不能为空'
,
trigger
:
'blur'
}
],
name
:
[
{
required
:
true
,
message
:
'模版名称不能为空'
,
trigger
:
'blur'
}
]
}
}
},
methods
:
{
init
(
id
)
{
this
.
dataForm
.
templateId
=
id
||
0
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
[
'dataForm'
].
resetFields
()
if
(
this
.
dataForm
.
templateId
)
{
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
`/manage/msgtemplate/info/
${
this
.
dataForm
.
templateId
}
`
),
method
:
'get'
,
params
:
this
.
$http
.
adornParams
()
}).
then
(({
data
})
=>
{
if
(
data
&&
data
.
code
===
200
)
{
this
.
dataForm
.
title
=
data
.
msgTemplate
.
title
this
.
dataForm
.
data
=
data
.
msgTemplate
.
data
this
.
dataForm
.
url
=
data
.
msgTemplate
.
url
this
.
dataForm
.
color
=
data
.
msgTemplate
.
color
this
.
dataForm
.
status
=
data
.
msgTemplate
.
status
this
.
dataForm
.
name
=
data
.
msgTemplate
.
name
}
})
}
})
},
// 表单提交
dataFormSubmit
()
{
this
.
$refs
[
'dataForm'
].
validate
((
valid
)
=>
{
if
(
valid
)
{
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
`/manage/msgtemplate/
${
!
this
.
dataForm
.
templateId
?
'save'
:
'update'
}
`
),
method
:
'post'
,
data
:
this
.
$http
.
adornData
({
'templateId'
:
this
.
dataForm
.
templateId
||
undefined
,
'title'
:
this
.
dataForm
.
title
,
'data'
:
this
.
dataForm
.
data
,
'url'
:
this
.
dataForm
.
url
,
'color'
:
this
.
dataForm
.
color
,
'status'
:
this
.
dataForm
.
status
,
'name'
:
this
.
dataForm
.
name
})
}).
then
(({
data
})
=>
{
if
(
data
&&
data
.
code
===
200
)
{
this
.
$message
({
message
:
'操作成功'
,
type
:
'success'
,
duration
:
1500
,
onClose
:
()
=>
{
this
.
visible
=
false
this
.
$emit
(
'refreshDataList'
)
}
})
}
else
{
this
.
$message
.
error
(
data
.
msg
)
}
})
}
})
}
}
}
</
script
>
src/views/modules/api/wx/msgtemplate.vue
deleted
100644 → 0
View file @
72799552
<
template
>
<div
class=
"mod-config"
>
<el-form
:inline=
"true"
:model=
"dataForm"
@
keyup
.
enter
.
native=
"getDataList()"
>
<el-form-item>
<el-input
v-model=
"dataForm.key"
placeholder=
"参数名"
clearable
></el-input>
</el-form-item>
<el-form-item>
<el-button
@
click=
"getDataList()"
>
查询
</el-button>
<el-button
v-if=
"isAuth('wx:msgtemplate:save')"
type=
"primary"
@
click=
"addOrUpdateHandle()"
>
新增
</el-button>
<el-button
v-if=
"isAuth('wx:msgtemplate:delete')"
type=
"danger"
@
click=
"deleteHandle()"
:disabled=
"dataListSelections.length
<
=
0
"
>
批量删除
</el-button>
</el-form-item>
</el-form>
<el-table
:data=
"dataList"
border
v-loading=
"dataListLoading"
@
selection-change=
"selectionChangeHandle"
style=
"width: 100%;"
>
<el-table-column
type=
"selection"
header-align=
"center"
align=
"center"
width=
"50"
>
</el-table-column>
<el-table-column
prop=
"templateId"
header-align=
"center"
align=
"center"
show-overflow-tooltip
label=
"ID"
>
</el-table-column>
<el-table-column
prop=
"title"
header-align=
"center"
align=
"center"
label=
"标题"
>
<a
:href=
"scope.row.url"
slot-scope=
"scope"
>
{{
scope
.
row
.
title
}}
</a>
</el-table-column>
<el-table-column
prop=
"data"
header-align=
"center"
align=
"center"
show-overflow-tooltip
label=
"内容"
>
</el-table-column>
<el-table-column
prop=
"status"
header-align=
"center"
align=
"center"
label=
"是否有效"
>
</el-table-column>
<el-table-column
prop=
"name"
header-align=
"center"
align=
"center"
label=
"模版名称"
>
</el-table-column>
<el-table-column
fixed=
"right"
header-align=
"center"
align=
"center"
width=
"150"
label=
"操作"
>
<template
slot-scope=
"scope"
>
<el-button
type=
"text"
size=
"small"
@
click=
"addOrUpdateHandle(scope.row.templateId)"
>
修改
</el-button>
<el-button
type=
"text"
size=
"small"
@
click=
"deleteHandle(scope.row.templateId)"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<el-pagination
@
size-change=
"sizeChangeHandle"
@
current-change=
"currentChangeHandle"
:current-page=
"pageIndex"
:page-sizes=
"[10, 20, 50, 100]"
:page-size=
"pageSize"
:total=
"totalCount"
layout=
"total, sizes, prev, pager, next, jumper"
>
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update
v-if=
"addOrUpdateVisible"
ref=
"addOrUpdate"
@
refreshDataList=
"getDataList"
></add-or-update>
</div>
</template>
<
script
>
import
AddOrUpdate
from
'./msgtemplate-add-or-update'
export
default
{
data
()
{
return
{
dataForm
:
{
key
:
''
},
dataList
:
[],
pageIndex
:
1
,
pageSize
:
10
,
totalCount
:
0
,
dataListLoading
:
false
,
dataListSelections
:
[],
addOrUpdateVisible
:
false
}
},
components
:
{
AddOrUpdate
},
activated
()
{
this
.
getDataList
()
},
methods
:
{
// 获取数据列表
getDataList
()
{
this
.
dataListLoading
=
true
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/msgtemplate/list'
),
method
:
'get'
,
params
:
this
.
$http
.
adornParams
({
'page'
:
this
.
pageIndex
,
'limit'
:
this
.
pageSize
,
'key'
:
this
.
dataForm
.
key
})
}).
then
(({
data
})
=>
{
if
(
data
&&
data
.
code
===
200
)
{
this
.
dataList
=
data
.
page
.
list
this
.
totalCount
=
data
.
page
.
totalCount
}
else
{
this
.
dataList
=
[]
this
.
totalCount
=
0
}
this
.
dataListLoading
=
false
})
},
// 每页数
sizeChangeHandle
(
val
)
{
this
.
pageSize
=
val
this
.
pageIndex
=
1
this
.
getDataList
()
},
// 当前页
currentChangeHandle
(
val
)
{
this
.
pageIndex
=
val
this
.
getDataList
()
},
// 多选
selectionChangeHandle
(
val
)
{
this
.
dataListSelections
=
val
},
// 新增 / 修改
addOrUpdateHandle
(
id
)
{
this
.
addOrUpdateVisible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
addOrUpdate
.
init
(
id
)
})
},
// 删除
deleteHandle
(
id
)
{
var
ids
=
id
?
[
id
]
:
this
.
dataListSelections
.
map
(
item
=>
{
return
item
.
templateId
})
this
.
$confirm
(
`确定对[id=
${
ids
.
join
(
','
)}
]进行[
${
id
?
'删除'
:
'批量删除'
}
]操作?`
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/msgtemplate/delete'
),
method
:
'post'
,
data
:
this
.
$http
.
adornData
(
ids
,
false
)
}).
then
(({
data
})
=>
{
if
(
data
&&
data
.
code
===
200
)
{
this
.
$message
({
message
:
'操作成功'
,
type
:
'success'
,
duration
:
1500
,
onClose
:
()
=>
{
this
.
getDataList
()
}
})
}
else
{
this
.
$message
.
error
(
data
.
msg
)
}
})
})
}
}
}
</
script
>
src/views/modules/api/wx/templatemsglog.vue
deleted
100644 → 0
View file @
72799552
<
template
>
<div
class=
"mod-config"
>
<el-form
:inline=
"true"
:model=
"dataForm"
@
keyup
.
enter
.
native=
"getDataList()"
>
<el-form-item>
<el-input
v-model=
"dataForm.key"
placeholder=
"参数名"
clearable
></el-input>
</el-form-item>
<el-form-item>
<el-button
@
click=
"getDataList()"
>
查询
</el-button>
<el-button
v-if=
"isAuth('wx:templatemsglog:delete')"
type=
"danger"
@
click=
"deleteHandle()"
:disabled=
"dataListSelections.length
<
=
0
"
>
批量删除
</el-button>
</el-form-item>
</el-form>
<el-table
:data=
"dataList"
border
v-loading=
"dataListLoading"
@
selection-change=
"selectionChangeHandle"
style=
"width: 100%;"
>
<el-table-column
type=
"selection"
header-align=
"center"
align=
"center"
width=
"50"
>
</el-table-column>
<el-table-column
prop=
"logId"
header-align=
"center"
align=
"center"
label=
"ID"
>
</el-table-column>
<el-table-column
prop=
"touser"
header-align=
"center"
align=
"center"
label=
"openid"
>
</el-table-column>
<el-table-column
prop=
"templateId"
header-align=
"center"
align=
"center"
show-overflow-tooltip
label=
"模板ID"
>
</el-table-column>
<el-table-column
prop=
"data"
header-align=
"center"
align=
"center"
show-overflow-tooltip
label=
"内容"
>
</el-table-column>
<el-table-column
prop=
"sendTime"
header-align=
"center"
align=
"center"
width=
"100"
label=
"发送时间"
>
</el-table-column>
<el-table-column
prop=
"sendResult"
header-align=
"center"
align=
"center"
show-overflow-tooltip
label=
"发送结果"
>
</el-table-column>
<el-table-column
fixed=
"right"
header-align=
"center"
align=
"center"
width=
"150"
label=
"操作"
>
<template
slot-scope=
"scope"
>
<el-button
type=
"text"
size=
"small"
@
click=
"deleteHandle(scope.row.logId)"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<el-pagination
@
size-change=
"sizeChangeHandle"
@
current-change=
"currentChangeHandle"
:current-page=
"pageIndex"
:page-sizes=
"[10, 20, 50, 100]"
:page-size=
"pageSize"
:total=
"totalCount"
layout=
"total, sizes, prev, pager, next, jumper"
>
</el-pagination>
</div>
</template>
<
script
>
export
default
{
data
()
{
return
{
dataForm
:
{
key
:
''
},
dataList
:
[],
pageIndex
:
1
,
pageSize
:
10
,
totalCount
:
0
,
dataListLoading
:
false
,
dataListSelections
:
[],
addOrUpdateVisible
:
false
}
},
activated
()
{
this
.
getDataList
()
},
methods
:
{
// 获取数据列表
getDataList
()
{
this
.
dataListLoading
=
true
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/templatemsglog/list'
),
method
:
'get'
,
params
:
this
.
$http
.
adornParams
({
'page'
:
this
.
pageIndex
,
'limit'
:
this
.
pageSize
,
'key'
:
this
.
dataForm
.
key
,
'sidx'
:
'send_time'
,
'order'
:
'desc'
})
}).
then
(({
data
})
=>
{
if
(
data
&&
data
.
code
===
200
)
{
this
.
dataList
=
data
.
page
.
list
this
.
totalCount
=
data
.
page
.
totalCount
}
else
{
this
.
dataList
=
[]
this
.
totalCount
=
0
}
this
.
dataListLoading
=
false
})
},
// 每页数
sizeChangeHandle
(
val
)
{
this
.
pageSize
=
val
this
.
pageIndex
=
1
this
.
getDataList
()
},
// 当前页
currentChangeHandle
(
val
)
{
this
.
pageIndex
=
val
this
.
getDataList
()
},
// 多选
selectionChangeHandle
(
val
)
{
this
.
dataListSelections
=
val
},
// 删除
deleteHandle
(
id
)
{
var
ids
=
id
?
[
id
]
:
this
.
dataListSelections
.
map
(
item
=>
{
return
item
.
logId
})
this
.
$confirm
(
`确定对[id=
${
ids
.
join
(
','
)}
]进行[
${
id
?
'删除'
:
'批量删除'
}
]操作?`
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/templatemsglog/delete'
),
method
:
'post'
,
data
:
this
.
$http
.
adornData
(
ids
,
false
)
}).
then
(({
data
})
=>
{
if
(
data
&&
data
.
code
===
200
)
{
this
.
$message
({
message
:
'操作成功'
,
type
:
'success'
,
duration
:
1500
,
onClose
:
()
=>
{
this
.
getDataList
()
}
})
}
else
{
this
.
$message
.
error
(
data
.
msg
)
}
})
})
}
}
}
</
script
>
src/views/modules/api/wx/wx-menu-button-editor.vue
View file @
26154ae9
...
...
@@ -18,7 +18,7 @@
<div
class=
"menu-input"
>
<select
v-model=
"button.type"
name=
"type"
class=
"menu-input-text"
>
<option
value=
"view"
>
跳转网页(view)
</option>
<option
value=
"media
I
d"
>
发送消息(mediaId)
</option>
<option
value=
"media
_i
d"
>
发送消息(mediaId)
</option>
<!--
<option
value=
"view_limited"
>
跳转公众号图文消息链接(view_limited)
</option>
-->
<option
value=
"miniprogram"
>
打开指定小程序(miniprogram)
</option>
<option
value=
"click"
>
自定义点击事件(click)
</option>
...
...
@@ -103,7 +103,7 @@ export default {
methods
:{
//检查菜单名称长度
checkMenuName
:
function
(
val
){
if
(
this
.
selectedMenuLevel
==
1
&&
this
.
getMenuNameLen
(
val
)
<=
1
0
){
if
(
this
.
selectedMenuLevel
==
1
&&
this
.
getMenuNameLen
(
val
)
<=
1
5
){
this
.
menuNameBounds
=
false
}
else
if
(
this
.
selectedMenuLevel
==
2
&&
this
.
getMenuNameLen
(
val
)
<=
16
){
this
.
menuNameBounds
=
false
...
...
src/views/modules/api/wx/wx-menu.vue
View file @
26154ae9
...
...
@@ -59,14 +59,15 @@ export default {
methods
:
{
getWxMenu
()
{
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/wxMenu/getMenu'
)
}).
then
(({
data
})
=>
{
if
(
data
.
code
==
200
)
{
url
:
this
.
$http
.
adornUrl
(
'/api/wx/manage/wxMenu/getMenu'
)
}).
then
((
data
)
=>
{
// console.log(data)
if
(
data
.
status
==
200
)
{
this
.
menu
=
data
.
data
.
menu
;
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
data
.
m
sg
message
:
data
.
m
essage
});
}
...
...
@@ -89,10 +90,10 @@ export default {
addMenu
(
level
){
if
(
level
==
1
&&
this
.
menu
.
buttons
.
length
<
3
){
this
.
menu
.
buttons
.
push
({
"type"
:
"view"
,
//
"type": "view",
"name"
:
"菜单名称"
,
"subButtons"
:
[],
"url"
:
""
"subButtons"
:
[]
//
,
//
"url":""
})
this
.
selectMenu
(
this
.
menu
.
buttons
.
length
-
1
)
}
...
...
@@ -124,23 +125,15 @@ export default {
},
updateWxMenu
(){
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/wxMenu/updateMenu'
),
url
:
this
.
$http
.
adornUrl
(
'/
api/wx/
manage/wxMenu/updateMenu'
),
data
:
this
.
menu
,
method
:
'post'
}).
then
(({
data
})
=>
{
if
(
data
.
code
==
200
)
{
}).
then
((
data
)
=>
{
this
.
$message
({
message
:
'操作成功'
,
type
:
'success'
})
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
data
.
msg
});
}
});
})
}
}
...
...
src/views/modules/api/wx/wxqrcode-add-or-update.vue
deleted
100644 → 0
View file @
72799552
<
template
>
<el-dialog
:title=
"!dataForm.id ? '新增' : '修改'"
:close-on-click-modal=
"false"
:visible
.
sync=
"visible"
>
<el-form
:model=
"dataForm"
:rules=
"dataRule"
ref=
"dataForm"
@
keyup
.
enter
.
native=
"dataFormSubmit()"
label-width=
"100px"
>
<el-form-item
label=
"二维码类型"
prop=
"isTemp"
>
<el-radio
v-model=
"dataForm.isTemp"
:label=
"true"
>
临时
</el-radio>
<el-radio
v-model=
"dataForm.isTemp"
:label=
"false"
>
永久
</el-radio>
<div>
<a
class=
"text-warning"
v-show=
"!dataForm.isTemp"
target=
"_blank"
href=
"https://developers.weixin.qq.com/doc/offiaccount/Account_Management/Generating_a_Parametric_QR_Code.html"
>
注意永久二维码上限10万个,且暂时无法删除旧的二维码
</a>
</div>
</el-form-item>
<el-form-item
label=
"场景值"
prop=
"sceneStr"
>
<el-input
v-model=
"dataForm.sceneStr"
placeholder=
"任意字符串"
maxlength=
"64"
></el-input>
</el-form-item>
<el-form-item
label=
"失效时间/秒"
prop=
"expireSeconds"
v-if=
"dataForm.isTemp"
>
<el-input
v-model=
"dataForm.expireSeconds"
placeholder=
"单位:秒,最大2592000(30天)"
></el-input>
<div>
最大30天,当前设置:
<span
class=
"text-warning"
>
{{
dataForm
.
expireSeconds
/
(
24
*
3600
)
}}
天
</span></div>
</el-form-item>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"visible = false"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"dataFormSubmit()"
>
确定
</el-button>
</span>
</el-dialog>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
visible
:
false
,
dataForm
:
{
isTemp
:
true
,
sceneStr
:
''
,
expireSeconds
:
2592000
},
dataRule
:
{
isTemp
:
[
{
required
:
true
,
message
:
'二维码类型不能为空'
,
trigger
:
'blur'
}
],
sceneStr
:
[
{
required
:
true
,
message
:
'场景值ID不能为空'
,
trigger
:
'blur'
}
],
expireSeconds
:
[
{
required
:
true
,
message
:
'该二维码失效时间不能为空'
,
trigger
:
'blur'
}
]
}
}
},
methods
:
{
init
(
id
)
{
this
.
dataForm
.
id
=
id
||
0
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
[
'dataForm'
].
resetFields
()
})
},
// 表单提交
dataFormSubmit
()
{
this
.
$refs
[
'dataForm'
].
validate
((
valid
)
=>
{
if
(
valid
)
{
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
`/manage/wxQrCode/createTicket`
),
method
:
'post'
,
data
:
this
.
$http
.
adornData
({
'isTemp'
:
this
.
dataForm
.
isTemp
,
'sceneStr'
:
this
.
dataForm
.
sceneStr
,
'expireSeconds'
:
this
.
dataForm
.
expireSeconds
})
}).
then
(({
data
})
=>
{
if
(
data
&&
data
.
code
===
200
)
{
this
.
$message
({
message
:
'操作成功'
,
type
:
'success'
,
duration
:
1500
,
onClose
:
()
=>
{
this
.
visible
=
false
this
.
$emit
(
'refreshDataList'
)
}
})
}
else
{
this
.
$message
.
error
(
data
.
msg
)
}
})
}
})
}
}
}
</
script
>
src/views/modules/api/wx/wxqrcode.vue
deleted
100644 → 0
View file @
72799552
<
template
>
<div
class=
"mod-config"
>
<el-form
:inline=
"true"
:model=
"dataForm"
@
keyup
.
enter
.
native=
"getDataList()"
>
<el-form-item>
<el-input
v-model=
"dataForm.sceneStr"
placeholder=
"场景值"
clearable
></el-input>
</el-form-item>
<el-form-item>
<el-button
@
click=
"getDataList()"
>
查询
</el-button>
<el-button
v-if=
"isAuth('wx:wxqrcode:save')"
type=
"primary"
@
click=
"addOrUpdateHandle()"
>
新增
</el-button>
<el-button
v-if=
"isAuth('wx:wxqrcode:delete')"
type=
"danger"
@
click=
"deleteHandle()"
:disabled=
"dataListSelections.length
<
=
0
"
>
批量删除
</el-button>
</el-form-item>
</el-form>
<el-table
:data=
"dataList"
border
v-loading=
"dataListLoading"
@
selection-change=
"selectionChangeHandle"
style=
"width: 100%;"
>
<el-table-column
type=
"selection"
header-align=
"center"
align=
"center"
width=
"50"
>
</el-table-column>
<el-table-column
prop=
"id"
header-align=
"center"
align=
"center"
label=
"ID"
>
</el-table-column>
<el-table-column
prop=
"isTemp"
header-align=
"center"
align=
"center"
label=
"类型"
>
<span
slot-scope=
"scope"
>
{{
scope
.
row
.
isTemp
?
'临时'
:
'永久'
}}
</span>
</el-table-column>
<el-table-column
prop=
"sceneStr"
header-align=
"center"
align=
"center"
label=
"场景值"
>
</el-table-column>
<el-table-column
prop=
"ticket"
header-align=
"center"
align=
"center"
show-overflow-tooltip
label=
"二维码图片"
>
<a
:href=
"'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket='+scope.row.ticket"
slot-scope=
"scope"
>
{{
scope
.
row
.
ticket
}}
</a>
</el-table-column>
<el-table-column
prop=
"url"
header-align=
"center"
align=
"center"
show-overflow-tooltip
label=
"解析后的地址"
>
<a
:href=
"scope.row.url"
slot-scope=
"scope"
>
{{
scope
.
row
.
url
}}
</a>
</el-table-column>
<el-table-column
prop=
"expireTime"
header-align=
"center"
align=
"center"
width=
"100"
label=
"失效时间"
>
</el-table-column>
<el-table-column
fixed=
"right"
header-align=
"center"
align=
"center"
width=
"150"
label=
"操作"
>
<template
slot-scope=
"scope"
>
<el-button
type=
"text"
size=
"small"
@
click=
"deleteHandle(scope.row.id)"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<el-pagination
@
size-change=
"sizeChangeHandle"
@
current-change=
"currentChangeHandle"
:current-page=
"pageIndex"
:page-sizes=
"[10, 20, 50, 100]"
:page-size=
"pageSize"
:total=
"totalPage"
layout=
"total, sizes, prev, pager, next, jumper"
>
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update
v-if=
"addOrUpdateVisible"
ref=
"addOrUpdate"
@
refreshDataList=
"getDataList"
></add-or-update>
</div>
</template>
<
script
>
import
AddOrUpdate
from
'./wxqrcode-add-or-update'
export
default
{
data
()
{
return
{
dataForm
:
{
sceneStr
:
''
},
dataList
:
[],
pageIndex
:
1
,
pageSize
:
10
,
totalPage
:
0
,
dataListLoading
:
false
,
dataListSelections
:
[],
addOrUpdateVisible
:
false
}
},
components
:
{
AddOrUpdate
},
activated
()
{
this
.
getDataList
()
},
methods
:
{
// 获取数据列表
getDataList
()
{
this
.
dataListLoading
=
true
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/wxQrCode/list'
),
method
:
'get'
,
params
:
this
.
$http
.
adornParams
({
'page'
:
this
.
pageIndex
,
'limit'
:
this
.
pageSize
,
'sceneStr'
:
this
.
dataForm
.
sceneStr
,
'sidx'
:
'id'
,
'order'
:
'desc'
})
}).
then
(({
data
})
=>
{
if
(
data
&&
data
.
code
===
200
)
{
this
.
dataList
=
data
.
page
.
list
this
.
totalPage
=
data
.
page
.
totalCount
}
else
{
this
.
dataList
=
[]
this
.
totalPage
=
0
}
this
.
dataListLoading
=
false
})
},
// 每页数
sizeChangeHandle
(
val
)
{
this
.
pageSize
=
val
this
.
pageIndex
=
1
this
.
getDataList
()
},
// 当前页
currentChangeHandle
(
val
)
{
this
.
pageIndex
=
val
this
.
getDataList
()
},
// 多选
selectionChangeHandle
(
val
)
{
this
.
dataListSelections
=
val
},
// 新增 / 修改
addOrUpdateHandle
(
id
)
{
this
.
addOrUpdateVisible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
addOrUpdate
.
init
(
id
)
})
},
// 删除
deleteHandle
(
id
)
{
var
ids
=
id
?
[
id
]
:
this
.
dataListSelections
.
map
(
item
=>
{
return
item
.
id
})
this
.
$confirm
(
`确定对[id=
${
ids
.
join
(
','
)}
]进行[
${
id
?
'删除'
:
'批量删除'
}
]操作?(仅删存档)`
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/wxQrCode/delete'
),
method
:
'post'
,
data
:
this
.
$http
.
adornData
(
ids
,
false
)
}).
then
(({
data
})
=>
{
if
(
data
&&
data
.
code
===
200
)
{
this
.
$message
({
message
:
'操作成功'
,
type
:
'success'
,
duration
:
1500
,
onClose
:
()
=>
{
this
.
getDataList
()
}
})
}
else
{
this
.
$message
.
error
(
data
.
msg
)
}
})
})
}
}
}
</
script
>
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