Commit 86ff8ab8 authored by zhengke's avatar zhengke
parents fa273b87 8b48fdbd
......@@ -398,6 +398,19 @@ export function GetTeacherDay(data) {
})
}
/**
* 教师月度汇总
* @param {*} data
*/
export function GetTeacherMonthStatic(data) {
return request({
url: '/TeacherStatic/GetTeacherMonthStatic',
method: 'post',
data
})
}
/**
* 获取教师端每月统计
* @param {*} data
......
......@@ -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;
......
<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
......@@ -1421,6 +1421,11 @@ const routes = [{
component: () =>
import("pages/teacher/dayStatic")
},
{
path: "/teacher/teacherMonth", //教师月度统计排名
component: () =>
import("pages/teacher/teacherMonth")
},
{
path: "/teacher/monthStatic", //教师月度统计
component: () =>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment