Commit f8431dd1 authored by 黄奎's avatar 黄奎

1111

parent 556ed339
...@@ -3,7 +3,7 @@ import request from '../../utils/request' ...@@ -3,7 +3,7 @@ import request from '../../utils/request'
/** /**
* 新增修改学员预约配置 * 新增修改学员预约配置
*/ */
export function SetPlanAppointmentConfig(data) { export function SetPlanAppointmentConfig(data) {
return request({ return request({
url: '/PlanAppoiment/SetPlanAppointmentConfig', url: '/PlanAppoiment/SetPlanAppointmentConfig',
method: 'post', method: 'post',
...@@ -14,7 +14,7 @@ import request from '../../utils/request' ...@@ -14,7 +14,7 @@ import request from '../../utils/request'
/** /**
* 获取学员预约配置 * 获取学员预约配置
*/ */
export function PlanAppointmentConfig(data) { export function PlanAppointmentConfig(data) {
return request({ return request({
url: '/PlanAppoiment/PlanAppointmentConfig', url: '/PlanAppoiment/PlanAppointmentConfig',
method: 'post', method: 'post',
...@@ -187,3 +187,25 @@ export function getCoffeeOrderList(data) { ...@@ -187,3 +187,25 @@ export function getCoffeeOrderList(data) {
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
<template> <template>
<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">
<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%"> <div class="col-2" style="width: 13%">
<el-date-picker v-model="msg.StartTime" type="date" value-format="yyyy-MM-dd" placeholder="开始日期" size="small" <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"> style="width: 100%" @change="refreshPage()" :picker-options="picker" :clearable="false">
</el-date-picker> </el-date-picker>
</div> </div>
<div class="col-2" style="width: 13%"> <div class="col-2" style="width: 13%">
<el-date-picker v-model="msg.EndTime" type="date" value-format="yyyy-MM-dd" placeholder="结束日期" size="small" <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"> style="width: 100%" @change="refreshPage()" clear-icon="iconfont icon-guanbi" :picker-options="pickerEnd">
</el-date-picker> </el-date-picker>
</div> </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>
<div class="col-3" style="width: 30%"> <stuAppointmentList :tableData="tableData" @refresh="refreshPage" :loading="loading"></stuAppointmentList>
<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> </template>
<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> <script>
import {
getTeacherDropDownList,
queryClassRoomList,
} from "../../api/school/index";
import { import {
GetClassPlanStatistical, queryPlanAppointmentStatic,
GetClassPlanStatisticalPage, } from "../../api/stuMan/index";
} from "../../api/teacher/index"; import stuAppointmentList from "./components/stuAppointmentList";
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 { export default {
meta: { meta: {
title: "学员预约统计", title: "学员预约统计",
}, },
components: { components: {
classmateForm, stuAppointmentList,
teachTable,
changeClassForm,
}, },
data() { data() {
return { return {
persistent: false, persistent: false,
TeacherList: [], //教师团队 loading: false,
ClassRoomList: [], //
StartTime: "",
EndTime: "",
TeacherId: 0,
ClassRoomId: 0,
dataList: {},
activeNames: [1],
msg: { msg: {
StartTime: "", StartTime: "",
EndTime: "", 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: [], //表格数据 tableData: [], //表格数据
PageCount: 0,
picker: { picker: {
disabledDate: (time) => { 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: { pickerEnd: {
disabledDate: (time) => { disabledDate: (time) => {
...@@ -144,120 +50,38 @@ ...@@ -144,120 +50,38 @@
} }
}, },
}, },
loading: false,
}; };
}, },
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() + "-" +
"-" +
(date.getMonth() < 9 ? (date.getMonth() < 9 ?
"0" + (date.getMonth() + 1) : "0" + (date.getMonth() + 1) :
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.msg.StartTime = today;
this.tabMsg.StartTime = today;
this.getClassRoomList();
}, },
mounted() { mounted() {
this.exchangeType() this.getPlanAppointmentList();
this.GetTeacherList();
this.getPlanList();
}, },
methods: { methods: {
downLoadPlan() {
//导出
var newMsg = JSON.parse(JSON.stringify(this.msg));
EduDownLoad("/Class/DownLoadClassPlan", newMsg, "老师上课计划.xls");
},
refreshPage() { refreshPage() {
this.getPlanList(); this.getPlanAppointmentList();
}, },
openForm() { //获取学员预约统计
this.persistent = true; getPlanAppointmentList() {
}, queryPlanAppointmentStatic(this.msg).then((res) => {
closeSaveForm() {
this.persistent = false;
},
// 获取校区教室导航列表
getPlanList() {
GetClassPlanStatistical(this.msg).then((res) => {
if (res.Code == 1) {
this.dataList = res.Data;
}
});
},
//获取教师下拉
GetTeacherList() {
getTeacherDropDownList({}).then((res) => {
if (res.Code == 1) { if (res.Code == 1) {
this.TeacherList = res.Data; this.tableData = 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();
}
},
}, },
}; };
</script> </script>
<style lang="scss"> <style lang="scss">
.xg .el-input--prefix .el-input__inner { .xg .el-input--prefix .el-input__inner {
padding-left: 50px; padding-left: 50px;
} }
...@@ -265,4 +89,4 @@ ...@@ -265,4 +89,4 @@
.yuyuezhuangtai .el-input--prefix .el-input__inner { .yuyuezhuangtai .el-input--prefix .el-input__inner {
padding-left: 60px; padding-left: 60px;
} }
</style> </style>
\ No newline at end of file \ No newline at end of file
...@@ -109,6 +109,7 @@ ...@@ -109,6 +109,7 @@
</style> </style>
<template> <template>
<div> <div>
1111
<table class="ClassPlanTable plantHead" style="border-collapse:collapse;width:100%;margin:15px 0 0 0;"> <table class="ClassPlanTable plantHead" style="border-collapse:collapse;width:100%;margin:15px 0 0 0;">
<thead> <thead>
<tr> <tr>
......
<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
<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
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