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
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
60 additions
and
1748 deletions
+60
-1748
article-add-or-update.vue
src/views/modules/api/wx/article-add-or-update.vue
+0
-276
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
+19
-21
material-news.vue
src/views/modules/api/wx/material-news.vue
+19
-23
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
+15
-22
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
<
template
>
<div>
<el-form
:model=
"dataForm"
:rules=
"dataRule"
ref=
"dataForm"
label-width=
"80px"
>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
label=
"文章标题"
prop=
"title"
required
>
<el-input
v-model=
"dataForm.title"
:maxlength=
"1024"
placeholder=
"标题"
></el-input>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"文章类型"
prop=
"type"
required
>
<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-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
label=
"一级目录"
prop=
"category"
>
<el-select
v-model=
"dataForm.category"
placeholder=
"一级目录"
allow-create
>
<el-option
v-for=
"name in ARTICLE_CATEGORIES"
:key=
"name"
:label=
"name"
:value=
"name"
allow-create
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"二级分类"
prop=
"subCategory"
>
<el-input
:maxlength=
"50"
v-model=
"dataForm.subCategory"
placeholder=
"二级目录"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row
v-if=
"dataForm.type>=2 && dataForm.type
<
=
4
"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"生效时间"
prop=
"startTime"
>
<el-date-picker
v-model=
"dataForm.startTime"
type=
"datetime"
default-time=
"00:00:00"
placeholder=
"选择日期时间"
value-format=
"timestamp"
></el-date-picker>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"失效时间"
prop=
"endTime"
>
<el-date-picker
v-model=
"dataForm.endTime"
type=
"datetime"
default-time=
"22:00:00"
placeholder=
"选择日期时间"
value-format=
"timestamp"
></el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-form-item
label=
"指向外链"
prop=
"targetLink"
>
<el-input
v-model=
"dataForm.targetLink"
placeholder=
"指向外链"
></el-input>
</el-form-item>
<el-form-item
label=
"摘要"
prop=
"summary"
v-if=
"dataForm.type==1 || dataForm.type==5"
>
<el-input
v-model=
"dataForm.summary"
placeholder=
"摘要"
type=
"textarea"
rows=
"3"
maxlength=
"512"
show-word-limit
></el-input>
</el-form-item>
<el-form-item
label=
"标签"
prop=
"tags"
>
<tags-editor
v-model=
"dataForm.tags"
></tags-editor>
</el-form-item>
<el-row>
<el-form-item
label=
"图片地址"
prop=
"image"
:required=
"dataForm.type==4"
v-if=
"dataForm.type==4"
>
<el-input
v-model=
"dataForm.image"
placeholder=
"图片链接"
></el-input>
<el-upload
class=
"upload-demo"
list-type=
"picture"
action=
"/wx/upload/uploadImg"
:data=
"
{'savePath':'article'}"
accept="image/*"
:limit="1"
:on-success="imgUploadSuccess"
>
<el-button
size=
"small"
type=
"primary"
>
上传图片
</el-button>
</el-upload>
</el-form-item>
</el-row>
<tinymce-editor
ref=
"editor"
v-model=
"dataForm.content"
></tinymce-editor>
</el-form>
<div
class=
"footer"
>
<el-button
@
click=
"closeCurrentTab"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"dataFormSubmit()"
>
确定
</el-button>
</div>
</div>
</
template
>
<
script
>
let
todayStart
=
new
Date
(
new
Date
().
toLocaleDateString
());
export
default
{
components
:
{
TinymceEditor
:
()
=>
import
(
"@/components/tinymce-editor"
),
tagsEditor
:
()
=>
import
(
"@/components/tags-editor"
)
},
data
()
{
return
{
dataForm
:
{
id
:
""
,
type
:
"4"
,
title
:
""
,
content
:
""
,
category
:
"公告"
,
subCategory
:
""
,
summary
:
""
,
tags
:
""
,
createTime
:
""
,
updateTime
:
""
,
openCount
:
0
,
startTime
:
todayStart
,
endTime
:
new
Date
(
todayStart
.
getTime
()
+
24
*
60
*
60
*
1000
-
1000
),
targetLink
:
location
.
origin
+
"/client/#/article/${articleId}"
,
image
:
""
},
dataRule
:
{
type
:
[
{
required
:
true
,
message
:
"文章类型不能为空"
,
trigger
:
"blur"
}
],
title
:
[
{
required
:
true
,
message
:
"标题不能为空"
,
trigger
:
"blur"
}
],
category
:
[
{
required
:
true
,
message
:
"分类不能为空"
,
trigger
:
"blur"
}
]
}
};
},
computed
:
{
ARTICLE_TYPES
:
{
get
()
{
return
this
.
$store
.
state
.
article
.
ARTICLE_TYPES
;
}
},
ARTICLE_CATEGORIES
:
{
get
()
{
return
this
.
$store
.
state
.
article
.
ARTICLE_CATEGORIES
;
}
}
},
mounted
()
{
let
id
=
this
.
$route
.
query
.
id
;
this
.
init
(
id
);
},
methods
:
{
init
(
id
)
{
this
.
dataForm
.
id
=
id
||
""
;
this
.
$nextTick
(()
=>
{
this
.
$refs
[
"dataForm"
].
resetFields
();
if
(
id
>
0
)
{
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
`/manage/article/info/
${
this
.
dataForm
.
id
}
`
),
method
:
"get"
,
params
:
this
.
$http
.
adornParams
()
}).
then
(({
data
})
=>
{
if
(
data
&&
data
.
code
===
200
)
{
this
.
dataForm
.
type
=
data
.
article
.
type
+
""
;
this
.
dataForm
.
title
=
data
.
article
.
title
;
this
.
dataForm
.
content
=
data
.
article
.
content
;
this
.
dataForm
.
category
=
data
.
article
.
category
;
this
.
dataForm
.
summary
=
data
.
article
.
summary
;
this
.
dataForm
.
tags
=
data
.
article
.
tags
;
this
.
dataForm
.
subCategory
=
data
.
article
.
subCategory
;
this
.
dataForm
.
createTime
=
data
.
article
.
createTime
;
this
.
dataForm
.
updateTime
=
data
.
article
.
updateTime
;
this
.
dataForm
.
openCount
=
data
.
article
.
openCount
;
this
.
dataForm
.
startTime
=
data
.
article
.
startTime
;
this
.
dataForm
.
endTime
=
data
.
article
.
endTime
;
this
.
dataForm
.
targetLink
=
data
.
article
.
targetLink
;
this
.
dataForm
.
image
=
data
.
article
.
image
;
}
});
}
});
},
// 表单提交
dataFormSubmit
()
{
this
.
$refs
[
"dataForm"
].
validate
(
valid
=>
{
if
(
valid
)
{
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
`/manage/article/
${
!
this
.
dataForm
.
id
?
"save"
:
"update"
}
`
),
method
:
"post"
,
data
:
this
.
$http
.
adornData
({
id
:
this
.
dataForm
.
id
||
undefined
,
type
:
this
.
dataForm
.
type
,
title
:
this
.
dataForm
.
title
,
content
:
this
.
dataForm
.
content
,
category
:
this
.
dataForm
.
category
,
summary
:
this
.
dataForm
.
summary
,
tags
:
this
.
dataForm
.
tags
,
subCategory
:
this
.
dataForm
.
subCategory
,
createTime
:
this
.
dataForm
.
createTime
||
new
Date
().
getTime
(),
updateTime
:
new
Date
().
getTime
(),
openCount
:
this
.
dataForm
.
openCount
,
startTime
:
this
.
dataForm
.
startTime
,
endTime
:
this
.
dataForm
.
endTime
,
targetLink
:
this
.
dataForm
.
targetLink
,
image
:
this
.
dataForm
.
image
})
}).
then
(({
data
})
=>
{
if
(
data
&&
data
.
code
===
200
)
{
this
.
$message
({
message
:
"操作成功"
,
type
:
"success"
,
duration
:
1500
,
onClose
:
()
=>
{
this
.
closeCurrentTab
();
}
});
}
else
{
this
.
$message
.
error
(
data
.
msg
);
}
});
}
});
},
imgUploadSuccess
(
response
,
file
,
fileList
)
{
console
.
log
(
response
);
if
(
response
.
code
==
200
)
{
this
.
dataForm
.
image
=
response
.
data
;
console
.
log
(
"this.article"
,
this
.
article
);
}
else
{
this
.
$message
({
type
:
"warning"
,
message
:
response
.
msg
});
}
},
closeCurrentTab
()
{
this
.
$store
.
commit
(
"common/closeCurrentTab"
);
}
}
};
</
script
>
<
style
scoped
>
.footer
{
margin-top
:
20px
;
}
</
style
>
\ No newline at end of file
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 @@
...
@@ -66,19 +66,19 @@
dataFormSubmit
()
{
dataFormSubmit
()
{
this
.
$refs
[
'dataForm'
].
validate
((
valid
)
=>
{
this
.
$refs
[
'dataForm'
].
validate
((
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
console
.
log
(
this
.
dataForm
)
//
console.log(this.dataForm)
let
form
=
new
FormData
();
let
form
=
new
FormData
();
form
.
append
(
'mediaId'
,
this
.
dataForm
.
mediaId
||
''
)
form
.
append
(
'mediaId'
,
this
.
dataForm
.
mediaId
||
''
)
form
.
append
(
'file'
,
this
.
dataForm
.
file
)
form
.
append
(
'file'
,
this
.
dataForm
.
file
)
form
.
append
(
'fileName'
,
this
.
dataForm
.
fileName
)
form
.
append
(
'fileName'
,
this
.
dataForm
.
fileName
)
form
.
append
(
'mediaType'
,
this
.
dataForm
.
mediaType
)
form
.
append
(
'mediaType'
,
this
.
dataForm
.
mediaType
)
this
.
$http
({
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
`/manage/wxAssets/materialFileUpload`
),
url
:
this
.
$http
.
adornUrl
(
`/
api/wx/
manage/wxAssets/materialFileUpload`
),
method
:
'post'
,
method
:
'post'
,
data
:
form
,
data
:
form
,
headers
:
{
'Content-Type'
:
'multipart/form-data'
}
headers
:
{
'Content-Type'
:
'multipart/form-data'
}
}).
then
((
{
data
}
)
=>
{
}).
then
((
data
)
=>
{
if
(
data
&&
data
.
code
===
200
)
{
if
(
data
&&
data
.
data
==
'ok'
)
{
this
.
$message
({
this
.
$message
({
message
:
'操作成功'
,
message
:
'操作成功'
,
type
:
'success'
,
type
:
'success'
,
...
@@ -89,7 +89,7 @@
...
@@ -89,7 +89,7 @@
}
}
})
})
}
else
{
}
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 @@
...
@@ -43,7 +43,7 @@
width=
"150"
width=
"150"
label=
"操作"
>
label=
"操作"
>
<template
slot-scope=
"scope"
>
<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>
<el-button
type=
"text"
size=
"small"
@
click=
"deleteHandle(scope.row.mediaId)"
>
删除
</el-button>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
...
@@ -83,20 +83,18 @@ export default {
...
@@ -83,20 +83,18 @@ export default {
materialFileBatchGet
(){
materialFileBatchGet
(){
this
.
dataListLoading
=
true
this
.
dataListLoading
=
true
this
.
$http
({
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/wxAssets/materialFileBatchGet'
),
url
:
this
.
$http
.
adornUrl
(
'/
api/wx/
manage/wxAssets/materialFileBatchGet'
),
params
:
this
.
$http
.
adornParams
({
params
:
this
.
$http
.
adornParams
({
'page'
:
this
.
pageIndex
'page'
:
this
.
pageIndex
})
})
}).
then
(({
data
})
=>
{
}).
then
((
data
)
=>
{
// console.log(data)
this
.
dataListLoading
=
false
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
.
dataList
=
data
.
data
.
items
this
.
totalCount
=
data
.
data
.
totalCount
this
.
totalCount
=
data
.
data
.
totalCount
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
data
.
msg
});
}
}
})
})
},
},
...
@@ -115,21 +113,21 @@ export default {
...
@@ -115,21 +113,21 @@ export default {
type
:
'warning'
type
:
'warning'
}).
then
(()
=>
{
}).
then
(()
=>
{
this
.
$http
({
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/wxAssets/materialDelete'
),
url
:
this
.
$http
.
adornUrl
(
'/
api/wx/
manage/wxAssets/materialDelete'
),
method
:
'post'
,
method
:
'post'
,
data
:
{
mediaId
:
id
}
data
:
{
mediaId
:
id
}
}).
then
((
{
data
}
)
=>
{
}).
then
((
data
)
=>
{
if
(
data
&&
data
.
code
===
200
)
{
if
(
data
&&
data
.
data
==
true
)
{
this
.
$message
({
this
.
$message
({
message
:
'操作成功'
,
message
:
'操作成功'
,
type
:
'success'
,
type
:
'success'
,
duration
:
1500
,
duration
:
1500
,
onClose
:
()
=>
{
onClose
:
()
=>
{
this
.
materialFileBatchGet
()
this
.
materialFileBatchGet
()
}
}
})
})
}
else
{
}
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 {
...
@@ -76,21 +76,16 @@ export default {
materialNewsBatchGet
(){
materialNewsBatchGet
(){
this
.
dataListLoading
=
true
this
.
dataListLoading
=
true
this
.
$http
({
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/wxAssets/materialNewsBatchGet'
),
url
:
this
.
$http
.
adornUrl
(
'/
api/wx/
manage/wxAssets/materialNewsBatchGet'
),
params
:
this
.
$http
.
adornParams
({
params
:
this
.
$http
.
adornParams
({
'page'
:
this
.
pageIndex
'page'
:
this
.
pageIndex
})
})
}).
then
((
{
data
}
)
=>
{
}).
then
((
data
)
=>
{
this
.
dataListLoading
=
false
this
.
dataListLoading
=
false
if
(
data
.
code
==
200
){
this
.
dataList
=
data
.
data
.
items
this
.
dataList
=
data
.
data
.
items
this
.
totalCount
=
data
.
data
.
totalCount
this
.
totalCount
=
data
.
data
.
totalCount
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
data
.
msg
});
}
})
})
},
},
loadTree
(
tree
,
treeNode
,
resolve
){
loadTree
(
tree
,
treeNode
,
resolve
){
...
@@ -105,21 +100,22 @@ export default {
...
@@ -105,21 +100,22 @@ export default {
type
:
'warning'
type
:
'warning'
}).
then
(()
=>
{
}).
then
(()
=>
{
this
.
$http
({
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/wxAssets/materialDelete'
),
url
:
this
.
$http
.
adornUrl
(
'/
api/wx/
manage/wxAssets/materialDelete'
),
method
:
'post'
,
method
:
'post'
,
data
:
{
mediaId
:
id
}
data
:
{
mediaId
:
id
}
}).
then
(({
data
})
=>
{
}).
then
((
data
)
=>
{
if
(
data
&&
data
.
code
===
200
)
{
console
.
log
(
data
)
this
.
$message
({
if
(
data
&&
data
.
data
===
true
)
{
message
:
'操作成功'
,
this
.
$message
({
type
:
'success'
,
message
:
'操作成功'
,
duration
:
1500
,
type
:
'success'
,
onClose
:
()
=>
{
duration
:
1500
,
this
.
materialFileBatchGet
()
onClose
:
()
=>
{
}
this
.
materialFileBatchGet
()
})
}
})
}
else
{
}
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 @@
...
@@ -18,7 +18,7 @@
<div
class=
"menu-input"
>
<div
class=
"menu-input"
>
<select
v-model=
"button.type"
name=
"type"
class=
"menu-input-text"
>
<select
v-model=
"button.type"
name=
"type"
class=
"menu-input-text"
>
<option
value=
"view"
>
跳转网页(view)
</option>
<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=
"view_limited"
>
跳转公众号图文消息链接(view_limited)
</option>
-->
<option
value=
"miniprogram"
>
打开指定小程序(miniprogram)
</option>
<option
value=
"miniprogram"
>
打开指定小程序(miniprogram)
</option>
<option
value=
"click"
>
自定义点击事件(click)
</option>
<option
value=
"click"
>
自定义点击事件(click)
</option>
...
@@ -103,7 +103,7 @@ export default {
...
@@ -103,7 +103,7 @@ export default {
methods
:{
methods
:{
//检查菜单名称长度
//检查菜单名称长度
checkMenuName
:
function
(
val
){
checkMenuName
:
function
(
val
){
if
(
this
.
selectedMenuLevel
==
1
&&
this
.
getMenuNameLen
(
val
)
<=
1
0
){
if
(
this
.
selectedMenuLevel
==
1
&&
this
.
getMenuNameLen
(
val
)
<=
1
5
){
this
.
menuNameBounds
=
false
this
.
menuNameBounds
=
false
}
else
if
(
this
.
selectedMenuLevel
==
2
&&
this
.
getMenuNameLen
(
val
)
<=
16
){
}
else
if
(
this
.
selectedMenuLevel
==
2
&&
this
.
getMenuNameLen
(
val
)
<=
16
){
this
.
menuNameBounds
=
false
this
.
menuNameBounds
=
false
...
...
src/views/modules/api/wx/wx-menu.vue
View file @
26154ae9
...
@@ -59,14 +59,15 @@ export default {
...
@@ -59,14 +59,15 @@ export default {
methods
:
{
methods
:
{
getWxMenu
()
{
getWxMenu
()
{
this
.
$http
({
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/wxMenu/getMenu'
)
url
:
this
.
$http
.
adornUrl
(
'/api/wx/manage/wxMenu/getMenu'
)
}).
then
(({
data
})
=>
{
}).
then
((
data
)
=>
{
if
(
data
.
code
==
200
)
{
// console.log(data)
if
(
data
.
status
==
200
)
{
this
.
menu
=
data
.
data
.
menu
;
this
.
menu
=
data
.
data
.
menu
;
}
else
{
}
else
{
this
.
$message
({
this
.
$message
({
type
:
'error'
,
type
:
'error'
,
message
:
data
.
m
sg
message
:
data
.
m
essage
});
});
}
}
...
@@ -89,10 +90,10 @@ export default {
...
@@ -89,10 +90,10 @@ export default {
addMenu
(
level
){
addMenu
(
level
){
if
(
level
==
1
&&
this
.
menu
.
buttons
.
length
<
3
){
if
(
level
==
1
&&
this
.
menu
.
buttons
.
length
<
3
){
this
.
menu
.
buttons
.
push
({
this
.
menu
.
buttons
.
push
({
"type"
:
"view"
,
//
"type": "view",
"name"
:
"菜单名称"
,
"name"
:
"菜单名称"
,
"subButtons"
:
[],
"subButtons"
:
[]
//
,
"url"
:
""
//
"url":""
})
})
this
.
selectMenu
(
this
.
menu
.
buttons
.
length
-
1
)
this
.
selectMenu
(
this
.
menu
.
buttons
.
length
-
1
)
}
}
...
@@ -124,23 +125,15 @@ export default {
...
@@ -124,23 +125,15 @@ export default {
},
},
updateWxMenu
(){
updateWxMenu
(){
this
.
$http
({
this
.
$http
({
url
:
this
.
$http
.
adornUrl
(
'/manage/wxMenu/updateMenu'
),
url
:
this
.
$http
.
adornUrl
(
'/
api/wx/
manage/wxMenu/updateMenu'
),
data
:
this
.
menu
,
data
:
this
.
menu
,
method
:
'post'
method
:
'post'
}).
then
(({
data
})
=>
{
}).
then
((
data
)
=>
{
if
(
data
.
code
==
200
)
{
this
.
$message
({
this
.
$message
({
message
:
'操作成功'
,
message
:
'操作成功'
,
type
:
'success'
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