quanyawei
2024-03-15 4595b8b5a9c7afdeff9929022bfa3ca31a24ce06
src/views/UVA/index.vue
@@ -7,18 +7,17 @@
      >
        <div style="width: 274px; margin: 13px auto">
          <el-date-picker
            ref="datePick"
            v-model="datenum"
            :picker-options="pickerOptions"
            placeholder="选择日期"
            popper-class="jlpMySelectPopper"
            ref="datePick"
            v-model="datenum"
            value-format="yyyy-MM-dd"
            style="width: 280px"
            @change="chooseDate"
            @blur="chooseDate1"
            @focus="chooseDate2"
            value-format="yyyy-MM-dd"
            style="width: 280px"
          >
          </el-date-picker>
          />
        </div>
        <!-- <el-card class="box-card" style="width: 274px; margin: 13px auto"> -->
@@ -43,12 +42,7 @@
          class="coll"
        >
          <!--accordion 手风琴模式-->
          <el-collapse
            accordion
            style="box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1)"
            v-show="shou1 === true"
            v-loading="loading"
          >
          <el-collapse v-show="shou1 === true" v-loading="loading">
            <el-collapse-item
              style="text-indent: 2em; position: relative; padding-botton: 10px"
            >
@@ -66,13 +60,13 @@
            </el-collapse-item>
          </el-collapse>
          <el-collapse
            v-show="shou1 === false"
            ref="collapse"
            v-model="asideData.activeNames"
            v-loading="loading"
            accordion
            style="box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1)"
            @change="handleChange"
            ref="collapse"
            v-show="shou1 === false"
            v-loading="loading"
          >
            <el-collapse-item
              v-for="(item1, index) in asideData.uavTimeFly"
@@ -130,34 +124,26 @@
        >
          <div class="numss">
            <el-radio-group
              v-if="selecttrue === 1"
              v-model="radioSeven"
              size="medium"
              @change="changeCode"
              v-if="selecttrue === 1"
              style="margin-top: 10px; margin-left: 10px"
              @change="changeCode"
            >
              <el-radio-button label="PM2.5"></el-radio-button>
              <el-radio-button label="PM10"></el-radio-button>
              <el-radio-button label="SO2"></el-radio-button>
              <el-radio-button label="NO2"></el-radio-button>
              <el-radio-button label="CO"></el-radio-button>
              <el-radio-button label="03"></el-radio-button>
              <el-radio-button label="TVOC"></el-radio-button>
              <el-radio-button label="PM2.5" />
              <el-radio-button label="PM10" />
              <el-radio-button label="SO2" />
              <el-radio-button label="NO2" />
              <el-radio-button label="CO" />
              <el-radio-button label="03" />
              <el-radio-button label="TVOC" />
            </el-radio-group>
            <div class="Duo" v-if="selecttrue === 2">
            <div v-if="selecttrue === 2" class="Duo">
              <div class="spantuu">
                <span>无人机飞行高度范围(米): </span>
                <el-input
                  class="inputtu"
                  v-model="tallone"
                  ref="uvas"
                ></el-input>
                <el-input ref="uvas" v-model="tallone" class="inputtu" />
                --
                <el-input
                  class="inputtu"
                  v-model="talltwo"
                  ref="uvas"
                ></el-input>
                <el-input ref="uvas" v-model="talltwo" class="inputtu" />
              </div>
              <!-- <el-select v-model="Duovalue" placeholder="其他因子" class="slee">
                <el-option
@@ -171,12 +157,12 @@
              <div class="spantu">
                <span>图形边长(米): </span
                ><el-input
                  class="inputtu"
                  ref="uvas"
                  v-model="uvasize"
                  class="inputtu"
                  clearable
                  placeholder="请输入内容"
                  ref="uvas"
                ></el-input>
                />
              </div>
              <el-select v-model="Duovalue" placeholder="其他因子" class="slee">
                <el-option
@@ -184,8 +170,7 @@
                  :key="item.code"
                  :label="item.name"
                  :value="item.name"
                >
                </el-option>
                />
              </el-select>
              <!-- <div class="spantuu">
                <span>无人机飞行高度范围(米): </span>
@@ -203,16 +188,24 @@
              </div> -->
            </div>
            <div v-if="selecttrue === 1" style="margin-left: 10px">
              <el-button type="primary" @click="gengD" style="margin-top: 10px"
                >更多条件</el-button
              >
              <el-button type="primary" style="margin-top: 10px" @click="gengD">
                更多条件
              </el-button>
            </div>
            <div
              v-if="selecttrue === 2"
              style="margin-left: 10px; margin-top: 10px"
            >
              <el-button class="gengD" @click="shou">收起</el-button>
              <el-button type="primary" @click="selectDuo">查询</el-button>
              <el-button
                size="medium"
                type="primary"
                icon="el-icon-setting"
                @click="dialogFormVisible = true"
              >
                6参设定
              </el-button>
              <el-button class="gengD" @click="shou"> 收起 </el-button>
              <el-button type="primary" @click="selectDuo"> 查询 </el-button>
            </div>
          </div>
          <!-- <div class="Duo" v-if="selecttrue === 2">
