Commit 7c63fbad authored by 黄奎's avatar 黄奎

页面修改

parent fe54bdd9
<style> <style>
.common_Style { .common_Style {
display: inline-block; display: inline-block;
width: 30px; width: 30px;
height: 30px; height: 30px;
border-radius: 50%; border-radius: 50%;
text-align: center; text-align: center;
line-height: 30px; line-height: 30px;
} }
.classForm_monday { .classForm_monday {
background-color: #ced9f8; background-color: #ced9f8;
color: #2961fe; color: #2961fe;
} }
.classForm_tuesday { .classForm_tuesday {
background-color: #d9f3ff; background-color: #d9f3ff;
color: #3fc4ff; color: #3fc4ff;
} }
.classForm_wednesday { .classForm_wednesday {
background-color: #f6e2cb; background-color: #f6e2cb;
color: #f28c1d; color: #f28c1d;
} }
.classForm_thursday { .classForm_thursday {
background-color: #ccf3eb; background-color: #ccf3eb;
color: #02c499; color: #02c499;
} }
.classForm_friday { .classForm_friday {
background-color: #f7cfd6; background-color: #f7cfd6;
color: #f72e52; color: #f72e52;
} }
.classForm_saturday { .classForm_saturday {
background-color: #fff5cc; background-color: #fff5cc;
color: #ffcc00; color: #ffcc00;
} }
.classForm_sunday { .classForm_sunday {
background-color: #e6e3fe; background-color: #e6e3fe;
color: #8175fb; color: #8175fb;
} }
.planTimeLi tbody::before { .planTimeLi tbody::before {
content: ""; content: "";
display: table-row; display: table-row;
height: 20px; height: 20px;
} }
._font_size12 {
font-size: 12px !important;
}
._addUpload_box { ._font_size12 {
display: block; font-size: 12px !important;
margin-top: 15px; }
}
._addUpload_box img { ._addUpload_box {
width: 100%; display: block;
} margin-top: 15px;
}
._addUpload_box > div { ._addUpload_box img {
float: left; width: 100%;
width: 138px; }
height: 92px;
border: 1px dashed rgba(210, 210, 210, 1);
border-radius: 2px;
cursor: pointer;
margin-bottom: 10px;
padding: 5px;
margin-right: 10px;
position: relative;
}
._addUpload_box > div:hover { ._addUpload_box>div {
background-color: #f5f5f5; float: left;
} width: 138px;
height: 92px;
border: 1px dashed rgba(210, 210, 210, 1);
border-radius: 2px;
cursor: pointer;
margin-bottom: 10px;
padding: 5px;
margin-right: 10px;
position: relative;
}
._addFile_name { ._addUpload_box>div:hover {
padding-left: 15px; background-color: #f5f5f5;
max-width: 450px; }
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
._addUpload_box .icon-guanbi1 { ._addFile_name {
font-size: 12px; padding-left: 15px;
color: white; max-width: 450px;
display: inline-block; overflow: hidden;
margin-left: 15px; text-overflow: ellipsis;
position: absolute; white-space: nowrap;
right: -6px; }
top: -9px;
background-color: #f56c6c;
border-radius: 50%;
height: 20px;
width: 20px;
text-align: center;
line-height: 20px;
}
._addUpload_box .icon-guanbi1:hover { ._addUpload_box .icon-guanbi1 {
font-size: 12px; font-size: 12px;
color: #c94052; color: white;
} display: inline-block;
margin-left: 15px;
position: absolute;
right: -6px;
top: -9px;
background-color: #f56c6c;
border-radius: 50%;
height: 20px;
width: 20px;
text-align: center;
line-height: 20px;
}
._addUpload_box .icon-excel, ._addUpload_box .icon-guanbi1:hover {
._addUpload_box .icon-pdf, font-size: 12px;
._addUpload_box .icon-txt, color: #c94052;
._addUpload_box .icon-wenjian, }
._addUpload_box .icon-yasuobao,
._addUpload_box .icon-shipin,
._addUpload_box .icon-word {
text-align: center;
font-size: 38px;
color: green;
line-height: 75px;
}
._addUpload_box .icon-yasuobao {
color: gray;
}
._show_img_box {
position: fixed;
background: rgba(0, 0, 0, 0.6);
left: 0;
top: 0;
width: 100vw !important;
height: 100vh;
z-index: 999;
text-align: center;
}
._addUpload_tips { ._addUpload_box .icon-excel,
font-size: 12px; ._addUpload_box .icon-pdf,
color: #999999; ._addUpload_box .icon-txt,
} ._addUpload_box .icon-wenjian,
._addUpload_box .icon-yasuobao,
._addUpload_box .icon-shipin,
._addUpload_box .icon-word {
text-align: center;
font-size: 38px;
color: green;
line-height: 75px;
}
._jump_page { ._addUpload_box .icon-yasuobao {
cursor: pointer; color: gray;
text-decoration: underline; }
}
._show_img_box {
position: fixed;
background: rgba(0, 0, 0, 0.6);
left: 0;
top: 0;
width: 100vw !important;
height: 100vh;
z-index: 999;
text-align: center;
}
._addUpload_tips {
font-size: 12px;
color: #999999;
}
._jump_page {
cursor: pointer;
text-decoration: underline;
}
._jump_page:hover {
color: #c94052;
}
.stop .el-upload-dragger {
font-size: 28px;
color: #8c939d;
width: 126px;
height: 80px;
line-height: 41px;
text-align: center;
}
._jump_page:hover {
color: #c94052;
}
.stop .el-upload-dragger {
font-size: 28px;
color: #8c939d;
width: 126px;
height: 80px;
line-height: 41px;
text-align: center;
}
</style> </style>
<template> <template>
<q-dialog <q-dialog v-model="persistent" content-class="bg-grey-1" persistent transition-show="scale" transition-hide="scale">
v-model="persistent"
content-class="bg-grey-1"
persistent
transition-show="scale"
transition-hide="scale"
>
<q-card style="width: 800px; max-width: 900px" class="stop"> <q-card style="width: 800px; max-width: 900px" class="stop">
<q-card-section> <q-card-section>
<div class="text-h6">创建调课申请单</div> <div class="text-h6">创建调课申请单</div>
</q-card-section> </q-card-section>
<q-card-section class="q-pt-none" style="height: 70vh"> <q-card-section class="q-pt-none" style="height: 70vh">
<q-scroll-area <q-scroll-area :thumb-style="thumbStyle" :content-style="contentStyle"
:thumb-style="thumbStyle" :content-active-style="contentActiveStyle" class="full-width full-height">
:content-style="contentStyle"
:content-active-style="contentActiveStyle"
class="full-width full-height"
>
<div class="text-caption q-mb-lg q-px-md text-grey-6">基本资料</div> <div class="text-caption q-mb-lg q-px-md text-grey-6">基本资料</div>
<div class="row q-col-gutter-lg"> <div class="row q-col-gutter-lg">
<!--<q-select filled stack-label option-value="SId" option-label="SName" v-model="msg.classId" ref="School_Id" :options="schoolList" label="所属校区" :dense="false" class="col-6" emit-value map-options @input="schoolChagne" />--> <q-select filled stack-label option-value="SId" option-label="SName" v-model="msg.SchoolId" ref="School_Id"
<q-select :options="schoolList" label="校区" :dense="false" class="col-6" emit-value map-options
filled @input="changeSchool" />
stack-label <q-select filled stack-label option-value="CourseId" option-label="CourseName" v-model="msg.CouseId"
option-value="SId" ref="CouseId" :options="courseList" label="关联课程" :dense="false" class="col-6" emit-value map-options
option-label="SName" @input="changeCourse" />
v-model="msg.SchoolId" <q-select filled stack-label option-value="ClassId" option-label="ClassName" v-model="msg.ClassId"
ref="School_Id" :options="classList" @input="changeClass" emit-value map-options label="班级" class="col-6">
:options="schoolList" <template v-slot:option="{
label="校区"
:dense="false"
class="col-6"
emit-value
map-options
@input="changeSchool"
/>
<q-select
filled
stack-label
option-value="CourseId"
option-label="CourseName"
v-model="msg.CouseId"
ref="CouseId"
:options="courseList"
label="关联课程"
:dense="false"
class="col-6"
emit-value
map-options
@input="changeCourse"
/>
<q-select
filled
stack-label
option-value="ClassId"
option-label="ClassName"
v-model="msg.ClassId"
:options="classList"
@input="changeClass"
emit-value
map-options
label="班级"
class="col-6"
>
<template
v-slot:option="{
itemProps, itemProps,
itemEvents, itemEvents,
opt, opt,
selected, selected,
toggleOption, toggleOption,
}" }">
>
<q-item v-bind="itemProps" v-on="itemEvents"> <q-item v-bind="itemProps" v-on="itemEvents">
<q-item-section> <q-item-section>
<q-item-label v-html="opt.ClassName"></q-item-label> <q-item-label v-html="opt.ClassName"></q-item-label>
...@@ -239,20 +196,9 @@ ...@@ -239,20 +196,9 @@
</q-item> </q-item>
</template> </template>
</q-select> </q-select>
<q-select <q-select filled stack-label option-value="Id" option-label="Name" v-model="msg.ChangeType"
filled :options="changeType" label="变更类型" :dense="false" class="col-6" emit-value map-options
stack-label @input="changeTypeResult" />
option-value="Id"
option-label="Name"
v-model="msg.ChangeType"
:options="changeType"
label="变更类型"
:dense="false"
class="col-6"
emit-value
map-options
@input="changeTypeResult"
/>
</div> </div>
<div class="row items-center"> <div class="row items-center">
<div class="text-caption q-my-lg q-px-md text-grey-6 col"> <div class="text-caption q-my-lg q-px-md text-grey-6 col">
...@@ -260,33 +206,17 @@ ...@@ -260,33 +206,17 @@
</div> </div>
<div class="row items-center"> <div class="row items-center">
<div class="text-grey-6">变更范围:</div> <div class="text-grey-6">变更范围:</div>
<q-radio <q-radio size="xs" v-model="msg.MoveType" val="1" label="单个或多个" />
size="xs"
v-model="msg.MoveType"
val="1"
label="单个或多个"
/>
<q-radio size="xs" v-model="msg.MoveType" val="2" label="全局" /> <q-radio size="xs" v-model="msg.MoveType" val="2" label="全局" />
</div> </div>
</div> </div>
<div v-if="msg.MoveType == '1'" class="row items-center"> <div v-if="msg.MoveType == '1'" class="row items-center">
<div class="col"> <div class="col">
<q-table <q-table no-data-label="暂无相关数据" flat style="max-height: 300px" :pagination="pages" class="
no-data-label="暂无相关数据"
flat
style="max-height: 300px"
:pagination="pages"
class="
sticky-column-table sticky-header-column-table sticky-column-table sticky-header-column-table
no-bottom-table no-bottom-table
" " separator="none" :data="currentClass" :columns="msg.ChangeType == 1 ? columns : columns2"
separator="none" row-key="ClassPlanId" selection="multiple" :selected.sync="selected">
:data="currentClass"
:columns="msg.ChangeType == 1 ? columns : columns2"
row-key="ClassPlanId"
selection="multiple"
:selected.sync="selected"
>
<template v-slot:body-cell-ClassDate="props"> <template v-slot:body-cell-ClassDate="props">
<q-td :props="props"> <q-td :props="props">
<div>{{ props.row.ClassDate }}</div> <div>{{ props.row.ClassDate }}</div>
...@@ -295,10 +225,7 @@ ...@@ -295,10 +225,7 @@
</template> </template>
<template v-slot:body-cell-TimeList="props"> <template v-slot:body-cell-TimeList="props">
<q-td auto-width :props="props"> <q-td auto-width :props="props">
<div <div v-for="(item, index) in props.row.TimeList" class="lessForm_Class">
v-for="(item, index) in props.row.TimeList"
class="lessForm_Class"
>
{{ index + 1 }}节课 {{ item.StartTime }}-{{ {{ index + 1 }}节课 {{ item.StartTime }}-{{
item.EndTime item.EndTime
}} }}
...@@ -306,107 +233,51 @@ ...@@ -306,107 +233,51 @@
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-TargetClassDate="props"> <template v-slot:body-cell-TargetClassDate="props">
<q-td <q-td auto-width :props="props" style="border-left: 1xp solid #000">
auto-width
:props="props"
style="border-left: 1xp solid #000"
>
{{ props.row.NewPlan.ClassDate }} {{ props.row.NewPlan.ClassDate }}
<q-popup-edit <q-popup-edit v-model="props.row.NewPlan.ClassDate" title="变更日期" persistent buttons label-set="确认"
v-model="props.row.NewPlan.ClassDate" label-cancel="取消">
title="变更日期" <el-date-picker v-model="props.row.NewPlan.ClassDate" type="date" :picker-options="pickerOptions"
persistent :clearable="false" value-format="yyyy-MM-dd" placeholder="选择日期">
buttons
label-set="确认"
label-cancel="取消"
>
<el-date-picker
v-model="props.row.NewPlan.ClassDate"
type="date"
:picker-options="pickerOptions"
:clearable="false"
value-format="yyyy-MM-dd"
placeholder="选择日期"
>
</el-date-picker> </el-date-picker>
</q-popup-edit> </q-popup-edit>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-TargetTimeList="props"> <template v-slot:body-cell-TargetTimeList="props">
<q-td auto-width :props="props"> <q-td auto-width :props="props">
<div <div v-for="(item, index) in props.row.NewPlan.TimeList" class="lessForm_Class">
v-for="(item, index) in props.row.NewPlan.TimeList"
class="lessForm_Class"
>
{{ index + 1 }}节课 {{ item.StartTime }}-{{ {{ index + 1 }}节课 {{ item.StartTime }}-{{
item.EndTime item.EndTime
}} }}
</div> </div>
<q-popup-edit <q-popup-edit :validate="proteinRangeValidation" persistent v-model="props.row.NewPlan.TimeList"
:validate="proteinRangeValidation" title="变更时间" buttons label-set="确认" label-cancel="取消">
persistent <div v-for="(item, index) in props.row.NewPlan.TimeList" class="q-mb-md row items-center"
v-model="props.row.NewPlan.TimeList" style="width: 430px">
title="变更时间"
buttons
label-set="确认"
label-cancel="取消"
>
<div
v-for="(item, index) in props.row.NewPlan.TimeList"
class="q-mb-md row items-center"
style="width: 430px"
>
<div class="lessForm_Class col"> <div class="lessForm_Class col">
{{ index + 1 }}节课 {{ index + 1 }}节课
</div> </div>
<div class="row items-center"> <div class="row items-center">
<el-time-select <el-time-select placeholder="起始时间" v-model="item.StartTime" style="width: 100px"
placeholder="起始时间" :picker-options="pickers">
v-model="item.StartTime"
style="width: 100px"
:picker-options="pickers"
>
</el-time-select> </el-time-select>
<el-time-select <el-time-select placeholder="结束时间" v-model="item.EndTime"
placeholder="结束时间" style="width: 100px; margin-left: 12px" :picker-options="{
v-model="item.EndTime"
style="width: 100px; margin-left: 12px"
:picker-options="{
start: '09:00', start: '09:00',
step: '00:15', step: '00:15',
end: '22:30', end: '22:30',
minTime: item.StartTime, minTime: item.StartTime,
}" }">
>
</el-time-select> </el-time-select>
<q-input <q-input filled v-model="item.TimeHour" size="xs" mask="#.#" fill-mask="0.0" label="有效课时"
filled suffix="课时" style="width: 100px; margin-left: 12px" />
v-model="item.TimeHour" <q-btn v-if="props.row.NewPlan.TimeList.length > 1" round color="negative" class="q-ml-md"
size="xs" size="xs" icon="iconfont icon-guanbi1" @click="removeTime(props.row.NewPlan, index)">
mask="#.#" </q-btn>
fill-mask="0.0"
label="有效课时"
suffix="课时"
style="width: 100px; margin-left: 12px"
/>
<q-btn
v-if="props.row.NewPlan.TimeList.length > 1"
round
color="negative"
class="q-ml-md"
size="xs"
icon="iconfont icon-guanbi1"
@click="removeTime(props.row.NewPlan, index)"
></q-btn>
</div> </div>
</div> </div>
<q-btn <q-btn round color="primary" size="xs" icon="iconfont icon-img_haha"
round @click="addTime(props.row.NewPlan)"></q-btn>
color="primary"
size="xs"
icon="iconfont icon-img_haha"
@click="addTime(props.row.NewPlan)"
></q-btn>
</q-popup-edit> </q-popup-edit>
</q-td> </q-td>
</template> </template>
...@@ -416,118 +287,49 @@ ...@@ -416,118 +287,49 @@
</div> </div>
<div v-if="msg.ChangeType == 1 && msg.MoveType == 2"> <div v-if="msg.ChangeType == 1 && msg.MoveType == 2">
<div class="row"> <div class="row">
<q-input <q-input filled v-model="msg.AllChangePlanItem.OpenTimeStr" class="col-6 q-pr-lg q-pb-lg" mask="date"
filled label="开班时间">
v-model="msg.AllChangePlanItem.OpenTimeStr"
class="col-6 q-pr-lg q-pb-lg"
mask="date"
label="开班时间"
>
<template v-slot:append> <template v-slot:append>
<q-icon name="event" class="cursor-pointer"> <q-icon name="event" class="cursor-pointer">
<q-popup-proxy <q-popup-proxy ref="qDateProxy1" transition-show="scale" transition-hide="scale">
ref="qDateProxy1" <q-date v-model="msg.AllChangePlanItem.OpenTimeStr" :options="optionsFn"
transition-show="scale" @input="() => $refs.qDateProxy1.hide()" />
transition-hide="scale"
>
<q-date
v-model="msg.AllChangePlanItem.OpenTimeStr"
:options="optionsFn"
@input="() => $refs.qDateProxy1.hide()"
/>
</q-popup-proxy> </q-popup-proxy>
</q-icon> </q-icon>
</template> </template>
</q-input> </q-input>
<q-select <q-select filled stack-label option-value="Id" option-label="Name"
filled v-model="msg.AllChangePlanItem.ClassStyle" ref="ClassStyle" :options="classSetList" label="排课安排"
stack-label :dense="false" class="col-6 q-pr-lg q-pb-lg" emit-value map-options
option-value="Id" @input="changeClassStyle(msg.AllChangePlanItem.ClassStyle)" />
option-label="Name"
v-model="msg.AllChangePlanItem.ClassStyle"
ref="ClassStyle"
:options="classSetList"
label="排课安排"
:dense="false"
class="col-6 q-pr-lg q-pb-lg"
emit-value
map-options
@input="changeClassStyle(msg.AllChangePlanItem.ClassStyle)"
/>
</div> </div>
<div class="row wrap" v-if="msg.AllChangePlanItem.ClassStyle == 1"> <div class="row wrap" v-if="msg.AllChangePlanItem.ClassStyle == 1">
<div class="col-6"> <div class="col-6">
<q-select <q-select filled stack-label multiple option-value="value" option-label="label" v-model="checkedDays"
filled ref="ClassStyle" :options="weekList" label="选择周几" :dense="false" class="col-6 q-pr-lg" emit-value
stack-label map-options>
multiple <template v-slot:option="{
option-value="value"
option-label="label"
v-model="checkedDays"
ref="ClassStyle"
:options="weekList"
label="选择周几"
:dense="false"
class="col-6 q-pr-lg"
emit-value
map-options
>
<template
v-slot:option="{
itemProps, itemProps,
itemEvents, itemEvents,
opt, opt,
selected, selected,
toggleOption, toggleOption,
}" }">
>
<q-item v-bind="itemProps" v-on="itemEvents"> <q-item v-bind="itemProps" v-on="itemEvents">
<q-item-section avatar> <q-item-section avatar>
<span <span v-if="opt.icon == 1" class="common_Style classForm_monday"></span>
v-if="opt.icon == 1" <span v-if="opt.icon == 2" class="common_Style classForm_tuesday"></span>
class="common_Style classForm_monday" <span v-if="opt.icon == 3" class="common_Style classForm_wednesday"></span>
></span <span v-if="opt.icon == 4" class="common_Style classForm_thursday"></span>
> <span v-if="opt.icon == 5" class="common_Style classForm_friday"></span>
<span <span v-if="opt.icon == 6" class="common_Style classForm_saturday"></span>
v-if="opt.icon == 2" <span v-if="opt.icon == 7" class="common_Style classForm_sunday"></span>
class="common_Style classForm_tuesday"
></span
>
<span
v-if="opt.icon == 3"
class="common_Style classForm_wednesday"
></span
>
<span
v-if="opt.icon == 4"
class="common_Style classForm_thursday"
></span
>
<span
v-if="opt.icon == 5"
class="common_Style classForm_friday"
></span
>
<span
v-if="opt.icon == 6"
class="common_Style classForm_saturday"
></span
>
<span
v-if="opt.icon == 7"
class="common_Style classForm_sunday"
></span
>
</q-item-section> </q-item-section>
<q-item-section> <q-item-section>
<q-item-label v-html="opt.label" /> <q-item-label v-html="opt.label" />
</q-item-section> </q-item-section>
<q-item-section side> <q-item-section side>
<i <i style="color: #2961fe" v-if="selected" class="iconfont icon-chenggong"></i>
style="color: #2961fe"
v-if="selected"
class="iconfont icon-chenggong"
></i>
</q-item-section> </q-item-section>
</q-item> </q-item>
</template> </template>
...@@ -535,53 +337,25 @@ ...@@ -535,53 +337,25 @@
</div> </div>
</div> </div>
<div class="row wrap" v-if="msg.AllChangePlanItem.ClassStyle == 2"> <div class="row wrap" v-if="msg.AllChangePlanItem.ClassStyle == 2">
<q-select <q-select filled stack-label multiple option-value="value" option-label="label" v-model="checkedDays"
filled ref="ClassStyle" :options="dayList" label="选择日期" :dense="false" class="col-6 q-pr-lg q-pr-lg" emit-value
stack-label map-options>
multiple
option-value="value"
option-label="label"
v-model="checkedDays"
ref="ClassStyle"
:options="dayList"
label="选择日期"
:dense="false"
class="col-6 q-pr-lg q-pr-lg"
emit-value
map-options
>
</q-select> </q-select>
</div> </div>
<div class="row wrap" v-if="msg.AllChangePlanItem.ClassStyle == 3"> <div class="row wrap" v-if="msg.AllChangePlanItem.ClassStyle == 3">
<div class="col-12"> <div class="col-12">
<q-date <q-date v-model="checkedDays" minimal multiple style="width: 100%" />
v-model="checkedDays"
minimal
multiple
style="width: 100%"
/>
</div> </div>
</div> </div>
<div class="row wrap" style="margin: 20px 0"> <div class="row wrap" style="margin: 20px 0">
<div class="col-6"> <div class="col-6">
学习时段 学习时段
<q-btn <q-btn style="margin-left: 30px" size="10px" @click="addPlan()" round color="primary"
style="margin-left: 30px" icon="iconfont icon-img_haha" />
size="10px"
@click="addPlan()"
round
color="primary"
icon="iconfont icon-img_haha"
/>
</div> </div>
</div> </div>
<template <template v-if="DefaultPlanTimeList && DefaultPlanTimeList.length > 0">
v-if="DefaultPlanTimeList && DefaultPlanTimeList.length > 0" <table style="width: 100%; border-collapse: collapse" class="planTimeLi">
>
<table
style="width: 100%; border-collapse: collapse"
class="planTimeLi"
>
<thead> <thead>
<tr> <tr>
<th>日期/周</th> <th>日期/周</th>
...@@ -590,64 +364,26 @@ ...@@ -590,64 +364,26 @@
<th>操作</th> <th>操作</th>
</tr> </tr>
</thead> </thead>
<tbody <tbody v-for="(nItem, nIndex) in DefaultPlanTimeList" :key="nIndex + 10000">
v-for="(nItem, nIndex) in DefaultPlanTimeList"
:key="nIndex + 10000"
>
<tr v-for="(sItem, sIndex) in nItem.TimeList"> <tr v-for="(sItem, sIndex) in nItem.TimeList">
<td <td :rowspan="nItem.TimeList.length" v-if="sIndex == 0" style="position: relative">
:rowspan="nItem.TimeList.length" <q-select filled style="width: 220px" stack-label multiple v-model="nItem.DateList" ref="DateList"
v-if="sIndex == 0" :options="checkedDays" :label="
style="position: relative"
>
<q-select
filled
style="width: 220px"
stack-label
multiple
v-model="nItem.DateList"
ref="DateList"
:options="checkedDays"
:label="
msg.AllChangePlanItem.ClassStyle == 1 msg.AllChangePlanItem.ClassStyle == 1
? '选择周几' ? '选择周几'
: '选择日期' : '选择日期'
" " :dense="false" class="col-6" emit-value map-options clearable>
:dense="false"
class="col-6"
emit-value
map-options
clearable
>
</q-select> </q-select>
<a <a @click="deletePlan(nIndex)" style="color: blue; cursor: pointer; position: absolute">删除</a>
@click="deletePlan(nIndex)"
style="color: blue; cursor: pointer; position: absolute"
>删除</a
>
</td> </td>
<td> <td>
<q-input <q-input filled v-model="sItem.StartTime" class="col-6 q-pl-lg" placeholder="开始时间" mask="time">
filled
v-model="sItem.StartTime"
class="col-6 q-pl-lg"
placeholder="开始时间"
mask="time"
>
<template v-slot:append> <template v-slot:append>
<q-icon name="access_time" class="cursor-pointer"> <q-icon name="access_time" class="cursor-pointer">
<q-popup-proxy <q-popup-proxy transition-show="scale" transition-hide="scale">
transition-show="scale"
transition-hide="scale"
>
<q-time v-model="sItem.StartTime"> <q-time v-model="sItem.StartTime">
<div class="row items-center justify-end"> <div class="row items-center justify-end">
<q-btn <q-btn v-close-popup label="确定" color="primary" flat />
v-close-popup
label="确定"
color="primary"
flat
/>
</div> </div>
</q-time> </q-time>
</q-popup-proxy> </q-popup-proxy>
...@@ -656,27 +392,13 @@ ...@@ -656,27 +392,13 @@
</q-input> </q-input>
</td> </td>
<td> <td>
<q-input <q-input filled v-model="sItem.EndTime" class="col-6 q-pr-lg" placeholder="结束时间" mask="time">
filled
v-model="sItem.EndTime"
class="col-6 q-pr-lg"
placeholder="结束时间"
mask="time"
>
<template v-slot:append> <template v-slot:append>
<q-icon name="access_time" class="cursor-pointer"> <q-icon name="access_time" class="cursor-pointer">
<q-popup-proxy <q-popup-proxy transition-show="scale" transition-hide="scale">
transition-show="scale"
transition-hide="scale"
>
<q-time v-model="sItem.EndTime"> <q-time v-model="sItem.EndTime">
<div class="row items-center justify-end"> <div class="row items-center justify-end">
<q-btn <q-btn v-close-popup label="确定" color="primary" flat />
v-close-popup
label="确定"
color="primary"
flat
/>
</div> </div>
</q-time> </q-time>
</q-popup-proxy> </q-popup-proxy>
...@@ -685,34 +407,15 @@ ...@@ -685,34 +407,15 @@
</q-input> </q-input>
</td> </td>
<td> <td>
<q-input <q-input filled stack-label maxlength="20" v-model="sItem.TimeHour"
filled @keyup.native="checkPrice(sItem, 'TimeHour')" :dense="false" class="col-6 q-pr-lg"
stack-label label="消耗课时" />
maxlength="20"
v-model="sItem.TimeHour"
@keyup.native="checkPrice(sItem, 'TimeHour')"
:dense="false"
class="col-6 q-pr-lg"
label="消耗课时"
/>
</td> </td>
<td> <td>
<q-btn <q-btn size="10px" v-if="sIndex == 0" @click="addPlanTime(nItem)" round color="primary"
size="10px" icon="iconfont icon-img_haha" />
v-if="sIndex == 0" <q-btn v-if="sIndex > 0" size="10px" @click="deletePlanTime(nItem, sIndex)" round color="red"
@click="addPlanTime(nItem)" icon="iconfont icon-guanbi1" />
round
color="primary"
icon="iconfont icon-img_haha"
/>
<q-btn
v-if="sIndex > 0"
size="10px"
@click="deletePlanTime(nItem, sIndex)"
round
color="red"
icon="iconfont icon-guanbi1"
/>
</td> </td>
</tr> </tr>
</tbody> </tbody>
...@@ -720,65 +423,33 @@ ...@@ -720,65 +423,33 @@
</template> </template>
<div class="row wrap" style="margin-top: 30px; display: none"> <div class="row wrap" style="margin-top: 30px; display: none">
<div class="col-6"> <div class="col-6">
<q-input <q-input filled stack-label maxlength="6" v-model="msg.AllChangePlanItem.ClassHours" :dense="false"
filled class="col-6 q-pr-lg q-pb-lg" label="学习课时" @keyup.native="
stack-label
maxlength="6"
v-model="msg.AllChangePlanItem.ClassHours"
:dense="false"
class="col-6 q-pr-lg q-pb-lg"
label="学习课时"
@keyup.native="
checkInteger(msg.AllChangePlanItem, 'ClassHours') checkInteger(msg.AllChangePlanItem, 'ClassHours')
" " />
/>
</div> </div>
<div class="col-6"> <div class="col-6">
<q-select <q-select label="课时分钟数" filled stack-label v-model="msg.AllChangePlanItem.ClassHourMinute"
label="课时分钟数" :options="ClassHourMinuteArray" option-value="Id" option-label="Name" :dense="false"
filled class="col-6 q-pr-lg q-pb-lg" emit-value map-options>
stack-label
v-model="msg.AllChangePlanItem.ClassHourMinute"
:options="ClassHourMinuteArray"
option-value="Id"
option-label="Name"
:dense="false"
class="col-6 q-pr-lg q-pb-lg"
emit-value
map-options
>
</q-select> </q-select>
</div> </div>
</div> </div>
</div> </div>
<div v-if="msg.ChangeType == 3"> <div v-if="msg.ChangeType == 3">
<div <div class="text-caption q-mb-lg q-px-md text-grey-6 col" style="margin-top: 20px">
class="text-caption q-mb-lg q-px-md text-grey-6 col"
style="margin-top: 20px"
>
目标教室 目标教室
</div> </div>
<div class="row"> <div class="row">
<q-select <q-select filled option-value="RoomId" option-label="RoomName" v-model="msg.ClassRoomId"
filled :options="roomList" emit-value map-options label="教室" class="col-6 q-pr-lg">
option-value="RoomId" <template v-slot:option="{
option-label="RoomName"
v-model="msg.ClassRoomId"
:options="roomList"
emit-value
map-options
label="教室"
class="col-6 q-pr-lg"
>
<template
v-slot:option="{
itemProps, itemProps,
itemEvents, itemEvents,
opt, opt,
selected, selected,
toggleOption, toggleOption,
}" }">
>
<q-item v-bind="itemProps" v-on="itemEvents"> <q-item v-bind="itemProps" v-on="itemEvents">
<q-item-section> <q-item-section>
<q-item-label v-html="opt.RoomName"></q-item-label> <q-item-label v-html="opt.RoomName"></q-item-label>
...@@ -789,26 +460,13 @@ ...@@ -789,26 +460,13 @@
</q-item> </q-item>
</template> </template>
</q-select> </q-select>
<q-input <q-input v-if="msg.MoveType == '2'" filled v-model="msg.TakeEffectTime" class="col-6" mask="date"
v-if="msg.MoveType == '2'" label="生效时间">
filled
v-model="msg.TakeEffectTime"
class="col-6"
mask="date"
label="生效时间"
>
<template v-slot:append> <template v-slot:append>
<q-icon name="event" class="cursor-pointer"> <q-icon name="event" class="cursor-pointer">
<q-popup-proxy <q-popup-proxy ref="qDateProxy1" transition-show="scale" transition-hide="scale">
ref="qDateProxy1" <q-date v-model="msg.TakeEffectTime" :options="optionsFn"
transition-show="scale" @input="() => $refs.qDateProxy1.hide()" />
transition-hide="scale"
>
<q-date
v-model="msg.TakeEffectTime"
:options="optionsFn"
@input="() => $refs.qDateProxy1.hide()"
/>
</q-popup-proxy> </q-popup-proxy>
</q-icon> </q-icon>
</template> </template>
...@@ -816,45 +474,20 @@ ...@@ -816,45 +474,20 @@
</div> </div>
</div> </div>
<div v-if="msg.ChangeType == 2"> <div v-if="msg.ChangeType == 2">
<div <div class="text-caption q-mb-lg q-px-md text-grey-6 col" style="margin-top: 20px">
class="text-caption q-mb-lg q-px-md text-grey-6 col"
style="margin-top: 20px"
>
目标老师 目标老师
</div> </div>
<div class="row"> <div class="row">
<q-select <q-select filled option-value="TId" option-label="TeacherName" v-model="msg.TeacherId"
filled :options="TeacherList" emit-value map-options label="老师" class="col-6 q-pr-lg">
option-value="TId"
option-label="TeacherName"
v-model="msg.TeacherId"
:options="TeacherList"
emit-value
map-options
label="老师"
class="col-6 q-pr-lg"
>
</q-select> </q-select>
<q-input <q-input filled v-if="msg.MoveType == '2'" v-model="msg.TakeEffectTime" class="col-6" mask="date"
filled label="生效时间">
v-if="msg.MoveType == '2'"
v-model="msg.TakeEffectTime"
class="col-6"
mask="date"
label="生效时间"
>
<template v-slot:append> <template v-slot:append>
<q-icon name="event" class="cursor-pointer"> <q-icon name="event" class="cursor-pointer">
<q-popup-proxy <q-popup-proxy ref="qDateProxy1" transition-show="scale" transition-hide="scale">
ref="qDateProxy1" <q-date v-model="msg.TakeEffectTime" :options="optionsFn"
transition-show="scale" @input="() => $refs.qDateProxy1.hide()" />
transition-hide="scale"
>
<q-date
v-model="msg.TakeEffectTime"
:options="optionsFn"
@input="() => $refs.qDateProxy1.hide()"
/>
</q-popup-proxy> </q-popup-proxy>
</q-icon> </q-icon>
</template> </template>
...@@ -862,70 +495,33 @@ ...@@ -862,70 +495,33 @@
</div> </div>
</div> </div>
<div v-if="msg.ChangeType == 4 && msg.MoveType == '2'" class="row"> <div v-if="msg.ChangeType == 4 && msg.MoveType == '2'" class="row">
<q-input <q-input filled v-model="msg.TakeEffectTime" class="col-6" mask="date" label="生效时间">
filled
v-model="msg.TakeEffectTime"
class="col-6"
mask="date"
label="生效时间"
>
<template v-slot:append> <template v-slot:append>
<q-icon name="event" class="cursor-pointer"> <q-icon name="event" class="cursor-pointer">
<q-popup-proxy <q-popup-proxy ref="qDateProxy1" transition-show="scale" transition-hide="scale">
ref="qDateProxy1" <q-date v-model="msg.TakeEffectTime" :options="optionsFn" @input="() => $refs.qDateProxy1.hide()" />
transition-show="scale"
transition-hide="scale"
>
<q-date
v-model="msg.TakeEffectTime"
:options="optionsFn"
@input="() => $refs.qDateProxy1.hide()"
/>
</q-popup-proxy> </q-popup-proxy>
</q-icon> </q-icon>
</template> </template>
</q-input> </q-input>
</div> </div>
<q-input <q-input filled type="textarea" :rows="3" style="margin-top: 20px" stack-label maxlength="2000"
filled v-model="msg.Remarks" :dense="false" class="col-12 q-pb-lg" label="备注" />
type="textarea"
:rows="3"
style="margin-top: 20px"
stack-label
maxlength="2000"
v-model="msg.Remarks"
:dense="false"
class="col-12 q-pb-lg"
label="备注"
/>
<div class="row"> <div class="row">
<div class="col-12 q-mt-md text-grey-6"> <div class="col-12 q-mt-md text-grey-6">
上传附件:<span 上传附件:<span class="fj-tip" style="font-size: 10px; color: #f00">*单文件限制5M内</span>
class="fj-tip"
style="font-size: 10px; color: #f00"
>*单文件限制5M内</span
>
</div> </div>
<div> <div>
<!-- <p>{{$t('fnc.scfujian')}}<span class="_addUpload_tips">{{$t('tips.wjdxbncgsz')}}</span></p> -->
<div class="_addUpload_box clearfix"> <div class="_addUpload_box clearfix">
<template v-for="(file, fIndex) in saveMsg"> <template v-for="(file, fIndex) in saveMsg">
<div v-if="file.Type == 3"> <div v-if="file.Type == 3">
<div style="width: 100%; height: 100%; overflow: hidden"> <div style="width: 100%; height: 100%; overflow: hidden">
<img <img :src="file.Url ? file.Url : file.Content" @click="showUpLoadFile(file)" />
:src="file.Url ? file.Url : file.Content"
@click="showUpLoadFile(file)"
/>
</div> </div>
<span <span class="iconfont icon-guanbi1" @click="deleteUploadFile(fIndex)"></span>
class="iconfont icon-guanbi1"
@click="deleteUploadFile(fIndex)"
></span>
</div> </div>
<div v-if="file.Type == 1"> <div v-if="file.Type == 1">
<div <div class="iconfont" :class="
class="iconfont"
:class="
file.Content.substring( file.Content.substring(
file.Content.lastIndexOf('.') + 1, file.Content.lastIndexOf('.') + 1,
file.Content.length file.Content.length
...@@ -946,53 +542,24 @@ ...@@ -946,53 +542,24 @@
).toUpperCase() == 'DOC' ).toUpperCase() == 'DOC'
? 'icon-word' ? 'icon-word'
: 'icon-excel' : 'icon-excel'
" " @click="showUpLoadFile(file)"></div>
@click="showUpLoadFile(file)" <span class="iconfont icon-guanbi1" @click="deleteUploadFile(fIndex)"></span>
></div>
<span
class="iconfont icon-guanbi1"
@click="deleteUploadFile(fIndex)"
></span>
</div> </div>
<div v-if="file.Type == 2"> <div v-if="file.Type == 2">
<div <div class="iconfont icon-wenjian" @click="showUpLoadFile(file)"></div>
class="iconfont icon-wenjian" <span class="iconfont icon-guanbi1" @click="deleteUploadFile(fIndex)"></span>
@click="showUpLoadFile(file)"
></div>
<span
class="iconfont icon-guanbi1"
@click="deleteUploadFile(fIndex)"
></span>
</div> </div>
<div v-if="file.Type == 4"> <div v-if="file.Type == 4">
<div <div class="iconfont icon-yasuobao" @click="showUpLoadFile(file)"></div>
class="iconfont icon-yasuobao" <span class="iconfont icon-guanbi1" @click="deleteUploadFile(fIndex)"></span>
@click="showUpLoadFile(file)"
></div>
<span
class="iconfont icon-guanbi1"
@click="deleteUploadFile(fIndex)"
></span>
</div> </div>
<div v-if="file.Type == 5"> <div v-if="file.Type == 5">
<div <div class="iconfont icon-shipin" @click="showUpLoadFile(file)"></div>
class="iconfont icon-shipin" <span class="iconfont icon-guanbi1" @click="deleteUploadFile(fIndex)"></span>
@click="showUpLoadFile(file)"
></div>
<span
class="iconfont icon-guanbi1"
@click="deleteUploadFile(fIndex)"
></span>
</div> </div>
</template> </template>
<div class="_pic_upload"> <div class="_pic_upload">
<el-upload <el-upload drag :http-request="uploadFileBtn" :multiple="true" :show-file-list="false" action="">
drag
:http-request="uploadFileBtn"
:multiple="true"
:show-file-list="false"
action=""
>
<i class="el-icon-plus avatar-uploader-icon"></i> <i class="el-icon-plus avatar-uploader-icon"></i>
<div class="el-upload__text"> <div class="el-upload__text">
{{ $t("active.ld_djscwj") }} {{ $t("active.ld_djscwj") }}
...@@ -1007,28 +574,12 @@ ...@@ -1007,28 +574,12 @@
<q-separator /> <q-separator />
<q-card-actions align="right" class="bg-white"> <q-card-actions align="right" class="bg-white">
<q-btn <q-btn label="取消" flat color="grey-10" style="font-weight: 400 !important" @click="closeSaveForm" />
label="取消" <q-btn label="立即提交" color="accent q-px-md" style="font-weight: 400 !important" :loading="saveLoading"
flat @click="save" />
color="grey-10"
style="font-weight: 400 !important"
@click="closeSaveForm"
/>
<q-btn
label="立即提交"
color="accent q-px-md"
style="font-weight: 400 !important"
:loading="saveLoading"
@click="save"
/>
</q-card-actions> </q-card-actions>
<div <div v-if="picIsShow" class="_show_img_box" @click="(picIsShow = false), (picObj = [])">
v-if="picIsShow" <div style="
class="_show_img_box"
@click="(picIsShow = false), (picObj = [])"
>
<div
style="
position: absolute; position: absolute;
width: 800px; width: 800px;
height: 600px; height: 600px;
...@@ -1036,19 +587,9 @@ ...@@ -1036,19 +587,9 @@
top: 50%; top: 50%;
margin-left: -400px; margin-left: -400px;
margin-top: -300px; margin-top: -300px;
" ">
> <el-carousel :initial-index="initialIndex" height="600px" :interval="5000" trigger="click">
<el-carousel <el-carousel-item style="height: 600px; overflow: auto" v-for="(item, index) in picObj" :key="index">
:initial-index="initialIndex"
height="600px"
:interval="5000"
trigger="click"
>
<el-carousel-item
style="height: 600px; overflow: auto"
v-for="(item, index) in picObj"
:key="index"
>
<img :src="item" style="" /> <img :src="item" style="" />
</el-carousel-item> </el-carousel-item>
</el-carousel> </el-carousel>
...@@ -1059,770 +600,783 @@ ...@@ -1059,770 +600,783 @@
</template> </template>
<script> <script>
import { import {
getClassDropDownList, getClassDropDownList,
getSchoolDropdown, getSchoolDropdown,
queryClassRoomPage, queryClassRoomPage,
getTeacherDropDownList, getTeacherDropDownList,
SetChangeClassPlan, SetChangeClassPlan,
} from "../../api/school/index"; } from "../../api/school/index";
import { queryCourseDropdownList } from "../../api/course/index"; import {
import { UploadSelfFile } from "../../api/common/common"; queryCourseDropdownList
import Lockr from "lockr"; } from "../../api/course/index";
export default { import {
props: { UploadSelfFile
ClassId: { } from "../../api/common/common";
type: Number, import Lockr from "lockr";
default: null export default {
props: {
setingObj: {
type: Object,
default: null
}
}, },
}, data() {
data() { return {
return { TeacherList: [],
TeacherList: [], pickerOptions: {
pickerOptions: { disabledDate(time) {
disabledDate(time) { return time.getTime() < Date.now();
return time.getTime() < Date.now(); },
},
},
pages: {
rowsPerPage: 100000,
},
persistent: true,
saveLoading: false,
contentStyle: {},
contentActiveStyle: {},
pickers: {
start: "09:00",
step: "00:15",
end: "22:30",
},
thumbStyle: {
right: "2px",
borderRadius: "5px",
backgroundColor: "#027be3",
width: "5px",
opacity: 0.75,
},
msg: {
Id: 0,
ClassId: 0,
SchoolId: -1,
CouseId: 0,
ChangeType: 1,
MoveType: "1",
ClassRoomId: 0,
TeacherId: 0,
OldChangePlanItemList: [],
NewChangePlanItemList: [],
AllChangePlanItem: {
OpenTimeStr: "", //开班时间
ClassStyle: 1, //排课方式(1-周,2-月,3-固定日期,4-约课)
ClassHours: 0, //
ClassHourMinute: 0,
WeekDayList: [], //周几
TeacherId: 0,
ClassRoomId: 0,
DefaultTimeList: [],
},
TakeEffectTime: "", //生效日期
Remarks: "", //备注
ReceiptFileList: [], //附件
},
selected: [],
classList: [],
schoolList: [],
courseList: [],
queryClass: {
CourseId: 0,
IsAddDefault: 1,
SchoolId: -1,
Teacher_Id: 0,
MoreStatus: "1,2",
IsQuerySurplusPlan: 1,
},
currentClass: [],
columns2: [
{
name: "RoomName",
label: "教室名称",
field: "RoomName",
align: "left",
},
{
name: "ClassDate",
label: "上课日期",
field: "ClassDate",
align: "left",
},
{
name: "TeacherName",
label: "老师",
field: "TeacherName",
align: "left",
},
{
name: "TimeList",
label: "上课时间",
field: "TimeList",
align: "left",
},
],
columns: [
{
name: "RoomName",
label: "教室名称",
field: "RoomName",
align: "left",
},
{
name: "ClassDate",
label: "上课日期",
field: "ClassDate",
align: "left",
},
{
name: "TeacherName",
label: "老师",
field: "TeacherName",
align: "left",
},
{
name: "TimeList",
label: "上课时间",
field: "TimeList",
align: "left",
},
{
name: "TargetClassDate",
label: "目标日期",
field: "TargetClassDate",
align: "left",
},
{
name: "TargetTimeList",
label: "目标时间",
field: "TargetTimeList",
align: "left",
},
],
changeType: [
{
Id: 1,
Name: "课程时间",
},
{
Id: 2,
Name: "老师",
},
{
Id: 3,
Name: "教室",
},
{
Id: 4,
Name: "取消上课",
},
],
classSetList: [
{
Name: "按周排课",
Id: 1,
},
{
Name: "按月排课",
Id: 2,
},
{
Name: "固定日期",
Id: 3,
},
],
roomList: [],
//选中日期/星期
checkedDays: [],
//周几
weekList: [
{
label: "周一",
value: "1",
icon: 1,
},
{
label: "周二",
value: "2",
icon: 2,
},
{
label: "周三",
value: "3",
icon: 3,
}, },
{ pages: {
label: "周四", rowsPerPage: 100000,
value: "4",
icon: 4,
}, },
{ persistent: true,
label: "周五", saveLoading: false,
value: "5", contentStyle: {},
icon: 5, contentActiveStyle: {},
pickers: {
start: "09:00",
step: "00:15",
end: "22:30",
}, },
{ thumbStyle: {
label: "周六", right: "2px",
value: "6", borderRadius: "5px",
icon: 6, backgroundColor: "#027be3",
width: "5px",
opacity: 0.75,
}, },
{ msg: {
label: "周日", Id: 0,
value: "7", ClassId: 0,
icon: 7, SchoolId: -1,
CouseId: 0,
ChangeType: 1,
MoveType: "1",
ClassRoomId: 0,
TeacherId: 0,
OldChangePlanItemList: [],
NewChangePlanItemList: [],
AllChangePlanItem: {
OpenTimeStr: "", //开班时间
ClassStyle: 1, //排课方式(1-周,2-月,3-固定日期,4-约课)
ClassHours: 0, //
ClassHourMinute: 0,
WeekDayList: [], //周几
TeacherId: 0,
ClassRoomId: 0,
DefaultTimeList: [],
},
TakeEffectTime: "", //生效日期
Remarks: "", //备注
ReceiptFileList: [], //附件
}, },
], selected: [],
dayList: [], //日期数组1-31 classList: [],
//默认上课时间数组 schoolList: [],
DefaultPlanTimeList: [], courseList: [],
ClassHourMinuteArray: [ queryClass: {
{ CourseId: 0,
Id: 45, IsAddDefault: 1,
Name: 45, SchoolId: -1,
Teacher_Id: 0,
MoreStatus: "1,2",
IsQuerySurplusPlan: 1,
}, },
{ currentClass: [],
Id: 60, columns2: [{
Name: 60, name: "RoomName",
label: "教室名称",
field: "RoomName",
align: "left",
},
{
name: "ClassDate",
label: "上课日期",
field: "ClassDate",
align: "left",
},
{
name: "TeacherName",
label: "老师",
field: "TeacherName",
align: "left",
},
{
name: "TimeList",
label: "上课时间",
field: "TimeList",
align: "left",
},
],
columns: [{
name: "RoomName",
label: "教室名称",
field: "RoomName",
align: "left",
},
{
name: "ClassDate",
label: "上课日期",
field: "ClassDate",
align: "left",
},
{
name: "TeacherName",
label: "老师",
field: "TeacherName",
align: "left",
},
{
name: "TimeList",
label: "上课时间",
field: "TimeList",
align: "left",
},
{
name: "TargetClassDate",
label: "目标日期",
field: "TargetClassDate",
align: "left",
},
{
name: "TargetTimeList",
label: "目标时间",
field: "TargetTimeList",
align: "left",
},
],
changeType: [{
Id: 1,
Name: "课程时间",
},
{
Id: 2,
Name: "老师",
},
{
Id: 3,
Name: "教室",
},
{
Id: 4,
Name: "取消上课",
},
],
classSetList: [{
Name: "按周排课",
Id: 1,
},
{
Name: "按月排课",
Id: 2,
},
{
Name: "固定日期",
Id: 3,
},
],
roomList: [],
//选中日期/星期
checkedDays: [],
//周几
weekList: [{
label: "周一",
value: "1",
icon: 1,
},
{
label: "周二",
value: "2",
icon: 2,
},
{
label: "周三",
value: "3",
icon: 3,
},
{
label: "周四",
value: "4",
icon: 4,
},
{
label: "周五",
value: "5",
icon: 5,
},
{
label: "周六",
value: "6",
icon: 6,
},
{
label: "周日",
value: "7",
icon: 7,
},
],
dayList: [], //日期数组1-31
//默认上课时间数组
DefaultPlanTimeList: [],
ClassHourMinuteArray: [{
Id: 45,
Name: 45,
},
{
Id: 60,
Name: 60,
},
],
classSetMsg: {
OpenTime: "", //开班时间
ClassStyle: 1, //排课方式(1-周,2-月,3-固定日期,4-约课)
ClassHours: "",
ClassHourMinute: "",
}, },
], saveMsg: [],
picIsShow: false,
classSetMsg: { picObj: [],
OpenTime: "", //开班时间 initialIndex: 0,
ClassStyle: 1, //排课方式(1-周,2-月,3-固定日期,4-约课) };
ClassHours: "",
ClassHourMinute: "",
},
saveMsg: [],
picIsShow: false,
picObj: [],
initialIndex: 0,
};
},
mounted() {
let u = Lockr.get("loginUserInfo");
if (u) {
this.queryClass.Teacher_Id = u.AccountId;
}
if(this.ClassId){
this.msg.ClassId = this.ClassId;
}
this.getClass();
this.getSchool();
this.getCourseList();
this.getClassRoomPage();
this.GetTeacherList();
this.initDayList();
},
methods: {
GetTeacherList() {
getTeacherDropDownList({}).then((res) => {
if (res.Code == 1) {
this.TeacherList = res.Data;
var obj = {
TeacherName: "请选择",
TId: 0,
};
this.TeacherList.unshift(obj);
}
});
},
getClassRoomPage() {
queryClassRoomPage({
pageIndex: 1,
pageSize: 10000,
RoomName: "",
School_Id: 0, //校区编号
Status: "-1", //状态
}).then((res) => {
this.roomList = res.Data.PageData;
var obj = {
RoomName: "请选择",
RoomId: 0,
SchoolName: "",
};
this.roomList.push(obj);
});
}, },
closeSaveForm() { created() {
this.$emit("close"); if (this.setingObj) {
this.persistent = false; if (this.setingObj.CouseId) {
this.msg.CouseId = this.setingObj.CouseId;
this.queryClass.CourseId = this.setingObj.CouseId;
}
if (this.setingObj.ClassId) {
this.msg.ClassId = this.setingObj.ClassId;
}
if (this.setingObj.School_Id) {
this.msg.SchoolId = this.setingObj.School_Id;
}
}
this.getSchool();
this.getCourseList();
}, },
optionsFn(date) { mounted() {
var myDate = new Date(); let u = Lockr.get("loginUserInfo");
let month = myDate.getMonth() + 1; if (this.setingObj && this.setingObj.Teacher_Id) {
if (month < 10) { this.queryClass.Teacher_Id = this.setingObj.Teacher_Id;
month = "0" + month; } else if (u) {
this.queryClass.Teacher_Id = u.AccountId;
} }
var toDay = myDate.getFullYear() + "/" + month + "/" + myDate.getDate(); this.getClass(0);
return date >= toDay; this.getClassRoomPage();
this.GetTeacherList();
this.initDayList();
}, },
//保存修改 methods: {
save() { GetTeacherList() {
//变更类型课程时间 变更范围单个或多个 getTeacherDropDownList({}).then((res) => {
if (this.msg.ChangeType == 1 && this.msg.MoveType == 1) { if (res.Code == 1) {
if (this.selected.length > 0) { this.TeacherList = res.Data;
var obj = {
TeacherName: "请选择",
TId: 0,
};
this.TeacherList.unshift(obj);
}
});
},
getClassRoomPage() {
queryClassRoomPage({
pageIndex: 1,
pageSize: 10000,
RoomName: "",
School_Id: 0, //校区编号
Status: "-1", //状态
}).then((res) => {
this.roomList = res.Data.PageData;
var obj = {
RoomName: "请选择",
RoomId: 0,
SchoolName: "",
};
this.roomList.push(obj);
});
},
closeSaveForm() {
this.$emit("close");
this.persistent = false;
},
optionsFn(date) {
var myDate = new Date();
let month = myDate.getMonth() + 1;
if (month < 10) {
month = "0" + month;
}
var toDay = myDate.getFullYear() + "/" + month + "/" + myDate.getDate();
return date >= toDay;
},
//保存修改
save() {
//变更类型课程时间 变更范围单个或多个
if (this.msg.ChangeType == 1 && this.msg.MoveType == 1) {
if (this.selected.length > 0) {
this.msg.OldChangePlanItemList = [];
this.msg.NewChangePlanItemList = [];
let MySelect = JSON.parse(JSON.stringify(this.selected));
if (MySelect && MySelect.length > 0) {
MySelect.forEach((x) => {
this.msg.OldChangePlanItemList.push(x);
this.msg.NewChangePlanItemList.push(x.NewPlan);
});
}
if (
this.msg.OldChangePlanItemList &&
this.msg.OldChangePlanItemList.length > 0
) {
this.msg.OldChangePlanItemList.forEach((x) => {
delete x.NewPlan;
x.PlanTimeList = x.TimeList;
delete x.TimeList;
});
}
if (
this.msg.NewChangePlanItemList &&
this.msg.NewChangePlanItemList.length > 0
) {
this.msg.NewChangePlanItemList.forEach((x) => {
x.PlanTimeList = x.TimeList;
delete x.TimeList;
});
}
this.msg.AllChangePlanItem = {};
} else {
this.$q.notify({
type: "negative",
position: "top",
message: `请选择变更数据`,
});
return;
}
}
//变更类型课程时间 变更范围 全局
if (this.msg.ChangeType == 1 && this.msg.MoveType == 2) {
this.msg.OldChangePlanItemList = []; this.msg.OldChangePlanItemList = [];
this.msg.NewChangePlanItemList = []; this.msg.NewChangePlanItemList = [];
let MySelect = JSON.parse(JSON.stringify(this.selected)); this.msg.AllChangePlanItem.WeekDayList = this.checkedDays;
if (MySelect && MySelect.length > 0) { this.msg.AllChangePlanItem.DefaultTimeList = this.DefaultPlanTimeList;
MySelect.forEach((x) => { }
//变更类型老师 变更范围单个或多个
if (this.msg.ChangeType == 2 && this.msg.MoveType == 1) {
if (this.selected.length > 0) {
if (this.msg.TeacherId == 0) {
this.$q.notify({
type: "negative",
position: "top",
message: `请选择目标老师`,
});
return;
}
this.msg.OldChangePlanItemList = [];
this.msg.NewChangePlanItemList = [];
let Array1 = JSON.parse(JSON.stringify(this.selected));
Array1.forEach((x) => {
delete x.NewPlan;
x.PlanTimeList = x.TimeList;
delete x.TimeList;
this.msg.OldChangePlanItemList.push(x); this.msg.OldChangePlanItemList.push(x);
});
let Array2 = JSON.parse(JSON.stringify(this.selected));
Array2.forEach((x) => {
x.NewPlan.PlanTimeList = x.NewPlan.TimeList;
delete x.NewPlan.TimeList;
x.NewPlan.TeacherId = this.msg.TeacherId;
this.msg.NewChangePlanItemList.push(x.NewPlan); this.msg.NewChangePlanItemList.push(x.NewPlan);
}); });
this.msg.AllChangePlanItem = {};
} else {
this.$q.notify({
type: "negative",
position: "top",
message: `请选择变更数据`,
});
return;
} }
if ( }
this.msg.OldChangePlanItemList && //变更类型老师 变更范围 单全局
this.msg.OldChangePlanItemList.length > 0 if (this.msg.ChangeType == 2 && this.msg.MoveType == 2) {
) { this.msg.OldChangePlanItemList = [];
this.msg.OldChangePlanItemList.forEach((x) => { this.msg.NewChangePlanItemList = [];
this.msg.AllChangePlanItem.TeacherId = this.msg.TeacherId;
}
//变更类型教室 变更范围单个或多个
if (this.msg.ChangeType == 3 && this.msg.MoveType == 1) {
if (this.selected.length > 0) {
if (this.msg.ClassRoomId == 0) {
this.$q.notify({
type: "negative",
position: "top",
message: `请选择目标教室`,
});
return;
}
this.msg.OldChangePlanItemList = [];
this.msg.NewChangePlanItemList = [];
let Array1 = JSON.parse(JSON.stringify(this.selected));
Array1.forEach((x) => {
delete x.NewPlan; delete x.NewPlan;
x.PlanTimeList = x.TimeList; x.PlanTimeList = x.TimeList;
delete x.TimeList; delete x.TimeList;
this.msg.OldChangePlanItemList.push(x);
}); });
} let Array2 = JSON.parse(JSON.stringify(this.selected));
if ( Array2.forEach((x) => {
this.msg.NewChangePlanItemList && x.NewPlan.PlanTimeList = x.NewPlan.TimeList;
this.msg.NewChangePlanItemList.length > 0 delete x.NewPlan.TimeList;
) { x.NewPlan.ClassRoomId = this.msg.ClassRoomId;
this.msg.NewChangePlanItemList.forEach((x) => { this.msg.NewChangePlanItemList.push(x.NewPlan);
x.PlanTimeList = x.TimeList;
delete x.TimeList;
}); });
} this.msg.AllChangePlanItem = {};
this.msg.AllChangePlanItem = {}; } else {
} else {
this.$q.notify({
type: "negative",
position: "top",
message: `请选择变更数据`,
});
return;
}
}
//变更类型课程时间 变更范围 全局
if (this.msg.ChangeType == 1 && this.msg.MoveType == 2) {
this.msg.OldChangePlanItemList = [];
this.msg.NewChangePlanItemList = [];
this.msg.AllChangePlanItem.WeekDayList = this.checkedDays;
this.msg.AllChangePlanItem.DefaultTimeList = this.DefaultPlanTimeList;
}
//变更类型老师 变更范围单个或多个
if (this.msg.ChangeType == 2 && this.msg.MoveType == 1) {
if (this.selected.length > 0) {
if (this.msg.TeacherId == 0) {
this.$q.notify({ this.$q.notify({
type: "negative", type: "negative",
position: "top", position: "top",
message: `请选择目标老师`, message: `请选择变更数据`,
}); });
return; return;
} }
}
//变更类型教室 变更范围全局
if (this.msg.ChangeType == 3 && this.msg.MoveType == 2) {
this.msg.OldChangePlanItemList = []; this.msg.OldChangePlanItemList = [];
this.msg.NewChangePlanItemList = []; this.msg.NewChangePlanItemList = [];
let Array1 = JSON.parse(JSON.stringify(this.selected)); this.msg.AllChangePlanItem.ClassRoomId = this.msg.ClassRoomId;
Array1.forEach((x) => {
delete x.NewPlan;
x.PlanTimeList = x.TimeList;
delete x.TimeList;
this.msg.OldChangePlanItemList.push(x);
});
let Array2 = JSON.parse(JSON.stringify(this.selected));
Array2.forEach((x) => {
x.NewPlan.PlanTimeList = x.NewPlan.TimeList;
delete x.NewPlan.TimeList;
x.NewPlan.TeacherId = this.msg.TeacherId;
this.msg.NewChangePlanItemList.push(x.NewPlan);
});
this.msg.AllChangePlanItem = {};
} else {
this.$q.notify({
type: "negative",
position: "top",
message: `请选择变更数据`,
});
return;
} }
} //变更类型 取消上课 变更范围单个或多个
//变更类型老师 变更范围 单全局 if (this.msg.ChangeType == 4 && this.msg.MoveType == 1) {
if (this.msg.ChangeType == 2 && this.msg.MoveType == 2) { if (this.selected.length > 0) {
this.msg.OldChangePlanItemList = []; this.msg.OldChangePlanItemList = [];
this.msg.NewChangePlanItemList = []; this.msg.NewChangePlanItemList = [];
this.msg.AllChangePlanItem.TeacherId = this.msg.TeacherId; let Array1 = JSON.parse(JSON.stringify(this.selected));
} Array1.forEach((x) => {
//变更类型教室 变更范围单个或多个 delete x.NewPlan;
if (this.msg.ChangeType == 3 && this.msg.MoveType == 1) { x.PlanTimeList = x.TimeList;
if (this.selected.length > 0) { delete x.TimeList;
if (this.msg.ClassRoomId == 0) { this.msg.OldChangePlanItemList.push(x);
});
this.msg.AllChangePlanItem = {};
} else {
this.$q.notify({ this.$q.notify({
type: "negative", type: "negative",
position: "top", position: "top",
message: `请选择目标教室`, message: `请选择变更数据`,
}); });
return; return;
} }
this.msg.OldChangePlanItemList = [];
this.msg.NewChangePlanItemList = [];
let Array1 = JSON.parse(JSON.stringify(this.selected));
Array1.forEach((x) => {
delete x.NewPlan;
x.PlanTimeList = x.TimeList;
delete x.TimeList;
this.msg.OldChangePlanItemList.push(x);
});
let Array2 = JSON.parse(JSON.stringify(this.selected));
Array2.forEach((x) => {
x.NewPlan.PlanTimeList = x.NewPlan.TimeList;
delete x.NewPlan.TimeList;
x.NewPlan.ClassRoomId = this.msg.ClassRoomId;
this.msg.NewChangePlanItemList.push(x.NewPlan);
});
this.msg.AllChangePlanItem = {};
} else {
this.$q.notify({
type: "negative",
position: "top",
message: `请选择变更数据`,
});
return;
} }
} //变更类型 取消上课 变更范围 全局
//变更类型教室 变更范围全局 if (this.msg.ChangeType == 4 && this.msg.MoveType == 2) {
if (this.msg.ChangeType == 3 && this.msg.MoveType == 2) {
this.msg.OldChangePlanItemList = [];
this.msg.NewChangePlanItemList = [];
this.msg.AllChangePlanItem.ClassRoomId = this.msg.ClassRoomId;
}
//变更类型 取消上课 变更范围单个或多个
if (this.msg.ChangeType == 4 && this.msg.MoveType == 1) {
if (this.selected.length > 0) {
this.msg.OldChangePlanItemList = []; this.msg.OldChangePlanItemList = [];
this.msg.NewChangePlanItemList = []; this.msg.NewChangePlanItemList = [];
let Array1 = JSON.parse(JSON.stringify(this.selected));
Array1.forEach((x) => {
delete x.NewPlan;
x.PlanTimeList = x.TimeList;
delete x.TimeList;
this.msg.OldChangePlanItemList.push(x);
});
this.msg.AllChangePlanItem = {}; this.msg.AllChangePlanItem = {};
} else { }
// if (this.msg.ReceiptFileList.length === 0) {
// this.$q.notify({
// type: "negative",
// position: "top",
// message: `请上传附件`,
// });
// return;
// }
this.$q
.dialog({
title: "提示信息",
message: "调课行为将影响您的备课记录,请慎重!",
cancel: true,
persistent: true,
ok: "确定",
cancel: "取消",
})
.onOk(() => {
SetChangeClassPlan(this.msg).then((res) => {
if (res.Code == 1) {
this.closeSaveForm();
this.$emit("success");
this.$q.notify({
icon: "iconfont icon-chenggong",
color: "accent",
timeout: 2000,
message: res.Message,
position: "top",
});
}
});
})
.onCancel(() => {});
},
proteinRangeValidation(val) {
let newList = [];
let errorMsg = "";
val.forEach((x) => {
if (
x.StartTime &&
x.EndTime &&
x.TimeHour &&
x.StartTime != "" &&
x.EndTime != "" &&
x.TimeHour != "0.0"
) {
newList.push({
StartTime: x.StartTime,
EndTime: x.EndTime,
TimeHour: x.TimeHour,
});
} else {
errorMsg = "存在不完善的数据,请完善数据信息";
}
});
if (errorMsg != "") {
this.$q.notify({ this.$q.notify({
type: "negative", icon: "iconfont icon-guanbi1",
color: "negative",
timeout: 2000,
message: errorMsg,
position: "top", position: "top",
message: `请选择变更数据`,
}); });
return;
} }
} return errorMsg == "";
//变更类型 取消上课 变更范围 全局 },
if (this.msg.ChangeType == 4 && this.msg.MoveType == 2) { removeTime(plan, i) {
this.msg.OldChangePlanItemList = []; plan.TimeList.splice(i, 1);
this.msg.NewChangePlanItemList = []; },
this.msg.AllChangePlanItem = {}; addTime(plan) {
} let obj = {
// if (this.msg.ReceiptFileList.length === 0) { ClassTimeId: 0,
// this.$q.notify({ EndTime: "",
// type: "negative", StartTime: "",
// position: "top", TimeHour: 0,
// message: `请上传附件`, };
// }); plan.TimeList.push(obj);
// return; },
// } changeClass(val) {
this.$q this.currentClass = this.classList.find((x) => {
.dialog({ return x.ClassId == val;
title: "提示信息", }).PlanList;
message: "调课行为将影响您的备课记录,请慎重!", },
cancel: true, changeTypeResult(val) {
persistent: true, this.selected = [];
ok: "确定", },
cancel: "取消", changeSchool(val) {
}) this.queryClass.SchoolId = val;
.onOk(() => { this.getClass(1);
SetChangeClassPlan(this.msg).then((res) => { },
if (res.Code == 1) { changeCourse(val) {
this.closeSaveForm(); this.queryClass.CourseId = val;
this.$emit("success"); this.getClass(1);
this.$q.notify({ },
icon: "iconfont icon-chenggong", getClass(isClear) {
color: "accent", getClassDropDownList(this.queryClass).then((res) => {
timeout: 2000, this.classList = [];
message: res.Message, if (isClear == 1) {
position: "top", this.msg.ClassId = 0;
}
if (res.Code == 1) {
res.Data.forEach((x) => {
x.PlanList.forEach((y) => {
let newPlan = JSON.parse(JSON.stringify(y));
y.NewPlan = newPlan;
}); });
});
this.classList = res.Data;
var obj = {
ClassName: "请选择",
ClassId: 0,
};
this.classList.unshift(obj);
if (this.msg.ClassId > 0 && isClear == 0) {
this.currentClass = this.classList.find((x) => {
return x.ClassId == this.msg.ClassId ;
}).PlanList;
} }
}); }
})
.onCancel(() => {});
},
proteinRangeValidation(val) {
let newList = [];
let errorMsg = "";
val.forEach((x) => {
if (
x.StartTime &&
x.EndTime &&
x.TimeHour &&
x.StartTime != "" &&
x.EndTime != "" &&
x.TimeHour != "0.0"
) {
newList.push({
StartTime: x.StartTime,
EndTime: x.EndTime,
TimeHour: x.TimeHour,
});
} else {
errorMsg = "存在不完善的数据,请完善数据信息";
}
});
if (errorMsg != "") {
this.$q.notify({
icon: "iconfont icon-guanbi1",
color: "negative",
timeout: 2000,
message: errorMsg,
position: "top",
}); });
} },
return errorMsg == ""; getSchool() {
}, getSchoolDropdown({}).then((res) => {
removeTime(plan, i) { if (res.Code == 1) {
plan.TimeList.splice(i, 1); this.schoolList = res.Data;
}, var obj = {
addTime(plan) { SName: "请选择",
let obj = { SId: -1,
ClassTimeId: 0, };
EndTime: "", this.schoolList.unshift(obj);
StartTime: "", }
TimeHour: 0, });
}; },
plan.TimeList.push(obj); getCourseList() {
}, queryCourseDropdownList({
changeClass(val) { IsQPrice: 1,
this.currentClass = this.classList.find((x) => { }).then((res) => {
return x.ClassId == val; if (res.Code == 1) {
}).PlanList; this.courseList = res.Data;
}, var obj = {
changeTypeResult(val) { CourseName: "请选择",
this.selected = []; CourseId: 0,
}, };
changeSchool(val) { this.courseList.unshift(obj);
this.queryClass.SchoolId = val; }
this.getClass(); });
}, },
changeCourse(val) { //下拉选择改变
this.queryClass.CourseId = val; changeClassStyle(style) {
this.getClass(); this.checkedDays = [];
}, },
getClass() { //初始化日期-天
getClassDropDownList(this.queryClass).then((res) => { initDayList() {
this.classList = []; this.dayList = [];
this.msg.ClassId = 0; for (var i = 1; i <= 31; i++) {
if (res.Code == 1) { this.dayList.push({
res.Data.forEach((x) => { label: i,
x.PlanList.forEach((y) => { value: i,
let newPlan = JSON.parse(JSON.stringify(y));
y.NewPlan = newPlan;
});
}); });
this.classList = res.Data;
var obj = {
ClassName: "请选择",
ClassId: 0,
};
this.classList.unshift(obj);
} }
}); },
}, //添加学习时间
getSchool() { addPlan() {
getSchoolDropdown({}).then((res) => { var planObj = {
if (res.Code == 1) { DateList: [],
this.schoolList = res.Data; TimeList: [{
var obj = {
SName: "请选择",
SId: -1,
};
this.schoolList.unshift(obj);
}
});
},
getCourseList() {
queryCourseDropdownList({
IsQPrice: 1,
}).then((res) => {
if (res.Code == 1) {
this.courseList = res.Data;
var obj = {
CourseName: "请选择",
CourseId: 0,
};
this.courseList.unshift(obj);
}
});
},
//下拉选择改变
changeClassStyle(style) {
this.checkedDays = [];
},
//初始化日期-天
initDayList() {
this.dayList = [];
for (var i = 1; i <= 31; i++) {
this.dayList.push({
label: i,
value: i,
});
}
},
//添加学习时间
addPlan() {
var planObj = {
DateList: [],
TimeList: [
{
StartTime: "", StartTime: "",
EndTime: "", EndTime: "",
TimeHour: "", TimeHour: "",
}, }, ],
], };
}; this.DefaultPlanTimeList.push(planObj);
this.DefaultPlanTimeList.push(planObj); },
}, //删除学习时间
//删除学习时间 deletePlan(index) {
deletePlan(index) { this.$q
this.$q .dialog({
.dialog({ title: "提示信息",
title: "提示信息", message: "是否要删除",
message: "是否要删除", cancel: true,
cancel: true, persistent: true,
persistent: true, ok: "确定",
ok: "确定", cancel: "取消",
cancel: "取消", })
}) .onOk(() => {
.onOk(() => { this.DefaultPlanTimeList.splice(index, 1);
this.DefaultPlanTimeList.splice(index, 1); })
}) .onCancel(() => {});
.onCancel(() => {}); },
}, //添加学习时段
//添加学习时段 addPlanTime(item) {
addPlanTime(item) { var obj = {
var obj = { StartTime: "",
StartTime: "", EndTime: "",
EndTime: "", };
}; item.TimeList.push(obj);
item.TimeList.push(obj); },
}, //删除学习时段
//删除学习时段 deletePlanTime(item, index) {
deletePlanTime(item, index) { this.$q
this.$q .dialog({
.dialog({ title: "提示信息",
title: "提示信息", message: "是否要删除此学习时间段",
message: "是否要删除此学习时间段", cancel: true,
cancel: true, persistent: true,
persistent: true, ok: "确定",
ok: "确定", cancel: "取消",
cancel: "取消", })
}) .onOk(() => {
.onOk(() => { item.TimeList.splice(index, 1);
item.TimeList.splice(index, 1); })
}) .onCancel(() => {});
.onCancel(() => {}); },
}, showUpLoadFile(i) {
showUpLoadFile(i) { // 预览上传文件
// 预览上传文件 if (i.Type == 3) {
if (i.Type == 3) { this.picObj.push(i.Url);
this.picObj.push(i.Url); // this.imgList.push(i.Url)
// this.imgList.push(i.Url) this.picIsShow = true;
this.picIsShow = true;
} else {
if (
i.Content.substring(
i.Content.lastIndexOf(".") + 1,
i.Content.length
).toUpperCase() == "PDF" ||
i.Content.substring(
i.Content.lastIndexOf(".") + 1,
i.Content.length
).toUpperCase() == "TXT"
) {
this.previewPDF(i.Url);
} else { } else {
window.open( if (
"https://view.officeapps.live.com/op/view.aspx?src=" + i.Url i.Content.substring(
); i.Content.lastIndexOf(".") + 1,
i.Content.length
).toUpperCase() == "PDF" ||
i.Content.substring(
i.Content.lastIndexOf(".") + 1,
i.Content.length
).toUpperCase() == "TXT"
) {
this.previewPDF(i.Url);
} else {
window.open(
"https://view.officeapps.live.com/op/view.aspx?src=" + i.Url
);
}
} }
} },
}, deleteUploadFile(i) {
deleteUploadFile(i) { // 删除上传文件
// 删除上传文件 this.saveMsg.splice(i, 1);
this.saveMsg.splice(i, 1); this.msg.ReceiptFileList.splice(i, 1);
this.msg.ReceiptFileList.splice(i, 1); },
}, uploadFileBtn(file) {
uploadFileBtn(file) { //上传
//上传 if (file.file.size > 1024 * 1024 * 5) {
if (file.file.size > 1024 * 1024 * 5) { this.$message.warning("文件大小不能超过5M");
this.$message.warning("文件大小不能超过5M"); return;
return;
}
// 1 文档 2 数据 3 图片
let typeArr = [
{
stringArr: "GIF|JPG|JPEG|PNG|BMP|WEBP",
type: 3,
},
{
stringArr: "DOCX|DOC|XLSX|XLS|PPT|PPTX|PDF|TXT",
type: 1,
},
{
stringArr: "ZIP|RAR|7Z|TAR",
type: 4,
},
{
stringArr: "MP4|3GP|AVI|MOV|WMV|RMVB|MKV|M4V|FLV",
type: 5,
},
];
let ft = file.file.name
.substring(file.file.name.lastIndexOf(".") + 1, file.file.name.length)
.toUpperCase();
let fileTypeNumber = 2;
typeArr.forEach((x) => {
if (x.stringArr.indexOf(ft) != "-1") {
fileTypeNumber = x.type;
} }
}); // 1 文档 2 数据 3 图片
// let newArr = []; let typeArr = [{
// newArr.push(file.file); stringArr: "GIF|JPG|JPEG|PNG|BMP|WEBP",
this.$message.info(this.$t("tips.shangchuanzhong")); type: 3,
UploadSelfFile( },
"Temporary", {
file.file, stringArr: "DOCX|DOC|XLSX|XLS|PPT|PPTX|PDF|TXT",
(x) => { type: 1,
if (x.Code == 1) { },
this.saveMsg.push({ {
Content: x.FileUrl, stringArr: "ZIP|RAR|7Z|TAR",
ID: 0, type: 4,
Type: fileTypeNumber, },
Url: x.FileUrl, {
}); stringArr: "MP4|3GP|AVI|MOV|WMV|RMVB|MKV|M4V|FLV",
this.msg.ReceiptFileList.push(x.FileUrl); type: 5,
this.$message.success(this.$t("tips.scchenggong")); },
];
let ft = file.file.name
.substring(file.file.name.lastIndexOf(".") + 1, file.file.name.length)
.toUpperCase();
let fileTypeNumber = 2;
typeArr.forEach((x) => {
if (x.stringArr.indexOf(ft) != "-1") {
fileTypeNumber = x.type;
} }
}, });
1 // let newArr = [];
); // newArr.push(file.file);
this.$message.info(this.$t("tips.shangchuanzhong"));
UploadSelfFile(
"Temporary",
file.file,
(x) => {
if (x.Code == 1) {
this.saveMsg.push({
Content: x.FileUrl,
ID: 0,
Type: fileTypeNumber,
Url: x.FileUrl,
});
this.msg.ReceiptFileList.push(x.FileUrl);
this.$message.success(this.$t("tips.scchenggong"));
}
},
1
);
},
}, },
}, };
};
</script> </script>
<style> <style>
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
border: 1px solid #2961FE; border: 1px solid #2961FE;
border-radius: 50%; border-radius: 50%;
cursor: pointer; cursor: pointer;
color:#2961FE; color: #2961FE;
} }
.OCourseTable { .OCourseTable {
...@@ -24,15 +24,19 @@ ...@@ -24,15 +24,19 @@
height: 40px; height: 40px;
background-color: rgb(238, 238, 239); background-color: rgb(238, 238, 239);
} }
.redStuStyle{
color:red; .redStuStyle {
color: red;
} }
.blaStuStyle{
color:#000; .blaStuStyle {
color: #000;
} }
.classProgress { .classProgress {
color: var(--q-color-primary); color: var(--q-color-primary);
} }
</style> </style>
<template> <template>
<div class="page-body"> <div class="page-body">
...@@ -43,8 +47,8 @@ ...@@ -43,8 +47,8 @@
label="班级名称" @clear="getClassList" maxlength="20" /> label="班级名称" @clear="getClassList" maxlength="20" />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-input @change="getClassList" clearable standout="bg-primary text-white" v-model="msg.ClassNo" <q-input @change="getClassList" clearable standout="bg-primary text-white" v-model="msg.ClassNo" label="班号"
label="班号" @clear="getClassList" maxlength="20" /> @clear="getClassList" maxlength="20" />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select @input="getClassList" standout="bg-primary text-white" option-value="Id" option-label="Name" <q-select @input="getClassList" standout="bg-primary text-white" option-value="Id" option-label="Name"
...@@ -85,12 +89,12 @@ ...@@ -85,12 +89,12 @@
<div style="display: flex;align-items: center;"> <div style="display: flex;align-items: center;">
<q-avatar size="md" style="background:#d4dfff;color:#2961FE;font-weight:bold;" v-if="props.row.ClassName"> <q-avatar size="md" style="background:#d4dfff;color:#2961FE;font-weight:bold;" v-if="props.row.ClassName">
{{GetFirst(props.row.ClassName)}}</q-avatar> {{GetFirst(props.row.ClassName)}}</q-avatar>
<div > <div>
<span style="color:#2961FE;margin-left:10px;cursor:pointer;" @click="getClassInfo(props.row)" <span style="color:#2961FE;margin-left:10px;cursor:pointer;" @click="getClassInfo(props.row)"
title="点击查看详情">{{props.row.ClassName}}</span> title="点击查看详情">{{props.row.ClassName}}</span>
<div style="margin-left: 10px;">{{props.row.ClassNo}}</div> <div style="margin-left: 10px;">{{props.row.ClassNo}}</div>
</div> </div>
</div> </div>
</q-td> </q-td>
</template> </template>
...@@ -111,7 +115,8 @@ ...@@ -111,7 +115,8 @@
<th>课程名称</th> <th>课程名称</th>
<th>课时数</th> <th>课时数</th>
</tr> </tr>
<tr v-for="(sItem,sIndex) in props.row.OtherCourseList" style="border-bottom:1px dashed #d1d1d1;"> <tr v-for="(sItem,sIndex) in props.row.OtherCourseList"
style="border-bottom:1px dashed #d1d1d1;">
<td>{{sItem.CourseName}}</td> <td>{{sItem.CourseName}}</td>
<td>{{sItem.ClassHours}}</td> <td>{{sItem.ClassHours}}</td>
</tr> </tr>
...@@ -138,13 +143,14 @@ ...@@ -138,13 +143,14 @@
</template> </template>
<template v-slot:body-cell-ClassPersion="props"> <template v-slot:body-cell-ClassPersion="props">
<q-td auto-width :props="props"> <q-td auto-width :props="props">
<span :class="{'redStuStyle':props.row.ClassPersion>props.row.OrderStudentCount,'blaStuStyle':props.row.ClassPersion==props.row.OrderStudentCount}" <span
>{{props.row.ClassPersion}}-{{props.row.OrderStudentCount}}</span> :class="{'redStuStyle':props.row.ClassPersion>props.row.OrderStudentCount,'blaStuStyle':props.row.ClassPersion==props.row.OrderStudentCount}">{{props.row.ClassPersion}}-{{props.row.OrderStudentCount}}</span>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-CompleteProgress="props"> <template v-slot:body-cell-CompleteProgress="props">
<q-td auto-width :props="props"> <q-td auto-width :props="props">
<span :class="{'classProgress':props.row.UsePlanNum<props.row.TotalPlanNum,'blaStuStyle':props.row.UsePlanNum==props.row.TotalPlanNum}">{{props.row.UsePlanNum}}/{{props.row.TotalPlanNum}}</span> <span
:class="{'classProgress':props.row.UsePlanNum<props.row.TotalPlanNum,'blaStuStyle':props.row.UsePlanNum==props.row.TotalPlanNum}">{{props.row.UsePlanNum}}/{{props.row.TotalPlanNum}}</span>
</q-td> </q-td>
</template> </template>
<template v-slot:bottom> <template v-slot:bottom>
...@@ -153,8 +159,8 @@ ...@@ -153,8 +159,8 @@
</template> </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 v-if="props.row.ClassStatus==1" flat size="xs" icon="edit" color="accent" style="font-weight:400" label="编辑" <q-btn v-if="props.row.ClassStatus==1" flat size="xs" icon="edit" color="accent" style="font-weight:400"
@click="EditCourse(props.row)" /> label="编辑" @click="EditCourse(props.row)" />
<q-btn-dropdown flat size="xs" color="dark" label="更多" style="margin-left:10px;"> <q-btn-dropdown flat size="xs" color="dark" label="更多" style="margin-left:10px;">
<q-list> <q-list>
<q-item clickable v-close-popup @click="gotoOrder(props.row)"> <q-item clickable v-close-popup @click="gotoOrder(props.row)">
...@@ -187,17 +193,17 @@ ...@@ -187,17 +193,17 @@
<q-item-label>月度课耗</q-item-label> <q-item-label>月度课耗</q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
<q-item clickable v-close-popup @click.stop="getClassItem(props.row)"> <q-item clickable v-close-popup v-if="props.row.ClassStatus!=3" @click.stop="getClassItem(props.row)">
<q-item-section> <q-item-section>
<q-item-label>状态变更</q-item-label> <q-item-label>状态变更</q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
<!-- <q-item clickable v-close-popup @click.stop="getStudent(props.row.ClassId)"> <q-item clickable v-close-popup @click.stop="getStudent(props.row.ClassId)">
<q-item-section> <q-item-section>
<q-item-label>未完成学员名单</q-item-label> <q-item-label>未完成学员名单</q-item-label>
</q-item-section> </q-item-section>
</q-item> --> </q-item>
<q-item v-if="props.row.ClassStatus!=3" clickable v-close-popup @click="classApply(props.row.ClassId)"> <q-item v-if="props.row.ClassStatus!=3" clickable v-close-popup @click="classApply(props.row)">
<q-item-section> <q-item-section>
<q-item-label>调课申请</q-item-label> <q-item-label>调课申请</q-item-label>
</q-item-section> </q-item-section>
...@@ -216,9 +222,9 @@ ...@@ -216,9 +222,9 @@
@success="refreshPage"> @success="refreshPage">
</othercourseForm> </othercourseForm>
<changestatusForm v-if="isShowStatusChange" :seting-obj="classObjOption" @close="closeClassSaveForm" <changestatusForm v-if="isShowStatusChange" :seting-obj="classObjOption" @close="closeClassSaveForm"
@success="refreshPage"></changestatusForm> @success="refreshPage"></changestatusForm>
<change-class-form v-if="isShowTiaoke" :ClassId="commonClassId" @close="closeClassSaveForm" @success="refreshPage"></change-class-form> <change-class-form v-if="isShowTiaoke" :seting-obj="classObjOption" @close="closeClassSaveForm"
@success="refreshPage"></change-class-form>
</div> </div>
</div> </div>
</template> </template>
...@@ -335,7 +341,7 @@ ...@@ -335,7 +341,7 @@
TeacherName: '', //带班老师 TeacherName: '', //带班老师
CourseName: '', //学习课程 CourseName: '', //学习课程
School_Id: -1, //关联校区 School_Id: -1, //关联校区
ClassNo:'',//班号 ClassNo: '', //班号
}, },
//班级状态 //班级状态
classStatusList: [], classStatusList: [],
...@@ -346,15 +352,14 @@ ...@@ -346,15 +352,14 @@
isShowClassForm: false, //是否显示新增修改弹窗 isShowClassForm: false, //是否显示新增修改弹窗
isShowClassInfo: false, //是否显示课程信息 isShowClassInfo: false, //是否显示课程信息
IsShowOtherCourse: false, //是否显示其他课程 IsShowOtherCourse: false, //是否显示其他课程
TeacherList:[], TeacherList: [],
isShowStatusChange:false, isShowStatusChange: false,//是否显示修改状态弹窗
isShowTiaoke:false, isShowTiaoke: false, //是否显示调课申请
commonClassId:0
} }
}, },
created() { created() {
if (this.$route.query && this.$route.query.ClassName) { if (this.$route.query && this.$route.query.ClassName) {
this.msg.ClassName = decodeURI(this.$route.query.ClassName) this.msg.ClassName = decodeURI(this.$route.query.ClassName)
} }
this.getClassStatus(); this.getClassStatus();
this.getSchool(); this.getSchool();
...@@ -416,22 +421,17 @@ ...@@ -416,22 +421,17 @@
this.isShowStatusChange = true; this.isShowStatusChange = true;
}, },
gotoOrder(item) { gotoOrder(item) {
var tempStr = '/course/classorder?ClassId=' + item.ClassId; this.OpenNewUrl('/course/classorder', {
this.$router.push({ ClassId: item.ClassId,
path: tempStr
}); });
}, },
//跳转到收支明细 //跳转到收支明细
goPayment(item) { goPayment(item) {
this.$router.push({ this.OpenNewUrl('/course/paymentDetail', {
path: 'paymentDetail', ClassId: item.ClassId,
query: { School_Id: item.School_Id,
ClassId: item.ClassId, ClassName: encodeURI(item.ClassName),
School_Id: item.School_Id, });
ClassName: encodeURI(item.ClassName),
blank: 'y'
}
})
}, },
//获取校区列表 //获取校区列表
getSchool() { getSchool() {
...@@ -453,7 +453,7 @@ ...@@ -453,7 +453,7 @@
getClassStatus(status) { getClassStatus(status) {
queryClassStatusList({}).then(res => { queryClassStatusList({}).then(res => {
if (res.Code == 1) { if (res.Code == 1) {
this.classStatusList= res.Data; this.classStatusList = res.Data;
} }
}).catch(() => {}) }).catch(() => {})
}, },
...@@ -515,16 +515,16 @@ ...@@ -515,16 +515,16 @@
this.classObjOption = obj; this.classObjOption = obj;
this.isShowClassInfo = true; this.isShowClassInfo = true;
}, },
gomonthLessonCost(row){ gomonthLessonCost(row) {
let ClassName = encodeURI(row.ClassName) let ClassName = encodeURI(row.ClassName)
this.OpenNewUrl('/course/monthLessonCost' , { this.OpenNewUrl('/course/monthLessonCost', {
ClassId: row.ClassId, ClassId: row.ClassId,
ClassName: ClassName, ClassName: ClassName,
}); });
}, },
//跳转到课程大纲 //跳转到课程大纲
goChapter(CouseId){ goChapter(CouseId) {
this.OpenNewUrl('/course/chapter' , { this.OpenNewUrl('/course/chapter', {
CourseId: CouseId CourseId: CouseId
}); });
}, },
...@@ -541,8 +541,9 @@ ...@@ -541,8 +541,9 @@
}) })
}, },
//调课申请 //调课申请
classApply(ClassId){ classApply(item) {
this.commonClassId = ClassId;
this.classObjOption = item;
this.isShowTiaoke = true; this.isShowTiaoke = true;
} }
} }
......
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