Commit f19f421a authored by 黄奎's avatar 黄奎

1111

parent f8431dd1
...@@ -209,3 +209,14 @@ export function queryPlanAppointmentDetail(data) { ...@@ -209,3 +209,14 @@ export function queryPlanAppointmentDetail(data) {
data data
}); });
} }
/**
* 获取学员课消列表
*/
export function queryStuLearnChapterStatic(data) {
return request({
url: '/Scroll/GetStuLearnChapterStatic',
method: 'post',
data
});
}
...@@ -2,81 +2,53 @@ ...@@ -2,81 +2,53 @@
<div class="page-body MainPlan xg"> <div class="page-body MainPlan xg">
<div class="col row wrap q-col-gutter-md"> <div class="col row wrap q-col-gutter-md">
<div class="col-2 flex"> <div class="col-2 flex">
<el-select v-model="msg.TeacherId" style="width: 100%" placeholder="教师" size="small" @change="getPlanList()"> <el-select v-model="msg.TeacherAccountId" style="width: 100%" placeholder="教师" size="small" @change="refreshPage()">
<el-option v-for="item in TeacherList" :key="item.TeacherName" :label="item.TeacherName" :value="item.TId"> <el-option v-for="item in TeacherList" :key="item.Id" :label="item.EmployeeName" :value="item.Id" clearable>
</el-option> </el-option>
<div slot="prefix" class="full-height flex items-center" style="color: #000; padding-right: 10px"> <div slot="prefix" class="full-height flex items-center" style="color: #000; padding-right: 10px">
教师: 教师:
</div> </div>
</el-select> </el-select>
</div> </div>
<div class="col-2"> <div class="col-2 flex">
<el-select v-model="msg.ClassRoomId" style="width: 100%" placeholder="教室" size="small" @change="getTypeWay()"> <el-select v-model="msg.CourseId" style="width: 100%" placeholder="课程" size="small" @change="refreshPage()"
<el-option v-for="item in ClassRoomList" :key="item.RoomName" :label="item.RoomName" :value="item.RoomId"> clearable>
<el-option v-for="item in CourseList" :key="item.CourseId" :label="item.CourseName" :value="item.CourseId">
</el-option> </el-option>
<div slot="prefix" class="full-height flex items-center" style="color: #000; padding-right: 10px"> <div slot="prefix" class="full-height flex items-center" style="color: #000; padding-right: 10px">
教室: 课程:
</div> </div>
</el-select> </el-select>
</div> </div>
<div class="col-2" style="width: 13%"> <div class="col-2 flex">
<el-date-picker v-model="msg.StartTime" type="date" value-format="yyyy-MM-dd" placeholder="开始日期" size="small" <el-select v-model="msg.CourseRate" style="width: 100%" placeholder="等级" size="small" @change="refreshPage()"
style="width: 100%" @change="getTypeWay()" :picker-options="picker" :clearable="false"> clearable>
</el-date-picker> <el-option v-for="item in CourseRateList" :key="item.Id" :label="item.Name" :value="item.Id">
</div> </el-option>
<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 slot="prefix" class="full-height flex items-center" style="color: #000; padding-right: 10px">
类型: 等级:
</div> </div>
</el-select> </el-select>
</div> </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>
</div> <cancelClassList :dataList="tableData"></cancelClassList>
<cancelClassList></cancelClassList>
</div> </div>
</template> </template>
<script> <script>
import { import {
getTeacherDropDownList, queryStuLearnChapterStatic,
queryClassRoomList, } from "../../api/stuMan/index";
} from "../../api/school/index";
import { import {
GetClassPlanStatistical, queryEmployee
GetClassPlanStatisticalPage, } from "../../api/users/user";
} from "../../api/teacher/index";
import { import {
EduDownLoad queryCourseDropdownList,
} from "../../api/common/common"; getCourseRate
import cancelClassList from "./components/cancelClassList"; } from "../../api/course/index";
import cancelClassList from "./components/cancelClassList";
export default { export default {
meta: { meta: {
title: "学员消课统计", title: "学员消课统计",
...@@ -87,63 +59,19 @@ ...@@ -87,63 +59,19 @@
data() { data() {
return { return {
persistent: false, persistent: false,
TeacherList: [], //教师团队
ClassRoomList: [], //
StartTime: "",
EndTime: "",
TeacherId: 0,
ClassRoomId: 0,
dataList: {},
activeNames: [1],
msg: { msg: {
StartTime: "", TeacherAccountId: "", //老师编号
EndTime: "", CourseRate: "", //课程等级
TeacherId: 0, CourseId: "", //课程编号
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: [], //表格数据 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, loading: false,
TeacherList: [], //教师团队
CourseList: [], //课程列表
CourseRateList: [], //课程等级
}; };
}, },
created() { created() {
if (this.$route.query && this.$route.query.ClassType) {
this.msg.ClassType = this.$route.query.ClassType;
}
let date = new Date(); let date = new Date();
let today = let today =
date.getFullYear() + date.getFullYear() +
...@@ -153,101 +81,55 @@ ...@@ -153,101 +81,55 @@
date.getMonth() + 1) + date.getMonth() + 1) +
"-" + "-" +
(date.getDate() < 10 ? "0" + date.getDate() : date.getDate()); (date.getDate() < 10 ? "0" + date.getDate() : date.getDate());
this.msg.StartTime = today;
this.tabMsg.StartTime = today; this.GetTeacherList();
this.getClassRoomList(); this.getCourseList();
this.queryCourseRate();
}, },
mounted() { mounted() {
this.exchangeType()
this.GetTeacherList();
this.getPlanList(); this.getPlanList();
}, },
methods: { methods: {
downLoadPlan() {
//导出
var newMsg = JSON.parse(JSON.stringify(this.msg));
EduDownLoad("/Class/DownLoadClassPlan", newMsg, "老师上课计划.xls");
},
refreshPage() { refreshPage() {
this.getPlanList(); this.getPlanList();
}, },
openForm() {
this.persistent = true;
},
closeSaveForm() {
this.persistent = false;
},
// 获取校区教室导航列表 // 获取校区教室导航列表
getPlanList() { getPlanList() {
GetClassPlanStatistical(this.msg).then((res) => { queryStuLearnChapterStatic(this.msg).then((res) => {
if (res.Code == 1) { if (res.Code == 1) {
this.dataList = res.Data; this.tableData = res.Data;
} }
}); });
}, },
//获取教师下拉 //获取教师下拉
GetTeacherList() { GetTeacherList() {
getTeacherDropDownList({}).then((res) => { var qMsg = {
AccountTypeStr: '2',
IsLeave: 1,
};
queryEmployee(qMsg).then((res) => {
if (res.Code == 1) { if (res.Code == 1) {
this.TeacherList = res.Data; this.TeacherList = res.Data;
var obj = {
TeacherName: "请选择",
TId: 0,
};
this.TeacherList.unshift(obj);
} }
}); });
}, },
//获取教室下拉 //获取课程列表
getClassRoomList() { getCourseList() {
queryClassRoomList({}).then((res) => { queryCourseDropdownList({}).then(res => {
if (res.Code == 1) { if (res.Code == 1) {
this.ClassRoomList = res.Data; this.CourseList = res.Data;
var obj = {
RoomName: "请选择",
RoomId: 0,
};
this.ClassRoomList.unshift(obj);
} }
}); });
}, },
exchangeType() { //获取课程等级
if (this.commonType == 1) { queryCourseRate() {
this.commonType = 2; getCourseRate({}).then(res => {
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) { if (res.Code == 1) {
this.tableData = res.Data.PageData; this.CourseRateList = res.Data;
this.PageCount = res.Data.PageCount;
} }
}); })
},
getChange(val) {
this.tabMsg.PageIndex = val;
this.getTableList();
},
getTypeWay() {
if (this.commonType == 2) {
this.getTableList();
} else {
this.getPlanList();
} }
}, },
},
}; };
</script> </script>
<style lang="scss"> <style lang="scss">
......
...@@ -10,8 +10,7 @@ ...@@ -10,8 +10,7 @@
</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 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" <div class="cancelClassList-right-box Xscroll fit row no-wrap" :class="{}">
:class="{}">
<div class="right-box" v-for="item in 25"> <div class="right-box" v-for="item in 25">
<div class="content-title courseName activeOne">名称</div> <div class="content-title courseName activeOne">名称</div>
<div class="content-title teacherName">老师名字</div> <div class="content-title teacherName">老师名字</div>
...@@ -32,31 +31,20 @@ ...@@ -32,31 +31,20 @@
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
props: { props: {
setMsg: {
type: Object, dataList: {
default: null,
},
tableData: {
type: Array, type: Array,
default: null, default: null,
}, },
PageCount: {
type: Number, loading: {
default: null, type: Boolean,
}, default: false,
showCZ: {
//是否显示操作栏
Type: Boolean,
default: true,
},
loading:{
type:Boolean,
default:false,
} }
}, },
meta: { meta: {
...@@ -67,15 +55,25 @@ ...@@ -67,15 +55,25 @@
}, },
data() { data() {
return { return {
titleList:[ titleList: [{
{name:'课程名称'}, name: '课程名称'
{name:'课程老师'}, },
{name:'学员姓名'}, {
name: '课程老师'
},
{
name: '学员姓名'
},
], ],
numList:[ numList: [{
{name:'1'}, name: '1'
{name:'2'}, },
{name:'3'} {
name: '2'
},
{
name: '3'
}
] ]
}; };
}, },
...@@ -89,16 +87,18 @@ ...@@ -89,16 +87,18 @@
}, },
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.page-cancelClassList-body{ .page-cancelClassList-body {
/* border: 1px solid #E5E5E5; */
margin-top: 20px; margin-top: 20px;
} }
.cancelClassList-left{
.cancelClassList-left {
background: #E5E5E5; background: #E5E5E5;
} }
.left-text{
.left-text {
width: 100%; width: 100%;
padding: 0 20px; padding: 0 20px;
height: 40px; height: 40px;
...@@ -107,51 +107,63 @@ ...@@ -107,51 +107,63 @@
text-align: center; text-align: center;
font-size: 14px; font-size: 14px;
} }
.left-text:first-child,.left-text:nth-child(2),
.left-text:nth-child(3),.left-text:nth-child(4){ .left-text:first-child,
.left-text:nth-child(2),
.left-text:nth-child(3),
.left-text:nth-child(4) {
font-weight: bold; font-weight: bold;
} }
.left-text:last-child{
.left-text:last-child {
border-bottom: 0; border-bottom: 0;
} }
.cancelClassList-right{
.cancelClassList-right {
overflow: hidden; overflow: hidden;
} }
.courseName{
.courseName {
background: #F8CBAD; background: #F8CBAD;
} }
.courseName.activeOne{
.courseName.activeOne {
background: #FFD964; background: #FFD964;
} }
.courseName.activeTwo{
.courseName.activeTwo {
background: #F4B183; background: #F4B183;
} }
.teacherName{ .teacherName {
background: #C4C4F5; background: #C4C4F5;
} }
.traineesName{ .traineesName {
background: #CEF5A5; background: #CEF5A5;
} }
.traineesName.activeOne{
.traineesName.activeOne {
background: #F5AFAF; background: #F5AFAF;
} }
.cancelClassList-right-box{
} .cancelClassList-right-box {}
.Xscroll{
.Xscroll {
overflow-x: scroll; overflow-x: scroll;
} }
.right-box{
.right-box {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
font-size: 13px; font-size: 13px;
} }
.content-title:first-child{
.content-title:first-child {
border-top: 1px solid #DDDEE0; border-top: 1px solid #DDDEE0;
} }
.content-title{
.content-title {
width: 100%; width: 100%;
padding: 0 5px; padding: 0 5px;
height: 40px; height: 40px;
...@@ -161,7 +173,8 @@ ...@@ -161,7 +173,8 @@
border-bottom: 1px solid #DDDEE0; border-bottom: 1px solid #DDDEE0;
border-right: 1px solid #DDDEE0; border-right: 1px solid #DDDEE0;
} }
.right-content{
.right-content {
/* display: flex; /* display: flex;
flex-direction: column; */ flex-direction: column; */
width: 90px; width: 90px;
...@@ -171,43 +184,59 @@ ...@@ -171,43 +184,59 @@
position: relative; position: relative;
cursor: pointer; cursor: pointer;
} }
.right-content:last-child{
.right-content:last-child {
border-bottom: 0; border-bottom: 0;
} }
.content-single,.content-tetx{
.content-single,
.content-tetx {
flex: 1; flex: 1;
flex-shrink: 0; flex-shrink: 0;
text-align: center; text-align: center;
word-break: break-all; word-break: break-all;
text-overflow: ellipsis; text-overflow: ellipsis;
display: -webkit-box; /** 对象作为伸缩盒子模型显示 **/ display: -webkit-box;
-webkit-box-orient: vertical; /** 设置或检索伸缩盒对象的子元素的排列方式 **/ /** 对象作为伸缩盒子模型显示 **/
-webkit-line-clamp: 2; /** 显示的行数 **/ -webkit-box-orient: vertical;
/** 设置或检索伸缩盒对象的子元素的排列方式 **/
-webkit-line-clamp: 2;
/** 显示的行数 **/
overflow: hidden; overflow: hidden;
padding: 0 5px; padding: 0 5px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
.content-single.activeOne,.content-tetx.activeOne{
.content-single.activeOne,
.content-tetx.activeOne {
background: #6FE053; background: #6FE053;
} }
.content-tetx.activeTwo,.content-tetx.activeTwo{
.content-tetx.activeTwo,
.content-tetx.activeTwo {
background: #FA716A; background: #FA716A;
} }
.content-tetx.activeThree,.content-tetx.activeThree{
.content-tetx.activeThree,
.content-tetx.activeThree {
background: #BDD7EE; background: #BDD7EE;
} }
.content-tetx{
.content-tetx {
border-right: 1px solid #DDDEE0; border-right: 1px solid #DDDEE0;
} }
.content-tetx:last-child{
.content-tetx:last-child {
border: 0; border: 0;
} }
.content-multiple{
.content-multiple {
display: flex; display: flex;
} }
.content-show{
.content-show {
position: absolute; position: absolute;
top: -60px; top: -60px;
left: -50px; left: -50px;
...@@ -219,7 +248,8 @@ ...@@ -219,7 +248,8 @@
padding: 10px 19px; padding: 10px 19px;
box-shadow: 5px 5px 20px 5px #ccc; box-shadow: 5px 5px 20px 5px #ccc;
} }
.content-show div{
.content-show div {
width: 0px; width: 0px;
height: 0px; height: 0px;
border: 8px solid transparent; border: 8px solid transparent;
...@@ -228,7 +258,8 @@ ...@@ -228,7 +258,8 @@
bottom: -15px; bottom: -15px;
right: 20px; right: 20px;
} }
.right-content:hover .content-show{
.right-content:hover .content-show {
/* display: block; */ /* display: block; */
} }
</style> </style>
\ No newline at end of file \ 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