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
cade2375
Commit
cade2375
authored
Aug 14, 2019
by
chenyishuai@singsingenglish.com
Browse files
Options
Browse Files
Download
Plain Diff
814
parents
9eb0f525
5bb62fd3
Changes
19
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
2356 additions
and
2228 deletions
+2356
-2228
index.html
index.html
+4
-4
index.vue
src/components/config/index.vue
+1
-4
marketEnrollmentConversionList.vue
...ponents/conversionList/marketEnrollmentConversionList.vue
+31
-7
periodsConversionList.vue
src/components/conversionList/periodsConversionList.vue
+29
-8
sourceConversionList.vue
src/components/conversionList/sourceConversionList.vue
+1
-8
Address.vue
src/components/framework/address-picker/Address.vue
+131
-152
index.vue
src/components/logistics/index.vue
+102
-74
index.vue
src/components/marketStatistics/index.vue
+20
-1
index.vue
src/components/monthOrder/index.vue
+347
-332
newDialog.vue
src/components/monthOrder/newDialog.vue
+83
-106
index.vue
src/components/notBuyClass/index.vue
+174
-146
index.vue
src/components/order/index.vue
+537
-517
tag.vue
src/components/system/tag.vue
+36
-48
index.vue
src/components/teacher/index.vue
+1
-1
index.vue
src/components/teacherDetail/index.vue
+410
-406
task.vue
src/components/teacherDetail/task.vue
+25
-1
index.vue
src/components/userDetail/index.vue
+389
-410
index.vue
src/components/yunji/index.vue
+29
-1
api.js
src/service/api.js
+6
-2
No files found.
index.html
View file @
cade2375
...
...
@@ -4,15 +4,15 @@
<meta
charset=
"utf-8"
>
<meta
name=
"viewport"
content=
"width=device-width,initial-scale=1.0"
>
<meta
name=
"referrer"
content=
"never"
>
<link
rel=
"stylesheet"
href=
"https://
//
at.alicdn.com/t/font_746649_x1rivf5f5.css"
>
<link
rel=
"stylesheet"
href=
"https://at.alicdn.com/t/font_746649_x1rivf5f5.css"
>
<link
rel=
"stylesheet"
href=
"https://lib.baomitu.com/element-ui/2.11.1/theme-chalk/index.css"
>
<title>
唱唱启蒙-后台
</title>
</head>
<body>
<!-- 先引入 Vue -->
<
script
src=
"https://cdn.bootcss.com/vue/2.5.17/vue.js"
></script
>
<
!-- <script src="https://cdn.bootcss.com/vue/2.5.17/vue.min.js"></script> --
>
<script
src=
"https://
unpkg.com/vuex@3.0.1
"
></script>
<
!--<script src="https://lib.baomitu.com/vue/2.5.17/vue.min.js"></script>--
>
<
script
src=
"https://lib.baomitu.com/vue/2.5.17/vue.js"
></script
>
<script
src=
"https://
lib.baomitu.com/vuex/3.0.1/vuex.min.js
"
></script>
<!-- 引入组件库 -->
<script
src=
"https://cdn.bootcss.com/axios/0.18.0/axios.min.js"
></script>
<script
src=
"https://lib.baomitu.com/element-ui/2.11.1/index.js"
></script>
...
...
src/components/config/index.vue
View file @
cade2375
...
...
@@ -200,10 +200,7 @@
<el-table-column
prop=
"title"
label=
"标题"
></el-table-column>
<el-table-column
label=
"操作"
width=
"120px"
v-if=
"!$store.state.readonly"
>
<
template
slot-scope=
"scope"
>
<el-button
@
click=
"delStarListFn(scope.row)"
type=
"warning"
plain
size=
"mini"
>
删除
</el-button>
<el-button
@
click=
"delStarListFn(scope.row)"
type=
"warning"
plain
size=
"mini"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
...
...
src/components/conversionList/marketEnrollmentConversionList.vue
View file @
cade2375
...
...
@@ -11,8 +11,7 @@
end-placeholder=
"结束日期"
:picker-options=
"
{shortcuts:[today,yesterday,last7Day,last30Day]}"
:default-time="['00:00:00','23:59:59']"
@change="getList"
>
</el-date-picker>
@change="getList">
</el-date-picker>
</el-form-item>
<el-form-item
label=
"商品课时数"
>
<el-select
...
...
@@ -21,14 +20,12 @@
placeholder=
"请选择"
style=
"width: 150px"
clearable
@
change=
"selectChange"
>
@
change=
"selectChange"
>
<el-option
v-for=
"(data,index) in watchList"
:key=
"index"
:label=
"data.title"
:value=
"data.id"
></el-option>
:value=
"data.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"渠道code"
>
...
...
@@ -63,7 +60,13 @@
:row-class-name="tableRowClassName"
:span-method="arraySpanMethod">
<!--height="calc(100vh - 210px)"-->
<el-table-column
prop=
"periods_title"
align=
"center"
min-width=
"80"
fixed
label=
"期数名称"
></el-table-column>
<!--
<el-table-column
prop=
"periods_title"
align=
"center"
min-width=
"80"
fixed
label=
"期数名称"
></el-table-column>
-->
<el-table-column
align=
"center"
fixed
label=
"期数名称"
width=
"120px"
>
<template
slot-scope=
"scope"
>
<div
v-html=
"periodName(scope.row)"
></div>
<!--
{{
periodName
(
scope
.
row
)
}}
-->
</
template
>
</el-table-column>
<el-table-column
prop=
"is_other"
min-width=
"160"
align=
"left"
fixed
label=
"渠道信息"
>
<
template
slot-scope=
"scope"
>
来源:
{{
scope
.
row
.
is_other
==
0
?
"内部"
:
"外部"
}}
<br>
...
...
@@ -178,6 +181,27 @@ export default {
};
},
methods
:
{
periodName
(
val
)
{
let
str
=
''
;
if
(
val
.
goods_id
)
{
str
+=
`【
${
val
.
goods_id
}
】`
}
if
(
val
.
periods_title
)
{
str
+=
`
${
val
.
periods_title
}
`
}
if
(
val
.
watch_num
)
{
str
+=
`
${
val
.
watch_num
}
课时<br>`
}
else
{
str
+=
`<br>`
}
if
(
val
.
start_at
)
{
str
+=
`(
${
val
.
start_at
.
slice
(
5
).
replace
(
'-'
,
''
)}
)`
}
if
(
val
.
has_watch_num
||
val
.
has_watch_num
==
0
)
{
str
+=
`-d
${
val
.
has_watch_num
}
`
}
return
str
},
selectChange
(
value
)
{
this
.
searchFrom
.
watch_num
=
this
.
watchList
[
value
].
title
;
this
.
getList
();
...
...
src/components/conversionList/periodsConversionList.vue
View file @
cade2375
...
...
@@ -87,7 +87,13 @@
@
sort-change=
"sortMethod"
:style=
"
{width: width+'px'}"
fixed>
<el-table-column
prop=
"periods_title"
label=
"期数名称"
></el-table-column>
<!--
<el-table-column
prop=
"periods_title"
label=
"期数名称"
></el-table-column>
-->
<el-table-column
label=
"期数名称"
width=
"170px"
>
<template
slot-scope=
"scope"
>
<div
v-html=
"periodName(scope.row)"
></div>
<!--
{{
periodName
(
scope
.
row
)
}}
-->
</
template
>
</el-table-column>
<el-table-column
prop=
"duration_over_at"
label=
"开课看课时间"
...
...
@@ -134,12 +140,7 @@
</div>
</template>
<
script
>
import
{
getPeriodsConversionListApi
,
getGoodsListApi
,
getPeriodsOtherListApi
,
getTeacherListApi
}
from
"../../service/api"
;
import
{
getPeriodsConversionListApi
,
getGoodsListApi
,
getPeriodsOtherListApi
,
getTeacherListApi
}
from
"../../service/api"
;
import
page
from
"../framework/page"
;
import
{
GOODSTYPE
,
CLASSSOURCE
}
from
"../../util/wordbook"
;
import
{
tipArr3
}
from
"../../util/tipArr"
;
...
...
@@ -242,7 +243,6 @@ export default {
];
}
},
propertyList
:
[],
spanArr
:
[],
contentSpanArr
:
[],
searchFrom
:
{
...
...
@@ -269,6 +269,27 @@ export default {
},
components
:
{
page
},
methods
:
{
periodName
(
val
)
{
let
str
=
''
;
if
(
val
.
goods_id
)
{
str
+=
`【
${
val
.
goods_id
}
】`
}
if
(
val
.
periods_title
)
{
str
+=
`
${
val
.
periods_title
}
<br>`
}
else
{
str
+=
`<br>`
}
if
(
val
.
watch_num
)
{
str
+=
`
${
val
.
watch_num
}
课时`
}
if
(
val
.
start_at
)
{
str
+=
`(
${
val
.
start_at
.
slice
(
5
).
replace
(
'-'
,
''
)}
)`
}
if
(
val
.
has_watch_num
||
val
.
has_watch_num
==
0
)
{
str
+=
`-d
${
val
.
has_watch_num
}
`
}
return
str
},
rendertip
(
h
,
{
column
})
{
// console.log(h)
return
h
(
"span"
,
[
...
...
src/components/conversionList/sourceConversionList.vue
View file @
cade2375
...
...
@@ -170,13 +170,7 @@
</div>
</template>
<
script
>
import
{
getPeriodsConversionListApi
,
getSourceConversionListApi
,
getGoodsListApi
,
getPeriodsOtherListApi
,
getTeacherListApi
}
from
"../../service/api"
;
import
{
getPeriodsConversionListApi
,
getSourceConversionListApi
,
getGoodsListApi
,
getPeriodsOtherListApi
,
getTeacherListApi
}
from
"../../service/api"
;
import
page
from
"../framework/page"
;
import
{
GOODSTYPE
,
CLASSSOURCE
,
ORDERSTATUS
}
from
"../../util/wordbook"
;
import
{
tipArr3
}
from
"../../util/tipArr"
;
...
...
@@ -295,7 +289,6 @@ export default {
teacher_id
:
""
,
periods_title
:
""
},
propertyList
:
[],
watchList
:
[
{
id
:
0
,
title
:
5
},
{
id
:
1
,
title
:
6
},
...
...
src/components/framework/address-picker/Address.vue
View file @
cade2375
...
...
@@ -2,58 +2,34 @@
<div
class=
"address"
>
<section
style=
"width:100%; height: 100%;"
>
<el-form
:model=
'form'
class=
'demo-ruleForm'
ref=
'form'
label-width=
"100px"
:rules=
'rules'
>
<el-row
:gutter=
'20'
>
<el-col
:span=
'20'
>
<el-form-item
prop=
'name'
label=
"收货人"
>
<el-input
v-model=
"form.name"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
'20'
>
<el-col
:span=
'20'
>
<el-form-item
prop=
'mobile'
label=
"手机号"
>
<el-input
v-model=
"form.mobile"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
'20'
class=
'address'
>
<el-col
:span=
'20'
>
<el-form-item
prop=
'province'
label=
"省"
>
<el-select
v-model=
'form.province'
placeholder=
'请选择省'
@
change=
'proChange'
>
<el-option
v-for=
'item in provinces'
:key=
'item.value'
:value=
'item.value'
:label=
"item.label"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
'20'
class=
'address'
>
<el-col
:span=
'20'
>
<el-form-item
prop=
'city'
label=
"市"
>
<el-select
v-model=
'form.city'
placeholder=
'请选择市'
@
change=
'cityChange'
>
<el-option
v-for=
'item in cities'
:key=
'item.value'
:value=
'item.value'
:label=
"item.label"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
'20'
class=
'address'
>
<el-col
:span=
'20'
>
<el-form-item
prop=
'district'
label=
"县/区"
>
<el-select
v-model=
'form.district'
placeholder=
'请选择区/县'
@
change=
'districtChange'
>
<el-option
v-for=
'item in districts'
:key=
'item.value'
:value=
'item.value'
:label=
"item.label"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
'20'
class=
'address'
>
<el-col
:span=
'20'
>
<el-form-item
prop=
'detail'
label=
"详细地址"
>
<el-input
placeholder=
'请填写详细地址'
:number=
'true'
v-model=
'form.detail'
>
</el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
</section>
</div>
...
...
@@ -61,13 +37,15 @@
<
script
>
import
Address
from
'./addr.js'
let
type
=
1
// let provinceValue = 2
// let cityValue = 52
// let provinceValue = 2
// let cityValue = 52
//根据apid查找对象
function
findcity
(
item
)
{
return
item
.
type
==
type
;
}
function
findChildren
(
list
,
value
)
{
let
filtered
=
list
.
filter
((
item
)
=>
{
return
item
.
value
===
value
...
...
@@ -77,6 +55,7 @@
// console.log(filtered)
return
filtered
[
0
].
children
}
//筛选出各省级对象
let
pObj
=
Address
.
filter
(
findcity
)
...
...
@@ -92,14 +71,14 @@
},
computed
:
{
cities
:
function
()
{
if
(
this
.
form
.
province
)
{
if
(
this
.
form
.
province
)
{
return
findChildren
(
pObj
,
this
.
form
.
province
)
}
else
{
return
[]
}
},
districts
:
function
()
{
if
(
this
.
form
.
city
)
{
if
(
this
.
form
.
city
)
{
return
findChildren
(
this
.
cities
,
this
.
form
.
city
)
}
else
{
return
[]
...
...
@@ -109,12 +88,12 @@
data
()
{
return
{
rules
:
{
province
:
[{
required
:
true
,
message
:
'请选择省份'
,
trigger
:
'change'
}],
city
:
[{
required
:
true
,
message
:
'请选择城市'
,
trigger
:
'change'
}],
district
:
[{
required
:
true
,
message
:
'请选择区/县'
,
trigger
:
'change'
}],
detail
:
[{
required
:
true
,
message
:
'请填写详细地址'
,
trigger
:
'change'
}],
name
:
[{
required
:
true
,
message
:
'请填写收货人'
,
trigger
:
'change'
}],
mobile
:
[{
required
:
true
,
message
:
'请填写手机号'
,
trigger
:
'change'
}]
province
:
[{
required
:
true
,
message
:
'请选择省份'
,
trigger
:
'change'
}],
city
:
[{
required
:
true
,
message
:
'请选择城市'
,
trigger
:
'change'
}],
district
:
[{
required
:
true
,
message
:
'请选择区/县'
,
trigger
:
'change'
}],
detail
:
[{
required
:
true
,
message
:
'请填写详细地址'
,
trigger
:
'change'
}],
name
:
[{
required
:
true
,
message
:
'请填写收货人'
,
trigger
:
'change'
}],
mobile
:
[{
required
:
true
,
message
:
'请填写手机号'
,
trigger
:
'change'
}]
},
form
:
{
province
:
this
.
province
,
...
...
@@ -159,7 +138,7 @@
// this.form.mobile = this.mobile
// }
// console.log(this.form)
this
.
form
=
{
this
.
form
=
{
province
:
this
.
province
,
city
:
this
.
city
,
district
:
this
.
district
,
...
...
src/components/logistics/index.vue
View file @
cade2375
<
template
>
<div
class=
"sms"
>
<div
class=
"admin-refresh sms"
>
<div
class=
"section-search"
>
<el-form
ref=
"searchFrom"
:model=
"searchFrom"
label-width=
"100px"
inline
size=
"small"
>
<el-form-item
label=
"用户ID"
>
<el-input
v-model=
"searchFrom.user_id"
style=
"width: 80px"
></el-input>
...
...
@@ -16,13 +17,14 @@
</el-form-item>
-->
<el-form-item
label=
"期数"
>
<el-cascader
:popper-class=
"'refresh-cascader-multi width-480'"
style=
"width: 480px"
:options=
"goodsList"
:props=
"
{value:'id',label:'name'}"
@active-item-change="handleItemChange"
@change="changePeriods"
filterable
v-model="selectedGoods"
>
</el-cascader>
v-model="selectedGoods">
</el-cascader>
</el-form-item>
<el-form-item
label=
"主题"
>
<el-select
filterable
v-model=
"searchFrom.theme_id"
placeholder=
"请选择"
clearable
>
...
...
@@ -44,55 +46,63 @@
<el-button
type=
"primary"
plain
@
click=
"exportTable"
v-if=
"$store.state.export"
>
导出当前待发货
</el-button>
<el-button
type=
"primary"
plain
@
click=
"exportReceiveInfoTable"
>
按期数导出收货信息
</el-button>
</el-form-item>
<el-form-item
v-if=
"$store.state.im
port"
>
<el-form-item
v-if=
"$store.state.ex
port"
>
<el-upload
:show-file-list=
"false"
:onSuccess=
"fileSuccess"
:headers=
"uploadHeader"
:data=
"
{param_token:param_token}"
action="/api/admin/order/deliver/list/import"
>
action="/api/admin/order/deliver/list/import">
<el-button
type=
"success"
plain
>
导入发货信息
</el-button>
</el-upload>
</el-form-item>
</el-form>
<el-tabs
v-model=
"searchFrom.type"
type=
"card"
@
tab-click=
"handleClick"
>
</div>
<el-tabs
v-model=
"searchFrom.type"
type=
"card"
@
tab-click=
"handleClick"
style=
"padding-top: 10px;background-color: #fff"
>
<el-tab-pane
label=
"当前待发货"
name=
"0"
></el-tab-pane>
<el-tab-pane
label=
"所有待发货"
name=
"1"
></el-tab-pane>
<el-tab-pane
label=
"所有已发货"
name=
"2"
></el-tab-pane>
</el-tabs>
<el-table
:data=
"deliverList"
size=
"mini"
style=
"width: 100%"
>
<el-table-column
width=
"2
2
0"
class=
"f-c"
label=
"用户"
>
<el-table-column
width=
"2
0
0"
class=
"f-c"
label=
"用户"
>
<template
slot-scope=
"scope"
>
<img
class=
"avatar"
:src=
"scope.row.user_avatar"
/>
<img
style=
"vertical-align: top"
class=
"avatar"
:src=
"scope.row.user_avatar"
/>
<span
style=
"display: inline-block;"
>
{{
scope
.
row
.
user_nickname
}}
<br
/>
(ID:
{{
scope
.
row
.
user_id
}}
)
<br
/>
手机:
{{
scope
.
row
.
user_mobile
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"address"
label=
"收货地址"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
receive_name
}}
<br
/>
<br/>
{{
scope
.
row
.
receive_mobile
}}
<br
/>
<br/>
{{
scope
.
row
.
province_name
}}{{
scope
.
row
.
city_name
}}{{
scope
.
row
.
area_name
}}{{
scope
.
row
.
address
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"periods_title"
label=
"期数名称"
></el-table-column>
<!--<el-table-column prop="periods_title" label="期数名称"></el-table-column>-->
<el-table-column
prop=
"periods_title"
label=
"期数名称"
>
<
template
slot-scope=
"scope"
>
<div
v-html=
"periodName(scope.row)"
></div>
<!--
{{
periodName
(
scope
.
row
)
}}
-->
</
template
>
</el-table-column>
<el-table-column
prop=
"theme_name"
label=
"主题"
></el-table-column>
<el-table-column
prop=
"deliver_start_at"
label=
"预计发货开始时间"
></el-table-column>
<el-table-column
prop=
"deliver_end_at"
label=
"预计发货结束时间"
></el-table-column>
<el-table-column
prop=
"deliver_at"
label=
"发货时间"
></el-table-column>
<el-table-column
prop=
"deliver_start_at"
label=
"预计发货开始时间"
width=
"100px"
></el-table-column>
<el-table-column
prop=
"deliver_end_at"
label=
"预计发货结束时间"
width=
"100px"
></el-table-column>
<el-table-column
prop=
"deliver_at"
label=
"发货时间"
width=
"100px"
></el-table-column>
<el-table-column
prop=
"status"
label=
"物流状态"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
status
|
LogisticsStatusFil
}}
<br
/>
{{
scope
.
row
.
status
|
LogisticsStatusFil
}}
<br/>
<span
v-if=
"searchFrom.type==2"
>
名称:
{{
scope
.
row
.
express_name
}}
<br
/>
名称:
{{
scope
.
row
.
express_name
}}
<br/>
单号:
{{
scope
.
row
.
express_no
}}
</span>
</
template
>
...
...
@@ -182,6 +192,27 @@ export default {
this
.
init
();
},
methods
:
{
periodName
(
val
)
{
let
str
=
''
;
if
(
val
.
goods_id
)
{
str
+=
`【
${
val
.
goods_id
}
】`
}
if
(
val
.
periods_title
)
{
str
+=
`
${
val
.
periods_title
}
<br>`
}
else
{
str
+=
`<br>`
}
if
(
val
.
watch_num
)
{
str
+=
`
${
val
.
watch_num
}
课时`
}
if
(
val
.
start_at
)
{
str
+=
`(
${
val
.
start_at
.
slice
(
5
).
replace
(
'-'
,
''
)}
)`
}
if
(
val
.
has_watch_num
||
val
.
has_watch_num
==
0
)
{
str
+=
`-d
${
val
.
has_watch_num
}
`
}
return
str
},
cancelEvent
()
{
this
.
showFlag
=
false
;
},
...
...
@@ -402,9 +433,6 @@ export default {
</
script
>
<
style
scoped
>
.sms
{
padding
:
20px
0
;
}
.el-button
+
.el-button
{
margin-left
:
0
;
/* margin-top: 10px; */
...
...
src/components/marketStatistics/index.vue
View file @
cade2375
...
...
@@ -10,7 +10,7 @@
:span-method="arraySpanMethod">
<el-table-column
min-width=
"180"
prop=
"wait_join_num"
align=
"left"
fixed=
"left"
label=
"期数总状况"
>
<template
slot-scope=
"scope"
>
期数名称:
{{
scope
.
row
.
title
}}
期数名称:
{{
scope
.
row
.
title
==
'合计'
?
'合计'
:
periodName
(
scope
.
row
)
}}
<br
/>
开始时间:
{{
scope
.
row
.
start_at
}}
<br
/>
...
...
@@ -77,6 +77,25 @@ export default {
};
},
methods
:
{
periodName
(
val
)
{
let
str
=
''
;
if
(
val
.
goods_id
)
{
str
+=
`【
${
val
.
goods_id
}
】`
}
if
(
val
.
title
)
{
str
+=
`
${
val
.
title
}
`
}
if
(
val
.
watch_num
)
{
str
+=
`
${
val
.
watch_num
}
课时`
}
if
(
val
.
start_at
)
{
str
+=
`(
${
val
.
start_at
.
slice
(
5
).
replace
(
'-'
,
''
)}
)`
}
if
(
val
.
has_watch_num
||
val
.
has_watch_num
==
0
)
{
str
+=
`-d
${
val
.
has_watch_num
}
`
}
return
str
},
initPage
()
{
getPeriodsClassCurDataApi
().
then
(
res
=>
{
this
.
list
=
res
;
...
...
src/components/monthOrder/index.vue
View file @
cade2375
This diff is collapsed.
Click to expand it.
src/components/monthOrder/newDialog.vue
View file @
cade2375
...
...
@@ -6,8 +6,7 @@
:visible
.
sync=
"newdialogObj.show"
width=
"70%"
>
<el-form
ref=
"form"
:model=
"form"
label-width=
"120px"
:rules=
"rules"
>
<el-row>
<el-col
:span=
"10"
>
<el-form-item
label=
"商品名称"
prop=
"goods_id"
>
<el-select
v-model=
"form.goods_id"
placeholder=
"请选择"
@
change=
"onOptionChange"
>
<el-option
...
...
@@ -18,7 +17,6 @@
</el-option>
</el-select>
</el-form-item>
</el-col>
<!--
<el-col
:span=
"10"
>
<el-form-item
label=
"期数名称"
prop=
"periods_id"
>
<el-select
v-model=
"form.periods_id"
placeholder=
"请选择"
>
...
...
@@ -31,16 +29,13 @@
</el-select>
</el-form-item>
</el-col>
-->
</el-row>
<el-row>
<el-col
:span=
"10"
>
<el-form-item
label=
"用户ID"
prop=
"user_id"
>
<el-form-item
label=
"用户ID"
prop=
"user_id"
>
<el-input
width=
'100'
v-model=
"form.user_id"
></el-input>
<el-button
type=
"success"
@
click=
"onAddUser"
>
+添加用户
</el-button>
</el-form-item>
</el-col>
<el-col
:span=
"10"
>
<el-form-item
label=
"添加推广人"
>
<el-form-item
label=
"添加推广人"
>
<!--
<el-input
v-model=
"form.invite_id"
></el-input>
-->
<el-select
v-model=
"form.invite_id"
...
...
@@ -57,10 +52,8 @@
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"10"
>
<el-form-item
label=
"支付类型"
prop=
"order_type"
>
<el-select
v-model=
"form.order_type"
placeholder=
"请选择"
>
<el-option
...
...
@@ -72,16 +65,10 @@
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"10"
>
<el-form-item
label=
"实付金额(元)"
prop=
"money"
>
<el-form-item
label=
"实付金额(元)"
prop=
"money"
>
<el-input-number
v-model=
"form.money"
></el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"10"
>
<el-form-item
label=
"支付时间"
prop=
"pay_at"
>
<el-form-item
label=
"支付时间"
prop=
"pay_at"
>
<el-date-picker
v-model=
"form.pay_at"
type=
"datetime"
...
...
@@ -90,31 +77,21 @@
placeholder=
"选择日期时间"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col
:span=
"10"
>
<el-form-item
label=
"备注"
>
<el-input
type=
"textarea"
v-model=
"form.desc"
></el-input>
</el-form-item>
</el-col>
<el-col
:span=
"10"
v-if=
"form.order_type!=2"
>
<el-form-item
label=
"订单号"
>
<el-input
v-model=
"form.out_trade_no"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<vue-address
:province=
"form.province"
:city=
"form.city"
:district=
"form.district"
:detail=
"form.address"
:mobile=
"form.receive_mobile"
:name=
"form.receive_name"
@
change=
"handlerAddressChange"
>
</vue-address>
</el-col>
</el-row>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"newdialogObj.show = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"saveAddOrder(form)"
>
确定
</el-button>
</div>
<el-dialog
:modal=
"false"
:visible
.
sync=
"addShow"
>
<el-dialog
:modal=
"false"
:visible
.
sync=
"addShow"
>
<el-form
label-width=
"90px"
>
<!--
<el-form-item
label=
"用户id"
>
-->
<!--
<el-input
v-model=
"addId"
></el-input>
-->
...
...
src/components/notBuyClass/index.vue
View file @
cade2375
...
...
@@ -35,12 +35,14 @@
</
template
>
</el-table-column>
<el-table-column
prop=
"class_name"
label=
"班级名称"
>
</el-table-column>
<el-table-column
label=
"期数标题"
prop=
"periods_name"
>
</el-table-column>
<el-table-column
label=
"商品名称"
prop=
"goods_name"
>
<el-table-column
prop=
"class_name"
label=
"班级名称"
></el-table-column>
<el-table-column
label=
"期数名称"
prop=
"periods_name"
width=
"170px"
>
<
template
slot-scope=
"scope"
>
<div
v-html=
"periodName(scope.row)"
></div>
<!--
{{
periodName
(
scope
.
row
)
}}
-->
</
template
>
</el-table-column>
<el-table-column
label=
"商品名称"
prop=
"goods_name"
></el-table-column>
<el-table-column
label=
"手机号"
prop=
"mobile"
>
</el-table-column>
<el-table-column
prop=
"created_at"
label=
"创建时间"
sortable
>
...
...
@@ -54,19 +56,19 @@
</
template
>
</el-table-column>
</el-table>
<page
:nowPage=
"nowPage"
:total=
"total"
@
pageChange=
"onPageChange"
@
sizeChange=
"onSizeChange"
/>
<page
:nowPage=
"nowPage"
:total=
"total"
@
pageChange=
"onPageChange"
@
sizeChange=
"onSizeChange"
/>
<entrance
:entranceObj=
"entranceObj"
/>
</div>
</template>
<
script
>
import
entrance
from
"./entrance"
;
import
{
getClassConfigApi
,
getGoodsListApi
,
updateDescApi
,
exportExcelApi
}
from
"../../service/api"
;
import
page
from
"../framework/page"
;
import
entrance
from
"./entrance"
;
import
{
getClassConfigApi
,
getGoodsListApi
,
updateDescApi
,
exportExcelApi
}
from
"../../service/api"
;
import
page
from
"../framework/page"
;
import
{
GOODSTYPE
}
from
"../../util/wordbook"
;
export
default
{
export
default
{
name
:
"notBuyClass"
,
data
()
{
return
{
...
...
@@ -78,21 +80,21 @@ export default {
title
:
"无需登录入口"
,
show
:
false
},
searchFrom
:
{
user_id
:
""
,
goods_id
:
""
,
mobile
:
""
,
searchFrom
:
{
user_id
:
""
,
goods_id
:
""
,
mobile
:
""
,
},
goodList
:
[],
goodList
:
[],
};
},
components
:
{
entrance
,
page
},
filters
:
{
filterGoods
(
val
)
{
return
'['
+
GOODSTYPE
[
val
.
goods_type
]
+
']'
+
'['
+
val
.
current_price
/
100
+
'元]'
+
val
.
name
filters
:
{
filterGoods
(
val
)
{
return
'['
+
GOODSTYPE
[
val
.
goods_type
]
+
']'
+
'['
+
val
.
current_price
/
100
+
'元]'
+
val
.
name
}
},
mounted
()
{
...
...
@@ -101,6 +103,29 @@ export default {
},
methods
:
{
periodName
(
val
)
{
let
str
=
''
;
if
(
!
val
.
periods_name
)
{
str
=
'-'
}
else
{
if
(
val
.
goods_id
)
{
str
+=
`【
${
val
.
goods_id
}
】`
}
if
(
val
.
periods_name
)
{
str
+=
`
${
val
.
periods_name
}
<br>`
}
if
(
val
.
watch_num
)
{
str
+=
`
${
val
.
watch_num
}
课时`
}
if
(
val
.
start_at
)
{
str
+=
`(
${
val
.
start_at
.
slice
(
5
).
replace
(
'-'
,
''
)}
)`
}
if
(
val
.
has_watch_num
||
val
.
has_watch_num
==
0
)
{
str
+=
`-d
${
val
.
has_watch_num
}
`
}
}
return
str
},
onPageChange
(
val
)
{
this
.
nowPage
=
val
;
this
.
getList
();
...
...
@@ -116,29 +141,29 @@ export default {
page
:
this
.
nowPage
};
// 搜索筛选
if
(
this
.
searchFrom
.
user_id
)
{
json
.
user_id
=
this
.
searchFrom
.
user_id
if
(
this
.
searchFrom
.
user_id
)
{
json
.
user_id
=
this
.
searchFrom
.
user_id
}
if
(
this
.
searchFrom
.
goods_id
)
{
json
.
goods_id
=
this
.
searchFrom
.
goods_id
if
(
this
.
searchFrom
.
goods_id
)
{
json
.
goods_id
=
this
.
searchFrom
.
goods_id
}
if
(
this
.
searchFrom
.
nickname
)
{
json
.
nickname
=
this
.
searchFrom
.
nickname
if
(
this
.
searchFrom
.
nickname
)
{
json
.
nickname
=
this
.
searchFrom
.
nickname
}
if
(
this
.
searchFrom
.
mobile
)
{
json
.
mobile
=
this
.
searchFrom
.
mobile
if
(
this
.
searchFrom
.
mobile
)
{
json
.
mobile
=
this
.
searchFrom
.
mobile
}
getClassConfigApi
(
json
).
then
(
res
=>
{
this
.
total
=
res
.
total
;
this
.
configList
=
res
.
list
;
this
.
configList
=
res
.
list
;
});
},
getGoodsOption
(){
getGoodsOption
()
{
let
json
=
{
page
:
1
,
limit
:
100
};
getGoodsListApi
(
json
).
then
(
res
=>
{
getGoodsListApi
(
json
).
then
(
res
=>
{
this
.
goodList
=
res
.
list
;
})
},
...
...
@@ -146,15 +171,15 @@ export default {
this
.
$prompt
(
''
,
'编辑备注'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
inputType
:
'textarea'
,
inputType
:
'textarea'
,
inputValue
:
desc
||
''
}).
then
(({
value
})
=>
{
}).
then
(({
value
})
=>
{
this
.
$confirm
(
'确定保存?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
updateDescApi
({
desc
:
value
},
id
).
then
(
res
=>
{
}).
then
(()
=>
{
updateDescApi
({
desc
:
value
},
id
).
then
(
res
=>
{
this
.
$message
({
type
:
'success'
,
message
:
'编辑备注成功'
...
...
@@ -164,48 +189,51 @@ export default {
});
})
},
exportTable
()
{
exportTable
()
{
let
json
=
{};
if
(
this
.
searchFrom
.
user_id
)
{
json
.
user_id
=
this
.
searchFrom
.
user_id
if
(
this
.
searchFrom
.
user_id
)
{
json
.
user_id
=
this
.
searchFrom
.
user_id
}
if
(
this
.
searchFrom
.
goods_id
)
{
json
.
goods_id
=
this
.
searchFrom
.
goods_id
if
(
this
.
searchFrom
.
goods_id
)
{
json
.
goods_id
=
this
.
searchFrom
.
goods_id
}
if
(
this
.
searchFrom
.
mobile
)
{
json
.
mobile
=
this
.
searchFrom
.
mobile
if
(
this
.
searchFrom
.
mobile
)
{
json
.
mobile
=
this
.
searchFrom
.
mobile
}
if
(
this
.
searchFrom
.
nickname
)
{
json
.
nickname
=
this
.
searchFrom
.
nickname
if
(
this
.
searchFrom
.
nickname
)
{
json
.
nickname
=
this
.
searchFrom
.
nickname
}
exportExcelApi
(
'/api/admin/user/receive/course/log/export'
,
json
,
'扫码入课列表'
)
},
}
};
};
</
script
>
<
style
scoped
lang=
"less"
>
.not_buy {
.not_buy {
.head {
margin-bottom: 10px;
}
width: 100%;
padding: 20px 0;
.page-div {
text-align: center;
padding-top: 20px;
}
}
}
.avatar {
width: 50px;
min-width:
50px !important;
min-width:
50px !important;
height: 50px;
border-radius: 50%;
line-height:
1;
line-height:
1;
}
</
style
>
<
style
>
.userInfo
>
div
{
.userInfo
>
div
{
display
:
flex
;
flex-flow
:
row
nowrap
;
justify-content
:
flex-start
;
...
...
src/components/order/index.vue
View file @
cade2375
This diff is collapsed.
Click to expand it.
src/components/system/tag.vue
View file @
cade2375
<
template
>
<div
class=
"admin-refresh"
v-loading=
"loading"
>
<div
class=
"section-search search-single"
>
<el-form
ref=
"searchFrom"
:model=
"searchFrom"
label-width=
"80px"
inline
>
<el-form
label-width=
"80px"
inline
>
<el-form-item>
<!--
<el-cascader
style=
"width: 280px"
placeholder=
"选择标签"
:props=
"searchProps"
clearable
></el-cascader>
-->
<el-input
placeholder=
"输入标签名搜索"
v-model=
"filterText"
></el-input>
</el-form-item>
<el-form-item>
<div
class=
"search-btn-wrapper"
>
<!--
<el-button
@
click=
"onSearch"
type=
"primary"
plain
>
搜索
</el-button>
-->
<el-button
@
click=
"dialog
Toggle
"
type=
"warning"
plain
>
高级搜索
</el-button>
<el-button
@
click=
"dialog
User.show = !dialogUser.show;
"
type=
"warning"
plain
>
高级搜索
</el-button>
<!--
<el-button
v-if=
"!$store.state.readonly"
@
click=
"onAdd"
type=
"success"
plain
>
新增标签
</el-button>
-->
</div>
</el-form-item>
...
...
@@ -23,7 +19,7 @@
<el-tree
:data=
"treeData"
node-key=
"id"
ref=
"tagTree"
:props=
"
tagProps
"
:props=
"
{children: 'children', label: 'name'}
"
:indent="40"
@node-expand="tagExpand"
@node-collapse="tagCollapse"
...
...
@@ -50,37 +46,46 @@
</el-tree>
</div>
<el-dialog
:title=
"dialog.title"
:visible
.
sync=
"dialog.show"
width=
"800px"
title=
"高级搜索"
>
<el-dialog
:title=
"dialog.title"
:visible
.
sync=
"dialog.show"
width=
"500px"
>
<el-form
ref=
"dialogForm"
:rules=
"dialog.form.rules"
:model=
"dialog.form"
label-width=
"100px"
>
<el-form-item
label=
"ID:"
prop=
"id"
style=
"display: none;"
>
<el-input
v-model=
"dialog.form.id"
maxlength=
"10"
type=
"text"
></el-input>
</el-form-item>
<el-form-item
label=
"PID:"
prop=
"pid"
style=
"display: none;"
>
<el-input
v-model=
"dialog.form.pid"
maxlength=
"10"
type=
"text"
></el-input>
</el-form-item>
<el-form-item
label=
"标签名称:"
prop=
"name"
>
<el-input
v-model=
"dialog.form.name"
maxlength=
"10"
type=
"text"
></el-input>
</el-form-item>
<el-form-item
label=
"标签备注:"
prop=
"cover"
>
<el-input
v-model=
"dialog.form.cover"
maxlength=
"50"
type=
"textarea"
:rows=
"3"
></el-input>
</el-form-item>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"dialogToggle"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"dialogSave"
>
确定
</el-button>
</span>
</el-dialog>
<el-dialog
:visible
.
sync=
"dialogUser.show"
width=
"800px"
title=
"高级搜索"
>
<div
style=
"display: flex;margin-bottom: 20px;"
>
<el-button
style=
"margin-right: 20px; width: 70px;"
type=
"primary"
v-if=
"!$store.state.readonly && $store.state.export"
plain
:disabled=
"!tableData.length"
@
click=
"exportExcel"
>
导出
</el-button>
<el-cascader
style=
"width: calc(100% - 90px)"
placeholder=
"选择标签"
clearable
@
change=
"conditionsChange"
:options=
"treeDataOrigin"
:props=
"
{ value: 'id', label: 'name', multiple: true, checkStrictly: true }">
</el-cascader>
</div>
<el-table
:data=
"tableData"
border
>
<el-table-column
className=
"f-c"
label=
"用户"
>
<template
slot-scope=
"scope"
>
<img
class=
"avatar"
:src=
"scope.row.avatar"
>
{{
scope
.
row
.
nickname
}}
<br>
(ID:
{{
scope
.
row
.
user_id
}}
)
</
template
>
</el-table-column>
<el-table-column
prop=
"baby_name"
label=
"宝宝名称"
></el-table-column>
<el-table-column
prop=
"birthday"
label=
"宝宝生日"
></el-table-column>
<el-table-column
prop=
"sex"
label=
"宝宝性别"
:formatter=
"sexFormatter"
></el-table-column>
<el-table-column
prop=
"mobile"
label=
"手机号码"
></el-table-column>
<!--<el-table-column label="操作" v-if="!$store.state.readonly" width="100">
<template slot-scope="scope">
<el-button size="mini" plain type="primary" @click="onEdit(scope.row)">编辑</el-button>
</template>
</el-table-column>-->
</el-table>
<page
:total=
"total"
:limit=
"limit"
@
pageChange=
"onPageChange"
@
sizeChange=
"onSizeChange"
/>
<!--<span slot="footer" class="dialog-footer">
<el-button @click="dialogToggle">取消</el-button>
<el-button type="primary" @click="dialogSave">确定</el-button>
</span>-->
</el-dialog>
</div>
</template>
...
...
@@ -96,28 +101,15 @@
conditions
:
[],
filterText
:
''
,
tagProps
:
{
children
:
'children'
,
label
:
'name'
},
tagExpanded
:
[
0
],
tagExpandedWait
:
''
,
searchFrom
:
{
id
:
''
,
name
:
''
,
mobile
:
''
,
id_card
:
''
,
type
:
''
,
status
:
''
,
start_in
:
''
,
over_in
:
''
},
startTime
:
[],
tableData
:
[],
treeData
:
[],
treeDataOrigin
:
[],
dialogUser
:
{
show
:
false
},
dialog
:
{
title
:
''
,
show
:
false
,
...
...
@@ -170,19 +162,18 @@
this
.
getUserData
()
},
getUserData
(){
getUserData
(){
// 搜索用户
let
json
=
{
conditions
:
JSON
.
stringify
(
this
.
conditions
),
limit
:
this
.
limit
,
page
:
this
.
nowPage
}
getTagUserApi
(
json
).
then
(
res
=>
{
this
.
tableData
=
res
.
list
})
},
filterNode
(
value
,
data
)
{
filterNode
(
value
,
data
)
{
// 搜索标签
if
(
!
value
)
return
true
;
return
data
.
name
.
indexOf
(
value
)
!==
-
1
;
},
...
...
@@ -236,21 +227,20 @@
});
},
tagExpand
(
data
,
node
,
el
)
{
tagExpand
(
data
,
node
,
el
)
{
// 标签展开(记录树的状态)
//console.log(node)
if
(
node
.
expanded
)
{
this
.
tagExpanded
.
push
(
node
.
data
.
id
)
}
},
tagCollapse
(
data
,
node
,
el
)
{
tagCollapse
(
data
,
node
,
el
)
{
// 标签收起(记录树的状态)
//console.log(node)
if
(
node
.
expanded
)
{
this
.
tagExpanded
.
splice
(
this
.
tagExpanded
.
findIndex
(
item
=>
item
==
node
.
data
.
id
),
1
)
}
},
getData
()
{
getData
()
{
// 获取标签
getTagApi
().
then
(
res
=>
{
this
.
treeDataOrigin
=
res
;
this
.
treeData
=
[{
...
...
@@ -263,7 +253,6 @@
weight
:
0
,
}]
});
},
onAdd
(
node
)
{
...
...
@@ -278,10 +267,9 @@
});
},
onEdit
(
node
,
data
)
{
console
.
log
(
el
)
console
.
log
(
node
)
console
.
log
(
data
)
onEdit
(
node
,
data
)
{
//console.log(node)
//console.log(data)
let
item
=
node
.
data
;
this
.
dialogToggle
();
this
.
dialogReset
();
...
...
@@ -299,7 +287,7 @@
},
conditionsChange
(
val
){
console
.
log
(
val
);
//
console.log(val);
let
arr
=
[];
if
(
val
.
length
)
{
val
.
forEach
(
v
=>
{
...
...
src/components/teacher/index.vue
View file @
cade2375
...
...
@@ -550,7 +550,7 @@
<
style
scoped
lang=
"less"
>
@import "../../util/public";
.user{
height: 100%;
/*height: 100%;*/
overflow: auto;
padding: 20px 0;
.btn-content{
...
...
src/components/teacherDetail/index.vue
View file @
cade2375
This diff is collapsed.
Click to expand it.
src/components/teacherDetail/task.vue
View file @
cade2375
...
...
@@ -25,7 +25,8 @@
<div
class=
"title"
style=
"width:8%"
>
<div
class=
"header bg-h"
>
期数
</div>
<div>
{{
data
.
title
}}
<!--
{{
data
.
title
}}
-->
<div
v-html=
"periodName(data)"
></div>
</div>
</div>
<div
class=
"over_work"
style=
"background-color: #fffbe4"
>
...
...
@@ -563,6 +564,29 @@
}
}
,
methods
:{
periodName
(
val
)
{
let
str
=
''
;
if
(
!
val
.
title
)
{
str
=
'-'
}
else
{
if
(
val
.
goods_id
)
{
str
+=
`【${val.goods_id
}
】`
}
if
(
val
.
title
)
{
str
+=
`${val.title
}
<br>`
}
if
(
val
.
watch_num
)
{
str
+=
`${val.watch_num
}
课时`
}
if
(
val
.
start_at
)
{
str
+=
`(${val.start_at.slice(5).replace('-', '')
}
)`
}
if
(
val
.
has_watch_num
||
val
.
has_watch_num
==
0
)
{
str
+=
`-d${val.has_watch_num
}
`
}
}
return
str
}
,
formatTime
(
date
){
let
year
=
date
.
getFullYear
();
let
Month
=
date
.
getMonth
()
+
1
;
...
...
src/components/userDetail/index.vue
View file @
cade2375
This diff is collapsed.
Click to expand it.
src/components/yunji/index.vue
View file @
cade2375
...
...
@@ -147,7 +147,12 @@
<div
v-if=
'scope.row.user_id === 0'
>
用户未绑定
</div>
</
template
>
</el-table-column>
<el-table-column
prop=
"periods_title"
label=
"期数"
>
<!--<el-table-column prop="periods_title" label="期数名称"></el-table-column>-->
<el-table-column
prop=
"periods_title"
label=
"期数名称"
width=
"150px"
>
<
template
slot-scope=
"scope"
>
<div
v-html=
"periodName(scope.row)"
></div>
<!--
{{
periodName
(
scope
.
row
)
}}
-->
</
template
>
</el-table-column>
<el-table-column
prop=
"goods_name"
label=
"商品名称"
>
</el-table-column>
...
...
@@ -516,6 +521,29 @@ export default {
});
},
methods
:
{
periodName
(
val
)
{
let
str
=
''
;
if
(
!
val
.
periods_title
)
{
str
=
'-'
}
else
{
if
(
val
.
goods_id
)
{
str
+=
`【
${
val
.
goods_id
}
】`
}
if
(
val
.
periods_title
)
{
str
+=
`
${
val
.
periods_title
}
<br>`
}
if
(
val
.
watch_num
)
{
str
+=
`
${
val
.
watch_num
}
课时`
}
if
(
val
.
start_at
)
{
str
+=
`(
${
val
.
start_at
.
slice
(
5
).
replace
(
'-'
,
''
)}
)`
}
if
(
val
.
has_watch_num
||
val
.
has_watch_num
==
0
)
{
str
+=
`-d
${
val
.
has_watch_num
}
`
}
}
return
str
},
initClearOtherOrder
(
id
){
this
.
$confirm
(
'确认清除?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
...
...
src/service/api.js
View file @
cade2375
...
...
@@ -1305,7 +1305,7 @@ export const getStaffRecordApi = function (json) {
// 系统配置设备
export
const
getTeacherTypeListApi
=
function
(
json
)
{
return
Vue
.
prototype
.
$fetch
(
`
${
_baseUrl
}
api/admin/teacher/type/list`
,
json
)
};
};
export
const
postTeacherTypeListApi
=
function
(
json
)
{
return
Vue
.
prototype
.
$post
(
`
${
_baseUrl
}
api/admin/teacher/type/add`
,
json
)
};
...
...
@@ -1316,3 +1316,7 @@ export const postMediaConvertApi = function (json) {
return
Vue
.
prototype
.
$post
(
`
${
_baseUrl
}
api/public/media/convert`
,
json
)
};
///api/public/media/convert
// 最近更新时间
export
const
getUpdateTimeApi
=
function
()
{
return
Vue
.
prototype
.
$fetch
(
`
${
_baseUrl
}
api/admin/get/report/time`
)
};
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