Commit 066cf26e authored by 黄奎's avatar 黄奎

1

parents 55bfb3fc 3ed9b3f3
<template> <template>
<div class="column" <div
class="column"
style="background-color: #e3e6ed; overflow: hidden; position: absolute; left: 0; right: 0; top: 0; bottom: 0;" style="background-color: #e3e6ed; overflow: hidden; position: absolute; left: 0; right: 0; top: 0; bottom: 0;"
@click="cancleCellHandle"> @click="cancleCellHandle"
>
<study-header @change="getStudents" ref="studyHeaderRef"></study-header> <study-header @change="getStudents" ref="studyHeaderRef"></study-header>
<div class="sptable-box col" id="sptable"> <div class="sptable-box col" id="sptable">
<div class="sptable-wrap" v-loading="loading"> <div class="sptable-wrap" v-loading="loading">
...@@ -9,7 +11,12 @@ ...@@ -9,7 +11,12 @@
<thead> <thead>
<tr class="sticky-header"> <tr class="sticky-header">
<th class="sticky-column stubg">学员</th> <th class="sticky-column stubg">学员</th>
<th class="stubg cursor-pointer" v-for="(x, i) in students" :key="i" @click="showStuRight(x)"> <th
class="stubg cursor-pointer"
v-for="(x, i) in students"
:key="i"
@click="showStuRight(x)"
>
{{ x.GuestName }} {{ x.GuestName }}
</th> </th>
</tr> </tr>
...@@ -19,9 +26,6 @@ ...@@ -19,9 +26,6 @@
<td class="sticky-column coursebg">课程</td> <td class="sticky-column coursebg">课程</td>
<td class="coursebg " v-for="(x, i) in students" :key="i"> <td class="coursebg " v-for="(x, i) in students" :key="i">
<template v-if="x.CourseRate<=6"> <template v-if="x.CourseRate<=6">
<q-tooltip anchor="top middle" :offset="[10, 10]">
{{x.CourseName}}
</q-tooltip>
{{ x.NewCourseName }} {{ x.NewCourseName }}
</template> </template>
<template v-else> <template v-else>
...@@ -31,16 +35,27 @@ ...@@ -31,16 +35,27 @@
</tr> </tr>
<tr> <tr>
<td class="sticky-column teacherbg">班主任</td> <td class="sticky-column teacherbg">班主任</td>
<td class="teacherbg cursor-pointer " v-for="(x, i) in students" @click="showDialogHandle(x, 1)" :key="i"> <td
class="teacherbg cursor-pointer "
v-for="(x, i) in students"
@click="showDialogHandle(x, 1)"
:key="i"
>
{{ x.HeadMasterName }} {{ x.HeadMasterName }}
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="sticky-column studybg">方式</td> <td class="sticky-column studybg">方式</td>
<td @click="showDialogHandle(x, 2)" class="cursor-pointer " :class="{ <td
@click="showDialogHandle(x, 2)"
class="cursor-pointer "
:class="{
'study-online-bg': x.TeachingMethod == 2, 'study-online-bg': x.TeachingMethod == 2,
studybg: x.TeachingMethod != 2 studybg: x.TeachingMethod != 2
}" v-for="(x, i) in students" :key="i"> }"
v-for="(x, i) in students"
:key="i"
>
{{ x.TeachingMethod == 2 ? "线上" : "面授" }} {{ x.TeachingMethod == 2 ? "线上" : "面授" }}
</td> </td>
</tr> </tr>
...@@ -48,19 +63,27 @@ ...@@ -48,19 +63,27 @@
<td class="sticky-column defaultBg"> <td class="sticky-column defaultBg">
进度<br />({{ currentCourse.ClassHours }}课时) 进度<br />({{ currentCourse.ClassHours }}课时)
</td> </td>
<td @click="showDialogHandle(x, 3)" v-for="(x, i) in students" :key="i" :class="{ <td
@click="showDialogHandle(x, 3)"
v-for="(x, i) in students"
:key="i"
:class="{
stop: stop:
currentCourse.ClassHours - x.ClassProgress < 0 || currentCourse.ClassHours - x.ClassProgress < 0 ||
x.ScheduleStatus == 1 x.ScheduleStatus == 1
}" class="cursor-pointer "> }"
<div v-if=" class="cursor-pointer "
>
<div
v-if="
(currentCourse.CourseRate == 10 || (currentCourse.CourseRate == 10 ||
currentCourse.CourseRate == 11 currentCourse.CourseRate == 11
? x.TotalTimes ? x.TotalTimes
: currentCourse.ClassHours) - : currentCourse.ClassHours) -
x.ClassProgress < x.ClassProgress <
0 || x.ScheduleStatus == 1 0 || x.ScheduleStatus == 1
"> "
>
<div>暂停排课</div> <div>暂停排课</div>
<div style="font-size: 12px;font-family: microsoft yahei;"> <div style="font-size: 12px;font-family: microsoft yahei;">
{{ {{
...@@ -77,20 +100,27 @@ ...@@ -77,20 +100,27 @@
: "正常排课" : "正常排课"
}} }}
</div> </div>
<span style="font-size: 12px;font-family: microsoft yahei;">剩余{{ <span style="font-size: 12px;font-family: microsoft yahei;"
>剩余{{
(currentCourse.CourseRate == 10 || (currentCourse.CourseRate == 10 ||
currentCourse.CourseRate == 11 currentCourse.CourseRate == 11
? x.TotalHours ? x.TotalTimes
: currentCourse.ClassHours) - x.ClassProgress : currentCourse.ClassHours) - x.ClassProgress
}}课时</span> }}课时</span
>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="sticky-column studybg">备注</td> <td class="sticky-column studybg">备注</td>
<td v-for="(x, i) in students" :key="i" <td
v-for="(x, i) in students"
:key="i"
style="word-wrap: break-word;white-space: wrap; max-width: 150px; vertical-align: middle;" style="word-wrap: break-word;white-space: wrap; max-width: 150px; vertical-align: middle;"
@click="changeRemark(i)" @blur="setRemark(i)" :contenteditable="i == currentRemark" @click="changeRemark(i)"
:ref="`stu_remark_${x.GuestId}`"> @blur="setRemark(i)"
:contenteditable="i == currentRemark"
:ref="`stu_remark_${x.GuestId}`"
>
{{ x.XGRemark }} {{ x.XGRemark }}
</td> </td>
</tr> </tr>
...@@ -102,8 +132,12 @@ ...@@ -102,8 +132,12 @@
<td class="sticky-column defaultBg" style="text-align: left;"> <td class="sticky-column defaultBg" style="text-align: left;">
{{ x.ChapterName }} {{ x.ChapterName }}
</td> </td>
<td v-for="(y, yi) in x.assemble" @click.stop="() => resetContextmenu(i, yi)" <td
@contextmenu.prevent="e => contextMenuHandle(i, yi, e,y)" :key="yi" :class="{ v-for="(y, yi) in x.assemble"
@click.stop="() => resetContextmenu(i, yi)"
@contextmenu.prevent="e => contextMenuHandle(i, yi, e,y)"
:key="yi"
:class="{
'disable-class': y && y.overlayer, 'disable-class': y && y.overlayer,
'focus-box': coor[0] == i && coor[1] == yi, 'focus-box': coor[0] == i && coor[1] == yi,
'unchecked':y &&y.State==1, 'unchecked':y &&y.State==1,
...@@ -112,7 +146,8 @@ ...@@ -112,7 +146,8 @@
'onlineStudy':y &&y.State==3 && y.AttendanceMethod==2, 'onlineStudy':y &&y.State==3 && y.AttendanceMethod==2,
'notChecked':y &&y.State==3 && y.AttendanceMethod==3, 'notChecked':y &&y.State==3 && y.AttendanceMethod==3,
'study-normal':y &&y.State==3 && y.AttendanceMethod==1 'study-normal':y &&y.State==3 && y.AttendanceMethod==1
}"> }"
>
<template v-if="y&&(y.State<3||y.State==6)"> <template v-if="y&&(y.State<3||y.State==6)">
{{ y.StateName }} {{ y.StateName }}
</template> </template>
...@@ -143,21 +178,43 @@ ...@@ -143,21 +178,43 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<q-card class="rounded-borders" v-if="locationMenu[0] > 0 && locationMenu[0] > 0" <q-card
class="rounded-borders"
v-if="locationMenu[0] > 0 && locationMenu[0] > 0"
style="width: 200px; position: absolute; z-index: 9;margin-left: -100px;" style="width: 200px; position: absolute; z-index: 9;margin-left: -100px;"
:style="{ left: locationMenu[0] + 'px', top: locationMenu[1] + 'px' }"> :style="{ left: locationMenu[0] + 'px', top: locationMenu[1] + 'px' }"
>
<q-list bordered> <q-list bordered>
<q-item v-close-popup clickable @click="showDialogHandle(students[coor[1]], 4)" v-if="currentMenuState==0"> <q-item
v-close-popup
clickable
@click="showDialogHandle(students[coor[1]], 4)"
v-if="currentMenuState==0"
>
<q-item-section>立即排课</q-item-section> <q-item-section>立即排课</q-item-section>
</q-item> </q-item>
<q-item v-close-popup clickable @click="confirmSub" v-if="currentMenuState==1"> <q-item
v-close-popup
clickable
@click="confirmSub"
v-if="currentMenuState==1"
>
<q-item-section>确认排课</q-item-section> <q-item-section>确认排课</q-item-section>
</q-item> </q-item>
<q-item v-close-popup clickable v-if="currentMenuState==1||currentMenuState==2" <q-item
@click="showDialogHandle(students[coor[1]], 4)"> v-close-popup
clickable
v-if="currentMenuState==1||currentMenuState==2"
@click="showDialogHandle(students[coor[1]], 4)"
>
<q-item-section>修改排课</q-item-section> <q-item-section>修改排课</q-item-section>
</q-item> </q-item>
<q-item v-close-popup clickable v-if="currentMenuState==1||currentMenuState==2" @click="getPlan"> <q-item
v-close-popup
clickable
v-if="currentMenuState==1||currentMenuState==2"
@click="getPlan"
>
<q-item-section class="text-negative">取消排课</q-item-section> <q-item-section class="text-negative">取消排课</q-item-section>
</q-item> </q-item>
<!-- <q-item <!-- <q-item
...@@ -173,49 +230,83 @@ ...@@ -173,49 +230,83 @@
</div> </div>
<div class="cusor-tools row"> <div class="cusor-tools row">
<div class="col row"> <div class="col row">
<div class="item" @click="changeCourseHandle(x)" :class="{ active: x.CourseId == currentCourse.CourseId }" <div
v-for="(x, i) in list" :key="i"> class="item"
@click="changeCourseHandle(x)"
:class="{ active: x.CourseId == currentCourse.CourseId }"
v-for="(x, i) in list"
:key="i"
>
{{ x.CourseName }} {{ x.CourseName }}
</div> </div>
</div> </div>
<scroll-bar targetBox="sptable" targetWrap="sptableWrap" @scrollChange="scrollHandle" ref="scrollBar"> <scroll-bar
</scroll-bar> targetBox="sptable"
targetWrap="sptableWrap"
@scrollChange="scrollHandle"
ref="scrollBar"
></scroll-bar>
<div class="q-ml-md row items-center"> <div class="q-ml-md row items-center">
<span>{{ Math.ceil(zoom * 100) }}%</span> <span>{{ Math.ceil(zoom * 100) }}%</span>
<q-btn @click="resetZoom" color="primary" v-show="zoom != 1" <q-btn
@click="resetZoom"
color="primary"
v-show="zoom != 1"
style="padding: 0; font-size: 11px !important;font-family: microsoft yahei !important; font-weight: 400;" style="padding: 0; font-size: 11px !important;font-family: microsoft yahei !important; font-weight: 400;"
flat label="重置" /> flat
label="重置"
/>
</div> </div>
</div> </div>
<q-dialog v-if="showDialog != 0" v-model="dialogVisible" persistent> <q-dialog v-if="showDialog != 0" v-model="dialogVisible" persistent>
<set-student-teacher :stuInfo="currentStu" @close="() => (showDialog = 0)" v-if="showDialog == 1" <set-student-teacher
@success="setTeacherHandle"></set-student-teacher> :stuInfo="currentStu"
<set-study-method :stuInfo="currentStu" @close="() => (showDialog = 0)" v-if="showDialog == 2" @close="() => (showDialog = 0)"
@success="setStudyHandle"></set-study-method> v-if="showDialog == 1"
<set-study-status :stuInfo="currentStu" @close="() => (showDialog = 0)" v-if="showDialog == 3" @success="setTeacherHandle"
@success="settGuestScheduleHandle"></set-study-status> ></set-student-teacher>
<set-study-plan :stuInfo="currentStu" :sourceList="sourceStudents" :chapters="chapters" :rate="currentCourse" <set-study-method
:coor="coor" @close="() => (showDialog = 0)" v-if="showDialog == 4" @success="setStudyPlayHandle" :stuInfo="currentStu"
:planTime="currentSchedu"></set-study-plan> @close="() => (showDialog = 0)"
v-if="showDialog == 2"
@success="setStudyHandle"
></set-study-method>
<set-study-status
:stuInfo="currentStu"
@close="() => (showDialog = 0)"
v-if="showDialog == 3"
@success="settGuestScheduleHandle"
></set-study-status>
<set-study-plan
:stuInfo="currentStu"
:sourceList="sourceStudents"
:chapters="chapters"
:rate="currentCourse"
:coor="coor"
@close="() => (showDialog = 0)"
v-if="showDialog == 4"
@success="setStudyPlayHandle"
:planTime="currentSchedu"
></set-study-plan>
</q-dialog> </q-dialog>
</div> </div>
<studentRight-form v-if="stuInfoVisible" :save-obj="stuOption" @close="() => (stuInfoVisible = false)"> <studentRight-form
</studentRight-form> v-if="stuInfoVisible"
:save-obj="stuOption"
@close="() => (stuInfoVisible = false)"
></studentRight-form>
<q-dialog v-model="cancelConfirm" persistent> <q-dialog v-model="cancelConfirm" persistent>
<q-card> <q-card>
<q-card-section class="row items-center"> <q-card-section class="row items-center">
<div>你正在执行取消已确认学员的上课计划,请确认以下操作</div> <div>你正在执行取消已确认学员的上课计划,请确认以下操作</div>
<div class="q-mt-sm"> <div class="q-mt-sm">
<q-radio v-model="adminCancelChosenOpera" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" <q-radio v-model="adminCancelChosenOpera" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" val="yes" label="扣除学员课时按缺勤处理" />
val="yes" label="扣除学员课时按缺勤处理" /> <q-radio v-model="adminCancelChosenOpera" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" val="no" label="无损取消" />
<q-radio v-model="adminCancelChosenOpera" checked-icon="task_alt" unchecked-icon="panorama_fish_eye"
val="no" label="无损取消" />
</div> </div>
</q-card-section> </q-card-section>
<q-card-actions align="right"> <q-card-actions align="right">
<q-btn flat label="不执行此次操作" color="primary" v-close-popup /> <q-btn flat label="不执行此次操作" color="primary" v-close-popup />
<q-btn unelevated label="确认选择" @click="checkRemoveChosenHandle" :disable="adminCancelChosenOpera==''" <q-btn unelevated label="确认选择" @click="checkRemoveChosenHandle" :disable="adminCancelChosenOpera==''" color="primary" v-close-popup />
color="primary" v-close-popup />
</q-card-actions> </q-card-actions>
</q-card> </q-card>
</q-dialog> </q-dialog>
...@@ -223,32 +314,23 @@ ...@@ -223,32 +314,23 @@
</template> </template>
<script> <script>
import scrollBar from "src/components/common/scrollBar.vue"; import scrollBar from "src/components/common/scrollBar.vue";
import { import {
queryCoursePage, queryCoursePage,
queryChapterTree, queryChapterTree,
queryScheduleCourseStu queryScheduleCourseStu
} from "../../api/course/index"; } from "../../api/course/index";
import { import { SetSureAppointment } from "../../api/studyabroad/subscribe.js";
SetSureAppointment import { getStudentInfo } from "src/api/school/index";
} from "../../api/studyabroad/subscribe.js"; import { setGuestRemark } from "src/api/studentmsg/index";
import { import setStudentTeacher from "./components/setStudentTeacher.vue";
getStudentInfo import SetStudyMethod from "./components/setStudyMethod.vue";
} from "src/api/school/index"; import SetStudyStatus from "./components/setStudyStatus.vue";
import { import StudyHeader from "./components/studyHeader.vue";
setGuestRemark import studentRightForm from "src/components/school/student/studentRight-form.vue";
} from "src/api/studentmsg/index"; import SetStudyPlan from "./components/setStudyPlan.vue";
import setStudentTeacher from "./components/setStudentTeacher.vue"; import {getStuAppointPlan,cancelStuAppointment} from 'src/api/scheduling/schedu'
import SetStudyMethod from "./components/setStudyMethod.vue"; export default {
import SetStudyStatus from "./components/setStudyStatus.vue";
import StudyHeader from "./components/studyHeader.vue";
import studentRightForm from "src/components/school/student/studentRight-form.vue";
import SetStudyPlan from "./components/setStudyPlan.vue";
import {
getStuAppointPlan,
cancelStuAppointment
} from 'src/api/scheduling/schedu'
export default {
components: { components: {
scrollBar, scrollBar,
setStudentTeacher, setStudentTeacher,
...@@ -298,11 +380,11 @@ ...@@ -298,11 +380,11 @@
}, },
coor: [-1, -1], coor: [-1, -1],
locationMenu: [0, 0], locationMenu: [0, 0],
currentMenuState: 0, currentMenuState:0,
currentSchedu: null, currentSchedu:null,
cancelConfirm: false, cancelConfirm:false,
adminCancelChosenOpera: '', adminCancelChosenOpera:'',
updatePlan: {} updatePlan:{}
}; };
}, },
methods: { methods: {
...@@ -326,9 +408,7 @@ ...@@ -326,9 +408,7 @@
getChapters() { getChapters() {
if (!this.currentCourse || !this.currentCourse.CourseId) return; if (!this.currentCourse || !this.currentCourse.CourseId) return;
this.loading = true; this.loading = true;
queryChapterTree({ queryChapterTree({ CourseId: this.currentCourse.CourseId })
CourseId: this.currentCourse.CourseId
})
.then(res => { .then(res => {
this.loading = false; this.loading = false;
this.chapters = res.Data; this.chapters = res.Data;
...@@ -345,7 +425,7 @@ ...@@ -345,7 +425,7 @@
changeRemark(i) { changeRemark(i) {
this.currentRemark = i; this.currentRemark = i;
}, },
setStudyPlayHandle() { setStudyPlayHandle(){
this.showDialog = 0; this.showDialog = 0;
this.getStudentByStoreage() this.getStudentByStoreage()
}, },
...@@ -354,10 +434,7 @@ ...@@ -354,10 +434,7 @@
this.loading = true; this.loading = true;
if (playload) if (playload)
this.queryParemeter = { this.queryParemeter = { ...this.queryParemeter, ...playload };
...this.queryParemeter,
...playload
};
if (this.currentCourse.CourseRate != this.queryParemeter.CourseRate) { if (this.currentCourse.CourseRate != this.queryParemeter.CourseRate) {
this.queryParemeter.CourseRate = this.currentCourse.CourseRate; this.queryParemeter.CourseRate = this.currentCourse.CourseRate;
this.getStudentByStoreage(); this.getStudentByStoreage();
...@@ -424,7 +501,7 @@ ...@@ -424,7 +501,7 @@
this.chapters.push({ this.chapters.push({
ChapterId: i + 1, ChapterId: i + 1,
ChapterName: `第${i + 1}次`, ChapterName: `第${i + 1}次`,
ChapterGradeNo: i + 1 ChapterGradeNo: i+1
}); });
} }
this.currentCourse.ClassHours = maxTemp; this.currentCourse.ClassHours = maxTemp;
...@@ -445,9 +522,7 @@ ...@@ -445,9 +522,7 @@
this.currentCourse.CourseRate == 11) && this.currentCourse.CourseRate == 11) &&
stu.TotalTimes < i + 1 stu.TotalTimes < i + 1
) { ) {
x.assemble.push({ x.assemble.push({ overlayer: true });
overlayer: true
});
} else { } else {
x.assemble.push(r); x.assemble.push(r);
} }
...@@ -512,14 +587,8 @@ ...@@ -512,14 +587,8 @@
x => x.GuestId == this.currentStu.GuestId x => x.GuestId == this.currentStu.GuestId
); );
if (i < 0) return; if (i < 0) return;
this.students[i] = { this.students[i] = { ...this.students[i], ...playload };
...this.students[i], this.sourceStudents[j] = { ...this.sourceStudents[j], ...playload };
...playload
};
this.sourceStudents[j] = {
...this.sourceStudents[j],
...playload
};
}, },
resetContextmenu(i, yi) { resetContextmenu(i, yi) {
this.locationMenu = [-1, -1]; this.locationMenu = [-1, -1];
...@@ -547,9 +616,7 @@ ...@@ -547,9 +616,7 @@
if (obj) { if (obj) {
this.$q.loading.show(); this.$q.loading.show();
console.log(obj.StuId); console.log(obj.StuId);
getStudentInfo({ getStudentInfo({ StuId: obj.StuId })
StuId: obj.StuId
})
.then(r => { .then(r => {
this.stuOption = r.Data; this.stuOption = r.Data;
this.stuOption.noEdit = true; this.stuOption.noEdit = true;
...@@ -581,88 +648,84 @@ ...@@ -581,88 +648,84 @@
}); });
}, },
contextMenuHandle(i, yi, e, y) { contextMenuHandle(i, yi, e,y) {
this.currentMenuState = y ? y.State : 0 this.currentMenuState = y?y.State:0
this.currentSchedu = y this.currentSchedu = y
const tips = this.$refs[`plantime_${i}_${yi}`] const tips = this.$refs[`plantime_${i}_${yi}`]
if (tips && tips.length > 0) { if(tips && tips.length>0){
tips[0].hide() tips[0].hide()
} }
this.coor = [i, yi]; this.coor = [i, yi];
const t = e.target; const t = e.target;
let top = t.offsetTop + t.offsetHeight; let top = t.offsetTop + t.offsetHeight;
top = top =
document.querySelector(".sptable-wrap").offsetHeight < top + 48 ? document.querySelector(".sptable-wrap").offsetHeight < top + 48
t.offsetTop - 48 : ? t.offsetTop - 48
top; : top;
//sptable-wrap //sptable-wrap
this.locationMenu = [(t.offsetLeft + t.offsetWidth / 2) * this.zoom, top * this.zoom]; this.locationMenu = [(t.offsetLeft + t.offsetWidth / 2)*this.zoom, top*this.zoom];
}, },
cancleCellHandle() { cancleCellHandle() {
this.coor = [-1, -1]; this.coor = [-1, -1];
this.locationMenu = [-1, -1]; this.locationMenu = [-1, -1];
}, },
getPlan() { getPlan(){
const y = this.currentSchedu const y = this.currentSchedu
this.$q.loading.show() this.$q.loading.show()
getStuAppointPlan({ getStuAppointPlan({AccountId:y.AccountId,Date:y.Date,ShiftSort:y.ShiftSort}).then(r=>{
AccountId: y.AccountId, if(r.Code==1){
Date: y.Date,
ShiftSort: y.ShiftSort
}).then(r => {
if (r.Code == 1) {
const d = r.Data const d = r.Data
this.updatePlan = d this.updatePlan = d
this.canclePlanClassHandler() this.canclePlanClassHandler()
} else { }else{
this.$q.loading.hide() this.$q.loading.hide()
} }
}) })
}, },
canclePlanClassHandler() { canclePlanClassHandler(){
if (this.currentSchedu.State == 2) { if(this.currentSchedu.State==2){
this.adminCancelChosenOpera = '' this.adminCancelChosenOpera = ''
this.cancelConfirm = true this.cancelConfirm=true
} else if (this.currentSchedu.State == 1) { }else if(this.currentSchedu.State==1){
this.adminCancelChosenOpera = 'no' this.adminCancelChosenOpera = 'no'
this.cancelConfirm = false this.cancelConfirm=false
this.removePlanHandle() this.removePlanHandle()
} }
this.$q.loading.hide() this.$q.loading.hide()
}, },
checkRemoveChosenHandle() { checkRemoveChosenHandle(){
if (this.adminCancelChosenOpera == '') { if(this.adminCancelChosenOpera==''){
this.errorMsgHandle('请选择执行的内容') this.errorMsgHandle('请选择执行的内容')
return return
} }
this.cancelConfirm = false this.cancelConfirm = false
this.removePlanHandle() this.removePlanHandle()
}, },
errorMsgHandle(msg) { errorMsgHandle(msg){
this.$q.notify({ this.$q.notify({
color: "negative", color: "negative",
message: msg, message: msg,
position: "top" position: "top"
}); });
}, },
removePlanHandle() { removePlanHandle(){
this.$q.loading.show() this.$q.loading.show()
var chosenList = [] var chosenList = []
this.updatePlan.ChooseStuList.forEach(x => { this.updatePlan.ChooseStuList.forEach(x=>{
chosenList.push({ chosenList.push({
AppointId: x.AppointmentId, AppointId:x.AppointmentId,
IsCalcStuCheck: this.adminCancelChosenOpera == 'yes' ? 1 : 0 IsCalcStuCheck: this.adminCancelChosenOpera=='yes'?1:0
}) })
}) })
cancelStuAppointment({ cancelStuAppointment({
AccountId: this.currentSchedu.AccountId, AccountId:this.currentSchedu.AccountId,
Date: this.updatePlan.Date, Date:this.updatePlan.Date,
ShiftSort: this.updatePlan.ShiftSort, ShiftSort:this.updatePlan.ShiftSort,
ChooseStuList: chosenList ChooseStuList:chosenList
}).then(r => { }).then(r=>{
this.$q.loading.hide() this.$q.loading.hide()
if (r.Code == 1) { if(r.Code==1){
this.getStudentByStoreage(); this.getStudentByStoreage();
this.$q.notify({ this.$q.notify({
icon: "iconfont icon-chenggong", icon: "iconfont icon-chenggong",
...@@ -681,60 +744,50 @@ ...@@ -681,60 +744,50 @@
this.getCourse(); this.getCourse();
}, },
mounted() { mounted() {
document.addEventListener("wheel", this.handleWheel, { document.addEventListener("wheel", this.handleWheel, { passive: false });
passive: false
});
}, },
beforeDestroy() { beforeDestroy() {
document.removeEventListener("wheel", this.handleWheel, { document.removeEventListener("wheel", this.handleWheel, { passive: false });
passive: false
});
} }
}; };
</script> </script>
<style> <style>
.sptable-box { .sptable-box {
width: 100%; width: 100%;
height: 100%; height: 100%;
overflow-y: auto; overflow-y: auto;
padding-bottom: 20px; padding-bottom: 20px;
/* user-select: none; */ /* user-select: none; */
background: #fff; background: #fff;
} }
.sptable-box .sptable-wrap {
.sptable-box .sptable-wrap {
position: relative; position: relative;
} }
.sptable-box::-webkit-scrollbar { .sptable-box::-webkit-scrollbar {
width: 6px; width: 6px;
height: 6px; height: 6px;
} }
.sptable-box::-webkit-scrollbar-thumb {
.sptable-box::-webkit-scrollbar-thumb {
background-color: #888; background-color: #888;
border-radius: 6px; border-radius: 6px;
} }
.sptable-box::-webkit-scrollbar-thumb:hover { .sptable-box::-webkit-scrollbar-thumb:hover {
background-color: #555; background-color: #555;
} }
.sptable-box::-webkit-scrollbar-track {
.sptable-box::-webkit-scrollbar-track {
background-color: #f1f1f1; background-color: #f1f1f1;
} }
.sptable {
.sptable {
border-collapse: collapse; border-collapse: collapse;
border: 1px solid #2a363b; border: 1px solid #2a363b;
border-top: none; border-top: none;
min-width: 100%; min-width: 100%;
} }
.sptable td,
.sptable td, .sptable th {
.sptable th {
border-right: 1px solid #2a363b; border-right: 1px solid #2a363b;
border-bottom: 1px solid #2a363b; border-bottom: 1px solid #2a363b;
padding: 6px 15px; padding: 6px 15px;
...@@ -744,10 +797,9 @@ ...@@ -744,10 +797,9 @@
color: #000; color: #000;
outline: none; outline: none;
position: relative; position: relative;
} }
.sptable td.focus-box::before,
.sptable td.focus-box::before, .sptable td:focus::before {
.sptable td:focus::before {
position: absolute; position: absolute;
content: " "; content: " ";
display: block; display: block;
...@@ -758,37 +810,32 @@ ...@@ -758,37 +810,32 @@
z-index: 15; z-index: 15;
border: 3px solid #418f1f; border: 3px solid #418f1f;
pointer-events: none; pointer-events: none;
} }
.sptable tr td:last-child {
.sptable tr td:last-child {
border-right: none; border-right: none;
} }
.sptable tr:last-child td:last-child {
.sptable tr:last-child td:last-child {
border: none; border: none;
} }
.sptable .sticky-header th {
.sptable .sticky-header th {
position: sticky; position: sticky;
top: 0px; top: 0px;
background: #fff; background: #fff;
z-index: 2; z-index: 2;
border-bottom: none; border-bottom: none;
} }
.sptable .sticky-column {
.sptable .sticky-column {
position: sticky; position: sticky;
left: 0px; left: 0px;
background: #fff; background: #fff;
box-shadow: inset -4px -2px 0px -3px #1fbb7d; box-shadow: inset -4px -2px 0px -3px #1fbb7d;
border-right: 0; border-right: 0;
z-index: 1; z-index: 1;
} }
.sptable .sticky-header th::before,
.sptable .sticky-header th::before, .sptable .sticky-header th::after,
.sptable .sticky-header th::after, .sptable-box::before,
.sptable-box::before, .sptable .sticky-column::before {
.sptable .sticky-column::before {
position: absolute; position: absolute;
content: ""; content: "";
display: block; display: block;
...@@ -799,35 +846,30 @@ ...@@ -799,35 +846,30 @@
bottom: 0; bottom: 0;
z-index: 15; z-index: 15;
height: 100%; height: 100%;
} }
.sptable-box::before {
.sptable-box::before {
left: 0; left: 0;
top: 55px; top: 55px;
} }
.sptable .sticky-header th::before {
.sptable .sticky-header th::before {
top: 0; top: 0;
left: 0; left: 0;
width: 100%; width: 100%;
height: 1px; height: 1px;
} }
.sptable .sticky-header th::after {
.sptable .sticky-header th::after {
top: unset; top: unset;
bottom: 0; bottom: 0;
left: 0; left: 0;
width: 100%; width: 100%;
height: 1px; height: 1px;
background: #1fbb7d; background: #1fbb7d;
} }
.sptable .sticky-header .sticky-column {
.sptable .sticky-header .sticky-column {
z-index: 3; z-index: 3;
border-right: 0; border-right: 0;
} }
.sptable-box .cusor-tools {
.sptable-box .cusor-tools {
position: absolute; position: absolute;
left: 0; left: 0;
right: 0; right: 0;
...@@ -840,9 +882,8 @@ ...@@ -840,9 +882,8 @@
border-right: 1px solid #2a363b; border-right: 1px solid #2a363b;
z-index: 9; z-index: 9;
padding: 0 30px; padding: 0 30px;
} }
.sptable-box .cusor-tools .item {
.sptable-box .cusor-tools .item {
height: 22px; height: 22px;
line-height: 22px; line-height: 22px;
border: 1px solid transparent; border: 1px solid transparent;
...@@ -854,13 +895,11 @@ ...@@ -854,13 +895,11 @@
padding: 0 15px; padding: 0 15px;
cursor: pointer; cursor: pointer;
position: relative; position: relative;
} }
.sptable-box .cusor-tools .item:hover {
.sptable-box .cusor-tools .item:hover {
background: #cfcfcf; background: #cfcfcf;
} }
.sptable-box .cusor-tools .item.active {
.sptable-box .cusor-tools .item.active {
background: #fff !important; background: #fff !important;
cursor: default !important; cursor: default !important;
border-color: #c9ccd2; border-color: #c9ccd2;
...@@ -870,63 +909,48 @@ ...@@ -870,63 +909,48 @@
color: #007a6b; color: #007a6b;
height: 23px; height: 23px;
line-height: 23px; line-height: 23px;
} }
.sptable .coursebg {
.sptable .coursebg {
background: #f5cd79; background: #f5cd79;
} }
.sptable .stubg {
.sptable .stubg {
background: #26de81; background: #26de81;
} }
.sptable .teacherbg {
.sptable .teacherbg {
background: #778beb; background: #778beb;
} }
.sptable .studybg {
.sptable .studybg {
background: #cf6a87; background: #cf6a87;
} }
.sptable .study-online-bg {
.sptable .study-online-bg {
background: #fa8231; background: #fa8231;
} }
.sptable .stop {
.sptable .stop {
background: #fc427b; background: #fc427b;
} }
.sptable .defaultBg {
.sptable .defaultBg {
background: #dfe4ea; background: #dfe4ea;
} }
.sptable .study-normal {
.sptable .study-normal {
background: #20bf6b; background: #20bf6b;
} }
.sptable .disable-class {
.sptable .disable-class {
background: #e3e6ed; background: #e3e6ed;
cursor: not-allowed; cursor: not-allowed;
} }
.sptable .unchecked {
.sptable .unchecked { background: red;
background: #778ca3; }
} .sptable .unstudy {
background: yellow;
.sptable .unstudy { }
background: #58B19F; .sptable .onlineStudy{
}
.sptable .onlineStudy {
background: #8854d0; background: #8854d0;
} }
.sptable .notChecked{
.sptable .notChecked {
background: #eb3b5a; background: #eb3b5a;
} }
.sptable .notFreeCancle{
.sptable .notFreeCancle {
background: #acacac; background: #acacac;
} }
</style> </style>
...@@ -16,13 +16,14 @@ ...@@ -16,13 +16,14 @@
<div class="page-search row items-center "> <div class="page-search row items-center ">
<div class="col row wrap q-mr-lg q-col-gutter-md"> <div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3 Sysuser_Date"> <div class="col-3 Sysuser_Date">
<q-field filled label="日期" stack-label> <q-field filled>
<template v-slot:control> <template v-slot:control>
<div class="self-center full-width no-outline" tabindex="0">{{ daterangeTimes }}</div> <el-date-picker v-model="msg.StartDate" type="date" placeholder="开始日期" value-format="yyyy-MM-dd"
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy"> size="small" style="width:47%;" @change="refreshPage" clear-icon="iconfont icon-guanbi">
<q-date v-model="dateRange" :options="optionsFn" range mask="YYYY/MM/DD" landscape </el-date-picker>
@range-end="dateRangeHandler"></q-date> <el-date-picker v-model="msg.EndDate" type="date" placeholder="结束日期" value-format="yyyy-MM-dd"
</q-popup-proxy> size="small" style="width:47%;" @change="refreshPage" clear-icon="iconfont icon-guanbi">
</el-date-picker>
</template> </template>
</q-field> </q-field>
</div> </div>
...@@ -52,6 +53,11 @@ ...@@ -52,6 +53,11 @@
{{props.row.GuestName}} {{props.row.GuestName}}
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-StartTime="props">
<q-td :props="props" style="padding-right:0px">
{{props.row.StartTime}}~{{props.row.EndTime}}
</q-td>
</template>
<template v-slot:body-cell-optioned="props"> <template v-slot:body-cell-optioned="props">
<q-td :props="props"> <q-td :props="props">
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" label="修改上课方式" <q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" label="修改上课方式"
...@@ -163,13 +169,6 @@ ...@@ -163,13 +169,6 @@
align: "left", align: "left",
field: row => row.StartTime field: row => row.StartTime
}, },
{
name: "EndTime",
required: true,
label: "下课时间",
align: "left",
field: row => row.EndTime
},
{ {
name: "AttendanceMethodName", name: "AttendanceMethodName",
required: true, required: true,
...@@ -324,20 +323,6 @@ ...@@ -324,20 +323,6 @@
this.GuestCheckLoading = false; this.GuestCheckLoading = false;
}); });
}, },
optionsFn(cd) {
return cd >= date.formatDate(date.addToDate(new Date(), { days: 1 }), 'YYYY-MM-DD')
},
dateRangeHandler(e) {
this.msg.StartDate = `${e.from.year}-${e.from.month>9?e.from.month:'0'+e.from.month}-${e.from.day>9?e.from.day:'0'+e.from.day}`
this.msg.EndDate = `${e.to.year}-${e.to.month>9?e.to.month:'0'+e.to.month}-${e.to.day>9?e.to.day:'0'+e.to.day}`
this.daterangeTimes = `${this.msg.StartDate} / ${this.msg.EndDate} `
this.dateRange.to = `${e.from.year}/${e.from.month}/${e.from.day}`
this.dateRange.from = `${e.to.year}/${e.to.month}/${e.to.day}`
if (this.$refs.qDateProxy) this.$refs.qDateProxy.hide()
this.resetSearch()
},
//获取校区列表 //获取校区列表
getSchool() { getSchool() {
getSchoolDropdown({}).then(res => { getSchoolDropdown({}).then(res => {
......
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