Commit c8c93767 by huangqy

提交最新修改

parent 034c2a08
......@@ -58,7 +58,8 @@ import {
CollapseItem,
Descriptions,
DescriptionsItem,
TimeSelect
TimeSelect,
Calendar
} from 'element-ui'
// import element from 'element-ui'
Vue.use(Step)
......@@ -117,6 +118,7 @@ Vue.use(Descriptions)
Vue.use(DescriptionsItem)
Vue.use(TimeSelect)
Vue.use(Loading)
Vue.use(Calendar)
// 绑定方法到Vue全局为所有vue实例添加方法
// 弹出对话框
// import Element from 'element-ui';
......
......@@ -66,6 +66,11 @@ const routes = [
path: prefix + '/index',
component: () => import(/* webpackChunkName: "Home" */ '@/home.vue')
},
{
// 欢迎首页
path: prefix + '/teach',
component: () => import(/* webpackChunkName: "Home" */ '@/teachHome.vue')
},
// 物资入库
...receive,
// 物资出库
......
......@@ -12,7 +12,9 @@
<el-tooltip class="item" effect="dark" content="下周" placement="top">
<span @click="getNextWeek">下周<i class="el-icon-d-arrow-right"></i></span>
</el-tooltip>
<span @click="yjpk"> 一键排课 </span>
</div>
<span class="todayDate"> {{ todayDate }}</span>
<div class="chooseMonth">
<el-select
......@@ -30,8 +32,6 @@
<div class="table_header">
<div class="table_week">
<template v-for="(item,index) of weeks">
<!-- <span class="first" v-if="index===0" :key="index">{{ item }}<i
class="el-icon-edit"></i></span> -->
<span :key="index">{{ item }}</span>
</template>
</div>
......@@ -107,7 +107,7 @@
</el-col>
<el-col :span="11">
<el-form-item label="课时 :">
<el-select filterable clearable placeholder="请选择班级" v-model="formData.lessonId" style="width:100%">
<el-select filterable clearable placeholder="请选择课时" v-model="formData.lessonId" style="width:100%">
<el-option v-for="item in lessonList" :key="item.id" :label="item.name + '('+ item.startTime + '-' + item.endTime + ')'" :value="item.id"></el-option>
</el-select>
</el-form-item>
......@@ -136,6 +136,81 @@
<a-button type="primary" @click="subFormData()" ghost> </a-button>
</span>
</el-dialog>
<el-dialog
:append-to-body="true"
title="一键排课"
:visible.sync="dialogVisible1"
width="1200px"
:close-on-click-modal="false"
>
<a-button type="primary" ghost @click="addCourse()" icon="plus">加课</a-button>
<el-row :gutter="40" style="margin-top: 30px;">
<el-col :span="6">
<el-table :data="sbData" highlight-current-row @row-click="selectSb">
<el-table-column prop="weekName" label="日期" align="center"></el-table-column>
</el-table>
</el-col>
<el-col :span="18">
<el-table :data="selectWeek.voList">
<el-table-column prop="lessonName" label="课时" align="center"></el-table-column>
<el-table-column prop="className" label="班级" align="center"></el-table-column>
<el-table-column prop="courseName" label="课程" align="center"></el-table-column>
</el-table>
</el-col>
</el-row>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible1 = false" type="danger" size="medium"> </el-button>
<el-button type="primary" @click="subFormData1()" size="medium"> </el-button>
</span>
</el-dialog>
<el-dialog
:append-to-body="true"
:title="title"
:visible.sync="dialogVisible3"
width="800px"
@close="dialogClose2()"
:close-on-click-modal="false"
>
<!-- 表单区域 -->
<el-form :model="formData3" ref="fromRef" size="medium" style="border: 2px solid rgb(67, 167, 71);padding:20px;">
<el-card>
<el-row type="flex" justify="space-between">
<el-col :span="11">
<el-form-item label="课时 :">
<el-select filterable clearable placeholder="请选择课时" v-model="formData3.lessonId" style="width:100%">
<el-option v-for="item in lessonList" :key="item.id" :label="item.name + '('+ item.startTime + '-' + item.endTime + ')'" :value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="space-between">
<el-col :span="11">
<el-form-item label="班级名称 :">
<el-select filterable clearable placeholder="请选择班级" v-model="formData3.classCode" style="width:100%">
<el-option v-for="item in classList" :key="item.id" :label="item.className" :value="item.classCode"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="课程名称 :">
<el-select filterable clearable placeholder="请选择课程" v-model="formData3.courseCode" style="width:100%">
<el-option v-for="item in courseList" :key="item.id" :label="item.courseName" :value="item.courseCode"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-card>
</el-form>
<span slot="footer" class="dialog-footer">
<a-button @click="dialogVisible3 = false" type="danger" ghost style="margin-right: 12px;"> </a-button>
<a-button type="primary" @click="subFormData3()" ghost> </a-button>
</span>
</el-dialog>
</el-card>
</div>
</div>
......@@ -150,8 +225,13 @@ export default {
data() {
return {
formData: {},
formData3: {
},
searchData: {},
dialogVisible: false,
dialogVisible1: false,
dialogVisible3: false,
title: '',
classList: [],
courseList: [],
......@@ -166,6 +246,44 @@ export default {
courseCode: "",
lessonId: ""
},
sbData: [
{
"weekName":"星期一",
"week":1,
"voList":[]
},
{
"weekName":"星期二",
"week":2,
"voList":[]
},
{
"weekName":"星期三",
"week": 3,
"voList":[]
},
{
"weekName":"星期四",
"week": 4,
"voList":[]
},
{
"weekName":"星期五",
"week": 5,
"voList":[]
},
{
"weekName":"星期六",
"week": 6,
"voList":[]
},
{
"weekName":"星期日",
"week": 7,
"voList":[]
}
],
selectWeek: {},
timePeriodList: [],
todayDate: '',
months: [],
......@@ -302,9 +420,38 @@ export default {
if (res.code !== 99200) return this.$message(res.message)
this.timePeriodList = res.data
},
dialogClose() {
dialogClose2() {
this.formData3 = {}
},
yjpk() {
this.dialogVisible1 = true
},
addCourse() {
this.initCourse()
this.initLesson()
this.dialogVisible3 = true
},
subFormData3() {
this.formData3.className = this.classList.find(i => i.classCode == this.formData3.classCode).className
this.formData3.lessonName = this.lessonList.find(i => i.id == this.formData3.lessonId).name
this.formData3.courseName = this.courseList.find(i => i.courseCode == this.formData3.courseCode).courseName
console.log(this.formData3)
console.log(this.sbData.find(i => i.week == this.selectWeek.week))
this.sbData.find(i => i.week == this.selectWeek.week).voList.push(this.formData3)
this.dialogVisible3 = false
},
selectSb(row) {
this.selectWeek = row
},
subFormData1() {
this.$refs.fromRef.validate(async falg => {
const { data: res } = await this.$axios.post('/courseCycle/save', this.sbData.filter(i => i.voList.length > 0))
if (!res.data) return this.$message.error(res.message)
this.$message.success(res.message)
this.dialogVisible1 = false
})
},
subFormData() {
this.$refs.fromRef.validate(async falg => {
if (!falg) return;
......@@ -405,6 +552,8 @@ $borderCoder: #EAEDF2;
}
}
}
.week_table {
display: flex;
flex-direction: column;
......@@ -549,7 +698,6 @@ $borderCoder: #EAEDF2;
}
}
}
}
.isCurDate {
color: #FF2525 !important;
......
......@@ -177,6 +177,11 @@ export default {
},
created () {
if (this.$route.query) {
this.searchData.classCode = this.$route.query.classCode
this.searchData.classTime = this.$route.query.classTime
this.searchData.courseCode = this.$route.query.courseCode
}
this.initData()
this.initClass()
this.initStudent()
......
......@@ -24,7 +24,7 @@
<!-- 侧边图标栏 -->
<bo-big-aside @mouseenter.native="mouseIn()" :activeLine="activeLine" :asidList="navList" @click="activeClick" :active="activeOnePath" class="one_aside" />
<el-header class="swiper-header">
<el-row type="flex" v-if="$route.path == '/index'">
<el-row type="flex" v-if="$route.path == '/index' || $router.path == '/teach'">
<el-col :span="5" v-for="item in topSpanData" :key="item.id" >
<el-card class="top-card" style="background: rgb(32,119,40);opacity:0.8;">
<el-row type="flex">
......@@ -39,7 +39,7 @@
</el-card>
</el-col>
</el-row>
<swiper ref="mySwiper" :options="swiperOptions" style="background: rgb(32,119,40);opacity:0.8;">
<swiper v-else ref="mySwiper" :options="swiperOptions" style="background: rgb(32,119,40);opacity:0.8;">
<swiper-slide v-for="item in menuList.children" :key="item.id">
<el-card :class="`${item.path === active ? 'active-top-card' : 'top-card'}`">
<div class="card_item" @click="saveNavState(item.path)">
......@@ -188,13 +188,8 @@ export default {
window.sessionStorage.setItem('navList', JSON.stringify(menuRes.data[0].children))
const navList = JSON.parse(sessionStorage.getItem('navList'))
this.edNav(navList)
this.$router.push('/student/bjgl')
this.edActive(this.$route.path)
navList.forEach(item => {
if (item.path === '/student') {
return this.edMenuList(item)
}
})
this.$router.push('/teach')
this.edMenuList([])
}
},
async getTopData () {
......@@ -318,7 +313,11 @@ export default {
// logo点击跳转
goHome () {
// this.$router.push('/index')
if (this.subTitle == '教学模拟') {
this.$router.push('/teach')
} else {
this.$router.push('/index')
}
this.show = false
this.edActiveOnePath(`/${this.$route.path.split('/')[1]}`)
this.edActiveLine(`/${this.$route.path.split('/')[1]}`)
......
......@@ -36,7 +36,7 @@
<el-table-column type="index" width="60" label="序号" align="center" />
<el-table-column prop="studentNo" label="学号" align="center" />
<el-table-column prop="studentName" label="学员姓名" align="center" />
<el-table-column prop="className" label="班级" align="center" />
<el-table-column prop="className" label="班级" align="center" :show-overflow-tooltip="true"/>
<el-table-column prop="planCount" label="应出勤课程次数" align="center" />
<el-table-column prop="realCount" label="实际出勤课程次数" align="center" />
<el-table-column prop="leaveCount" label="请假次数" align="center" />
......
......@@ -132,6 +132,32 @@
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="space-between">
<el-col :span="11">
<el-form-item label="开始时间 :">
<el-date-picker
v-model="formData.termStart"
type="date"
style="width: 100%"
value-format="yyyy-MM-dd"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="结束时间 :">
<el-date-picker
v-model="formData.termEnd"
type="date"
style="width: 100%"
value-format="yyyy-MM-dd"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
</el-card>
</el-form>
<span slot="footer" class="dialog-footer">
......
......@@ -125,6 +125,19 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="是否隶属本学院 :">
<el-select
clearable
placeholder="请选择是否隶属本学院"
v-model="formData.belongCollege"
style="width: 100%"
>
<el-option label="否" value="0"></el-option>
<el-option label="是" value="1"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-card>
</el-form>
......@@ -147,7 +160,9 @@ export default {
data: [],
dialogVisible: false,
title: '',
formData: {},
formData: {
belongCollege: '0'
},
classList: [],
// 筛选数据
searchData: {
......@@ -250,7 +265,9 @@ export default {
})
},
dialogClose() {
this.formData = {}
this.formData = {
belongCollege: '0'
}
this.$refs.fromRef.resetFields()
},
// 分页功能
......
<template>
<div class="body" :style="'height:' + height + 'px'">
<div style="border: 2px solid #43A747;">
<el-card :style="'height:' + (height - 60) + 'px;overflow-y: auto;position:relative;'">
<!-- <el-select
filterable
size="mini"
placeholder="请选择班级编号"
v-model="searchData.classCode"
@change="initData"
>
<el-option v-for="item in classList" :key="item.id" :label="item.className +'(' + item.classCode +')'" :value="item.classCode"></el-option>
</el-select> -->
<el-calendar :first-day-of-week="7">
<template slot="dateCell" slot-scope="{date, data}" class="calItem" >
<div>
<p class="dayItem" v-if="data.day.substr(-2) < 10">{{ data.day.substr(-1) }}</p>
<p class="dayItem" v-else>{{ data.day.substr(-2)}}</p>
<div v-for="(item,index) in calendarData" :key="index">
<div v-if="(item.classTime.slice(0,4)).indexOf(data.day.split('-').slice(0)[0])!=-1 && parseInt(item.classTime.split('-').slice(1)[0]) === parseInt(data.day.split('-').slice(1)[0]) && parseInt(item.classTime.split('-').slice(2).join('-').slice(0,2)) === parseInt(data.day.split('-').slice(2).join('-'))">
<el-tooltip :content="item.courseName" placement="right">
<div class="mark" @click="handleClick(item)">
<p style="text-align: center;">{{ item.lessonName + ':' + item.courseName}}</p>
</div>
</el-tooltip>
</div>
<p v-else></p>
</div>
</div>
</template>
</el-calendar>
<el-dialog
:title="formData.data"
:append-to-body="true"
:visible.sync="dialogVisible"
width="30%"
:before-close="handleClose">
<el-form>
<el-form-item label="工作">
<el-input v-model="formData.remark"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<a-button type="danger" ghost @click="dialogVisible = false">取 消</a-button>
<a-button type="primary" ghost style="margin-left: 6px;" @click="dialogVisible = false;add()">确 定</a-button>
</span>
</el-dialog>
</el-card>
</div>
</div>
</template>
<script>
export default {
// 重加载事件
inject: ['reload'],
data () {
return {
height: document.documentElement.clientHeight - 176,
formData:{
data:'',
content: ''
},
dialogVisible: false,
calendarData: [
{classTime: '2022-09-28', remark: '哈哈'},
{classTime: '2022-09-28', remark: 'ADAS'},
{classTime: '2022-09-26', remark: '及萨哈'},
],
value: new Date(),
componentKey: 0
}
},
created() {
this.init()
},
mounted () {
const that = this
window.onresize = function temp() {
that.height = document.documentElement.clientHeight - 176
}
},
methods: {
async init() {
var date = new Date()
var year = date.getFullYear()
var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
const data = { createTime: (year + '-' + month) }
const { data: res } = await this.$axios.post('/classCourse/info', {classCode: '080301'})
if (!res.data) return this.$message.error(res.message)
this.calendarData = res.data
},
handleClick(row) {
if (new Date(row.classTime).getTime() < (new Date().getTime() - 1000*3600*24)) {
this.$router.push({
path:'/clockIn/getClockInRecord',
query: { classTime: row.classTime, classCode: row.classCode, courseCode: row.courseCode}
})
} else if (new Date(row.classTime).getTime() > (new Date().getTime() - 1000*3600*24) && new Date(row.classTime).getTime() < (new Date().getTime())) {
this.$confirm('是否查看考勤记录?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '排课',
type: 'success'
}).then(() => {
this.$router.push({
path:'/clockIn/getClockInRecord',
query: { classTime: row.classTime, classCode: row.classCode, courseCode: row.courseCode}
})
}).catch(() => {
this.$router.push('/arrangement/pkgl')
})
} else {
this.$router.push('/arrangement/pkgl')
}
},
calClick(item){
this.formData.data = item.day
},
handleClose(done){
done()
},
async add(){
var submitData = {
createTime: this.formData.data,
userId: this.userData.userId,
remark: this.formData.remark
}
const { data: res } = await this.$axios.post('/book/save', submitData)
if (!res.data) return this.$message.error(res.message)
location.reload()
},
}
}
</script>
<style scoped>
.is-selected{
color: #F8A535;
}
.mark{
background:#EBF4FE;
border-left: 4px solid #ccc;
margin-top: 1px;
border-color: #2196F3
}
.calItem{
overflow: hidden;
text-align: center;
}
</style>
<style>
.el-calendar-table .el-calendar-day {
box-sizing: border-box;
padding: 8px;
height: auto;
min-height: 79.1px;
}
.dayItem {
height: 15px;
}
p {
display: block;
margin-block-start: 0.4em;
margin-block-end: 0.4em;
margin-inline-start: 0px;
margin-inline-end: 0px;
}
.el-calendar__header {
padding: 2px 20px;
}
.el-calendar__header .el-calendar__title {
position: absolute;
left: 50%;
transform: translate(-50%);
font-size: 24px;
color: #138A64;
}
.el-backtop, .el-calendar-table td.is-today {
color: #138A64;
}
.el-calendar-table thead th:before{
content: '周';
}
.el-calendar__button-group {
width: 100%;
}
.el-button-group {
display: flex;
justify-content: space-between;
}
.el-button-group::after, .el-button-group::before {
content: unset;
}
.el-button-group>.el-button:not(:first-child):not(:last-child) {
/* display: none; */
left: 45%;
}
.el-button-group>.el-button:first-child:before{
content: '<';
}
.el-button-group>.el-button:last-child:before{
content: '>';
}
.el-button-group>.el-button:first-child span, .el-button-group>.el-button:last-child span{
display: none;
}
.el-calendar-table thead th {
text-align: center;
}
.el-calendar-table:not(.is-range) td.next{
visibility:hidden;
}
.el-calendar-table:not(.is-range) td.prev{
visibility:hidden;
}
</style>
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论