Commit 59461220 authored by 罗超's avatar 罗超

新功能开发

parent 1a9ee2b4
......@@ -12,7 +12,7 @@ export default {
<style>
@import url('~assets/css/font.css');
@import url('//at.alicdn.com/t/font_2077629_cq0udyr5rpk.css');
@import url('//at.alicdn.com/t/font_2077629_6so9z0a6plx.css');
.q-scrollarea__thumb{
z-index: 999999!important;
}
......
@font-face{
font-family:'katongjian';
src:url('../../webfont/katongjian.ttf') format('truetype')
}
@font-face{
font-family:'YGYXSZITI';
src:url('../../webfont/YGYXSZITI2.0.ttf') format('truetype')
}
@font-face{
font-family:'FZYBXSJW';
src:url('../../webfont/FZYBXSJW.ttf') format('truetype')
}
@font-face{
font-family:'fzjzjt';
src:url('../../webfont/fzjzjt.ttf') format('truetype')
}
@font-face{
font-family:'fzmwt';
src:url('../../webfont/fzmwt.ttf') format('truetype')
}
@font-face{
font-family:'fztjlst';
src:url('../../webfont/fztjlst.ttf') format('truetype')
}
@font-face{
font-family:'hyhctj';
src:url('../../webfont/hyhctj.ttf') format('truetype')
}
@font-face{
font-family:'hyqytj';
src:url('../../webfont/hyqytj.ttf') format('truetype')
}
@font-face{
font-family:'hyyltj';
src:url('../../webfont/hyyltj.ttf') format('truetype')
}
@font-face{
font-family:'jlx';
src:url('../../webfont/jlx.ttf') format('truetype')
}
@font-face{
font-family:'sszhjt';
src:url('../../webfont/sszhjt.ttf') format('truetype')
}
@font-face{
font-family:'hybqt';
src:url('../../webfont/hybqt.ttf') format('truetype')
}
@font-face{
font-family:'hyhht';
src:url('../../webfont/hyhht.ttf') format('truetype')
}
@font-face{
font-family:'hylbt';
src:url('../../webfont/hylbt.ttf') format('truetype')
}
@font-face{
font-family:'hxlbjt';
src:url('../../webfont/hxlbjt.ttf') format('truetype')
}
@font-face{
font-family:'hywwzj';
src:url('../../webfont/hywwzj.ttf') format('truetype')
}
@font-face{
font-family:'pingfang';
src:url('../../webfont/pingfang.ttf') format('truetype')
}
.adv-box{
box-sizing: border-box;
position: absolute;
/* overflow-y: auto; */
padding-bottom: 15px;
top:0px;
left: 20px;
right: 0;
bottom: 0;
background: #f1f1f1;
}
.adv-box .board{
width: 470px;
position: absolute;
left: 0px;
z-index: 98;
top: 0px;
-webkit-user-select: none !important;
overflow: hidden;
}
.adv-box .board .bg{
width:470px;
z-index: 99;
-webkit-user-drag: none;
}
.adv-box .board .vdr .text{
width:100%;
height:100%;
cursor: move;
overflow: hidden;
white-space: pre-line;
}
.adv-box .board .vdr .img{
max-width:100%;
max-height:100%;
/* width:100%;
height:100%; */
cursor: move;
-webkit-user-drag:none;
}
.adv-box .board .vdr.active{
background:rgba(0,0,0,.3)
}
.adv-box .tools{
width: 32px;
position: absolute;
left: 480px;
top: 0px;
}
.adv-box .tools li{
height: 21px;
width: 32px;
text-align: center;
background: #e5e5e5;
cursor: pointer;
border-radius: 2px;
margin-bottom: 12px;
line-height: 21px;
}
.adv-box .tools li:hover{
background: #d8d8d8 !important
}
.adv-box .tools li.save{
color: #fff;
background: #4d90fe;
}
.adv-box .tools li.save:hover{
background: #0362fd !important;
}
.adv-box .tools li.down{
color: #fff;
background: #35aa47;
}
.adv-box .tools li.down:hover{
background: #1d943b !important;
}
.adv-box .tools li.return{
color: #fff;
background: #d84a38;
}
.adv-box .tools li.return:hover{
background: #bb2413 !important;
}
.adv-box .tools li.source{
color: #fff;
background: #fc5c65;
}
.adv-box .tools li.source:hover{
background: #fc5c65 !important;
}
.adv-box .tools li i{
font-size: 16px;
color: #333;
}
.adv-box .tools li.save,.adv-box .tools li.down,.adv-box .tools li.return,.adv-box .tools li.source {
color: #f0f0f0;
font-size: 12px;
}
.adv-box .property-box{
position: absolute;
left: 550px;
top: 0px;
width: 640px;
right: 10px;
overflow: hidden;
}
.adv-box .property-box label{
font-size: 12px;
}
.adv-box .property-box label.remark{
color: #999;
}
.adv-box .property-box .el-button{
padding:5px;
}
.adv-box .resorece{
position: absolute;
left: 532px;
top: 0px;
width: 120px;
height: 120px;
}
.adv-box .resorece img{
}
.adv-box .max-resource{
width: 470px;
}
.adv-box .el-textarea__inner{
width: 290px;
}
.adv-box .el-slider{
width: 290px;
padding-left: 9px;
}
.adv-box::-webkit-scrollbar{
width: 4px;
height: 8px;
}
.adv-box::-webkit-scrollbar-thumb {
border-radius: 4px;
-webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2);
background: #c9c9c9;
}
.adv-box::-webkit-scrollbar-thumb {
-webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2);
border-radius: 4px;
background: #EDEDED;
}
.adv-box .el-input-group__append,.adv-box .el-input-group__prepend{
padding: 0 4px;
border-radius: 0px;
}
.adv-box .el-color-picker__trigger,.adv-box .el-color-picker__color{
border-radius: 0px;
}
.adv-box .el-color-picker__trigger {
height: 34px;
width: 34px;
margin-top: 4px;
}
.adv-box .advmanager-box .content {
top: 80px;
left: 0px;
}
.adv-box .goon{
position: fixed;
background: rgba(235, 59, 90, .8);
font-family: 'PingFangSC-fine';
font-size: 14px;
width: 50px;
height: 50px;
border-radius: 100%;
color: #f1f1f1;
right: 10px;
text-align: center;
line-height: 50px;
top:220px;
cursor: pointer;
}
.adv-box .el-input--mini .el-input__inner{
line-height: normal;
}
.adv-box .el-input-number{
vertical-align: top;
}
\ No newline at end of file
......@@ -111,3 +111,35 @@
.no-bottom-table
.q-table__bottom
display: none !important
.sticky-header-column-table
td:first-child
/* bg color is important for td; just specify one */
background-color: #c1f4cd !important
tr th
position: sticky
/* higher than z-index for td below */
z-index: 2
/* bg color is important; just specify one */
background: #fff
/* this will be the loading indicator */
thead tr:last-child th
/* height of all previous header rows */
top: 48px
/* highest z-index */
z-index: 3
thead tr:first-child th
top: 0
z-index: 1
tr:first-child th:first-child
/* highest z-index */
z-index: 3
td:first-child
z-index: 1
td:first-child, th:first-child
position: sticky
left: 0
\ No newline at end of file
<template>
<q-dialog v-model="persistent" content-class="bg-grey-1" persistent transition-show="scale" transition-hide="scale">
<q-card style="width: 800px;max-width:900px;">
<q-card-section>
<div class="text-h6">创建调课申请单</div>
</q-card-section>
<q-card-section class="q-pt-none" style="height: 70vh">
<q-scroll-area :thumb-style="thumbStyle" :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="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" :options="schoolList" 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 standout="bg-dark text-white" 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, itemEvents, opt, selected, toggleOption }">
<q-item v-bind="itemProps" v-on="itemEvents">
<q-item-section>
<q-item-label v-html="opt.ClassName"></q-item-label>
</q-item-section>
<q-item-section side>
<q-item-label v-html="opt.OpenTime"></q-item-label>
</q-item-section>
</q-item>
</template>
</q-select>
<q-select filled stack-label 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 class="row items-center">
<div class="text-caption q-my-lg q-px-md text-grey-6 col">变更内容</div>
<div class="row items-center">
<div class="text-grey-6">变更范围:</div>
<q-radio size="xs" v-model="msg.SettingType" val="1" label="单个或多个" />
<q-radio size="xs" v-model="msg.SettingType" val="2" label="全局" />
</div>
</div>
<div v-if="msg.SettingType==1" class="row items-center">
<div class="col">
<q-table no-data-label="暂无相关数据" flat style="height: 300px;"
class="sticky-column-table sticky-header-column-table" separator="none" :data="currentClass"
:columns="columns" row-key="name">
<template v-slot:body-cell-TimeList="props">
<q-td auto-width :props="props">
<div v-for="(item,index) in props.row.TimeList" class="lessForm_Class">
{{index+1}}节课 {{item.StartTime}}-{{item.EndTime}}
</div>
</q-td>
</template>
<template v-slot:body-cell-CheckNum="props">
<q-td>
<div v-for="(item,index) in props.row.TimeList" class="lessForm_Class">
<span style="color:green;">{{item.CheckNum}}</span>/<span
style="color:red;">{{item.NoCheckNum}}</span>
</div>
</q-td>
</template>
</q-table>
</div>
<div class="col">
<q-table no-data-label="暂无相关数据" flat style="height: 300px;"
class="sticky-column-table sticky-header-column-table" separator="none" :data="currentClass"
:columns="columns2" row-key="name">
<template v-slot:body-cell-TimeList="props">
<q-td auto-width :props="props">
<div v-for="(item,index) in props.row.TimeList" class="lessForm_Class">
{{index+1}}节课 {{item.StartTime}}-{{item.EndTime}}
</div>
</q-td>
</template>
<template v-slot:body-cell-CheckNum="props">
<q-td>
<div v-for="(item,index) in props.row.TimeList" class="lessForm_Class">
<span style="color:green;">{{item.CheckNum}}</span>/<span
style="color:red;">{{item.NoCheckNum}}</span>
</div>
</q-td>
</template>
</q-table>
</div>
</div>
</q-scroll-area>
</q-card-section>
<q-separator />
<q-card-actions align="right" class="bg-white">
<q-btn label="取消" flat 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>
</q-dialog>
</template>
<script>
import {
getClassDropDownList,
getSchoolDropdown
} from "../../api/school/index";
import {
queryCourseDropdownList,
} from '../../api/course/index'
import Lockr from 'lockr'
export default {
data() {
return {
persistent: true,
saveLoading: false,
contentStyle: {},
contentActiveStyle: {},
thumbStyle: {
right: '2px',
borderRadius: '5px',
backgroundColor: '#027be3',
width: '5px',
opacity: 0.75
},
msg: {
ClassId: 0,
SchoolId: -1,
CouseId: 0,
ChangeType: 1,
SettingType: 1
},
classList: [],
schoolList: [],
courseList: [],
queryClass: {
CourseId: 0,
IsAddDefault: 1,
SchoolId: -1,
Teacher_Id: 0,
MoreStatus: "1,2",
IsQuerySurplusPlan: 1
},
currentClass: [],
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'
}
],
columns2: [{
name: 'ClassDate',
label: '目标日期',
field: 'ClassDate',
align: 'left'
},
{
name: 'TimeList',
label: '目标时间',
field: 'TimeList',
align: 'left'
}
],
changeType: [{
Id: 1,
Name: "课程时间"
},
{
Id: 2,
Name: "老师"
},
{
Id: 3,
Name: "教室"
},
{
Id: 4,
Name: "取消上课"
}
]
}
},
mounted() {
let u = Lockr.get("loginUserInfo")
if (u) {
this.queryClass.Teacher_Id = u.AccountId
}
this.getClass()
this.getSchool()
this.getCourseList()
},
methods: {
closeSaveForm() {
this.$emit('close')
this.persistent = false
},
save() {
},
changeClass(val) {
this.currentClass = this.classList.find(x=>{
return x.ClassId==val
}).PlanList
console.log(this.currentClass)
},
changeTypeResult(val) {},
changeSchool(val) {
this.queryClass.SchoolId = val
this.getClass()
},
changeCourse(val) {
this.queryClass.CourseId = val
this.getClass()
},
getClass() {
getClassDropDownList(this.queryClass).then(res => {
this.classList = [];
this.msg.classId = 0
if (res.Code == 1) {
this.classList = res.Data;
var obj = {
ClassName: '请选择',
ClassId: 0
}
this.classList.unshift(obj);
}
});
},
getSchool() {
getSchoolDropdown({}).then(res => {
if (res.Code == 1) {
this.schoolList = res.Data;
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);
}
})
},
},
}
</script>
<style>
</style>
......@@ -35,9 +35,11 @@
</div>
<div class="col-2">
<q-btn color="accent" size="sm" class="q-mr-md" @click="exchangeType" :label="typeName" />
<q-btn color="negative" size="sm" label="调课申请" @click="openForm"></q-btn>
</div>
</div>
<classmateForm :dataList="dataList" v-if="commonType==1"></classmateForm>
<change-class-form v-if="persistent" @close="closeSaveForm"></change-class-form>
<teachTable v-if="commonType==2" :tableData="tableData" :PageCount="PageCount" :setMsg="tabMsg" @getChange="getChange"></teachTable>
</div>
</template>
......@@ -53,16 +55,19 @@
} from '../../api/teacher/index';
import classmateForm from '../teacher/components/classmate-form';
import teachTable from '../teacher/components/teachTable';
import changeClassForm from '../../components/teacher/changeClassForm.vue'
export default {
meta: {
title: "上课计划"
title: "我的课表"
},
components: {
classmateForm,
teachTable
teachTable,
changeClassForm
},
data() {
return {
persistent:false,
TeacherList: [], //教师团队
ClassRoomList: [], //
StartTime: "",
......@@ -105,6 +110,12 @@
this.getPlanList();
},
methods: {
openForm() {
this.persistent = true
},
closeSaveForm() {
this.persistent = false
},
// 获取校区教室导航列表
getPlanList() {
GetClassPlanStatistical(this.msg).then(res => {
......
......@@ -945,10 +945,15 @@ const routes = [{
import("pages/teacher/testdatabase")
},
{
path: "/teacher/relation-order", //题库查询
path: "/teacher/relation-order", //关联订单
component: () =>
import("pages/teacher/relationOrder")
},
{
path: "/teacher/change-class-manager", //关联订单
component: () =>
import("pages/teacher/changeClassManager")
},
{
path: "/teacher/teachMonthLessonCost", //月度课耗
component: () =>
......
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