<template> <el-dialog :visible.sync="dialogFormVisible" title="常开/常闭设置" append-to-body> <el-form ref="dataForm" :rules="rules" :model="doorForm" label-well-code="right" label-width="100px"> <el-row type="flex" justify="center"> <el-col :span="18"> <el-form-item label="门禁名称" prop="doorName"> <el-input v-model.trim="doorForm.doorName" :disabled="true" type="text" placeholder="必填"/> </el-form-item> </el-col> </el-row> <!--门禁状态--> <el-row type="flex" justify="center"> <el-col :span="18" justify="center"> <el-form-item label="门禁状态" prop="openStatus"> <el-radio-group v-model="doorForm.openStatus"> <el-radio v-for="item in statusList" :key="'openStatus_'+item.value" :label="item.value">{{ item.name }}</el-radio> </el-radio-group> </el-form-item> </el-col> </el-row> <!--生效和失效日期 仅策略为日期时显示--> <el-row v-if="doorForm.openStatus!='2'" type="flex" justify="center"> <el-col :span="18"> <el-form-item label="生效时间" prop="beginDateTime"> <el-date-picker v-model.trim="doorForm.beginDateTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择生效时间"/> </el-form-item> </el-col> </el-row> <el-row v-if="doorForm.openStatus!='2'" type="flex" justify="center"> <el-col :span="18"> <el-form-item label="失效时间" prop="endDateTime"> <el-date-picker v-model.trim="doorForm.endDateTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择失效时间"/> </el-form-item> </el-col> </el-row> </el-form> <div slot="footer" class="dialog-footer"> <el-button type="primary" @click="saveData">保存</el-button> <el-button @click="cancel">取消</el-button> </div> </el-dialog> </template> <script> import { openDoorAlways } from '@/api/door' import DeptSelect from '../../components/DeptSelect/index' export default { name: 'EditDoor', components: { DeptSelect }, data() { return { dialogFormVisible: false, // 对话框是否显示 dialogStatus: '', // 对话框类型:create,update doorForm: { doorId: '', // id doorName: '', // 门禁名称 openStatus: '', // 门禁状态 beginDateTime: '', // 生效时间 endDateTime: '' // 失效时间 }, // 表单 textMap: { update: '编辑', create: '新增', detail: '详情' }, // 表头显示标题 statusList: [ { value: '2', name: '正常' }, { value: '1', name: '常开' }, { value: '0', name: '常闭' } ], rules: { openStatus: [{ required: true, message: '门禁状态', trigger: ['blur', 'change'] }] }, // 前端校验规则 isEditMode: false } }, methods: { // 初始化对话框 initDialog: function(row = null) { this.dialogFormVisible = true this.doorForm = { doorId: row.id, doorName: row.doorName, // 门禁名称 openStatus: row.openStatus, // 门禁状态 beginDateTime: row.beginDatetime, // 生效时间 endDateTime: row.endDatetime // 失效时间 } }, // 重置表单 resetForm() { this.doorForm = { doorId: '', // id doorName: '', // 门禁名称 openStatus: '', // 门禁状态 beginDateTime: '', // 生效时间 endDateTime: '' // 失效时间 } }, // 保存数据 saveData: function() { if (this.doorForm.openStatus !== '2' && this.doorForm.beginDateTime >= this.doorForm.endDateTime) { this.$message.warning('生效时间必须小于失效时间') return } this.updateData() }, // 修改数据 updateData: function() { this.$refs['dataForm'].validate((valid) => { if (valid) { debugger if (this.doorForm.openStatus !== '2') { if (!this.doorForm.beginDateTime || this.doorForm.beginDateTime === '') { this.$message.warning('生效时间不得为空') return } if (!this.doorForm.endDateTime || this.doorForm.endDateTime === '') { this.$message.warning('失效时间不得为空') return } const beginTime = new Date(this.doorForm.beginDateTime) const endTime = new Date(this.doorForm.endDateTime) if (endTime <= beginTime) { this.$message.warning('失效时间必须大于生效时间') return } } openDoorAlways(this.doorForm).then(response => { if (response.code === 200) { this.$message.success('编辑成功') this.$emit('watchChild') this.dialogFormVisible = false } }) } }) }, cancel: function() { this.dialogFormVisible = false this.$emit('watchChild') } } } </script> <style rel="stylesheet/scss" lang="scss" scoped> .el-select{ width: 100%; } .el-date-editor{ width: 100%; } </style>