Newer
Older
robot_dog_patrol_front / src / views / wellManage / detailWell.vue
StephanieGitHub on 3 May 2020 12 KB MOD:将亦庄新增功能合并到产品化版
<template>
  <el-dialog :visible.sync="dialogFormVisible" class="editDialog" title="窨井详情" append-to-body @close="cancel">
    <el-scrollbar :native="false">
      <el-form v-loading="loading" ref="dataForm" :label-position="labelPosition" :model="wellForm" label-width="120px">
        <el-row>
          <el-col :span="10">
            <el-form-item label="窨井名称" prop="wellName">
              <el-input v-model="wellForm.wellName" type="text" placeholder="未知" disabled/>
            </el-form-item>
          </el-col>
          <el-col :span="10" :offset="1">
            <el-form-item label="窨井编号" prop="wellCode">
              <el-input v-model="wellForm.wellCode" type="text" placeholder="未知" disabled/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="10">
            <el-form-item label="窨井类型" prop="wellType">
              <el-input v-model="wellForm.wellTypeName" type="text" placeholder="未知" disabled/>
            </el-form-item>
          </el-col>
          <el-col :span="10" :offset="1">
            <el-form-item label="权属单位" prop="deptid">
              <el-input v-model="wellForm.deptName" type="text" placeholder="未知" disabled/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="10">
            <el-form-item label="井深(m)" prop="deep">
              <el-input v-model="wellForm.deep" type="text" placeholder="未知" disabled/>
            </el-form-item>
          </el-col>
          <el-col :span="10" :offset="1">
            <el-form-item label="布防状态" prop="coordinateX">
              <el-input v-model="wellForm.bfztName" type="text" placeholder="未知" disabled/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="10">
            <el-form-item label="经度" prop="coordinateX">
              <el-input v-model="wellForm.coordinateX" type="text" placeholder="未知" disabled/>
            </el-form-item>
          </el-col>
          <el-col :span="10" :offset="1">
            <el-form-item label="纬度" prop="coordinateY">
              <el-input v-model="wellForm.coordinateY" type="text" placeholder="未知" disabled/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="24">
            <el-form-item label="路标图片" prop="images">
              <div v-if="imageList.length==0">
                无
              </div>
              <!--<el-image-->
              <!--v-for="image in imageList"-->
              <!--:src="image"-->
              <!--:preview-src-list="imageList"-->
              <!--:z-index="4000"-->
              <!--style="width: 100px; height: 100px; margin-right:10px"/>-->
              <el-upload
                v-else
                ref="upload"
                :file-list="imageList"
                :on-preview="handlePictureCardPreview"
                class="hide"
                multiple
                accept=".jpg,.jpeg,.png "
                action="string"
                list-type="picture-card"
                disabled
              >
                <i class="el-icon-plus"/>
              </el-upload>
              <el-dialog :visible.sync="dialogVisible" title="图片预览" append-to-body>
                <div class="imgBox">
                  <img :src="dialogImageUrl" max-height="400px;" alt="" style="margin: 0 auto; height: 400px;">
                </div>
              </el-dialog>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="1">

          <el-form-item label="所在区域" required>
            <el-col :span="5">
              <el-form-item prop="qu">
                <el-select v-model="wellForm.qu" placeholder="未知" disabled>
                  <el-option
                    v-for="item in quList"
                    :key="item.id"
                    :label="item.name"
                    :value="item.id"/>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="1" class="line">区/县</el-col>
            <el-col :span="5">
              <el-form-item prop="area">
                <el-select v-model="wellForm.area" placeholder="未知" disabled>
                  <el-option
                    v-for="item in jiedaoList"
                    :key="item.id"
                    :label="item.name"
                    :value="item.id"/>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="1" class="line">街道/镇</el-col>
          </el-form-item>

        </el-row>
        <el-row>
          <el-col :span="15">
            <el-form-item label="详细地址" prop="position">
              <el-input v-model="wellForm.position" type="text" placeholder="未知" disabled/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="10">
            <el-form-item label="窨井维护单位" prop="responsibleDept">
              <el-input v-model="wellForm.responsibleDeptName" type="text" placeholder="未知" disabled/>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <div class="watch-div">
        <el-row class="table-title">
          <el-col :span="3"><div class="title-header"><i class="el-icon-menu"/>监控数据</div></el-col>
        </el-row>
        <el-table v-loading="listLoading" :data="dataList" class="table" border>
          <el-table-column align="center" type="index"/>
          <el-table-column v-for="column in columns" :key="column.value" :label="column.text" :width="column.width" align="center" show-overflow-tooltip>
            <template slot-scope="scope">
              {{ scope.row[column.value] }}
            </template>
          </el-table-column>
          <el-table-column label="操作" width="120">
            <template slot-scope="scope">
              <el-button type="text" @click="showData(scope.row)">查看历史数据</el-button>
            </template>
          </el-table-column>
        </el-table>
      </div>
    </el-scrollbar>
  </el-dialog>
</template>

