Newer
Older
iris_temperature_front_gz / src / views / doorManage / bindDevice.vue
<template>
  <el-dialog :visible.sync="dialogFormVisible" title="设备绑定" append-to-body>
    <el-form ref="dataForm" :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">
          <el-form-item label="进门设备" prop="description">
            <el-select v-model="doorForm.inDeviceIds" multiple placeholder="请选择">
              <el-option
                v-for="item in deviceList"
                :key="item.id"
                :label="item.devCode"
                :value="''+item.id"/>
            </el-select>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row type="flex" justify="center">
        <el-col :span="18">
          <el-form-item label="出门设备" prop="description">
            <el-select v-model="doorForm.outDeviceIds" multiple placeholder="请选择">
              <el-option
                v-for="item in deviceList"
                :key="'device_'+item.id"
                :label="item.devCode"
                :value="''+item.id"/>
            </el-select>
          </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 { bindDevice } from '@/api/door'
import { getDeviceListAll } from '@/api/device'

export default {
  name: 'BindDevice',
  data() {
    return {
      dialogFormVisible: false, // 对话框是否显示
      dialogStatus: '', // 对话框类型:create,update
      doorForm: {
        doorId: '', // id
        doorName: '', // 门禁名称
        inDeviceIds: [], // 门禁编码
        outDeviceIds: [] // 门禁名称
      }, // 表单
      deviceList: [],
      textMap: {
        update: '编辑',
        create: '新增',
        detail: '详情'
      }, // 表头显示标题
      isEditMode: false,
      deptShowTop: false, // 权属单位下拉是否显示顶级
      deptShow: true
    }
  },
  mounted() {
    this.fetchData()
  },
  methods: {
    // 初始化对话框
    initDialog: function(row = null) {
      let inDeviceIds = []
      let outDeivceIds = []
      if (row.inDeviceIds) { inDeviceIds = row.inDeviceIds.split(',') }
      if (row.outDeviceIds) { outDeivceIds = row.outDeviceIds.split(',') }
      debugger
      this.dialogFormVisible = true
      this.doorForm = {
        doorId: row.id,
        doorName: row.doorName, // 门禁名称
        inDeviceIds: inDeviceIds, // 进门设备
        outDeviceIds: outDeivceIds // 出门设备
      }
    },
    fetchData() {
      const params = {
        devType: '1'
      }
      getDeviceListAll(params).then(response => {
        this.deviceList = response.data
      })
    },
    // 重置表单
    resetForm() {
      this.doorForm = {
        id: '', // id
        doorName: '', // 门禁名称
        inDeviceIds: [], // 门禁编码
        outDeviceIds: [] // 门禁名称
      }
    },
    // 保存数据
    saveData: function() {
      if (this.validateForm(this.doorForm)) {
        bindDevice(this.doorForm).then(response => {
          if (response.code === 200) {
            this.$message.success('修改成功')
            this.cancel()
          }
        })
      }
    },
    validateForm(doorForm) {
      // if (doorForm.inDeviceIds.length <= 0) {
      //   this.$message.warning('进门设备必选')
      //   return false
      // }
      return true
    },
    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>