添加工具组件tool.vue

master
aiyadc 5 years ago
commit 73a320e906

@ -1,34 +1,41 @@
<template> <template>
<div> <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> </div>
</template> </template>
<script> <script>
import home from "~/components/teacher/home"; import home from "~/components/teacher/home";
import {get} from "~/utils";
import {showSuccess} from "~/utils/dialog";
export default { export default {
name: "index", components: {
components:{
home home
}, },
data(){ data() {
return { return {
nickname: '未登录', nickname: '未登录',
homeParams: [ homeParams: [
{ {
name: '审核', func: () => { name: '审核', func: () => {
this.$router.push('/manager/check') this.$router.push('/manager/index/labApply')
} }
}, },
{ {
name: '实验室管理', func: () => { name: '个人中心', func: () => {
this.$router.push('/manager/labManager') this.$router.push('/manager/index/personal')
} }
} }
] ]
} }
}, },
methods:{ methods: {
async logout() { async logout() {
await get('lb/user/logout') await get('lb/user/logout')
await showSuccess('退出成功', this) await showSuccess('退出成功', this)
@ -37,12 +44,11 @@
}, 1000) }, 1000)
} }
}, },
mounted() { async mounted() {
this.nickname=get('lb/manager/getUserName') this.nickname = await get('lb/user/getUserName')
} }
} }
</script> </script>
<style scoped> <style scoped>
</style> </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" @select="handleSelect"
background-color="#1989fa" background-color="#1989fa"
text-color="#ffffff" text-color="#ffffff"
active-text-color="#ffd04b"> active-text-color="#ffd04b"
<el-menu-item index="1" route="index" @click="$router.push('/manager')"></el-menu-item> router>
<el-menu-item index="1" route="../">首页</el-menu-item>
<el-menu-item index="2" route="course" @click="$router.push('/manager/check')" >审核</el-menu-item> <el-menu-item index="2" route="labApply">审核</el-menu-item>
<el-menu-item index="3" route="schedule" @click="$router.push('/manager/labManager')"></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> <drop-down-user :user="nickname" @back="backLogin" @goPersonal="goPersonal"></drop-down-user>
</el-menu> </el-menu>
</div> </div>
@ -41,7 +41,7 @@
}, 1000) }, 1000)
}, },
goPersonal: function () { goPersonal: function () {
this.$router.push('/manager/personal') this.$router.push('/manager/index/personal')
} }
}, },
components: { components: {

@ -5,125 +5,94 @@
width="48%"> width="48%">
<div style="width: 100%;height: 120% "> <div style="width: 100%;height: 120% ">
<el-form :model="form"> <el-form :model="form">
<el-row>
<el-col style="width:45%"> <el-form-item label="位置" label-width="100px">
<el-form-item label="位置" style=""> <el-input v-model="form.position" placeholder="位置"></el-input>
<el-input v-model="form.position" placeholder="位置" class="position" style="width:70%;border-style: outset "></el-input>
</el-form-item> </el-form-item>
</el-col>
<el-col style="width:45% ;"> <el-form-item label="实验室名称" label-width="100px">
<el-form-item label="地址" style=""> <el-input v-model="form.name" placeholder="实验室名称"></el-input>
<el-input v-model="form.status" placeholder="地址id" style="width:60% ;left:10%;border-style: outset" ></el-input>
</el-form-item> </el-form-item>
</el-col> <!-- <el-col style="width:45%">-->
</el-row> <!-- <el-form-item label=">-->
<el-row> <!-- <el-select v-model="form.status" style=";" >-->
<el-col style="width:45%"> <!-- <el-option label="可预约" value="0"></el-option>-->
<el-form-item label="实验室id" style=""> <!-- <el-option label="不可预约" value="1"></el-option>-->
<el-input v-model="form.labId" placeholder="请输入id" style="width:70%;left: -5%;border-style: outset"></el-input> <!-- <el-option label="故障" value="2"></el-option>-->
<!-- </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>
</el-col>
<el-col style="width:45%"> <el-form-item label="软件" label-width="100px">
<el-form-item label="实验室名称" style=""> <el-input v-model="form.software" placeholder="输入实验室包含的软件"></el-input>
<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-form-item> </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-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-select>
</el-form-item> </el-form-item>
</el-col> <el-button type="success" style="width: 120px;text-align: center" @click="$emit('confirm')">
<el-col style="width:45%"> {{!form.lab_id?'新增':'修改'}}
<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-button>
</el-form> </el-form>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog :visible="setLabTimeDialog" > <!-- <el-dialog :visible="setLabTimeDialog">-->
<set-lab-time ref="setLabTime"></set-lab-time> <!-- <set-lab-time ref="setLabTime"></set-lab-time>-->
<span slot="footer" class="dialog-footer"> <!-- <span slot="footer" class="dialog-footer">-->
<el-button @click="cancleSetTime"> </el-button> <!-- <el-button @click="cancleSetTime"> </el-button>-->
<el-button type="primary" @click="setTime"> </el-button> <!-- <el-button type="primary" @click="setTime"> </el-button>-->
</span> <!-- </span>-->
</el-dialog> <!-- </el-dialog>-->
</div> </div>
</template> </template>
<script> <script>
import setLabTime from "~/components/supManager/setLabTime"; import {get} from "~/utils";
export default { export default {
name:"addLab", data() {
components:{ return {
setLabTime setLabTimeDialog: false,
}, addLabDialog: false,
data(){ form: {
return{ position: '',
setLabTimeDialog:false, name: '',
addLabDialog:false, capacity: '',
form:{ manager_id: 0,
position:'', software: ''
address:'',
labId:'',
name:'509',
status:'0',
capacity:'',
manager:'',
managerId:'',
schedule:[] //
}, },
userList: []
} }
}, },
methods:{ methods: {
showAddLab(){ // showAddLab() {
this.addLabDialog=false // this.addLabDialog = false
}, // },
detailTime(){ // detailTime() {
this.setLabTimeDialog=true // this.setLabTimeDialog = true
this.form.schedule=[] // this.form.schedule = []
}, // },
cancleSetTime(){ // cancleSetTime() {
this.setLabTimeDialog=false // this.setLabTimeDialog = false
this.$refs.setLabTime.allWeeksValue=[] // this.$refs.setLabTime.allWeeksValue = []
}, // },
setTime(){ setTime() {
this.setLabTimeDialog=false this.setLabTimeDialog = false
var st=this.$refs.setLabTime var st = this.$refs.setLabTime
this.form.schedule.push(st.form.year,st.form.semester,st.allWeeksValue) this.form.schedule.push(st.form.year, st.form.semester, st.allWeeksValue)
console.log(this.form.schedule) console.log(this.form.schedule)
} }
},
async mounted() {
this.userList = await get('lb/user/getUserList')
} }
} }
</script> </script>

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

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

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

@ -65,10 +65,11 @@
export default { export default {
name: "tb_course", name: "tb_course",
components: {navBar}, components: {navBar},
props: ['tableLabel','cClick', 'cStyle',], props: ['tableLabel', 'cClick', 'cStyle',],
data() { data() {
return { return {
item: '', item: '',
courseDialog: false,
data: [], data: [],
tableData: [ tableData: [
{ {

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

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

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

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

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

@ -10,6 +10,19 @@ export async function showDialog(content,that){
}).catch(() => {}); }).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) { export function showSuccess(content,that) {
that.$message({ that.$message({

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

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

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

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

@ -3,13 +3,17 @@ package com.hzu.bookingsystem.controller;
import com.hzu.bookingsystem.VO.ResultVO; import com.hzu.bookingsystem.VO.ResultVO;
import com.hzu.bookingsystem.bean.LabRecordBean; import com.hzu.bookingsystem.bean.LabRecordBean;
import com.hzu.bookingsystem.bean.LabTimeBean;
import com.hzu.bookingsystem.converter.Map2Object; import com.hzu.bookingsystem.converter.Map2Object;
import com.hzu.bookingsystem.dto.LabRecordDTO;
import com.hzu.bookingsystem.service.LabRecordService; import com.hzu.bookingsystem.service.LabRecordService;
import com.hzu.bookingsystem.service.LabTimeService;
import com.hzu.bookingsystem.utils.ResultVOUtil; import com.hzu.bookingsystem.utils.ResultVOUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -21,16 +25,22 @@ public class LabRecordController {
@Autowired @Autowired
private LabRecordService labrecordService; private LabRecordService labrecordService;
// 根据id查看实验室记录 @Autowired
private LabTimeService labTimeService;
@Autowired
private UserController userController;
// 根据id查看实验室记录
@GetMapping(value = "/findlabrecord/{lr_id}") @GetMapping(value = "/findlabrecord/{lr_id}")
public ResultVO<Map<String, LabRecordBean>> FindLabRecordId(@PathVariable("lr_id") Integer 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); return ResultVOUtil.success(labrecord);
} }
// 查找所有记录列表 // 查找所有记录列表
@GetMapping(value = "/getlabrecordlist") @GetMapping(value = "/getlabrecordlist")
public ResultVO getLabRecordList(){ public ResultVO getLabRecordList() {
List<LabRecordBean> labrecordList = labrecordService.findAll(); List<LabRecordBean> labrecordList = labrecordService.findAll();
return ResultVOUtil.success(labrecordList); return ResultVOUtil.success(labrecordList);
@ -46,31 +56,91 @@ public class LabRecordController {
// 增加申请记录 // 增加申请记录
@PostMapping(value = "/addlabrecord", consumes = "application/json") @PostMapping(value = "/addlabrecord", consumes = "application/json")
public ResultVO addLabRecord(@RequestBody Map<String,Object> map) { public ResultVO addLabRecord(@RequestBody Map<String, Object> map) {
LabRecordBean labrecord = (LabRecordBean) Map2Object.map2Object(map,LabRecordBean.class); LabRecordBean labrecord = (LabRecordBean) Map2Object.map2Object(map, LabRecordBean.class);
labrecordService.add(labrecord); labrecordService.add(labrecord);
return ResultVOUtil.success(); return ResultVOUtil.success();
} }
//更新记录 //更新记录
@PostMapping(value = "/updatelabrecord", consumes = "application/json") @PostMapping(value = "/updatelabrecord", consumes = "application/json")
public ResultVO updateLabRecord(@RequestBody Map<String,Object> map, HttpServletRequest request){ public ResultVO updateLabRecord(@RequestBody Map<String, Object> map, HttpServletRequest request) {
LabRecordBean labrecord = (LabRecordBean) Map2Object.map2Object(map,LabRecordBean.class); LabRecordBean labrecord = (LabRecordBean) Map2Object.map2Object(map, LabRecordBean.class);
LabRecordBean labrecordnew = labrecordService.update(labrecord) ; LabRecordBean labrecordnew = labrecordService.update(labrecord);
return ResultVOUtil.success(labrecordnew); return ResultVOUtil.success(labrecordnew);
} }
// 通过lr_id删除记录 // 通过lr_id删除记录
@PostMapping(value = "/deletelabrecord/{lr_id}", consumes = "application/json") @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); LabRecordBean labrecord = labrecordService.findById(lr_id);
if (labrecord == null){ if (labrecord == null) {
return ResultVOUtil.error(-1,"记录不存在"); return ResultVOUtil.error(-1, "记录不存在");
} }
// 删除记录 // 删除记录
labrecordService.deleteById(lr_id); labrecordService.deleteById(lr_id);
return ResultVOUtil.success(); 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("year") String year,
@RequestParam("semester") Integer semester, @RequestParam("semester") Integer semester,
@RequestParam("day") Integer day, @RequestParam("day") Integer day,
@RequestParam("time") Integer time) { @RequestParam("time") Integer time,
List<Integer> weeks = labTimeService.findWeeksAble(lab_id, year, semester, day, time); @RequestParam("uc_id") Integer uc_id) {
List<Integer> weeks = labTimeService.findWeeksAble(lab_id, year, semester, day, time, uc_id);
return ResultVOUtil.success(weeks); return ResultVOUtil.success(weeks);
} }
@ -106,18 +107,18 @@ public class LabTimeController {
labTime.setCreateTime(new Date()); labTime.setCreateTime(new Date());
labTime.setStatus(0); 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); List<Integer> weeksDisable = new ArrayList<>(weeksAll);
weeksDisable.removeAll(weeksAble); weeksDisable.removeAll(weeksAble);
// 如果请求weeks中不包含不可选取的时间段报错 // 如果请求weeks中不包含不可选取的时间段报错
if (!weeks.containsAll(weeksDisable)){ if (!weeks.containsAll(weeksDisable)) {
return ResultVOUtil.error(-1,"已被预约的时间段无法去除"); return ResultVOUtil.error(-1, "已被预约的时间段无法去除");
} }
// 2. 数据处理 // 2. 数据处理
@ -130,14 +131,14 @@ public class LabTimeController {
weekDelete.removeAll(weeks); weekDelete.removeAll(weeks);
// 3.批量删除 // 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())); labTimeBeans.removeIf(labTimeBean -> !weekDelete.contains(labTimeBean.getWeek()));
for (LabTimeBean labTimeBean : labTimeBeans){ for (LabTimeBean labTimeBean : labTimeBeans) {
labTimeService.deleteByLtId(labTimeBean.getLtId()); labTimeService.deleteByLtId(labTimeBean.getLtId());
} }
// 4.批量插入 // 4.批量插入
for (int i : weekInsert){ for (int i : weekInsert) {
LabTimeBean temp = LabTimeBean.builder().labId(labTime.getLabId()) LabTimeBean temp = LabTimeBean.builder().labId(labTime.getLabId())
.year(labTime.getYear()) .year(labTime.getYear())
.semester(labTime.getSemester()) .semester(labTime.getSemester())
@ -151,11 +152,36 @@ public class LabTimeController {
labTimeService.add(temp); labTimeService.add(temp);
} }
System.out.println("用户请求"+weeks); System.out.println("用户请求" + weeks);
System.out.println("原来有的"+weeksAll); System.out.println("原来有的" + weeksAll);
System.out.println("要插入的"+weekInsert); System.out.println("要插入的" + weekInsert);
System.out.println("要删除的"+weekDelete); System.out.println("要删除的" + weekDelete);
return ResultVOUtil.success(labTimeService.findWeeks(labTime.getLabId(),labTime.getYear(),labTime.getSemester(),labTime.getDay(),labTime.getTime())); 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); 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) " 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) ; 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.bean.LabRecordBean;
import com.hzu.bookingsystem.dto.LabRecordDTO;
import java.util.List; import java.util.List;
@ -65,6 +66,17 @@ public interface LabRecordService {
String[][] getcourseByuser(Integer u_id , String year ,Integer semester ) ; 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) ; 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.LabTimeBean;
import com.hzu.bookingsystem.bean.UserBean; import com.hzu.bookingsystem.bean.UserBean;
import com.hzu.bookingsystem.bean.UserCourseBean; 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.repository.LabRecordRepository;
import com.hzu.bookingsystem.service.LabRecordService; import com.hzu.bookingsystem.service.LabRecordService;
import com.hzu.bookingsystem.service.LabTimeService; import com.hzu.bookingsystem.service.LabTimeService;
import com.hzu.bookingsystem.service.UserCourseService; import com.hzu.bookingsystem.service.UserCourseService;
import com.hzu.bookingsystem.service.UserService; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.transaction.Transactional; import javax.transaction.Transactional;
import java.util.List; import java.util.List;
@ -27,6 +35,11 @@ public class LabRecordServiceImpl implements LabRecordService{
@Resource @Resource
private UserService userservice ; private UserService userservice ;
@Resource
private LabRecordDTOMapper labRecordDTOMapper;
@PersistenceContext
private EntityManager entityManager;
@Override @Override
public LabRecordBean add(LabRecordBean labrcecord) { public LabRecordBean add(LabRecordBean labrcecord) {
labrcecord.setLrId(null); labrcecord.setLrId(null);
@ -147,4 +160,22 @@ public class LabRecordServiceImpl implements LabRecordService{
} }
return value_name ; 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; 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 @Override
public List<LabTimeBean> findTimes(Integer lab_id, String year, Integer semester, Integer day, Integer time) { public List<LabTimeBean> findTimes(Integer lab_id, String year, Integer semester, Integer day, Integer time) {
return labTimeRepository.findByLabIdAndYearAndSemesterAndDayAndTime(lab_id, year, semester, day, time); return labTimeRepository.findByLabIdAndYearAndSemesterAndDayAndTime(lab_id, year, semester, day, time);

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

Loading…
Cancel
Save