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
5bb62fd3
Commit
5bb62fd3
authored
Aug 13, 2019
by
赵茹林
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
期数名称
parent
e9d96da5
Changes
16
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
2106 additions
and
1915 deletions
+2106
-1915
index.html
index.html
+2
-1
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
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
index.vue
src/components/notBuyClass/index.vue
+175
-147
index.vue
src/components/order/index.vue
+538
-512
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 @
5bb62fd3
...
@@ -10,7 +10,8 @@
...
@@ -10,7 +10,8 @@
</head>
</head>
<body>
<body>
<!-- 先引入 Vue -->
<!-- 先引入 Vue -->
<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.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://lib.baomitu.com/vuex/3.0.1/vuex.min.js"
></script>
<!-- 引入组件库 -->
<!-- 引入组件库 -->
<script
src=
"https://lib.baomitu.com/axios/0.18.0/axios.min.js"
></script>
<script
src=
"https://lib.baomitu.com/axios/0.18.0/axios.min.js"
></script>
...
...
src/components/config/index.vue
View file @
5bb62fd3
...
@@ -200,10 +200,7 @@
...
@@ -200,10 +200,7 @@
<el-table-column
prop=
"title"
label=
"标题"
></el-table-column>
<el-table-column
prop=
"title"
label=
"标题"
></el-table-column>
<el-table-column
label=
"操作"
width=
"120px"
v-if=
"!$store.state.readonly"
>
<el-table-column
label=
"操作"
width=
"120px"
v-if=
"!$store.state.readonly"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-button
<el-button
@
click=
"delStarListFn(scope.row)"
type=
"warning"
plain
size=
"mini"
>
删除
</el-button>
@
click=
"delStarListFn(scope.row)"
type=
"warning"
plain
size=
"mini"
>
删除
</el-button>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
...
...
src/components/conversionList/marketEnrollmentConversionList.vue
View file @
5bb62fd3
...
@@ -11,8 +11,7 @@
...
@@ -11,8 +11,7 @@
end-placeholder=
"结束日期"
end-placeholder=
"结束日期"
:picker-options=
"
{shortcuts:[today,yesterday,last7Day,last30Day]}"
:picker-options=
"
{shortcuts:[today,yesterday,last7Day,last30Day]}"
:default-time="['00:00:00','23:59:59']"
:default-time="['00:00:00','23:59:59']"
@change="getList"
@change="getList">
</el-date-picker>
>
</el-date-picker>
</el-form-item>
</el-form-item>
<el-form-item
label=
"商品课时数"
>
<el-form-item
label=
"商品课时数"
>
<el-select
<el-select
...
@@ -21,14 +20,12 @@
...
@@ -21,14 +20,12 @@
placeholder=
"请选择"
placeholder=
"请选择"
style=
"width: 150px"
style=
"width: 150px"
clearable
clearable
@
change=
"selectChange"
@
change=
"selectChange"
>
>
<el-option
<el-option
v-for=
"(data,index) in watchList"
v-for=
"(data,index) in watchList"
:key=
"index"
:key=
"index"
:label=
"data.title"
:label=
"data.title"
:value=
"data.id"
:value=
"data.id"
></el-option>
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"渠道code"
>
<el-form-item
label=
"渠道code"
>
...
@@ -63,7 +60,13 @@
...
@@ -63,7 +60,13 @@
:row-class-name="tableRowClassName"
:row-class-name="tableRowClassName"
:span-method="arraySpanMethod">
:span-method="arraySpanMethod">
<!--height="calc(100vh - 210px)"-->
<!--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=
"渠道信息"
>
<el-table-column
prop=
"is_other"
min-width=
"160"
align=
"left"
fixed
label=
"渠道信息"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
来源:
{{
scope
.
row
.
is_other
==
0
?
"内部"
:
"外部"
}}
<br>
来源:
{{
scope
.
row
.
is_other
==
0
?
"内部"
:
"外部"
}}
<br>
...
@@ -178,6 +181,27 @@ export default {
...
@@ -178,6 +181,27 @@ export default {
};
};
},
},
methods
:
{
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
)
{
selectChange
(
value
)
{
this
.
searchFrom
.
watch_num
=
this
.
watchList
[
value
].
title
;
this
.
searchFrom
.
watch_num
=
this
.
watchList
[
value
].
title
;
this
.
getList
();
this
.
getList
();
...
...
src/components/conversionList/periodsConversionList.vue
View file @
5bb62fd3
...
@@ -87,7 +87,13 @@
...
@@ -87,7 +87,13 @@
@
sort-change=
"sortMethod"
@
sort-change=
"sortMethod"
:style=
"
{width: width+'px'}"
:style=
"
{width: width+'px'}"
fixed>
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
<el-table-column
prop=
"duration_over_at"
prop=
"duration_over_at"
label=
"开课看课时间"
label=
"开课看课时间"
...
@@ -134,12 +140,7 @@
...
@@ -134,12 +140,7 @@
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
{
import
{
getPeriodsConversionListApi
,
getGoodsListApi
,
getPeriodsOtherListApi
,
getTeacherListApi
}
from
"../../service/api"
;
getPeriodsConversionListApi
,
getGoodsListApi
,
getPeriodsOtherListApi
,
getTeacherListApi
}
from
"../../service/api"
;
import
page
from
"../framework/page"
;
import
page
from
"../framework/page"
;
import
{
GOODSTYPE
,
CLASSSOURCE
}
from
"../../util/wordbook"
;
import
{
GOODSTYPE
,
CLASSSOURCE
}
from
"../../util/wordbook"
;
import
{
tipArr3
}
from
"../../util/tipArr"
;
import
{
tipArr3
}
from
"../../util/tipArr"
;
...
@@ -242,7 +243,6 @@ export default {
...
@@ -242,7 +243,6 @@ export default {
];
];
}
}
},
},
propertyList
:
[],
spanArr
:
[],
spanArr
:
[],
contentSpanArr
:
[],
contentSpanArr
:
[],
searchFrom
:
{
searchFrom
:
{
...
@@ -269,6 +269,27 @@ export default {
...
@@ -269,6 +269,27 @@ export default {
},
},
components
:
{
page
},
components
:
{
page
},
methods
:
{
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
})
{
rendertip
(
h
,
{
column
})
{
// console.log(h)
// console.log(h)
return
h
(
"span"
,
[
return
h
(
"span"
,
[
...
...
src/components/conversionList/sourceConversionList.vue
View file @
5bb62fd3
...
@@ -170,13 +170,7 @@
...
@@ -170,13 +170,7 @@
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
{
import
{
getPeriodsConversionListApi
,
getSourceConversionListApi
,
getGoodsListApi
,
getPeriodsOtherListApi
,
getTeacherListApi
}
from
"../../service/api"
;
getPeriodsConversionListApi
,
getSourceConversionListApi
,
getGoodsListApi
,
getPeriodsOtherListApi
,
getTeacherListApi
}
from
"../../service/api"
;
import
page
from
"../framework/page"
;
import
page
from
"../framework/page"
;
import
{
GOODSTYPE
,
CLASSSOURCE
,
ORDERSTATUS
}
from
"../../util/wordbook"
;
import
{
GOODSTYPE
,
CLASSSOURCE
,
ORDERSTATUS
}
from
"../../util/wordbook"
;
import
{
tipArr3
}
from
"../../util/tipArr"
;
import
{
tipArr3
}
from
"../../util/tipArr"
;
...
@@ -295,7 +289,6 @@ export default {
...
@@ -295,7 +289,6 @@ export default {
teacher_id
:
""
,
teacher_id
:
""
,
periods_title
:
""
periods_title
:
""
},
},
propertyList
:
[],
watchList
:
[
watchList
:
[
{
id
:
0
,
title
:
5
},
{
id
:
0
,
title
:
5
},
{
id
:
1
,
title
:
6
},
{
id
:
1
,
title
:
6
},
...
...
src/components/logistics/index.vue
View file @
5bb62fd3
<
template
>
<
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
ref=
"searchFrom"
:model=
"searchFrom"
label-width=
"100px"
inline
size=
"small"
>
<el-form-item
label=
"用户ID"
>
<el-form-item
label=
"用户ID"
>
<el-input
v-model=
"searchFrom.user_id"
style=
"width: 80px"
></el-input>
<el-input
v-model=
"searchFrom.user_id"
style=
"width: 80px"
></el-input>
...
@@ -16,13 +17,14 @@
...
@@ -16,13 +17,14 @@
</el-form-item>
-->
</el-form-item>
-->
<el-form-item
label=
"期数"
>
<el-form-item
label=
"期数"
>
<el-cascader
<el-cascader
:popper-class=
"'refresh-cascader-multi width-480'"
style=
"width: 480px"
:options=
"goodsList"
:options=
"goodsList"
:props=
"
{value:'id',label:'name'}"
:props=
"
{value:'id',label:'name'}"
@active-item-change="handleItemChange"
@active-item-change="handleItemChange"
@change="changePeriods"
@change="changePeriods"
filterable
filterable
v-model="selectedGoods"
v-model="selectedGoods">
</el-cascader>
>
</el-cascader>
</el-form-item>
</el-form-item>
<el-form-item
label=
"主题"
>
<el-form-item
label=
"主题"
>
<el-select
filterable
v-model=
"searchFrom.theme_id"
placeholder=
"请选择"
clearable
>
<el-select
filterable
v-model=
"searchFrom.theme_id"
placeholder=
"请选择"
clearable
>
...
@@ -50,49 +52,57 @@
...
@@ -50,49 +52,57 @@
:onSuccess=
"fileSuccess"
:onSuccess=
"fileSuccess"
:headers=
"uploadHeader"
:headers=
"uploadHeader"
:data=
"
{param_token:param_token}"
: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-button
type=
"success"
plain
>
导入发货信息
</el-button>
</el-upload>
</el-upload>
</el-form-item>
</el-form-item>
</el-form>
</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=
"0"
></el-tab-pane>
<el-tab-pane
label=
"所有待发货"
name=
"1"
></el-tab-pane>
<el-tab-pane
label=
"所有待发货"
name=
"1"
></el-tab-pane>
<el-tab-pane
label=
"所有已发货"
name=
"2"
></el-tab-pane>
<el-tab-pane
label=
"所有已发货"
name=
"2"
></el-tab-pane>
</el-tabs>
</el-tabs>
<el-table
:data=
"deliverList"
size=
"mini"
style=
"width: 100%"
>
<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"
>
<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
}}
{{
scope
.
row
.
user_nickname
}}
<br
/>
<br
/>
(ID:
{{
scope
.
row
.
user_id
}}
)
(ID:
{{
scope
.
row
.
user_id
}}
)
<br
/>
<br
/>
手机:
{{
scope
.
row
.
user_mobile
}}
手机:
{{
scope
.
row
.
user_mobile
}}
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"address"
label=
"收货地址"
>
<el-table-column
prop=
"address"
label=
"收货地址"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
receive_name
}}
{{
scope
.
row
.
receive_name
}}
<br
/>
<br/>
{{
scope
.
row
.
receive_mobile
}}
{{
scope
.
row
.
receive_mobile
}}
<br
/>
<br/>
{{
scope
.
row
.
province_name
}}{{
scope
.
row
.
city_name
}}{{
scope
.
row
.
area_name
}}{{
scope
.
row
.
address
}}
{{
scope
.
row
.
province_name
}}{{
scope
.
row
.
city_name
}}{{
scope
.
row
.
area_name
}}{{
scope
.
row
.
address
}}
</
template
>
</
template
>
</el-table-column>
</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=
"theme_name"
label=
"主题"
></el-table-column>
<el-table-column
prop=
"deliver_start_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=
"预计发货结束时间"
></el-table-column>
<el-table-column
prop=
"deliver_end_at"
label=
"预计发货结束时间"
width=
"100px"
></el-table-column>
<el-table-column
prop=
"deliver_at"
label=
"发货时间"
></el-table-column>
<el-table-column
prop=
"deliver_at"
label=
"发货时间"
width=
"100px"
></el-table-column>
<el-table-column
prop=
"status"
label=
"物流状态"
>
<el-table-column
prop=
"status"
label=
"物流状态"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
status
|
LogisticsStatusFil
}}
{{
scope
.
row
.
status
|
LogisticsStatusFil
}}
<br/>
<br
/>
<span
v-if=
"searchFrom.type==2"
>
<span
v-if=
"searchFrom.type==2"
>
名称:
{{
scope
.
row
.
express_name
}}
名称:
{{
scope
.
row
.
express_name
}}
<br/>
<br
/>
单号:
{{
scope
.
row
.
express_no
}}
单号:
{{
scope
.
row
.
express_no
}}
</span>
</span>
</
template
>
</
template
>
...
@@ -182,6 +192,27 @@ export default {
...
@@ -182,6 +192,27 @@ export default {
this
.
init
();
this
.
init
();
},
},
methods
:
{
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
()
{
cancelEvent
()
{
this
.
showFlag
=
false
;
this
.
showFlag
=
false
;
},
},
...
@@ -402,9 +433,6 @@ export default {
...
@@ -402,9 +433,6 @@ export default {
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
>
.sms
{
padding
:
20px
0
;
}
.el-button
+
.el-button
{
.el-button
+
.el-button
{
margin-left
:
0
;
margin-left
:
0
;
/* margin-top: 10px; */
/* margin-top: 10px; */
...
...
src/components/marketStatistics/index.vue
View file @
5bb62fd3
...
@@ -10,7 +10,7 @@
...
@@ -10,7 +10,7 @@
:span-method="arraySpanMethod">
:span-method="arraySpanMethod">
<el-table-column
min-width=
"180"
prop=
"wait_join_num"
align=
"left"
fixed=
"left"
label=
"期数总状况"
>
<el-table-column
min-width=
"180"
prop=
"wait_join_num"
align=
"left"
fixed=
"left"
label=
"期数总状况"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
期数名称:
{{
scope
.
row
.
title
}}
期数名称:
{{
scope
.
row
.
title
==
'合计'
?
'合计'
:
periodName
(
scope
.
row
)
}}
<br
/>
<br
/>
开始时间:
{{
scope
.
row
.
start_at
}}
开始时间:
{{
scope
.
row
.
start_at
}}
<br
/>
<br
/>
...
@@ -77,6 +77,25 @@ export default {
...
@@ -77,6 +77,25 @@ export default {
};
};
},
},
methods
:
{
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
()
{
initPage
()
{
getPeriodsClassCurDataApi
().
then
(
res
=>
{
getPeriodsClassCurDataApi
().
then
(
res
=>
{
this
.
list
=
res
;
this
.
list
=
res
;
...
...
src/components/monthOrder/index.vue
View file @
5bb62fd3
...
@@ -90,7 +90,7 @@
...
@@ -90,7 +90,7 @@
@
change=
"getOrderList"
>
@
change=
"getOrderList"
>
</el-date-picker>
</el-date-picker>
</el-form-item>
</el-form-item>
<el-form-item
>
<el-form-item
>
<el-button
type=
"primary"
plain
@
click=
"getOrderList"
>
搜索
</el-button>
<el-button
type=
"primary"
plain
@
click=
"getOrderList"
>
搜索
</el-button>
<el-button
type=
"primary"
plain
@
click=
"exportTable"
v-if=
"$store.state.export"
>
导出
</el-button>
<el-button
type=
"primary"
plain
@
click=
"exportTable"
v-if=
"$store.state.export"
>
导出
</el-button>
</el-form-item>
</el-form-item>
...
@@ -98,37 +98,25 @@
...
@@ -98,37 +98,25 @@
<el-button
type=
"success"
plain
@
click=
"add"
v-if=
"!$store.state.readonly"
>
新增订单
</el-button>
<el-button
type=
"success"
plain
@
click=
"add"
v-if=
"!$store.state.readonly"
>
新增订单
</el-button>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<el-table
<el-table
size=
"small"
:data=
"tableData"
@
expand-change=
"changeRow"
fixed
>
size=
"small"
<el-table-column
prop=
"out_trade_no"
label=
"订单号"
></el-table-column>
:data=
"tableData"
<el-table-column
label=
"购买人"
width=
"200"
>
@
expand-change=
"changeRow"
style=
"width: 100%"
fixed
>
<el-table-column
prop=
"out_trade_no"
label=
"订单号"
>
</el-table-column>
<el-table-column
label=
"购买人"
className=
"f-c"
width=
"150"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<img
class=
"avatar"
:src=
"scope.row.user_avatar"
/>
{{
scope
.
row
.
user_nickname
}}
<br>
(ID:
{{
scope
.
row
.
user_id
}}
)
<br>
手机:
{{
scope
.
row
.
user_mobile
}}
<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
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
<!--<el-table-column prop="periods_title" label="期数标题"></el-table-column>-->
prop=
"periods_title"
<el-table-column
label=
"期数名称"
width=
"150px"
>
label=
"期数标题"
>
<
template
slot-scope=
"scope"
>
</el-table-column>
<div
v-html=
"periodName(scope.row)"
></div>
<el-table-column
<!--
{{
periodName
(
scope
.
row
)
}}
-->
prop=
"goods_name"
</
template
>
label=
"商品名称"
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
prop=
"goods_name"
label=
"商品名称"
width=
"150px"
></el-table-column>
width=
"250"
<el-table-column
width=
"190"
prop=
"invite_id"
className=
"f-c"
label=
"推广人"
>
prop=
"invite_id"
className=
"f-c"
label=
"推广人"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<div
@
click=
"showSource(scope.row)"
v-if=
"scope.row.invite_earnings > 0 && scope.row.invite_id !== 0"
style=
"width:100%;display: flex;color: #409eff;cursor: pointer"
>
<div
@
click=
"showSource(scope.row)"
v-if=
"scope.row.invite_earnings > 0 && scope.row.invite_id !== 0"
style=
"width:100%;display: flex;color: #409eff;cursor: pointer"
>
<img
:src=
"scope.row.invite_avatar"
class=
"avatar"
/>
<img
:src=
"scope.row.invite_avatar"
class=
"avatar"
/>
...
@@ -202,28 +190,12 @@
...
@@ -202,28 +190,12 @@
</div>
</div>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
prop=
"pay_at"
label=
"购买时间"
sortable
width=
"95px"
></el-table-column>
prop=
"pay_at"
<el-table-column
prop=
"created_at"
label=
"下单时间"
sortable
width=
"95px"
></el-table-column>
label=
"购买时间"
sortable
>
<el-table-column
prop=
"desc"
label=
"备注"
></el-table-column>
</el-table-column>
<el-table-column
width=
"50"
label=
"操作"
v-if=
"!$store.state.readonly"
fixed=
"right"
>
<el-table-column
prop=
"created_at"
label=
"下单时间"
sortable
>
</el-table-column>
<el-table-column
prop=
"desc"
label=
"备注"
>
</el-table-column>
<el-table-column
width=
"50"
label=
"操作"
v-if=
"!$store.state.readonly"
fixed=
"right"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-popover
<el-popover
placement=
"top"
width=
"400"
>
placement=
"top"
width=
"400"
>
<div
style=
"text-align: center"
>
<div
style=
"text-align: center"
>
<!--v-if="(scope.row.status == 1 || scope.row.status == 4|| scope.row.status == 5) && $store.state.orderRefund"-->
<!--v-if="(scope.row.status == 1 || scope.row.status == 4|| scope.row.status == 5) && $store.state.orderRefund"-->
<el-button
<el-button
...
@@ -258,7 +230,7 @@
...
@@ -258,7 +230,7 @@
</el-button>
</el-button>
</div>
</div>
<el-button
slot=
"reference"
size=
"mini"
type=
"text"
>
操作
</el-button>
<el-button
slot=
"reference"
size=
"mini"
type=
"text"
>
操作
</el-button>
</el-popover>
</el-popover>
</
template
>
</
template
>
...
@@ -306,7 +278,16 @@
...
@@ -306,7 +278,16 @@
</template>
</template>
<
script
>
<
script
>
import
{
getOrderListApi
,
editOrderDescApi
,
getGoodsListApi
,
getRefundListApi
,
exportExcelApi
,
getTeacherListApi
,
updateOrderTeacherApi
,
setOrderApi
}
from
"../../service/api"
;
import
{
getOrderListApi
,
editOrderDescApi
,
getGoodsListApi
,
getRefundListApi
,
exportExcelApi
,
getTeacherListApi
,
updateOrderTeacherApi
,
setOrderApi
}
from
"../../service/api"
;
import
page
from
'../framework/page'
import
page
from
'../framework/page'
import
addressDialog
from
'./dialog'
import
addressDialog
from
'./dialog'
import
orderDialog
from
'./newDialog'
import
orderDialog
from
'./newDialog'
...
@@ -316,68 +297,78 @@
...
@@ -316,68 +297,78 @@
import
detailDialog
from
'./detail'
import
detailDialog
from
'./detail'
import
refundDetail
from
'./refundDetail'
import
refundDetail
from
'./refundDetail'
import
AddressArray
from
'../framework/address-picker/addr'
import
AddressArray
from
'../framework/address-picker/addr'
import
{
INVITETYPE
,
ORDERSTATUS
,
BUYTYPE
,
BUYTYPEOPTION
,
ORDERSTATUSOPTION
,
INVITETYPEOPTION
,
GOODSTYPE
,
BUYWay
,
BUYTYPEWAY
}
from
"../../util/wordbook"
;
import
{
INVITETYPE
,
ORDERSTATUS
,
BUYTYPE
,
BUYTYPEOPTION
,
ORDERSTATUSOPTION
,
INVITETYPEOPTION
,
GOODSTYPE
,
BUYWay
,
BUYTYPEWAY
}
from
"../../util/wordbook"
;
import
CommonJs
from
'../../util/common'
;
import
CommonJs
from
'../../util/common'
;
export
default
{
export
default
{
name
:
'index'
,
name
:
'index'
,
data
(){
data
()
{
return
{
return
{
nowPage
:
1
,
nowPage
:
1
,
total
:
0
,
total
:
0
,
sourceDialog
:
{
sourceDialog
:
{
show
:
false
,
show
:
false
,
out_trade_no
:
''
out_trade_no
:
''
},
},
today
:
{
today
:
{
text
:
'今天'
,
text
:
'今天'
,
onClick
:()
=>
{
onClick
:
()
=>
{
this
.
searchFrom
.
payTime
=
[
this
.
formatTime
(
new
Date
())
+
' 00:00:00'
,
this
.
formatTime
(
new
Date
())
+
' 23:59:59'
];
this
.
searchFrom
.
payTime
=
[
this
.
formatTime
(
new
Date
())
+
' 00:00:00'
,
this
.
formatTime
(
new
Date
())
+
' 23:59:59'
];
}
}
},
},
yesterday
:
{
yesterday
:
{
text
:
'昨天'
,
text
:
'昨天'
,
onClick
:()
=>
{
onClick
:
()
=>
{
let
preDate
=
this
.
formatTime
(
new
Date
(
new
Date
().
getTime
()
-
24
*
60
*
60
*
1000
));
let
preDate
=
this
.
formatTime
(
new
Date
(
new
Date
().
getTime
()
-
24
*
60
*
60
*
1000
));
this
.
searchFrom
.
payTime
=
[
preDate
+
' 00:00:00'
,
preDate
+
' 23:59:59'
];
this
.
searchFrom
.
payTime
=
[
preDate
+
' 00:00:00'
,
preDate
+
' 23:59:59'
];
}
}
},
},
last30Day
:
{
last30Day
:
{
text
:
'过去30天'
,
text
:
'过去30天'
,
onClick
:()
=>
{
onClick
:
()
=>
{
let
preDate
=
this
.
formatTime
(
new
Date
(
new
Date
().
getTime
()
-
30
*
24
*
60
*
60
*
1000
));
let
preDate
=
this
.
formatTime
(
new
Date
(
new
Date
().
getTime
()
-
30
*
24
*
60
*
60
*
1000
));
this
.
searchFrom
.
payTime
=
[
preDate
+
' 00:00:00'
,
this
.
formatTime
(
new
Date
())
+
' 23:59:59'
];
this
.
searchFrom
.
payTime
=
[
preDate
+
' 00:00:00'
,
this
.
formatTime
(
new
Date
())
+
' 23:59:59'
];
}
}
},
},
last7Day
:
{
last7Day
:
{
text
:
'过去7天'
,
text
:
'过去7天'
,
onClick
:()
=>
{
onClick
:
()
=>
{
let
preDate
=
this
.
formatTime
(
new
Date
(
new
Date
().
getTime
()
-
7
*
24
*
60
*
60
*
1000
));
let
preDate
=
this
.
formatTime
(
new
Date
(
new
Date
().
getTime
()
-
7
*
24
*
60
*
60
*
1000
));
this
.
searchFrom
.
payTime
=
[
preDate
+
' 00:00:00'
,
this
.
formatTime
(
new
Date
())
+
' 23:59:59'
];
this
.
searchFrom
.
payTime
=
[
preDate
+
' 00:00:00'
,
this
.
formatTime
(
new
Date
())
+
' 23:59:59'
];
}
}
},
},
couponDetail
:
{
couponDetail
:
{
show
:
false
,
show
:
false
,
order_coupon_id
:
''
order_coupon_id
:
''
},
},
refundDetail
:
{
refundDetail
:
{
show
:
false
,
show
:
false
,
out_trade_no
:
''
out_trade_no
:
''
},
},
limit
:
10
,
limit
:
10
,
searchFrom
:
{
searchFrom
:
{
nickname
:
''
,
nickname
:
''
,
wait_into_course
:
''
,
wait_into_course
:
''
,
user_id
:
''
,
user_id
:
''
,
invite_type
:
''
,
invite_type
:
''
,
invite_id
:
''
,
invite_id
:
''
,
buy_type
:
''
,
buy_type
:
''
,
order_type
:
''
,
order_type
:
''
,
status
:
[
1
,
4
,
5
],
status
:
[
1
,
4
,
5
],
goods_id
:
''
,
goods_id
:
''
,
out_trade_no
:
''
,
out_trade_no
:
''
,
payTime
:
[],
payTime
:
[],
order_group_id
:
""
,
order_group_id
:
""
,
},
},
tableData
:
[],
tableData
:
[],
dialogObj
:
{
dialogObj
:
{
...
@@ -399,11 +390,11 @@
...
@@ -399,11 +390,11 @@
inviteTypeOption
:
INVITETYPEOPTION
,
inviteTypeOption
:
INVITETYPEOPTION
,
orderStatusOption
:
ORDERSTATUSOPTION
,
orderStatusOption
:
ORDERSTATUSOPTION
,
buyTypeOption
:
BUYTYPEOPTION
,
buyTypeOption
:
BUYTYPEOPTION
,
buyWay
:
BUYWay
,
buyWay
:
BUYWay
,
inviteSearchPlaceholder
:
''
,
inviteSearchPlaceholder
:
''
,
rules
:
{
rules
:
{
value
:
[
value
:
[
{
required
:
true
,
message
:
'请输入备注'
,
trigger
:
'change'
}
{
required
:
true
,
message
:
'请输入备注'
,
trigger
:
'change'
}
]
]
},
},
promoterDialog
:
{
promoterDialog
:
{
...
@@ -418,36 +409,59 @@
...
@@ -418,36 +409,59 @@
}
}
},
},
methods
:
{
methods
:
{
formatTime
(
date
){
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
},
formatTime
(
date
)
{
let
year
=
date
.
getFullYear
();
let
year
=
date
.
getFullYear
();
let
Month
=
date
.
getMonth
()
+
1
;
let
Month
=
date
.
getMonth
()
+
1
;
if
(
Month
<
10
)
{
if
(
Month
<
10
)
{
Month
=
`0
${
Month
}
`
Month
=
`0
${
Month
}
`
}
}
let
Day
=
date
.
getDate
();
let
Day
=
date
.
getDate
();
if
(
Day
<
10
)
Day
=
`0
${
Day
}
`
;
if
(
Day
<
10
)
Day
=
`0
${
Day
}
`
;
return
`
${
year
}
-
${
Month
}
-
${
Day
}
`
;
return
`
${
year
}
-
${
Month
}
-
${
Day
}
`
;
},
},
showRef
(
data
){
showRef
(
data
)
{
this
.
refundDetail
.
show
=
true
;
this
.
refundDetail
.
show
=
true
;
this
.
refundDetail
.
out_trade_no
=
data
.
out_trade_no
;
this
.
refundDetail
.
out_trade_no
=
data
.
out_trade_no
;
},
},
showCoupon
(
data
){
showCoupon
(
data
)
{
this
.
couponDetail
.
show
=
true
;
this
.
couponDetail
.
show
=
true
;
this
.
couponDetail
.
order_coupon_id
=
data
.
order_coupon_id
;
this
.
couponDetail
.
order_coupon_id
=
data
.
order_coupon_id
;
},
},
showSource
(
data
){
showSource
(
data
)
{
this
.
sourceDialog
.
show
=
true
;
this
.
sourceDialog
.
show
=
true
;
this
.
sourceDialog
.
out_trade_no
=
data
.
out_trade_no
;
this
.
sourceDialog
.
out_trade_no
=
data
.
out_trade_no
;
},
},
changeRow
(
data
,
b
)
{
changeRow
(
data
,
b
)
{
if
(
b
.
indexOf
(
data
)
>-
1
)
{
if
(
b
.
indexOf
(
data
)
>
-
1
)
{
getRefundListApi
({
out_trade_no
:
data
.
out_trade_no
}).
then
(
res
=>
{
getRefundListApi
({
out_trade_no
:
data
.
out_trade_no
}).
then
(
res
=>
{
data
.
refundList
=
res
.
list
data
.
refundList
=
res
.
list
})
})
}
}
},
},
exportTable
(){
exportTable
()
{
let
json
=
{};
let
json
=
{};
if
(
this
.
searchFrom
.
nickname
)
{
if
(
this
.
searchFrom
.
nickname
)
{
json
.
nickname
=
this
.
searchFrom
.
nickname
json
.
nickname
=
this
.
searchFrom
.
nickname
...
@@ -482,7 +496,7 @@
...
@@ -482,7 +496,7 @@
if
(
this
.
searchFrom
.
receive_mobile
)
{
if
(
this
.
searchFrom
.
receive_mobile
)
{
json
.
receive_mobile
=
this
.
searchFrom
.
receive_mobile
json
.
receive_mobile
=
this
.
searchFrom
.
receive_mobile
}
}
if
(
this
.
searchFrom
.
payTime
&&
this
.
searchFrom
.
payTime
.
length
>
0
)
{
if
(
this
.
searchFrom
.
payTime
&&
this
.
searchFrom
.
payTime
.
length
>
0
)
{
json
.
pay_start_at
=
this
.
searchFrom
.
payTime
[
0
]
json
.
pay_start_at
=
this
.
searchFrom
.
payTime
[
0
]
json
.
pay_end_at
=
this
.
searchFrom
.
payTime
[
1
]
json
.
pay_end_at
=
this
.
searchFrom
.
payTime
[
1
]
}
}
...
@@ -490,20 +504,20 @@
...
@@ -490,20 +504,20 @@
if
(
this
.
searchFrom
.
wait_into_course
)
{
if
(
this
.
searchFrom
.
wait_into_course
)
{
json
.
wait_into_course
=
this
.
searchFrom
.
wait_into_course
json
.
wait_into_course
=
this
.
searchFrom
.
wait_into_course
}
}
json
.
course_type
=
0
//月课
json
.
course_type
=
0
//月课
exportExcelApi
(
'/api/admin/order/export'
,
json
,
'月课订单列表'
)
exportExcelApi
(
'/api/admin/order/export'
,
json
,
'月课订单列表'
)
},
},
getGoodsOption
(){
getGoodsOption
()
{
let
json
=
{
let
json
=
{
page
:
1
,
page
:
1
,
limit
:
100
,
limit
:
100
,
course_type
:
0
,
course_type
:
0
,
};
};
getGoodsListApi
(
json
).
then
(
res
=>
{
getGoodsListApi
(
json
).
then
(
res
=>
{
this
.
goodList
=
res
.
list
;
this
.
goodList
=
res
.
list
;
})
})
},
},
onInviteTypeChange
(
val
){
onInviteTypeChange
(
val
)
{
if
(
val
===
0
)
{
if
(
val
===
0
)
{
this
.
inviteSearchPlaceholder
=
'用户ID'
this
.
inviteSearchPlaceholder
=
'用户ID'
}
else
if
(
val
===
1
)
{
}
else
if
(
val
===
1
)
{
...
@@ -513,7 +527,7 @@
...
@@ -513,7 +527,7 @@
}
}
this
.
getOrderList
();
this
.
getOrderList
();
},
},
detail
(
row
){
detail
(
row
)
{
let
_detail
=
row
;
let
_detail
=
row
;
this
.
dialogDetailObj
=
{
this
.
dialogDetailObj
=
{
show
:
true
,
show
:
true
,
...
@@ -524,15 +538,15 @@
...
@@ -524,15 +538,15 @@
this
.
$prompt
(
''
,
'编辑备注'
,
{
this
.
$prompt
(
''
,
'编辑备注'
,
{
confirmButtonText
:
'确定'
,
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
cancelButtonText
:
'取消'
,
inputType
:
'textarea'
,
inputType
:
'textarea'
,
inputValue
:
desc
||
''
inputValue
:
desc
||
''
}).
then
(({
value
})
=>
{
}).
then
(({
value
})
=>
{
this
.
$confirm
(
'确定保存?'
,
'提示'
,
{
this
.
$confirm
(
'确定保存?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
type
:
'warning'
}).
then
(()
=>
{
}).
then
(()
=>
{
editOrderDescApi
(
id
,
'order'
,{
desc
:
value
}).
then
(
res
=>
{
editOrderDescApi
(
id
,
'order'
,
{
desc
:
value
}).
then
(
res
=>
{
this
.
$message
({
this
.
$message
({
type
:
'success'
,
type
:
'success'
,
message
:
'编辑备注成功'
message
:
'编辑备注成功'
...
@@ -542,16 +556,16 @@
...
@@ -542,16 +556,16 @@
});
});
})
})
},
},
onPageChange
(
val
){
onPageChange
(
val
)
{
this
.
nowPage
=
val
this
.
nowPage
=
val
this
.
getOrderList
()
this
.
getOrderList
()
},
},
onSizeChange
(
val
){
onSizeChange
(
val
)
{
this
.
limit
=
val
;
this
.
limit
=
val
;
this
.
nowPage
=
1
;
this
.
nowPage
=
1
;
this
.
getOrderList
()
this
.
getOrderList
()
},
},
getOrderList
(){
getOrderList
()
{
let
json
=
{
let
json
=
{
limit
:
this
.
limit
,
limit
:
this
.
limit
,
page
:
this
.
nowPage
page
:
this
.
nowPage
...
@@ -589,43 +603,43 @@
...
@@ -589,43 +603,43 @@
if
(
this
.
searchFrom
.
receive_mobile
)
{
if
(
this
.
searchFrom
.
receive_mobile
)
{
json
.
receive_mobile
=
this
.
searchFrom
.
receive_mobile
json
.
receive_mobile
=
this
.
searchFrom
.
receive_mobile
}
}
if
(
this
.
searchFrom
.
payTime
&&
this
.
searchFrom
.
payTime
.
length
>
0
)
{
if
(
this
.
searchFrom
.
payTime
&&
this
.
searchFrom
.
payTime
.
length
>
0
)
{
json
.
pay_start_at
=
this
.
searchFrom
.
payTime
[
0
]
json
.
pay_start_at
=
this
.
searchFrom
.
payTime
[
0
]
json
.
pay_end_at
=
this
.
searchFrom
.
payTime
[
1
]
json
.
pay_end_at
=
this
.
searchFrom
.
payTime
[
1
]
}
}
if
(
this
.
searchFrom
.
wait_into_course
)
{
if
(
this
.
searchFrom
.
wait_into_course
)
{
json
.
wait_into_course
=
this
.
searchFrom
.
wait_into_course
json
.
wait_into_course
=
this
.
searchFrom
.
wait_into_course
}
}
json
.
course_type
=
0
//月课
json
.
course_type
=
0
//月课
getOrderListApi
(
json
).
then
((
res
)
=>
{
getOrderListApi
(
json
).
then
((
res
)
=>
{
res
.
list
.
forEach
(
i
=>
{
res
.
list
.
forEach
(
i
=>
{
i
.
refundList
=
[]
i
.
refundList
=
[]
});
});
this
.
tableData
=
res
.
list
;
this
.
tableData
=
res
.
list
;
this
.
total
=
res
.
total
this
.
total
=
res
.
total
})
})
},
},
changeDetailShow
(
data
){
changeDetailShow
(
data
)
{
this
.
dialogDetailObj
.
show
=
data
this
.
dialogDetailObj
.
show
=
data
},
},
changeShow
(
data
){
changeShow
(
data
)
{
this
.
refundDialogObj
.
show
=
data
this
.
refundDialogObj
.
show
=
data
},
},
onRefund
(
id
,
money
){
onRefund
(
id
,
money
)
{
this
.
refundDialogObj
.
id
=
id
;
this
.
refundDialogObj
.
id
=
id
;
this
.
refundDialogObj
.
money
=
money
;
this
.
refundDialogObj
.
money
=
money
;
this
.
refundDialogObj
.
show
=
true
;
this
.
refundDialogObj
.
show
=
true
;
},
},
onAfterRefund
(){
onAfterRefund
()
{
this
.
refundDialogObj
.
show
=
false
;
this
.
refundDialogObj
.
show
=
false
;
this
.
getOrderList
()
this
.
getOrderList
()
},
},
onUpdateAddress
(){
onUpdateAddress
()
{
this
.
dialogObj
.
show
=
false
;
this
.
dialogObj
.
show
=
false
;
this
.
getOrderList
();
this
.
getOrderList
();
},
},
editAddress
(
row
){
editAddress
(
row
)
{
if
(
!
row
.
address_info
||
!
row
.
address_info
.
province_name
)
{
if
(
!
row
.
address_info
||
!
row
.
address_info
.
province_name
)
{
this
.
dialogObj
.
province
=
''
this
.
dialogObj
.
province
=
''
this
.
dialogObj
.
city
=
''
this
.
dialogObj
.
city
=
''
this
.
dialogObj
.
district
=
''
this
.
dialogObj
.
district
=
''
...
@@ -633,18 +647,18 @@
...
@@ -633,18 +647,18 @@
let
provinceObj
=
AddressArray
.
filter
((
item
)
=>
{
let
provinceObj
=
AddressArray
.
filter
((
item
)
=>
{
return
item
.
label
===
row
.
address_info
.
province_name
return
item
.
label
===
row
.
address_info
.
province_name
})
})
if
(
provinceObj
&&
provinceObj
.
length
>
0
)
{
if
(
provinceObj
&&
provinceObj
.
length
>
0
)
{
this
.
dialogObj
.
province
=
row
.
address_info
.
province_id
?
row
.
address_info
.
province_id
:
provinceObj
[
0
].
value
this
.
dialogObj
.
province
=
row
.
address_info
.
province_id
?
row
.
address_info
.
province_id
:
provinceObj
[
0
].
value
if
(
!
row
.
address_info
.
city
)
{
if
(
!
row
.
address_info
.
city
)
{
this
.
dialogObj
.
city
=
''
this
.
dialogObj
.
city
=
''
}
else
{
}
else
{
let
cityObj
=
provinceObj
[
0
].
children
.
filter
((
city
)
=>
{
let
cityObj
=
provinceObj
[
0
].
children
.
filter
((
city
)
=>
{
return
city
.
label
===
row
.
address_info
.
city
return
city
.
label
===
row
.
address_info
.
city
})
})
this
.
dialogObj
.
city
=
row
.
address_info
.
city_id
?
row
.
address_info
.
city_id
:
cityObj
[
0
].
value
this
.
dialogObj
.
city
=
row
.
address_info
.
city_id
?
row
.
address_info
.
city_id
:
cityObj
[
0
].
value
if
(
!
row
.
address_info
.
area
)
{
if
(
!
row
.
address_info
.
area
)
{
this
.
dialogObj
.
district
=
''
this
.
dialogObj
.
district
=
''
}
else
{
}
else
{
let
districtObj
=
cityObj
[
0
].
children
.
filter
((
district
)
=>
{
let
districtObj
=
cityObj
[
0
].
children
.
filter
((
district
)
=>
{
return
district
.
label
===
row
.
address_info
.
area
return
district
.
label
===
row
.
address_info
.
area
});
});
...
@@ -664,26 +678,26 @@
...
@@ -664,26 +678,26 @@
this
.
dialogObj
.
city_name
=
row
.
address_info
?
row
.
address_info
.
city
:
''
;
this
.
dialogObj
.
city_name
=
row
.
address_info
?
row
.
address_info
.
city
:
''
;
this
.
dialogObj
.
district_name
=
row
.
address_info
?
row
.
address_info
.
area
:
''
;
this
.
dialogObj
.
district_name
=
row
.
address_info
?
row
.
address_info
.
area
:
''
;
this
.
dialogObj
.
id
=
row
.
id
;
this
.
dialogObj
.
id
=
row
.
id
;
this
.
dialogObj
.
show
=
true
;
this
.
dialogObj
.
show
=
true
;
},
},
getTeacherList
(
name
){
getTeacherList
(
name
)
{
this
.
loading
=
true
this
.
loading
=
true
let
json
=
{
let
json
=
{
limit
:
this
.
promoterDialog
.
limit
,
limit
:
this
.
promoterDialog
.
limit
,
page
:
this
.
promoterDialog
.
nowPage
page
:
this
.
promoterDialog
.
nowPage
};
};
if
(
name
)
{
if
(
name
)
{
json
.
name
=
name
json
.
name
=
name
}
}
getTeacherListApi
(
json
).
then
(
res
=>
{
getTeacherListApi
(
json
).
then
(
res
=>
{
this
.
teacherList
=
res
.
list
this
.
teacherList
=
res
.
list
this
.
loading
=
false
this
.
loading
=
false
});
});
},
},
handleCurrentTeacherChange
(
val
){
handleCurrentTeacherChange
(
val
)
{
console
.
log
(
'handleCurrentTeacherChange'
,
val
)
console
.
log
(
'handleCurrentTeacherChange'
,
val
)
},
},
updateTeacher
(
val
){
updateTeacher
(
val
)
{
this
.
promoterDialog
.
show
=
true
;
this
.
promoterDialog
.
show
=
true
;
this
.
promoterDialog
.
id
=
val
.
id
;
this
.
promoterDialog
.
id
=
val
.
id
;
this
.
promoterDialog
.
teacher_id
=
val
.
invite_id
;
this
.
promoterDialog
.
teacher_id
=
val
.
invite_id
;
...
@@ -696,15 +710,15 @@
...
@@ -696,15 +710,15 @@
this
.
getTeacherList
();
this
.
getTeacherList
();
}
}
},
},
saveTeacher
(){
saveTeacher
()
{
this
.
$confirm
(
'此操作将修改推广人?'
,
'提示'
,
{
this
.
$confirm
(
'此操作将修改推广人?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
type
:
'warning'
}).
then
(()
=>
{
}).
then
(()
=>
{
console
.
log
(
'this.promoterDialog.teacher_id'
,
this
.
promoterDialog
)
console
.
log
(
'this.promoterDialog.teacher_id'
,
this
.
promoterDialog
)
updateOrderTeacherApi
(
this
.
promoterDialog
.
id
,
this
.
promoterDialog
.
teacher_id
).
then
(
res
=>
{
updateOrderTeacherApi
(
this
.
promoterDialog
.
id
,
this
.
promoterDialog
.
teacher_id
).
then
(
res
=>
{
this
.
promoterDialog
.
id
=
''
;
this
.
promoterDialog
.
id
=
''
;
this
.
promoterDialog
.
teacher_id
=
''
;
this
.
promoterDialog
.
teacher_id
=
''
;
this
.
promoterDialog
.
show
=
false
;
this
.
promoterDialog
.
show
=
false
;
this
.
$message
({
this
.
$message
({
...
@@ -715,8 +729,8 @@
...
@@ -715,8 +729,8 @@
});
});
});
});
},
},
add
()
{
add
()
{
this
.
newdialogObj
.
show
=
true
;
this
.
newdialogObj
.
show
=
true
;
},
},
},
},
components
:
{
components
:
{
...
@@ -729,44 +743,44 @@
...
@@ -729,44 +743,44 @@
couponDialog
,
couponDialog
,
page
page
},
},
mounted
(){
mounted
()
{
if
(
this
.
$route
.
query
.
code
)
{
if
(
this
.
$route
.
query
.
code
)
{
this
.
searchFrom
.
invite_type
=
this
.
$route
.
query
.
code
this
.
searchFrom
.
invite_type
=
this
.
$route
.
query
.
code
}
}
this
.
getOrderList
();
this
.
getOrderList
();
this
.
getGoodsOption
();
this
.
getGoodsOption
();
},
},
watch
:{
watch
:
{
"newdialogObj.show"
:
function
(
val
)
{
"newdialogObj.show"
:
function
(
val
)
{
if
(
!
val
)
{
if
(
!
val
)
{
this
.
getOrderList
();
this
.
getOrderList
();
}
}
}
}
},
},
filters
:{
filters
:
{
payMentFilter
(
val
){
payMentFilter
(
val
)
{
return
val
==
'1'
?
'已付款'
:
'未付款'
return
val
==
'1'
?
'已付款'
:
'未付款'
},
},
courseTypeFilter
(
val
){
courseTypeFilter
(
val
)
{
return
val
.
type
==
'1'
?
`正式课(
${
val
.
duration
}
个月)`
:
`试听课(
${
val
.
duration
}
天)`
return
val
.
type
==
'1'
?
`正式课(
${
val
.
duration
}
个月)`
:
`试听课(
${
val
.
duration
}
天)`
},
},
inviteType
(
value
){
inviteType
(
value
)
{
return
INVITETYPE
[
value
]
return
INVITETYPE
[
value
]
},
},
status
(
value
){
status
(
value
)
{
return
ORDERSTATUS
[
value
]
return
ORDERSTATUS
[
value
]
},
},
buyType
(
value
){
buyType
(
value
)
{
return
BUYTYPE
[
value
]
return
BUYTYPE
[
value
]
},
},
moneytFilter
(
val
){
moneytFilter
(
val
)
{
return
val
=
val
/
100
+
'元'
return
val
=
val
/
100
+
'元'
},
},
filterGoods
(
val
){
filterGoods
(
val
)
{
return
'['
+
val
.
id
+
']'
+
'['
+
GOODSTYPE
[
val
.
goods_type
]
+
']'
+
'['
+
val
.
current_price
/
100
+
'元]'
+
val
.
name
return
'['
+
val
.
id
+
']'
+
'['
+
GOODSTYPE
[
val
.
goods_type
]
+
']'
+
'['
+
val
.
current_price
/
100
+
'元]'
+
val
.
name
},
},
buyTypeWay
(
value
)
{
buyTypeWay
(
value
)
{
return
BUYTYPEWAY
[
value
]
return
BUYTYPEWAY
[
value
]
},
},
}
}
...
@@ -774,16 +788,17 @@
...
@@ -774,16 +788,17 @@
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
>
.avatar
{
.avatar
{
width
:
50px
;
width
:
50px
;
min-width
:
50px
;
min-width
:
50px
;
height
:
50px
;
height
:
50px
;
margin-right
:
5px
;
margin-right
:
5px
;
border-radius
:
50%
;
border-radius
:
50%
;
}
}
.order
{
.order
{
padding
:
20px
0
;
padding
:
20px
0
;
}
}
</
style
>
</
style
>
<
style
>
<
style
>
.f-c
>
.cell
{
.f-c
>
.cell
{
...
...
src/components/notBuyClass/index.vue
View file @
5bb62fd3
...
@@ -35,12 +35,14 @@
...
@@ -35,12 +35,14 @@
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"class_name"
label=
"班级名称"
>
<el-table-column
prop=
"class_name"
label=
"班级名称"
></el-table-column>
</el-table-column>
<el-table-column
label=
"期数名称"
prop=
"periods_name"
width=
"170px"
>
<el-table-column
label=
"期数标题"
prop=
"periods_name"
>
<
template
slot-scope=
"scope"
>
</el-table-column>
<div
v-html=
"periodName(scope.row)"
></div>
<el-table-column
label=
"商品名称"
prop=
"goods_name"
>
<!--
{{
periodName
(
scope
.
row
)
}}
-->
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"商品名称"
prop=
"goods_name"
></el-table-column>
<el-table-column
label=
"手机号"
prop=
"mobile"
>
<el-table-column
label=
"手机号"
prop=
"mobile"
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"created_at"
label=
"创建时间"
sortable
>
<el-table-column
prop=
"created_at"
label=
"创建时间"
sortable
>
...
@@ -54,19 +56,19 @@
...
@@ -54,19 +56,19 @@
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
<page
:nowPage=
"nowPage"
:total=
"total"
@
pageChange=
"onPageChange"
@
sizeChange=
"onSizeChange"
/>
<page
:nowPage=
"nowPage"
:total=
"total"
@
pageChange=
"onPageChange"
@
sizeChange=
"onSizeChange"
/>
<entrance
:entranceObj=
"entranceObj"
/>
<entrance
:entranceObj=
"entranceObj"
/>
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
entrance
from
"./entrance"
;
import
entrance
from
"./entrance"
;
import
{
getClassConfigApi
,
getGoodsListApi
,
updateDescApi
,
exportExcelApi
}
from
"../../service/api"
;
import
{
getClassConfigApi
,
getGoodsListApi
,
updateDescApi
,
exportExcelApi
}
from
"../../service/api"
;
import
page
from
"../framework/page"
;
import
page
from
"../framework/page"
;
import
{
GOODSTYPE
}
from
"../../util/wordbook"
;
import
{
GOODSTYPE
}
from
"../../util/wordbook"
;
export
default
{
export
default
{
name
:
"notBuyClass"
,
name
:
"notBuyClass"
,
data
()
{
data
()
{
return
{
return
{
...
@@ -78,21 +80,21 @@ export default {
...
@@ -78,21 +80,21 @@ export default {
title
:
"无需登录入口"
,
title
:
"无需登录入口"
,
show
:
false
show
:
false
},
},
searchFrom
:
{
searchFrom
:
{
user_id
:
""
,
user_id
:
""
,
goods_id
:
""
,
goods_id
:
""
,
mobile
:
""
,
mobile
:
""
,
},
},
goodList
:
[],
goodList
:
[],
};
};
},
},
components
:
{
components
:
{
entrance
,
entrance
,
page
page
},
},
filters
:
{
filters
:
{
filterGoods
(
val
)
{
filterGoods
(
val
)
{
return
'['
+
GOODSTYPE
[
val
.
goods_type
]
+
']'
+
'['
+
val
.
current_price
/
100
+
'元]'
+
val
.
name
return
'['
+
GOODSTYPE
[
val
.
goods_type
]
+
']'
+
'['
+
val
.
current_price
/
100
+
'元]'
+
val
.
name
}
}
},
},
mounted
()
{
mounted
()
{
...
@@ -101,6 +103,29 @@ export default {
...
@@ -101,6 +103,29 @@ export default {
},
},
methods
:
{
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
)
{
onPageChange
(
val
)
{
this
.
nowPage
=
val
;
this
.
nowPage
=
val
;
this
.
getList
();
this
.
getList
();
...
@@ -116,29 +141,29 @@ export default {
...
@@ -116,29 +141,29 @@ export default {
page
:
this
.
nowPage
page
:
this
.
nowPage
};
};
// 搜索筛选
// 搜索筛选
if
(
this
.
searchFrom
.
user_id
)
{
if
(
this
.
searchFrom
.
user_id
)
{
json
.
user_id
=
this
.
searchFrom
.
user_id
json
.
user_id
=
this
.
searchFrom
.
user_id
}
}
if
(
this
.
searchFrom
.
goods_id
)
{
if
(
this
.
searchFrom
.
goods_id
)
{
json
.
goods_id
=
this
.
searchFrom
.
goods_id
json
.
goods_id
=
this
.
searchFrom
.
goods_id
}
}
if
(
this
.
searchFrom
.
nickname
)
{
if
(
this
.
searchFrom
.
nickname
)
{
json
.
nickname
=
this
.
searchFrom
.
nickname
json
.
nickname
=
this
.
searchFrom
.
nickname
}
}
if
(
this
.
searchFrom
.
mobile
)
{
if
(
this
.
searchFrom
.
mobile
)
{
json
.
mobile
=
this
.
searchFrom
.
mobile
json
.
mobile
=
this
.
searchFrom
.
mobile
}
}
getClassConfigApi
(
json
).
then
(
res
=>
{
getClassConfigApi
(
json
).
then
(
res
=>
{
this
.
total
=
res
.
total
;
this
.
total
=
res
.
total
;
this
.
configList
=
res
.
list
;
this
.
configList
=
res
.
list
;
});
});
},
},
getGoodsOption
(){
getGoodsOption
()
{
let
json
=
{
let
json
=
{
page
:
1
,
page
:
1
,
limit
:
100
limit
:
100
};
};
getGoodsListApi
(
json
).
then
(
res
=>
{
getGoodsListApi
(
json
).
then
(
res
=>
{
this
.
goodList
=
res
.
list
;
this
.
goodList
=
res
.
list
;
})
})
},
},
...
@@ -146,15 +171,15 @@ export default {
...
@@ -146,15 +171,15 @@ export default {
this
.
$prompt
(
''
,
'编辑备注'
,
{
this
.
$prompt
(
''
,
'编辑备注'
,
{
confirmButtonText
:
'确定'
,
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
cancelButtonText
:
'取消'
,
inputType
:
'textarea'
,
inputType
:
'textarea'
,
inputValue
:
desc
||
''
inputValue
:
desc
||
''
}).
then
(({
value
})
=>
{
}).
then
(({
value
})
=>
{
this
.
$confirm
(
'确定保存?'
,
'提示'
,
{
this
.
$confirm
(
'确定保存?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
type
:
'warning'
}).
then
(()
=>
{
}).
then
(()
=>
{
updateDescApi
({
desc
:
value
},
id
).
then
(
res
=>
{
updateDescApi
({
desc
:
value
},
id
).
then
(
res
=>
{
this
.
$message
({
this
.
$message
({
type
:
'success'
,
type
:
'success'
,
message
:
'编辑备注成功'
message
:
'编辑备注成功'
...
@@ -164,48 +189,51 @@ export default {
...
@@ -164,48 +189,51 @@ export default {
});
});
})
})
},
},
exportTable
()
{
exportTable
()
{
let
json
=
{};
let
json
=
{};
if
(
this
.
searchFrom
.
user_id
)
{
if
(
this
.
searchFrom
.
user_id
)
{
json
.
user_id
=
this
.
searchFrom
.
user_id
json
.
user_id
=
this
.
searchFrom
.
user_id
}
}
if
(
this
.
searchFrom
.
goods_id
)
{
if
(
this
.
searchFrom
.
goods_id
)
{
json
.
goods_id
=
this
.
searchFrom
.
goods_id
json
.
goods_id
=
this
.
searchFrom
.
goods_id
}
}
if
(
this
.
searchFrom
.
mobile
)
{
if
(
this
.
searchFrom
.
mobile
)
{
json
.
mobile
=
this
.
searchFrom
.
mobile
json
.
mobile
=
this
.
searchFrom
.
mobile
}
}
if
(
this
.
searchFrom
.
nickname
)
{
if
(
this
.
searchFrom
.
nickname
)
{
json
.
nickname
=
this
.
searchFrom
.
nickname
json
.
nickname
=
this
.
searchFrom
.
nickname
}
}
exportExcelApi
(
'/api/admin/user/receive/course/log/export'
,
json
)
exportExcelApi
(
'/api/admin/user/receive/course/log/export'
,
json
)
},
},
}
}
};
};
</
script
>
</
script
>
<
style
scoped
lang=
"less"
>
<
style
scoped
lang=
"less"
>
.not_buy {
.not_buy {
.head {
.head {
margin-bottom: 10px;
margin-bottom: 10px;
}
}
width: 100%;
width: 100%;
padding: 20px 0;
padding: 20px 0;
.page-div {
.page-div {
text-align: center;
text-align: center;
padding-top: 20px;
padding-top: 20px;
}
}
}
}
.avatar {
.avatar {
width: 50px;
width: 50px;
min-width:
50px !important;
min-width:
50px !important;
height: 50px;
height: 50px;
border-radius: 50%;
border-radius: 50%;
line-height:
1;
line-height:
1;
}
}
</
style
>
</
style
>
<
style
>
<
style
>
.userInfo
>
div
{
.userInfo
>
div
{
display
:
flex
;
display
:
flex
;
flex-flow
:
row
nowrap
;
flex-flow
:
row
nowrap
;
justify-content
:
flex-start
;
justify-content
:
flex-start
;
...
...
src/components/order/index.vue
View file @
5bb62fd3
...
@@ -83,26 +83,29 @@
...
@@ -83,26 +83,29 @@
</el-table-column>
</el-table-column>
<el-table-column
label=
"购买人"
className=
"f-c"
width=
"150"
>
<el-table-column
label=
"购买人"
className=
"f-c"
width=
"150"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<img
class=
"avatar"
:src=
"scope.row.user_avatar"
/>
{{
scope
.
row
.
user_nickname
}}
<br>
(ID:
{{
scope
.
row
.
user_id
}}
)
<br>
手机:
{{
scope
.
row
.
user_mobile
}}
<img
class=
"avatar"
:src=
"scope.row.user_avatar"
/>
{{
scope
.
row
.
user_nickname
}}
<br>
(ID:
{{
scope
.
row
.
user_id
}}
)
<br>
手机:
{{
scope
.
row
.
user_mobile
}}
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
<!--<el-table-column prop="periods_title" label="期数名称"></el-table-column><!––>-->
prop=
"periods_title"
<el-table-column
prop=
"periods_title"
label=
"期数名称"
width=
"150px"
>
label=
"期数标题"
>
<
template
slot-scope=
"scope"
>
<div
v-html=
"periodName(scope.row)"
></div>
<!--
{{
periodName
(
scope
.
row
)
}}
-->
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"goods_name"
label=
"商品名称"
width=
"160"
>
<el-table-column
prop=
"goods_name"
label=
"商品名称"
width=
"160"
>
</el-table-column>
</el-table-column>
<el-table-column
width=
"250"
prop=
"invite_id"
className=
"f-c"
label=
"来源"
>
<el-table-column
width=
"250"
prop=
"invite_id"
className=
"f-c"
label=
"来源"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<div
@
click=
"showSource(scope.row)"
v-if=
"scope.row.invite_earnings > 0 && scope.row.invite_id !== 0"
style=
"width:100%;display: flex;color: #409eff;cursor: pointer"
>
<div
@
click=
"showSource(scope.row)"
v-if=
"scope.row.invite_earnings > 0 && scope.row.invite_id !== 0"
style=
"width:100%;display: flex;color: #409eff;cursor: pointer"
>
<img
:src=
"scope.row.invite_avatar"
class=
"avatar"
/>
类型:
{{
scope
.
row
.
invite_type
}}
(
{{
scope
.
row
.
invite_name
}}
)
<img
:src=
"scope.row.invite_avatar"
class=
"avatar"
/>
类型:
{{
scope
.
row
.
invite_type
}}
(
{{
scope
.
row
.
invite_name
}}
)
<br>
收益:
{{
scope
.
row
.
invite_earnings
/
100
}}
<br>
收益:
{{
scope
.
row
.
invite_earnings
/
100
}}
<br>
用户ID:
{{
scope
.
row
.
invite_id
}}
<br>
用户ID:
{{
scope
.
row
.
invite_id
}}
<br>
昵称:
{{
scope
.
row
.
invite_nickname
}}
<br>
昵称:
{{
scope
.
row
.
invite_nickname
}}
<br>
手机:
{{
scope
.
row
.
invite_mobile
}}
<br>
手机:
{{
scope
.
row
.
invite_mobile
}}
</div>
</div>
<div
v-if=
"scope.row.invite_earnings === 0 && scope.row.invite_id !== 0"
style=
"display: flex;"
>
<div
v-if=
"scope.row.invite_earnings === 0 && scope.row.invite_id !== 0"
style=
"display: flex;"
>
<img
:src=
"scope.row.invite_avatar"
class=
"avatar"
/>
类型:
{{
scope
.
row
.
invite_type
}}
(
{{
scope
.
row
.
invite_name
}}
)
<img
:src=
"scope.row.invite_avatar"
class=
"avatar"
/>
类型:
{{
scope
.
row
.
invite_type
}}
(
{{
scope
.
row
.
invite_name
}}
)
<br>
收益:
{{
scope
.
row
.
invite_earnings
/
100
}}
<br>
收益:
{{
scope
.
row
.
invite_earnings
/
100
}}
<br>
用户ID:
{{
scope
.
row
.
invite_id
}}
<br>
用户ID:
{{
scope
.
row
.
invite_id
}}
<br>
昵称:
{{
scope
.
row
.
invite_nickname
}}
<br>
昵称:
{{
scope
.
row
.
invite_nickname
}}
...
@@ -187,7 +190,7 @@
...
@@ -187,7 +190,7 @@
</el-table>
</el-table>
<address-dialog
:dialogObj=
"dialogObj"
@
reflash=
"onUpdateAddress"
></address-dialog>
<address-dialog
:dialogObj=
"dialogObj"
@
reflash=
"onUpdateAddress"
></address-dialog>
<refund-dialog
:dialogObj=
"refundDialogObj"
@
reflash=
"onAfterRefund"
@
changeShow=
"changeShow"
></refund-dialog>
<refund-dialog
:dialogObj=
"refundDialogObj"
@
reflash=
"onAfterRefund"
@
changeShow=
"changeShow"
></refund-dialog>
<detail-dialog
:dialogObj=
"dialogDetailObj"
@
changeShow=
"changeDetailShow"
/>
<detail-dialog
:dialogObj=
"dialogDetailObj"
@
changeShow=
"changeDetailShow"
/>
<source-dialog
:dialogObj=
"sourceDialog"
/>
<source-dialog
:dialogObj=
"sourceDialog"
/>
<refund-detail
:dialogObj=
"refundDetail"
/>
<refund-detail
:dialogObj=
"refundDetail"
/>
<coupon-dialog
:dialogObj=
"couponDetail"
/>
<coupon-dialog
:dialogObj=
"couponDetail"
/>
...
@@ -205,12 +208,12 @@
...
@@ -205,12 +208,12 @@
<el-button
type=
"primary"
@
click=
"saveTeacher"
>
确 定
</el-button>
<el-button
type=
"primary"
@
click=
"saveTeacher"
>
确 定
</el-button>
</span>
</span>
</el-dialog>
</el-dialog>
<page
:nowPage=
"nowPage"
:total=
"total"
:limit=
"limit"
@
pageChange=
"onPageChange"
@
sizeChange=
"onSizeChange"
/>
<page
:nowPage=
"nowPage"
:total=
"total"
:limit=
"limit"
@
pageChange=
"onPageChange"
@
sizeChange=
"onSizeChange"
/>
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
{
import
{
getOrderListApi
,
getOrderListApi
,
editOrderDescApi
,
editOrderDescApi
,
getGoodsListApi
,
getGoodsListApi
,
...
@@ -219,16 +222,16 @@ import {
...
@@ -219,16 +222,16 @@ import {
getTeacherListApi
,
getTeacherListApi
,
updateOrderTeacherApi
,
updateOrderTeacherApi
,
setOrderApi
setOrderApi
}
from
"../../service/api"
;
}
from
"../../service/api"
;
import
page
from
"../framework/page"
;
import
page
from
"../framework/page"
;
import
addressDialog
from
"./dialog"
;
import
addressDialog
from
"./dialog"
;
import
sourceDialog
from
"./sourceDialog"
;
import
sourceDialog
from
"./sourceDialog"
;
import
refundDialog
from
"./refundDialog"
;
import
refundDialog
from
"./refundDialog"
;
import
couponDialog
from
"./couponDialog"
;
import
couponDialog
from
"./couponDialog"
;
import
detailDialog
from
"./detail"
;
import
detailDialog
from
"./detail"
;
import
refundDetail
from
"./refundDetail"
;
import
refundDetail
from
"./refundDetail"
;
import
AddressArray
from
"../framework/address-picker/addr"
;
import
AddressArray
from
"../framework/address-picker/addr"
;
import
{
import
{
INVITETYPE
,
INVITETYPE
,
ORDERSTATUS
,
ORDERSTATUS
,
BUYTYPE
,
BUYTYPE
,
...
@@ -238,40 +241,40 @@ import {
...
@@ -238,40 +241,40 @@ import {
GOODSTYPE
,
GOODSTYPE
,
ISLEADER
,
ISLEADER
,
ISLEADEROPTION
ISLEADEROPTION
}
from
"../../util/wordbook"
;
}
from
"../../util/wordbook"
;
import
CommonJs
from
"../../util/common"
;
import
CommonJs
from
"../../util/common"
;
export
default
{
export
default
{
name
:
"index"
,
name
:
"index"
,
data
()
{
data
()
{
return
{
return
{
nowPage
:
1
,
nowPage
:
1
,
total
:
0
,
total
:
0
,
today
:
{
today
:
{
text
:
'今天'
,
text
:
'今天'
,
onClick
:()
=>
{
onClick
:
()
=>
{
this
.
searchFrom
.
payTime
=
[
this
.
formatTime
(
new
Date
())
+
' 00:00:00'
,
this
.
formatTime
(
new
Date
())
+
' 23:59:59'
];
this
.
searchFrom
.
payTime
=
[
this
.
formatTime
(
new
Date
())
+
' 00:00:00'
,
this
.
formatTime
(
new
Date
())
+
' 23:59:59'
];
}
}
},
},
yesterday
:
{
yesterday
:
{
text
:
'昨天'
,
text
:
'昨天'
,
onClick
:()
=>
{
onClick
:
()
=>
{
let
preDate
=
this
.
formatTime
(
new
Date
(
new
Date
().
getTime
()
-
24
*
60
*
60
*
1000
));
let
preDate
=
this
.
formatTime
(
new
Date
(
new
Date
().
getTime
()
-
24
*
60
*
60
*
1000
));
this
.
searchFrom
.
payTime
=
[
preDate
+
' 00:00:00'
,
preDate
+
' 23:59:59'
];
this
.
searchFrom
.
payTime
=
[
preDate
+
' 00:00:00'
,
preDate
+
' 23:59:59'
];
}
}
},
},
last30Day
:
{
last30Day
:
{
text
:
'过去30天'
,
text
:
'过去30天'
,
onClick
:()
=>
{
onClick
:
()
=>
{
let
preDate
=
this
.
formatTime
(
new
Date
(
new
Date
().
getTime
()
-
30
*
24
*
60
*
60
*
1000
));
let
preDate
=
this
.
formatTime
(
new
Date
(
new
Date
().
getTime
()
-
30
*
24
*
60
*
60
*
1000
));
this
.
searchFrom
.
payTime
=
[
preDate
+
' 00:00:00'
,
this
.
formatTime
(
new
Date
())
+
' 23:59:59'
];
this
.
searchFrom
.
payTime
=
[
preDate
+
' 00:00:00'
,
this
.
formatTime
(
new
Date
())
+
' 23:59:59'
];
}
}
},
},
last7Day
:
{
last7Day
:
{
text
:
'过去7天'
,
text
:
'过去7天'
,
onClick
:()
=>
{
onClick
:
()
=>
{
let
preDate
=
this
.
formatTime
(
new
Date
(
new
Date
().
getTime
()
-
7
*
24
*
60
*
60
*
1000
));
let
preDate
=
this
.
formatTime
(
new
Date
(
new
Date
().
getTime
()
-
7
*
24
*
60
*
60
*
1000
));
this
.
searchFrom
.
payTime
=
[
preDate
+
' 00:00:00'
,
this
.
formatTime
(
new
Date
())
+
' 23:59:59'
];
this
.
searchFrom
.
payTime
=
[
preDate
+
' 00:00:00'
,
this
.
formatTime
(
new
Date
())
+
' 23:59:59'
];
}
}
},
},
sourceDialog
:
{
sourceDialog
:
{
...
@@ -289,7 +292,7 @@ export default {
...
@@ -289,7 +292,7 @@ export default {
limit
:
10
,
limit
:
10
,
searchFrom
:
{
searchFrom
:
{
nickname
:
""
,
nickname
:
""
,
wait_into_course
:
''
,
wait_into_course
:
''
,
user_id
:
""
,
user_id
:
""
,
invite_type
:
""
,
invite_type
:
""
,
invite_id
:
""
,
invite_id
:
""
,
...
@@ -299,7 +302,7 @@ export default {
...
@@ -299,7 +302,7 @@ export default {
out_trade_no
:
""
,
out_trade_no
:
""
,
payTime
:
[],
payTime
:
[],
order_group_id
:
""
,
order_group_id
:
""
,
is_captain
:
""
,
is_captain
:
""
,
},
},
tableData
:
[],
tableData
:
[],
dialogObj
:
{
dialogObj
:
{
...
@@ -320,7 +323,7 @@ export default {
...
@@ -320,7 +323,7 @@ export default {
buyTypeOption
:
BUYTYPEOPTION
,
buyTypeOption
:
BUYTYPEOPTION
,
inviteSearchPlaceholder
:
""
,
inviteSearchPlaceholder
:
""
,
rules
:
{
rules
:
{
value
:
[{
required
:
true
,
message
:
"请输入备注"
,
trigger
:
"change"
}]
value
:
[{
required
:
true
,
message
:
"请输入备注"
,
trigger
:
"change"
}]
},
},
promoterDialog
:
{
promoterDialog
:
{
show
:
false
,
show
:
false
,
...
@@ -331,18 +334,41 @@ export default {
...
@@ -331,18 +334,41 @@ export default {
},
},
teacherList
:
[],
teacherList
:
[],
loading
:
false
,
loading
:
false
,
isLeaderOption
:
ISLEADEROPTION
,
isLeaderOption
:
ISLEADEROPTION
,
};
};
},
},
methods
:
{
methods
:
{
formatTime
(
date
){
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
},
formatTime
(
date
)
{
let
year
=
date
.
getFullYear
();
let
year
=
date
.
getFullYear
();
let
Month
=
date
.
getMonth
()
+
1
;
let
Month
=
date
.
getMonth
()
+
1
;
if
(
Month
<
10
)
{
if
(
Month
<
10
)
{
Month
=
`0
${
Month
}
`
Month
=
`0
${
Month
}
`
}
}
let
Day
=
date
.
getDate
();
let
Day
=
date
.
getDate
();
if
(
Day
<
10
)
Day
=
`0
${
Day
}
`
;
if
(
Day
<
10
)
Day
=
`0
${
Day
}
`
;
return
`
${
year
}
-
${
Month
}
-
${
Day
}
`
;
return
`
${
year
}
-
${
Month
}
-
${
Day
}
`
;
},
},
showRef
(
data
)
{
showRef
(
data
)
{
...
@@ -359,7 +385,7 @@ export default {
...
@@ -359,7 +385,7 @@ export default {
},
},
changeRow
(
data
,
b
)
{
changeRow
(
data
,
b
)
{
if
(
b
.
indexOf
(
data
)
>
-
1
)
{
if
(
b
.
indexOf
(
data
)
>
-
1
)
{
getRefundListApi
({
out_trade_no
:
data
.
out_trade_no
}).
then
(
res
=>
{
getRefundListApi
({
out_trade_no
:
data
.
out_trade_no
}).
then
(
res
=>
{
data
.
refundList
=
res
.
list
;
data
.
refundList
=
res
.
list
;
});
});
}
}
...
@@ -404,14 +430,14 @@ export default {
...
@@ -404,14 +430,14 @@ export default {
json
.
wait_into_course
=
this
.
searchFrom
.
wait_into_course
json
.
wait_into_course
=
this
.
searchFrom
.
wait_into_course
}
}
json
.
course_type
=
1
;
//日课
json
.
course_type
=
1
;
//日课
exportExcelApi
(
"/api/admin/order/export"
,
json
,
'日课订单列表'
);
exportExcelApi
(
"/api/admin/order/export"
,
json
,
'日课订单列表'
);
},
},
getGoodsOption
()
{
getGoodsOption
()
{
let
json
=
{
let
json
=
{
page
:
1
,
page
:
1
,
limit
:
100
,
limit
:
100
,
course_type
:
1
,
course_type
:
1
,
status
:
"1,2"
status
:
"1,2"
};
};
getGoodsListApi
(
json
).
then
(
res
=>
{
getGoodsListApi
(
json
).
then
(
res
=>
{
...
@@ -442,13 +468,13 @@ export default {
...
@@ -442,13 +468,13 @@ export default {
cancelButtonText
:
"取消"
,
cancelButtonText
:
"取消"
,
inputType
:
"textarea"
,
inputType
:
"textarea"
,
inputValue
:
desc
||
""
inputValue
:
desc
||
""
}).
then
(({
value
})
=>
{
}).
then
(({
value
})
=>
{
this
.
$confirm
(
"确定保存?"
,
"提示"
,
{
this
.
$confirm
(
"确定保存?"
,
"提示"
,
{
confirmButtonText
:
"确定"
,
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
type
:
"warning"
}).
then
(()
=>
{
}).
then
(()
=>
{
editOrderDescApi
(
id
,
"order"
,
{
desc
:
value
}).
then
(
res
=>
{
editOrderDescApi
(
id
,
"order"
,
{
desc
:
value
}).
then
(
res
=>
{
this
.
$message
({
this
.
$message
({
type
:
"success"
,
type
:
"success"
,
message
:
"编辑备注成功"
message
:
"编辑备注成功"
...
@@ -667,10 +693,9 @@ export default {
...
@@ -667,10 +693,9 @@ export default {
this
.
getOrderList
();
this
.
getOrderList
();
this
.
getGoodsOption
();
this
.
getGoodsOption
();
},
},
watch
:
{
watch
:
{},
},
filters
:
{
filters
:
{
isLeader
(
value
)
{
isLeader
(
value
)
{
return
ISLEADER
[
value
]
return
ISLEADER
[
value
]
},
},
payMentFilter
(
val
)
{
payMentFilter
(
val
)
{
...
@@ -708,26 +733,27 @@ export default {
...
@@ -708,26 +733,27 @@ export default {
);
);
}
}
}
}
};
};
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
>
.avatar
{
.avatar
{
width
:
50px
;
width
:
50px
;
min-width
:
50px
;
min-width
:
50px
;
height
:
50px
;
height
:
50px
;
margin-right
:
5px
;
margin-right
:
5px
;
border-radius
:
50%
;
border-radius
:
50%
;
}
}
.order
{
.order
{
padding
:
20px
0
;
padding
:
20px
0
;
}
}
</
style
>
</
style
>
<
style
>
<
style
>
.f-c
>
.cell
{
.f-c
>
.cell
{
display
:
flex
!important
;
display
:
flex
!important
;
flex-flow
:
row
;
flex-flow
:
row
;
justify-content
:
flex-start
;
justify-content
:
flex-start
;
align-items
:
center
;
align-items
:
center
;
}
}
</
style
>
</
style
>
src/components/teacher/index.vue
View file @
5bb62fd3
...
@@ -550,7 +550,7 @@
...
@@ -550,7 +550,7 @@
<
style
scoped
lang=
"less"
>
<
style
scoped
lang=
"less"
>
@import "../../util/public";
@import "../../util/public";
.user{
.user{
height: 100%;
/*height: 100%;*/
overflow: auto;
overflow: auto;
padding: 20px 0;
padding: 20px 0;
.btn-content{
.btn-content{
...
...
src/components/teacherDetail/index.vue
View file @
5bb62fd3
...
@@ -3,9 +3,7 @@
...
@@ -3,9 +3,7 @@
<div
class=
"header"
>
<div
class=
"header"
>
<el-card
style=
"width: 450px;display: inline-block;margin-right: 10px"
>
<el-card
style=
"width: 450px;display: inline-block;margin-right: 10px"
>
<div
slot=
"header"
>
<div
slot=
"header"
>
<span>
<span><label>
{{
detail
.
type
|
teacherType
}}
:
</label>
{{
detail
.
name
}}
(T
{{
detail
.
squad
}}
)
</span>
<label>
{{
detail
.
type
|
teacherType
}}
:
</label>
{{
detail
.
name
}}
(T
{{
detail
.
squad
}}
)
</span>
<el-button
style=
"float: right;margin-top: -6px;"
size=
"small"
type=
"success"
v-if=
"!$store.state.readonly"
plain
@
click=
"onAddUser(true)"
>
老师绑定用户
</el-button>
<el-button
style=
"float: right;margin-top: -6px;"
size=
"small"
type=
"success"
v-if=
"!$store.state.readonly"
plain
@
click=
"onAddUser(true)"
>
老师绑定用户
</el-button>
</div>
</div>
<div
class=
"card-content"
>
<div
class=
"card-content"
>
...
@@ -36,9 +34,7 @@
...
@@ -36,9 +34,7 @@
<el-card
style=
"width: 450px;display: inline-block;margin-right: 10px"
v-if=
"detail.user_info"
>
<el-card
style=
"width: 450px;display: inline-block;margin-right: 10px"
v-if=
"detail.user_info"
>
<div
slot=
"header"
>
<div
slot=
"header"
>
<span>
绑定用户
</span>
<span>
绑定用户
</span>
<el-button
@
click=
"createInviteLink(detail.user_info)"
style=
"float: right;"
size=
"mini"
plain
type=
"primary"
>
<el-button
@
click=
"createInviteLink(detail.user_info)"
style=
"float: right;"
size=
"mini"
plain
type=
"primary"
>
复制专属链接
</el-button>
复制专属链接
</el-button>
</div>
</div>
<div
class=
"card-content"
>
<div
class=
"card-content"
>
<div
class=
"text item"
>
<div
class=
"text item"
>
...
@@ -78,60 +74,47 @@
...
@@ -78,60 +74,47 @@
<el-tab-pane
label=
"今日任务"
name=
"task"
>
<el-tab-pane
label=
"今日任务"
name=
"task"
>
<task
:parentDetail=
"parentDetail"
></task>
<task
:parentDetail=
"parentDetail"
></task>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"期数列表"
name=
"periods"
>
<el-tab-pane
label=
"期数列表"
name=
"periods"
>
<el-table
<el-table
@
expand-change=
"changeRow"
:data=
"list"
>
@
expand-change=
"changeRow"
:data=
"list"
style=
"width: 100%"
>
<el-table-column
type=
"expand"
>
<el-table-column
type=
"expand"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
<el-table
<el-table
:data=
"[scope.row]"
>
:data=
"[scope.row]"
<el-table-column
label=
"到课率"
>
style=
"width: 100%"
>
<el-table-column
label=
"到课率"
>
<template
slot-scope=
"scope2"
>
<template
slot-scope=
"scope2"
>
<span>
{{
scope2
.
row
.
arrive_course_rate
|
percent
}}
</span>
<span>
{{
scope2
.
row
.
arrive_course_rate
|
percent
}}
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
label=
"看课率"
>
label=
"看课率"
>
<
template
slot-scope=
"scope2"
>
<
template
slot-scope=
"scope2"
>
<span>
{{
scope2
.
row
.
watch_course_rate
|
percent
}}
</span>
<span>
{{
scope2
.
row
.
watch_course_rate
|
percent
}}
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
label=
"完课率"
>
label=
"完课率"
>
<
template
slot-scope=
"scope2"
>
<
template
slot-scope=
"scope2"
>
<span>
{{
scope2
.
row
.
over_course_rate
|
percent
}}
</span>
<span>
{{
scope2
.
row
.
over_course_rate
|
percent
}}
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
label=
"作业率"
>
label=
"作业率"
>
<
template
slot-scope=
"scope2"
>
<
template
slot-scope=
"scope2"
>
<span>
{{
scope2
.
row
.
work_rate
|
percent
}}
</span>
<span>
{{
scope2
.
row
.
work_rate
|
percent
}}
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
label=
"全勤作业率"
>
label=
"全勤作业率"
>
<
template
slot-scope=
"scope2"
>
<
template
slot-scope=
"scope2"
>
<span>
{{
scope2
.
row
.
over_work_rate
|
percent
}}
</span>
<span>
{{
scope2
.
row
.
over_work_rate
|
percent
}}
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
label=
"打卡率"
>
label=
"打卡率"
>
<
template
slot-scope=
"scope2"
>
<
template
slot-scope=
"scope2"
>
<span>
{{
scope2
.
row
.
clock_rate
|
percent
}}
</span>
<span>
{{
scope2
.
row
.
clock_rate
|
percent
}}
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
label=
"全勤打卡率"
>
label=
"全勤打卡率"
>
<
template
slot-scope=
"scope2"
>
<
template
slot-scope=
"scope2"
>
<span>
{{
scope2
.
row
.
over_clock_rate
|
percent
}}
</span>
<span>
{{
scope2
.
row
.
over_clock_rate
|
percent
}}
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
label=
"转化率"
>
label=
"转化率"
>
<
template
slot-scope=
"scope2"
>
<
template
slot-scope=
"scope2"
>
<span>
{{
scope2
.
row
.
transform_rate
|
percent
}}
</span>
<span>
{{
scope2
.
row
.
transform_rate
|
percent
}}
</span>
</
template
>
</
template
>
...
@@ -139,7 +122,13 @@
...
@@ -139,7 +122,13 @@
</el-table>
</el-table>
</template>
</template>
</el-table-column>
</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=
"class_name"
label=
"班级名称"
></el-table-column>
<el-table-column
prop=
"class_name"
label=
"班级名称"
></el-table-column>
<el-table-column
prop=
"join_num"
label=
"已进班人数"
width=
"90px"
></el-table-column>
<el-table-column
prop=
"join_num"
label=
"已进班人数"
width=
"90px"
></el-table-column>
<el-table-column
prop=
"need_add_teacher_num"
label=
"需加好友数"
width=
"90px"
></el-table-column>
<el-table-column
prop=
"need_add_teacher_num"
label=
"需加好友数"
width=
"90px"
></el-table-column>
...
@@ -158,7 +147,7 @@
...
@@ -158,7 +147,7 @@
</el-table>
</el-table>
<page
:total=
"total"
:limit=
"limit"
@
pageChange=
"onPageChange"
@
sizeChange=
"onSizeChange"
/>
<page
:total=
"total"
:limit=
"limit"
@
pageChange=
"onPageChange"
@
sizeChange=
"onSizeChange"
/>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"系统订单列表"
name=
"order"
>
<el-tab-pane
label=
"系统订单列表"
name=
"order"
>
<el-form
ref=
"form"
:model=
"form"
label-width=
"100px"
inline
>
<el-form
ref=
"form"
:model=
"form"
label-width=
"100px"
inline
>
<el-form-item
label=
"用户ID"
>
<el-form-item
label=
"用户ID"
>
<el-input
v-model=
"form.user_id"
></el-input>
<el-input
v-model=
"form.user_id"
></el-input>
...
@@ -195,39 +184,26 @@
...
@@ -195,39 +184,26 @@
<el-form-item
label=
"交易订单号"
>
<el-form-item
label=
"交易订单号"
>
<el-input
v-model=
"form.out_trade_no"
></el-input>
<el-input
v-model=
"form.out_trade_no"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
>
<el-form-item>
<el-button
type=
"primary"
plain
@
click=
"getOrderList"
>
搜索
</el-button>
<el-button
type=
"primary"
plain
@
click=
"getOrderList"
>
搜索
</el-button>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<el-table
<el-table
:data=
"tableData"
class=
"order_list"
fixed
>
:data=
"tableData"
<el-table-column
prop=
"out_trade_no"
label=
"订单号"
></el-table-column>
style=
"width: 100%"
class=
"order_list"
fixed
>
<el-table-column
label=
"购买人"
className=
"f-c"
width=
"150"
>
<el-table-column
prop=
"out_trade_no"
label=
"订单号"
>
</el-table-column>
<el-table-column
label=
"购买人"
className=
"f-c"
width=
"150"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<img
class=
"avatar"
:src=
"scope.row.user_avatar"
/>
{{
scope
.
row
.
user_nickname
}}
<br>
(ID:
{{
scope
.
row
.
user_id
}}
)
<br>
手机:
{{
scope
.
row
.
user_mobile
}}
<img
class=
"avatar"
:src=
"scope.row.user_avatar"
/>
{{
scope
.
row
.
user_nickname
}}
<br>
(ID:
{{
scope
.
row
.
user_id
}}
)
<br>
手机:
{{
scope
.
row
.
user_mobile
}}
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
<!--<el-table-column prop="periods_title" label="期数名称"></el-table-column>-->
prop=
"periods_title"
<el-table-column
prop=
"periods_title"
label=
"期数名称"
width=
"170px"
>
label=
"期数标题"
>
<
template
slot-scope=
"scope"
>
</el-table-column>
<div
v-html=
"periodName(scope.row)"
></div>
<el-table-column
<!--
{{
periodName
(
scope
.
row
)
}}
-->
prop=
"goods_name"
</
template
>
label=
"商品名称"
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
prop=
"goods_name"
label=
"商品名称"
></el-table-column>
width=
"250"
<el-table-column
width=
"250"
prop=
"invite_id"
className=
"f-c"
label=
"推广人"
>
prop=
"invite_id"
className=
"f-c"
label=
"推广人"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<div
@
click=
"showSource(scope.row)"
v-if=
"scope.row.invite_earnings > 0 && scope.row.invite_id !== 0"
style=
"width:100%;display: flex;color: #409eff;cursor: pointer"
>
<div
@
click=
"showSource(scope.row)"
v-if=
"scope.row.invite_earnings > 0 && scope.row.invite_id !== 0"
style=
"width:100%;display: flex;color: #409eff;cursor: pointer"
>
<img
:src=
"scope.row.invite_avatar"
class=
"avatar"
/>
<img
:src=
"scope.row.invite_avatar"
class=
"avatar"
/>
...
@@ -253,39 +229,29 @@
...
@@ -253,39 +229,29 @@
<br>
<br>
手机:
{{
scope
.
row
.
invite_mobile
}}
手机:
{{
scope
.
row
.
invite_mobile
}}
</div>
</div>
<div
v-if=
"scope.row.invite_id === 0"
>
<div
v-if=
"scope.row.invite_id === 0"
>
无
</div>
无
</div>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
label=
"优惠活动"
>
label=
"优惠活动"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<span
v-if=
"scope.row.order_coupon_id === 0"
>
<span
v-if=
"scope.row.order_coupon_id === 0"
>
无
</span>
无
</span>
<el-button
type=
"text"
v-if=
"scope.row.order_coupon_id !== 0"
@
click=
"showCoupon(scope.row)"
>
<el-button
type=
"text"
v-if=
"scope.row.order_coupon_id !== 0"
@
click=
"showCoupon(scope.row)"
>
优惠券
优惠券
</el-button>
</el-button>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
label=
"付款状态"
width=
"80"
>
label=
"付款状态"
width=
"80"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"text"
v-if=
"scope.row.status === 5 || scope.row.status === 3"
@
click=
"showRef(scope.row)"
>
{{
scope
.
row
.
status
|
status
}}
</el-button>
<el-button
type=
"text"
v-if=
"scope.row.status === 5 || scope.row.status === 3"
@
click=
"showRef(scope.row)"
>
{{
scope
.
row
.
status
|
status
}}
</el-button>
<div
v-if=
"scope.row.status !== 5 && scope.row.status !== 3"
>
{{
scope
.
row
.
status
|
status
}}
</div>
<div
v-if=
"scope.row.status !== 5 && scope.row.status !== 3"
>
{{
scope
.
row
.
status
|
status
}}
</div>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
label=
"实付金额"
width=
"80"
>
label=
"实付金额"
width=
"80"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
money
|
moneytFilter
}}
{{
scope
.
row
.
money
|
moneytFilter
}}
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
label=
"收货地址"
>
label=
"收货地址"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.user_address_id && scope.row.address_info"
>
<div
v-if=
"scope.row.user_address_id && scope.row.address_info"
>
{{
scope
.
row
.
address_info
.
receive_name
}}
<br>
{{
scope
.
row
.
address_info
.
receive_name
}}
<br>
...
@@ -294,46 +260,23 @@
...
@@ -294,46 +260,23 @@
</div>
</div>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
prop=
"pay_at"
label=
"购买时间"
sortable
></el-table-column>
prop=
"pay_at"
<el-table-column
prop=
"created_at"
label=
"下单时间"
sortable
></el-table-column>
label=
"购买时间"
sortable
>
<el-table-column
prop=
"desc"
label=
"备注"
></el-table-column>
</el-table-column>
<el-table-column
width=
"50"
label=
"操作"
v-if=
"!$store.state.readonly"
fixed=
"right"
>
<el-table-column
prop=
"created_at"
label=
"下单时间"
sortable
>
</el-table-column>
<el-table-column
prop=
"desc"
label=
"备注"
>
</el-table-column>
<el-table-column
width=
"50"
label=
"操作"
v-if=
"!$store.state.readonly"
fixed=
"right"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-popover
<el-popover
placement=
"top"
width=
"200"
>
placement=
"top"
width=
"200"
>
<div
style=
"text-align: center"
>
<div
style=
"text-align: center"
>
<el-button
<el-button
@
click=
"editComment(scope.row.id, scope.row.desc)"
type=
"info"
plain
size=
"mini"
>
编辑备注
</el-button>
@
click=
"editComment(scope.row.id, scope.row.desc)"
type=
"info"
plain
size=
"mini"
>
编辑备注
</el-button>
</div>
</div>
<el-button
slot=
"reference"
size=
"mini"
type=
"text"
>
操作
</el-button>
<el-button
slot=
"reference"
size=
"mini"
type=
"text"
>
操作
</el-button>
</el-popover>
</el-popover>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
<page
:total=
"orderListObj.total"
:limit=
"orderListObj.limit"
@
pageChange=
"onPageChange2"
@
sizeChange=
"onSizeChange2"
/>
<page
:total=
"orderListObj.total"
:limit=
"orderListObj.limit"
@
pageChange=
"onPageChange2"
@
sizeChange=
"onSizeChange2"
/>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"外部订单列表"
name=
"yunji"
>
<el-tab-pane
label=
"外部订单列表"
name=
"yunji"
>
<el-form
ref=
"form"
:model=
"form"
label-width=
"100px"
inline
>
<el-form
ref=
"form"
:model=
"form"
label-width=
"100px"
inline
>
<el-form-item
label=
"用户ID"
>
<el-form-item
label=
"用户ID"
>
<el-input
v-model=
"form.user_id"
></el-input>
<el-input
v-model=
"form.user_id"
></el-input>
...
@@ -370,30 +313,29 @@
...
@@ -370,30 +313,29 @@
<el-form-item
label=
"交易订单号"
>
<el-form-item
label=
"交易订单号"
>
<el-input
v-model=
"form.out_trade_no"
></el-input>
<el-input
v-model=
"form.out_trade_no"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
>
<el-form-item>
<el-button
type=
"primary"
plain
@
click=
"getyunjiList"
>
搜索
</el-button>
<el-button
type=
"primary"
plain
@
click=
"getyunjiList"
>
搜索
</el-button>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<el-table
<el-table
:data=
"yunjiList"
class=
"order_list"
fixed
>
:data=
"yunjiList"
<el-table-column
prop=
"order_id"
width=
"80"
label=
"订单号"
></el-table-column>
style=
"width: 100%"
class=
"order_list"
fixed
>
<el-table-column
prop=
"order_id"
width=
"80"
label=
"订单号"
>
</el-table-column>
<el-table-column
prop=
"nickname"
label=
"购买人"
>
<el-table-column
prop=
"nickname"
label=
"购买人"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
'scope.row.user_id !== 0'
>
<div
v-if=
'scope.row.user_id !== 0'
>
<img
class=
"avatar"
:src=
"scope.row.avatar"
/>
<img
class=
"avatar"
:src=
"scope.row.avatar"
/>
<div>
{{
scope
.
row
.
nickname
}}
<br>
(ID:
{{
scope
.
row
.
user_id
}}
)
</div>
<div>
{{
scope
.
row
.
nickname
}}
<br>
(ID:
{{
scope
.
row
.
user_id
}}
)
</div>
</div>
</div>
<div
v-if=
'scope.row.user_id === 0'
>
<div
v-if=
'scope.row.user_id === 0'
>
暂未绑定用户
</div>
暂未绑定用户
</div>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"periods_title"
label=
"期数"
>
<!--<el-table-column prop="periods_title" label="期数名称"></el-table-column>-->
</el-table-column>
<el-table-column
prop=
"periods_title"
label=
"期数名称"
width=
"170px"
>
<el-table-column
prop=
"goods_name"
label=
"商品名称"
>
<
template
slot-scope=
"scope"
>
<div
v-html=
"periodName(scope.row)"
></div>
<!--
{{
periodName
(
scope
.
row
)
}}
-->
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"goods_name"
label=
"商品名称"
></el-table-column>
<el-table-column
prop=
"invite_type"
label=
"来源"
>
<el-table-column
prop=
"invite_type"
label=
"来源"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
invite_type
}}
(
{{
scope
.
row
.
invite_name
}}
)
{{
scope
.
row
.
invite_type
}}
(
{{
scope
.
row
.
invite_name
}}
)
...
@@ -424,18 +366,14 @@
...
@@ -424,18 +366,14 @@
{{
scope
.
row
.
active_at
===
'0000-00-00 00:00:00'
?
'未激活'
:
scope
.
row
.
active_at
}}
{{
scope
.
row
.
active_at
===
'0000-00-00 00:00:00'
?
'未激活'
:
scope
.
row
.
active_at
}}
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"create_time"
label=
"下单时间"
width=
"90"
>
<el-table-column
prop=
"create_time"
label=
"下单时间"
width=
"90"
></el-table-column>
</el-table-column>
<el-table-column
prop=
"pay_time"
label=
"付款时间"
width=
"90"
></el-table-column>
<el-table-column
prop=
"pay_time"
label=
"付款时间"
width=
"90"
>
<el-table-column
prop=
"user_status"
:formatter=
"userStatusFormatter"
label=
"沟通状态"
width=
"90"
></el-table-column>
</el-table-column>
<el-table-column
prop=
"desc"
label=
"备注"
></el-table-column>
<el-table-column
prop=
"user_status"
:formatter=
"userStatusFormatter"
label=
"沟通状态"
width=
"90"
>
</el-table-column>
<el-table-column
prop=
"desc"
label=
"备注"
>
</el-table-column>
</el-table>
</el-table>
<page
:total=
"yunjiListObj.total"
:limit=
"yunjiListObj.limit"
@
pageChange=
"onPageChange3"
@
sizeChange=
"onSizeChange3"
/>
<page
:total=
"yunjiListObj.total"
:limit=
"yunjiListObj.limit"
@
pageChange=
"onPageChange3"
@
sizeChange=
"onSizeChange3"
/>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"话术列表"
name=
"huashu"
>
<el-tab-pane
label=
"话术列表"
name=
"huashu"
>
<div
class=
"cssbox"
>
<div
class=
"cssbox"
>
<el-tabs
v-model=
"questionListParams.type"
type=
"card"
@
tab-click=
"handleClick"
>
<el-tabs
v-model=
"questionListParams.type"
type=
"card"
@
tab-click=
"handleClick"
>
<el-tab-pane
label=
"话术"
name=
"1"
></el-tab-pane>
<el-tab-pane
label=
"话术"
name=
"1"
></el-tab-pane>
...
@@ -447,14 +385,17 @@
...
@@ -447,14 +385,17 @@
<
template
slot=
"title"
>
<
template
slot=
"title"
>
{{
item
.
title
}}
{{
item
.
title
}}
</
template
>
</
template
>
<div
class=
"search"
><el-input
placeholder=
"请输入关键字"
v-model=
"questionListParams.keywords"
></el-input>
<el-button
type=
"primary"
plain
@
click=
"handleChange"
>
搜索
</el-button>
</div>
<div
class=
"search"
>
<el-input
placeholder=
"请输入关键字"
v-model=
"questionListParams.keywords"
></el-input>
<el-button
type=
"primary"
plain
@
click=
"handleChange"
>
搜索
</el-button>
</div>
<el-table
:data=
"modularContent"
style=
"width: 100%"
>
<el-table
:data=
"modularContent"
style=
"width: 100%"
>
<el-table-column
prop=
"title"
label=
"标题"
></el-table-column>
<el-table-column
prop=
"title"
label=
"标题"
></el-table-column>
<el-table-column
prop=
"keywords"
label=
"关键字"
></el-table-column>
<el-table-column
prop=
"keywords"
label=
"关键字"
></el-table-column>
<el-table-column
label=
"创建时间"
prop=
"created_at"
></el-table-column>
<el-table-column
label=
"创建时间"
prop=
"created_at"
></el-table-column>
<el-table-column
width=
"250"
v-if=
"!$store.state.readonly"
label=
"操作"
>
<el-table-column
width=
"250"
v-if=
"!$store.state.readonly"
label=
"操作"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
plain
type=
"warning"
@
click=
"showContent(scope.row)"
>
查看内容
</el-button>
<el-button
size=
"mini"
plain
type=
"warning"
@
click=
"showContent(scope.row)"
>
查看内容
</el-button>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
...
@@ -469,8 +410,7 @@
...
@@ -469,8 +410,7 @@
append-to-body
append-to-body
ref=
"ruleForm"
ref=
"ruleForm"
:visible
.
sync=
"postModularContentDialog"
:visible
.
sync=
"postModularContentDialog"
width=
"800px"
width=
"800px"
>
>
<div
class=
"quesion"
>
<div
class=
"quesion"
>
<p
style=
"font-weight:bold"
>
标题:
</p><span>
{{postModularParams.title}}
</span>
<p
style=
"font-weight:bold"
>
标题:
</p><span>
{{postModularParams.title}}
</span>
</div>
</div>
...
@@ -562,9 +502,30 @@
...
@@ -562,9 +502,30 @@
</template>
</template>
<
script
>
<
script
>
import
{
getTeacherDetailApi
,
getClassStatisticsApi
,
task4Api
,
getUserListApi
,
getQuestionModularListApi
,
getQuestionModularDetailApi
,
import
{
teacherBindUserApi
,
getOrderListApi
,
getGoodsListApi
,
editOrderDescApi
,
updateOrderTeacherApi
,
getyunjiApi
,
getClassListApi
,
getSourceStudentApi
}
from
"../../service/api"
;
getTeacherDetailApi
,
import
{
TEACHERTYPE
,
ORDERSTATUSOPTION
,
GOODSTYPE
,
ORDERSTATUS
,
CLASSSOURCE
,
USERSTATUSFORMATER
}
from
"../../util/wordbook"
;
getClassStatisticsApi
,
task4Api
,
getUserListApi
,
getQuestionModularListApi
,
getQuestionModularDetailApi
,
teacherBindUserApi
,
getOrderListApi
,
getGoodsListApi
,
editOrderDescApi
,
updateOrderTeacherApi
,
getyunjiApi
,
getClassListApi
,
getSourceStudentApi
}
from
"../../service/api"
;
import
{
TEACHERTYPE
,
ORDERSTATUSOPTION
,
GOODSTYPE
,
ORDERSTATUS
,
CLASSSOURCE
,
USERSTATUSFORMATER
}
from
"../../util/wordbook"
;
import
AddressArray
from
'../framework/address-picker/addr'
import
AddressArray
from
'../framework/address-picker/addr'
import
task
from
'./task'
import
task
from
'./task'
import
page
from
'../framework/page'
import
page
from
'../framework/page'
...
@@ -573,13 +534,14 @@
...
@@ -573,13 +534,14 @@
import
refundDetail
from
'./refundDetail'
import
refundDetail
from
'./refundDetail'
import
UserList
from
'../class/userList'
import
UserList
from
'../class/userList'
import
chooseGoodDialog
from
'./chooseGoodDialog'
import
chooseGoodDialog
from
'./chooseGoodDialog'
let
studentSource
=
{}
let
studentSource
=
{}
export
default
{
export
default
{
name
:
"index"
,
name
:
"index"
,
props
:[
props
:
[
'parentDetail'
'parentDetail'
],
],
components
:{
components
:
{
page
,
page
,
task
,
task
,
UserList
,
UserList
,
...
@@ -588,100 +550,123 @@
...
@@ -588,100 +550,123 @@
refundDetail
,
refundDetail
,
sourceDialog
sourceDialog
},
},
data
(){
data
()
{
let
nowDate
=
new
Date
();
let
nowDate
=
new
Date
();
let
month
=
(
nowDate
.
getMonth
()
+
1
);
let
month
=
(
nowDate
.
getMonth
()
+
1
);
if
(
month
<
10
)
month
=
'0'
+
month
.
toString
();
if
(
month
<
10
)
month
=
'0'
+
month
.
toString
();
nowDate
=
nowDate
.
getFullYear
()
+
'-'
+
month
;
nowDate
=
nowDate
.
getFullYear
()
+
'-'
+
month
;
return
{
return
{
modularContentTitle
:
""
,
modularContentTitle
:
""
,
modularTotal
:
0
,
modularTotal
:
0
,
modularNowPage
:
1
,
modularNowPage
:
1
,
modularLimit
:
10
,
modularLimit
:
10
,
contentTotal
:
0
,
contentTotal
:
0
,
contentNowPage
:
1
,
contentNowPage
:
1
,
contentLimit
:
10
,
contentLimit
:
10
,
postModularContentDialog
:
false
,
postModularContentDialog
:
false
,
modularId
:
""
,
modularId
:
""
,
questionListParams
:
{
questionListParams
:
{
type
:
"1"
,
type
:
"1"
,
pid
:
""
,
pid
:
""
,
keywords
:
''
keywords
:
''
},
},
postModularParams
:
{},
postModularParams
:
{},
modularList
:
[],
modularList
:
[],
modularContent
:
[],
modularContent
:
[],
tabs
:
'task'
,
tabs
:
'task'
,
nowDate
:
nowDate
,
nowDate
:
nowDate
,
yunjiList
:[],
yunjiList
:
[],
searchFrom
:
{
searchFrom
:
{
user_id
:
''
,
user_id
:
''
,
is_add_teacher
:
''
,
is_add_teacher
:
''
,
is_view_course
:
''
,
is_view_course
:
''
,
start_at
:
''
,
start_at
:
''
,
end_at
:
''
end_at
:
''
},
},
form
:
{
form
:
{
nickname
:
''
,
nickname
:
''
,
user_id
:
''
,
user_id
:
''
,
status
:
[
1
,
3
,
4
,
5
],
status
:
[
1
,
3
,
4
,
5
],
goods_id
:
''
,
goods_id
:
''
,
out_trade_no
:
''
,
out_trade_no
:
''
,
receive_mobile
:
""
,
receive_mobile
:
""
,
mobile
:
""
,
mobile
:
""
,
},
},
task4Data
:
null
,
task4Data
:
null
,
goodList
:[],
goodList
:
[],
orderStatusOption
:
ORDERSTATUSOPTION
,
orderStatusOption
:
ORDERSTATUSOPTION
,
tableData
:[],
tableData
:
[],
userList
:[],
userList
:
[],
list
:[],
list
:
[],
id
:
''
,
id
:
''
,
isBindUser
:
true
,
isBindUser
:
true
,
addShow
:
false
,
addShow
:
false
,
detail
:
{},
detail
:
{},
total
:
0
,
total
:
0
,
limit
:
10
,
limit
:
10
,
nowPage
:
1
,
nowPage
:
1
,
userObj
:{
userObj
:
{
classId
:
''
,
classId
:
''
,
title
:
''
,
title
:
''
,
show
:
false
,
show
:
false
,
total
:
0
,
total
:
0
,
limit
:
10
,
limit
:
10
,
nowPage
:
1
,
nowPage
:
1
,
},
},
addId
:
''
,
addId
:
''
,
multipleSelection
:[],
multipleSelection
:
[],
chooseGoodDialogObj
:
{
chooseGoodDialogObj
:
{
show
:
false
,
show
:
false
,
code
:
''
code
:
''
},
},
orderListObj
:{
orderListObj
:
{
total
:
0
,
total
:
0
,
limit
:
10
,
limit
:
10
,
nowPage
:
1
,
nowPage
:
1
,
},
},
yunjiListObj
:{
yunjiListObj
:
{
total
:
0
,
total
:
0
,
limit
:
10
,
limit
:
10
,
nowPage
:
1
,
nowPage
:
1
,
},
},
sourceDialog
:{
sourceDialog
:
{
show
:
false
,
show
:
false
,
out_trade_no
:
''
out_trade_no
:
''
},
couponDetail
:
{
show
:
false
,
order_coupon_id
:
''
},
},
couponDetail
:
{
refundDetail
:
{
show
:
false
,
show
:
false
,
o
rder_coupon_id
:
''
o
ut_trade_no
:
''
},
},
refundDetail
:{
}
show
:
false
,
out_trade_no
:
''
},
},
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
},
},
methods
:{
onPageChangeModular
(
val
)
{
onPageChangeModular
(
val
)
{
this
.
modularNowPage
=
val
;
this
.
modularNowPage
=
val
;
this
.
getList
();
this
.
getList
();
...
@@ -700,9 +685,7 @@
...
@@ -700,9 +685,7 @@
this
.
contentLimit
=
val
;
this
.
contentLimit
=
val
;
this
.
handleChange
();
this
.
handleChange
();
},
},
onPageChangeModular
(){
showContent
(
data
)
{
},
showContent
(
data
){
this
.
modularContentTitle
=
data
.
title
this
.
modularContentTitle
=
data
.
title
getQuestionModularDetailApi
(
data
.
id
).
then
(
res
=>
{
getQuestionModularDetailApi
(
data
.
id
).
then
(
res
=>
{
this
.
postModularParams
=
Object
.
assign
({},
res
);
this
.
postModularParams
=
Object
.
assign
({},
res
);
...
@@ -715,13 +698,13 @@
...
@@ -715,13 +698,13 @@
// console.log(val);
// console.log(val);
let
json
=
{
let
json
=
{
type
:
this
.
questionListParams
.
type
,
type
:
this
.
questionListParams
.
type
,
page
:
this
.
contentNowPage
,
page
:
this
.
contentNowPage
,
limit
:
this
.
contentLimit
limit
:
this
.
contentLimit
};
};
if
(
this
.
modularId
)
{
if
(
this
.
modularId
)
{
json
.
pid
=
this
.
modularId
;
json
.
pid
=
this
.
modularId
;
}
}
if
(
this
.
questionListParams
.
keywords
)
{
if
(
this
.
questionListParams
.
keywords
)
{
json
.
keywords
=
this
.
questionListParams
.
keywords
;
json
.
keywords
=
this
.
questionListParams
.
keywords
;
}
}
// this.postModularParams.pid = this.modularId;
// this.postModularParams.pid = this.modularId;
...
@@ -741,10 +724,10 @@
...
@@ -741,10 +724,10 @@
getList
()
{
getList
()
{
let
json
=
{
let
json
=
{
type
:
this
.
questionListParams
.
type
,
type
:
this
.
questionListParams
.
type
,
modularPage
:
this
.
modularNowPage
,
modularPage
:
this
.
modularNowPage
,
modularLimit
:
this
.
modularLimit
modularLimit
:
this
.
modularLimit
};
};
if
(
this
.
questionListParams
.
pid
)
{
if
(
this
.
questionListParams
.
pid
)
{
json
.
pid
=
this
.
questionListParams
.
pid
;
json
.
pid
=
this
.
questionListParams
.
pid
;
}
}
getQuestionModularListApi
(
json
.
type
,
json
).
then
(
res
=>
{
getQuestionModularListApi
(
json
.
type
,
json
).
then
(
res
=>
{
...
@@ -754,28 +737,28 @@
...
@@ -754,28 +737,28 @@
this
.
modularTotal
=
res
.
total
;
this
.
modularTotal
=
res
.
total
;
});
});
},
},
userStatusFormatter
(
val
){
userStatusFormatter
(
val
)
{
return
(
USERSTATUSFORMATER
[
val
.
user_status
])
return
(
USERSTATUSFORMATER
[
val
.
user_status
])
},
},
getTask4
(){
getTask4
()
{
task4Api
(
this
.
id
).
then
(
res
=>
{
task4Api
(
this
.
id
).
then
(
res
=>
{
this
.
task4Data
=
res
this
.
task4Data
=
res
})
})
},
},
handleSelectionChange
(
val
)
{
handleSelectionChange
(
val
)
{
this
.
multipleSelection
=
val
;
this
.
multipleSelection
=
val
;
},
},
onAdd
(){
onAdd
()
{
let
json
=
{
let
json
=
{
is_buy
:
0
is_buy
:
0
}
}
if
(
this
.
multipleSelection
.
length
===
0
)
{
if
(
this
.
multipleSelection
.
length
===
0
)
{
this
.
$message
({
this
.
$message
({
type
:
'error'
,
type
:
'error'
,
message
:
'请选择用户!'
message
:
'请选择用户!'
});
});
return
return
}
else
if
(
this
.
multipleSelection
.
length
!==
1
){
}
else
if
(
this
.
multipleSelection
.
length
!==
1
)
{
this
.
$message
({
this
.
$message
({
type
:
'error'
,
type
:
'error'
,
message
:
'只能选择一个用户!'
message
:
'只能选择一个用户!'
...
@@ -789,7 +772,7 @@
...
@@ -789,7 +772,7 @@
if
(
!
this
.
isBindUser
)
{
if
(
!
this
.
isBindUser
)
{
}
else
{
}
else
{
teacherBindUserApi
(
this
.
id
,
{
user_id
:
this
.
addId
}).
then
(
res
=>
{
teacherBindUserApi
(
this
.
id
,
{
user_id
:
this
.
addId
}).
then
(
res
=>
{
this
.
$message
({
this
.
$message
({
type
:
'success'
,
type
:
'success'
,
message
:
'绑定成功!'
message
:
'绑定成功!'
...
@@ -801,12 +784,12 @@
...
@@ -801,12 +784,12 @@
})
})
}
}
},
},
onAddUser
(
flag
){
onAddUser
(
flag
)
{
this
.
isBindUser
=
flag
;
this
.
isBindUser
=
flag
;
this
.
addShow
=
true
;
this
.
addShow
=
true
;
this
.
getUser
();
this
.
getUser
();
},
},
getUser
(){
getUser
()
{
let
json
=
{
let
json
=
{
page
:
this
.
userObj
.
nowPage
,
page
:
this
.
userObj
.
nowPage
,
limit
:
this
.
userObj
.
limit
,
limit
:
this
.
userObj
.
limit
,
...
@@ -820,14 +803,14 @@
...
@@ -820,14 +803,14 @@
if
(
this
.
searchFrom
.
mobile
)
{
if
(
this
.
searchFrom
.
mobile
)
{
json
.
mobile
=
this
.
searchFrom
.
mobile
json
.
mobile
=
this
.
searchFrom
.
mobile
}
}
getUserListApi
(
json
).
then
(
res
=>
{
getUserListApi
(
json
).
then
(
res
=>
{
this
.
userList
=
res
.
list
;
this
.
userList
=
res
.
list
;
this
.
userObj
.
total
=
res
.
total
;
this
.
userObj
.
total
=
res
.
total
;
})
})
},
},
changeRow
(
data
,
b
)
{
changeRow
(
data
,
b
)
{
if
(
b
.
indexOf
(
data
)
>-
1
)
{
if
(
b
.
indexOf
(
data
)
>
-
1
)
{
getClassStatisticsApi
(
data
.
periods_id
,
data
.
id
).
then
(
res
=>
{
getClassStatisticsApi
(
data
.
periods_id
,
data
.
id
).
then
(
res
=>
{
data
.
arrive_course_rate
=
res
.
arrive_course_rate
;
data
.
arrive_course_rate
=
res
.
arrive_course_rate
;
data
.
watch_course_rate
=
res
.
watch_course_rate
;
data
.
watch_course_rate
=
res
.
watch_course_rate
;
data
.
over_course_rate
=
res
.
over_course_rate
;
data
.
over_course_rate
=
res
.
over_course_rate
;
...
@@ -839,63 +822,63 @@
...
@@ -839,63 +822,63 @@
})
})
}
}
},
},
showUser
(
data
){
showUser
(
data
)
{
console
.
log
(
data
)
console
.
log
(
data
)
let
classType
=
data
.
type
==
1
?
'(带班班级)'
:
'(观摩班级)'
let
classType
=
data
.
type
==
1
?
'(带班班级)'
:
'(观摩班级)'
this
.
userObj
=
{
this
.
userObj
=
{
classId
:
data
.
id
,
classId
:
data
.
id
,
show
:
true
,
show
:
true
,
title
:
`
${
this
.
detail
.
name
}
班级用户列表
${
classType
}
`
,
title
:
`
${
this
.
detail
.
name
}
班级用户列表
${
classType
}
`
,
teacherId
:
data
.
teacher_id
,
teacherId
:
data
.
teacher_id
,
periods_id
:
data
.
periods_id
,
periods_id
:
data
.
periods_id
,
goods_id
:
data
.
goods_id
,
goods_id
:
data
.
goods_id
,
type
:
data
.
type
type
:
data
.
type
}
}
},
},
onPageChange3
(
val
)
{
/*onPageChange3(val)
{
this.userObj.nowPage = val;
this.userObj.nowPage = val;
this.getUser()
this.getUser()
},
},
*/
onSizeChange3
(
val
)
{
/*onSizeChange3(val)
{
this.userObj.limit = val;
this.userObj.limit = val;
this.userObj.nowPage = 1;
this.userObj.nowPage = 1;
this.getUser();
this.getUser();
},
},
*/
onPageChange
(
val
){
onPageChange
(
val
)
{
this
.
nowPage
=
val
;
this
.
nowPage
=
val
;
this
.
getTeacherDetail
();
this
.
getTeacherDetail
();
},
},
onSizeChange
(
val
){
onSizeChange
(
val
)
{
this
.
limit
=
val
;
this
.
limit
=
val
;
this
.
nowPage
=
1
;
this
.
nowPage
=
1
;
this
.
getTeacherDetail
();
this
.
getTeacherDetail
();
},
},
onPageChange2
(
val
){
onPageChange2
(
val
)
{
this
.
orderListObj
.
nowPage
=
val
;
this
.
orderListObj
.
nowPage
=
val
;
this
.
getOrderList
()
this
.
getOrderList
()
},
},
onSizeChange2
(
val
){
onSizeChange2
(
val
)
{
this
.
orderListObj
.
limit
=
val
;
this
.
orderListObj
.
limit
=
val
;
this
.
orderListObj
.
nowPage
=
1
;
this
.
orderListObj
.
nowPage
=
1
;
this
.
getOrderList
()
this
.
getOrderList
()
},
},
onPageChange3
(
val
)
{
onPageChange3
(
val
)
{
this
.
yunjiListObj
.
nowPage
=
val
;
this
.
yunjiListObj
.
nowPage
=
val
;
this
.
getyunjiList
()
this
.
getyunjiList
()
},
},
onSizeChange3
(
val
){
onSizeChange3
(
val
)
{
this
.
yunjiListObj
.
limit
=
val
;
this
.
yunjiListObj
.
limit
=
val
;
this
.
yunjiListObj
.
nowPage
=
1
;
this
.
yunjiListObj
.
nowPage
=
1
;
this
.
getyunjiList
()
this
.
getyunjiList
()
},
},
getTeacherDetail
(){
getTeacherDetail
()
{
this
.
searchFrom
=
{
this
.
searchFrom
=
{
user_id
:
''
,
user_id
:
''
,
is_add_teacher
:
''
,
is_add_teacher
:
''
,
is_view_course
:
''
,
is_view_course
:
''
,
start_at
:
''
,
start_at
:
''
,
end_at
:
''
end_at
:
''
};
};
let
id
=
this
.
id
;
let
id
=
this
.
id
;
let
json
=
{
let
json
=
{
...
@@ -908,11 +891,11 @@
...
@@ -908,11 +891,11 @@
// })
// })
console
.
log
(
this
.
id
)
console
.
log
(
this
.
id
)
// debugger
// debugger
getTeacherDetailApi
(
id
,
json
).
then
((
res
)
=>
{
getTeacherDetailApi
(
id
,
json
).
then
((
res
)
=>
{
console
.
log
(
res
)
console
.
log
(
res
)
this
.
detail
=
res
;
this
.
detail
=
res
;
if
(
this
.
detail
.
class_list
)
{
if
(
this
.
detail
.
class_list
)
{
this
.
detail
.
class_list
.
list
.
forEach
(
data
=>
{
this
.
detail
.
class_list
.
list
.
forEach
(
data
=>
{
data
.
arrive_course_rate
=
0
;
data
.
arrive_course_rate
=
0
;
data
.
watch_course_rate
=
0
;
data
.
watch_course_rate
=
0
;
data
.
over_course_rate
=
0
;
data
.
over_course_rate
=
0
;
...
@@ -929,24 +912,24 @@
...
@@ -929,24 +912,24 @@
// this.getOrderList();
// this.getOrderList();
})
})
},
},
createInviteLink
(
val
){
createInviteLink
(
val
)
{
this
.
chooseGoodDialogObj
.
show
=
true
;
this
.
chooseGoodDialogObj
.
show
=
true
;
//类型选择项
//类型选择项
if
(
this
.
detail
.
type
==
0
)
{
if
(
this
.
detail
.
type
==
0
)
{
this
.
chooseGoodDialogObj
.
code
=
`CC-TEACHER-
${
val
.
user_id
}
`
;
this
.
chooseGoodDialogObj
.
code
=
`CC-TEACHER-
${
val
.
user_id
}
`
;
}
else
if
(
this
.
detail
.
type
==
1
)
{
}
else
if
(
this
.
detail
.
type
==
1
)
{
this
.
chooseGoodDialogObj
.
code
=
`CC-XXMM-
${
val
.
user_id
}
`
;
this
.
chooseGoodDialogObj
.
code
=
`CC-XXMM-
${
val
.
user_id
}
`
;
}
else
{
}
else
{
this
.
chooseGoodDialogObj
.
code
=
`CC-TEACHER-
${
val
.
user_id
}
`
;
this
.
chooseGoodDialogObj
.
code
=
`CC-TEACHER-
${
val
.
user_id
}
`
;
}
}
},
},
changeShow
(){
changeShow
()
{
this
.
chooseGoodDialogObj
.
show
=
false
;
this
.
chooseGoodDialogObj
.
show
=
false
;
this
.
chooseGoodDialogObj
.
code
=
''
;
this
.
chooseGoodDialogObj
.
code
=
''
;
},
},
getOrderList
(){
getOrderList
()
{
let
json
=
{
let
json
=
{
limit
:
this
.
orderListObj
.
limit
,
limit
:
this
.
orderListObj
.
limit
,
page
:
this
.
orderListObj
.
nowPage
page
:
this
.
orderListObj
.
nowPage
...
@@ -978,11 +961,11 @@
...
@@ -978,11 +961,11 @@
// }
// }
// json.teacher_id=this.id;
// json.teacher_id=this.id;
// json.invite_id=this.id;
// json.invite_id=this.id;
if
(
this
.
detail
.
user_id
!==
0
)
{
if
(
this
.
detail
.
user_id
!==
0
)
{
json
.
invite_id
=
this
.
detail
.
user_id
;
json
.
invite_id
=
this
.
detail
.
user_id
;
getOrderListApi
(
json
).
then
((
res
)
=>
{
getOrderListApi
(
json
).
then
((
res
)
=>
{
res
.
list
.
forEach
(
i
=>
{
res
.
list
.
forEach
(
i
=>
{
i
.
refundList
=
[]
i
.
refundList
=
[]
});
});
this
.
tableData
=
res
.
list
;
this
.
tableData
=
res
.
list
;
this
.
orderListObj
.
total
=
res
.
total
this
.
orderListObj
.
total
=
res
.
total
...
@@ -990,13 +973,13 @@
...
@@ -990,13 +973,13 @@
}
}
},
},
getGoodsOption
(){
getGoodsOption
()
{
let
json
=
{
let
json
=
{
page
:
1
,
page
:
1
,
limit
:
100
,
limit
:
100
,
course_type
:
0
,
course_type
:
0
,
};
};
getGoodsListApi
(
json
).
then
(
res
=>
{
getGoodsListApi
(
json
).
then
(
res
=>
{
this
.
goodList
=
res
.
list
;
this
.
goodList
=
res
.
list
;
})
})
},
},
...
@@ -1004,15 +987,15 @@
...
@@ -1004,15 +987,15 @@
this
.
$prompt
(
''
,
'编辑备注'
,
{
this
.
$prompt
(
''
,
'编辑备注'
,
{
confirmButtonText
:
'确定'
,
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
cancelButtonText
:
'取消'
,
inputType
:
'textarea'
,
inputType
:
'textarea'
,
inputValue
:
desc
||
''
inputValue
:
desc
||
''
}).
then
(({
value
})
=>
{
}).
then
(({
value
})
=>
{
this
.
$confirm
(
'确定保存?'
,
'提示'
,
{
this
.
$confirm
(
'确定保存?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
type
:
'warning'
}).
then
(()
=>
{
}).
then
(()
=>
{
editOrderDescApi
(
id
,
'order'
,{
desc
:
value
}).
then
(
res
=>
{
editOrderDescApi
(
id
,
'order'
,
{
desc
:
value
}).
then
(
res
=>
{
this
.
$message
({
this
.
$message
({
type
:
'success'
,
type
:
'success'
,
message
:
'编辑备注成功'
message
:
'编辑备注成功'
...
@@ -1022,19 +1005,19 @@
...
@@ -1022,19 +1005,19 @@
});
});
})
})
},
},
showRef
(
data
){
showRef
(
data
)
{
this
.
refundDetail
.
show
=
true
;
this
.
refundDetail
.
show
=
true
;
this
.
refundDetail
.
out_trade_no
=
data
.
out_trade_no
;
this
.
refundDetail
.
out_trade_no
=
data
.
out_trade_no
;
},
},
showCoupon
(
data
){
showCoupon
(
data
)
{
this
.
couponDetail
.
show
=
true
;
this
.
couponDetail
.
show
=
true
;
this
.
couponDetail
.
order_coupon_id
=
data
.
order_coupon_id
;
this
.
couponDetail
.
order_coupon_id
=
data
.
order_coupon_id
;
},
},
showSource
(
data
){
showSource
(
data
)
{
this
.
sourceDialog
.
show
=
true
;
this
.
sourceDialog
.
show
=
true
;
this
.
sourceDialog
.
out_trade_no
=
data
.
out_trade_no
;
this
.
sourceDialog
.
out_trade_no
=
data
.
out_trade_no
;
},
},
getyunjiList
(){
getyunjiList
()
{
let
json
=
{
let
json
=
{
limit
:
this
.
yunjiListObj
.
limit
,
limit
:
this
.
yunjiListObj
.
limit
,
page
:
this
.
yunjiListObj
.
nowPage
page
:
this
.
yunjiListObj
.
nowPage
...
@@ -1060,8 +1043,8 @@
...
@@ -1060,8 +1043,8 @@
if
(
this
.
form
.
mobile
)
{
if
(
this
.
form
.
mobile
)
{
json
.
mobile
=
this
.
form
.
mobile
json
.
mobile
=
this
.
form
.
mobile
}
}
if
(
this
.
id
)
{
if
(
this
.
id
)
{
json
.
teacher_id
=
this
.
id
;
json
.
teacher_id
=
this
.
id
;
}
}
getyunjiApi
(
json
).
then
(
res
=>
{
getyunjiApi
(
json
).
then
(
res
=>
{
this
.
yunjiListObj
.
total
=
res
.
total
;
this
.
yunjiListObj
.
total
=
res
.
total
;
...
@@ -1069,35 +1052,35 @@
...
@@ -1069,35 +1052,35 @@
});
});
}
}
},
},
filters
:{
filters
:
{
teacherType
(
value
){
teacherType
(
value
)
{
return
TEACHERTYPE
[
value
]
return
TEACHERTYPE
[
value
]
},
},
percent
(
val
){
percent
(
val
)
{
return
(
val
*
100
).
toFixed
(
2
)
+
'%'
return
(
val
*
100
).
toFixed
(
2
)
+
'%'
},
},
status
(
value
){
status
(
value
)
{
return
ORDERSTATUS
[
value
]
return
ORDERSTATUS
[
value
]
},
},
moneytFilter
(
val
){
moneytFilter
(
val
)
{
return
val
=
val
/
100
+
'元'
return
val
=
val
/
100
+
'元'
},
},
filterGoods
(
val
){
filterGoods
(
val
)
{
return
'['
+
val
.
id
+
']'
+
'['
+
GOODSTYPE
[
val
.
goods_type
]
+
']'
+
'['
+
val
.
current_price
/
100
+
'元]'
+
val
.
name
return
'['
+
val
.
id
+
']'
+
'['
+
GOODSTYPE
[
val
.
goods_type
]
+
']'
+
'['
+
val
.
current_price
/
100
+
'元]'
+
val
.
name
},
},
classSource
(
val
){
classSource
(
val
)
{
// return CLASSSOURCE[val]
// return CLASSSOURCE[val]
return
studentSource
[
val
]
return
studentSource
[
val
]
}
}
},
},
mounted
(){
mounted
()
{
this
.
id
=
this
.
parentDetail
?
this
.
parentDetail
.
id
:
this
.
$route
.
params
.
id
;
this
.
id
=
this
.
parentDetail
?
this
.
parentDetail
.
id
:
this
.
$route
.
params
.
id
;
this
.
getTask4
();
this
.
getTask4
();
getSourceStudentApi
().
then
(
res
=>
{
getSourceStudentApi
().
then
(
res
=>
{
let
obj
=
{}
let
obj
=
{}
res
.
forEach
((
item
,
index
)
=>
{
res
.
forEach
((
item
,
index
)
=>
{
obj
[
item
.
type
]
=
item
.
name
obj
[
item
.
type
]
=
item
.
name
})
})
studentSource
=
obj
studentSource
=
obj
// console.log(obj)
// console.log(obj)
...
@@ -1105,15 +1088,15 @@
...
@@ -1105,15 +1088,15 @@
this
.
getTeacherDetail
();
this
.
getTeacherDetail
();
this
.
getGoodsOption
();
this
.
getGoodsOption
();
},
},
watch
:{
watch
:
{
'tabs'
(
value
){
'tabs'
(
value
)
{
if
(
value
===
'order'
)
{
if
(
value
===
'order'
)
{
this
.
getOrderList
();
this
.
getOrderList
();
}
}
if
(
value
===
'yunji'
)
{
if
(
value
===
'yunji'
)
{
this
.
getyunjiList
();
this
.
getyunjiList
();
}
}
if
(
value
===
'huashu'
)
{
if
(
value
===
'huashu'
)
{
this
.
getList
();
this
.
getList
();
}
}
}
}
...
@@ -1126,13 +1109,16 @@
...
@@ -1126,13 +1109,16 @@
padding: 20px;
padding: 20px;
color: #666;
color: #666;
}
}
.teacher {
.teacher {
padding: 20px 0;
padding: 20px 0;
}
}
.header {
.header {
padding: 0 20px;
padding: 0 20px;
margin-bottom: 20px;
margin-bottom: 20px;
}
}
.el-row {
.el-row {
display: flex;
display: flex;
justify-content: flex-start;
justify-content: flex-start;
...
@@ -1140,49 +1126,59 @@
...
@@ -1140,49 +1126,59 @@
color: #666;
color: #666;
font-size: 16px;
font-size: 16px;
}
}
.text.item{
.text.item {
line-height: 40px;
line-height: 40px;
label{
label {
width: 120px;
width: 120px;
}
}
&.style-fix {
&.style-fix {
/*display: flex;
/*display: flex;
flex-direction: column;
flex-direction: column;
justify-content: space-between;*/
justify-content: space-between;*/
line-height: 25px;
line-height: 25px;
span {
span {
display: block;
display: block;
}
}
}
}
}
}
.el-card{
.el-card {
/*height: 50px;*/
/*height: 50px;*/
display: flex;
display: flex;
justify-content: flex-start;
justify-content: flex-start;
align-items: center;
align-items: center;
.avatar {
.avatar {
width: 120px;
width: 120px;
margin-right: 10px;
margin-right: 10px;
height: 120px;
height: 120px;
border-radius: 1000px;
border-radius: 1000px;
}
}
img{
img {
width: 120px;
width: 120px;
float: left;
float: left;
margin-right: 10px;
margin-right: 10px;
}
}
label{
label {
color: #5982e6;
color: #5982e6;
width: 120px;
width: 120px;
}
}
}
}
.card-content:after{
.card-content:after {
content: '';
content: '';
display: block;
display: block;
clear: both;
clear: both;
}
}
.order_list{
.avatar{
.order_list {
.avatar {
width: 50px;
width: 50px;
min-width: 50px;
min-width: 50px;
height: 50px;
height: 50px;
...
@@ -1190,24 +1186,32 @@
...
@@ -1190,24 +1186,32 @@
border-radius: 50%;
border-radius: 50%;
}
}
}
}
.search{
.search {
padding: 10px 30px;
padding: 10px 30px;
.el-input{display: inline-block;width: 300px;}
.el-input {
display: inline-block;
width: 300px;
}
}
}
</
style
>
</
style
>
<
style
>
<
style
>
.demo-table-expand
{
.demo-table-expand
{
font-size
:
0
;
font-size
:
0
;
}
}
.demo-table-expand
label
{
.demo-table-expand
label
{
width
:
90px
;
width
:
90px
;
color
:
#99a9bf
;
color
:
#99a9bf
;
}
}
.demo-table-expand
.el-form-item
{
.demo-table-expand
.el-form-item
{
margin-right
:
0
;
margin-right
:
0
;
margin-bottom
:
0
;
margin-bottom
:
0
;
width
:
50%
;
width
:
50%
;
}
}
.f-c
>
.cell
{
.f-c
>
.cell
{
display
:
flex
!important
;
display
:
flex
!important
;
flex-flow
:
row
;
flex-flow
:
row
;
...
...
src/components/teacherDetail/task.vue
View file @
5bb62fd3
...
@@ -25,7 +25,8 @@
...
@@ -25,7 +25,8 @@
<div
class=
"title"
style=
"width:8%"
>
<div
class=
"title"
style=
"width:8%"
>
<div
class=
"header bg-h"
>
期数
</div>
<div
class=
"header bg-h"
>
期数
</div>
<div>
<div>
{{
data
.
title
}}
<!--
{{
data
.
title
}}
-->
<div
v-html=
"periodName(data)"
></div>
</div>
</div>
</div>
</div>
<div
class=
"over_work"
style=
"background-color: #fffbe4"
>
<div
class=
"over_work"
style=
"background-color: #fffbe4"
>
...
@@ -563,6 +564,29 @@
...
@@ -563,6 +564,29 @@
}
}
}
,
}
,
methods
:{
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
){
formatTime
(
date
){
let
year
=
date
.
getFullYear
();
let
year
=
date
.
getFullYear
();
let
Month
=
date
.
getMonth
()
+
1
;
let
Month
=
date
.
getMonth
()
+
1
;
...
...
src/components/userDetail/index.vue
View file @
5bb62fd3
...
@@ -49,15 +49,10 @@
...
@@ -49,15 +49,10 @@
</div>
</div>
<el-tabs
type=
"border-card"
v-model=
"tabs"
>
<el-tabs
type=
"border-card"
v-model=
"tabs"
>
<el-tab-pane
label=
"期数列表"
name=
"periods"
>
<el-tab-pane
label=
"期数列表"
name=
"periods"
>
<el-table
<el-table
@
expand-change=
"changeRow"
:data=
"periodList"
>
@
expand-change=
"changeRow"
:data=
"periodList"
style=
"width: 100%"
>
<el-table-column
type=
"expand"
>
<el-table-column
type=
"expand"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
<el-table
<el-table
:data=
"list"
>
:data=
"list"
style=
"width: 100%"
>
<el-table-column
<el-table-column
label=
"到课率"
>
label=
"到课率"
>
<template
slot-scope=
"scope2"
>
<template
slot-scope=
"scope2"
>
...
@@ -97,10 +92,11 @@
...
@@ -97,10 +92,11 @@
</el-table>
</el-table>
</template>
</template>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"periods_title"
label=
"期数名称"
>
<el-table-column
prop=
"periods_title"
label=
"期数名称"
width=
"170px"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<router-link
:to=
"
{name:'class', query: { goods_id: scope.row.goods_id, periods_id: scope.row.periods_id}}" >
<router-link
:to=
"
{name:'class', query: { goods_id: scope.row.goods_id, periods_id: scope.row.periods_id}}">
{{
scope
.
row
.
periods_title
}}
<div
v-html=
"periodName(scope.row)"
></div>
<!--
{{
periodName
(
scope
.
row
)
}}
-->
</router-link>
</router-link>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
...
@@ -111,7 +107,7 @@
...
@@ -111,7 +107,7 @@
</el-table-column>
</el-table-column>
<el-table-column
className=
"f-c"
label=
"老师"
>
<el-table-column
className=
"f-c"
label=
"老师"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<router-link
:to=
"`/teacher/$
{scope.row.teacher_id}`"
>
<router-link
:to=
"`/teacher/$
{scope.row.teacher_id}`">
<div
class=
"f-c"
>
<div
class=
"f-c"
>
<div>
<div>
<img
class=
"avatar"
:src=
"scope.row.teacher_qr"
>
{{
scope
.
row
.
teacher_name
}}
<img
class=
"avatar"
:src=
"scope.row.teacher_qr"
>
{{
scope
.
row
.
teacher_name
}}
...
@@ -127,43 +123,29 @@
...
@@ -127,43 +123,29 @@
<el-table-column
label=
"操作"
width=
"340px"
>
<el-table-column
label=
"操作"
width=
"340px"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-button
@
click=
"showUser(scope.row)"
size=
"mini"
type=
"primary"
>
班级成员
</el-button>
<el-button
@
click=
"showUser(scope.row)"
size=
"mini"
type=
"primary"
>
班级成员
</el-button>
<el-button
size=
"mini"
type=
"warning"
v-if=
"!$store.state.readonly"
@
click=
"editPrivilege(scope.row)"
>
编辑
</el-button>
<el-button
size=
"mini"
type=
"warning"
v-if=
"!$store.state.readonly"
@
click=
"editPrivilege(scope.row)"
>
编辑
</el-button>
<el-button
size=
"mini"
type=
"primary"
@
click=
"onGetUserDescList(scope.row)"
>
备注
</el-button>
<el-button
size=
"mini"
type=
"primary"
@
click=
"onGetUserDescList(scope.row)"
>
备注
</el-button>
<el-button
size=
"mini"
type=
"primary"
@
click=
"showSourceByDate(scope.row)"
>
看课情况
</el-button>
<el-button
size=
"mini"
type=
"primary"
@
click=
"showSourceByDate(scope.row)"
>
看课情况
</el-button>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"系统订单列表"
name=
"order"
>
<el-tab-pane
label=
"系统订单列表"
name=
"order"
>
<el-table
<el-table
:data=
"userList"
>
:data=
"userList"
<el-table-column
prop=
"out_trade_no"
label=
"订单号"
></el-table-column>
style=
"width: 100%"
>
<el-table-column
label=
"购买人"
className=
"f-c"
width=
"150"
>
<el-table-column
prop=
"out_trade_no"
label=
"订单号"
>
</el-table-column>
<el-table-column
label=
"购买人"
className=
"f-c"
width=
"150"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<img
class=
"avatar"
:src=
"scope.row.user_avatar"
/>
{{
scope
.
row
.
user_nickname
}}
<br>
(ID:
{{
scope
.
row
.
user_id
}}
)
<img
class=
"avatar"
:src=
"scope.row.user_avatar"
/>
{{
scope
.
row
.
user_nickname
}}
<br>
(ID:
{{
scope
.
row
.
user_id
}}
)
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
prop=
"periods_title"
label=
"期数名称"
width=
"170px"
>
prop=
"periods_title"
<
template
slot-scope=
"scope"
>
label=
"期数标题"
>
<div
v-html=
"periodName(scope.row)"
></div>
</el-table-column>
<!--
{{
periodName
(
scope
.
row
)
}}
-->
<el-table-column
</
template
>
prop=
"goods_name"
label=
"商品名称"
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
prop=
"goods_name"
label=
"商品名称"
></el-table-column>
width=
"250"
<el-table-column
width=
"250"
prop=
"invite_id"
className=
"f-c"
label=
"推广人属性"
>
prop=
"invite_id"
className=
"f-c"
label=
"推广人属性"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<div
@
click=
"showSource(scope.row)"
v-if=
"scope.row.invite_earnings > 0 && scope.row.invite_id !== 0"
style=
"display: flex;color: #409eff;cursor: pointer"
>
<div
@
click=
"showSource(scope.row)"
v-if=
"scope.row.invite_earnings > 0 && scope.row.invite_id !== 0"
style=
"display: flex;color: #409eff;cursor: pointer"
>
<img
:src=
"scope.row.invite_avatar"
class=
"avatar"
/>
<img
:src=
"scope.row.invite_avatar"
class=
"avatar"
/>
...
@@ -242,33 +224,31 @@
...
@@ -242,33 +224,31 @@
<page
:total=
"total"
:limit=
"limit"
@
pageChange=
"onPageChange"
@
sizeChange=
"onSizeChange"
/>
<page
:total=
"total"
:limit=
"limit"
@
pageChange=
"onPageChange"
@
sizeChange=
"onSizeChange"
/>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"外部订单列表"
name=
"yunji"
>
<el-tab-pane
label=
"外部订单列表"
name=
"yunji"
>
<el-table
<el-table
:data=
"yunjiList"
>
:data=
"yunjiList"
style=
"width: 100%"
>
<el-table-column
prop=
"order_id"
width=
"80"
label=
"订单号"
>
<el-table-column
prop=
"order_id"
width=
"80"
label=
"订单号"
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"nickname"
label=
"购买人"
>
<el-table-column
prop=
"nickname"
label=
"购买人"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
'scope.row.user_id !== 0'
>
<div
v-if=
'scope.row.user_id !== 0'
>
<img
class=
"avatar"
:src=
"scope.row.avatar"
/>
<img
class=
"avatar"
:src=
"scope.row.avatar"
/>
<div>
{{
scope
.
row
.
nickname
}}
<br>
(ID:
{{
scope
.
row
.
user_id
}}
)
</div>
<div>
{{
scope
.
row
.
nickname
}}
<br>
(ID:
{{
scope
.
row
.
user_id
}}
)
</div>
</div>
</div>
<div
v-if=
'scope.row.user_id === 0'
>
<div
v-if=
'scope.row.user_id === 0'
>
暂未绑定用户
</div>
暂未绑定用户
</div>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"periods_title"
label=
"期数"
>
<el-table-column
prop=
"periods_title"
label=
"期数名称"
width=
"170px"
>
</el-table-column>
<
template
slot-scope=
"scope"
>
<el-table-column
prop=
"goods_name"
label=
"商品名称"
>
<div
v-html=
"periodName(scope.row)"
></div>
<!--
{{
periodName
(
scope
.
row
)
}}
-->
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"goods_name"
label=
"商品名称"
></el-table-column>
<el-table-column
prop=
"invite_type"
label=
"来源"
>
<el-table-column
prop=
"invite_type"
label=
"来源"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
invite_type
}}
(
{{
scope
.
row
.
invite_name
}}
)
{{
scope
.
row
.
invite_type
}}
(
{{
scope
.
row
.
invite_name
}}
)
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"teacher_name"
label=
"班级老师"
>
<el-table-column
prop=
"teacher_name"
label=
"班级老师"
></el-table-column>
</el-table-column>
<el-table-column
label=
"付款状态"
width=
"80"
>
<el-table-column
label=
"付款状态"
width=
"80"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"text"
v-if=
"scope.row.status === 5 || scope.row.status === 3"
@
click=
"showRef(scope.row)"
>
{{
scope
.
row
.
status
|
status
}}
</el-button>
<el-button
type=
"text"
v-if=
"scope.row.status === 5 || scope.row.status === 3"
@
click=
"showRef(scope.row)"
>
{{
scope
.
row
.
status
|
status
}}
</el-button>
...
@@ -294,45 +274,21 @@
...
@@ -294,45 +274,21 @@
{{
scope
.
row
.
active_at
===
'0000-00-00 00:00:00'
?
'未激活'
:
scope
.
row
.
active_at
}}
{{
scope
.
row
.
active_at
===
'0000-00-00 00:00:00'
?
'未激活'
:
scope
.
row
.
active_at
}}
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"create_time"
label=
"下单时间"
width=
"90"
>
<el-table-column
prop=
"create_time"
label=
"下单时间"
width=
"90"
></el-table-column>
</el-table-column>
<el-table-column
prop=
"pay_time"
label=
"付款时间"
width=
"90"
></el-table-column>
<el-table-column
prop=
"pay_time"
label=
"付款时间"
width=
"90"
>
<el-table-column
prop=
"user_status"
:formatter=
"userStatusFormatter"
label=
"沟通状态"
width=
"90"
></el-table-column>
</el-table-column>
<el-table-column
prop=
"desc"
label=
"备注"
></el-table-column>
<el-table-column
prop=
"user_status"
:formatter=
"userStatusFormatter"
label=
"沟通状态"
width=
"90"
>
</el-table-column>
<el-table-column
prop=
"desc"
label=
"备注"
>
</el-table-column>
</el-table>
</el-table>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"地址列表"
name=
"address"
>
<el-tab-pane
label=
"地址列表"
name=
"address"
>
<el-button
size=
"mini"
type=
""
v-if=
"!addressList.length"
@
click=
"addAddress()"
>
新增
</el-button>
<el-button
size=
"mini"
type=
""
v-if=
"!addressList.length"
@
click=
"addAddress()"
>
新增
</el-button>
<el-table
<el-table
:data=
"addressList"
>
:data=
"addressList"
<el-table-column
prop=
"receive_name"
label=
"收件人名称"
></el-table-column>
style=
"width: 100%"
>
<el-table-column
prop=
"receive_mobile"
label=
"收件人手机号"
></el-table-column>
<el-table-column
<el-table-column
prop=
"province_name"
label=
"省"
></el-table-column>
prop=
"receive_name"
<el-table-column
prop=
"city"
label=
"市"
></el-table-column>
label=
"收件人名称"
>
<el-table-column
prop=
"area"
label=
"地区名称"
></el-table-column>
</el-table-column>
<el-table-column
prop=
"address"
label=
"详细地址"
></el-table-column>
<el-table-column
prop=
"receive_mobile"
label=
"收件人手机号"
>
</el-table-column>
<el-table-column
prop=
"province_name"
label=
"省"
>
</el-table-column>
<el-table-column
prop=
"city"
label=
"市"
>
</el-table-column>
<el-table-column
prop=
"area"
label=
"地区名称"
>
</el-table-column>
<el-table-column
prop=
"address"
label=
"详细地址"
>
</el-table-column>
<!-- <el-table-column
<!-- <el-table-column
prop="is_del"
prop="is_del"
label="是否删除">
label="是否删除">
...
@@ -340,52 +296,26 @@
...
@@ -340,52 +296,26 @@
{{scope.row.is_del == 0?'否':'是'}}
{{scope.row.is_del == 0?'否':'是'}}
</template>
</template>
</el-table-column> -->
</el-table-column> -->
<el-table-column
<el-table-column
prop=
"created_at"
label=
"创建时间"
></el-table-column>
prop=
"created_at"
<el-table-column
prop=
"updated_at"
label=
"更新时间"
></el-table-column>
label=
"创建时间"
>
<el-table-column
label=
"操作"
width=
"100px"
>
</el-table-column>
<el-table-column
prop=
"updated_at"
label=
"更新时间"
>
</el-table-column>
<el-table-column
label=
"操作"
width=
"100px"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"warning"
v-if=
"!$store.state.readonly&&scope.row.is_del == 0"
@
click=
"editAddress(scope.row)"
>
编辑
</el-button>
<el-button
size=
"mini"
type=
"warning"
v-if=
"!$store.state.readonly&&scope.row.is_del == 0"
@
click=
"editAddress(scope.row)"
>
编辑
</el-button>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"绑定记录"
name=
"subList"
>
<el-tab-pane
label=
"绑定记录"
name=
"subList"
>
<el-table
<el-table
:data=
"subListData"
>
:data=
"subListData"
<el-table-column
prop=
"cur_date"
label=
"绑定时间"
></el-table-column>
style=
"width: 100%"
>
<el-table-column
prop=
"unbind_at"
label=
"解绑时间"
></el-table-column>
<el-table-column
<el-table-column
prop=
"user_nickname"
label=
"主账号"
></el-table-column>
prop=
"cur_date"
<el-table-column
prop=
"sub_user_nickname"
label=
"子账号"
></el-table-column>
label=
"绑定时间"
>
</el-table-column>
<el-table-column
prop=
"unbind_at"
label=
"解绑时间"
>
</el-table-column>
<el-table-column
prop=
"user_nickname"
label=
"主账号"
>
</el-table-column>
<el-table-column
prop=
"sub_user_nickname"
label=
"子账号"
>
</el-table-column>
</el-table>
</el-table>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"发货记录"
name=
"deliverRecord"
>
<el-tab-pane
label=
"发货记录"
name=
"deliverRecord"
>
<el-table
<el-table
:data=
"deliverRecordList"
>
:data=
"deliverRecordList"
<el-table-column
width=
"220"
className=
"f-c"
label=
"用户"
>
style=
"width: 100%"
>
<el-table-column
width=
"220"
className=
"f-c"
label=
"用户"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<img
class=
"avatar"
:src=
"scope.row.user_avatar"
/>
{{
scope
.
row
.
user_nickname
}}
<br>
(ID:
{{
scope
.
row
.
user_id
}}
)
<br>
手机:
{{
scope
.
row
.
user_mobile
}}
<img
class=
"avatar"
:src=
"scope.row.user_avatar"
/>
{{
scope
.
row
.
user_nickname
}}
<br>
(ID:
{{
scope
.
row
.
user_id
}}
)
<br>
手机:
{{
scope
.
row
.
user_mobile
}}
</
template
>
</
template
>
...
@@ -397,20 +327,15 @@
...
@@ -397,20 +327,15 @@
{{
scope
.
row
.
province_name
}}{{
scope
.
row
.
city_name
}}{{
scope
.
row
.
area_name
}}{{
scope
.
row
.
address
}}
{{
scope
.
row
.
province_name
}}{{
scope
.
row
.
city_name
}}{{
scope
.
row
.
area_name
}}{{
scope
.
row
.
address
}}
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"periods_title"
label=
"期数名称"
>
<el-table-column
prop=
"periods_title"
label=
"期数名称"
></el-table-column>
</el-table-column>
<el-table-column
prop=
"theme_name"
label=
"主题"
></el-table-column>
<el-table-column
prop=
"theme_name"
label=
"主题"
>
<el-table-column
prop=
"deliver_start_at"
label=
"预计发货开始时间"
></el-table-column>
</el-table-column>
<el-table-column
prop=
"deliver_end_at"
label=
"预计发货结束时间"
></el-table-column>
<el-table-column
prop=
"deliver_start_at"
label=
"预计发货开始时间"
>
<el-table-column
prop=
"deliver_at"
label=
"发货时间"
></el-table-column>
</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=
"status"
label=
"物流状态"
>
<el-table-column
prop=
"status"
label=
"物流状态"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<!--
{{
scope
.
row
.
status
|
LogisticsStatusFil
}}
<br>
-->
<!--
{{
scope
.
row
.
status
|
LogisticsStatusFil
}}
<br>
-->
<span
>
名称:
{{
scope
.
row
.
express_name
}}
<br>
单号:
{{
scope
.
row
.
express_no
}}
</span>
<span
>
名称:
{{
scope
.
row
.
express_name
}}
<br>
单号:
{{
scope
.
row
.
express_no
}}
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<!-- <el-table-column width="150" label="操作" v-if="!$store.state.readonly" fixed="right">
<!-- <el-table-column width="150" label="操作" v-if="!$store.state.readonly" fixed="right">
...
@@ -561,68 +486,79 @@
...
@@ -561,68 +486,79 @@
<
/el-table
>
<
/el-table
>
<
page
:
nowPage
=
"lookDetail.nowPage"
:
total
=
"lookDetail.total"
:
limit
=
"lookDetail.limit"
@
pageChange
=
"onLookDetailPageChange"
@
sizeChange
=
"onLookDetailSizeChange"
/>
<
page
:
nowPage
=
"lookDetail.nowPage"
:
total
=
"lookDetail.total"
:
limit
=
"lookDetail.limit"
@
pageChange
=
"onLookDetailPageChange"
@
sizeChange
=
"onLookDetailSizeChange"
/>
<
/el-dialog
>
<
/el-dialog
>
<
sourceByDateDialog
:
dialogObj
=
sourceByDateDialogJson
ref
=
"sourceByDateDialogDom"
><
/sourceByDateDialog
>
<
sourceByDateDialog
:
dialogObj
=
sourceByDateDialogJson
ref
=
"sourceByDateDialogDom"
><
/sourceByDateDialog
>
<
/div
>
<
/div
>
<
/template
>
<
/template
>
<
script
>
<
script
>
import
{
getOrderListApi
,
getUserDetailApi
,
getPeriodsStatisticsApi
,
userLookApi
,
getUserDescListApi
,
addPeriodsClassUserDescApi
,
getDeliverRecordApi
,
import
{
updateUserPrivilegeApi
,
getyunjiApi
,
fetchAddressListApi
,
getSubAccountInfoApi
,
getUserSubAccountListApi
}
from
"../../service/api"
;
getOrderListApi
,
getUserDetailApi
,
getPeriodsStatisticsApi
,
userLookApi
,
getUserDescListApi
,
addPeriodsClassUserDescApi
,
getDeliverRecordApi
,
updateUserPrivilegeApi
,
getyunjiApi
,
fetchAddressListApi
,
getSubAccountInfoApi
,
getUserSubAccountListApi
}
from
"../../service/api"
;
import
page
from
'../framework/page'
import
page
from
'../framework/page'
import
sourceDialog
from
'../order/sourceDialog'
import
sourceDialog
from
'../order/sourceDialog'
import
refundDetail
from
'../order/refundDetail'
import
refundDetail
from
'../order/refundDetail'
import
couponDialog
from
'../order/couponDialog'
import
couponDialog
from
'../order/couponDialog'
import
addressDialogC
from
"./addressdialog"
;
import
addressDialogC
from
"./addressdialog"
;
import
{
INVITETYPE
,
ORDERSTATUS
,
BUYTYPE
,
USERSTATUSFORMATER
}
from
"../../util/wordbook"
;
import
{
INVITETYPE
,
ORDERSTATUS
,
BUYTYPE
,
USERSTATUSFORMATER
}
from
"../../util/wordbook"
;
import
teacherDialog
from
'./dialog'
import
teacherDialog
from
'./dialog'
import
UserList
from
'../class/userList'
import
UserList
from
'../class/userList'
import
sourceByDateDialog
from
'../teacherDetail/sourceByDateDialog'
import
sourceByDateDialog
from
'../teacherDetail/sourceByDateDialog'
import
AddressArray
from
"../framework/address-picker/addr"
;
import
AddressArray
from
"../framework/address-picker/addr"
;
export
default
{
export
default
{
name
:
"index"
,
name
:
"index"
,
data
(){
data
()
{
return
{
return
{
userList
:[],
userList
:
[],
yunjiList
:[],
yunjiList
:
[],
addressList
:[],
addressList
:
[],
total
:
0
,
total
:
0
,
addressDialog
:{
addressDialog
:
{
show
:
false
show
:
false
}
,
addressParams
:{
}
,
}
,
sourceDialog
:{
addressParams
:
{
}
,
show
:
false
,
sourceDialog
:
{
out_trade_no
:
''
show
:
false
,
out_trade_no
:
''
}
,
}
,
tabs
:
'periods'
,
tabs
:
'periods'
,
couponDetail
:{
couponDetail
:
{
show
:
false
,
show
:
false
,
order_coupon_id
:
''
order_coupon_id
:
''
}
,
}
,
refundDetail
:{
refundDetail
:
{
show
:
false
,
show
:
false
,
out_trade_no
:
''
out_trade_no
:
''
}
,
}
,
nowPage
:
1
,
nowPage
:
1
,
limit
:
5
,
limit
:
5
,
id
:
''
,
id
:
''
,
detail
:
{
}
,
detail
:
{
}
,
subDetail
:{
}
,
subDetail
:
{
}
,
subListData
:[],
subListData
:
[],
periodList
:
[],
periodList
:
[],
dialogObj
:{
dialogObj
:
{
show
:
false
,
show
:
false
,
title
:
'绑定老师'
,
title
:
'绑定老师'
,
id
:
0
,
id
:
0
,
teacher_id
:
0
teacher_id
:
0
}
,
}
,
list
:
[],
list
:
[],
userObj
:{
userObj
:
{
classId
:
''
,
classId
:
''
,
title
:
''
,
title
:
''
,
show
:
false
,
show
:
false
,
}
,
}
,
privilegeDialog
:
{
privilegeDialog
:
{
show
:
false
,
show
:
false
,
...
@@ -636,16 +572,16 @@
...
@@ -636,16 +572,16 @@
descList
:
[],
descList
:
[],
nowPage
:
1
,
nowPage
:
1
,
limit
:
10
,
limit
:
10
,
total
:
0
,
total
:
0
,
userInfo
:
null
userInfo
:
null
}
,
}
,
lookDetail
:{
lookDetail
:
{
show
:
false
,
show
:
false
,
loading
:
false
,
loading
:
false
,
list
:[],
list
:
[],
nowPage
:
1
,
nowPage
:
1
,
limit
:
10
,
limit
:
10
,
total
:
0
total
:
0
}
,
}
,
isAddTeacherList
:
[
isAddTeacherList
:
[
{
{
...
@@ -673,11 +609,11 @@
...
@@ -673,11 +609,11 @@
value
:
5
value
:
5
}
}
],
],
sourceByDateDialogJson
:{
}
,
sourceByDateDialogJson
:
{
}
,
deliverRecordList
:[]
deliverRecordList
:
[]
}
}
}
,
}
,
components
:{
components
:
{
page
,
page
,
teacherDialog
,
teacherDialog
,
UserList
,
UserList
,
...
@@ -687,41 +623,64 @@
...
@@ -687,41 +623,64 @@
sourceByDateDialog
,
sourceByDateDialog
,
addressDialogC
addressDialogC
}
,
}
,
props
:[
props
:
[
'parentDetail'
'parentDetail'
],
],
mounted
(){
mounted
()
{
this
.
id
=
this
.
parentDetail
?
this
.
parentDetail
.
id
:
this
.
$route
.
params
.
id
;
this
.
id
=
this
.
parentDetail
?
this
.
parentDetail
.
id
:
this
.
$route
.
params
.
id
;
this
.
getDetail
();
this
.
getDetail
();
}
,
}
,
watch
:{
watch
:
{
'tabs'
(
value
){
'tabs'
(
value
)
{
if
(
value
===
'order'
)
{
if
(
value
===
'order'
)
{
this
.
getUser
()
this
.
getUser
()
}
}
if
(
value
===
'yunji'
)
{
if
(
value
===
'yunji'
)
{
this
.
getyunjiOrder
()
this
.
getyunjiOrder
()
}
}
if
(
value
===
'address'
)
{
if
(
value
===
'address'
)
{
this
.
getAddressList
()
this
.
getAddressList
()
}
}
if
(
value
===
'subList'
)
{
if
(
value
===
'subList'
)
{
this
.
getUserSubAccountList
()
this
.
getUserSubAccountList
()
}
}
if
(
value
===
'deliverRecord'
)
{
if
(
value
===
'deliverRecord'
)
{
this
.
getDeliverRecordList
()
this
.
getDeliverRecordList
()
}
}
}
}
}
,
}
,
methods
:{
methods
:
{
// editAddress(row)
{
// editAddress(row)
{
// this.addressParams = row
// this.addressParams = row
// this.addressParams.show=true
// this.addressParams.show=true
// console.log(row)
// console.log(row)
//
}
,
//
}
,
getDeliverRecordList
(){
periodName
(
val
)
{
getDeliverRecordApi
({
user_id
:
this
.
id
,
page
:
1
,
limit
:
20
}
).
then
(
res
=>
{
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
}
,
getDeliverRecordList
()
{
getDeliverRecordApi
({
user_id
:
this
.
id
,
page
:
1
,
limit
:
20
}
).
then
(
res
=>
{
this
.
deliverRecordList
=
res
.
list
this
.
deliverRecordList
=
res
.
list
console
.
log
(
this
.
deliverRecordList
)
console
.
log
(
this
.
deliverRecordList
)
}
)
}
)
...
@@ -730,7 +689,7 @@
...
@@ -730,7 +689,7 @@
this
.
dialogObj
.
show
=
false
;
this
.
dialogObj
.
show
=
false
;
this
.
getAddressList
();
this
.
getAddressList
();
}
,
}
,
addAddress
(
row
)
{
addAddress
(
row
)
{
this
.
addressDialog
.
userid
=
this
.
id
;
this
.
addressDialog
.
userid
=
this
.
id
;
this
.
addressDialog
.
show
=
true
;
this
.
addressDialog
.
show
=
true
;
}
,
}
,
...
@@ -794,28 +753,28 @@
...
@@ -794,28 +753,28 @@
console
.
log
(
this
.
addressDialog
)
console
.
log
(
this
.
addressDialog
)
// debugger
// debugger
}
,
}
,
getAddressList
(){
getAddressList
()
{
fetchAddressListApi
(
this
.
id
).
then
(
res
=>
{
fetchAddressListApi
(
this
.
id
).
then
(
res
=>
{
this
.
addressList
=
res
this
.
addressList
=
res
// console.log(this.addressList)
// console.log(this.addressList)
}
)
}
)
}
,
}
,
userStatusFormatter
(
val
){
userStatusFormatter
(
val
)
{
return
(
USERSTATUSFORMATER
[
val
.
user_status
])
return
(
USERSTATUSFORMATER
[
val
.
user_status
])
}
,
}
,
showSourceByDate
(
row
){
showSourceByDate
(
row
)
{
this
.
sourceByDateDialogJson
=
{
this
.
sourceByDateDialogJson
=
{
"periods_id"
:
row
.
periods_id
,
"periods_id"
:
row
.
periods_id
,
"user_id"
:
row
.
user_id
,
"user_id"
:
row
.
user_id
,
json
:{
json
:
{
limit
:
10
,
limit
:
10
,
page
:
0
page
:
0
}
}
}
}
this
.
$refs
.
sourceByDateDialogDom
.
dialogShow
=
true
this
.
$refs
.
sourceByDateDialogDom
.
dialogShow
=
true
}
,
}
,
getUserLook
(){
getUserLook
()
{
if
(
!
this
.
lookDetail
.
data
)
return
;
if
(
!
this
.
lookDetail
.
data
)
return
;
this
.
lookDetail
.
show
=
true
;
this
.
lookDetail
.
show
=
true
;
this
.
lookDetail
.
loading
=
true
;
this
.
lookDetail
.
loading
=
true
;
let
json
=
{
let
json
=
{
...
@@ -823,46 +782,46 @@
...
@@ -823,46 +782,46 @@
page
:
this
.
lookDetail
.
nowPage
page
:
this
.
lookDetail
.
nowPage
}
}
let
data
=
this
.
lookDetail
.
data
;
let
data
=
this
.
lookDetail
.
data
;
userLookApi
(
data
.
periods_id
,
data
.
user_id
,
json
).
then
(
res
=>
{
userLookApi
(
data
.
periods_id
,
data
.
user_id
,
json
).
then
(
res
=>
{
this
.
lookDetail
.
list
=
res
.
list
;
this
.
lookDetail
.
list
=
res
.
list
;
this
.
lookDetail
.
loading
=
false
;
this
.
lookDetail
.
loading
=
false
;
this
.
lookDetail
.
total
=
res
.
total
;
this
.
lookDetail
.
total
=
res
.
total
;
}
)
}
)
}
,
}
,
onLookDetailPageChange
(
val
){
onLookDetailPageChange
(
val
)
{
this
.
lookDetail
.
nowPage
=
val
this
.
lookDetail
.
nowPage
=
val
this
.
getUserLook
();
this
.
getUserLook
();
}
,
}
,
onLookDetailSizeChange
(
val
){
onLookDetailSizeChange
(
val
)
{
this
.
lookDetail
.
limit
=
val
this
.
lookDetail
.
limit
=
val
this
.
lookDetail
.
nowPage
=
1
;
this
.
lookDetail
.
nowPage
=
1
;
this
.
getUserLook
();
this
.
getUserLook
();
}
,
}
,
onDescDialogPageChange
(
val
){
onDescDialogPageChange
(
val
)
{
this
.
descDialog
.
nowPage
=
val
this
.
descDialog
.
nowPage
=
val
this
.
getUserDescList
()
this
.
getUserDescList
()
}
,
}
,
onDescDialogSizeChange
(
val
){
onDescDialogSizeChange
(
val
)
{
this
.
descDialog
.
limit
=
val
this
.
descDialog
.
limit
=
val
this
.
descDialog
.
nowPage
=
1
;
this
.
descDialog
.
nowPage
=
1
;
this
.
getUserDescList
()
this
.
getUserDescList
()
}
,
}
,
showRef
(
data
){
showRef
(
data
)
{
this
.
refundDetail
.
show
=
true
;
this
.
refundDetail
.
show
=
true
;
this
.
refundDetail
.
out_trade_no
=
data
.
out_trade_no
;
this
.
refundDetail
.
out_trade_no
=
data
.
out_trade_no
;
}
,
}
,
showCoupon
(
data
){
showCoupon
(
data
)
{
this
.
couponDetail
.
show
=
true
;
this
.
couponDetail
.
show
=
true
;
this
.
couponDetail
.
order_coupon_id
=
data
.
order_coupon_id
;
this
.
couponDetail
.
order_coupon_id
=
data
.
order_coupon_id
;
}
,
}
,
showSource
(
data
){
showSource
(
data
)
{
this
.
sourceDialog
.
show
=
true
;
this
.
sourceDialog
.
show
=
true
;
this
.
sourceDialog
.
out_trade_no
=
data
.
out_trade_no
;
this
.
sourceDialog
.
out_trade_no
=
data
.
out_trade_no
;
}
,
}
,
changeRow
(
data
,
b
)
{
changeRow
(
data
,
b
)
{
this
.
list
=
[];
this
.
list
=
[];
if
(
b
.
indexOf
(
data
)
>-
1
)
{
if
(
b
.
indexOf
(
data
)
>
-
1
)
{
getPeriodsStatisticsApi
(
data
.
periods_id
).
then
(
res
=>
{
getPeriodsStatisticsApi
(
data
.
periods_id
).
then
(
res
=>
{
data
.
arrive_course_rate
=
res
.
arrive_course_rate
;
data
.
arrive_course_rate
=
res
.
arrive_course_rate
;
data
.
watch_course_rate
=
res
.
watch_course_rate
;
data
.
watch_course_rate
=
res
.
watch_course_rate
;
data
.
over_course_rate
=
res
.
over_course_rate
;
data
.
over_course_rate
=
res
.
over_course_rate
;
...
@@ -875,75 +834,75 @@
...
@@ -875,75 +834,75 @@
}
)
}
)
}
}
}
,
}
,
onPageChange
(
val
){
onPageChange
(
val
)
{
this
.
nowPage
=
val
;
this
.
nowPage
=
val
;
this
.
getUser
();
this
.
getUser
();
}
,
}
,
onSizeChange
(
val
){
onSizeChange
(
val
)
{
this
.
nowPage
=
1
;
this
.
nowPage
=
1
;
this
.
limit
=
val
;
this
.
limit
=
val
;
this
.
getUser
();
this
.
getUser
();
}
,
}
,
getUser
(){
getUser
()
{
let
json
=
{
let
json
=
{
user_id
:
this
.
id
,
user_id
:
this
.
id
,
limit
:
this
.
limit
,
limit
:
this
.
limit
,
page
:
this
.
nowPage
,
page
:
this
.
nowPage
,
status
:
'1,3,4,5'
status
:
'1,3,4,5'
}
;
}
;
getOrderListApi
(
json
).
then
(
res
=>
{
getOrderListApi
(
json
).
then
(
res
=>
{
res
.
list
.
forEach
(
i
=>
{
res
.
list
.
forEach
(
i
=>
{
i
.
refundList
=
[]
i
.
refundList
=
[]
}
);
}
);
this
.
userList
=
res
.
list
;
this
.
userList
=
res
.
list
;
this
.
total
=
res
.
total
this
.
total
=
res
.
total
}
)
}
)
}
,
}
,
getDetail
(){
getDetail
()
{
if
(
!
this
.
id
)
return
;
if
(
!
this
.
id
)
return
;
getUserDetailApi
(
this
.
id
).
then
(
res
=>
{
getUserDetailApi
(
this
.
id
).
then
(
res
=>
{
this
.
detail
=
res
;
this
.
detail
=
res
;
if
(
res
.
periods_list
)
{
if
(
res
.
periods_list
)
{
this
.
periodList
=
res
.
periods_list
this
.
periodList
=
res
.
periods_list
}
}
console
.
log
(
res
)
console
.
log
(
res
)
}
)
}
)
getSubAccountInfoApi
(
this
.
id
).
then
(
res
=>
{
getSubAccountInfoApi
(
this
.
id
).
then
(
res
=>
{
if
(
res
.
family_user
==
1
)
{
if
(
res
.
family_user
==
1
)
{
this
.
subDetail
=
res
.
sub_user_info
this
.
subDetail
=
res
.
sub_user_info
}
}
}
)
}
)
}
,
}
,
getUserSubAccountList
(){
getUserSubAccountList
()
{
getUserSubAccountListApi
(
this
.
id
).
then
(
res
=>
{
getUserSubAccountListApi
(
this
.
id
).
then
(
res
=>
{
this
.
subListData
=
res
this
.
subListData
=
res
}
)
}
)
}
,
}
,
bindTeacher
(){
bindTeacher
()
{
let
data
=
this
.
detail
let
data
=
this
.
detail
this
.
dialogObj
=
{
this
.
dialogObj
=
{
show
:
true
,
show
:
true
,
title
:
'绑定老师'
,
title
:
'绑定老师'
,
id
:
data
.
user_id
,
id
:
data
.
user_id
,
teacher_id
:
data
.
teacher_id
teacher_id
:
data
.
teacher_id
}
}
}
,
}
,
showUser
(
data
){
showUser
(
data
)
{
let
classType
=
data
.
type
==
1
?
'(带班班级)'
:
'(观摩班级)'
let
classType
=
data
.
type
==
1
?
'(带班班级)'
:
'(观摩班级)'
console
.
log
(
data
)
console
.
log
(
data
)
this
.
userObj
=
{
this
.
userObj
=
{
classId
:
data
.
class_id
,
classId
:
data
.
class_id
,
show
:
true
,
show
:
true
,
title
:
`${data.teacher_name
}
班级用户列表${classType
}
`
,
title
:
`${data.teacher_name
}
班级用户列表${classType
}
`
,
teacherId
:
data
.
teacher_id
,
teacherId
:
data
.
teacher_id
,
periods_id
:
data
.
periods_id
,
periods_id
:
data
.
periods_id
,
goods_id
:
data
.
goods_id
,
goods_id
:
data
.
goods_id
,
classPage
:
true
,
classPage
:
true
,
type
:
data
.
type
type
:
data
.
type
}
}
}
,
}
,
//编辑备注 看课情况
//编辑备注 看课情况
editPrivilege
(
val
){
editPrivilege
(
val
)
{
this
.
privilegeDialog
=
{
this
.
privilegeDialog
=
{
id
:
val
.
id
,
id
:
val
.
id
,
isAllowView
:
val
.
is_view_course
===
1
,
isAllowView
:
val
.
is_view_course
===
1
,
...
@@ -952,7 +911,7 @@
...
@@ -952,7 +911,7 @@
show
:
true
show
:
true
}
}
}
,
}
,
onGetUserDescList
(
val
){
onGetUserDescList
(
val
)
{
this
.
descDialog
.
show
=
true
;
this
.
descDialog
.
show
=
true
;
this
.
descDialog
.
userInfo
=
{
this
.
descDialog
.
userInfo
=
{
user_id
:
val
.
user_id
,
user_id
:
val
.
user_id
,
...
@@ -962,17 +921,17 @@
...
@@ -962,17 +921,17 @@
this
.
descDialog
.
id
=
val
.
id
;
this
.
descDialog
.
id
=
val
.
id
;
this
.
getUserDescList
();
this
.
getUserDescList
();
}
,
}
,
getUserDescList
(){
getUserDescList
()
{
let
json
=
{
let
json
=
{
page
:
this
.
descDialog
.
nowPage
,
page
:
this
.
descDialog
.
nowPage
,
limit
:
this
.
descDialog
.
limit
limit
:
this
.
descDialog
.
limit
}
;
}
;
getUserDescListApi
(
this
.
descDialog
.
id
,
json
).
then
(
res
=>
{
getUserDescListApi
(
this
.
descDialog
.
id
,
json
).
then
(
res
=>
{
this
.
descDialog
.
descList
=
res
.
list
;
this
.
descDialog
.
descList
=
res
.
list
;
this
.
descDialog
.
total
=
res
.
total
;
this
.
descDialog
.
total
=
res
.
total
;
}
)
}
)
}
,
}
,
userLook
(
data
){
userLook
(
data
)
{
this
.
lookDetail
.
show
=
true
;
this
.
lookDetail
.
show
=
true
;
this
.
lookDetail
.
loading
=
true
;
this
.
lookDetail
.
loading
=
true
;
let
json
=
{
let
json
=
{
...
@@ -980,10 +939,10 @@
...
@@ -980,10 +939,10 @@
page
:
this
.
lookDetail
.
nowPage
page
:
this
.
lookDetail
.
nowPage
}
}
this
.
lookDetail
.
data
=
{
this
.
lookDetail
.
data
=
{
periods_id
:
data
.
periods_id
,
periods_id
:
data
.
periods_id
,
user_id
:
data
.
user_id
user_id
:
data
.
user_id
}
}
userLookApi
(
data
.
periods_id
,
data
.
user_id
,
json
).
then
(
res
=>
{
userLookApi
(
data
.
periods_id
,
data
.
user_id
,
json
).
then
(
res
=>
{
this
.
lookDetail
.
list
=
res
.
list
;
this
.
lookDetail
.
list
=
res
.
list
;
this
.
lookDetail
.
loading
=
false
;
this
.
lookDetail
.
loading
=
false
;
this
.
lookDetail
.
total
=
res
.
total
;
this
.
lookDetail
.
total
=
res
.
total
;
...
@@ -994,8 +953,8 @@
...
@@ -994,8 +953,8 @@
confirmButtonText
:
'确定'
,
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
cancelButtonText
:
'取消'
,
inputValue
:
''
inputValue
:
''
}
).
then
(({
value
}
)
=>
{
}
).
then
(({
value
}
)
=>
{
addPeriodsClassUserDescApi
(
id
,
{
desc
:
value
}
).
then
(
res
=>
{
addPeriodsClassUserDescApi
(
id
,
{
desc
:
value
}
).
then
(
res
=>
{
this
.
$message
({
this
.
$message
({
type
:
'success'
,
type
:
'success'
,
message
:
'编辑备注成功'
message
:
'编辑备注成功'
...
@@ -1004,7 +963,7 @@
...
@@ -1004,7 +963,7 @@
}
);
}
);
}
)
}
)
}
,
}
,
changePrivilegeSub
(){
changePrivilegeSub
()
{
this
.
$confirm
(
'此操作将修改用户权限?'
,
'提示'
,
{
this
.
$confirm
(
'此操作将修改用户权限?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
cancelButtonText
:
'取消'
,
...
@@ -1015,7 +974,7 @@
...
@@ -1015,7 +974,7 @@
is_add_teacher
:
this
.
privilegeDialog
.
is_add_teacher
,
is_add_teacher
:
this
.
privilegeDialog
.
is_add_teacher
,
weight
:
this
.
privilegeDialog
.
weight
weight
:
this
.
privilegeDialog
.
weight
}
}
updateUserPrivilegeApi
(
this
.
privilegeDialog
.
id
,
_json
).
then
(
res
=>
{
updateUserPrivilegeApi
(
this
.
privilegeDialog
.
id
,
_json
).
then
(
res
=>
{
this
.
$message
({
this
.
$message
({
type
:
'success'
,
type
:
'success'
,
message
:
'修改成功!'
message
:
'修改成功!'
...
@@ -1026,7 +985,7 @@
...
@@ -1026,7 +985,7 @@
}
);
}
);
}
);
}
);
}
,
}
,
getyunjiOrder
(){
getyunjiOrder
()
{
let
json
=
{
let
json
=
{
limit
:
this
.
limit
,
limit
:
this
.
limit
,
page
:
this
.
nowPage
page
:
this
.
nowPage
...
@@ -1038,30 +997,30 @@
...
@@ -1038,30 +997,30 @@
}
);
}
);
}
}
}
,
}
,
filters
:{
filters
:
{
payMentFilter
(
val
){
payMentFilter
(
val
)
{
return
val
==
'1'
?
'已付款'
:
'未付款'
return
val
==
'1'
?
'已付款'
:
'未付款'
}
,
}
,
courseTypeFilter
(
val
){
courseTypeFilter
(
val
)
{
return
val
.
type
==
'1'
?
`正式课(${val.duration
}
个月)`
:
`试听课(${val.duration
}
天)`
return
val
.
type
==
'1'
?
`正式课(${val.duration
}
个月)`
:
`试听课(${val.duration
}
天)`
}
,
}
,
inviteType
(
value
){
inviteType
(
value
)
{
return
INVITETYPE
[
value
]
return
INVITETYPE
[
value
]
}
,
}
,
status
(
value
){
status
(
value
)
{
return
ORDERSTATUS
[
value
]
return
ORDERSTATUS
[
value
]
}
,
}
,
buyType
(
value
){
buyType
(
value
)
{
return
BUYTYPE
[
value
]
return
BUYTYPE
[
value
]
}
,
}
,
moneytFilter
(
val
){
moneytFilter
(
val
)
{
return
val
=
val
/
100
+
'元'
return
val
=
val
/
100
+
'元'
}
,
}
,
percent
(
val
){
percent
(
val
)
{
return
(
val
*
100
).
toFixed
(
2
)
+
'%'
return
(
val
*
100
).
toFixed
(
2
)
+
'%'
}
,
}
,
isdel
(
val
){
isdel
(
val
)
{
return
val
==
0
?
'未删除'
:
'已删除'
return
val
==
0
?
'未删除'
:
'已删除'
}
}
}
}
}
}
...
@@ -1069,62 +1028,79 @@
...
@@ -1069,62 +1028,79 @@
<
style
scoped
lang
=
"less"
>
<
style
scoped
lang
=
"less"
>
@
import
"../../util/public"
;
@
import
"../../util/public"
;
.
box
{
display
:
flex
;
}
.
user
-
card
{
.
box
{
margin
:
10
px
;
width
:
600
px
;
display
:
flex
;
}
.
user
-
card
{
margin
:
10
px
;
width
:
600
px
;
padding
:
20
px
;
padding
:
20
px
;
// display: flex;
// display: flex;
.
text
.
item
{
.
text
.
item
{
line
-
height
:
30
px
;
line
-
height
:
30
px
;
}
}
.
card
-
content
{
img
{
.
card
-
content
{
img
{
float
:
left
;
float
:
left
;
}
}
}
}
label
{
label
{
color
:
#
5982
e6
;
color
:
#
5982
e6
;
width
:
100
px
;
width
:
100
px
;
display
:
inline
-
block
;
display
:
inline
-
block
;
text
-
align
:
right
;
text
-
align
:
right
;
}
}
.
el
-
col
{
.
el
-
col
{
height
:
30
px
;
height
:
30
px
;
line
-
height
:
30
px
;
line
-
height
:
30
px
;
}
}
.
title
{
.
title
{
height
:
50
px
;
height
:
50
px
;
line
-
height
:
60
px
;
line
-
height
:
60
px
;
margin
-
bottom
:
20
px
;
margin
-
bottom
:
20
px
;
a
{
a
{
display
:
block
;
display
:
block
;
img
{
img
{
width
:
80
px
;
width
:
80
px
;
border
-
radius
:
100
px
;
border
-
radius
:
100
px
;
}
}
}
}
}
}
}
}
.
width400
{
.
width400
{
width
:
400
px
;
width
:
400
px
;
}
}
.
avatar
{
.
avatar
{
width
:
50
px
;
width
:
50
px
;
height
:
50
px
;
height
:
50
px
;
border
-
radius
:
50
%
;
border
-
radius
:
50
%
;
}
}
.
user
{
.
user
{
height
:
100
%
;
height
:
100
%
;
overflow
:
auto
;
overflow
:
auto
;
/*padding: 20px 0;*/
/*padding: 20px 0;*/
.
btn
-
content
{
.
btn
-
content
{
text
-
align
:
center
;
text
-
align
:
center
;
}
}
}
}
.
header
{
.
header
{
padding
:
0
20
px
;
padding
:
0
20
px
;
margin
-
bottom
:
20
px
;
margin
-
bottom
:
20
px
;
}
}
.
header
{
.
header
{
.
el
-
row
{
.
el
-
row
{
display
:
flex
;
display
:
flex
;
...
@@ -1133,14 +1109,17 @@
...
@@ -1133,14 +1109,17 @@
color
:
#
666
;
color
:
#
666
;
font
-
size
:
16
px
;
font
-
size
:
16
px
;
margin
:
25
px
0
;
margin
:
25
px
0
;
label
{
label
{
margin
-
right
:
10
px
;
margin
-
right
:
10
px
;
}
}
}
}
.
avatar
{
.
avatar
{
margin
-
right
:
10
px
;
margin
-
right
:
10
px
;
}
}
}
}
.
b
-
title
{
.
b
-
title
{
padding
:
20
px
;
padding
:
20
px
;
color
:
#
666
;
color
:
#
666
;
...
...
src/components/yunji/index.vue
View file @
5bb62fd3
...
@@ -156,7 +156,12 @@
...
@@ -156,7 +156,12 @@
<div
v-if=
'scope.row.user_id === 0'
>
用户未绑定
</div>
<div
v-if=
'scope.row.user_id === 0'
>
用户未绑定
</div>
</
template
>
</
template
>
</el-table-column>
</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>
<el-table-column
prop=
"goods_name"
label=
"商品名称"
>
<el-table-column
prop=
"goods_name"
label=
"商品名称"
>
</el-table-column>
</el-table-column>
...
@@ -500,6 +505,29 @@ export default {
...
@@ -500,6 +505,29 @@ export default {
});
});
},
},
methods
:
{
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
){
initClearOtherOrder
(
id
){
this
.
$confirm
(
'确认清除?'
,
'提示'
,
{
this
.
$confirm
(
'确认清除?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
confirmButtonText
:
'确定'
,
...
...
src/service/api.js
View file @
5bb62fd3
...
@@ -1364,7 +1364,7 @@ export const getStaffRecordApi = function (json) {
...
@@ -1364,7 +1364,7 @@ export const getStaffRecordApi = function (json) {
// 系统配置设备
// 系统配置设备
export
const
getTeacherTypeListApi
=
function
(
json
)
{
export
const
getTeacherTypeListApi
=
function
(
json
)
{
return
Vue
.
prototype
.
$fetch
(
`
${
_baseUrl
}
api/admin/teacher/type/list`
,
json
)
return
Vue
.
prototype
.
$fetch
(
`
${
_baseUrl
}
api/admin/teacher/type/list`
,
json
)
};
};
export
const
postTeacherTypeListApi
=
function
(
json
)
{
export
const
postTeacherTypeListApi
=
function
(
json
)
{
return
Vue
.
prototype
.
$post
(
`
${
_baseUrl
}
api/admin/teacher/type/add`
,
json
)
return
Vue
.
prototype
.
$post
(
`
${
_baseUrl
}
api/admin/teacher/type/add`
,
json
)
};
};
...
@@ -1375,3 +1375,7 @@ export const postMediaConvertApi = function (json) {
...
@@ -1375,3 +1375,7 @@ export const postMediaConvertApi = function (json) {
return
Vue
.
prototype
.
$post
(
`
${
_baseUrl
}
api/public/media/convert`
,
json
)
return
Vue
.
prototype
.
$post
(
`
${
_baseUrl
}
api/public/media/convert`
,
json
)
};
};
///api/public/media/convert
///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