Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
train-admin-h5
Overview
Overview
Details
Activity
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
tangjiale
train-admin-h5
Commits
65daf664
Commit
65daf664
authored
Jun 17, 2022
by
tangjiale
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新代码
parent
b36c2add
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
565 additions
and
73 deletions
+565
-73
order-detail.vue
pages/components/order-detail.vue
+132
-0
courseJoin.vue
pages/courseJoin.vue
+94
-33
courseManage.vue
pages/courseManage.vue
+3
-3
experienceOrder.vue
pages/experienceOrder.vue
+73
-30
salesManage.vue
pages/salesManage.vue
+160
-0
studentManage.vue
pages/studentManage.vue
+7
-6
course.js
services/course.js
+96
-1
No files found.
pages/components/order-detail.vue
0 → 100644
View file @
65daf664
<!--
* @Author: tangjiale
* @eMail: 932055106@qq.com
* @Date: 2022-06-17 08:47:27
* @LastEditors: tangjiale
* @LastEditTime: 2022-06-17 14:36:01
-->
<
template
>
<!-- 班课报名详情 -->
<el-dialog
:title=
"type==1?'订单详情':type==2?'订单详情':'销课详细记录'"
class=
"model-bg"
:visible
.
sync=
"show"
:close-on-click-modal=
"false"
width=
"1200px"
>
<!-- 销课记录详情 -->
<template
v-if=
"type == 3"
>
<el-row
:gutter=
"10"
>
<el-col
:span=
"8"
>
课程名称:
{{
detail
.
name
}}
</el-col>
<el-col
:span=
"8"
>
总课时:
{{
detail
.
totalKs
}}
</el-col>
</el-row>
<el-row
:gutter=
"10"
>
<el-col
:span=
"8"
>
课程价格:
{{
detail
.
cost
?
detail
.
cost
/
100
:
0
}}
</el-col>
<el-col
:span=
"8"
>
课程属性:
{{
courseStep
[
detail
.
courseStep
]
||
''
}}
组
</el-col>
<el-col
:span=
"8"
>
课程层次:
{{
leveId
[
detail
.
leveId
]
||
''
}}
</el-col>
</el-row>
<el-row
:gutter=
"10"
></el-row>
<el-row
:gutter=
"10"
>
<el-col
:span=
"8"
><span
class=
"gren-c"
>
已销课时:
{{
detail
.
totalKs
-
(
detail
.
syKs
||
0
)
}}
课时
</span>
/ 剩余课时:
{{
detail
.
syKs
||
0
}}
课时
</el-col>
</el-row>
<el-row
:gutter=
"10"
></el-row>
<el-row
:gutter=
"10"
>
<el-col
:span=
"8"
>
所属校区:
{{
detail
.
shortName
||
''
}}
</el-col>
<el-col
:span=
"8"
>
教练:
{{
detail
.
coach
}}
</el-col>
<el-col
:span=
"8"
>
班主任:
{{
detail
.
manger
}}
</el-col>
</el-row>
<el-row
:gutter=
"10"
>
<el-col
:span=
"8"
>
学生姓名:
{{
detail
.
bmStuName
}}
<div
class=
"ware-tab"
>
预警
</div></el-col>
<el-col
:span=
"8"
>
年龄:
{{
detail
.
age
}}
</el-col>
<el-col
:span=
"8"
>
手机号码:
{{
detail
.
bmPhone
}}
</el-col>
</el-row>
</
template
>
<!-- 体验课订单详情 / 班课报名详情 -->
<
template
v-else
>
<el-row
:gutter=
"10"
>
<el-col
:span=
"8"
v-if=
"type == 1"
>
订单编号:
{{
detail
.
orderNo
}}
</el-col>
<el-col
:span=
"8"
v-if=
"type == 1"
>
订单状态:
{{
tyOrderState
[
detail
.
orderStatus
]
}}
</el-col>
<el-col
:span=
"8"
v-if=
"type == 2"
>
报名状态:
{{
orderState
[
detail
.
bmStatus
]
}}
</el-col>
<el-col
:span=
"8"
>
{{
type
==
1
?
`报名时间:${detail.orderTime || ''
}
`
:
type
==
2
?
`报名时间:${detail.bmTime || ''
}
`
:
''
}}
<
/el-col
>
<
/el-row
>
<
el
-
row
:
gutter
=
"20"
>
<
el
-
col
:
span
=
"8"
>
学生姓名:
{{
detail
.
bmStuName
||
''
}}
<
/el-col
>
<
el
-
col
:
span
=
"8"
v
-
if
=
"detail.age"
>
年龄:
{{
detail
.
age
||
''
}}
<
/el-col
>
<
el
-
col
:
span
=
"8"
>
手机号码:
{{
detail
.
bmPhone
||
''
}}
<
/el-col
>
<
/el-row
>
<
el
-
row
:
gutter
=
"10"
>
<
el
-
col
:
span
=
"6"
>
课程名称:
{{
detail
.
name
||
''
}}
<
/el-col
>
<
el
-
col
:
span
=
"6"
>
所属校区:
{{
detail
.
shortName
||
''
}}
<
/el-col
>
<
el
-
col
:
span
=
"6"
>
教练:
{{
detail
.
coach
||
''
}}
<
/el-col
>
<
el
-
col
:
span
=
"6"
>
班主任:
{{
detail
.
manger
||
''
}}
<
/el-col
>
<
/el-row
>
<
el
-
row
:
gutter
=
"10"
>
<
el
-
col
:
span
=
"6"
>
课程属性:
{{
courseStep
[
detail
.
courseStep
]
||
''
}}
组
<
/el-col
>
<
el
-
col
:
span
=
"6"
>
课程层次:
{{
leveId
[
detail
.
leveId
]
||
''
}}
<
/el-col
>
<
el
-
col
:
span
=
"6"
>
课时:
{{
detail
.
totalKs
||
''
}}
课时
<
/el-col
>
<
el
-
col
:
span
=
"6"
>
课程价格:
{{
detail
.
cost
?
detail
.
cost
/
100
:
0
}}
元
<
/el-col
>
<
/el-row
>
<
/template
>
<
/el-dialog
>
<
/template
>
<
script
>
export
default
{
services
:[
'course'
],
props
:{
type
:{
type
:[
String
,
Number
],
default
:
1
}
}
,
data
(){
return
{
orderState
:[
'待确认报名'
,
'已确认报名'
,
'待取消报名'
,
'已取消报名'
],
tyOrderState
:[
'待支付'
,
'待发货'
,
'全部退货'
,
'已收货'
,
'已取消'
,
'待收货'
],
courseStep
:[
''
,
'小学'
,
'初中'
,
'高中'
],
leveId
:[
''
,
'基础班'
,
'提高班'
,
'精英班'
,
'赛事班'
],
show
:
false
,
detail
:{
}
}
}
,
mounted
(){
}
,
methods
:{
queryDetail
(
param
){
//报名id 课程id
let
funName
=
this
.
type
==
1
?
'getTyCourseDetail'
:
this
.
type
==
2
?
'bmDetail'
:
'getSalesDetail'
this
.
$service
.
course
[
funName
](
param
).
then
(
res
=>
{
this
.
detail
=
res
this
.
show
=
true
}
)
}
}
}
<
/script
>
<
style
lang
=
"less"
scoped
>
.
el
-
row
{
margin
-
bottom
:
20
px
;
&
:
last
-
child
{
margin
-
bottom
:
0
;
}
}
.
gren
-
c
{
color
:
#
39
bf3e
;
}
.
ware
-
tab
{
padding
:
2
px
4
px
;
border
-
radius
:
4
px
;
background
-
color
:
red
;
color
:
#
fff
;
font
-
size
:
12
px
;
display
:
inline
-
block
;
margin
-
left
:
4
px
;
}
<
/style>
\ No newline at end of file
pages/courseJoin.vue
View file @
65daf664
<
template
>
<div
class=
"page-bg"
>
<t-table
ref=
"table"
:options=
"options"
:params=
"params"
@
row-btn-click=
"onRowButtonClick
"
>
<t-table
autoLoad
ref=
"table"
:options=
"options"
:params=
"params
"
>
<template
slot=
"form-order-search"
>
<div
class=
"search-bottom"
>
...
...
@@ -10,19 +10,33 @@
</
template
>
<
template
slot=
"custom-view-field"
slot-scope=
"scope"
>
<div
v-if=
"scope.idx === 7"
>
<t-select
v-model=
"scope.row.taskStatus"
:ds=
"[
{name:'同意取消',value:1},{name:'不同意取消',value:2}]" required>
</t-select>
<div
class=
"curstom-btn"
v-if=
"scope.idx === 7"
>
<el-button
@
click=
"agreeJoin(scope.row)"
v-if=
"scope.row.bmStatus == 0"
type=
"primary"
size=
"small"
plain
>
确认报名
</el-button>
<!--
<t-select
class=
"btn-select"
v-model=
"scope.row.taskStatus"
:ds=
"[
{name:'同意取消',value:1},{name:'不同意取消',value:2}]" required>
</t-select>
-->
<el-dropdown
v-if=
"scope.row.bmStatus == 2"
>
<el-button
type=
"warning"
size=
"small"
plain
>
是否同意
</el-button>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
@
click
.
native=
"agreeCannel(scope.row,1)"
>
同意取消
</el-dropdown-item>
<el-dropdown-item
@
click
.
native=
"agreeCannel(scope.row,2)"
>
不同意取消
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-button
@
click=
"openDetail(scope.row)"
type=
"success"
size=
"small"
plain
>
详情
</el-button>
</div>
</
template
>
</t-table>
<!-- 详情 -->
<order-detail
ref=
"detail"
type=
"2"
></order-detail>
</div>
</template>
<
script
>
const
orderState
=
[
'待支付'
,
'待发货'
,
'全部退货'
,
'已收货'
,
'已取消'
,
'待收货'
]
const
orderState
=
[
'待确认报名'
,
'已确认报名'
,
'待取消报名'
,
'已取消报名'
]
import
orderDetail
from
'./components/order-detail.vue'
export
default
{
services
:[
'base'
],
services
:[
'base'
,
'course'
],
components
:{
orderDetail
},
data
(){
return
{
params
:{
...
...
@@ -32,57 +46,100 @@ export default {
title
:
"班课报名"
,
search
:
[
{
label
:
'所属校区:'
,
field
:
'orderStatus'
,
type
:
'select'
,
autoSelect
:
true
,
required
:
true
,
ds
:
[{
name
:
'全部'
,
value
:
''
},
{
name
:
'待发货'
,
value
:
1
},
{
name
:
'已退货'
,
value
:
2
},
{
name
:
'已收货'
,
value
:
3
},
{
name
:
'已取消'
,
value
:
4
},
{
name
:
'待收货'
,
value
:
5
}]
label
:
'所属校区:'
,
field
:
'schId'
,
type
:
'select'
,
autoSelect
:
true
,
required
:
true
,
ds
:
{
service
:
'base'
,
func
:
'getUserAllSchList'
,
params
:{
all
:
true
}}
},{
label
:
'报名状态:'
,
field
:
'bmStatus'
,
type
:
'select'
,
autoSelect
:
true
,
required
:
true
,
ds
:
[{
name
:
'全部'
,
value
:
''
},
{
name
:
'待确认报名'
,
value
:
0
},
{
name
:
'待取消报名'
,
value
:
2
},{
name
:
'已确认报名'
,
value
:
1
}]
},{
label
:
'报名状态:'
,
field
:
'valid'
,
type
:
'select'
,
autoSelect
:
true
,
required
:
true
,
ds
:
[{
name
:
'全部'
,
value
:
''
},
{
name
:
'待确认报名'
,
value
:
1
},
{
name
:
'待取消报名'
,
value
:
0
},{
name
:
'已确认报名'
,
value
:
0
}]
label
:
'课程日期'
,
field
:
'daterange'
,
type
:
'daterange'
},{
label
:
'课程日期'
,
field
:
'valid'
,
type
:
'daterange'
placeholder
:
"请输入学生姓名 "
,
field
:
"stuName"
,
type
:
"text"
,
label
:
""
,
},{
placeholder
:
"请输入
学生姓名或课程名称 "
,
field
:
"productName"
,
type
:
"text"
,
label
:
"名字/名称
"
,
}
,
placeholder
:
"请输入
课程名称 "
,
field
:
"name"
,
type
:
"text"
,
label
:
"
"
,
}
],
table
:
{
service
:
""
,
height
:(
screen
.
height
-
(
482
*
this
.
$px2rem
)),
func
:
"
getOrderPc
List"
,
service
:
"
course
"
,
height
:(
screen
.
height
-
(
482
*
this
.
$px2rem
)),
func
:
"
joinCourse
List"
,
selectable
:
false
,
customRow
:
true
,
columns
:
[
{
title
:
"学生姓名"
,
field
:
"
orderNo
"
,
width
:
'150px'
,},
{
title
:
"学生姓名"
,
field
:
"
bmStuName
"
,
width
:
'150px'
,},
{
title
:
"性别"
,
width
:
'120px'
,
type
:
'customField'
,
fieldFunction
:
row
=>
true
?
'男'
:
'女'
,
fieldFunction
:
row
=>
row
.
bmGender
==
1
?
'男'
:
'女'
,
},
{
title
:
"联系方式"
,
field
:
"orderNo"
},
{
title
:
"课程名称"
,
field
:
"orderNo"
},
{
title
:
"所选校区"
,
field
:
"orderNo"
},
{
title
:
"联系方式"
,
field
:
"bmPhone"
,
width
:
'150px'
,},
{
title
:
"课程名称"
,
field
:
"name"
},
{
title
:
"所属校区"
,
field
:
"shortName"
},
//报名状态(0:待确认报名,1:已确认报名,2:待取消报名,3:已取消报名)
{
title
:
"报名状态"
,
width
:
'120px'
,
type
:
'customField'
,
fieldFunction
:
row
=>
(
orderState
[
row
.
orderStatus
]
||
''
),
fieldFunction
:
row
=>
(
orderState
[
row
.
bmStatus
]
||
''
),
},
{
title
:
"价格"
,
width
:
'100px'
,
type
:
'customField'
,
fieldFunction
:
row
=>
(
row
.
cost
/
100
),
},
{
title
:
"价格"
,
field
:
"orderNo"
,
width
:
'150px'
},
{
title
:
"操作"
,
type
:
"customViewField"
,
width
:
'150px'
}
{
title
:
"操作"
,
type
:
"customViewField"
,
width
:
'220px'
}
],
},
},
}
},
methods
:{
onRowButtonClick
(
data
,
i
)
{
let
self
=
this
let
{
event
,
row
}
=
data
if
(
!
event
)
return
switch
(
event
)
{
case
'agree'
:
//同意退款
break
case
'refuce'
:
//同意退款
break
}
openDetail
(
data
){
this
.
$refs
[
'detail'
].
queryDetail
({
bmId
:
data
.
id
,
courseId
:
data
.
courseId
})
},
//确认报名
agreeJoin
(
data
){
let
that
=
this
this
.
$showConfirm
(
"你确认同意报名?"
).
then
(()
=>
{
that
.
$service
.
course
.
updateBmStatus
({
bmId
:
data
.
id
,
bmStatus
:
1
}).
then
(
res
=>
{
this
.
$notifySuccess
();
this
.
upDateList
()
})
});
},
agreeCannel
(
data
,
type
){
let
that
=
this
this
.
$showConfirm
(
`你确认
${
type
==
1
?
'同意'
:
'不同意'
}
取消吗?`
).
then
(()
=>
{
that
.
$service
.
course
.
updateBmStatus
({
bmId
:
data
.
id
,
bmStatus
:
type
==
1
?
3
:
2
}).
then
(
res
=>
{
this
.
$notifySuccess
();
this
.
upDateList
()
})
});
},
upDateList
(){
this
.
$refs
[
'table'
].
reload
()
},
exportOrder
(){
let
param
=
{
...
this
.
$refs
[
"table"
].
searchForm
,
...
this
.
params
,
};
if
(
param
[
"daterange"
]
&&
param
[
"daterange"
].
length
)
{
param
.
startDate
=
param
[
"daterange"
][
0
];
param
.
endDate
=
param
[
"daterange"
][
1
];
}
delete
param
[
"daterange"
];
delete
param
.
undefined
let
failName
=
`班课报名收费列表
${
param
.
startDate
?
param
.
startDate
+
"-"
+
param
.
endDate
:
""
}
`
;
this
.
$service
.
course
.
exportCourseList
(
param
,
failName
)
.
then
((
res
)
=>
{
this
.
$notifySuccess
();
});
}
}
}
...
...
@@ -107,4 +164,7 @@ export default {
min-width
:
100px
!important
;
}
}
/
deep
/
.curstom-btn
button
{
margin-right
:
10px
!important
;
}
</
style
>
\ No newline at end of file
pages/courseManage.vue
View file @
65daf664
...
...
@@ -3,7 +3,7 @@
* @eMail: 932055106@qq.com
* @Date: 2022-06-02 14:08:46
* @LastEditors: tangjiale
* @LastEditTime: 2022-06-1
4 19:05:42
* @LastEditTime: 2022-06-1
6 18:29:27
-->
<
template
>
<div
class=
"page-bg"
>
...
...
@@ -51,7 +51,7 @@ export default {
label
:
'课程层次:'
,
field
:
'leveId'
,
type
:
'select'
,
autoSelect
:
true
,
required
:
true
,
ds
:
[{
name
:
'全部'
,
value
:
''
},
{
name
:
'基础班'
,
value
:
1
},{
name
:
'提高班'
,
value
:
2
},{
name
:
'精英班'
,
value
:
3
},{
name
:
'赛事班'
,
value
:
4
}]
},{
label
:
'课程类型:'
,
field
:
'
valid
'
,
type
:
'select'
,
autoSelect
:
true
,
required
:
true
,
label
:
'课程类型:'
,
field
:
'
type
'
,
type
:
'select'
,
autoSelect
:
true
,
required
:
true
,
ds
:
[{
name
:
'全部'
,
value
:
''
},
{
name
:
'体验课'
,
value
:
1
},
{
name
:
'正式班课'
,
value
:
0
}]
},{
label
:
'课程状态:'
,
field
:
'status'
,
type
:
'select'
,
autoSelect
:
true
,
required
:
true
,
...
...
@@ -66,7 +66,7 @@ export default {
selectable
:
false
,
customRow
:
true
,
columns
:
[
{
title
:
"课程名称"
,
field
:
"name"
},
{
title
:
"所属
小
区"
,
field
:
"schNames"
},
{
title
:
"所属
校
区"
,
field
:
"schNames"
},
{
title
:
"课程属性"
,
type
:
'customField'
,
width
:
'140px'
,
fieldFunction
:
row
=>
courseStep
[
row
.
courseStep
],
...
...
pages/experienceOrder.vue
View file @
65daf664
<
template
>
<div
class=
"page-bg"
>
<t-table
ref=
"table"
:options=
"options"
:params=
"params"
@
row-btn-click=
"onRowButtonClick"
>
<t-table
autoLoad
ref=
"table"
:options=
"options"
:params=
"params"
@
row-btn-click=
"onRowButtonClick"
>
<!-- 操作栏 -->
<template
slot=
"form-order-search"
>
<div
class=
"search-bottom"
>
...
...
@@ -10,65 +10,79 @@
</
template
>
<
template
slot=
"custom-view-field"
slot-scope=
"scope"
>
<div
v-if=
"scope.idx === 7"
>
<t-select
v-model=
"scope.row.taskStatus"
:ds=
"[
{name:'同意取消',value:1},{name:'不同意取消',value:2}]" required>
</t-select>
<div
class=
"curstom-btn"
v-if=
"scope.idx === 8"
>
<!-- 订单状态 (0:待支付,1:已订购,2:待退款,3:已退款,4:已关闭) -->
<el-dropdown
v-if=
"scope.row.orderStatus == 2"
>
<el-button
type=
"warning"
size=
"small"
plain
>
是否退款
</el-button>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
@
click
.
native=
"agreeCannel(scope.row,1)"
>
同意退款
</el-dropdown-item>
<el-dropdown-item
@
click
.
native=
"agreeCannel(scope.row,2)"
>
拒绝退款
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-button
@
click=
"openDetail(scope.row)"
type=
"success"
size=
"small"
plain
>
详情
</el-button>
</div>
</
template
>
</
template
>
</t-table>
<order-detail
ref=
"detail"
type=
"1"
></order-detail>
</div>
</template>
<
script
>
const
orderState
=
[
'待支付'
,
'待发货'
,
'全部退货'
,
'已收货'
,
'已取消'
,
'待收货'
]
import
orderDetail
from
'./components/order-detail.vue'
export
default
{
services
:[
'base'
],
services
:[
'base'
,
'course'
],
components
:{
orderDetail
},
data
(){
return
{
params
:{
regionCode
:
''
,
schName
:
''
},
options
:
{
title
:
"体验课订单"
,
search
:
[
{
label
:
'所属校区:'
,
field
:
'
orderStatus
'
,
type
:
'select'
,
autoSelect
:
true
,
required
:
true
,
ds
:
[{
name
:
'全部'
,
value
:
''
},
{
name
:
'待发货'
,
value
:
1
},
{
name
:
'已退货'
,
value
:
2
},
{
name
:
'已收货'
,
value
:
3
},
{
name
:
'已取消'
,
value
:
4
},
{
name
:
'待收货'
,
value
:
5
}]
label
:
'所属校区:'
,
field
:
'
schId
'
,
type
:
'select'
,
autoSelect
:
true
,
required
:
true
,
ds
:
{
service
:
'base'
,
func
:
'getUserAllSchList'
,
params
:{
all
:
true
}}
},{
label
:
'
课程属性:'
,
field
:
'valid
'
,
type
:
'select'
,
autoSelect
:
true
,
required
:
true
,
ds
:
[{
name
:
'全部'
,
value
:
''
},
{
name
:
'
小学组'
,
value
:
1
},
{
name
:
'初中组'
,
value
:
0
},{
name
:
'高中组'
,
value
:
0
}]
label
:
'
订单状态:'
,
field
:
'orderStatus
'
,
type
:
'select'
,
autoSelect
:
true
,
required
:
true
,
ds
:
[{
name
:
'全部'
,
value
:
''
},
{
name
:
'
待支付'
,
value
:
0
},
{
name
:
'已订购'
,
value
:
1
},{
name
:
'待退款'
,
value
:
2
},{
name
:
'已退款'
,
value
:
3
},{
name
:
'已关闭'
,
value
:
4
}]
},{
label
:
'课程类型:'
,
field
:
'valid'
,
type
:
'select'
,
autoSelect
:
true
,
required
:
true
,
ds
:
[{
name
:
'全部'
,
value
:
''
},
{
name
:
'体验课'
,
value
:
1
},
{
name
:
'正式班课'
,
value
:
0
}]
label
:
'课程日期'
,
field
:
'daterange'
,
type
:
'daterange'
},{
label
:
'课程状态:'
,
field
:
'valid'
,
type
:
'select'
,
autoSelect
:
true
,
required
:
true
,
ds
:
[{
name
:
'全部'
,
value
:
''
},
{
name
:
'已发布'
,
value
:
1
},
{
name
:
'未发布'
,
value
:
0
}]
placeholder
:
"请输入学生姓名 "
,
field
:
"stuName"
,
type
:
"text"
,
label
:
""
,
},{
placeholder
:
"请输入课程名称 "
,
field
:
"
productName"
,
type
:
"text"
,
label
:
"课程名称:
"
,
}
,
placeholder
:
"请输入课程名称 "
,
field
:
"
name"
,
type
:
"text"
,
label
:
"
"
,
}
],
table
:
{
service
:
""
,
height
:(
screen
.
height
-
(
482
*
this
.
$px2rem
)),
func
:
"
getOrderPc
List"
,
service
:
"
course
"
,
height
:(
screen
.
height
-
(
482
*
this
.
$px2rem
)),
func
:
"
queryExper
List"
,
selectable
:
false
,
customRow
:
true
,
columns
:
[
{
title
:
"学生姓名"
,
field
:
"
orderNo
"
,
width
:
'150px'
,},
{
title
:
"学生姓名"
,
field
:
"
bmStuName
"
,
width
:
'150px'
,},
{
title
:
"性别"
,
width
:
'1
2
0px'
,
title
:
"性别"
,
width
:
'1
0
0px'
,
type
:
'customField'
,
fieldFunction
:
row
=>
true
?
'男'
:
'女'
,
fieldFunction
:
row
=>
row
.
bmGender
==
1
?
'男'
:
'女'
,
},
{
title
:
"
联系方式"
,
field
:
"orderNo"
},
{
title
:
"
课程名称"
,
field
:
"orderNo"
},
{
title
:
"
所选校区"
,
field
:
"orderNo
"
},
{
title
:
"
价格"
,
field
:
"orderNo"
,
width
:
'150px'
,
},
{
title
:
"
年龄"
,
field
:
"age"
,
width
:
'100px'
,
},
{
title
:
"
手机号码"
,
field
:
"bmPhone"
,
width
:
'150px'
,
},
{
title
:
"
课程名称"
,
field
:
"name
"
},
{
title
:
"
所属校区"
,
field
:
"shortName"
},
{
title
:
"订单状态"
,
width
:
'120px'
,
title
:
"价格"
,
width
:
'100px'
,
type
:
'customField'
,
fieldFunction
:
row
=>
(
row
.
cost
/
100
),
},
//报名状态(0:待确认报名,1:已确认报名,2:待取消报名,3:已取消报名)
{
title
:
"报名状态"
,
width
:
'120px'
,
type
:
'customField'
,
fieldFunction
:
row
=>
(
orderState
[
row
.
orderStatus
]
||
''
),
},
{
title
:
"操作"
,
type
:
"customViewField"
,
width
:
'
15
0px'
}
{
title
:
"操作"
,
type
:
"customViewField"
,
width
:
'
22
0px'
}
],
},
},
...
...
@@ -86,15 +100,40 @@ export default {
break
}
},
openDetail
(
data
){
this
.
$refs
[
'detail'
].
queryDetail
({
courseId
:
data
.
courseId
,
orderId
:
data
.
orderId
})
},
exportOrder
(){
let
param
=
{
...
this
.
$refs
[
"table"
].
searchForm
,
...
this
.
params
,
};
if
(
param
[
"daterange"
]
&&
param
[
"daterange"
].
length
)
{
param
.
startDate
=
param
[
"daterange"
][
0
];
param
.
endDate
=
param
[
"daterange"
][
1
];
}
delete
param
[
"daterange"
];
delete
param
.
undefined
let
failName
=
`体验课订单列表
${
param
.
startDate
?
param
.
startDate
+
"-"
+
param
.
endDate
:
""
}
`
;
this
.
$service
.
course
.
exportTyCourseList
(
param
,
failName
)
.
then
((
res
)
=>
{
this
.
$notifySuccess
();
});
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
.page-bg
{
.page-bg
{
position
:
relative
;
background-color
:
#fff
;
padding
:
10px
10px
;
...
...
@@ -112,4 +151,7 @@ export default {
min-width
:
100px
!important
;
}
}
/
deep
/
.curstom-btn
button
{
margin-right
:
10px
!important
;
}
</
style
>
\ No newline at end of file
pages/salesManage.vue
0 → 100644
View file @
65daf664
<!--
* @Author: tangjiale
* @eMail: 932055106@qq.com
* @Date: 2022-06-16 16:01:31
* @LastEditors: tangjiale
* @LastEditTime: 2022-06-17 14:21:07
-->
<
template
>
<div
class=
"page-bg"
>
<t-table
autoLoad
ref=
"table"
:options=
"options"
:params=
"params"
@
row-btn-click=
"onRowButtonClick"
>
<!-- 操作栏 -->
<template
slot=
"form-order-search"
>
<div
class=
"search-bottom"
>
<el-checkbox
fill=
"#ff0000"
v-model=
"params.warning"
@
change=
"$refs['table'].reload(true)"
:false-label=
"2"
:true-label=
"1"
>
预警名单
</el-checkbox>
<el-button
type=
"primary"
size=
"mini"
plain
@
click=
"exportOrder"
><i
class=
"el-icon-download"
></i>
导出
</el-button>
</div>
</
template
>
<
template
slot=
"custom-view-field"
slot-scope=
"scope"
>
<!-- warning 是否预警 1预警 0非预警 -->
<div
:class=
"scope.row.warning == 1?'red-c':''"
>
{{
scope
.
row
.
bmStuName
}}
</div>
</
template
>
</t-table>
<order-detail
ref=
"detail"
type=
"3"
></order-detail>
</div>
</template>
<
script
>
import
orderDetail
from
'./components/order-detail.vue'
export
default
{
services
:[
'base'
,
'course'
],
components
:{
orderDetail
},
data
(){
return
{
params
:{
warning
:
2
,
//是否预警
},
options
:{
title
:
'销课记录'
,
search
:[
{
label
:
'所属校区:'
,
field
:
'schId'
,
type
:
'select'
,
autoSelect
:
true
,
required
:
true
,
ds
:
{
service
:
'base'
,
func
:
'getUserAllSchList'
,
params
:{
all
:
true
}}
},{
label
:
'课程类型:'
,
field
:
'type'
,
type
:
'select'
,
autoSelect
:
true
,
required
:
true
,
ds
:
[{
name
:
'全部'
,
value
:
''
},
{
name
:
'体验课'
,
value
:
1
},
{
name
:
'正式班课'
,
value
:
0
}]
},{
placeholder
:
"请输入学生姓名 "
,
field
:
"stuName"
,
type
:
"text"
,
label
:
""
,
},{
placeholder
:
"请输入课程名称 "
,
field
:
"name"
,
type
:
"text"
,
label
:
""
,
},
],
table
:{
service
:
"course"
,
func
:
"querySalesList"
,
selectable
:
false
,
customRow
:
true
,
height
:(
screen
.
height
-
(
482
*
this
.
$px2rem
)),
columns
:[
{
title
:
"学生姓名"
,
type
:
'customViewField'
},{
title
:
"性别"
,
width
:
'100px'
,
type
:
'customField'
,
fieldFunction
:
row
=>
row
.
gender
==
1
?
'男'
:
'女'
,
},{
title
:
"手机号"
,
field
:
"bmPhone"
},{
title
:
"课程名称"
,
field
:
"name"
},{
title
:
"课程类型"
,
type
:
'customField'
,
width
:
'140px'
,
fieldFunction
:
row
=>
(
row
.
type
==
1
?
'正式课'
:
'体验课'
),
},{
title
:
"价格"
,
type
:
'customField'
,
width
:
'140px'
,
fieldFunction
:
row
=>
(
row
.
cost
/
100
),
},{
title
:
"教练"
,
field
:
"coach"
},{
title
:
"班主任"
,
field
:
"manger"
},{
title
:
"总课时"
,
field
:
"totalKs"
},{
title
:
"剩余课时"
,
field
:
"syKs"
},{
title
:
'操作'
,
width
:
"130px"
,
fixed
:
'right'
,
type
:
"buttons"
,
buttons
:
[
{
name
:
"详细"
,
type
:
'success'
,
event
:
"detail"
,
}
]
}
]
}
}
}
},
methods
:{
onRowButtonClick
(
data
,
i
)
{
let
that
=
this
let
{
event
,
row
}
=
data
if
(
!
event
)
return
switch
(
event
)
{
case
'detail'
:
//修改
that
.
$refs
[
'detail'
].
queryDetail
({
bmId
:
row
.
bmId
,
courseId
:
row
.
courseId
})
break
}
},
exportOrder
(){
let
param
=
{
...
this
.
$refs
[
"table"
].
searchForm
,
...
this
.
params
,
};
delete
param
.
undefined
let
failName
=
`体验课订单列表
${
param
.
startDate
?
param
.
startDate
+
"-"
+
param
.
endDate
:
""
}
`
;
this
.
$service
.
course
.
exportSalesCourseList
(
param
,
failName
)
.
then
((
res
)
=>
{
this
.
$notifySuccess
();
});
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
.page-bg
{
position
:
relative
;
background-color
:
#fff
;
padding
:
10px
10px
;
}
.search-bottom
{
width
:
calc
(
100%
-
2px
);
background-color
:
#fff
;
padding
:
15px
0px
10px
0px
;
height
:
60px
;
display
:
flex
;
align-items
:
center
;
border-top
:
1px
solid
#E4E7ED
;
margin
:
0px
12px
;
button{
margin-left
:
20px
;
min-width
:
100px
!important
;
}
}
/
deep
/
.curstom-btn
button
{
margin-right
:
10px
!important
;
}
.red-c
{
color
:
red
;
}
</
style
>
\ No newline at end of file
pages/studentManage.vue
View file @
65daf664
...
...
@@ -3,7 +3,7 @@
* @eMail: 932055106@qq.com
* @Date: 2022-06-02 14:08:46
* @LastEditors: tangjiale
* @LastEditTime: 2022-06-1
4 19:10:3
8
* @LastEditTime: 2022-06-1
7 14:08:0
8
-->
<
template
>
<div
class=
"page-bg"
>
...
...
@@ -140,10 +140,7 @@ export default {
.page-bg
{
position
:
relative
;
background-color
:
#fff
;
padding
:
10px
15px
;
}
/
deep
/
.search-form-r
{
top
:
10px
!important
;
padding
:
10px
10px
;
}
.search-bottom
{
width
:
calc
(
100%
-
2px
);
...
...
@@ -153,9 +150,12 @@ export default {
display
:
flex
;
align-items
:
center
;
border-top
:
1px
solid
#E4E7ED
;
margin
:
0px
8
px
;
margin
:
0px
12
px
;
button{
min-width
:
100px
!important
;
}
}
/
deep
/
.curstom-btn
button
{
margin-right
:
10px
!important
;
}
</
style
>
\ No newline at end of file
services/course.js
View file @
65daf664
...
...
@@ -3,7 +3,7 @@
* @eMail: 932055106@qq.com
* @Date: 2022-02-11 09:23:35
* @LastEditors: tangjiale
* @LastEditTime: 2022-06-1
0 17:56:54
* @LastEditTime: 2022-06-1
7 11:45:28
*/
export
default
class
CourseService
extends
Service
{
...
...
@@ -52,6 +52,101 @@ export default class CourseService extends Service {
data
:
{}
})
}
//班课报名列表
joinCourseList
(
param
){
if
(
param
.
daterange
&&
param
.
daterange
.
length
){
param
.
startDate
=
param
.
daterange
[
0
]
param
.
endDate
=
param
.
daterange
[
1
]
delete
param
.
daterange
}
return
this
.
get
({
url
:
'/course/bmList'
,
data
:
param
})
}
//体验课订单列表
queryExperList
(
param
){
if
(
param
.
daterange
&&
param
.
daterange
.
length
){
param
.
startDate
=
param
.
daterange
[
0
]
param
.
endDate
=
param
.
daterange
[
1
]
delete
param
.
daterange
}
return
this
.
get
({
url
:
'/course/orderList'
,
data
:
param
})
}
//导出体验课订单列表
exportTyCourseList
(
param
,
fileName
){
return
this
.
get
({
url
:
"/course/exportOrderList"
,
downloadFile
:
{
fileName
,
},
data
:
param
,
});
}
//导出班课报名列表
exportCourseList
(
param
,
fileName
){
return
this
.
get
({
url
:
"/course/exportBmList"
,
downloadFile
:
{
fileName
,
},
data
:
param
,
});
}
//导出消课记录列表
exportSalesCourseList
(
param
,
fileName
){
return
this
.
get
({
url
:
"/course/exportCancelCourseList"
,
downloadFile
:
{
fileName
,
},
data
:
param
,
});
}
//报名详细记录
bmDetail
(
param
){
return
this
.
get
({
url
:
"/course/bmDetail"
,
data
:
param
,
});
}
//体验课订单详情
getTyCourseDetail
(
param
){
return
this
.
get
({
url
:
"/course/orderDetail"
,
data
:
param
,
});
}
//销课详细记录
getSalesDetail
(
param
){
return
this
.
get
({
url
:
"/course/cancelCourseDetail"
,
data
:
param
,
});
}
//消课记录列表
querySalesList
(
param
){
return
this
.
get
({
url
:
'/course/cancelCourseList'
,
data
:
param
})
}
//更新报名状态 bmStatus:设置报名状态 1:确认报名,2:不同意取消报名,3:同意取消报名
updateBmStatus
(
param
){
return
this
.
put
({
url
:
'/course/updateBmStatus'
,
data
:
param
})
}
}
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