You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

234 lines
10 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div style="width: 100%;padding: 20px">
<el-form :model="time" :inline="true" style="width: 100%">
<el-form-item label="学年" style="width: 20% ;">
<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="">
<el-option label="第一学期" :value="1"></el-option>
<el-option label="第二学期" :value="2"></el-option>
</el-select>
</el-form-item>
</el-form>
<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" v-if="">-->
<!-- <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-table :data="tableDataComputed" 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="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 label="操作" width="370px">
<template slot-scope="scope">
<el-button @click="editLab(scope.row)" type="primary" size="mini" plain icon="el-icon-edit">编辑
</el-button>
<el-button @click="schedulePreview(scope.row)" 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" @confirm="submit"></add-lab>
<set-lab-time ref="setLabTime"></set-lab-time>
<tb_courseDialog :cClick="cellClick" :cStyle="tableStyle" table-label="实验室课表" ref="schedule" :custom="true" c-click=""></tb_courseDialog>
</div>
</template>
<script>
import addLab from "~/components/supManager/addLab" ;
import tb_courseDialog from "~/components/tb_courseDialog";
import {get, post} from "~/utils";
import {closeLoading, showDialog, showDialogWithReject, showFail, showLoading, showSuccess} from "~/utils/dialog";
import setLabTime from "~/components/supManager/setLabTime";
import {item2html} from "~/utils/converter";
import config from "~/config";
export default {
components: {addLab, setLabTime, tb_courseDialog},
data() {
return {
edit: false,
setLabTimeDialog: false,
form: {},
time: {
year: config.defyear,
semester: 2
},
search: '',
tableData: [
{
name: "小姚",
position: "509",
software:"window",
nickname:"小姚",
tel:"123456789"
},
{
name: "我是",
position: "lp",
software:"window",
nickname:"小姚",
tel:"123456789"
}
],
currenttableData:[
{
name: "",
position: "",
software:"",
nickname:"",
tel:""
}
],
}
},
computed: {
tableDataComputed() {
return this.currenttableData=this.tableData.filter(data => !this.search
|| data.name.toLowerCase().includes(this.search.toLowerCase())
|| data.position.toLowerCase().includes(this.search.toLowerCase())
|| data.software.toLowerCase().includes(this.search.toLowerCase())
|| data.nickname.toLowerCase().includes(this.search.toLowerCase())
|| data.tel.toLowerCase().includes(this.search.toLowerCase())
)
}
},
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.dialogFormVisible = true
},
async submit() {
this.$refs.addLab.$refs.form.validate(async (valid)=> {
if (valid) {
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 schedulePreview(event) {
await this.loadSchedule(event.lab_id)
this.$refs.schedule.lab = {
name: event.name,
position: event.position
}
this.$refs.schedule.courseDialog = true
},
async editSchedule(item) {
this.$refs.setLabTime.lab = item
this.$refs.setLabTime.form.labId = item.lab_id
this.$refs.setLabTime.setLabTimeDialog = true
},
async loadSchedule(labId) {
const schedule = await get('lb/labrecord/getLabSchedule', {
labId,
year: this.time.year,
semester: this.time.semester
}) //发送地址,请求该实验室地址的所有课程
for (let i = 0; i < schedule.length; i++) {
this.$refs.schedule.tableData[i].Monday = item2html(schedule[i][0])
this.$refs.schedule.tableData[i].Tuesday = item2html(schedule[i][1])
this.$refs.schedule.tableData[i].Wednesday = item2html(schedule[i][2])
this.$refs.schedule.tableData[i].Thursday = item2html(schedule[i][3])
this.$refs.schedule.tableData[i].Friday = item2html(schedule[i][4])
this.$refs.schedule.tableData[i].Saturday = item2html(schedule[i][5])
this.$refs.schedule.tableData[i].Sunday = item2html(schedule[i][6])
}
},
cellClick() {
},
tableStyle() {
}
},
async mounted() {
await this.load()
// this.tableData=get('/url')
}
}
</script>
<style>
</style>