Newer
Older
smartKitchenFront / src / components / mycomponent / dialog / deviceInfoDialog.vue
<!--设备详情弹窗-->
<template>
  <el-dialog title="设备详情" width=" 1080px" :visible.sync="isShowInfo" append-to-body @close="close">
    <div class="deviceDialog ">
      <div class="headInfo">
        <div class="inputContent">
          <input-vue v-model="rowInfo.brandCode" title="设备型号" width="200px" :disabled="true" readable/>
          <input-vue v-model="rowInfo.deviceName" title="设备名称" width="200px" :disabled="true" readable />
          <input-vue v-model="rowInfo.snCode" title="SN码" width="200px" :disabled="true" readable />
        </div>
        <div class="inputContent">
          <input-vue v-model="rowInfo.deviceStatus" title=" 设备状态" width="200px" :disabled="true" readable />
          <input-vue
            v-model="rowInfo.deviceAddress"
            :disabled="true"
            title=" 设备位置"
            width="552px"
            style="flex: 1; margin-left: 63px"
            readable
          />
        </div>
      </div>
      <div class="content">
        <el-tabs v-model="navSelect" type="card" @tab-click="handleClick" style="margin-top:20px">
          <el-tab-pane label="基本信息" name="0">
            <div class="content_content baseInfo">
              <div class="inputContent">
                <input-vue
                  v-model="rowInfo.brandName"
                  title="设备品牌"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <input-vue
                  v-model="rowInfo.createTime"
                  title="生产日期"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <input-vue
                  v-model="rowInfo.deviceMac"
                  title="Mac地址"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <input-vue
                  v-model="rowInfo.productCode"
                  title="产品品类"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <!-- <input-vue title="产品重量" width="200px" style="justify-content: space-between;" v-model="rowInfo.brandCode" :disabled="true"></input-vue>
                <input-vue title="产品材质" width="200px" style="justify-content: space-between;" v-model="rowInfo.brandCode" :disabled="true"></input-vue> -->
              </div>
              <div class="inputContent">
                <input-vue
                  v-model="rowInfo.deviceHardwareVersion"
                  title="硬件版本"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <input-vue
                  v-model="rowInfo.deviceName"
                  title="设备名称"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <input-vue
                  v-model="rowInfo.deviceIp"
                  title="IP地址"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <!-- <input-vue title="国际69码" width="200px" style="justify-content: space-between;" v-model="rowInfo.brandCode" :disabled="true"></input-vue> -->
                <input-vue
                  v-model="rowInfo.deviceStatus"
                  title="产品状态"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <!-- <input-vue title="产品颜色" width="200px" style="justify-content: space-between;" v-model="rowInfo.brandCode" :disabled="true"></input-vue> -->
              </div>
              <div class="inputContent">
                <input-vue
                  v-model="rowInfo.deviceSoftwareVersion"
                  title="软件版本"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <!-- <input-vue title="供应商" width="200px" style="justify-content: space-between;"  v-model="rowInfo.brandCode"   :disabled="true"></input-vue> -->
                <div style="height: 40px;" />
                <!-- <input-vue title="产品尺寸" width="200px" style="justify-content: space-between;" v-model="rowInfo.brandCode" :disabled="true"></input-vue> -->
                <input-vue
                  v-model="rowInfo.serialVersionUID"
                  title="产品版本"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <div style="height: 40px;" />
              </div>
            </div>
          </el-tab-pane>
          <el-tab-pane label="设备信息" name="1">
            <div class="content_content">
              <div class="deviceInfo">
                <div class="inputContent">
                  <input-vue
                    v-model="rowInfo.deviceActive"
                    title="是否激活"
                    width="200px"
                    style="justify-content: space-between;"
                    :disabled="true"
                    readable
                  />
                  <input-vue
                    v-model="rowInfo.deviceBindUser"
                    title="是否绑定用户"
                    width="200px"
                    style="justify-content: space-between;"
                    :disabled="true"
                    readable
                  />
                  <!-- <input-vue title="用户手机号" width="200px" style="justify-content: space-between;" v-model="rowInfo.brandCode" :disabled="true"></input-vue> -->
                </div>
                <div class="inputContent">
                  <input-vue
                    v-model="rowInfo.deviceActiveTime"
                    title="激活时间"
                    width="200px"
                    style="justify-content: space-between;"
                    :disabled="true"
                    readable
                  />
                  <!-- <input-vue title="用户账号" width="200px" style="justify-content: space-between;" v-model="rowInfo.brandCode" :disabled="true"></input-vue> -->
                </div>
                <div class="inputContent">
                  <input-vue
                    v-model="rowInfo.createTime"
                    title="用户名称"
                    width="200px"
                    style="justify-content: space-between;"
                    :disabled="true"
                    readable
                  />
                  <!-- <input-vue title="绑定时间" width="200px" style="justify-content: space-between;" v-model="rowInfo.brandCode" :disabled="true"></input-vue> -->
                </div>
              </div>
            </div>
          </el-tab-pane>
          <el-tab-pane v-if="rowInfo.businessExt" label="数据信息" name="2">
            <div class="content_content">
              <div>
                <div v-if="rowInfo.deviceName == '油烟机' " class="deviceInfo">
                  <div class="inputContent">
                    <input-vue
                      v-model="rowInfo.businessExt.workStatus"
                      title="工作状态"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                    <input-vue
                      v-model="rowInfo.businessExt.wifiStatus"
                      title="wifi状态"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                    <input-vue
                      v-model="rowInfo.businessExt.switchStatus"
                      title="开关机状态"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                  </div>
                  <div class="inputContent">
                    <input-vue
                      v-model="rowInfo.businessExt.runTime"
                      title="运行时长"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                    <input-vue
                      v-model="rowInfo.businessExt.wifiName"
                      title="wifi名称"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                  </div>
                  <div class="inputContent">
                    <input-vue
                      v-model="rowInfo.businessExt.smokeStove"
                      title="烟灶联动"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                    <input-vue
                      v-model="rowInfo.businessExt.oilPouringReminder"
                      title="倒油提醒开关"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                  </div>
                </div>
                <div v-if="rowInfo.deviceName == '热水器' " class="deviceInfo">
                  <div class="inputContent">
                    <input-vue
                      v-model="rowInfo.businessExt.workStatus"
                      title="工作状态"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                    <input-vue
                      v-model="rowInfo.businessExt.currentTemperature"
                      title="当前温度"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                    <input-vue
                      v-model="rowInfo.businessExt.switchStatus"
                      title="零冷水开关"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                  </div>
                  <div class="inputContent">
                    <input-vue
                      v-model="rowInfo.businessExt.runTime"
                      title="运行时长"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                    <!-- <input-vue title="进水温度" width="200px" style="justify-content: space-between;" v-model="rowInfo.brandCode" :disabled="true"></input-vue> -->
                  </div>
                  <div class="inputContent">
                    <input-vue
                      v-model="rowInfo.businessExt.workMode"
                      title="当前模式"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                    <!-- <input-vue title="出水温度" width="200px" style="justify-content: space-between;" v-model="rowInfo.brandCode" :disabled="true"></input-vue> -->
                  </div>
                </div>
                <div v-if="rowInfo.deviceName == '燃气灶' " class="deviceInfo">
                  <div class="inputContent">
                    <input-vue
                      v-model="rowInfo.businessExt.workStatus"
                      title="工作状态"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                    <input-vue
                      v-model="rowInfo.businessExt.leftWorkStatus"
                      title="左灶工作状态"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                  </div>
                  <div class="inputContent">
                    <input-vue
                      v-model="rowInfo.businessExt.smokeStove"
                      title="烟灶联动"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                    />
                    <input-vue
                      v-model="rowInfo.businessExt.rightWorkStatus"
                      title="右灶工作状态"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                  </div>
                  <div class="inputContent">
                    <input-vue
                      v-model="rowInfo.businessExt.runTime"
                      title="运行时长"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                    <!-- <input-vue title="出水温度" width="200px" style="justify-content: space-between;" v-model="rowInfo.brandCode" :disabled="true"></input-vue> -->
                  </div>
                </div>
                <div v-if="rowInfo.deviceName == '壁挂炉' " class="deviceInfo">
                  <div class="inputContent">
                    <input-vue
                      v-model="rowInfo.businessExt.workStatus"
                      title="工作状态"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                    <input-vue
                      v-model="rowInfo.businessExt.heatingStatus"
                      title="供暖"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                    <input-vue
                      v-model="rowInfo.businessExt.bathroomTemp"
                      title="卫浴温度"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                  </div>
                  <div class="inputContent">
                    <input-vue
                      v-model="rowInfo.businessExt.heatingTemp"
                      title="供暖温度"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                    <input-vue
                      v-model="rowInfo.businessExt.bathroomStatus"
                      title="卫浴状态"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                    <input-vue
                      v-model="rowInfo.businessExt.waterPumpStatus"
                      title="水泵状态"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                  </div>
                  <div class="inputContent">
                    <input-vue
                      v-model="rowInfo.businessExt.antifreezeStatus"
                      title="防冻状态"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                    <input-vue
                      v-model="rowInfo.businessExt.fanStatus"
                      title="风机状态"
                      width="200px"
                      style="justify-content: space-between;"
                      :disabled="true"
                      readable
                    />
                  </div>
                </div>
              </div>
            </div>
          </el-tab-pane>
        </el-tabs>

        <div class="content_content">
          <div v-if="navSelect == 0" class="baseInfo">

          </div>

          <div v-if="navSelect == 2 ">
            <div v-if="rowInfo.deviceName == '油烟机' " class="deviceInfo">
              <div class="inputContent">
                <input-vue
                  v-model="rowInfo.businessExt.workStatus"
                  title="工作状态"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <input-vue
                  v-model="rowInfo.businessExt.wifiStatus"
                  title="wifi状态"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <input-vue
                  v-model="rowInfo.businessExt.switchStatus"
                  title="开关机状态"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
              </div>
              <div class="inputContent">
                <input-vue
                  v-model="rowInfo.businessExt.runTime"
                  title="运行时长"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                />
                <input-vue
                  v-model="rowInfo.businessExt.wifiName"
                  title="wifi名称"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
              </div>
              <div class="inputContent">
                <input-vue
                  v-model="rowInfo.businessExt.smokeStove"
                  title="烟灶联动"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <input-vue
                  v-model="rowInfo.businessExt.oilPouringReminder"
                  title="倒油提醒开关"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
              </div>
            </div>
            <div v-if="rowInfo.deviceName == '热水器' " class="deviceInfo">
              <div class="inputContent">
                <input-vue
                  v-model="rowInfo.businessExt.workStatus"
                  title="工作状态"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <input-vue
                  v-model="rowInfo.businessExt.currentTemperature"
                  title="当前温度"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <input-vue
                  v-model="rowInfo.businessExt.switchStatus"
                  title="零冷水开关"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
              </div>
              <div class="inputContent">
                <input-vue
                  v-model="rowInfo.businessExt.runTime"
                  title="运行时长"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <!-- <input-vue title="进水温度" width="200px" style="justify-content: space-between;" v-model="rowInfo.brandCode" :disabled="true"></input-vue> -->
              </div>
              <div class="inputContent">
                <input-vue
                  v-model="rowInfo.businessExt.workMode"
                  title="当前模式"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <!-- <input-vue title="出水温度" width="200px" style="justify-content: space-between;" v-model="rowInfo.brandCode" :disabled="true"></input-vue> -->
              </div>
            </div>
            <div v-if="rowInfo.deviceName == '燃气灶' " class="deviceInfo">
              <div class="inputContent">
                <input-vue
                  v-model="rowInfo.businessExt.workStatus"
                  title="工作状态"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <input-vue
                  v-model="rowInfo.businessExt.leftWorkStatus"
                  title="左灶工作状态"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
              </div>
              <div class="inputContent">
                <input-vue
                  v-model="rowInfo.businessExt.smokeStove"
                  title="烟灶联动"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <input-vue
                  v-model="rowInfo.businessExt.rightWorkStatus"
                  title="右灶工作状态"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                />
              </div>
              <div class="inputContent">
                <input-vue
                  v-model="rowInfo.businessExt.runTime"
                  title="运行时长"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <!-- <input-vue title="出水温度" width="200px" style="justify-content: space-between;" v-model="rowInfo.brandCode" :disabled="true"></input-vue> -->
              </div>
            </div>
            <div v-if="rowInfo.deviceName == '壁挂炉' " class="deviceInfo">
              <div class="inputContent">
                <input-vue
                  v-model="rowInfo.businessExt.workStatus"
                  title="工作状态"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <input-vue
                  v-model="rowInfo.businessExt.heatingStatus"
                  title="供暖"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <input-vue
                  v-model="rowInfo.businessExt.bathroomTemp"
                  title="卫浴温度"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
              </div>
              <div class="inputContent">
                <input-vue
                  v-model="rowInfo.businessExt.heatingTemp"
                  title="供暖温度"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <input-vue
                  v-model="rowInfo.businessExt.bathroomStatus"
                  title="卫浴状态"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <input-vue
                  v-model="rowInfo.businessExt.waterPumpStatus"
                  title="水泵状态"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
              </div>
              <div class="inputContent">
                <input-vue
                  v-model="rowInfo.businessExt.antifreezeStatus"
                  title="防冻状态"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
                <input-vue
                  v-model="rowInfo.businessExt.fanStatus"
                  title="风机状态"
                  width="200px"
                  style="justify-content: space-between;"
                  :disabled="true"
                  readable
                />
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </el-dialog>
</template>

