Commit b4394b76 authored by youjie's avatar youjie
parents aa6c1257 0fa4d329
......@@ -87,7 +87,6 @@
.q-field__prepend {
padding-right: 0px !important;
}
</style>
<template>
<q-dialog v-model="persistent" content-class="bg-grey-1" persistent transition-show="scale">
......@@ -362,9 +361,21 @@
saveConsult() {
this.$refs.PlanName.validate();
if (!this.$refs.PlanName.hasError) {
if (this.SaleIdsArray && this.SaleIdsArray.length > 0) {
this.objOption.SaleIds = this.SaleIdsArray.toString();
} else {
this.objOption.SaleIds = "";
}
if (this.UseCourseIdsArray && this.UseCourseIdsArray.length > 0) {
this.objOption.UseCourseIds = this.UseCourseIdsArray.toString();
} else {
this.objOption.UseCourseIds = "";
}
if (this.NotUseCourseIdsArray && this.NotUseCourseIdsArray.length > 0) {
this.objOption.NotUseCourseIds = this.NotUseCourseIdsArray.toString();
} else {
this.objOption.NotUseCourseIds = '';
}
this.saveLoading = true;
SetBounsPlan(this.objOption).then(res => {
this.saveLoading = false;
......@@ -389,5 +400,4 @@
}
},
}
</script>
\ No newline at end of file
This diff is collapsed.
......@@ -33,6 +33,15 @@
</q-item-section>
</q-item>
</template>
<template v-slot:option="scope">
<q-item v-bind="scope.itemProps" v-on="scope.itemEvents">
<q-item-section>
<q-item-label class="row flex justify-between">
<span>{{scope.opt.CourseName}}</span><span> 最小成班人数 {{ scope.opt.ScrollMinNum}}</span>
</q-item-label>
</q-item-section>
</q-item>
</template>
</q-select>
<select-tree v-show="saveMsg.CourseId > 0 && editType == 1" :treeData="chapterList"
:defaultArray="returnString" nodeKey="ChapterId" labelKey="ChapterName" childrenKey="ChildList"
......@@ -99,7 +108,7 @@
</q-field>
</template>
<div class="row col-12" v-if="(saveObj&& saveObj.ClassType==3)||editType==1">
<div class="row col-12" >
<div class="row col-12">
<div class="col-9">
<q-select filled stack-label use-input option-value="StuId" option-label="StuName" v-model="stuInfo"
ref="StuId" :options="stuList" label="学员列表" :dense="false" class="col-6" @filter="filterStu"
......@@ -161,9 +170,9 @@
{{item.CourseName}}
</td>
<td>
<template v-if="item.AppointmentId==0">
{{item.CourseChapterNoName}}
</template>
{{item.FinishChapterNoName}}
</td>
<td>
<template v-if="item.AppointmentId>0">
......@@ -187,10 +196,8 @@
</template>
</td>
<td width="60px">
<q-btn size="8px" class="SurverDel"
@click="DeleteStu(index)"
round color="red"
icon="iconfont icon-shanchu" />
<q-btn size="8px" class="SurverDel" v-if="item.AppointmentId==0" @click="DeleteStu(index)"
round color="red" icon="iconfont icon-shanchu" />
</td>
</tr>
</tbody>
......@@ -332,6 +339,7 @@
LearnCourseId: gItem.LearnCourseId,
CourseName: gItem.LearnCourseName,
CourseGradeNo: gItem.CourseGradeNo,
FinishChapterNoName: gItem.FinishChapterNoName,
CourseChapterNoName: gItem.CourseChapterNoName,
AppointmentId: gItem.AppointmentId,
CourseGradeId: gItem.CourseGradeId,
......@@ -572,7 +580,7 @@
})
return;
}
if(!this.saveMsg.ChapterNo){
if (!this.saveMsg.ChapterNo) {
this.$q.notify({
type: 'negative',
position: "top",
......@@ -580,7 +588,7 @@
})
return;
}
if(!this.saveMsg.TeacherId){
if (!this.saveMsg.TeacherId) {
this.$q.notify({
type: 'negative',
position: "top",
......@@ -644,7 +652,7 @@
GuestId: this.stuInfo.GuestId,
LearnCourseId: this.stuInfo.CourseId,
CourseName: this.stuInfo.CourseName,
CourseChapterNoName: this.stuInfo.CourseChapterNoName,
FinishChapterNoName: this.stuInfo.FinishChapterNoName,
AppointmentId: 0,
//学员消课编号
CourseChapterList: [],
......@@ -653,79 +661,87 @@
sObj.CourseGradeNo = "";
// 对比是否存在改学员
if(this.saveMsg.ChooseStuList.length>0){
let ArrId = this.saveMsg.ChooseStuList.map(item=>{return item.GuestId})
if(ArrId.indexOf(sObj.GuestId)==-1){
if (this.saveMsg.ChooseStuList.length > 0) {
let ArrId = this.saveMsg.ChooseStuList.map(item => {
return item.GuestId
})
if (ArrId.indexOf(sObj.GuestId) == -1) {
this.getCourseChapterList(sObj);
this.saveMsg.ChooseStuList.push(sObj);
}else{
} else {
this.$q.notify({
message: "该学员已选择,试试别的学员吧",
position: "top",
type: "negative"
});
}
}else{
} else {
this.getCourseChapterList(sObj);
this.saveMsg.ChooseStuList.push(sObj);
}
},
//保存约课
SaveStuAppointment() {
this.$refs.CourseId.validate();
this.$refs.StuId.validate();
if (!this.saveMsg.CourseId) {
this.$q.notify({
type: 'negative',
position: "top",
message: `请选择课程`
})
return;
}
if(!this.saveMsg.ChapterNo){
this.$q.notify({
type: 'negative',
position: "top",
message: `请选择章节`
})
return;
// this.$refs.CourseId.validate();
// this.$refs.StuId.validate();
// if (!this.saveMsg.CourseId) {
// this.$q.notify({
// type: 'negative',
// position: "top",
// message: `请选择课程`
// })
// return;
// }
// if(!this.saveMsg.ChapterNo){
// this.$q.notify({
// type: 'negative',
// position: "top",
// message: `请选择章节`
// })
// return;
// }
// if(!this.saveMsg.TeacherId){
// this.$q.notify({
// type: 'negative',
// position: "top",
// message: `请选择老师`
// })
// return;
// }
// if (this.courseCheckList.length === 0) {
// this.$q.notify({
// message: "请选择上课时段",
// position: "top",
// type: "negative"
// });
// return;
// }
// if(this.saveMsg.ChooseStuList.length===0){
// this.$q.notify({
// message: "请添加学员",
// position: "top",
// type: "negative"
// });
// return;
// }
var tipStr = ""
if (this.saveMsg.ChooseStuList && this.saveMsg.ChooseStuList.length > 0) {
this.saveMsg.ChooseStuList.forEach(item => {
if (item.CourseGradeNo == '' || !item.CourseGradeNo) {
tipStr += "请选择【" + item.StuName + "】消课编号;";
}
if(!this.saveMsg.TeacherId){
this.$q.notify({
type: 'negative',
position: "top",
message: `请选择老师`
})
return;
}
if (this.courseCheckList.length === 0) {
this.$q.notify({
message: "请选择上课时段",
position: "top",
type: "negative"
});
return;
}
if(this.saveMsg.ChooseStuList.length===0){
if (tipStr != '') {
this.$q.notify({
message: "请添加学员",
position: "top",
type: "negative"
});
return;
}
// 检查消课编号是否选择
let ArrCourseGradeNo = this.saveMsg.ChooseStuList.map(item=>{
return item.CourseGradeNo
})
if(ArrCourseGradeNo.indexOf('')!=-1){
this.$q.notify({
message: "请选择消课编号",
message: tipStr,
position: "top",
type: "negative"
});
return;
}
this.addLoading = true;
setAdminScrollAppointment_V3(this.saveMsg)
.then(res => {
......@@ -821,15 +837,18 @@
.timeItem {
margin: 10px 0;
}
.table{
.table {
border-radius: 5px 5px 0 0;
background: rgba(0, 0, 0, 0.05);
overflow: hidden;
}
.thead{
.thead {
background: rgba(0, 0, 0, 0.09);
}
.thead tr th{
.thead tr th {
padding: 10px 0;
}
</style>
\ No newline at end of file
......@@ -193,7 +193,6 @@ export default {
},
mounted() {
this.currentMenu = this.menulist[0].id.toString();
//console.log(this.todoTipList);
},
methods: {}
};
......
<template>
<div class="full-height">
<div class="row items-center">
<q-avatar
size="40px"
font-size="20px"
color="primary"
class="q-mr-md"
text-color="white"
rounded
:icon="`iconfont ${node.icon}`"
/>
<q-avatar size="40px" font-size="20px" color="primary" class="q-mr-md" text-color="white" rounded
:icon="`iconfont ${node.icon}`" />
<div class="pingfang text-subtitle1">{{ node.name }}</div>
</div>
<div class="q-my-md row">
<q-input
standout
v-model="msg.KeyWords"
dense
type="text"
style="width:250px;"
label="关键字(名称/微信/手机号)"
class="q-mr-md"
/>
<q-btn
color="primary"
class="q-px-md"
label="查询"
unelevated
dense
@click="searchKeyHandler"
/>
<q-input standout v-model="msg.KeyWords" dense type="text" style="width:250px;" label="关键字(名称/微信/手机号)"
class="q-mr-md" />
<q-btn color="primary" class="q-px-md" label="查询" unelevated dense @click="searchKeyHandler" />
<div class="col text-right text-grey-6 f12">
TIPS:创建订单后,请及时完成订单款项的入账动作,收款单据点击“修改-选择学员-制单”完成此项任务。
</div>
</div>
<div style="height:calc(100% - 158px);overflow-y:auto;">
<orderlist
:dataList="stus"
@success="refreshPage"
:loading="loading"
:authObj="authObj"
></orderlist>
<orderlist :dataList="stus" @success="refreshPage" :loading="loading" :authObj="authObj"></orderlist>
</div>
<div class="row" style="justify-content: flex-end;padding: 5px 20px">
<q-pagination
v-model="msg.PageIndex"
:max="pageCount"
@input="changePage"
class="full-width justify-end"
color="primary"
:input="true"
>
<q-pagination v-model="msg.PageIndex" :max="pageCount" @input="changePage" class="full-width justify-end"
color="primary" :input="true">
</q-pagination>
</div>
</div>
</template>
<script>
import orderlist from "../sale/orderlist.vue";
import { getMyOrderNotBalance } from "../../api/stuMan/index";
export default {
components: { orderlist },
import orderlist from "../sale/orderlist.vue";
import {
getMyOrderNotBalance
} from "../../api/stuMan/index";
export default {
components: {
orderlist
},
props: ["node"],
data() {
return {
......@@ -97,7 +69,6 @@ export default {
.then(r => {
this.stus = r.Data.PageData;
this.pageCount = r.Data.PageCount;
console.log(this.stus);
setTimeout(() => {
this.loading = false;
}, 1000);
......@@ -118,7 +89,7 @@ export default {
this.getStudent();
}
}
};
};
</script>
<style></style>
<style>
</style>
\ No newline at end of file
......@@ -225,7 +225,6 @@ export default {
methods: {
initTodoList() {
getTodayStatic().then(r => {
console.log(r);
let d = r.Data;
this.todoList.result = d;
let tempCount = 0;
......
<template>
<div class="page-body room-list" v-loading="loading">
<div v-for="(item, i) in classdata" :key="item.Key">
<template
v-if="
<template v-if="
item.SchoolName.indexOf('武侯') == -1 &&
item.SchoolName.indexOf('眉山') == -1
"
>
">
<div class="row items-center">
<div class="text-h6 col">{{ item.SchoolName }}</div>
<div v-if="i == 0" class="f12">只看在线:</div>
<div v-if="i == 0">
<el-switch
v-model="queryStatus"
@change="changeViewStatusHandler"
></el-switch>
<el-switch v-model="queryStatus" @change="changeViewStatusHandler"></el-switch>
</div>
</div>
<div class="q-mt-md q-mb-lg row">
<template v-for="(x, xi) in item.RoomList">
<div
class="class-room"
style="width:calc(20% - 10px);margin-right:10px;margin-bottom:10px;"
v-if="queryStatus == 0 || (queryStatus == 1 && x.StatusInfo)"
:key="xi"
>
<div class="class-room" style="width:calc(20% - 10px);margin-right:10px;margin-bottom:10px;"
v-if="queryStatus == 0 || (queryStatus == 1 && x.StatusInfo)" :key="xi">
<div class="img-box">
<q-img
:src="x.RoomPicList[0]"
height="100%"
fit="fill"
spinner-color="primary"
spinner-size="30px"
v-if="x.RoomPicList && x.RoomPicList.length > 0"
/>
<q-img
src="../../assets/images/classroom/bg-img.jpg"
fit="fill"
height="100%"
spinner-color="primary"
spinner-size="30px"
v-else
/>
<q-img :src="x.RoomPicList[0]" height="100%" fit="fill" spinner-color="primary" spinner-size="30px"
v-if="x.RoomPicList && x.RoomPicList.length > 0" />
<q-img src="../../assets/images/classroom/bg-img.jpg" fit="fill" height="100%" spinner-color="primary"
spinner-size="30px" v-else />
</div>
<div class="xuhua"></div>
<div class="q-pa-md">
......@@ -58,37 +37,19 @@
</div>
<div class="q-mt-lg f12 row items-center">
<div class="text-grey-6 f12 col">
<span
class="q-px-xs text-white q-mr-md inline-block text-weight-bold"
style="border-radius:4px;font-size:15;"
:class="{
<span class="q-px-xs text-white q-mr-md inline-block text-weight-bold"
style="border-radius:4px;font-size:15;" :class="{
'bg-grey-3': !x.StatusInfo,
'bg-negative': x.StatusInfo
}"
>
}">
LIVE
</span>
<span class="text-grey-6" v-if="!x.StatusInfo"
>设备离线</span
>
<span
class="text-grey-6"
v-else-if="x.StatusInfo.UnLockUserName == 'lock'"
>设备在线,未解锁</span
>
<span class="text-grey-6" v-else
>{{ x.StatusInfo.UnLockUserName }}正在使用</span
>
<span class="text-grey-6" v-if="!x.StatusInfo">设备离线</span>
<span class="text-grey-6" v-else-if="x.StatusInfo.UnLockUserName == 'lock'">设备在线,未解锁</span>
<span class="text-grey-6" v-else>{{ x.StatusInfo.UnLockUserName }}正在使用</span>
</div>
<div v-if="x.StatusInfo">
<q-btn
color="primary"
dense
class="f12"
flat
label="链接"
@click="openVideo(x)"
/>
<q-btn color="primary" dense class="f12" flat label="链接" @click="openVideo(x)" />
</div>
</div>
</div>
......@@ -98,24 +59,20 @@
</template>
</div>
<q-dialog v-model="showVideo" @hide="clearVideo">
<q-card
class="my-card"
style="width:64vw !important;max-width:64vw !important;max-height:32vw !important;height:32vw !important;"
flat
>
<div
id="player-con"
style="width:100%;height:100%;overflow:hidden;"
></div>
<q-card class="my-card"
style="width:64vw !important;max-width:64vw !important;max-height:32vw !important;height:32vw !important;" flat>
<div id="player-con" style="width:100%;height:100%;overflow:hidden;"></div>
</q-card>
</q-dialog>
</div>
</template>
<script>
import { getUseClassRoomList } from "../../api/classroom/index";
import * as signalR from "@aspnet/signalr";
export default {
import {
getUseClassRoomList
} from "../../api/classroom/index";
import * as signalR from "@aspnet/signalr";
export default {
meta: {
title: "教室状态"
},
......@@ -135,7 +92,6 @@ export default {
created() {
let thisVue = this;
console.log(process.env.API_SIG);
this.connection = new signalR.HubConnectionBuilder()
.withUrl(process.env.API_SIG, {
skipNegotiation: true,
......@@ -143,9 +99,8 @@ export default {
})
.configureLogging(signalR.LogLevel.Information)
.build();
this.connection.on("RoomStatusChange", function(message) {
this.connection.on("RoomStatusChange", function (message) {
thisVue.roomStatusList = JSON.parse(message);
console.log(thisVue.roomStatusList);
thisVue.changeStatus();
});
this.connection.onclose(async () => {
......@@ -176,8 +131,7 @@ export default {
});
},
initPlayer(url) {
this.player = new Aliplayer(
{
this.player = new Aliplayer({
id: "player-con",
source: url,
width: "100%",
......@@ -190,7 +144,7 @@ export default {
controlBarVisibility: "hover",
useH5Prism: true
},
function(player) {}
function (player) {}
);
},
changeStatus() {
......@@ -225,11 +179,9 @@ export default {
this.connection
.start()
.then(() => {
console.log("linke success");
thatVue.connection.invoke("RegistErp", "IMERP");
})
.catch(e => {
console.log(e);
setTimeout(() => {
thatVue.linkHub();
}, 3000);
......@@ -263,35 +215,39 @@ export default {
});
}
}
};
};
</script>
<style>
.class-room {
.class-room {
border: 1px solid #f5f5f5;
border-radius: 10px;
position: relative;
overflow: hidden;
}
.class-room .img-box {
}
.class-room .img-box {
height: 80px;
}
.class-room .xuhua {
}
.class-room .xuhua {
position: absolute;
top: 0;
height: 80px;
left: 0;
right: 0;
backdrop-filter: blur(4px);
}
.class-room:hover .xuhua {
}
.class-room:hover .xuhua {
backdrop-filter: none;
}
.no-data {
}
.no-data {
height: 75px;
font-size: 14px;
color: #000000;
display: flex;
justify-content: center;
align-items: center;
}
}
</style>
\ No newline at end of file
......@@ -34,7 +34,7 @@
<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>
<el-option :key="3" label="预约课" :value="3"> </el-option>
<div slot="prefix" class="full-height flex items-center" style="color: #000; padding-right: 10px">
类型:
</div>
......
......@@ -2,8 +2,7 @@
<div class="page-body MainPlan xg">
<div class="col row wrap q-col-gutter-md">
<div class="col-2">
<el-select v-model="msg.TeacherId" style="width: 100%" placeholder="教师" size="small"
@change="getTypeWay()">
<el-select v-model="msg.TeacherId" style="width: 100%" placeholder="教师" size="small" @change="getTypeWay()">
<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">
......@@ -36,13 +35,18 @@
<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>
<el-option :key="3" 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">
<el-input v-model="msg.StuName" style="width: 100%" placeholder="学员姓名" size="small" @input="getTypeWay()" clearable>
<div slot="prefix" class="full-height flex items-center" style="color: #000; padding-right: 10px">
学员:
</div>
</el-input>
</div>
</div>
<teachTable v-if="commonType == 2" :tableData="tableData" :PageCount="PageCount" :setMsg="tabMsg" :showCZ="true"
......@@ -54,11 +58,13 @@
import {
getTeacherDropDownList,
queryClassRoomList,
getStudentDorpDownList,
} from "../../api/school/index";
import {
GetClassPlanStatistical,
GetClassPlanStatisticalPage,
} from "../../api/teacher/index";
import classmateForm from "../../components/course/classmate-form";
import teachTable from "../teacher/components/teachTable";
import changeClassForm from "../../components/teacher/changeClassForm.vue";
......@@ -81,13 +87,15 @@
TeacherId: 0,
ClassRoomId: 0,
dataList: {},
loading:false,
loading: false,
msg: {
StartTime: "",
EndTime: "",
TeacherId: 0,
ClassRoomId: 0,
ClassType: 0,
Student_Id: "",
StuName: "",
},
commonType: 2, //1日历模式 2列表模式
typeName: "列表模式",
......@@ -101,6 +109,7 @@
ClassRoomId: 0,
ClassType: 0,
OrderBy: 1,
StuName:"",
},
tableData: [], //表格数据
PageCount: 0,
......@@ -121,6 +130,7 @@
},
},
today: "",
StuList: [], //学员列表
};
},
created() {
......@@ -148,6 +158,13 @@
this.getTableList();
},
methods: {
queryStuList() {
getStudentDorpDownList({}).then(res => {
if (res.Code == 1) {
this.StuList = res.Data;
}
});
},
refreshPage() {
this.getPlanList();
},
......@@ -212,10 +229,11 @@
this.tabMsg.EndTime = this.msg.EndTime;
this.tabMsg.ClassRoomId = this.msg.ClassRoomId;
this.tabMsg.ClassType = this.msg.ClassType;
this.tabMsg.TeacherId=this.msg.TeacherId;
this.loading=true;
this.tabMsg.TeacherId = this.msg.TeacherId;
this.tabMsg.StuName=this.msg.StuName;
this.loading = true;
GetClassPlanStatisticalPage(this.tabMsg).then((res) => {
this.loading=false;
this.loading = false;
if (res.Code == 1) {
this.tableData = res.Data.PageData;
this.PageCount = res.Data.PageCount;
......@@ -235,11 +253,9 @@
},
},
};
</script>
<style lang="scss">
.xg .el-input--prefix .el-input__inner {
padding-left: 50px;
}
</style>
\ No newline at end of file
This diff is collapsed.
......@@ -38,7 +38,8 @@
</q-td>
<template v-for="(subItem,subIndex) in props.row.SubtypeList[cIndex].OptionList">
<q-td :key="subIndex+200000" class="assessmentType_td">
<div style="width:150px;white-space:normal; "> {{subItem.LevelDesc}} <q-badge color="green" v-if="subItem.LevelScore>0">
<div style="width:150px;white-space:normal; "> {{subItem.LevelDesc}} <q-badge color="green"
v-if="subItem.LevelScore>0">
{{subItem.LevelScore}}
</q-badge>
</div>
......@@ -60,7 +61,8 @@
</q-td>
<template v-for="(subItem,subIndex) in props.row.SubtypeList[cIndex].OptionList">
<q-td :key="subIndex+400000" class="assessmentType_td">
<div style="width:150px;white-space:normal; "> {{subItem.LevelDesc}} <q-badge color="green" v-if="subItem.LevelScore>0">
<div style="width:150px;white-space:normal; "> {{subItem.LevelDesc}} <q-badge color="green"
v-if="subItem.LevelScore>0">
{{subItem.LevelScore}}
</q-badge>
</div>
......@@ -113,7 +115,6 @@
this.columns = [];
queryAssessmentTypeList(this.msg).then(res => {
this.loading = false;
console.log("res", res);
if (res.Code == 1) {
this.dataList = res.Data.result;
this.columns = res.Data.header;
......
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