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
86ff8ab8
Commit
86ff8ab8
authored
Apr 08, 2022
by
zhengke
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/luochao/confucius
parents
fa273b87
8b48fdbd
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
435 additions
and
20 deletions
+435
-20
index.js
src/api/teacher/index.js
+13
-0
dayStatic.vue
src/pages/teacher/dayStatic.vue
+51
-20
teacherMonth.vue
src/pages/teacher/teacherMonth.vue
+366
-0
routes.js
src/router/routes.js
+5
-0
No files found.
src/api/teacher/index.js
View file @
86ff8ab8
...
...
@@ -398,6 +398,19 @@ export function GetTeacherDay(data) {
})
}
/**
* 教师月度汇总
* @param {*} data
*/
export
function
GetTeacherMonthStatic
(
data
)
{
return
request
({
url
:
'/TeacherStatic/GetTeacherMonthStatic'
,
method
:
'post'
,
data
})
}
/**
* 获取教师端每月统计
* @param {*} data
...
...
src/pages/teacher/dayStatic.vue
View file @
86ff8ab8
...
...
@@ -27,9 +27,14 @@
</q-field>
</div>
<div
class=
"col-2"
>
<q-select
filled
dense
stack-label
@
input=
"getList"
option-value=
"TId"
@
filter=
"filterTeacherFn"
use-input
option-label=
"TeacherName"
v-model=
"msg.TeacherId"
ref=
"Teacher_Id"
:options=
"TeacherList"
label=
"教师"
clearable
class=
"col-6 q-pr-lg q-pb-lg"
emit-value
map-options
/>
<q-select
filled
dense
stack-label
@
input=
"GetTeacherList(),getList()"
option-value=
"Id"
option-label=
"Name"
v-model=
"msg.DeptId"
ref=
"Teacher_Id"
:options=
"deptList"
label=
"语种"
clearable
class=
"col-6 q-pr-lg q-pb-lg"
emit-value
map-options
/>
</div>
<div
class=
"col-2"
>
<q-select
filled
dense
stack-label
@
input=
"getList"
option-value=
"TId"
@
filter=
"filterTeacherFn"
use-input
option-label=
"TeacherName"
v-model=
"msg.TeacherId"
ref=
"Teacher_Id"
:options=
"TeacherList"
label=
"教师"
clearable
class=
"col-6 q-pr-lg q-pb-lg"
emit-value
map-options
/>
</div>
</div>
<div
style=
"float:right;"
>
...
...
@@ -64,42 +69,50 @@
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='老师迟到早退'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#FF66CC;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#FF66CC;color:#000;"
>
老师
<br
/>
迟到早退
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='N5课程时数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#E2EFDA;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#E2EFDA;color:#000;"
>
N5
<br
/>
课程时数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='N4课程时数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#E2EFDA;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#E2EFDA;color:#000;"
>
N4
<br
/>
课程时数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='N3课程时数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#E2EFDA;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#E2EFDA;color:#000;"
>
N3
<br
/>
课程时数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='N2课程时数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#B4C6E7;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#B4C6E7;color:#000;"
>
N2
<br
/>
课程时数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='N1课程时数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#B4C6E7;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#B4C6E7;color:#000;"
>
N1
<br
/>
课程时数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='学生小程序刷题次数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:75px;text-align:center;background-color:#B4C6E7;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:75px;text-align:center;background-color:#B4C6E7;color:#000;"
>
学生小程序
<br
/>
刷题次数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='学生小程序刷题时间'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:75px;text-align:center;background-color:#B4C6E7;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:75px;text-align:center;background-color:#B4C6E7;color:#000;"
>
学生小程序
<br
/>
刷题时间
</q-th>
</
template
>
...
...
@@ -109,17 +122,20 @@
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='所有老师平均分数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:70px;text-align:center;background-color:#FFC000;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:70px;text-align:center;background-color:#FFC000;color:#000;"
>
所有老师
<br
/>
平均分数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='总分数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:70px;text-align:center;background-color:#FFC000;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:70px;text-align:center;background-color:#FFC000;color:#000;"
>
总分数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='分数差距'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:70px;text-align:center;background-color:#FFC000;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:70px;text-align:center;background-color:#FFC000;color:#000;"
>
分数差距
</q-th>
</
template
>
...
...
@@ -302,12 +318,22 @@
msg
:
{
YearStr
:
''
,
MonthStr
:
''
,
TeacherId
:
''
,
rowsPerPage
:
0
TeacherId
:
''
,
rowsPerPage
:
0
,
DeptId
:
8
,
},
teacher
:
0
,
AllTeacherList
:[],
TeacherList
:[]
//教师数据
deptList
:
[{
Id
:
8
,
Name
:
"日语"
},
{
Id
:
14
,
Name
:
"韩语"
},
],
teacher
:
0
,
AllTeacherList
:
[],
TeacherList
:
[]
//教师数据
}
},
created
()
{
...
...
@@ -326,7 +352,12 @@
methods
:
{
//获取教师下拉
GetTeacherList
()
{
getTeacherDropDownList
({}).
then
(
res
=>
{
this
.
msg
.
TeacherId
=
""
;
var
qMsg
=
{
NotQueryTIds
:
"5,10,15,20"
,
Dept_Id
:
this
.
msg
.
DeptId
,
}
getTeacherDropDownList
(
qMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
TeacherList
=
res
.
Data
;
this
.
AllTeacherList
=
res
.
Data
;
...
...
src/pages/teacher/teacherMonth.vue
0 → 100644
View file @
86ff8ab8
<
style
>
.Sysuser_Date
.el-input__inner
{
background
:
transparent
!important
;
border
:
0
!important
;
}
.myTable_Zk
tbody
tr
:first-child
td
{
background
:
yellow
!important
;
}
.myTable_Zk
tbody
tr
:first-child
{
background
:
yellow
!important
;
z-index
:
1
!important
;
}
</
style
>
<
template
>
<div
class=
"page-body"
>
<div
class=
"col row wrap q-mb-lg"
style=
"justify-content:space-between;"
>
<div
class=
"col row wrap"
>
<div
class=
"col-2 Sysuser_Date q-mr-lg"
>
<q-field
filled
dense
>
<template
v-slot:control
>
<el-date-picker
v-model=
"myDate"
style=
"width:100%"
value-format=
"yyyy-MM"
@
change=
"getCheckDate()"
size=
"mini"
type=
"month"
placeholder=
"选择年月"
>
</el-date-picker>
</
template
>
</q-field>
</div>
</div>
<div
style=
"float:right;"
>
<q-btn
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"download"
style=
"margin-top:15px;"
@
click=
"downloadStudentStatic"
label=
"下载"
/>
</div>
</div>
<div
class=
"page-content"
>
<q-table
:pagination=
"msg"
ref=
"table"
:loading=
"loading"
:style=
"{'height':tableHeight+'px'}"
no-data-label=
"暂无相关数据"
flat
class=
"sticky-column-table sticky-header-column-table no-bottom-table myTable_Zk"
separator=
"none"
:data=
"dataList"
:columns=
"columns"
row-key=
""
>
<q-tr
slot=
"header"
slot-scope=
"props"
:props=
"props"
>
<
template
v-for=
"col in props.cols"
:props=
"props"
>
<template
v-if=
"col.label=='线上与学生互动数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:75px;text-align:center;"
>
线上与学生
<br
/>
互动数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='续约(含留学)'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;"
>
续约
<br
/>
(含留学)
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='学生退课'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"background-color:#FF66CC;color:#000;"
>
学生退课
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='学生投诉'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"background-color:#FF66CC;color:#000;"
>
学生投诉
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='老师迟到早退'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#FF66CC;color:#000;"
>
老师
<br
/>
迟到早退
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='N5课程时数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#E2EFDA;color:#000;"
>
N5
<br
/>
课程时数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='N4课程时数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#E2EFDA;color:#000;"
>
N4
<br
/>
课程时数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='N3课程时数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#E2EFDA;color:#000;"
>
N3
<br
/>
课程时数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='N2课程时数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#B4C6E7;color:#000;"
>
N2
<br
/>
课程时数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='N1课程时数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#B4C6E7;color:#000;"
>
N1
<br
/>
课程时数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='学生小程序刷题次数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:75px;text-align:center;background-color:#B4C6E7;color:#000;"
>
学生小程序
<br
/>
刷题次数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='学生小程序刷题时间'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:75px;text-align:center;background-color:#B4C6E7;color:#000;"
>
学生小程序
<br
/>
刷题时间
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='活动次数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"background-color:#B4C6E7;color:#000;"
>
活动次数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='所有老师平均分数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:70px;text-align:center;background-color:#FFC000;color:#000;"
>
所有老师
<br
/>
平均分数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='总分数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:70px;text-align:center;background-color:#FFC000;color:#000;"
>
总分数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='分数差距'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:70px;text-align:center;background-color:#FFC000;color:#000;"
>
分数差距
</q-th>
</
template
>
<
template
v-else
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:70px"
>
{{
col
.
label
}}
</q-th>
</
template
>
</template>
</q-tr>
<
template
v-slot:bottom
>
</
template
>
</q-table>
</div>
</div>
</template>
<
script
>
import
{
GetTeacherMonthStatic
}
from
'../../api/teacher/index'
;
import
{
EduDownLoad
}
from
"../../api/common/common"
;
export
default
{
props
:
{},
meta
:
{
title
:
"教师月度汇总"
},
components
:
{},
data
()
{
return
{
columns
:
[{
name
:
'DateStr'
,
label
:
'日期'
,
field
:
'DateStr'
,
align
:
'left'
},
{
name
:
'StudentCount'
,
label
:
'学生人数'
,
field
:
'StudentCount'
,
align
:
'left'
},
{
name
:
'AttendClassHourScore'
,
label
:
'上课时数'
,
field
:
'AttendClassHourScore'
,
align
:
'left'
,
},
{
name
:
'OnLineInteractiveScore'
,
label
:
'线上与学生互动数'
,
field
:
'OnLineInteractiveScore'
,
align
:
'left'
,
style
:
'max-width: 50px'
,
},
{
name
:
'RenewScore'
,
label
:
'续约(含留学)'
,
field
:
'RenewScore'
,
align
:
'left'
},
{
name
:
'UpgradeScore'
,
label
:
'学生升级'
,
field
:
'UpgradeScore'
,
align
:
'left'
},
{
name
:
'TransScore'
,
label
:
'转介绍'
,
field
:
'TransScore'
,
align
:
'left'
},
{
name
:
'TrialSpeakScore'
,
label
:
'试讲'
,
field
:
'TrialSpeakScore'
,
align
:
'left'
},
{
name
:
'TruancyScore'
,
label
:
'学生旷课'
,
field
:
'TruancyScore'
,
align
:
'left'
},
{
name
:
'WithdrawsScore'
,
label
:
'学生退课'
,
field
:
'WithdrawsScore'
,
align
:
'left'
},
{
name
:
'ComplaintScore'
,
label
:
'学生投诉'
,
field
:
'ComplaintScore'
,
align
:
'left'
},
{
name
:
'TeacherBeLateScore'
,
label
:
'老师迟到早退'
,
field
:
'TeacherBeLateScore'
,
align
:
'left'
},
{
name
:
'N5ClassHoursScore'
,
label
:
'N5课程时数'
,
field
:
'N5ClassHoursScore'
,
align
:
'left'
},
{
name
:
'N4ClassHoursScore'
,
label
:
'N4课程时数'
,
field
:
'N4ClassHoursScore'
,
align
:
'left'
},
{
name
:
'N3ClassHoursScore'
,
label
:
'N3课程时数'
,
field
:
'N3ClassHoursScore'
,
align
:
'left'
},
{
name
:
'N2ClassHoursScore'
,
label
:
'N2课程时数'
,
field
:
'N2ClassHoursScore'
,
align
:
'left'
},
{
name
:
'N1ClassHoursScore'
,
label
:
'N1课程时数'
,
field
:
'N1ClassHoursScore'
,
align
:
'left'
},
{
name
:
'MiniAppPractiseScore'
,
label
:
'学生小程序刷题次数'
,
field
:
'MiniAppPractiseScore'
,
align
:
'left'
},
{
name
:
'MiniAppTimeScore'
,
label
:
'学生小程序刷题时间'
,
field
:
'MiniAppTimeScore'
,
align
:
'left'
},
{
name
:
'ActivityNum'
,
label
:
'活动次数'
,
field
:
'ActivityNum'
,
align
:
'left'
},
{
name
:
'TotalScore'
,
label
:
'总分数'
,
field
:
'TotalScore'
,
align
:
'left'
},
{
name
:
'AvgScore'
,
label
:
'所有老师平均分数'
,
field
:
'AvgScore'
,
align
:
'left'
},
{
name
:
'ScoreGap'
,
label
:
'分数差距'
,
field
:
'ScoreGap'
,
align
:
'left'
}
],
dataList
:
[],
loading
:
false
,
myDate
:
''
,
tableHeight
:
500
,
msg
:
{
YearStr
:
''
,
MonthStr
:
''
,
rowsPerPage
:
0
,
},
}
},
created
()
{
setTimeout
(()
=>
{
this
.
tableHeight
=
window
.
innerHeight
-
this
.
$refs
.
table
.
$el
.
offsetTop
-
90
;
},
100
)
},
mounted
()
{
let
d
=
new
Date
();
this
.
msg
.
YearStr
=
d
.
getFullYear
().
toString
();
this
.
msg
.
MonthStr
=
(
d
.
getMonth
()
+
1
).
toString
();
this
.
myDate
=
this
.
msg
.
YearStr
+
'-'
+
this
.
msg
.
MonthStr
this
.
GetTeacherList
();
this
.
getList
();
},
methods
:
{
//下载数据
downloadStudentStatic
()
{
this
.
loading
=
true
;
var
msg
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
msg
));
EduDownLoad
(
"/TeacherStatic/DownLoadTeacherDay"
,
msg
,
"教师每日数据统计.xls"
,
res
=>
{
this
.
loading
=
false
;
}
);
},
getCheckDate
()
{
if
(
this
.
myDate
)
{
this
.
msg
.
YearStr
=
this
.
myDate
.
split
(
'-'
)[
0
];
this
.
msg
.
MonthStr
=
this
.
myDate
.
split
(
'-'
)[
1
];
this
.
getList
();
}
},
//获取数据
getList
()
{
this
.
loading
=
true
;
GetTeacherMonthStatic
(
this
.
msg
).
then
(
res
=>
{
this
.
loading
=
false
;
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
;
}
})
}
}
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
\ No newline at end of file
src/router/routes.js
View file @
86ff8ab8
...
...
@@ -1421,6 +1421,11 @@ const routes = [{
component
:
()
=>
import
(
"pages/teacher/dayStatic"
)
},
{
path
:
"/teacher/teacherMonth"
,
//教师月度统计排名
component
:
()
=>
import
(
"pages/teacher/teacherMonth"
)
},
{
path
:
"/teacher/monthStatic"
,
//教师月度统计
component
:
()
=>
...
...
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