<script>
import inputVue from '../input/inputVue.vue'
import { d_info } from '../../../api/product/device'

export default {
  components: {
    inputVue
  },
  props: {
    isShowInfo: {
      type: Boolean,
      default: 'false'
    },
    dataInfo: {}
  },
  data() {
    return {
      navSelect: '0', // 0 1 2 为导航栏的选项
      rowInfo: {}
    }
  },
  watch: {
    dataInfo: {
      handler(newValue) {
        d_info({ id: newValue.id }).then(res => {
          console.log(res)
          this.rowInfo = res
          // 数据处理
          this.rowInfo.deviceActive = this.dealstate(this.rowInfo.deviceActive)
          this.rowInfo.deviceBindUser = this.dealstate(this.rowInfo.deviceBindUser)

          this.rowInfo.businessExt.switchStatus = this.dealwitch(this.rowInfo.businessExt.switchStatus)
          this.rowInfo.businessExt.oilPouringReminder = this.dealwitch(this.rowInfo.businessExt.oilPouringReminder)
        })
      },
      // 深度监听
      deep: true,
      immediate: true
    }
  },
  methods: {
    changeNav(index) {
      this.navSelect = index
    },
    close() {
      this.$emit('close')
    },
    dealwitch(index) {
      if (index == 0) {
        return '关'
      } else {
        return '开'
      }
    },
    dealstate(index) {
      if (index == 0) {
        return '否'
      } else {
        return '是'
      }
    }

  }
}
</script>

