Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
confucius
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
罗超
confucius
Commits
f8431dd1
Commit
f8431dd1
authored
Jun 30, 2022
by
黄奎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1111
parent
556ed339
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
224 additions
and
406 deletions
+224
-406
index.js
src/api/stuMan/index.js
+24
-2
AppointmentStatistics.vue
src/pages/stuMan/AppointmentStatistics.vue
+81
-257
classmateForm.vue
src/pages/stuMan/components/classmateForm.vue
+1
-0
stuAppointmentList.vue
src/pages/stuMan/components/stuAppointmentList.vue
+118
-0
teachTable.vue
src/pages/stuMan/components/teachTable.vue
+0
-147
No files found.
src/api/stuMan/index.js
View file @
f8431dd1
...
...
@@ -3,7 +3,7 @@ import request from '../../utils/request'
/**
* 新增修改学员预约配置
*/
export
function
SetPlanAppointmentConfig
(
data
)
{
export
function
SetPlanAppointmentConfig
(
data
)
{
return
request
({
url
:
'/PlanAppoiment/SetPlanAppointmentConfig'
,
method
:
'post'
,
...
...
@@ -14,7 +14,7 @@ import request from '../../utils/request'
/**
* 获取学员预约配置
*/
export
function
PlanAppointmentConfig
(
data
)
{
export
function
PlanAppointmentConfig
(
data
)
{
return
request
({
url
:
'/PlanAppoiment/PlanAppointmentConfig'
,
method
:
'post'
,
...
...
@@ -187,3 +187,25 @@ export function getCoffeeOrderList(data) {
data
})
}
/**
* 学员约课统计
*/
export
function
queryPlanAppointmentStatic
(
data
)
{
return
request
({
url
:
'/PlanAppoiment/GetPlanAppointmentStatic'
,
method
:
'post'
,
data
});
}
/**
* 获取预约详情列表
*/
export
function
queryPlanAppointmentDetail
(
data
)
{
return
request
({
url
:
'/PlanAppoiment/GetPlanAppointmentDetail'
,
method
:
'post'
,
data
});
}
\ No newline at end of file
src/pages/stuMan/AppointmentStatistics.vue
View file @
f8431dd1
<
template
>
<div
class=
"page-body MainPlan xg"
>
<div
class=
"col row wrap q-col-gutter-md"
>
<!--
<div
class=
"col-2 flex"
>
<el-select
v-model=
"msg.TeacherId"
style=
"width: 100%"
placeholder=
"教师"
size=
"small"
@
change=
"getPlanList()"
>
<el-option
v-for=
"item in TeacherList"
:key=
"item.TeacherName"
:label=
"item.TeacherName"
:value=
"item.TId"
>
</el-option>
<div
slot=
"prefix"
class=
"full-height flex items-center"
style=
"color: #000; padding-right: 10px"
>
教师:
</div>
</el-select>
</div>
<div
class=
"col-2"
>
<el-select
v-model=
"msg.ClassRoomId"
style=
"width: 100%"
placeholder=
"教室"
size=
"small"
@
change=
"getTypeWay()"
>
<el-option
v-for=
"item in ClassRoomList"
:key=
"item.RoomName"
:label=
"item.RoomName"
:value=
"item.RoomId"
>
</el-option>
<div
slot=
"prefix"
class=
"full-height flex items-center"
style=
"color: #000; padding-right: 10px"
>
教室:
</div>
</el-select>
</div>
-->
<div
class=
"col-2"
style=
"width: 13%"
>
<el-date-picker
v-model=
"msg.StartTime"
type=
"date"
value-format=
"yyyy-MM-dd"
placeholder=
"开始日期"
size=
"small"
style=
"width: 100%"
@
change=
"getTypeWay()"
:picker-options=
"picker"
:clearable=
"false"
>
</el-date-picker>
</div>
<div
class=
"col-2"
style=
"width: 13%"
>
<el-date-picker
v-model=
"msg.EndTime"
type=
"date"
value-format=
"yyyy-MM-dd"
placeholder=
"结束日期"
size=
"small"
style=
"width: 100%"
@
change=
"getTypeWay()"
clear-icon=
"iconfont icon-guanbi"
:picker-options=
"pickerEnd"
>
</el-date-picker>
</div>
<div
class=
"col-1"
style=
"width: 10%"
>
<el-select
v-model=
"msg.ClassType"
style=
"width: 100%"
placeholder=
"类型"
size=
"small"
@
change=
"getTypeWay()"
>
<el-option
:key=
"0"
label=
"全部"
:value=
"0"
>
</el-option>
<el-option
:key=
"1"
label=
"跟班课"
:value=
"1"
>
</el-option>
<el-option
:key=
"2"
label=
"试听课"
:value=
"2"
>
</el-option>
<el-option
:key=
"2"
label=
"预约课"
:value=
"3"
>
</el-option>
<div
slot=
"prefix"
class=
"full-height flex items-center"
style=
"color: #000; padding-right: 10px"
>
类型:
</div>
</el-select>
</div>
<div
class=
"col-2 yuyuezhuangtai"
style=
"width: 10%"
v-if=
"msg.ClassType==3"
>
<el-select
v-model=
"msg.AppointState"
style=
"width: 100%;"
placeholder=
"预约状态"
size=
"small"
@
change=
"getTypeWay()"
>
<el-option
:key=
"0"
label=
"不限"
:value=
"0"
>
</el-option>
<el-option
:key=
"0"
label=
"待确认"
:value=
"1"
>
</el-option>
<el-option
:key=
"1"
label=
"已确认"
:value=
"2"
>
</el-option>
<div
slot=
"prefix"
class=
"full-height flex items-center"
style=
"color: #000;margin-right:61px; white-space:nowrap;"
>
预约状态:
</div>
</el-select>
</div>
<div
class=
"col-3"
style=
"width: 30%"
>
<q-btn
color=
"accent"
size=
"sm"
class=
"q-mr-md"
style=
"margin-top: 2px"
@
click=
"exchangeType"
:label=
"typeName"
/>
<q-btn
color=
"accent"
size=
"sm"
class=
"q-mr-md"
label=
"下载计划"
@
click=
"downLoadPlan()"
/>
<q-btn
color=
"negative"
size=
"sm"
label=
"调课申请"
@
click=
"openForm"
></q-btn>
</div>
<div
class=
"page-body MainPlan xg"
>
<div
class=
"col row wrap q-col-gutter-md"
>
<div
class=
"col-2"
style=
"width: 13%"
>
<el-date-picker
v-model=
"msg.StartTime"
type=
"date"
value-format=
"yyyy-MM-dd"
placeholder=
"开始日期"
size=
"small"
style=
"width: 100%"
@
change=
"refreshPage()"
:picker-options=
"picker"
:clearable=
"false"
>
</el-date-picker>
</div>
<div
class=
"col-2"
style=
"width: 13%"
>
<el-date-picker
v-model=
"msg.EndTime"
type=
"date"
value-format=
"yyyy-MM-dd"
placeholder=
"结束日期"
size=
"small"
style=
"width: 100%"
@
change=
"refreshPage()"
clear-icon=
"iconfont icon-guanbi"
:picker-options=
"pickerEnd"
>
</el-date-picker>
</div>
<classmateForm
:dataList=
"dataList"
v-if=
"commonType == 1"
:loading=
"loading"
></classmateForm>
<change-class-form
v-if=
"persistent"
@
close=
"closeSaveForm"
@
success=
"refreshPage"
></change-class-form>
<teachTable
v-if=
"commonType == 2"
:tableData=
"tableData"
:PageCount=
"PageCount"
:setMsg=
"tabMsg"
:showCZ=
"false"
@
getChange=
"getChange"
:loading=
"loading"
></teachTable>
</div>
</
template
>
<
script
>
import
{
getTeacherDropDownList
,
queryClassRoomList
,
}
from
"../../api/school/index"
;
import
{
GetClassPlanStatistical
,
GetClassPlanStatisticalPage
,
}
from
"../../api/teacher/index"
;
import
{
EduDownLoad
}
from
"../../api/common/common"
;
import
classmateForm
from
"./components/classmateForm"
;
import
teachTable
from
"./components/teachTable"
;
import
changeClassForm
from
"../../components/teacher/changeClassForm.vue"
;
export
default
{
meta
:
{
title
:
"学员预约统计"
,
},
components
:
{
classmateForm
,
teachTable
,
changeClassForm
,
},
data
()
{
return
{
persistent
:
false
,
TeacherList
:
[],
//教师团队
ClassRoomList
:
[],
//
<stuAppointmentList
:tableData=
"tableData"
@
refresh=
"refreshPage"
:loading=
"loading"
></stuAppointmentList>
</div>
</
template
>
<
script
>
import
{
queryPlanAppointmentStatic
,
}
from
"../../api/stuMan/index"
;
import
stuAppointmentList
from
"./components/stuAppointmentList"
;
export
default
{
meta
:
{
title
:
"学员预约统计"
,
},
components
:
{
stuAppointmentList
,
},
data
()
{
return
{
persistent
:
false
,
loading
:
false
,
msg
:
{
StartTime
:
""
,
EndTime
:
""
,
TeacherId
:
0
,
ClassRoomId
:
0
,
dataList
:
{},
activeNames
:
[
1
],
msg
:
{
StartTime
:
""
,
EndTime
:
""
,
TeacherId
:
0
,
ClassRoomId
:
0
,
ClassType
:
0
,
AppointState
:
0
,
},
commonType
:
1
,
//1日历模式 2列表模式
typeName
:
"列表模式"
,
tabMsg
:
{
PageIndex
:
1
,
PageSize
:
12
,
rowsPerPage
:
12
,
StartTime
:
""
,
EndTime
:
""
,
TeacherId
:
0
,
ClassRoomId
:
0
,
ClassType
:
0
,
},
tableData
:
[],
//表格数据
PageCount
:
0
,
picker
:
{
disabledDate
:
(
time
)
=>
{
// let endTime=this.msg.EndTime
// if(endTime){
// return Date.now() - 8.64e7>time.getTime()>=new Date(endTime).getTime()- 8.64e7
// }else{
// return time.getTime()
<
Date
.
now
()
-
8.64e7
// }
},
},
pickerEnd
:
{
disabledDate
:
(
time
)
=>
{
let
startTime
=
this
.
msg
.
StartTime
;
if
(
startTime
)
{
return
time
.
getTime
()
<=
new
Date
(
startTime
).
getTime
()
-
8.64e7
;
}
else
{
return
time
.
getTime
()
<
Date
.
now
()
-
8.64e7
;
}
},
},
loading
:
false
,
};
},
created
()
{
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
ClassType
)
{
this
.
msg
.
ClassType
=
this
.
$route
.
query
.
ClassType
;
}
let
date
=
new
Date
();
let
today
=
date
.
getFullYear
()
+
"-"
+
(
date
.
getMonth
()
<
9
?
"0"
+
(
date
.
getMonth
()
+
1
)
:
date
.
getMonth
()
+
1
)
+
"-"
+
(
date
.
getDate
()
<
10
?
"0"
+
date
.
getDate
()
:
date
.
getDate
());
this
.
msg
.
StartTime
=
today
;
this
.
tabMsg
.
StartTime
=
today
;
this
.
getClassRoomList
();
},
mounted
()
{
this
.
exchangeType
()
this
.
GetTeacherList
();
this
.
getPlanList
();
},
methods
:
{
downLoadPlan
()
{
//导出
var
newMsg
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
msg
));
EduDownLoad
(
"/Class/DownLoadClassPlan"
,
newMsg
,
"老师上课计划.xls"
);
},
refreshPage
()
{
this
.
getPlanList
();
},
openForm
()
{
this
.
persistent
=
true
;
},
closeSaveForm
()
{
this
.
persistent
=
false
;
tableData
:
[],
//表格数据
picker
:
{
disabledDate
:
(
time
)
=>
{},
},
// 获取校区教室导航列表
getPlanList
()
{
GetClassPlanStatistical
(
this
.
msg
).
then
((
res
)
=>
{
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
;
pickerEnd
:
{
disabledDate
:
(
time
)
=>
{
let
startTime
=
this
.
msg
.
StartTime
;
if
(
startTime
)
{
return
time
.
getTime
()
<=
new
Date
(
startTime
).
getTime
()
-
8.64e7
;
}
else
{
return
time
.
getTime
()
<
Date
.
now
()
-
8.64e7
;
}
});
},
//获取教师下拉
GetTeacherList
()
{
getTeacherDropDownList
({}).
then
((
res
)
=>
{
if
(
res
.
Code
==
1
)
{
this
.
TeacherList
=
res
.
Data
;
var
obj
=
{
TeacherName
:
"请选择"
,
TId
:
0
,
};
this
.
TeacherList
.
unshift
(
obj
);
}
});
},
//获取教室下拉
getClassRoomList
()
{
queryClassRoomList
({}).
then
((
res
)
=>
{
if
(
res
.
Code
==
1
)
{
this
.
ClassRoomList
=
res
.
Data
;
var
obj
=
{
RoomName
:
"请选择"
,
RoomId
:
0
,
};
this
.
ClassRoomList
.
unshift
(
obj
);
}
});
},
exchangeType
()
{
if
(
this
.
commonType
==
1
)
{
this
.
commonType
=
2
;
this
.
typeName
=
"日历模式"
;
this
.
getTableList
();
}
else
{
this
.
commonType
=
1
;
this
.
typeName
=
"列表模式"
;
this
.
getPlanList
();
}
},
getTableList
()
{
this
.
tabMsg
.
StartTime
=
this
.
msg
.
StartTime
;
this
.
tabMsg
.
EndTime
=
this
.
msg
.
EndTime
;
this
.
tabMsg
.
ClassRoomId
=
this
.
msg
.
ClassRoomId
;
this
.
tabMsg
.
ClassType
=
this
.
msg
.
ClassType
;
this
.
loading
=
true
;
GetClassPlanStatisticalPage
(
this
.
tabMsg
).
then
((
res
)
=>
{
this
.
loading
=
false
;
if
(
res
.
Code
==
1
)
{
this
.
tableData
=
res
.
Data
.
PageData
;
this
.
PageCount
=
res
.
Data
.
PageCount
;
}
});
},
getChange
(
val
)
{
this
.
tabMsg
.
PageIndex
=
val
;
this
.
getTableList
();
},
},
getTypeWay
()
{
if
(
this
.
commonType
==
2
)
{
this
.
getTableList
();
}
else
{
this
.
getPlanList
();
};
},
created
()
{
let
date
=
new
Date
();
let
today
=
date
.
getFullYear
()
+
"-"
+
(
date
.
getMonth
()
<
9
?
"0"
+
(
date
.
getMonth
()
+
1
)
:
date
.
getMonth
()
+
1
)
+
"-"
+
(
date
.
getDate
()
<
10
?
"0"
+
date
.
getDate
()
:
date
.
getDate
());
this
.
msg
.
StartTime
=
today
;
},
mounted
()
{
this
.
getPlanAppointmentList
();
},
methods
:
{
refreshPage
()
{
this
.
getPlanAppointmentList
();
},
//获取学员预约统计
getPlanAppointmentList
()
{
queryPlanAppointmentStatic
(
this
.
msg
).
then
((
res
)
=>
{
if
(
res
.
Code
==
1
)
{
this
.
tableData
=
res
.
Data
;
}
}
,
}
);
},
};
</
script
>
<
style
lang=
"scss"
>
.xg
.el-input--prefix
.el-input__inner
{
padding-left
:
50px
;
}
.yuyuezhuangtai
.el-input--prefix
.el-input__inner
{
padding-left
:
60px
;
}
</
style
>
\ No newline at end of file
},
};
</
script
>
<
style
lang=
"scss"
>
.xg
.el-input--prefix
.el-input__inner
{
padding-left
:
50px
;
}
.yuyuezhuangtai
.el-input--prefix
.el-input__inner
{
padding-left
:
60px
;
}
</
style
>
\ No newline at end of file
src/pages/stuMan/components/classmateForm.vue
View file @
f8431dd1
...
...
@@ -109,6 +109,7 @@
</
style
>
<
template
>
<div>
1111
<table
class=
"ClassPlanTable plantHead"
style=
"border-collapse:collapse;width:100%;margin:15px 0 0 0;"
>
<thead>
<tr>
...
...
src/pages/stuMan/components/stuAppointmentList.vue
0 → 100644
View file @
f8431dd1
<
template
>
<!--学员预约统计-->
<div
style=
"padding: 20px 0"
>
<div
class=
"page-content"
>
<q-table
:loading=
"loading"
:pagination=
"pageMsg"
no-data-label=
"暂无相关数据"
flat
class=
"sticky-column-table sticky-right-column-table"
:data=
"tableData"
:columns=
"columns"
row-key=
"name"
hide-bottom
>
<template
v-slot:body=
"props"
>
<q-tr
:props=
"props"
>
<q-td
key=
"DateStr"
>
{{
props
.
row
.
DateStr
}}
<br
/>
{{
props
.
row
.
WeekStr
}}
</q-td>
<q-td
key=
"TimeList"
:props=
"props"
>
<div
v-for=
"item in props.row.TimeList"
>
<div
class=
"border-bottom"
>
{{
item
.
StartTime
}}
-
{{
item
.
EndTime
}}
</div>
</div>
</q-td>
<q-td
key=
"Num"
:props=
"props"
>
<div
v-for=
"item in props.row.TimeList"
>
<div
class=
"border-bottom"
style=
"cursor:pointer;color:blue;text-decoration:underline"
@
click=
"ShowStuAppoint(item)"
>
{{
item
.
StuAppointNum
}}
</div>
</div>
</q-td>
</q-tr>
</
template
>
</q-table>
</div>
</div>
</template>
<
script
>
import
{
queryPlanAppointmentDetail
,
}
from
"../../../api/stuMan/index"
;
export
default
{
props
:
{
tableData
:
{
type
:
Array
,
default
:
null
,
},
loading
:
{
type
:
Boolean
,
default
:
false
,
}
},
meta
:
{
title
:
"学员预约统计"
,
},
components
:
{},
data
()
{
return
{
columns
:
[{
name
:
"DateStr"
,
label
:
"日期"
,
field
:
"DateStr"
,
align
:
"left"
,
},
{
name
:
"TimeList"
,
label
:
"时段"
,
field
:
"TimeList"
,
align
:
"left"
,
field
:
row
=>
row
.
TimeList
},
{
name
:
"Num"
,
label
:
"预约人数"
,
field
:
"Num"
,
align
:
"left"
,
field
:
row
=>
row
.
TimeList
},
],
pageMsg
:
{
rowsPerPage
:
1000
},
};
},
created
()
{},
mounted
()
{},
methods
:
{
//翻页
changePage
(
val
)
{
},
//跳转到课程回顾
goCourseRecord
(
item
)
{
this
.
OpenNewUrl
(
"../../classroom/courseInfo"
,
{
id
:
item
.
Id
,
});
},
//跳转到课程反馈
goFeedBack
(
item
)
{
this
.
OpenNewUrl
(
"/teacher/feedBackList"
,
{
id
:
item
.
Id
,
});
},
//显示预约详情
ShowStuAppoint
(
item
)
{
console
.
log
(
"item"
,
item
);
if
(
item
.
PlanAppointmentId
&&
item
.
PlanAppointmentId
>
0
)
{
queryPlanAppointmentDetail
({
PlanAppointmentId
:
item
.
PlanAppointmentId
}).
then
(
res
=>
{
console
.
log
(
"res"
,
res
);
});
}
}
},
};
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
\ No newline at end of file
src/pages/stuMan/components/teachTable.vue
deleted
100644 → 0
View file @
556ed339
<
template
>
<div
style=
"padding: 20px 0"
>
<div
class=
"page-content"
>
<!-- separator="none" -->
<q-table
:pagination=
"setMsg"
:loading=
"loading"
no-data-label=
"暂无相关数据"
flat
class=
"sticky-column-table sticky-right-column-table"
:data=
"tableData"
:columns=
"showCZ ? columns : columns2"
row-key=
"name"
>
<template
v-slot:body-cell-ClassDate=
"props"
>
<q-td
auto-width
:props=
"props"
>
{{
props
.
row
.
ClassDate
}}
</q-td>
</
template
>
<
template
v-slot:body-cell-StartTime=
"props"
>
<q-td
:props=
"props"
>
<div
v-for=
"item in 5"
>
{{
props
.
row
.
StartTime
}}
-
{{
props
.
row
.
EndTime
}}
</div>
</q-td>
</
template
>
<
template
v-slot:body-cell-ClassName=
"props"
>
<q-td
:props=
"props"
>
{{
props
.
row
.
ClassName
}}
</q-td>
</
template
>
<
template
v-slot:bottom
>
<q-pagination
class=
"full-width justify-end"
v-model=
"PageIndex"
color=
"primary"
:max=
"PageCount"
:input=
"true"
@
input=
"changePage"
/>
</
template
>
</q-table>
</div>
</div>
</template>
<
script
>
export
default
{
props
:
{
setMsg
:
{
type
:
Object
,
default
:
null
,
},
tableData
:
{
type
:
Array
,
default
:
null
,
},
PageCount
:
{
type
:
Number
,
default
:
null
,
},
showCZ
:
{
//是否显示操作栏
Type
:
Boolean
,
default
:
true
,
},
loading
:{
type
:
Boolean
,
default
:
false
,
}
},
meta
:
{
title
:
"我的课表"
,
},
components
:
{},
data
()
{
return
{
columns
:
[{
name
:
"ClassDate"
,
label
:
"日期"
,
field
:
"ClassDate"
,
align
:
"left"
,
},
{
name
:
"StartTime"
,
label
:
"上课时间"
,
field
:
"StartTime"
,
align
:
"left"
,
},
{
name
:
"ClassName"
,
label
:
"班级"
,
field
:
"ClassName"
,
align
:
"left"
,
},
{
name
:
"optioned"
,
label
:
"操作"
,
field
:
"Id"
,
},
],
columns2
:
[{
name
:
"ClassDate"
,
label
:
"日期"
,
field
:
"ClassDate"
,
align
:
"left"
,
},
{
name
:
"StartTime"
,
label
:
"时段"
,
field
:
"StartTime"
,
// field: row => row.StartTime,
align
:
"left"
,
},
{
name
:
"ClassName"
,
label
:
"人数"
,
field
:
"ClassName"
,
align
:
"left"
,
}
],
tabMsg
:
{
PageIndex
:
1
,
PageSize
:
15
,
rowsPerPage
:
15
,
StartTime
:
""
,
EndTime
:
""
,
TeacherId
:
0
,
ClassRoomId
:
0
,
ClassType
:
0
,
},
PageIndex
:
1
,
};
},
created
()
{},
mounted
()
{},
methods
:
{
//翻页
changePage
(
val
)
{
this
.
PageIndex
=
val
;
this
.
$emit
(
"getChange"
,
this
.
PageIndex
);
},
//跳转到课程回顾
goCourseRecord
(
item
)
{
this
.
OpenNewUrl
(
"../../classroom/courseInfo"
,
{
id
:
item
.
Id
,
});
},
//跳转到课程反馈
goFeedBack
(
item
)
{
this
.
OpenNewUrl
(
"/teacher/feedBackList"
,
{
id
:
item
.
Id
,
});
},
},
};
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
\ No newline at end of file
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