@@ -247,6 +240,75 @@
        <div id="map_container" v-loading="loading1" />
      </el-main>
    </el-container>
    <el-dialog title="6参设定" :visible.sync="dialogFormVisible" width="1000px">
      <el-descriptions title="国控6参" :column="3" border>
        <el-descriptions-item
          label="PM2.5 | ug/m³"
          label-class-name="my-label"
          content-class-name="my-content"
        >
          22
        </el-descriptions-item>
        <el-descriptions-item label="PM10 | ug/m³"> 34 </el-descriptions-item>
        <el-descriptions-item label="SO2 | ug/m³"> 4 </el-descriptions-item>
        <el-descriptions-item label="NO2 | ug/m³"> 16 </el-descriptions-item>
        <el-descriptions-item label="CO | mg/m³"> 0.5 </el-descriptions-item>
        <el-descriptions-item label="O3 | ug/m³"> 149 </el-descriptions-item>
      </el-descriptions>
      <!-- <el-descriptions title="设备标准值"  border>
      </el-descriptions> -->
      <div
        style="
          font-size: 16px;
          font-weight: 700;
          margin: 10px 0 20px 0;
          font-size: 16px;
          font-weight: 700;
          color: #303133;
        "
      >
        设备标准值
      </div>
      <el-table :data="sensorTableData" border>
        <el-table-column prop="sensorName" label="名称" />
        <el-table-column prop="unit" label="单位" />
        <el-table-column label="一级">
          <template slot-scope="scope">
            <el-input v-model="scope.row.tab1" placeholder="请输入内容" />
            <!-- <span v-show="!scope.row.show">{{ scope.row.tab1 }}</span> -->
          </template>
        </el-table-column>
        <el-table-column label="二级">
          <template slot-scope="scope">
            <el-input v-model="scope.row.tab2" placeholder="请输入内容" />
          </template>
        </el-table-column>
        <el-table-column label="三级">
          <template slot-scope="scope">
            <el-input v-model="scope.row.tab3" placeholder="请输入内容" />
          </template>
        </el-table-column>
        <el-table-column label="四级">
          <template slot-scope="scope">
            <el-input v-model="scope.row.tab4" placeholder="请输入内容" />
          </template>
        </el-table-column>
        <el-table-column label="五级">
          <template slot-scope="scope">
            <el-input v-model="scope.row.tab5" placeholder="请输入内容" />
          </template>
        </el-table-column>
        <el-table-column label="六级">
          <template slot-scope="scope">
            <el-input v-model="scope.row.tab6" placeholder="请输入内容" />
          </template>
        </el-table-column>
      </el-table>
      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogFormVisible = false"> 取 消 </el-button>
        <el-button type="primary" @click="customLevel"> 确 定 </el-button>
      </div>
    </el-dialog>
  </div>
</template>
@@ -314,12 +376,20 @@
        break
      }
      if (dLat > 0) pLat = wgsLat
      else mLat = wgsLat
      if (dLon > 0) pLon = wgsLon
      else mLon = wgsLon
      if (dLat > 0) {
        pLat = wgsLat
      } else {
        mLat = wgsLat
      }
      if (dLon > 0) {
        pLon = wgsLon
      } else {
        mLon = wgsLon
      }
      if (++i > 10000) break
      if (++i > 10000) {
        break
      }
    }
    return { lat: wgsLat, lon: wgsLon }
  },
@@ -373,8 +443,12 @@
    var y =
      Math.sin((latA * this.PI) / 180.0) * Math.sin((latB * this.PI) / 180.0)
    var s = x + y
    if (s > 1) s = 1
    if (s < -1) s = -1
    if (s > 1) {
      s = 1
    }
    if (s < -1) {
      s = -1
    }
    var alpha = Math.acos(s)
    var distance = alpha * earthR
    return distance