<style lang="scss" scoped>
.deviceDialog {
  border-radius: 5px;
  // overflow: hidden;
  // padding: 10px 0;
  width: 1025px;
  height: 600px;
  box-sizing: border-box;
}

.selectNav {
  border: 1px solid #999;
  border-bottom: 3px solid #fff;
  position: relative;
  z-index: 9;
  box-sizing: border-box;
  top: 2px;
}

.content {
  width: 100%;

  .content_nav {
    box-sizing: border-box;
    display: flex;
    margin: 10px 0;
    border-bottom: 1px solid #999;

    .nav_item {
      width: 130px;
      height: 60px;
      margin: 0 10px;
      line-height: 60px;
      text-align: center;
    }
  }
}

.content_content {
  padding: 0px 10px;
  // padding: 20px 0 60px 0;
  // box-sizing: border-box;

}

.headInfo {
  width: 1000px;

  .inputContent {
    // flex: 1;
    display: flex;
    // flex-direction: column;

    justify-content: space-between;
    align-items: center;
  }
}

.baseInfo {
  width: 1000px;
  display: flex;

  .inputContent {
    flex: 1;
    display: flex;
    flex-direction: column;

    // justify-content: space-between;
    // align-items: center;
  }
}

.deviceInfo {
  display: flex;
  // align-items: center;
  justify-content: space-between;
  height: 100%;

  .inputContent {
    flex: 1;
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
  }
}

.dataInfo {
  display: flex;
  // align-items: center;
  justify-content: space-between;
  height: 100%;

  .inputContent {
    flex: 1;
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
  }
}
</style>