<script>
  import SelectTree from '@/components/SelectTree/singleSelect'
  import { getAreaList, getAreaByDept } from '@/api/area'
  import { watchDataByWell } from '@/api/well'
  import DeptSelect from '@/components/DeptSelect'

  export default {
    name: 'DetailWell',
    components: { SelectTree, DeptSelect },
    data() {
      return {
        dialogFormVisible: false, // 对话框是否显示
        wellForm: {
          id: null, // 窨井id
          wellCode: '', // 窨井编号
          wellName: '', // 窨井名称
          wellType: '', // 窨井类型
          wellTypeName: '', // 窨井类型名称
          deptid: '', // 权属单位
          deptName: '', // 权属单位名称
          bfztName: '', // 布防状态
          deep: '', // 井深,
          position: '', // 位置描述
          coordinateX: '', // 经度
          coordinateY: '', // 纬度
          photos: '', // 照片路径
          notes: '', // 备注,
          qu: '',
          area: '', // 街道
          responsibleDept: '', // 维护人员部门
          responsibleDeptName: '' // 维护人员部门名称
        }, // 表单
        deptProps: {
          parent: 'pid',
          value: 'id',
          label: 'name',
          children: 'children'
        },
        columns: [
          {
            text: '监控内容',
            value: 'watchType'
          },
          {
            text: '设备编号',
            value: 'devcode'
          },
          {
            text: '设备安装日期',
            value: 'installDate',
            width: 110
          },
          {
            text: '最新数据',
            value: 'data',
            width: 80
          },
          {
            text: '设备状态',
            value: 'onlineStateName',
            width: 80
          },
          {
            text: '最后上传时间',
            value: 'logtime',
            width: 170
          }
        ],
        hideUpload: false,
        imageList: [],
        fileList: [],
        deptTreeList: null, // 组织树列表数据
        secondDeptTreeList: null, // 二级组织树列表
        wellTypeList: null,
        quList: null,
        jiedaoList: null,
        dialogImageUrl: '',
        dialogVisible: false,
        labelPosition: 'right',
        listLoading: false, // 监控数据加载动画
        dataList: [], // 监控数据
        loading: true
      }
    },
    activated() {
      this.imageList = []
    },
    methods: {
      // 初始化对话框
      initDialog: function(dialogFormVisible, row = null) {
        this.loading = true
        this.dialogFormVisible = dialogFormVisible
        this.wellForm = {
          id: row.id, // 窨井id
          wellCode: row.wellCode, // 窨井编号
          wellName: row.wellName, // 窨井名称
          wellType: row.wellType, // 窨井类型
          wellTypeName: row.wellTypeName, // 窨井类型
          bfztName: row.bfztName,
          deptid: row.deptid, // 权属单位
          deptName: row.deptName, // 权属单位
          deep: row.deep, // 井深,
          position: row.position, // 位置描述
          coordinateX: row.coordinateX, // 经度
          coordinateY: row.coordinateY, // 纬度
          photos: row.photos, // 照片路径
          notes: row.notes, // 备注,
          qu: row.qu,
          area: row.area, // 街道
          responsibleDept: row.responsibleDept, // 维护人员部门
          responsibleDeptName: row.responsibleDeptName // 维护人员部门
        }
        if (row.deptid && row.deptid !== '') {
          this.fetchArea1()
          this.fetchArea2()
          this.loading = false
        } else {
          this.loading = false
        }
        // 处理图片
        const urls = row.photos.split(';')
        const base_url = process.env.BASE_API + '/static/'
        for (const url of urls) {
          if (url) {
            this.imageList.push({ name: url, url: base_url + url })
          }
        }
        // 获取窨井下监控数据
        this.listLoading = true
        watchDataByWell(row.id).then(response => {
          this.listLoading = false
          this.dataList = response.data
        })
      },
      // 获取区域1
      fetchArea1() {
        getAreaByDept(this.wellForm.deptid).then(response => {
          if (response.code === 200) {
            const pid = response.data.area
            getAreaList(pid).then(response => {
              this.quList = response.data
            })
          }
        })
      },
      // 获取区域2
      fetchArea2() {
        getAreaList(this.wellForm.qu).then(response => {
          this.jiedaoList = response.data
          this.loading = false
        })
      },
      showData(row) {
        const devcode = row.devcode
        const deviceType = row.type
        const params = { devcode: devcode, deviceType: deviceType }
        const routeData = this.$router.resolve({
          name: 'DataManage',
          query: params,
          params: params
        })
        window.open(routeData.href, '_blank')
        // this.$router.push({ name: 'DataManage', query: params })
      },
      // 取消
      cancel() {
        this.imageList = []
        this.dialogFormVisible = false
      },
      // 图片预览
      handlePictureCardPreview(file) {
        this.dialogImageUrl = file.url
        this.dialogVisible = true
      }
    }
  }
</script>

<style rel="stylesheet/scss" lang="scss">
  .hide .el-upload--picture-card {
    display: none;
  }
  .editDialog{
    .el-dialog {
      width: 900px;
      margin-top: 10vh !important;
      .el-dialog__body{
      }
      .el-scrollbar {
        height: 410px;
        width: 100%;
      }
      .el-scrollbar__wrap {
        /*overflow: scroll;*/
        overflow-x: auto;
        overflow-y: auto;
      }
      .el-scrollbar__view{
        width: 98%;
      }
    }
  }
  .el-select{
    width: 100%;
  }
  .line{
    width: 50px;
    margin-left: 5px;
  }
  .hide .el-upload-–picture-card{
    display: none;
  }
  .imgBox{
    width: 100%;
    text-align: center;
  }
  .watch-div {
    margin: 15px;
    .table-title {
      margin-top: 10px;
      .title-header {
        height: 40px;
        padding: 10px;
        border-radius: 4px;
        border: solid 1px #F3F3F3;
        background-color: #F5F7FA;
        color: #606266;
      }
    }
  }
</style>