@@ -440,12 +514,15 @@
export default {
  filters: {
    sensorFilter: function (value) {
      if (!value) return ''
      if (!value) {
        return ''
      }
      return json[value]
    },
  },
  data() {
    return {
      dialogFormVisible: false,
      chosee: 1,
      shou1: true,
      zhanK1: 1,
@@ -456,7 +533,7 @@
      selecttrue: 1,
      pickerOptions: {
        cellClassName: (time) => {
          let timeDate = moment(time.getTime()).format('yyyy-MM-DD')
          const timeDate = moment(time.getTime()).format('yyyy-MM-DD')
          if (this.timeNums.includes(timeDate)) {
            return 'dateArrClass' // 返回值设置的是我们添加的类名
          }
@@ -525,7 +602,9 @@
          // 最大时间 最小时间
          this.timeOne = minDate.getTime() // 当选一个日期时 就是最小日期
          // 如何你选择了两个日期了,就把那个变量置空
          if (maxDate) this.timeOne = ''
          if (maxDate) {
            this.timeOne = ''
          }
        },
        disabledDate: (time) => {
          if (this.timeOne) {
@@ -546,7 +625,6 @@
      noneData: true,
      defaultData: [],
      carMac: null,
      dialogFormVisible: false,
      optionsduo: [
        { code: 'a34004', name: 'PM2.5' },
        { code: 'a34002', name: 'PM10' },
@@ -700,7 +778,7 @@
      endTime: '',
      dataDate: '',
      sensorTime: [],
      uvasize: 50,
      uvasize: 20,
      timeValue: [
        new Date(2020, 1, 1, 0, 0, 0),
        new Date(2022, 12, 31, 23, 59, 59),
@@ -708,14 +786,89 @@
      timeNums: [],
      batchs: '',
      macs: '',
      sensorTableData: [
        {
          sensorName: 'PM2.5',
          unit: 'ug/m³',
          tab1: '35',
          tab2: '75',
          tab3: '115',
          tab4: '150',
          tab5: '250',
          tab6: '350',
        },
        {
          sensorName: 'PM10',
          unit: 'ug/m³',
          tab1: '50',
          tab2: '150',
          tab3: '250',
          tab4: '350',
          tab5: '420',
          tab6: '500',
        },
        {
          sensorName: 'SO2',
          unit: 'ug/m³',
          tab1: '150',
          tab2: '500',
          tab3: '650',
          tab4: '800',
          tab5: '',
          tab6: '',
        },
        {
          sensorName: 'NO2',
          unit: 'ug/m³',
          tab1: '100',
          tab2: '200',
          tab3: '700',
          tab4: '1200',
          tab5: '2340',
          tab6: '3090',
        },
        {
          sensorName: 'CO',
          unit: 'mg/m³',
          tab1: '5',
          tab2: '10',
          tab3: '35',
          tab4: '60',
          tab5: '90',
          tab6: '120',
        },
        {
          sensorName: 'O3',
          unit: 'ug/m³',
          tab1: '160',
          tab2: '200',
          tab3: '300',
          tab4: '400',
          tab5: '800',
          tab6: '1000',
        },
        {
          sensorName: 'TVOC',
          unit: 'mg/m³',
          tab1: '0.1',
          tab2: '0.3',
          tab3: '0.5',
          tab4: '0.7',
          tab5: '0.9',
          tab6: '1',
        },
        {
          sensorName: '尘负荷',
          unit: 'ug/m³',
          tab1: '300',
          tab2: '500',
          tab3: '1000',
          tab4: '10000',
          tab5: '20000',
          tab6: '50000',
        },
      ],
    }
  },
  mounted() {
    this.initStart()
    // this.$refs.datePick.focus()
    // this.getDate()
    // this.flyData()
  },
  watch: {
    dataTypeValue(n, o) {
@@ -740,6 +893,16 @@
    deep: true,
    immediate: true,
  },
  mounted() {
    this.$nextTick(() => {
      this.initStart()
    })
    // this.$refs.datePick.focus()
    // this.getDate()
    // this.flyData()
  },
  created() {
    this.newTime(this.timeValue)
    this.newDate()
@@ -748,6 +911,10 @@
    // this.getFlyData()
  },
  methods: {
    customLevel() {
      this.selectDuo()
      this.dialogFormVisible = false
    },
    selectDuo() {
      // console.log(2115);
      if (this.chosee === 1) {
@@ -763,7 +930,8 @@
      }
      this.$request({
        // url: '/uav/queryDataByBatch',
        url: '/uav/test',
        url: '/uav/getUav',
        // url: '/uav/test',
        method: 'post',
        data: {
          batch: this.batchs,
@@ -813,11 +981,11 @@
      //   return
      // }
      this.selecttrue = 2
      $('.numss').css({ width: '930px' })
      $('.numss').css({ width: '1050px' })
    },
    shou() {
      this.selecttrue = 1
      $('.numss').css({ width: '690px' })
      $('.numss').css({ width: '700px' })
    },
    parseTime(time, cFormat) {
      if (arguments.length === 0 || !time) {
@@ -878,12 +1046,6 @@
      })
      return arr
    },
    // 点击列表切换走航车数据
    changeCarData(e) {
      this.carMac = e
      this.getStart()
    },
    // 请求走航车列表数据
    // 进行经纬度转换为距离的计算
    Rad(d) {
      return (d * Math.PI) / 180.0 // 经纬度转换成三角函数中度分表形式。
@@ -948,7 +1110,6 @@
        }
        this.dataType = 'history'
        // this.map = null
        this.getStart()
      }
    },
    // 获取无人机以及时间区间
@@ -1011,7 +1172,8 @@
      }
      this.$request({
        // url: '/uav/queryDataByBatch',
        url: '/uav/test',
        // url: '/uav/test',
        url: '/uav/getUav',
        method: 'post',
        data: {
          batch: item.batch,
@@ -1073,6 +1235,9 @@
      const that = this
      if (!res) {
        that.map = new BMapGL.Map('map_container')
        console.log('BMapGL', BMapGL)
        console.log('BMapGL', BMapGL)
        console.log('window', window.BMapGL)
        that.map.enableScrollWheelZoom(true) // 开启鼠标滚轮,地图可以进行放大、缩小s
        that.map.setMapType(BMAP_EARTH_MAP) // 设置地图类型为地球模式
        that.map.setDisplayOptions({
@@ -1173,7 +1338,7 @@
        // 已有地图,避免再次请求
        // if (!that.showPoints) {
        //   console.log(111)
        //   that.map = new BMapGL.Map('map_container')
        //   that.map = new window.BMapGL.Map('map_container')
        // }
        // that.map.enableScrollWheelZoom(true) // 开启鼠标滚轮,地图可以进行放大、缩小s
        // that.map.setMapType(BMAP_EARTH_MAP) // 设置地图类型为地球模式
@@ -1194,7 +1359,7 @@
        //   building: true, // 不显示建筑物
        //   poiText: false, // 显示poi文字
        // })
        // that.map.addControl(new BMapGL.NavigationControl3D()) // 添加3d控件
        // that.map.addControl(new window.BMapGL.NavigationControl3D()) // 添加3d控件
        if (this.responseJSON.length === 0) {
          showNoPoints()
        }
@@ -1270,12 +1435,12 @@
              new BMapGL.Point(sw.lng, ne.lat), // 右下角
            ],
            {
              strokeWeight: 0.1, //边框线的宽度,以像素为单位
              strokeWeight: 0.1, // 边框线的宽度,以像素为单位
              // strokeOpacity: 0.0, //边线的透明度
              fillColor: color, //是否需要填充色
              fillOpacity: 0.8, //填充色的透明度,0~1之间
              strokeColor: 'black', //边框线的颜色
              strokeStyle: 'solid', //边线的样式,solid或dashed。
              fillColor: color, // 是否需要填充色
              fillOpacity: 0.8, // 填充色的透明度,0~1之间
              strokeColor: 'black', // 边框线的颜色
              strokeStyle: 'solid', // 边线的样式,solid或dashed。
            }
          )
          that.map.addOverlay(polygon)
@@ -1847,20 +2012,26 @@
      }
      this.initStart(this.carData)
    },
    changeCode1(index) {
      this.changeColor1 = index
      if (index === 0) {
        this.viewKey = '2D'
      } else {
        this.viewKey = '3D'
      }
      this.getStart()
    },
  },
}
</script>
<style  lang="scss" >
<style  lang="scss" scoped>
.main-container {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-flow: column;
  flex-flow: column;
  min-height: 100%;
  -webkit-transition: margin-left 0.28s;
  transition: margin-left 0.28s;
  margin-left: 210px;
  position: relative;
  height: 100%;
}
/deep/.BMap_cpyCtrl {
  display: none;
}
@@ -2035,20 +2206,7 @@
/deep/.inputNum {
  width: 4% !important;
}
.dateArrClass {
  position: relative;
}
.dateArrClass > div ::after {
  content: '';
  position: absolute;
  right: 8px;
  top: 23px;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  z-index: 999;
  background-color: #f40;
}
.numss {
  width: 700px;
  background-color: white;
@@ -2095,17 +2253,10 @@
    width: 20%;
  }
}
.jlpMySelectPopper.el-picker-panel {
  width: 280px;
  height: 330px;
}
.jlpMySelectPopper.el-date-picker table {
  width: 88%;
}
.BMap_cpyCtrl {
  display: none;
}
.anchorBL {
  display: none;
}
@@ -2120,4 +2271,27 @@
.el-scrollbar__wrap {
  overflow-x: hidden;
}
</style>
</style>
<style >
.jlpMySelectPopper.el-picker-panel {
  width: 280px;
  height: 330px;
}
.jlpMySelectPopper.el-date-picker table {
  width: 88%;
}
.dateArrClass {
  position: relative;
}
.dateArrClass > div ::after {
  content: '';
  position: absolute;
  right: 8px;
  top: 23px;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  z-index: 999;
  background-color: #f40;
}
</style>