添加工具组件tool.vue

master
aiyadc 5 years ago
commit 73a320e906

@ -1,34 +1,41 @@
<template>
<div>
<home :names="homeParams" :user="nickname" :back="logout" @goPersonal="$router.push('/manager/personal')"></home>
<home
:names="homeParams"
:user="nickname"
@goPersonal="$router.push('/manager/index/personal')"
@back="logout"
></home>
</div>
</template>
<script>
import home from "~/components/teacher/home";
import {get} from "~/utils";
import {showSuccess} from "~/utils/dialog";
export default {
name: "index",
components:{
home
components: {
home
},
data(){
data() {
return {
nickname: '未登录',
homeParams: [
{
name: '审核', func: () => {
this.$router.push('/manager/check')
this.$router.push('/manager/index/labApply')
}
},
{
name: '实验室管理', func: () => {
this.$router.push('/manager/labManager')
name: '个人中心', func: () => {
this.$router.push('/manager/index/personal')
}
}
]
}
},
methods:{
methods: {
async logout() {
await get('lb/user/logout')
await showSuccess('退出成功', this)
@ -37,12 +44,11 @@
}, 1000)
}
},
mounted() {
this.nickname=get('lb/manager/getUserName')
async mounted() {
this.nickname = await get('lb/user/getUserName')
}
}
</script>
<style scoped>
</style>

@ -0,0 +1,19 @@
<template>
<div>
<nav-bar></nav-bar>
<router-view></router-view>
</div>
</template>
<script>
import navBar from "~/components/manager/navBar";
export default {
components:{navBar},
name: "empty"
}
</script>
<style scoped>
</style>

@ -7,11 +7,11 @@
@select="handleSelect"
background-color="#1989fa"
text-color="#ffffff"
active-text-color="#ffd04b">
<el-menu-item index="1" route="index" @click="$router.push('/manager')"></el-menu-item>
<el-menu-item index="2" route="course" @click="$router.push('/manager/check')" >审核</el-menu-item>
<el-menu-item index="3" route="schedule" @click="$router.push('/manager/labManager')"></el-menu-item>
active-text-color="#ffd04b"
router>
<el-menu-item index="1" route="../">首页</el-menu-item>
<el-menu-item index="2" route="labApply">审核</el-menu-item>
<el-menu-item index="3" route="labManage">实验室管理</el-menu-item>
<drop-down-user :user="nickname" @back="backLogin" @goPersonal="goPersonal"></drop-down-user>
</el-menu>
</div>
@ -41,7 +41,7 @@
}, 1000)
},
goPersonal: function () {
this.$router.push('/manager/personal')
this.$router.push('/manager/index/personal')
}
},
components: {

@ -1,129 +1,98 @@
<template>
<div>
<el-dialog
:visible.sync="addLabDialog"
width="48%">
<div style="width: 100%;height: 120% ">
<el-form :model="form">
<el-row>
<el-col style="width:45%">
<el-form-item label="位置" style="">
<el-input v-model="form.position" placeholder="位置" class="position" style="width:70%;border-style: outset "></el-input>
</el-form-item>
</el-col>
<el-col style="width:45% ;">
<el-form-item label="地址" style="">
<el-input v-model="form.status" placeholder="地址id" style="width:60% ;left:10%;border-style: outset" ></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col style="width:45%">
<el-form-item label="实验室id" style="">
<el-input v-model="form.labId" placeholder="请输入id" style="width:70%;left: -5%;border-style: outset"></el-input>
</el-form-item>
</el-col>
<el-col style="width:45%">
<el-form-item label="实验室名称" style="">
<el-select v-model="form.name" style="border-style: outset;width: 60%;left: 3%" >
<el-option value="509"></el-option>
<el-option value="2"></el-option>
<el-option value="3"></el-option>
<el-option value="4"></el-option>
</el-select>
<el-dialog
:visible.sync="addLabDialog"
width="48%">
<div style="width: 100%;height: 120% ">
<el-form :model="form">
<el-form-item label="位置" label-width="100px">
<el-input v-model="form.position" placeholder="位置"></el-input>
</el-form-item>
<el-form-item label="实验室名称" label-width="100px">
<el-input v-model="form.name" placeholder="实验室名称"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col style="width:45%">
<el-form-item label="状态"style="">
<el-select v-model="form.status" style="border-style: outset;" >
<el-option label="可预约" value="0"></el-option>
<el-option label="不可预约" value="1"></el-option>
<el-option label="故障" value="2"></el-option>
<!-- <el-col style="width:45%">-->
<!-- <el-form-item label=">-->
<!-- <el-select v-model="form.status" style=";" >-->
<!-- <el-option label="可预约" value="0"></el-option>-->
<!-- <el-option label="不可预约" value="1"></el-option>-->
<!-- <el-option label="故障" value="2"></el-option>-->
</el-select>
</el-form-item>
</el-col>
<el-col style="width:45%">
<el-form-item label="可容量认人数"style="">
<el-input v-model="form.capacity" placeholder="输入数量" style="width:60%;border-style: outset"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col style="width:45%">
<el-form-item label="管理员"style="">
<el-input v-model="form.manager" placeholder="管理员" style="width:70%;left: -1%;;border-style: outset"></el-input>
</el-form-item>
</el-col>
<el-col style="width:45%">
<el-form-item label="管理员id"style="">
<el-input v-model="form.managerId" placeholder="管理员id" style="width:60%;left:6%;border-style: outset"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="可申请时间段"style="">
<el-input v-model="form.managerId" placeholder="点击编辑" style="width:80%" @focus="detailTime"></el-input>
</el-form-item>
<el-button type="success" style="width: 120px;text-align: left" icon="el-icon-circle-plus-outline"
@click="showAddLab">新增
</el-button>
</el-form>
</div>
</el-dialog>
<el-dialog :visible="setLabTimeDialog" >
<set-lab-time ref="setLabTime"></set-lab-time>
<span slot="footer" class="dialog-footer">
<el-button @click="cancleSetTime"> </el-button>
<el-button type="primary" @click="setTime"> </el-button>
</span>
</el-dialog>
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-form-item label="可容纳人数" label-width="100px">
<el-input v-model="form.capacity" placeholder="输入数量"></el-input>
</el-form-item>
<el-form-item label="软件" label-width="100px">
<el-input v-model="form.software" placeholder="输入实验室包含的软件"></el-input>
</el-form-item>
<el-form-item label="管理员" label-width="100px">
<el-select v-model="form.manager_id" style="width: 100%;">
<div v-for="item in userList">
<el-option :label="item.nickname" :value="item.uid"></el-option>
</div>
</el-select>
</el-form-item>
<el-button type="success" style="width: 120px;text-align: center" @click="$emit('confirm')">
{{!form.lab_id?'新增':'修改'}}
</el-button>
</el-form>
</div>
</el-dialog>
<!-- <el-dialog :visible="setLabTimeDialog">-->
<!-- <set-lab-time ref="setLabTime"></set-lab-time>-->
<!-- <span slot="footer" class="dialog-footer">-->
<!-- <el-button @click="cancleSetTime"> </el-button>-->
<!-- <el-button type="primary" @click="setTime"> </el-button>-->
<!-- </span>-->
<!-- </el-dialog>-->
</div>
</template>
<script>
import setLabTime from "~/components/supManager/setLabTime";
import {get} from "~/utils";
export default {
name:"addLab",
components:{
setLabTime
},
data(){
return{
setLabTimeDialog:false,
addLabDialog:false,
form:{
position:'',
address:'',
labId:'',
name:'509',
status:'0',
capacity:'',
manager:'',
managerId:'',
schedule:[] //
data() {
return {
setLabTimeDialog: false,
addLabDialog: false,
form: {
position: '',
name: '',
capacity: '',
manager_id: 0,
software: ''
},
userList: []
}
},
methods:{
showAddLab(){
this.addLabDialog=false
},
detailTime(){
this.setLabTimeDialog=true
this.form.schedule=[]
},
cancleSetTime(){
this.setLabTimeDialog=false
this.$refs.setLabTime.allWeeksValue=[]
},
setTime(){
this.setLabTimeDialog=false
var st=this.$refs.setLabTime
this.form.schedule.push(st.form.year,st.form.semester,st.allWeeksValue)
methods: {
// showAddLab() {
// this.addLabDialog = false
// },
// detailTime() {
// this.setLabTimeDialog = true
// this.form.schedule = []
// },
// cancleSetTime() {
// this.setLabTimeDialog = false
// this.$refs.setLabTime.allWeeksValue = []
// },
setTime() {
this.setLabTimeDialog = false
var st = this.$refs.setLabTime
this.form.schedule.push(st.form.year, st.form.semester, st.allWeeksValue)
console.log(this.form.schedule)
}
},
async mounted() {
this.userList = await get('lb/user/getUserList')
}
}
</script>

@ -24,7 +24,7 @@
homeParams: [
{
name: '实验室管理', func: () => {
this.$router.push('/supManager/index/labManage')
this.$router.push('/supManager/index/labManager')
}
},
{

@ -1,143 +1,121 @@
<template>
<div style="width: 100%" >
<el-form :model="form" :inline="true">
<el-form-item label="类型" style="width: 20% ">
<el-select v-model="form.type" style="border-style: outset;" >
<el-option label="安卓实验室" value="0"></el-option>
<el-option label="window实验室" value="1"></el-option>
<el-option label="ios实验室" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="位置" style="width: 20% ;">
<el-select v-model="form.position" style="border-style: outset;" >
<el-option label="旭日楼" value="0"></el-option>
<el-option label="电子楼" value="1"></el-option>
<el-option label="实训楼" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="状态" style="width: 20%">
<el-select v-model="form.status" style="border-style: outset;" >
<el-option label="可预约" value="0"></el-option>
<el-option label="不可预约" value="1"></el-option>
<el-option label="故障" value="2"></el-option>
</el-select>
</el-form-item >
<el-input v-model="search" placeholder="输入关键字搜索" suffix-icon="el-icon-search" style="width: 20%;border-style: outset;"/>
<el-button type="success" style="width: 6%;text-align: left" icon="el-icon-circle-plus-outline"
@click="showAddLab" >新增
</el-button>
<el-button type="success" style="width: 8%;text-align: left" icon="el-icon-circle-plus-outline" @click="showAddLab" >批量操作
</el-button>
</el-form>
<div style="width: 100%;padding: 20px">
<el-form :model="time" :inline="true" style="width: 100%">
<span style="width: 10% ;:-20px">可预约时间段:
</span>
<!-- <span style="width: 10% ;:-20px">可预约时间段:-->
<!-- </span>-->
<el-form-item label="学年" style="width: 20% ;">
<el-select v-model="time.year" style="border-style: outset;" >
<el-option label="2017-2018" value="0"></el-option>
<el-option label="2018-2019" value="1"></el-option>
<el-option label="2019-2020" value="2"></el-option>
<el-select v-model="time.year" style="">
<el-option label="2017-2018" value="2017"></el-option>
<el-option label="2018-2019" value="2018"></el-option>
<el-option label="2019-2020" value="2019"></el-option>
<el-option label="2020-2021" value="2020"></el-option>
</el-select>
</el-form-item>
<el-form-item label="学期" style="width: 20%">
<el-select v-model="time.semester" style="border-style: outset;" >
<el-option label="第一学期" value="0"></el-option>
<el-option label="第二学期" value="1"></el-option>
<el-form-item label="学期" style="width: 20%">
<el-select v-model="time.semester" style="">
<el-option label="第一学期" :value="1"></el-option>
<el-option label="第二学期" :value="2"></el-option>
</el-select>
</el-form-item >
<el-form-item label="周次" style="width: 5%">
</el-form-item >
<el-select v-model="time.day1" style="border-style: outset;;width:5%" >
<el-option label="1" value="0"></el-option>
<el-option label="2" value="1"></el-option>
<el-option label="3" value="0"></el-option>
<el-option label="4" value="1"></el-option>
<el-option label="5" value="0"></el-option>
<el-option label="6" value="1"></el-option>
<el-option label="7" value="0"></el-option>
</el-select>
<span></span>
<el-select v-model="time.day2" style="border-style: outset;;width: 5%" >
<el-option label="1" value="0"></el-option>
<el-option label="2" value="1"></el-option>
<el-option label="3" value="0"></el-option>
<el-option label="4" value="1"></el-option>
<el-option label="5" value="0"></el-option>
<el-option label="6" value="1"></el-option>
<el-option label="7" value="0"></el-option>
</el-select>
<el-form-item label="星期几" style="width: 5%">
</el-form-item >
<el-select v-model="time.day1" style="border-style: outset;;width: 10%" >
<el-option label="星期一" value="0"></el-option>
<el-option label="星期二" value="1"></el-option>
<el-option label="星期三" value="0"></el-option>
<el-option label="星期四" value="1"></el-option>
<el-option label="星期五" value="0"></el-option>
<el-option label="星期六" value="1"></el-option>
<el-option label="星期七" value="0"></el-option>
</el-select>
<el-button type="success" style="width: 6%;text-align: left" icon="el-icon-circle-plus-outline"
@click="showAddLab" >检索
</el-button>
</el-form-item>
<!-- <el-form-item label="周次" style="width: 5%">-->
<!-- </el-form-item >-->
<!-- <el-select v-model="time.day1" style=";width:5%" >-->
<!-- <el-option label="1" value="0"></el-option>-->
<!-- <el-option label="2" value="1"></el-option>-->
<!-- <el-option label="3" value="0"></el-option>-->
<!-- <el-option label="4" value="1"></el-option>-->
<!-- <el-option label="5" value="0"></el-option>-->
<!-- <el-option label="6" value="1"></el-option>-->
<!-- <el-option label="7" value="0"></el-option>-->
<!-- </el-select>-->
<!-- <span></span>-->
<!-- <el-select v-model="time.day2" style=";width: 5%" >-->
<!-- <el-option label="1" value="0"></el-option>-->
<!-- <el-option label="2" value="1"></el-option>-->
<!-- <el-option label="3" value="0"></el-option>-->
<!-- <el-option label="4" value="1"></el-option>-->
<!-- <el-option label="5" value="0"></el-option>-->
<!-- <el-option label="6" value="1"></el-option>-->
<!-- <el-option label="7" value="0"></el-option>-->
<!-- </el-select>-->
<!-- <el-form-item label="星期几" style="width: 5%">-->
<!-- </el-form-item >-->
<!-- <el-select v-model="time.day1" style=";width: 10%" >-->
<!-- <el-option label="星期一" value="0"></el-option>-->
<!-- <el-option label="星期二" value="1"></el-option>-->
<!-- <el-option label="星期三" value="0"></el-option>-->
<!-- <el-option label="星期四" value="1"></el-option>-->
<!-- <el-option label="星期五" value="0"></el-option>-->
<!-- <el-option label="星期六" value="1"></el-option>-->
<!-- <el-option label="星期七" value="0"></el-option>-->
<!-- </el-select>-->
<!-- <el-button type="success" style="width: 6%;text-align: left" icon="el-icon-circle-plus-outline"-->
<!-- @click="showAddLab" >检索-->
<!-- </el-button>-->
</el-form>
<el-table
:data="tableData"
border
>
<el-table-column
prop="name"
label="实验室名称"
>
</el-table-column>
<el-table-column
prop="address"
label="地点"
>
</el-table-column>
<el-table-column
prop="status"
label="状态"
>
</el-table-column>
<el-table-column
prop="week"
label="可申请周次"
>
</el-table-column>
<el-table-column
prop="manage"
label="管理员"
>
</el-table-column>
<el-table-column
label="操作"
width="300px"
>
<el-row :gutter="20">
<el-col :span="8">
<el-input v-model="search" placeholder="输入关键字搜索" suffix-icon="el-icon-search"/>
</el-col>
<el-col :span="16" style="text-align: left">
<el-button type="success" style="width: 120px;text-align: center" icon="el-icon-circle-plus-outline"
@click="editLab()">新增
</el-button>
</el-col>
</el-row>
<!-- <el-form :model="form">-->
<!-- <el-form-item label="类型" style="width: 20% ">-->
<!-- <el-select v-model="form.type" style="" >-->
<!-- <el-option label="安卓实验室" value="0"></el-option>-->
<!-- <el-option label="window实验室" value="1"></el-option>-->
<!-- <el-option label="ios实验室" value="2"></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="位置" style="width: 20% ;">-->
<!-- <el-select v-model="form.position" style="" >-->
<!-- <el-option label="旭日楼" value="0"></el-option>-->
<!-- <el-option label="电子楼" value="1"></el-option>-->
<!-- <el-option label="实训楼" value="2"></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-input v-model="search" placeholder="输入关键字搜索" suffix-icon="el-icon-search" style="width: 20%;"/>-->
<!-- </el-form>-->
<el-table :data="tableData" border style="margin-top: 20px">
<el-table-column prop="name" label="实验室名称"></el-table-column>
<el-table-column prop="position" label="实验室地点"></el-table-column>
<el-table-column prop="name" label="实验室名称"></el-table-column>
<el-table-column prop="name" label="软件"></el-table-column>
<el-table-column prop="nickname" label="管理员"></el-table-column>
<el-table-column prop="tel" label="管理员联系电话"></el-table-column>
<el-table-column label="操作" width="370px">
<template slot-scope="scope">
<el-button @click="" style="border: lightpink solid 1px " size="small">查看申请详情</el-button>
<el-button @click="" size="small">详细信息</el-button>
<el-button @click="" size="small">查看</el-button>
<el-button @click="editLab(scope.row)" type="primary" size="mini" plain icon="el-icon-edit">编辑
</el-button>
<!-- <el-button @click="deleteLab(scope.row.lab_id)" type="danger" size="mini" plain-->
<!-- icon="el-icon-delete">删除-->
<!-- </el-button>-->
<el-button @click="schedulePreview(scope.row.lab_id)" size="mini" plain>查看课表</el-button>
<el-button @click="editSchedule(scope.row)" type="primary" size="mini" icon="el-icon-edit"
plain>修改可预约时间段
</el-button>
</template>
</el-table-column>
</el-table>
<add-lab ref="addLab"></add-lab>
<add-lab ref="addLab" @confirm="submit"></add-lab>
<set-lab-time ref="setLabTime"></set-lab-time>
</div>
</template>
@ -146,53 +124,101 @@
import addLab from "~/components/supManager/addLab" ;
import {get, post} from "~/utils";
import {showDialog, showFail, showSuccess} from "~/utils/dialog";
import {closeLoading, showDialog, showDialogWithReject, showFail, showLoading, showSuccess} from "~/utils/dialog";
import setLabTime from "~/components/supManager/setLabTime";
export default {
components:{addLab},
data(){
return{
edit:"",
form:{
type:'0',
position:'0',
status:'0',
},
time:{
year:'0',
week:'0',
day1:"0",
day2:"16",
semester:'0'
components: {addLab, setLabTime},
data() {
return {
edit: false,
setLabTimeDialog: false,
form: {},
time: {
year: '2019',
semester: 2
},
search:'',
tableData:[
{ name:"aaaa" , address:"509"}
],
search: '',
tableData: [],
}
},
methods:{
showAddLab(){
methods: {
async load() {
this.tableData = await get('/lb/lab/getLabList')
},
//
async editLab(item) {
//
this.edit = !!item
this.$refs.addLab.form = item ? item : {
position: '',
name: '',
capacity: '',
manager_id: ''
}
this.$refs.addLab.addLabDialog = true
console.log(this.$refs.addLab)
this.$refs.addLab.addLabDialog=true
this.$router.push('/supManager/index/labManager')
//
this.dialogFormVisible = true
},
//
// async editLab(item) {
// //
// this.edit = !!item
// this.userForm = item ? item : {
// nickname: "",
// tel: "",
// email: "",
// username: "",
// office: "",
// position: ''
// }
// //
// this.dialogFormVisible = true
async submit() {
this.$refs.addLab.form.capacity = parseInt(this.$refs.addLab.form.capacity)
this.$refs.addLab.form.managerId = this.$refs.addLab.form.manager_id
if (this.$refs.addLab.form.lab_id) {
//
await showDialog('确认要编辑吗?',this)
this.$refs.addLab.form.labId = this.$refs.addLab.form.lab_id
await post('lb/lab/updateLab', this.$refs.addLab.form).then(async () => {
await this.load()
showSuccess('编辑成功', this)
}).catch(() => {
showFail('编辑失败', this)
})
} else {
//
await showDialog('确认要新增吗?',this)
await showDialogWithReject('是否需要为该实验室添加'+parseInt(this.time.year)+'-'+(parseInt(this.time.year)+1)+'学年第'+this.time.semester+'学期16周的所有时间段',this).then(async()=>{
this.$refs.addLab.form.fastInsert = true
this.$refs.addLab.form.year = this.time.year
this.$refs.addLab.form.semester = this.time.semester
console.log(this.$refs.addLab.form)
await this.addLab()
}).catch(async()=>{
this.$refs.addLab.form.fastInsert = false
await this.addLab()
})
}
this.$refs.addLab.addLabDialog = false
},
async addLab(){
const loading = showLoading('正在新增...', this)
const newLab = await post('lb/lab/addLab', this.$refs.addLab.form).then(async () => {
await this.load()
showSuccess('新增成功', this)
closeLoading(loading)
}).catch(() => {
closeLoading(loading)
showFail('新增失败', this)
})
},
// async deleteLab(labId) {
// await showDialog("", this)
// await post('lb/lab/deleteLab', {labId}).then(async () => {
// await this.load()
// await showSuccess('', this)
// }).catch(err => {
// showFail(',', this)
// })
// },
async schedulePreview() {
await showFail('尚未开发', this)
},
async editSchedule(item) {
this.$refs.setLabTime.lab = item
this.$refs.setLabTime.form.labId = item.lab_id
this.$refs.setLabTime.setLabTimeDialog = true
}
},
computed: {
// tableDataComputed() {
@ -207,7 +233,8 @@
},
mounted() {
async mounted() {
await this.load()
// this.tableData=get('/url')
}
}

@ -1,8 +1,9 @@
<template>
<div>
<el-dialog :visible="setLabTimeDialog" @close="setLabTimeDialog=false" :title="lab.position+' '+lab.name">
<el-form :model="form">
<el-form-item label="学年:">
<el-select v-model="form.year" size="small" >
<el-form-item label="学年:" label-width="150px" align="center">
<el-select v-model="form.year" size="small" style="width: 100%">
<el-option
v-for="item in selectOptions1"
:key="item.value"
@ -12,8 +13,8 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item label="学期:">
<el-select v-model="form.semester" size="small" >
<el-form-item label="学期:" label-width="150px" align="center">
<el-select v-model="form.semester" size="small" style="width: 100%">
<el-option
v-for="item in selectOptions2"
:key="item.value"
@ -24,23 +25,24 @@
</el-select>
</el-form-item>
<el-form-item label="星期:">
<el-input v-model="form.time" @focus="showCourseDialog" placeholder="点我设置" style="width: 200px" >点击设置</el-input>
<el-form-item label="可预约时间段:" label-width="150px" align="center">
<el-button type="primary" style="width: 100%" @click="showCourseDialog"></el-button>
</el-form-item>
</el-form>
</el-dialog>
<!-- 表格节数选择-->
<el-dialog :visible.sync="courseDialog" append-to-body :close-on-click-modal="false" v-if="tableAlive" >
<el-dialog :visible.sync="courseDialog" append-to-body :close-on-click-modal="false"
:title="lab.position+' '+lab.name">
<tb_course :cClick="cellClick" :cStyle="cellStyle" table-label="" ref="times"></tb_course>
<span slot="footer" class="dialog-footer">
<el-button @click="cancelSetWeeks"> </el-button>
<el-button type="primary" @click="setWeeks"> </el-button>
</span>
</el-dialog>
<!-- checkbox:周次选择-->
<el-dialog :visible.sync="weekDialog" title="请选择周数" width="400px" :close-on-click-modal="false" append-to-body>
<week-selection @add="addWeek" @cancel="cancelSelection" ref="weekSelection" ></week-selection>
<el-dialog :visible.sync="weekDialog" title="请选择周数" width="400px" :close-on-click-modal="false" append-to-body>
<week-selection @add="addWeek" @cancel="cancelSelection" ref="weekSelection"
:able-list="ableList"></week-selection>
</el-dialog>
</div>
</template>
@ -49,33 +51,43 @@
import tb_course from "~/components/tb_course";
import {get, post, stop} from "~/utils";
import {showDialog, showFail, showSuccess} from "~/utils/dialog";
export default {
name: "setLabTime",
components:{weekSelection,tb_course},
data(){
return{
form:{
year:2019,
semester:2,
time:"",
components: {weekSelection, tb_course},
data() {
return {
lab: {
name: '',
position: ''
},
form: {
year: '2019',
semester: 2
},
allWeeksValue:[],
aWeekValue:[],
courseDialog:false,
tableAlive:false, //
weekDialog:false,
setLabTimeDialog: false,
ableList: [],
weekDisable: [],
allWeeksValue: [],
aWeekValue: [],
courseDialog: false,
tableAlive: false, //
weekDialog: false,
selectOptions1: [
{
value: 2017,
value: '2017',
label: '2017-2018年'
},
{
value: 2018,
value: '2018',
label: '2018-2019年'
},
{
value: 2019,
value: '2019',
label: '2019-2020年'
},
{
value: '2020',
label: '2020-2021年'
}
],
selectOptions2: [
@ -90,90 +102,108 @@
],
}
},
methods:{
methods: {
//
showCourseDialog(){
console.log('嘿')
this.tableAlive=true
this.courseDialog=true
async showCourseDialog() {
this.tableAlive = true
this.courseDialog = true
},
//
cellStyle:function({row, column, rowIndex, columnIndex}){
if (column.label!=''){
cellStyle: function ({row, column, rowIndex, columnIndex}) {
if (column.label != '') {
return 'cursor:pointer'
}
},
//
cellClick(row, column, cell, event) {
console.log(row.index)
if (column.label!='') {
this.weekDialog=true
this.perTargetValue=event.target //targettarget
console.log(this.aWeekValue,this.allWeeksValue)
this.aWeekValue.push(row.index,column.index)
}
async cellClick(row, column, cell, event) {
this.form.weeks = null
this.form.day = column.index
this.form.time = row.index
this.form.uc_id = 0
console.log(this.form)
const weekAll = await get('lb/labTime/getWeeks', this.form)
const weekAble = await get("lb/labTime/getWeeksAbleBook", this.form)
this.weekDisable = weekAll.filter(elem => !(weekAble.indexOf(elem) > -1))
this.ableList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18].filter(elem => !(this.weekDisable.indexOf(elem) > -1))
this.weekDialog = true
// if (column.label != '') {
// this.weekDialog = true
// this.perTargetValue = event.target //targettarget
// // console.log(this.aWeekValue, this.allWeeksValue)
// this.aWeekValue.push(row.index, column.index)
// }
},
//
async addWeek() {
this.weekDialog=false
console.log(this.form)
this.weekDialog = false
var targetValue = this.$refs.weekSelection.checkedValue
if(targetValue.length!==0){
this.perTargetValue.textContent='【'+targetValue+'】周'
this.aWeekValue.push(targetValue) //[rowIndex,column,targetValue]
this.allWeeksValue.push(this.aWeekValue) //allWeeksValue
this.perTargetValue.style.backgroundColor='lightyellow'
for (let i=0;i<this.allWeeksValue.length;i++){
for (let j=i+1;j<this.allWeeksValue.length;j++){
if (this.allWeeksValue[i][0]===this.allWeeksValue[j][0]&&this.allWeeksValue[i][1]===this.allWeeksValue[j][1]){
this.allWeeksValue.splice(i,1)
}
}
}
this.form.weeks = targetValue
//
await showDialog("确认设置此时间段可预约吗?", this)
for (let i in this.weekDisable) {
this.form.weeks.push(this.weekDisable[i])
}
this.aWeekValue=[]
console.log(this.form)
await post('lb/labTime/updateLabTime', this.form)
await showSuccess("设置成功", this)
// if (targetValue.length !== 0) {
// this.perTargetValue.textContent = '' + targetValue + ''
// this.aWeekValue.push(targetValue) //[rowIndex,column,targetValue]
// this.allWeeksValue.push(this.aWeekValue) //allWeeksValue
// this.perTargetValue.style.backgroundColor = 'lightyellow'
// for (let i = 0; i < this.allWeeksValue.length; i++) {
// for (let j = i + 1; j < this.allWeeksValue.length; j++) {
// if (this.allWeeksValue[i][0] === this.allWeeksValue[j][0] && this.allWeeksValue[i][1] === this.allWeeksValue[j][1]) {
// this.allWeeksValue.splice(i, 1)
// }
// }
// }
//
// }
// this.aWeekValue = []
// this.$refs.weekSelection.checkedValue=[] //
// console.log(this.allWeeksValue)
},
//
async cancelSelection() {
for (let i=0;i<this.allWeeksValue.length;i++){
if (this.aWeekValue[0]===this.allWeeksValue[i][0] && this.aWeekValue[1]===this.allWeeksValue[i][1]){
this.allWeeksValue.splice(i,1)
for (let i = 0; i < this.allWeeksValue.length; i++) {
if (this.aWeekValue[0] === this.allWeeksValue[i][0] && this.aWeekValue[1] === this.allWeeksValue[i][1]) {
this.allWeeksValue.splice(i, 1)
console.log(this.allWeeksValue)
}
}
this.aWeekValue=[]
this.perTargetValue.style.backgroundColor=''
this.perTargetValue.textContent=''
this.aWeekValue = []
this.perTargetValue.style.backgroundColor = ''
this.perTargetValue.textContent = ''
//allWeeksValue
// if (this.perTargetValue!=''){
// this.allWeeksValue.pop()
// }
this.weekDialog=false
this.weekDialog = false
},
//
async setWeeks () {
async setWeeks() {
console.log(this.$refs.times)
console.log(this.allWeeksValue)
// this.form.schedule=this.allWeeksValue.toString()
this.courseDialog=false
this.courseDialog = false
// console.log(this.$refs.times)
this.tableAlive=false
if (this.allWeeksValue.length!==0){
this.form.time='已设置,点击修改'
this.tableAlive = false
if (this.allWeeksValue.length !== 0) {
this.form.time = '已设置,点击修改'
}
},
//
cancelSetWeeks:function () {
this.allWeeksValue=[]
this.form.schedule=""
this.courseDialog=false
this.formDialog=true
cancelSetWeeks: function () {
this.allWeeksValue = []
this.form.schedule = ""
this.courseDialog = false
this.formDialog = true
console.log(this.allWeeksValue)
this.tableAlive=false //
this.tableAlive = false //
}
}
}

@ -65,10 +65,11 @@
export default {
name: "tb_course",
components: {navBar},
props: ['tableLabel','cClick', 'cStyle',],
props: ['tableLabel', 'cClick', 'cStyle',],
data() {
return {
item: '',
courseDialog: false,
data: [],
tableData: [
{
@ -113,94 +114,94 @@
},
mounted() {
console.log('aaaaaaaaaaaaaaa')
// this.data = [
// [
// {
// "ucId": 1,
// "name": "",
// "software": "IDEA",
// "year": "2019",
// "semester": 2,
// "population": 50,
// "classes": "176",
// "remind": "",
// "ishavedocuments": 1,
// "uid": 1
// },
// {
// "ucId": 1,
// "name": "",
// "software": "IDEA",
// "year": "2019",
// "semester": 2,
// "population": 50,
// "classes": "176",
// "remind": "",
// "ishavedocuments": 1,
// "uid": 1
// },
// {
// "ucId": 1,
// "name": "",
// "software": "IDEA",
// "year": "2019",
// "semester": 2,
// "population": 50,
// "classes": "176",
// "remind": "",
// "ishavedocuments": 1,
// "uid": 1
// },
// {
// "ucId": 1,
// "name": "",
// "software": "IDEA",
// "year": "2019",
// "semester": 2,
// "population": 50,
// "classes": "176",
// "remind": "",
// "ishavedocuments": 1,
// "uid": 1
// },
// {
// "ucId": 1,
// "name": "Web",
// "software": "IDEA",
// "year": "2019",
// "semester": 2,
// "population": 50,
// "classes": "176",
// "remind": "",
// "ishavedocuments": 1,
// "uid": 1
// },
// {
// "ucId": 1,
// "name": "",
// "software": "IDEA",
// "year": "2019",
// "semester": 2,
// "population": 50,
// "classes": "176",
// "remind": "",
// "ishavedocuments": 1,
// "uid": 1
// },
// {
// "ucId": 1,
// "name": "",
// "software": "IDEA",
// "year": "2019",
// "semester": 2,
// "population": 50,
// "classes": "176",
// "remind": "",
// "ishavedocuments": 1,
// "uid": 1
// }
// ]
// ]
// this.data = [
// [
// {
// "ucId": 1,
// "name": "",
// "software": "IDEA",
// "year": "2019",
// "semester": 2,
// "population": 50,
// "classes": "176",
// "remind": "",
// "ishavedocuments": 1,
// "uid": 1
// },
// {
// "ucId": 1,
// "name": "",
// "software": "IDEA",
// "year": "2019",
// "semester": 2,
// "population": 50,
// "classes": "176",
// "remind": "",
// "ishavedocuments": 1,
// "uid": 1
// },
// {
// "ucId": 1,
// "name": "",
// "software": "IDEA",
// "year": "2019",
// "semester": 2,
// "population": 50,
// "classes": "176",
// "remind": "",
// "ishavedocuments": 1,
// "uid": 1
// },
// {
// "ucId": 1,
// "name": "",
// "software": "IDEA",
// "year": "2019",
// "semester": 2,
// "population": 50,
// "classes": "176",
// "remind": "",
// "ishavedocuments": 1,
// "uid": 1
// },
// {
// "ucId": 1,
// "name": "Web",
// "software": "IDEA",
// "year": "2019",
// "semester": 2,
// "population": 50,
// "classes": "176",
// "remind": "",
// "ishavedocuments": 1,
// "uid": 1
// },
// {
// "ucId": 1,
// "name": "",
// "software": "IDEA",
// "year": "2019",
// "semester": 2,
// "population": 50,
// "classes": "176",
// "remind": "",
// "ishavedocuments": 1,
// "uid": 1
// },
// {
// "ucId": 1,
// "name": "",
// "software": "IDEA",
// "year": "2019",
// "semester": 2,
// "population": 50,
// "classes": "176",
// "remind": "",
// "ishavedocuments": 1,
// "uid": 1
// }
// ]
// ]
for (let i = 0; i < this.data.length; i++) {
this.tableData[i].Monday = this.data[i][0]
this.tableData[i].Tuesday = this.data[i][1]

@ -0,0 +1,65 @@
<template>
<div>
{{arr1}} -> {{constrict(arr1)}}<br>
{{arr2}}->{{seg(arr2,4)}}
</div>
</template>
<script>
export default {
name: "tool",
data(){
return{
arr1:[1,2,3,4,5,6,7,8,9,10,11,12,13],
arr2:[1,2,3,4,6,7,8,10]
}
},
methods:{
//
constrict(arr){
arr=[...new Set(arr)] //
console.log(arr)
var min=arr[0]
var max
var newArr=[]
for (let i=0;i<arr.length-1;i++){
max=arr[i]===arr[i+1]-1?arr[i+1]:arr[i]
if (max===arr[i] ||max===arr[arr.length-1]){
newArr.push(min===max?max:min+'-'+max)
min=arr[i+1]
if (min===arr[arr.length-1] && min-1 !==arr[i]){
newArr.push(min)
}
}
}
return newArr.toString()
},
//arrrange
seg(arr,range){
arr=[...new Set(arr)] //
var min=arr[0]
var max
var newArr=[]
for (let i=0;i<arr.length-1;i++){
max=arr[i]===arr[i+1]-1?arr[i+1]:arr[i]
if(arr[i]-min===range-1){ //constrictif
newArr.push(min+'-'+arr[i])
min=arr[i+1]
}
else if (max===arr[i] ||max===arr[arr.length-1]){
newArr.push(min===max?max:min+'-'+max)
min=arr[i+1]
if (min===arr[arr.length-1] && min-1 !==arr[i]){
newArr.push(min)
}
}
}
return newArr.toString()
}
}
}
</script>
<style scoped>
</style>

@ -10,7 +10,7 @@
</el-radio-group>
</div>
<el-checkbox-group v-model="checkedValue" @change="handleCheckedValueChange" ref="checkBox">
<el-checkbox-button v-for="item in checkOption" :label="item" :key="item" style="width: 52px" :disabled="!!disableList.find(elem => elem === item)"></el-checkbox-button>
<el-checkbox-button v-for="item in checkOption" :label="item<10?'0'+item:item" :key="item" style="width: 52px" :disabled="!ableList.find(elem => elem === item)"></el-checkbox-button>
</el-checkbox-group>
<el-divider></el-divider>
<el-button @click="$emit('add')"></el-button>
@ -22,6 +22,9 @@
<script>
export default {
name: "weekSelection",
props:{
ableList:{default: ()=>[]}
},
data(){
return{
checkedValue:[],
@ -29,8 +32,6 @@
isIndeterminate1:true,
isIndeterminate2:true,
isIndeterminate3:true,
ableList:[1,2,3,4,5,6],
disableList:[],
allVal:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],
singleVal:[1,3,5,7,9,11,13,15,17],
doubleVal:[2,4,6,8,10,12,14,16,18],
@ -49,7 +50,7 @@
},
handleCheckedValueChange:function (value) {
let checkedCount = value.length
this.radioValue=value.length===allVal.length?'all':''
this.radioValue=value.length===this.allVal.length?'all':''
}
},
mounted() {

@ -2,15 +2,12 @@
<div>
<router-view></router-view>
</div>
</template>
<script>
import navBar from "~/components/manager/navBar";
export default {
name: "index",
components:{
navBar
}
name: "empty"
}
</script>

@ -2,97 +2,94 @@
<div>
<el-container>
<!-- 标题栏-->
<!-- 标题栏-->
<el-header style="padding: 0">
<nav-bar></nav-bar>
</el-header>
<el-main>
<!-- /和学期-->
<!-- /和学期-->
<time-select ref="timeSelection"></time-select>
<!-- 表格查询申请记录-->
<!-- 表格查询申请记录-->
<el-header>
<div>
<el-input type="text" style="max-width: 400px;float: left" placeholder="请输入查询关键字" ><el-button slot="append" icon="el-icon-search"></el-button></el-input>
<el-input type="text" style="max-width: 400px;float: left" placeholder="请输入查询关键字">
<el-button slot="append" icon="el-icon-search"></el-button>
</el-input>
<el-button style="float: right" class="el-button--danger" @click="toMyRecord"></el-button>
</div>
</el-header>
<el-table :data="tableData" border ref="detailtb" height="500px">
<el-table-column prop="position" label="实验室地点">
</el-table-column>
<el-table-column prop="name" label="实验室名称">
</el-table-column>
<el-table-column prop="capacity" label="可容纳人数">
</el-table-column>
<el-table-column prop="status" label="状态">
</el-table-column>
<el-table-column prop="nickname" label="管理员">
</el-table-column>
<el-table-column prop="position" label="实验室地点"></el-table-column>
<el-table-column prop="name" label="实验室名称"></el-table-column>
<el-table-column prop="capacity" label="可容纳人数"></el-table-column>
<el-table-column prop="software" label="软件"></el-table-column>
<el-table-column prop="nickname" label="管理员"></el-table-column>
<el-table-column prop="tel" label="管理员联系电话"></el-table-column>
<el-table-column fixed="right"
label="操作"
width="212">
<template slot-scope="scope">
<el-button @click="" type="text" size="medium" @click="checkDetail(scope.row)"></el-button>
<el-button @click="" type="text" size="medium" @click="checkDetail(scope.row)">
</el-button>
<el-button @click="clickLabApply(scope.row)" type="text" size="medium">申请</el-button>
</template>>
</template>
>
</el-table-column>
</el-table>
</el-main>
<!-- 填写申请课室表单信息-->
<!-- 填写申请课室表单信息-->
<el-dialog title="请填写以下申请信息" :visible.sync="formDialog" :close-on-click-modal="false">
<el-form :model="form" :inline="true" label-width="100px" ref="courseForm">
<el-form-item label="课程名称" prop="course_name" :rules="[{ required: true, message: '请输入课程名称', trigger: 'blur' }]">
<el-select v-model="form.course_name" @change="selectChange">
<el-option v-for="item in courseOption" :key="item.uc_id" :label="item.name" :value="item.uc_id"></el-option>
<el-form-item label="课程名称" prop="ucId"
:rules="[{ required: true, message: '请选择课程', trigger: 'change' }]">
<el-select v-model="form.ucId" @change="selectChange">
<el-option v-for="item in courseOption" :key="item.ucId" :label="item.name"
:value="item.ucId"></el-option>
</el-select>
</el-form-item>
<el-form-item label="地址" >
<el-form-item label="地址">
<el-input v-model="form.position" disabled></el-input>
</el-form-item>
<!-- <el-form-item label="申请时间" prop="date" >-->
<!-- <el-input v-model="form.date" disabled></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="申请时间" prop="date" >-->
<!-- <el-input v-model="form.date" disabled></el-input>-->
<!-- </el-form-item>-->
<el-form-item label="实验室名称">
<el-input v-model="form.name" disabled></el-input>
</el-form-item>
<el-form-item label="姓名" prop="nickname" :rules="[{ required: true, message: '请输入您的姓名', trigger: 'blur' }]">
<el-form-item label="姓名" prop="nickname">
<el-input v-model="form.nickname" disabled></el-input>
</el-form-item>
<el-form-item label="手机号" prop="tel" :rules="[
{ required: true, message: '请输入您的手机号', trigger: 'blur' },
{type:'number',message: '请输入11位有效数字',trigger: 'blur'}]">
<el-form-item label="手机号" prop="tel">
<el-input v-model="form.tel" disabled></el-input>
</el-form-item>
<el-form-item label="使用班级" prop="class" :rules="[{ required: true, message: '请填写使用的班级', trigger: 'blur' }]">
<el-form-item label="使用班级" prop="class">
<el-input v-model="form.class" disabled></el-input>
</el-form-item>
<el-form-item label="班级人数" prop="population" :rules="[{ required: true, message: '填写班级人数', trigger: 'blur' }]">
<el-form-item label="班级人数" prop="population">
<el-input v-model="form.population" disabled></el-input>
</el-form-item>
<el-form-item label="备注" prop="remind"><el-input v-model="form.remind" placeholder="请输入备注"></el-input></el-form-item>
</el-form>
<div slot="footer">
<el-button type="primary" @click="setTime"></el-button>
<el-button @click="cancelAppy"></el-button>
</div>
</el-dialog>
<!-- 表格节数选择-->
<el-dialog :visible.sync="courseDialog" append-to-body :close-on-click-modal="false" v-if="tableAlive" >
<!-- 表格节数选择-->
<el-dialog :title="form.position+' '+form.name" :visible.sync="courseDialog" append-to-body
:close-on-click-modal="false" v-if="tableAlive">
<tb_course :cClick="cellClick" :cStyle="cellStyle" table-label="" ref="times"></tb_course>
<span slot="footer" class="dialog-footer">
<el-button @click="cancelSetWeeks"> </el-button>
<el-button type="primary" @click="setWeeks"> </el-button>
</span>
</el-dialog>
<!-- checkbox:周次选择-->
<el-dialog :visible.sync="weekDialog" title="请选择周数" width="400px" :close-on-click-modal="false" :before-close="beforeClose" :destroy-on-close="true">
<week-selection @add="addWeek" @cancel="cancelSelection" ref="weekSelection" ></week-selection>
<!-- checkbox:周次选择-->
<el-dialog :visible.sync="weekDialog" title="请选择周数" width="400px" :close-on-click-modal="false"
:before-close="beforeClose" :destroy-on-close="true">
<week-selection @add="addWeek" @cancel="cancelSelection" ref="weekSelection"
:able-list="ableList"></week-selection>
</el-dialog>
</el-container>
</div>
</template>
@ -103,218 +100,227 @@
import timeSelect from "~/components/timeSelect";
import {get, post, stop} from "~/utils";
import {showDialog, showFail, showSuccess} from "~/utils/dialog";
export default {
name: "applyLab",
components:{
tb_course,
navBar,
weekSelection,
timeSelect
components: {
tb_course, navBar, weekSelection, timeSelect
},
data(){
return{
user:{},
lab:{},
tableAlive:false, //
tableData:[{}],
checkOption :[],
data() {
return {
user: {},
lab: {},
ableList: [],
tableAlive: false, //
tableData: [{}],
checkOption: [],
formDialog:false,
courseDialog:false,
weekDialog:false,
formDialog: false,
courseDialog: false,
weekDialog: false,
perTargetValue:'',
aWeekValue:[],
allWeeksValue:[],
perTargetValue: '',
aWeekValue: [],
allWeeksValue: [],
form:{
position:'',
name:'',
date: '',
nickname:'',
tel:'',
course_name:'',
class:'',
population:'',
schedule:'',
remind:'无'
},
courseOption:[]
}
form: {
position: '',
name: '',
date: '',
nickname: '',
tel: '',
course_name: '',
class: '',
population: '',
schedule: '',
remind: '无'
},
courseOption: []
}
},
methods:{
methods: {
//
cellStyle({row, column, rowIndex, columnIndex}){
if (column.label!=''){
cellStyle({row, column, rowIndex, columnIndex}) {
if (column.label != '') {
return 'cursor:pointer'
}
},
//
async cellClick(row, column, cell, event) {
console.log(row.index)
this.form.weeks = null
this.form.day = column.index
this.form.time = row.index
this.form.year = this.$refs.timeSelection.year
this.form.semester = this.$refs.timeSelection.semester
this.ableList = await get("lb/labTime/getWeeksAbleBook", this.form)
this.aWeekValue.push(row.index, column.index)
//()使disable
// let position = this.lab.position
// let rowIndex = row.index
// let columIndex = column.index
// var weeks=get('',{position,rowIndex,columIndex}) //rowIndexcolumIndex:
// var weeks=[6,7,8]
//()使disablevar
if (column.label != '') {
this.perTargetValue = event.target //targettarget
this.aWeekValue.push(row.index, column.index)
if (column.label!='') {
this.perTargetValue=event.target //targettarget
this.aWeekValue.push(row.index,column.index)
new Promise((resolve,reject)=> { //使weekDialog
this.weekDialog=true
new Promise((resolve, reject) => { //使weekDialog
this.weekDialog = true
resolve('打开了weekDialog')
}).then((res)=>{
}).then((res) => {
// console.log(this.$refs.weekSelection)
var position = this.form.position
var rowIndex = row.index
var columnIndex = column.index
var selectedWeeks=get('',{position,rowIndex,columnIndex}) //rowIndexcolumIndex:
selectedWeeks=[1,2,3]
this.$refs.weekSelection.disableList=selectedWeeks
this.$refs.weekSelection.singleVal=this.$refs.weekSelection.singleVal.filter(x=>!selectedWeeks.includes(x))
this.$refs.weekSelection.doubleVal=this.$refs.weekSelection.doubleVal.filter(x=>!selectedWeeks.includes(x))
this.$refs.weekSelection.allVal=this.$refs.weekSelection.allVal.filter(x=>!selectedWeeks.includes(x))
console.log('aa',this.$refs.weekSelection.singleVal)
// var position = this.form.position
// var rowIndex = row.index
// var columnIndex = column.index
// var selectedWeeks = get('', {position, rowIndex, columnIndex}) //rowIndexcolumIndex:
// selectedWeeks = [1, 2, 3]
// this.$refs.weekSelection.disableList = selectedWeeks
// this.$refs.weekSelection.singleVal = this.$refs.weekSelection.singleVal.filter(x => !selectedWeeks.includes(x))
// this.$refs.weekSelection.doubleVal = this.$refs.weekSelection.doubleVal.filter(x => !selectedWeeks.includes(x))
// this.$refs.weekSelection.allVal = this.$refs.weekSelection.allVal.filter(x => !selectedWeeks.includes(x))
// console.log('aa', this.$refs.weekSelection.singleVal)
})
}
}
},
//
clickLabApply(row){
this.lab=row
this.form={
position:'',
name:'',
date: '',
nickname:'',
tel:'',
course_name:'',
class:'',
population:'',
schedule:'',
remind:'无'
clickLabApply(row) {
console.log(row)
this.lab = row
this.form = {
labId: row.lab_id,
position: row.position,
name: row.name,
nickname: this.user.nickname,
tel: this.user.tel,
class: '',
population: '',
remind: '无'
}
this.formDialog=true
this.formDialog = true
},
//
checkDetail(row){
this.$router.push('/labApplyDetail/'+row.position) //使
checkDetail(row) {
this.$router.push('/labApplyDetail/' + row.position) //使
},
//
selectChange(){
console.log('aaaaaa')
// this.form.position= this.lab.position //
// this.form.name= this.lab.name //
// this.form.nickname= this.user.nickname //
// this.form.tel= this.user.tel //
// this.form.class= this.courseOption.class //
// this.form.population= this.courseOption.population //
async selectChange(uc_id) {
let course = await get("lb/usercourse/findusercourse/" + uc_id)
this.form.class = course.classes
this.form.population = course.population
this.form.uc_id = uc_id
},
//
async addWeek() {
this.weekDialog = false
const targetValue = this.$refs.weekSelection.checkedValue
this.form.weeks = targetValue
//
await showDialog("确认预约此时间段吗?", this)
await post('lb/labrecord/updateWeeks', this.form)
await showSuccess("预约成功,管理员正在审核",this)
this.form.weeks = []
this.weekDialog=false
var targetValue = this.$refs.weekSelection.checkedValue
await showDialog("确认设置此时间段吗?",this)
if(targetValue.length!==0){
this.perTargetValue.textContent='【'+targetValue+'】周'
this.aWeekValue.push(targetValue) //[rowIndex,column,targetValue]
this.allWeeksValue.push(this.aWeekValue) //allWeeksValue
this.perTargetValue.style.backgroundColor='lightyellow'
for (let i=0;i<this.allWeeksValue.length;i++){
for (let j=i+1;j<this.allWeeksValue.length;j++){
if (this.allWeeksValue[i][0]===this.allWeeksValue[j][0]&&this.allWeeksValue[i][1]===this.allWeeksValue[j][1]){
this.allWeeksValue.splice(i,1)
if (targetValue.length !== 0) {
this.perTargetValue.textContent = '【' + targetValue + '】周'
this.aWeekValue.push(targetValue) //[rowIndex,column,targetValue]
this.allWeeksValue.push(this.aWeekValue) //allWeeksValue
this.perTargetValue.style.backgroundColor = 'lightyellow'
for (let i = 0; i < this.allWeeksValue.length; i++) {
for (let j = i + 1; j < this.allWeeksValue.length; j++) {
if (this.allWeeksValue[i][0] === this.allWeeksValue[j][0] && this.allWeeksValue[i][1] === this.allWeeksValue[j][1]) {
this.allWeeksValue.splice(i, 1)
}
}
}
}
this.aWeekValue=[]
this.$refs.weekSelection.checkedValue=[] //
this.aWeekValue = []
this.$refs.weekSelection.checkedValue = [] //
// console.log(this.allWeeksValue)
},
//
async cancelSelection() {
for (let i=0;i<this.allWeeksValue.length;i++){
if (this.aWeekValue[0]===this.allWeeksValue[i][0] && this.aWeekValue[1]===this.allWeeksValue[i][1]){
this.allWeeksValue.splice(i,1)
console.log(this.allWeeksValue)
}
}
this.aWeekValue=[]
this.perTargetValue.style.backgroundColor=''
this.perTargetValue.textContent=''
//allWeeksValue
// if (this.perTargetValue!=''){
// this.allWeeksValue.pop()
// }
this.weekDialog=false
},
// async cancelSelection() {
// for (let i = 0; i < this.allWeeksValue.length; i++) {
// if (this.aWeekValue[0] === this.allWeeksValue[i][0] && this.aWeekValue[1] === this.allWeeksValue[i][1]) {
// this.allWeeksValue.splice(i, 1)
// console.log(this.allWeeksValue)
// }
// }
// this.aWeekValue = []
// this.perTargetValue.style.backgroundColor = ''
// this.perTargetValue.textContent = ''
// //allWeeksValue
// // if (this.perTargetValue!=''){
// // this.allWeeksValue.pop()
// // }
// this.weekDialog = false
// },
//
async setWeeks () {
console.log(this.allWeeksValue)
await post('/lb_teacher_applyLab',{
weeks:this.allWeeksValue,
year:this.$refs.timeSelection.year,
semester:this.$refs.timeSelection.semester,
position:this.form.position,
name:this.form.name,
date: this.form.date,
nickname:this.form.nickname,
tel:this.form.tel,
course_name:this.form.course_name,
class:this.form.class,
population:this.form.population,
remind:this.form.remind
})
// this.form.schedule=this.allWeeksValue.toString()
this.courseDialog=false
// console.log(this.$refs.times)
this.tableAlive=false
},
// async setWeeks() {
// console.log(this.allWeeksValue)
// await post('/lb_teacher_applyLab', {
// weeks: this.allWeeksValue,
// year: this.$refs.timeSelection.year,
// semester: this.$refs.timeSelection.semester,
// position: this.form.position,
// name: this.form.name,
// date: this.form.date,
// nickname: this.form.nickname,
// tel: this.form.tel,
// course_name: this.form.course_name,
// class: this.form.class,
// population: this.form.population,
// remind: this.form.remind
// })
// // this.form.schedule=this.allWeeksValue.toString()
// this.courseDialog = false
// // console.log(this.$refs.times)
// this.tableAlive = false
//
// },
//
cancelSetWeeks:function () {
this.allWeeksValue=[]
this.form.schedule=""
this.courseDialog=false
this.formDialog=true
console.log(this.allWeeksValue)
this.tableAlive=false //
},
setTime:function () {
this.tableAlive=true
alert('这里本来要验证的,为了方便查看表格,暂无设置,需要验证请把代码行注释解除掉')
this.courseDialog=true
// this.$refs.courseForm.validate(()=>{
// if (vailid){
// this.courseDialog=true
// }
// })
this.formDialog=false
// cancelSetWeeks: function () {
// this.allWeeksValue = []
// this.form.schedule = ""
// this.courseDialog = false
// this.formDialog = true
// console.log(this.allWeeksValue)
// this.tableAlive = false //
// },
setTime: function () {
this.tableAlive = true
// alert('便')
// this.courseDialog = true
this.$refs.courseForm.validate((valid)=>{
if (valid){
this.courseDialog=true
this.formDialog = false
}
})
},
cancelAppy:function () {
this.formDialog=false
cancelAppy: function () {
this.formDialog = false
},
//
beforeClose(){
this.weekDialog=false
this.aWeekValue=[]
beforeClose() {
this.weekDialog = false
this.aWeekValue = []
},
//
toMyRecord(){
this.$router.push('/teacher/myApplyRecord/'+this.user.u_id) //user.u_id
toMyRecord() {
this.$router.push('/teacher/myApplyRecord/' + this.user.u_id) //user.u_id
},
async loadCourse() {
this.courseOption = await get("lb/usercourse/findbyyearandsemester/" + this.$refs.timeSelection.year + "/" + this.$refs.timeSelection.semester)
}
},
//mouted
async mounted() {
this.courseOption = get('',this.u_id) //id
// this.courseOption = get('',this.u_id) //id
//
this.courseOption=[{
this.courseOption = [{
year: '1819',
semester: '2',
uc_id: '12345677',
@ -325,11 +331,9 @@
isHaveDocuments: '1',
remind: '无',
}]
// console.log(this.$refs.detailtb)
console.log('this is mouted')
console.log(this.$refs.weekSelection)
var d = new Date()
this.tableData = await get('/lb/lab/getLabList')
this.user = await get('lb/user/getUserInfo')
await this.loadCourse()
}
}
</script>

@ -11,20 +11,28 @@
</div>
</el-header>
<el-table :data="tableData" border ref="mar" height="500px">
<el-table-column prop="position" label="实验室地点">
</el-table-column>
<el-table-column prop="name" label="实验室名称">
</el-table-column>
<el-table-column prop="class" label="授课班级">
</el-table-column>
<el-table-column prop="population" label="人数">
<el-table-column prop="position" label="实验室地点"></el-table-column>
<el-table-column prop="lab_name" label="实验室名称"></el-table-column>
<el-table-column prop="classes" label="授课班级"></el-table-column>
<el-table-column prop="population" label="人数"></el-table-column>
<el-table-column prop="course_name" label="课程名称"></el-table-column>
<el-table-column label="申请时间段" align="center">
<template slot-scope="scope">
{{parseInt(scope.row.year)}}-{{parseInt(scope.row.year)+1}}学年<br>
{{scope.row.semester}}学期<br>
{{scope.row.day}}{{scope.row.time}}节课<br>
{{scope.row.week}}
</template>
</el-table-column>
<el-table-column prop="course_name" label="课程名称">
<el-table-column prop="status" label="状态" align="center">
<template slot-scope="scope">
<el-tag
:type="scope.row.status === 0 ? 'primary' : scope.row.status ===2 ? 'success': 'warning'" disable-transitions>
{{scope.row.status ===0 ? '正在审核' :
scope.row.status ===2 ? '审核通过': '审核失败'}}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="status" label="状态"></el-table-column>
</el-table>
</el-main>
@ -40,25 +48,17 @@
import navBar from "~/components/teacher/navBar";
import {get} from "~/utils";
export default {
name: "myApplyRecord",
props:['u_id'],
components: {
tb_course,
navBar
},
data() {
return {
tableData: [
]
tableData: []
}
},
computed:{
},
mounted() {
get('/lb_teacher_myApplyRecord',this.u_id).then((res)=>{
this.tableData=res.data
})
async mounted() {
this.tableData = await get('/lb/labrecord/getRecordBySelf')
}
}
</script>

@ -18,12 +18,15 @@ import supHome from "~/components/supManager/home";
import supIndex from "~/components/supManager/index";
import globalPersonal from "~/components/personal";
import userManage from "~/components/supManager/userManage";
import setLabTime from "~/components/supManager/setLabTime";
import labManager from "~/components/supManager/labManage";
import check from "~/components/supManager/check";
import tool from "~/components/tool";
//manager
import home from "~/pages/manager/home";
import check from "~/components/supManager/check";
// manager
import managerHome from "~/components/manager/home"
import managerIndex from "~/components/manager/index";
// 要告诉 vue 使用 vueRouter
Vue.use(VueRouter);
@ -58,13 +61,13 @@ const routes = [
component: applyLab
},
{
path:'myApplyRecord/:u_id',
component:myApplyRecord,
props:true
path: 'myApplyRecord/:u_id',
component: myApplyRecord,
props: true
},
{
path:'courseManagement',
component:courseManagement
path: 'courseManagement',
component: courseManagement
},
{
path: 'myApplyRecord',
@ -75,12 +78,22 @@ const routes = [
{
path: '/manager',
component: manager,
children: [
{
path:'',
component:home
}
children: [{
path: '',
component: managerHome
},{
path: 'index',
component: managerIndex,
children: [
{
path: 'personal',
component: globalPersonal
}, {
path: 'labApply',
component: globalPersonal
}
]
}]
},
{
path: '/supManager',
@ -97,21 +110,17 @@ const routes = [
{
path: 'personal',
component: globalPersonal
},{
path: 'labManage',
component: globalPersonal
}, {
path: 'labManager',
component: labManager
},
{
path: 'userManage',
component: userManage
},
{
path:'labManager',
component:labManager
},
{
path:'check',
component:check
path: 'check',
component: check
}
]
}
@ -129,11 +138,11 @@ const routes = [
{
path: '/labApplyDetail/:id',
component: labApplyDetail,
props:true
props: true
},
{
path:'/setLabTime',
component: setLabTime
path: '/tool',
component: tool
}
]

@ -10,6 +10,19 @@ export async function showDialog(content,that){
}).catch(() => {});
})
}
//询问框带reject
export async function showDialogWithReject(content,that){
return new Promise((resolve, reject) => {
that.$confirm(content, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
resolve()
}).catch(() => {reject()});
})
}
// 显示操作成功
export function showSuccess(content,that) {
that.$message({

@ -38,6 +38,8 @@ async function request(url, method, data, params, header = {}) {
} else {
reject(res.data)
}
}).catch(err=>{
reject(err)
})
})
}

@ -68,7 +68,11 @@
<artifactId>easyexcel</artifactId>
<version>1.1.2-beta5</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>

@ -1,6 +1,7 @@
package com.hzu.bookingsystem.bean;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
@ -10,6 +11,7 @@ import java.util.Date;
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Builder
@Table(name = "tb_lab_record")
public class LabRecordBean {
@Id

@ -2,14 +2,17 @@ package com.hzu.bookingsystem.controller;
import com.hzu.bookingsystem.VO.ResultVO;
import com.hzu.bookingsystem.bean.LabBean;
import com.hzu.bookingsystem.bean.LabTimeBean;
import com.hzu.bookingsystem.converter.Map2Object;
import com.hzu.bookingsystem.dto.LabDTO;
import com.hzu.bookingsystem.service.LabService;
import com.hzu.bookingsystem.service.LabTimeService;
import com.hzu.bookingsystem.utils.ResultVOUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -19,28 +22,45 @@ import java.util.Map;
public class LabController {
@Autowired
private LabService labService;
@Autowired
private LabTimeService labTimeService;
@Autowired
private UserController userController;
//创建实验室
@PostMapping(value = "/addLab" , consumes = "application/json")
public ResultVO addLab(@RequestBody Map<String,Object> map){
@PostMapping(value = "/addLab", consumes = "application/json")
public ResultVO addLab(@RequestBody Map<String, Object> map, HttpServletRequest request) {
//转换对象
LabBean lab1 = (LabBean) Map2Object.map2Object(map,LabBean.class);
System.out.println(lab1);
//查重
if(labService.findByName(lab1.getName()) != null)
{
return ResultVOUtil.error(-1,"该实验室已存在");
System.out.println(map);
LabBean lab1 = (LabBean) Map2Object.map2Object(map, LabBean.class);
//判断是否
LabBean newLab = labService.add(lab1);
// 插入16周所有可选时间段
if ((Boolean) map.get("fastInsert")) {
LabTimeBean labTime1 = (LabTimeBean) Map2Object.map2Object(map, LabTimeBean.class);
for (int i = 1; i <= 7; i++) {
for (int j = 1; j <= 5; j++) {
for (int k = 1; k <= 16; k++) {
labTimeService.add(LabTimeBean.builder()
.labId(newLab.getLabId())
.year(labTime1.getYear()).semester(labTime1.getSemester()).week(k).day(i).time(j)
.creatorId(userController.getUIdByCookie(request))
.status(0)
.createTime(new Date())
.build());
}
}
}
}
labService.add(lab1);
return ResultVOUtil.success();
}
//通过LabId删除实验室
@PostMapping(value = "/deleteLab" , consumes = "application/json")
public ResultVO deleteLab(@RequestBody LabBean lab){
@PostMapping(value = "/deleteLab", consumes = "application/json")
public ResultVO deleteLab(@RequestBody LabBean lab) {
//查找实验室是否存在
LabBean lab1 = labService.findByLabId(lab.getLabId());
if(lab1 == null) {
if (lab1 == null) {
return ResultVOUtil.error(-1, "该实验室不存在");
} else {
labService.deleteByLabId(lab1.getLabId());
@ -49,12 +69,12 @@ public class LabController {
}
//修改实验室信息
@PostMapping(value = "/updateLab" , consumes = "application/json")
public ResultVO updateLab(@RequestBody Map<String,Object> map , HttpServletRequest request){
@PostMapping(value = "/updateLab", consumes = "application/json")
public ResultVO updateLab(@RequestBody Map<String, Object> map, HttpServletRequest request) {
//转换对象
LabBean lab1 = (LabBean) Map2Object.map2Object(map,LabBean.class);
if(lab1.getLabId() == null){
return ResultVOUtil.error(-1,"该实验室不存在,无法修改");
LabBean lab1 = (LabBean) Map2Object.map2Object(map, LabBean.class);
if (lab1.getLabId() == null) {
return ResultVOUtil.error(-1, "该实验室不存在,无法修改");
} else {
labService.update(lab1);
}
@ -62,8 +82,8 @@ public class LabController {
}
//查找实验室
@GetMapping(value = "/findByLabId" , consumes = "application/json")
public ResultVO<Map<String,Object>> findByLabId(@RequestParam("LabId") Integer labId){
@GetMapping(value = "/findByLabId", consumes = "application/json")
public ResultVO<Map<String, Object>> findByLabId(@RequestParam("LabId") Integer labId) {
LabBean lab1 = labService.findByLabId(labId);
System.out.println(lab1);
return ResultVOUtil.success(lab1);
@ -71,7 +91,7 @@ public class LabController {
//查找所有实验室列表
@GetMapping(value = "/getLabList")
public ResultVO getLabList(){
public ResultVO getLabList() {
List<LabDTO> labList = labService.findAllLabInfo();
return ResultVOUtil.success(labList);
}

@ -3,13 +3,17 @@ package com.hzu.bookingsystem.controller;
import com.hzu.bookingsystem.VO.ResultVO;
import com.hzu.bookingsystem.bean.LabRecordBean;
import com.hzu.bookingsystem.bean.LabTimeBean;
import com.hzu.bookingsystem.converter.Map2Object;
import com.hzu.bookingsystem.dto.LabRecordDTO;
import com.hzu.bookingsystem.service.LabRecordService;
import com.hzu.bookingsystem.service.LabTimeService;
import com.hzu.bookingsystem.utils.ResultVOUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -21,16 +25,22 @@ public class LabRecordController {
@Autowired
private LabRecordService labrecordService;
// 根据id查看实验室记录
@Autowired
private LabTimeService labTimeService;
@Autowired
private UserController userController;
// 根据id查看实验室记录
@GetMapping(value = "/findlabrecord/{lr_id}")
public ResultVO<Map<String, LabRecordBean>> FindLabRecordId(@PathVariable("lr_id") Integer lr_id) {
LabRecordBean labrecord = labrecordService.findById( lr_id) ;
LabRecordBean labrecord = labrecordService.findById(lr_id);
return ResultVOUtil.success(labrecord);
}
// 查找所有记录列表
@GetMapping(value = "/getlabrecordlist")
public ResultVO getLabRecordList(){
public ResultVO getLabRecordList() {
List<LabRecordBean> labrecordList = labrecordService.findAll();
return ResultVOUtil.success(labrecordList);
@ -46,31 +56,91 @@ public class LabRecordController {
// 增加申请记录
@PostMapping(value = "/addlabrecord", consumes = "application/json")
public ResultVO addLabRecord(@RequestBody Map<String,Object> map) {
LabRecordBean labrecord = (LabRecordBean) Map2Object.map2Object(map,LabRecordBean.class);
public ResultVO addLabRecord(@RequestBody Map<String, Object> map) {
LabRecordBean labrecord = (LabRecordBean) Map2Object.map2Object(map, LabRecordBean.class);
labrecordService.add(labrecord);
return ResultVOUtil.success();
}
//更新记录
@PostMapping(value = "/updatelabrecord", consumes = "application/json")
public ResultVO updateLabRecord(@RequestBody Map<String,Object> map, HttpServletRequest request){
LabRecordBean labrecord = (LabRecordBean) Map2Object.map2Object(map,LabRecordBean.class);
LabRecordBean labrecordnew = labrecordService.update(labrecord) ;
public ResultVO updateLabRecord(@RequestBody Map<String, Object> map, HttpServletRequest request) {
LabRecordBean labrecord = (LabRecordBean) Map2Object.map2Object(map, LabRecordBean.class);
LabRecordBean labrecordnew = labrecordService.update(labrecord);
return ResultVOUtil.success(labrecordnew);
}
// 通过lr_id删除记录
@PostMapping(value = "/deletelabrecord/{lr_id}", consumes = "application/json")
public ResultVO deleteLabRecord(@PathVariable("lr_id") Integer lr_id){
public ResultVO deleteLabRecord(@PathVariable("lr_id") Integer lr_id) {
// 查找该用户看是否存在
LabRecordBean labrecord = labrecordService.findById(lr_id);
if (labrecord == null){
return ResultVOUtil.error(-1,"记录不存在");
if (labrecord == null) {
return ResultVOUtil.error(-1, "记录不存在");
}
// 删除记录
labrecordService.deleteById(lr_id);
return ResultVOUtil.success();
}
}
/**
* author
* uid
*/
@GetMapping("/getRecordBySelf")
public ResultVO getRecordBySelf(HttpServletRequest request) {
List<LabRecordDTO> labRecordDTOList = labrecordService.findRecordListByUId(userController.getUIdByCookie(request));
return ResultVOUtil.success(labRecordDTOList);
}
/**
*
*/
@PostMapping(value = "/updateWeeks", consumes = "application/json")
public ResultVO updateWeeks(@RequestBody Map<String, Object> map, HttpServletRequest request) {
//1. 转换对象
LabTimeBean labTime = (LabTimeBean) Map2Object.map2Object(map, LabTimeBean.class);
Integer uc_id = (Integer)map.get("uc_id");
List<Integer> weeks = (List<Integer>)map.get("weeks");
System.out.println(labTime);
System.out.println(uc_id);
System.out.println(weeks);
//2. 定义对象
LabRecordBean labRecordBean = new LabRecordBean();
labRecordBean.setStatus(0);
labRecordBean.setUcId(uc_id);
//3. DAO
List<Integer> weekAble = labTimeService.findWeeksAble(labTime.getLabId(),labTime.getYear(),labTime.getSemester(),labTime.getDay(),labTime.getTime(),uc_id);
//判断是否选择不可选周数
for (Integer i :weeks){
if (!weekAble.contains(i))
return ResultVOUtil.error(-1,"选择了不可选的周数");
}
List<LabTimeBean> labTimeBeanList = labTimeService.findTimes(labTime.getLabId(),labTime.getYear(),labTime.getSemester(),labTime.getDay(),labTime.getTime());
//过滤不可选取
for (LabTimeBean labTimeBean: labTimeBeanList){
if (!weekAble.contains(labTimeBean.getWeek()))
labTimeBeanList.remove(labTime);
}
//4. 删除record
for (LabTimeBean labTimeBean: labTimeBeanList){
labrecordService.deleteByLtIdAndUcId(labTimeBean.getLtId(),uc_id);
}
//5. 插入record
for (LabTimeBean labTimeBean: labTimeBeanList){
if (weeks.contains(labTimeBean.getWeek())){
LabRecordBean labRecordBean1 = new LabRecordBean().builder()
.ltId(labTimeBean.getLtId())
.ucId(uc_id)
.status(0)
.build();
labrecordService.add(labRecordBean1);
}
}
return ResultVOUtil.success();
}
}

@ -92,8 +92,9 @@ public class LabTimeController {
@RequestParam("year") String year,
@RequestParam("semester") Integer semester,
@RequestParam("day") Integer day,
@RequestParam("time") Integer time) {
List<Integer> weeks = labTimeService.findWeeksAble(lab_id, year, semester, day, time);
@RequestParam("time") Integer time,
@RequestParam("uc_id") Integer uc_id) {
List<Integer> weeks = labTimeService.findWeeksAble(lab_id, year, semester, day, time, uc_id);
return ResultVOUtil.success(weeks);
}
@ -106,18 +107,18 @@ public class LabTimeController {
labTime.setCreateTime(new Date());
labTime.setStatus(0);
// 用户发起的修改请求
List<Integer> weeks = (List<Integer>)map.get("weeks");
List<Integer> weeks = (List<Integer>) map.get("weeks");
// 实验室预约时间段
List<Integer> weeksAll = labTimeService.findWeeks(labTime.getLabId(),labTime.getYear(),labTime.getSemester(),labTime.getDay(),labTime.getTime());
List<Integer> weeksAll = labTimeService.findWeeks(labTime.getLabId(), labTime.getYear(), labTime.getSemester(), labTime.getDay(), labTime.getTime());
// 实验室可预约时间段
List<Integer> weeksAble = labTimeService.findWeeksAble(labTime.getLabId(),labTime.getYear(),labTime.getSemester(),labTime.getDay(),labTime.getTime());
List<Integer> weeksAble = labTimeService.findWeeksAble(labTime.getLabId(), labTime.getYear(), labTime.getSemester(), labTime.getDay(), labTime.getTime());
// 实验室不可变换或不可选取的时间段
List<Integer> weeksDisable = new ArrayList<>(weeksAll);
weeksDisable.removeAll(weeksAble);
// 如果请求weeks中不包含不可选取的时间段报错
if (!weeks.containsAll(weeksDisable)){
return ResultVOUtil.error(-1,"已被预约的时间段无法去除");
if (!weeks.containsAll(weeksDisable)) {
return ResultVOUtil.error(-1, "已被预约的时间段无法去除");
}
// 2. 数据处理
@ -126,18 +127,18 @@ public class LabTimeController {
weekInsert.removeAll(weeksAll);
// 需要delete的weeks
List<Integer> weekDelete = new ArrayList<>(weeksAll);
List<Integer> weekDelete = new ArrayList<>(weeksAll);
weekDelete.removeAll(weeks);
// 3.批量删除
List<LabTimeBean> labTimeBeans = labTimeService.findTimes(labTime.getLabId(),labTime.getYear(),labTime.getSemester(),labTime.getDay(),labTime.getTime());
List<LabTimeBean> labTimeBeans = labTimeService.findTimes(labTime.getLabId(), labTime.getYear(), labTime.getSemester(), labTime.getDay(), labTime.getTime());
labTimeBeans.removeIf(labTimeBean -> !weekDelete.contains(labTimeBean.getWeek()));
for (LabTimeBean labTimeBean : labTimeBeans){
for (LabTimeBean labTimeBean : labTimeBeans) {
labTimeService.deleteByLtId(labTimeBean.getLtId());
}
// 4.批量插入
for (int i : weekInsert){
for (int i : weekInsert) {
LabTimeBean temp = LabTimeBean.builder().labId(labTime.getLabId())
.year(labTime.getYear())
.semester(labTime.getSemester())
@ -151,11 +152,36 @@ public class LabTimeController {
labTimeService.add(temp);
}
System.out.println("用户请求"+weeks);
System.out.println("原来有的"+weeksAll);
System.out.println("要插入的"+weekInsert);
System.out.println("要删除的"+weekDelete);
return ResultVOUtil.success(labTimeService.findWeeks(labTime.getLabId(),labTime.getYear(),labTime.getSemester(),labTime.getDay(),labTime.getTime()));
System.out.println("用户请求" + weeks);
System.out.println("原来有的" + weeksAll);
System.out.println("要插入的" + weekInsert);
System.out.println("要删除的" + weekDelete);
return ResultVOUtil.success(labTimeService.findWeeks(labTime.getLabId(), labTime.getYear(), labTime.getSemester(), labTime.getDay(), labTime.getTime()));
}
// /**
// * author 吴志岳
// * 一键插入该学年学期 16周所有可选时间段
// */
// @PostMapping(value = "/fastInsert", consumes = "application/json")
// public ResultVO fastInsert(@RequestBody Map<String, Object> map, HttpServletRequest request) {
// //转换对象
// LabTimeBean labTime1 = (LabTimeBean) Map2Object.map2Object(map, LabTimeBean.class);
// // 插入16周所有可选时间段
// for (int i = 1; i <= 7; i++) {
// for (int j = 1; j <= 5; j++) {
// for (int k = 1; k <= 16; k++){
// labTimeService.add(LabTimeBean.builder()
// .labId((Integer)map.get("labId"))
// .year(labTime1.getYear()).semester(labTime1.getSemester()).week(k).day(i).time(j)
// .creatorId(userController.getUIdByCookie(request))
// .status(0)
// .createTime(new Date())
// .build());
// }
// }
// }
// return ResultVOUtil.success();
// }
}

@ -0,0 +1,38 @@
package com.hzu.bookingsystem.dto;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Id;
@Data
public class LabRecordDTO {
// 学年
private String year;
// 学期
private Integer semester;
// 几周
private Integer week;
// 周几
private Integer day;
// 第几节课
private Integer time;
private Integer status;
//UC
private String course_name;
private Integer population;
private String classes;
//LAB
private String lab_name;
private String position;
}

@ -0,0 +1,46 @@
package com.hzu.bookingsystem.repository;
import com.hzu.bookingsystem.dto.LabRecordDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface LabRecordDTOMapper {
@Select("SELECT " +
" tb_lab_time.`year`, " +
" tb_lab_time.semester, " +
"COUNT(tb_lab_time.`week`) AS `week`,"+
" tb_lab_time.`day`, " +
" tb_lab_time.time, " +
" tb_lab_record.`status`, " +
" tb_user_course.`name` AS course_name, " +
" tb_user_course.population, " +
" tb_user_course.classes, " +
" tb_lab.`name` AS lab_name, " +
" tb_lab.position " +
"FROM " +
" tb_lab_time " +
" INNER JOIN " +
" tb_lab_record " +
" ON " +
" tb_lab_time.lt_id = tb_lab_record.lt_id " +
" INNER JOIN " +
" tb_lab " +
" ON " +
" tb_lab_time.lab_id = tb_lab.lab_id, " +
" tb_user_course " +
"WHERE " +
" tb_lab_time.lt_id = tb_lab_record.lt_id AND " +
" tb_lab_record.uc_id = tb_user_course.uc_id AND " +
" tb_lab_time.lab_id = tb_lab.lab_id AND " +
" tb_user_course.u_id = #{uId} " +
"GROUP BY " +
" tb_lab_time.`year`, " +
" tb_lab_time.semester, " +
" tb_lab_time.`day`, " +
" tb_lab_time.time, " +
" tb_lab_record.`status`")
List<LabRecordDTO> getRecordListByUId(Integer uId);
}

@ -26,6 +26,8 @@ public interface LabRecordRepository extends JpaRepository<LabRecordBean,String>
List<LabRecordBean> findByUcIdAndStatus(Integer uc_id , Integer status);
void deleteByLtIdAndUcId(Integer lt_id,Integer uc_id);
}

@ -85,4 +85,24 @@ public interface LabTimeRepository extends JpaRepository<LabTimeBean,String> {
" tb_lab_time.lt_id not in (select lt_id from tb_lab_record where status is not null)" , nativeQuery = true)
List<LabTimeBean> findWeeksAbleBook(Integer lab_id, String year, Integer semester, Integer day, Integer time) ;
@Query(value = "SELECT " +
" tb_lab_time.* " +
"FROM " +
"tb_lab_time LEFT JOIN tb_lab_record ON tb_lab_time.lt_id=tb_lab_record.lt_id " +
"WHERE " +
" tb_lab_time.lab_id = ?1 AND " +
" tb_lab_time.`year` = ?2 AND " +
" tb_lab_time.semester = ?3 AND " +
" tb_lab_time.`day` = ?4 AND " +
" tb_lab_time.time = ?5 AND " +
" tb_lab_time.lt_id not in (select lt_id from tb_lab_record where status is not null)" +
"OR " +
" tb_lab_time.lab_id = ?1 AND " +
" tb_lab_time.`year` = ?2 AND " +
" tb_lab_time.semester = ?3 AND " +
" tb_lab_time.`day` = ?4 AND " +
" tb_lab_time.time = ?5 AND " +
"tb_lab_record.uc_id = ?6" , nativeQuery = true)
List<LabTimeBean> findWeeksAbleBook(Integer lab_id, String year, Integer semester, Integer day, Integer time,Integer uc_id) ;
}

@ -2,6 +2,7 @@ package com.hzu.bookingsystem.service;
import com.hzu.bookingsystem.bean.LabRecordBean;
import com.hzu.bookingsystem.dto.LabRecordDTO;
import java.util.List;
@ -65,6 +66,17 @@ public interface LabRecordService {
String[][] getcourseByuser(Integer u_id , String year ,Integer semester ) ;
/**
* author
*
*/
List<LabRecordDTO> findRecordListByUId(Integer uId);
/**
* author
* LTidUCidLR
*/
void deleteByLtIdAndUcId(Integer LtId,Integer UcId);

@ -83,6 +83,14 @@ public interface LabTimeService {
*/
List<Integer> findWeeksAble(Integer lab_id,String year,Integer semester, Integer day,Integer time) ;
/**
* ucid
*author
* @param lab_idyearsemester
* @return List<Integer>
*/
List<Integer> findWeeksAble(Integer lab_id,String year,Integer semester, Integer day,Integer time,Integer uc_id) ;
/**
*
*/

@ -4,15 +4,23 @@ import com.hzu.bookingsystem.bean.LabRecordBean;
import com.hzu.bookingsystem.bean.LabTimeBean;
import com.hzu.bookingsystem.bean.UserBean;
import com.hzu.bookingsystem.bean.UserCourseBean;
import com.hzu.bookingsystem.dto.LabRecordDTO;
import com.hzu.bookingsystem.dto.LabTimeDTO;
import com.hzu.bookingsystem.repository.LabRecordDTOMapper;
import com.hzu.bookingsystem.repository.LabRecordRepository;
import com.hzu.bookingsystem.service.LabRecordService;
import com.hzu.bookingsystem.service.LabTimeService;
import com.hzu.bookingsystem.service.UserCourseService;
import com.hzu.bookingsystem.service.UserService;
import org.hibernate.SQLQuery;
import org.hibernate.transform.Transformers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.transaction.Transactional;
import java.util.List;
@ -27,6 +35,11 @@ public class LabRecordServiceImpl implements LabRecordService{
@Resource
private UserService userservice ;
@Resource
private LabRecordDTOMapper labRecordDTOMapper;
@PersistenceContext
private EntityManager entityManager;
@Override
public LabRecordBean add(LabRecordBean labrcecord) {
labrcecord.setLrId(null);
@ -147,4 +160,22 @@ public class LabRecordServiceImpl implements LabRecordService{
}
return value_name ;
}
/**
* uid
* author
*/
@Override
public List<LabRecordDTO> findRecordListByUId(Integer uId) {
return labRecordDTOMapper.getRecordListByUId(13);
}
@Transactional
@Override
public void deleteByLtIdAndUcId(Integer ltId, Integer ucId) {
labrecordRepository.deleteByLtIdAndUcId(ltId,ucId);
}
}

@ -119,6 +119,24 @@ public class LabTimeServiceImpl implements LabTimeService {
return weeks;
}
/**
* author
*
* @param lab_idyearsemester
* @param year
* @param semester
* @return
*/
@Override
public List<Integer> findWeeksAble(Integer lab_id, String year, Integer semester, Integer day, Integer time,Integer uc_id) {
List<LabTimeBean> list = labTimeRepository.findWeeksAbleBook(lab_id, year, semester, day, time, uc_id);
List<Integer> weeks = new ArrayList<>();
for (LabTimeBean labtime : list) {
weeks.add(labtime.getWeek());
}
return weeks;
}
@Override
public List<LabTimeBean> findTimes(Integer lab_id, String year, Integer semester, Integer day, Integer time) {
return labTimeRepository.findByLabIdAndYearAndSemesterAndDayAndTime(lab_id, year, semester, day, time);

@ -23,4 +23,6 @@ spring:
useGlobalDataourceStat: true
connectionProperties: druid.stat.mergeSql=true:druid.stat.slowSqlMillis=500
mybatis:
# 指定sql映射文件位置
mapper-locations: classpath:mybatis/mapper/*.xml

Loading…
Cancel
Save