Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
A
admin-base
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
new-sing
admin-base
Commits
2b3737ac
Commit
2b3737ac
authored
Aug 29, 2018
by
王
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
关键字回复
parent
37d398a3
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
1355 additions
and
15 deletions
+1355
-15
index.js
config/index.js
+2
-2
sysConfig.vue
src/components/system/sysConfig.vue
+122
-5
sysConfigDialog.vue
src/components/system/sysConfigDialog.vue
+214
-0
autoReply.vue
src/components/weChat/autoReply.vue
+120
-4
autoReplyDialog.vue
src/components/weChat/autoReplyDialog.vue
+351
-0
focusReply.vue
src/components/weChat/focusReply.vue
+347
-3
textContentDialog.vue
src/components/weChat/textContentDialog.vue
+168
-0
api.js
src/service/api.js
+31
-1
No files found.
config/index.js
View file @
2b3737ac
...
@@ -13,8 +13,8 @@ module.exports = {
...
@@ -13,8 +13,8 @@ module.exports = {
//本地代理设置
//本地代理设置
proxyTable
:
{
proxyTable
:
{
'/api'
:
{
'/api'
:
{
//
target: 'http://local.base-api.sing.com', // 接口的域名
target
:
'http://local.base-api.sing.com'
,
// 接口的域名
target
:
'wechat.test.singsingenglish.com'
,
//
target: 'wechat.test.singsingenglish.com',
changeOrigin
:
true
,
// 如果接口跨域,需要进行这个参数配置
changeOrigin
:
true
,
// 如果接口跨域,需要进行这个参数配置
}
}
},
},
...
...
src/components/system/sysConfig.vue
View file @
2b3737ac
<
template
>
<
template
>
<div>
<el-row
type=
"flex"
class=
"add-btn"
justify=
"end"
>
<el-col
:span=
"6"
>
<el-button
type=
"success"
plain
@
click=
"add"
>
添加配置
</el-button>
</el-col>
</el-row>
<el-table
:data=
"list"
style=
"width: 100%"
>
<el-table-column
type=
"expand"
>
<template
slot-scope=
"props"
>
<el-form
label-position=
"left"
class=
"demo-table-expand"
>
<el-form-item
label=
"Key"
>
<span>
{{
props
.
row
.
key
}}
</span>
</el-form-item>
<el-form-item
label=
"关键词"
>
<span>
{{
props
.
row
.
value
}}
</span>
</el-form-item>
<el-form-item
label=
"描述"
>
<span>
{{
props
.
row
.
desc
}}
</span>
</el-form-item>
</el-form>
</
template
>
</el-table-column>
<el-table-column
label=
"ID"
prop=
"id"
>
</el-table-column>
<el-table-column
label=
"Key"
prop=
"key"
>
</el-table-column>
<el-table-column
label=
"关键词"
prop=
"value"
>
</el-table-column>
<el-table-column
prop=
"created_at"
label=
"创建时间"
>
</el-table-column>
<el-table-column
width=
"250"
label=
"操作"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
plain
type=
"warning"
@
click=
"edit(scope.row)"
>
编辑
</el-button>
<el-button
size=
"mini"
plain
type=
"danger"
@
click=
"del(scope.row)"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<dialog-com
:dialogObj=
"dialogObj"
@
changeShow=
"changeShow"
@
reflash=
"getList"
/>
</div>
</template>
</template>
<
script
>
<
script
>
export
default
{
import
dialogCom
from
'./sysConfigDialog'
name
:
"sysConfig"
import
{
getConfigListApi
,
deleteConfigApi
,
getConfigDetailApi
}
from
"../../service/api"
;
export
default
{
name
:
"sysConfig"
,
data
()
{
return
{
dialogObj
:{
value
:
''
,
desc
:
''
,
show
:
false
,
id
:
''
},
list
:
[]
}
},
components
:{
dialogCom
},
mounted
(){
this
.
getList
()
},
methods
:
{
changeShow
(
data
){
this
.
dialogObj
.
show
=
data
},
getList
(){
getConfigListApi
().
then
(
res
=>
{
this
.
list
=
res
.
list
})
},
add
(){
this
.
dialogObj
.
id
=
''
;
this
.
dialogObj
.
key
=
''
;
this
.
dialogObj
.
value
=
''
;
this
.
dialogObj
.
desc
=
''
;
this
.
dialogObj
.
show
=
true
},
edit
(
data
){
getConfigDetailApi
(
data
.
id
).
then
((
res
)
=>
{
this
.
dialogObj
.
id
=
res
.
id
;
this
.
dialogObj
.
key
=
res
.
key
;
this
.
dialogObj
.
value
=
res
.
value
;
this
.
dialogObj
.
desc
=
res
.
desc
;
this
.
dialogObj
.
show
=
true
});
},
del
(
data
){
this
.
$confirm
(
'此操作将删除该记录?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
deleteConfigApi
(
data
.
id
).
then
(
res
=>
{
this
.
getList
()
this
.
$message
({
type
:
'success'
,
message
:
'删除成功!'
});
});
});
}
}
}
}
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
lang=
"less"
>
@import "../../util/public";
.add-btn {
margin: 10px 0;
}
</
style
>
</
style
>
src/components/system/sysConfigDialog.vue
0 → 100644
View file @
2b3737ac
<
template
>
<el-dialog
title=
"自动回复"
center
append-to-body
:visible
.
sync=
"show"
width=
"800px"
>
<div
v-loading=
"loading"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
>
<el-row>
<el-col
:span=
"4"
><label>
Key
</label></el-col>
<el-col
:span=
"8"
>
<el-form-item
prop=
"key"
>
<el-input
v-model=
"form.key"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"4"
><label>
关键词
</label></el-col>
<el-col
:span=
"8"
>
<el-form-item
prop=
"value"
>
<el-input
v-model=
"form.value"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"4"
><label>
描述
</label></el-col>
<el-col
:span=
"8"
>
<el-form-item>
<el-input
v-model=
"form.desc"
type=
"textarea"
></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"show = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"save"
>
确 定
</el-button>
</span>
</div>
</el-dialog>
</
template
>
<
script
>
import
{
updateConfigApi
,
saveConfigApi
}
from
"../../service/api"
;
import
{
TEACHERTYPE
}
from
"../../util/wordbook"
;
import
page
from
'../framework/page'
export
default
{
name
:
"dialogObj"
,
props
:[
'dialogObj'
],
data
(){
return
{
show
:
false
,
id
:
''
,
loading
:
true
,
form
:{
key
:
''
,
value
:
''
,
desc
:
''
},
mediaList
:
[],
rules
:{
value
:[
{
required
:
true
,
message
:
'请输入关键词'
,
trigger
:
'change'
}
],
desc
:[
{
required
:
true
,
message
:
'请输入描述'
,
trigger
:
'change'
}
],
key
:[
{
required
:
true
,
message
:
'请输入Key'
,
trigger
:
'change'
}
]
}
}
},
components
:{
page
},
methods
:{
save
(){
if
(
this
.
dialogObj
.
id
){
this
.
$refs
[
'form'
].
validate
((
valid
)
=>
{
if
(
valid
){
updateConfigApi
(
this
.
id
,
this
.
form
).
then
(
res
=>
{
this
.
$message
({
type
:
'success'
,
message
:
'修改成功!'
});
this
.
$emit
(
"reflash"
);
this
.
show
=
false
;
})
}
});
}
else
{
this
.
$refs
[
'form'
].
validate
((
valid
)
=>
{
if
(
valid
){
saveConfigApi
(
this
.
form
).
then
(
res
=>
{
this
.
$message
({
type
:
'success'
,
message
:
'新增成功!'
});
this
.
$emit
(
"reflash"
);
this
.
show
=
false
;
})
}
});
}
},
initDialog
(){
this
.
show
=
this
.
dialogObj
.
show
;
if
(
this
.
dialogObj
.
id
)
{
this
.
id
=
this
.
dialogObj
.
id
;
}
this
.
form
.
key
=
this
.
dialogObj
.
key
;
this
.
form
.
value
=
this
.
dialogObj
.
value
;
this
.
form
.
desc
=
this
.
dialogObj
.
desc
;
this
.
loading
=
false
}
},
watch
:{
dialogObj
:{
handler
:
function
()
{
this
.
loading
=
true
;
this
.
initDialog
()
},
deep
:
true
},
show
(
value
){
this
.
$emit
(
"changeShow"
,
value
);
}
}
}
</
script
>
<
style
scoped
lang=
"less"
>
@import "../../util/public";
/*.el-col {*/
/*height: 50px;*/
/*text-align: center;*/
/*margin-bottom: 20px;*/
/*line-height: 40px;*/
/*.el-select{*/
/*width: 100%;*/
/*}*/
/*img{*/
/*width: 50px;*/
/*border-radius: 100px;*/
/*}*/
/*label{*/
/*color: #5982e6;*/
/*}*/
/*}*/
.dialog-footer{
display: block;
text-align: center;
margin-top: 30px;
}
.msg_sender_wrp {
display: flex;
flex-flow: row wrap;
justify-content: flex-start;
align-items: center;
/*position: absolute;*/
/*left: 100%;*/
/*top: 50%;*/
width: 500px;
/*z-index: 500;*/
/*-ms-transform: translateY(-50%);*/
/*transform: translateY(-50%);*/
/*background: #FFFFFF;*/
/*box-shadow: 0 1px 20px 0 #E4E8EB;*/
/*border-radius: 2px;*/
}
.el-icon-circle-plus-outline {
font-size: 28px;
}
.weui-desktop-msg-sender__tabs {
line-height: 38px;
background-color: #FFFFFF;
}
ul, ol {
padding-left: 0;
list-style-type: none;
}
.weui-desktop-msg-sender__tab {
padding: 0 15px;
float: left;
cursor: pointer;
}
.weui-desktop-msg-sender__tab_appmsg:before {
background: transparent url(https://mp.weixin.qq.com/mpres/en_US/htmledition/pages/modules/msg_sender/svg/default/sender_appmsg3f92fe.svg) no-repeat 0 0;
}
.weui-desktop-msg-sender__tab:before {
content: " ";
display: inline-block;
width: 22px;
height: 20px;
vertical-align: middle;
margin: -0.2em 5px 0 0;
}
.weui-desktop-msg-sender__tab_text:before {
background: transparent url(https://mp.weixin.qq.com/mpres/en_US/htmledition/pages/modules/msg_sender/svg/default/sender_text3f92fe.svg) no-repeat 0 0;
}
.weui-desktop-msg-sender__tab_img:before {
background: transparent url(https://mp.weixin.qq.com/mpres/en_US/htmledition/pages/modules/msg_sender/svg/default/sender_img3f92fe.svg) no-repeat 0 0;
}
.weui-desktop-msg-sender__tab_audio:before {
background: transparent url(https://mp.weixin.qq.com/mpres/en_US/htmledition/pages/modules/msg_sender/svg/default/sender_audio3f92fe.svg) no-repeat 0 0;
}
.weui-desktop-msg-sender__tab_video:before {
background: transparent url(https://mp.weixin.qq.com/mpres/en_US/htmledition/pages/modules/msg_sender/svg/default/sender_video3f92fe.svg) no-repeat 0 0;
}
</
style
>
src/components/weChat/autoReply.vue
View file @
2b3737ac
<
template
>
<
template
>
<div>
<el-row
type=
"flex"
class=
"add-btn"
justify=
"end"
>
<el-col
:span=
"6"
>
<el-button
type=
"success"
plain
@
click=
"add"
>
添加回复
</el-button>
</el-col>
</el-row>
<el-table
:data=
"list"
style=
"width: 100%"
>
<el-table-column
type=
"expand"
>
<template
slot-scope=
"props"
>
<el-form
label-position=
"left"
class=
"demo-table-expand"
>
<el-form-item
label=
"关键词"
>
<span>
{{
props
.
row
.
value
}}
</span>
</el-form-item>
<el-form-item
label=
"回复内容"
>
<div
v-for=
"(item, index) in JSON.parse(props.row.desc)"
>
{{
item
.
content
}}
</div>
</el-form-item>
</el-form>
</
template
>
</el-table-column>
<el-table-column
label=
"ID"
prop=
"id"
>
</el-table-column>
<el-table-column
label=
"关键词"
prop=
"value"
>
</el-table-column>
<el-table-column
label=
"回复内容"
>
<
template
slot-scope=
"scope"
>
{{
JSON
.
parse
(
scope
.
row
.
desc
).
length
}}
条回复
</
template
>
</el-table-column>
<el-table-column
prop=
"created_at"
label=
"创建时间"
>
</el-table-column>
<el-table-column
width=
"250"
label=
"操作"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
plain
type=
"warning"
@
click=
"edit(scope.row)"
>
编辑
</el-button>
<el-button
size=
"mini"
plain
type=
"danger"
@
click=
"del(scope.row)"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<dialog-com
:dialogObj=
"dialogObj"
@
changeShow=
"changeShow"
@
reflash=
"getList"
/>
</div>
</template>
</template>
<
script
>
<
script
>
import
dialogCom
from
'./autoReplyDialog'
import
{
getConfigListApi
,
deleteConfigApi
,
getConfigDetailApi
}
from
"../../service/api"
;
export
default
{
export
default
{
name
:
"autoReply"
name
:
"autoReply"
,
data
()
{
return
{
dialogObj
:{
value
:
''
,
desc
:
''
,
show
:
false
,
id
:
''
},
list
:
[]
}
},
components
:{
dialogCom
},
mounted
(){
this
.
getList
()
},
methods
:
{
changeShow
(
data
){
this
.
dialogObj
.
show
=
data
},
getList
(){
getConfigListApi
({
key
:
'keywords_reply'
}).
then
(
res
=>
{
this
.
list
=
res
.
list
})
},
add
(){
this
.
dialogObj
.
id
=
''
;
this
.
dialogObj
.
value
=
''
;
this
.
dialogObj
.
desc
=
''
;
this
.
dialogObj
.
show
=
true
},
edit
(
data
){
getConfigDetailApi
(
data
.
id
).
then
((
res
)
=>
{
this
.
dialogObj
.
id
=
res
.
id
;
this
.
dialogObj
.
value
=
res
.
value
;
this
.
dialogObj
.
desc
=
res
.
desc
;
this
.
dialogObj
.
show
=
true
;
});
console
.
log
(
'edit data'
,
data
);
console
.
log
(
'edit this.dialogObj'
,
this
.
dialogObj
);
},
del
(
data
){
this
.
$confirm
(
'此操作将删除该记录?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
deleteConfigApi
(
data
.
id
).
then
(
res
=>
{
this
.
getList
()
this
.
$message
({
type
:
'success'
,
message
:
'删除成功!'
});
});
});
}
}
}
}
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
lang=
"less"
>
@import "../../util/public";
.add-btn {
margin: 10px 0;
}
</
style
>
</
style
>
src/components/weChat/autoReplyDialog.vue
0 → 100644
View file @
2b3737ac
This diff is collapsed.
Click to expand it.
src/components/weChat/focusReply.vue
View file @
2b3737ac
This diff is collapsed.
Click to expand it.
src/components/weChat/textContentDialog.vue
0 → 100644
View file @
2b3737ac
<
template
>
<el-dialog
title=
"自动回复"
center
append-to-body
:visible
.
sync=
"show"
width=
"800px"
>
<div
v-loading=
"loading"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
>
<el-col
:span=
"4"
><label>
描述
</label></el-col>
<el-col
:span=
"8"
>
<el-form-item>
<el-input
v-model=
"form.content"
type=
"textarea"
></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"show = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"save"
>
确 定
</el-button>
</span>
</div>
</el-dialog>
</
template
>
<
script
>
import
{
updateConfigApi
,
saveConfigApi
}
from
"../../service/api"
;
import
{
TEACHERTYPE
}
from
"../../util/wordbook"
;
import
page
from
'../framework/page'
export
default
{
name
:
"dialogObj"
,
props
:[
'dialogObj'
],
data
(){
return
{
show
:
false
,
id
:
''
,
loading
:
true
,
form
:{
key
:
''
,
value
:
''
,
desc
:
''
},
mediaList
:
[],
rules
:{
value
:[
{
required
:
true
,
message
:
'请输入关键词'
,
trigger
:
'change'
}
],
desc
:[
{
required
:
true
,
message
:
'请输入描述'
,
trigger
:
'change'
}
],
key
:[
{
required
:
true
,
message
:
'请输入Key'
,
trigger
:
'change'
}
]
}
}
},
components
:{
page
},
methods
:{
save
(){
this
.
$emit
(
"reflash"
);
},
initDialog
(){
this
.
show
=
this
.
dialogObj
.
show
;
this
.
form
.
key
=
this
.
dialogObj
.
key
;
this
.
form
.
value
=
this
.
dialogObj
.
value
;
this
.
form
.
desc
=
this
.
dialogObj
.
desc
;
this
.
loading
=
false
}
},
watch
:{
dialogObj
:{
handler
:
function
()
{
this
.
loading
=
true
;
this
.
initDialog
()
},
deep
:
true
},
show
(
value
){
this
.
$emit
(
"changeShow"
,
value
);
}
}
}
</
script
>
<
style
scoped
lang=
"less"
>
@import "../../util/public";
/*.el-col {*/
/*height: 50px;*/
/*text-align: center;*/
/*margin-bottom: 20px;*/
/*line-height: 40px;*/
/*.el-select{*/
/*width: 100%;*/
/*}*/
/*img{*/
/*width: 50px;*/
/*border-radius: 100px;*/
/*}*/
/*label{*/
/*color: #5982e6;*/
/*}*/
/*}*/
.dialog-footer{
display: block;
text-align: center;
margin-top: 30px;
}
.msg_sender_wrp {
display: flex;
flex-flow: row wrap;
justify-content: flex-start;
align-items: center;
/*position: absolute;*/
/*left: 100%;*/
/*top: 50%;*/
width: 500px;
/*z-index: 500;*/
/*-ms-transform: translateY(-50%);*/
/*transform: translateY(-50%);*/
/*background: #FFFFFF;*/
/*box-shadow: 0 1px 20px 0 #E4E8EB;*/
/*border-radius: 2px;*/
}
.el-icon-circle-plus-outline {
font-size: 28px;
}
.weui-desktop-msg-sender__tabs {
line-height: 38px;
background-color: #FFFFFF;
}
ul, ol {
padding-left: 0;
list-style-type: none;
}
.weui-desktop-msg-sender__tab {
padding: 0 15px;
float: left;
cursor: pointer;
}
.weui-desktop-msg-sender__tab_appmsg:before {
background: transparent url(https://mp.weixin.qq.com/mpres/en_US/htmledition/pages/modules/msg_sender/svg/default/sender_appmsg3f92fe.svg) no-repeat 0 0;
}
.weui-desktop-msg-sender__tab:before {
content: " ";
display: inline-block;
width: 22px;
height: 20px;
vertical-align: middle;
margin: -0.2em 5px 0 0;
}
.weui-desktop-msg-sender__tab_text:before {
background: transparent url(https://mp.weixin.qq.com/mpres/en_US/htmledition/pages/modules/msg_sender/svg/default/sender_text3f92fe.svg) no-repeat 0 0;
}
.weui-desktop-msg-sender__tab_img:before {
background: transparent url(https://mp.weixin.qq.com/mpres/en_US/htmledition/pages/modules/msg_sender/svg/default/sender_img3f92fe.svg) no-repeat 0 0;
}
.weui-desktop-msg-sender__tab_audio:before {
background: transparent url(https://mp.weixin.qq.com/mpres/en_US/htmledition/pages/modules/msg_sender/svg/default/sender_audio3f92fe.svg) no-repeat 0 0;
}
.weui-desktop-msg-sender__tab_video:before {
background: transparent url(https://mp.weixin.qq.com/mpres/en_US/htmledition/pages/modules/msg_sender/svg/default/sender_video3f92fe.svg) no-repeat 0 0;
}
</
style
>
src/service/api.js
View file @
2b3737ac
...
@@ -201,10 +201,40 @@ export const getBoxDetailApi = function (id) {
...
@@ -201,10 +201,40 @@ export const getBoxDetailApi = function (id) {
// 获取公众号菜单
// 获取公众号菜单
const
getPublicMenuUrl
=
`
${
_baseUrl
}
api/admin/open/menu`
;
const
getPublicMenuUrl
=
`
${
_baseUrl
}
api/admin/open/menu`
;
export
const
getPublicMenuApi
=
function
(
id
)
{
export
const
getPublicMenuApi
=
function
()
{
return
Vue
.
prototype
.
$fetch
(
getPublicMenuUrl
)
return
Vue
.
prototype
.
$fetch
(
getPublicMenuUrl
)
};
};
// 添加公众号菜单
// 添加公众号菜单
export
const
savePublicMenuApi
=
function
(
json
)
{
export
const
savePublicMenuApi
=
function
(
json
)
{
return
Vue
.
prototype
.
$post
(
getPublicMenuUrl
,
json
)
return
Vue
.
prototype
.
$post
(
getPublicMenuUrl
,
json
)
};
};
// 获取配置列表
const
getConfigListUrl
=
`
${
_baseUrl
}
api/admin/sys/config/list`
;
export
const
getConfigListApi
=
function
(
json
)
{
return
Vue
.
prototype
.
$fetch
(
getConfigListUrl
,
json
)
};
// 新增系统配置
const
saveConfigUrl
=
`
${
_baseUrl
}
api/admin/sys/config`
;
export
const
saveConfigApi
=
function
(
json
)
{
return
Vue
.
prototype
.
$post
(
saveConfigUrl
,
json
)
};
// 更新关键词
const
updateConfigUrl
=
`
${
_baseUrl
}
api/admin/sys/config`
;
export
const
updateConfigApi
=
function
(
config_id
,
json
)
{
return
Vue
.
prototype
.
$put
(
`
${
updateConfigUrl
}
/
${
config_id
}
`
,
json
)
};
// 删除配置
const
delConfigUrl
=
`
${
_baseUrl
}
api/admin/sys/config/`
;
export
const
deleteConfigApi
=
function
(
config_id
)
{
return
Vue
.
prototype
.
$del
(
`
${
delConfigUrl
}${
config_id
}
`
)
};
// 获取配置详情
const
getConfigDetailUrl
=
`
${
_baseUrl
}
api/admin/sys/config/`
;
export
const
getConfigDetailApi
=
function
(
id
)
{
return
Vue
.
prototype
.
$fetch
(
`
${
getConfigDetailUrl
}${
id
}
`
)
};
// 获取素材列表
const
getMediaListUrl
=
`
${
_baseUrl
}
api/admin/open/media/list`
;
export
const
getMediaListApi
=
function
(
json
)
{
return
Vue
.
prototype
.
$fetch
(
getMediaListUrl
,
json
)
};
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