Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
confucius
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
罗超
confucius
Commits
55bfb3fc
Commit
55bfb3fc
authored
Sep 11, 2024
by
黄奎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
页面修改
parent
3c8ddefd
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
738 additions
and
762 deletions
+738
-762
StudentProgress.vue
src/pages/stuMan/StudentProgress.vue
+738
-762
No files found.
src/pages/stuMan/StudentProgress.vue
View file @
55bfb3fc
<
template
>
<
template
>
<div
<div
class=
"column"
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"
>
...
@@ -11,12 +9,7 @@
...
@@ -11,12 +9,7 @@
<thead>
<thead>
<tr
class=
"sticky-header"
>
<tr
class=
"sticky-header"
>
<th
class=
"sticky-column stubg"
>
学员
</th>
<th
class=
"sticky-column stubg"
>
学员
</th>
<th
<th
class=
"stubg cursor-pointer"
v-for=
"(x, i) in students"
:key=
"i"
@
click=
"showStuRight(x)"
>
class=
"stubg cursor-pointer"
v-for=
"(x, i) in students"
:key=
"i"
@
click=
"showStuRight(x)"
>
{{
x
.
GuestName
}}
{{
x
.
GuestName
}}
</th>
</th>
</tr>
</tr>
...
@@ -26,6 +19,9 @@
...
@@ -26,6 +19,9 @@
<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
>
...
@@ -35,27 +31,16 @@
...
@@ -35,27 +31,16 @@
</tr>
</tr>
<tr>
<tr>
<td
class=
"sticky-column teacherbg"
>
班主任
</td>
<td
class=
"sticky-column teacherbg"
>
班主任
</td>
<td
<td
class=
"teacherbg cursor-pointer "
v-for=
"(x, i) in students"
@
click=
"showDialogHandle(x, 1)"
:key=
"i"
>
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
<td
@
click=
"showDialogHandle(x, 2)"
class=
"cursor-pointer "
:class=
"{
@
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>
...
@@ -63,27 +48,19 @@
...
@@ -63,27 +48,19 @@
<td
class=
"sticky-column defaultBg"
>
<td
class=
"sticky-column defaultBg"
>
进度
<br
/>
({{ currentCourse.ClassHours }}课时)
进度
<br
/>
({{ currentCourse.ClassHours }}课时)
</td>
</td>
<td
<td
@
click=
"showDialogHandle(x, 3)"
v-for=
"(x, i) in students"
:key=
"i"
:class=
"{
@
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 "
>
class=
"cursor-pointer "
<div
v-if=
"
>
<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;"
>
{{
{{
...
@@ -100,27 +77,20 @@
...
@@ -100,27 +77,20 @@
: "正常排课"
: "正常排课"
}}
}}
</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.Total
Time
s
? x.Total
Hour
s
: 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
<td
v-for=
"(x, i) in students"
:key=
"i"
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)"
@
click=
"changeRemark(i)"
@
blur=
"setRemark(i)"
:contenteditable=
"i == currentRemark"
@
blur=
"setRemark(i)"
:ref=
"`stu_remark_${x.GuestId}`"
>
:contenteditable=
"i == currentRemark"
:ref=
"`stu_remark_${x.GuestId}`"
>
{{ x.XGRemark }}
{{ x.XGRemark }}
</td>
</td>
</tr>
</tr>
...
@@ -132,12 +102,8 @@
...
@@ -132,12 +102,8 @@
<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
<td
v-for=
"(y, yi) in x.assemble"
@
click
.
stop=
"() => resetContextmenu(i, yi)"
v-for=
"(y, yi) in x.assemble"
@
contextmenu
.
prevent=
"e => contextMenuHandle(i, yi, e,y)"
:key=
"yi"
:class=
"{
@
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,
...
@@ -146,8 +112,7 @@
...
@@ -146,8 +112,7 @@
'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
>
...
@@ -178,43 +143,21 @@
...
@@ -178,43 +143,21 @@
</tr>
</tr>
</tbody>
</tbody>
</table>
</table>
<q-card
<q-card
class=
"rounded-borders"
v-if=
"locationMenu[0] > 0 && locationMenu[0] > 0"
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
<q-item
v-close-popup
clickable
@
click=
"showDialogHandle(students[coor[1]], 4)"
v-if=
"currentMenuState==0"
>
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
<q-item
v-close-popup
clickable
@
click=
"confirmSub"
v-if=
"currentMenuState==1"
>
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
<q-item
v-close-popup
clickable
v-if=
"currentMenuState==1||currentMenuState==2"
v-close-popup
@
click=
"showDialogHandle(students[coor[1]], 4)"
>
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
<q-item
v-close-popup
clickable
v-if=
"currentMenuState==1||currentMenuState==2"
@
click=
"getPlan"
>
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
...
@@ -230,83 +173,49 @@
...
@@ -230,83 +173,49 @@
</div>
</div>
<div
class=
"cusor-tools row"
>
<div
class=
"cusor-tools row"
>
<div
class=
"col row"
>
<div
class=
"col row"
>
<div
<div
class=
"item"
@
click=
"changeCourseHandle(x)"
:class=
"{ active: x.CourseId == currentCourse.CourseId }"
class=
"item"
v-for=
"(x, i) in list"
:key=
"i"
>
@
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
<scroll-bar
targetBox=
"sptable"
targetWrap=
"sptableWrap"
@
scrollChange=
"scrollHandle"
ref=
"scrollBar"
>
targetBox=
"sptable"
</scroll-bar>
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
<q-btn
@
click=
"resetZoom"
color=
"primary"
v-show=
"zoom != 1"
@
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
flat
label=
"重置"
/>
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
<set-student-teacher
:stuInfo=
"currentStu"
@
close=
"() => (showDialog = 0)"
v-if=
"showDialog == 1"
:stuInfo=
"currentStu"
@
success=
"setTeacherHandle"
></set-student-teacher>
@
close=
"() => (showDialog = 0)"
<set-study-method
:stuInfo=
"currentStu"
@
close=
"() => (showDialog = 0)"
v-if=
"showDialog == 2"
v-if=
"showDialog == 1"
@
success=
"setStudyHandle"
></set-study-method>
@
success=
"setTeacherHandle"
<set-study-status
:stuInfo=
"currentStu"
@
close=
"() => (showDialog = 0)"
v-if=
"showDialog == 3"
></set-student-teacher>
@
success=
"settGuestScheduleHandle"
></set-study-status>
<set-study-method
<set-study-plan
:stuInfo=
"currentStu"
:sourceList=
"sourceStudents"
:chapters=
"chapters"
:rate=
"currentCourse"
:stuInfo=
"currentStu"
:coor=
"coor"
@
close=
"() => (showDialog = 0)"
v-if=
"showDialog == 4"
@
success=
"setStudyPlayHandle"
@
close=
"() => (showDialog = 0)"
:planTime=
"currentSchedu"
></set-study-plan>
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
<studentRight-form
v-if=
"stuInfoVisible"
:save-obj=
"stuOption"
@
close=
"() => (stuInfoVisible = false)"
>
v-if=
"stuInfoVisible"
</studentRight-form>
: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"
val=
"yes"
label=
"扣除学员课时按缺勤处理"
/>
<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=
"no"
label=
"无损取消"
/>
val=
"yes"
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==''"
color=
"primary"
v-close-popup
/>
<q-btn
unelevated
label=
"确认选择"
@
click=
"checkRemoveChosenHandle"
:disable=
"adminCancelChosenOpera==''"
color=
"primary"
v-close-popup
/>
</q-card-actions>
</q-card-actions>
</q-card>
</q-card>
</q-dialog>
</q-dialog>
...
@@ -314,23 +223,32 @@
...
@@ -314,23 +223,32 @@
</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
{
SetSureAppointment
}
from
"../../api/studyabroad/subscribe.js"
;
import
{
import
{
getStudentInfo
}
from
"src/api/school/index"
;
SetSureAppointment
import
{
setGuestRemark
}
from
"src/api/studentmsg/index"
;
}
from
"../../api/studyabroad/subscribe.js"
;
import
setStudentTeacher
from
"./components/setStudentTeacher.vue"
;
import
{
import
SetStudyMethod
from
"./components/setStudyMethod.vue"
;
getStudentInfo
import
SetStudyStatus
from
"./components/setStudyStatus.vue"
;
}
from
"src/api/school/index"
;
import
StudyHeader
from
"./components/studyHeader.vue"
;
import
{
import
studentRightForm
from
"src/components/school/student/studentRight-form.vue"
;
setGuestRemark
import
SetStudyPlan
from
"./components/setStudyPlan.vue"
;
}
from
"src/api/studentmsg/index"
;
import
{
getStuAppointPlan
,
cancelStuAppointment
}
from
'src/api/scheduling/schedu'
import
setStudentTeacher
from
"./components/setStudentTeacher.vue"
;
export
default
{
import
SetStudyMethod
from
"./components/setStudyMethod.vue"
;
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
,
...
@@ -380,11 +298,11 @@ export default {
...
@@ -380,11 +298,11 @@ export default {
},
},
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
:
{
...
@@ -408,7 +326,9 @@ export default {
...
@@ -408,7 +326,9 @@ export default {
getChapters
()
{
getChapters
()
{
if
(
!
this
.
currentCourse
||
!
this
.
currentCourse
.
CourseId
)
return
;
if
(
!
this
.
currentCourse
||
!
this
.
currentCourse
.
CourseId
)
return
;
this
.
loading
=
true
;
this
.
loading
=
true
;
queryChapterTree
({
CourseId
:
this
.
currentCourse
.
CourseId
})
queryChapterTree
({
CourseId
:
this
.
currentCourse
.
CourseId
})
.
then
(
res
=>
{
.
then
(
res
=>
{
this
.
loading
=
false
;
this
.
loading
=
false
;
this
.
chapters
=
res
.
Data
;
this
.
chapters
=
res
.
Data
;
...
@@ -425,7 +345,7 @@ export default {
...
@@ -425,7 +345,7 @@ export default {
changeRemark
(
i
)
{
changeRemark
(
i
)
{
this
.
currentRemark
=
i
;
this
.
currentRemark
=
i
;
},
},
setStudyPlayHandle
()
{
setStudyPlayHandle
()
{
this
.
showDialog
=
0
;
this
.
showDialog
=
0
;
this
.
getStudentByStoreage
()
this
.
getStudentByStoreage
()
},
},
...
@@ -434,7 +354,10 @@ export default {
...
@@ -434,7 +354,10 @@ export default {
this
.
loading
=
true
;
this
.
loading
=
true
;
if
(
playload
)
if
(
playload
)
this
.
queryParemeter
=
{
...
this
.
queryParemeter
,
...
playload
};
this
.
queryParemeter
=
{
...
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
();
...
@@ -501,7 +424,7 @@ export default {
...
@@ -501,7 +424,7 @@ export default {
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
;
...
@@ -522,7 +445,9 @@ export default {
...
@@ -522,7 +445,9 @@ export default {
this
.
currentCourse
.
CourseRate
==
11
)
&&
this
.
currentCourse
.
CourseRate
==
11
)
&&
stu
.
TotalTimes
<
i
+
1
stu
.
TotalTimes
<
i
+
1
)
{
)
{
x
.
assemble
.
push
({
overlayer
:
true
});
x
.
assemble
.
push
({
overlayer
:
true
});
}
else
{
}
else
{
x
.
assemble
.
push
(
r
);
x
.
assemble
.
push
(
r
);
}
}
...
@@ -587,8 +512,14 @@ export default {
...
@@ -587,8 +512,14 @@ export default {
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
],
...
playload
};
this
.
students
[
i
]
=
{
this
.
sourceStudents
[
j
]
=
{
...
this
.
sourceStudents
[
j
],
...
playload
};
...
this
.
students
[
i
],
...
playload
};
this
.
sourceStudents
[
j
]
=
{
...
this
.
sourceStudents
[
j
],
...
playload
};
},
},
resetContextmenu
(
i
,
yi
)
{
resetContextmenu
(
i
,
yi
)
{
this
.
locationMenu
=
[
-
1
,
-
1
];
this
.
locationMenu
=
[
-
1
,
-
1
];
...
@@ -616,7 +547,9 @@ export default {
...
@@ -616,7 +547,9 @@ export default {
if
(
obj
)
{
if
(
obj
)
{
this
.
$q
.
loading
.
show
();
this
.
$q
.
loading
.
show
();
console
.
log
(
obj
.
StuId
);
console
.
log
(
obj
.
StuId
);
getStudentInfo
({
StuId
:
obj
.
StuId
})
getStudentInfo
({
StuId
:
obj
.
StuId
})
.
then
(
r
=>
{
.
then
(
r
=>
{
this
.
stuOption
=
r
.
Data
;
this
.
stuOption
=
r
.
Data
;
this
.
stuOption
.
noEdit
=
true
;
this
.
stuOption
.
noEdit
=
true
;
...
@@ -648,84 +581,88 @@ export default {
...
@@ -648,84 +581,88 @@ export default {
});
});
},
},
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
({
AccountId
:
y
.
AccountId
,
Date
:
y
.
Date
,
ShiftSort
:
y
.
ShiftSort
}).
then
(
r
=>
{
getStuAppointPlan
({
if
(
r
.
Code
==
1
){
AccountId
:
y
.
AccountId
,
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"
,
...
@@ -744,50 +681,60 @@ export default {
...
@@ -744,50 +681,60 @@ export default {
this
.
getCourse
();
this
.
getCourse
();
},
},
mounted
()
{
mounted
()
{
document
.
addEventListener
(
"wheel"
,
this
.
handleWheel
,
{
passive
:
false
});
document
.
addEventListener
(
"wheel"
,
this
.
handleWheel
,
{
passive
:
false
});
},
},
beforeDestroy
()
{
beforeDestroy
()
{
document
.
removeEventListener
(
"wheel"
,
this
.
handleWheel
,
{
passive
:
false
});
document
.
removeEventListener
(
"wheel"
,
this
.
handleWheel
,
{
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
th
{
.sptable
td
,
.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
;
...
@@ -797,9 +744,10 @@ export default {
...
@@ -797,9 +744,10 @@ export default {
color
:
#000
;
color
:
#000
;
outline
:
none
;
outline
:
none
;
position
:
relative
;
position
:
relative
;
}
}
.sptable
td
.focus-box
::before
,
.sptable
td
:focus::before
{
.sptable
td
.focus-box
::before
,
.sptable
td
:focus::before
{
position
:
absolute
;
position
:
absolute
;
content
:
" "
;
content
:
" "
;
display
:
block
;
display
:
block
;
...
@@ -810,32 +758,37 @@ export default {
...
@@ -810,32 +758,37 @@ export default {
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
::after
,
.sptable
.sticky-header
th
::before
,
.sptable-box
::before
,
.sptable
.sticky-header
th
::after
,
.sptable
.sticky-column
::before
{
.sptable-box
::before
,
.sptable
.sticky-column
::before
{
position
:
absolute
;
position
:
absolute
;
content
:
""
;
content
:
""
;
display
:
block
;
display
:
block
;
...
@@ -846,30 +799,35 @@ export default {
...
@@ -846,30 +799,35 @@ export default {
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
;
...
@@ -882,8 +840,9 @@ export default {
...
@@ -882,8 +840,9 @@ export default {
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
;
...
@@ -895,11 +854,13 @@ export default {
...
@@ -895,11 +854,13 @@ export default {
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
;
...
@@ -909,48 +870,63 @@ export default {
...
@@ -909,48 +870,63 @@ export default {
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
:
#778ca3
;
background
:
#778ca3
;
}
}
.sptable
.unstudy
{
.sptable
.unstudy
{
background
:
#58B19F
;
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
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment