Commit f19f421a authored by 黄奎's avatar 黄奎

1111

parent f8431dd1
......@@ -208,4 +208,15 @@ export function queryPlanAppointmentDetail(data) {
method: 'post',
data
});
}
\ No newline at end of file
}
/**
* 获取学员课消列表
*/
export function queryStuLearnChapterStatic(data) {
return request({
url: '/Scroll/GetStuLearnChapterStatic',
method: 'post',
data
});
}
......@@ -2,81 +2,53 @@
<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-select v-model="msg.TeacherAccountId" style="width: 100%" placeholder="教师" size="small" @change="refreshPage()">
<el-option v-for="item in TeacherList" :key="item.Id" :label="item.EmployeeName" :value="item.Id" clearable>
</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">
<div class="col-2 flex">
<el-select v-model="msg.CourseId" style="width: 100%" placeholder="课程" size="small" @change="refreshPage()"
clearable>
<el-option v-for="item in CourseList" :key="item.CourseId" :label="item.CourseName" :value="item.CourseId">
</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 class="col-2 flex">
<el-select v-model="msg.CourseRate" style="width: 100%" placeholder="等级" size="small" @change="refreshPage()"
clearable>
<el-option v-for="item in CourseRateList" :key="item.Id" :label="item.Name" :value="item.Id">
</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>
<cancelClassList></cancelClassList>
<cancelClassList :dataList="tableData"></cancelClassList>
</div>
</template>
<script>
import {
getTeacherDropDownList,
queryClassRoomList,
} from "../../api/school/index";
queryStuLearnChapterStatic,
} from "../../api/stuMan/index";
import {
GetClassPlanStatistical,
GetClassPlanStatisticalPage,
} from "../../api/teacher/index";
queryEmployee
} from "../../api/users/user";
import {
EduDownLoad
} from "../../api/common/common";
import cancelClassList from "./components/cancelClassList";
queryCourseDropdownList,
getCourseRate
} from "../../api/course/index";
import cancelClassList from "./components/cancelClassList";
export default {
meta: {
title: "学员消课统计",
......@@ -87,63 +59,19 @@
data() {
return {
persistent: false,
TeacherList: [], //教师团队
ClassRoomList: [], //
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,
TeacherAccountId: "", //老师编号
CourseRate: "", //课程等级
CourseId: "", //课程编号
},
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,
TeacherList: [], //教师团队
CourseList: [], //课程列表
CourseRateList: [], //课程等级
};
},
created() {
if (this.$route.query && this.$route.query.ClassType) {
this.msg.ClassType = this.$route.query.ClassType;
}
let date = new Date();
let today =
date.getFullYear() +
......@@ -153,100 +81,54 @@
date.getMonth() + 1) +
"-" +
(date.getDate() < 10 ? "0" + date.getDate() : date.getDate());
this.msg.StartTime = today;
this.tabMsg.StartTime = today;
this.getClassRoomList();
this.GetTeacherList();
this.getCourseList();
this.queryCourseRate();
},
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;
},
// 获取校区教室导航列表
getPlanList() {
GetClassPlanStatistical(this.msg).then((res) => {
queryStuLearnChapterStatic(this.msg).then((res) => {
if (res.Code == 1) {
this.dataList = res.Data;
this.tableData = res.Data;
}
});
},
//获取教师下拉
GetTeacherList() {
getTeacherDropDownList({}).then((res) => {
var qMsg = {
AccountTypeStr: '2',
IsLeave: 1,
};
queryEmployee(qMsg).then((res) => {
if (res.Code == 1) {
this.TeacherList = res.Data;
var obj = {
TeacherName: "请选择",
TId: 0,
};
this.TeacherList.unshift(obj);
}
});
},
//获取教室下拉
getClassRoomList() {
queryClassRoomList({}).then((res) => {
//获取课程列表
getCourseList() {
queryCourseDropdownList({}).then(res => {
if (res.Code == 1) {
this.ClassRoomList = res.Data;
var obj = {
RoomName: "请选择",
RoomId: 0,
};
this.ClassRoomList.unshift(obj);
this.CourseList = res.Data;
}
});
},
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;
//获取课程等级
queryCourseRate() {
getCourseRate({}).then(res => {
if (res.Code == 1) {
this.tableData = res.Data.PageData;
this.PageCount = res.Data.PageCount;
this.CourseRateList = res.Data;
}
});
},
getChange(val) {
this.tabMsg.PageIndex = val;
this.getTableList();
},
getTypeWay() {
if (this.commonType == 2) {
this.getTableList();
} else {
this.getPlanList();
}
},
})
}
},
};
</script>
......
<template>
<div class="page-cancelClassList-body">
<div class="fit row no-wrap items-start content-start">
<div class="cancelClassList-left col-xl-1 col-lg-1 col-md-2 col-sm-3 col-xs-3">
<div v-for="item in titleList" class="left-text">
{{item.name}}
</div>
<div v-for="item in numList" class="left-text">
{{item.name}}
</div>
<div class="page-cancelClassList-body">
<div class="fit row no-wrap items-start content-start">
<div class="cancelClassList-left col-xl-1 col-lg-1 col-md-2 col-sm-3 col-xs-3">
<div v-for="item in titleList" class="left-text">
{{item.name}}
</div>
<div v-for="item in numList" class="left-text">
{{item.name}}
</div>
<div class="cancelClassList-right col-xl-21 col-lg-21 col-md-20 col-sm-19 col-xs-19">
<div class="cancelClassList-right-box Xscroll fit row no-wrap"
:class="{}">
<div class="right-box" v-for="item in 25">
<div class="content-title courseName activeOne">名称</div>
<div class="content-title teacherName">老师名字</div>
<div class="content-title traineesName activeOne">学员名字</div>
<div class="right-content" v-for="item in 3">
<!-- <div class="content-single activeOne">语音1语音1语音1语音1</div> -->
<div class="content-multiple fit row">
<div class="content-tetx activeOne">理解</div>
<div class="content-tetx activeTwo">活动2</div>
</div>
<div class="content-show">
<div></div>
语音1语音1语音1语音1
</div>
</div>
</div>
</div>
<div class="cancelClassList-right col-xl-21 col-lg-21 col-md-20 col-sm-19 col-xs-19">
<div class="cancelClassList-right-box Xscroll fit row no-wrap" :class="{}">
<div class="right-box" v-for="item in 25">
<div class="content-title courseName activeOne">名称</div>
<div class="content-title teacherName">老师名字</div>
<div class="content-title traineesName activeOne">学员名字</div>
<div class="right-content" v-for="item in 3">
<!-- <div class="content-single activeOne">语音1语音1语音1语音1</div> -->
<div class="content-multiple fit row">
<div class="content-tetx activeOne">理解</div>
<div class="content-tetx activeTwo">活动2</div>
</div>
<div class="content-show">
<div></div>
语音1语音1语音1语音1
</div>
</div>
</div>
</div>
</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 {
titleList:[
{name:'课程名称'},
{name:'课程老师'},
{name:'学员姓名'},
],
numList:[
{name:'1'},
{name:'2'},
{name:'3'}
]
};
},
created() {
},
mounted() {
},
methods: {
</div>
</template>
<script>
export default {
props: {
dataList: {
type: Array,
default: null,
},
};
</script>
<style lang="scss" scoped>
.page-cancelClassList-body{
/* border: 1px solid #E5E5E5; */
margin-top: 20px;
}
.cancelClassList-left{
background: #E5E5E5;
}
.left-text{
width: 100%;
padding: 0 20px;
height: 40px;
line-height: 40px;
border-bottom: 1px solid #DDDEE0;
text-align: center;
font-size: 14px;
}
.left-text:first-child,.left-text:nth-child(2),
.left-text:nth-child(3),.left-text:nth-child(4){
font-weight: bold;
}
.left-text:last-child{
border-bottom: 0;
}
.cancelClassList-right{
overflow: hidden;
}
.courseName{
background: #F8CBAD;
}
.courseName.activeOne{
background: #FFD964;
}
.courseName.activeTwo{
background: #F4B183;
}
.teacherName{
background: #C4C4F5;
}
loading: {
type: Boolean,
default: false,
}
},
meta: {
title: "学员消课统计",
},
components: {
},
data() {
return {
titleList: [{
name: '课程名称'
},
{
name: '课程老师'
},
{
name: '学员姓名'
},
],
numList: [{
name: '1'
},
{
name: '2'
},
{
name: '3'
}
]
};
},
created() {
},
mounted() {
},
methods: {
},
};
</script>
<style lang="scss" scoped>
.page-cancelClassList-body {
.traineesName{
background: #CEF5A5;
}
.traineesName.activeOne{
background: #F5AFAF;
}
.cancelClassList-right-box{
}
.Xscroll{
overflow-x: scroll;
}
.right-box{
display: flex;
flex-direction: column;
font-size: 13px;
}
.content-title:first-child{
border-top: 1px solid #DDDEE0;
}
.content-title{
width: 100%;
padding: 0 5px;
height: 40px;
line-height: 40px;
overflow: hidden;
text-align: center;
border-bottom: 1px solid #DDDEE0;
border-right: 1px solid #DDDEE0;
}
.right-content{
/* display: flex;
margin-top: 20px;
}
.cancelClassList-left {
background: #E5E5E5;
}
.left-text {
width: 100%;
padding: 0 20px;
height: 40px;
line-height: 40px;
border-bottom: 1px solid #DDDEE0;
text-align: center;
font-size: 14px;
}
.left-text:first-child,
.left-text:nth-child(2),
.left-text:nth-child(3),
.left-text:nth-child(4) {
font-weight: bold;
}
.left-text:last-child {
border-bottom: 0;
}
.cancelClassList-right {
overflow: hidden;
}
.courseName {
background: #F8CBAD;
}
.courseName.activeOne {
background: #FFD964;
}
.courseName.activeTwo {
background: #F4B183;
}
.teacherName {
background: #C4C4F5;
}
.traineesName {
background: #CEF5A5;
}
.traineesName.activeOne {
background: #F5AFAF;
}
.cancelClassList-right-box {}
.Xscroll {
overflow-x: scroll;
}
.right-box {
display: flex;
flex-direction: column;
font-size: 13px;
}
.content-title:first-child {
border-top: 1px solid #DDDEE0;
}
.content-title {
width: 100%;
padding: 0 5px;
height: 40px;
line-height: 40px;
overflow: hidden;
text-align: center;
border-bottom: 1px solid #DDDEE0;
border-right: 1px solid #DDDEE0;
}
.right-content {
/* display: flex;
flex-direction: column; */
width: 90px;
height: 40px;
border-bottom: 1px solid #DDDEE0;
border-right: 1px solid #DDDEE0;
position: relative;
cursor: pointer;
}
.right-content:last-child{
border-bottom: 0;
}
.content-single,.content-tetx{
flex: 1;
flex-shrink: 0;
text-align: center;
word-break: break-all;
text-overflow: ellipsis;
display: -webkit-box; /** 对象作为伸缩盒子模型显示 **/
-webkit-box-orient: vertical; /** 设置或检索伸缩盒对象的子元素的排列方式 **/
-webkit-line-clamp: 2; /** 显示的行数 **/
overflow: hidden;
padding: 0 5px;
display: flex;
align-items: center;
justify-content: center;
}
.content-single.activeOne,.content-tetx.activeOne{
background: #6FE053;
}
.content-tetx.activeTwo,.content-tetx.activeTwo{
background: #FA716A;
}
.content-tetx.activeThree,.content-tetx.activeThree{
background: #BDD7EE;
}
.content-tetx{
border-right: 1px solid #DDDEE0;
}
.content-tetx:last-child{
border: 0;
}
.content-multiple{
display: flex;
}
.content-show{
position: absolute;
top: -60px;
left: -50px;
background: #ffffff;
border-radius: 10px;
padding: 10px;
display: none;
background: #fff;
padding: 10px 19px;
box-shadow: 5px 5px 20px 5px #ccc;
}
.content-show div{
width: 0px;
height: 0px;
border: 8px solid transparent;
border-top-color: #ffffff;
position: absolute;
bottom: -15px;
right: 20px;
}
.right-content:hover .content-show{
/* display: block; */
}
</style>
\ No newline at end of file
width: 90px;
height: 40px;
border-bottom: 1px solid #DDDEE0;
border-right: 1px solid #DDDEE0;
position: relative;
cursor: pointer;
}
.right-content:last-child {
border-bottom: 0;
}
.content-single,
.content-tetx {
flex: 1;
flex-shrink: 0;
text-align: center;
word-break: break-all;
text-overflow: ellipsis;
display: -webkit-box;
/** 对象作为伸缩盒子模型显示 **/
-webkit-box-orient: vertical;
/** 设置或检索伸缩盒对象的子元素的排列方式 **/
-webkit-line-clamp: 2;
/** 显示的行数 **/
overflow: hidden;
padding: 0 5px;
display: flex;
align-items: center;
justify-content: center;
}
.content-single.activeOne,
.content-tetx.activeOne {
background: #6FE053;
}
.content-tetx.activeTwo,
.content-tetx.activeTwo {
background: #FA716A;
}
.content-tetx.activeThree,
.content-tetx.activeThree {
background: #BDD7EE;
}
.content-tetx {
border-right: 1px solid #DDDEE0;
}
.content-tetx:last-child {
border: 0;
}
.content-multiple {
display: flex;
}
.content-show {
position: absolute;
top: -60px;
left: -50px;
background: #ffffff;
border-radius: 10px;
padding: 10px;
display: none;
background: #fff;
padding: 10px 19px;
box-shadow: 5px 5px 20px 5px #ccc;
}
.content-show div {
width: 0px;
height: 0px;
border: 8px solid transparent;
border-top-color: #ffffff;
position: absolute;
bottom: -15px;
right: 20px;
}
.right-content:hover .content-show {
/* display: block; */
}
</style>
\ No newline at end of file
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