guoshipeng
2023-08-14 756e81d6e35231521f0431e292edb22aed65e403
fix:设备详情百度地图换高德地图,经纬度批量修改
8 files modified
741 ■■■■■ changed files
package-lock.json 53 ●●●●● patch | view | raw | blame | history
package.json 1 ●●●● patch | view | raw | blame | history
public/index.html 229 ●●●●● patch | view | raw | blame | history
src/components/map/pickCoordinate.vue 84 ●●●●● patch | view | raw | blame | history
src/components/map/pickCoordinate1.vue 198 ●●●● patch | view | raw | blame | history
src/main.ts 25 ●●●● patch | view | raw | blame | history
src/util/request.ts 1 ●●●● patch | view | raw | blame | history
src/views/list/devicesBasic.vue 150 ●●●●● patch | view | raw | blame | history
package-lock.json
@@ -28,6 +28,7 @@
        "rxjs-compat": "^6.5.3",
        "v-charts": "^1.18.0",
        "vue": "^2.6.10",
        "vue-amap": "^0.5.10",
        "vue-baidu-map": "^0.21.22",
        "vue-class-component": "^7.1.0",
        "vue-i18n": "^8.15.1",
@@ -17598,6 +17599,22 @@
      "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
      "dev": true
    },
    "node_modules/uppercamelcase": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/uppercamelcase/-/uppercamelcase-1.1.0.tgz",
      "integrity": "sha512-C7YEMvhgrvTEKEEVqA7LXNID/1TvvIwYZqNIKLquS6y/MGSkRQAav9LnTTILlC1RqUM8eTVBOe1U/fnB652PRA==",
      "dependencies": {
        "camelcase": "^1.2.1"
      }
    },
    "node_modules/uppercamelcase/node_modules/camelcase": {
      "version": "1.2.1",
      "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-1.2.1.tgz",
      "integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==",
      "engines": {
        "node": ">=0.10.0"
      }
    },
    "node_modules/uri-js": {
      "version": "4.4.1",
      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -17810,6 +17827,19 @@
      "version": "2.6.13",
      "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.13.tgz",
      "integrity": "sha512-O+pAdJkce1ooYS1XyoQtpBQr9An+Oys3w39rkqxukVO3ZD1ilYJkWBGoRuadiQEm2LLJnCL2utV4TMSf52ubjw=="
    },
    "node_modules/vue-amap": {
      "version": "0.5.10",
      "resolved": "https://registry.npmmirror.com/vue-amap/-/vue-amap-0.5.10.tgz",
      "integrity": "sha512-9ViNCev1vx32+zZ5RvF/TmUZNbwL9QrdA2/OnD2GlXMfQBkJy7D08Vb7379t6guqnopDPtWJ8K6gg72h9+4GUg==",
      "dependencies": {
        "uppercamelcase": "^1.1.0"
      },
      "engines": {
        "core-js": "^2.5.0",
        "node": ">= 4.0.0",
        "npm": ">= 3.0.0"
      }
    },
    "node_modules/vue-baidu-map": {
      "version": "0.21.22",
@@ -34371,6 +34401,21 @@
      "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
      "dev": true
    },
    "uppercamelcase": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/uppercamelcase/-/uppercamelcase-1.1.0.tgz",
      "integrity": "sha512-C7YEMvhgrvTEKEEVqA7LXNID/1TvvIwYZqNIKLquS6y/MGSkRQAav9LnTTILlC1RqUM8eTVBOe1U/fnB652PRA==",
      "requires": {
        "camelcase": "^1.2.1"
      },
      "dependencies": {
        "camelcase": {
          "version": "1.2.1",
          "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-1.2.1.tgz",
          "integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g=="
        }
      }
    },
    "uri-js": {
      "version": "4.4.1",
      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -34551,6 +34596,14 @@
      "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.13.tgz",
      "integrity": "sha512-O+pAdJkce1ooYS1XyoQtpBQr9An+Oys3w39rkqxukVO3ZD1ilYJkWBGoRuadiQEm2LLJnCL2utV4TMSf52ubjw=="
    },
    "vue-amap": {
      "version": "0.5.10",
      "resolved": "https://registry.npmmirror.com/vue-amap/-/vue-amap-0.5.10.tgz",
      "integrity": "sha512-9ViNCev1vx32+zZ5RvF/TmUZNbwL9QrdA2/OnD2GlXMfQBkJy7D08Vb7379t6guqnopDPtWJ8K6gg72h9+4GUg==",
      "requires": {
        "uppercamelcase": "^1.1.0"
      }
    },
    "vue-baidu-map": {
      "version": "0.21.22",
      "resolved": "https://registry.npmjs.org/vue-baidu-map/-/vue-baidu-map-0.21.22.tgz",
package.json
@@ -30,6 +30,7 @@
    "rxjs-compat": "^6.5.3",
    "v-charts": "^1.18.0",
    "vue": "^2.6.10",
    "vue-amap": "^0.5.10",
    "vue-baidu-map": "^0.21.22",
    "vue-class-component": "^7.1.0",
    "vue-i18n": "^8.15.1",
public/index.html
@@ -1,118 +1,143 @@
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <script src="//api.map.baidu.com/api?type=webgl&v=2.0&ak=9FrZ6v3P8xS290ygi40M5Ik3Fgwes4KY"></script>
    <link rel="icon" href="<%= BASE_URL %>logo.ico">
    <link/>
    <title>七星瓢虫环境科技</title>
    <style type="text/css">
      .preloader{
        position:fixed;
        top:0;
        left:0;
        width:100%;
        height:100%;
        overflow:hidden;
        background:#49a9ee;
        z-index:9999;
        transition:opacity .65s
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width,initial-scale=1.0">
  <script type="text/javascript"
    src="//api.map.baidu.com/api?type=webgl&v=2.0&ak=9FrZ6v3P8xS290ygi40M5Ik3Fgwes4KY"></script>
  <script
    src="https://webapi.amap.com/loca?v=1.3.2&key=be57d4add7dc10fb7f7924763a2179ae&plugin=AMap.MarkerClusterer"></script>
  <link rel="icon" href="<%= BASE_URL %>logo.ico">
  <link />
  <title>七星瓢虫环境科技</title>
  <style type="text/css">
    .preloader {
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      overflow: hidden;
      background: #49a9ee;
      z-index: 9999;
      transition: opacity .65s
    }
    .preloader-hidden-add {
      opacity: 1;
      display: block
    }
    .preloader-hidden-add-active {
      opacity: 0
    }
    .preloader-hidden {
      display: none
    }
    .cs-loader {
      position: absolute;
      top: 0;
      left: 0;
      height: 100%;
      width: 100%
    }
    .cs-loader-inner {
      transform: translateY(-50%);
      top: 50%;
      position: absolute;
      width: 100%;
      color: #fff;
      text-align: center
    }
    .cs-loader-inner label {
      font-size: 20px;
      opacity: 0;
      display: inline-block
    }
    @keyframes lol {
      0% {
        opacity: 0;
        transform: translateX(-300px)
      }
      .preloader-hidden-add{
        opacity:1;
        display:block
      33% {
        opacity: 1;
        transform: translateX(0)
      }
      .preloader-hidden-add-active{
        opacity:0
      66% {
        opacity: 1;
        transform: translateX(0)
      }
      .preloader-hidden{
        display:none
      100% {
        opacity: 0;
        transform: translateX(300px)
      }
    }
      .cs-loader{
        position:absolute;
        top:0;
        left:0;
        height:100%;
        width:100%
      }
    .cs-loader-inner label:nth-child(6) {
      animation: lol 3s infinite ease-in-out
    }
      .cs-loader-inner{
        transform:translateY(-50%);
        top:50%;
        position:absolute;
        width:100%;
        color:#fff;
        text-align:center
      }
    .cs-loader-inner label:nth-child(5) {
      animation: lol 3s .1s infinite ease-in-out
    }
      .cs-loader-inner label{
        font-size:20px;
        opacity:0;
        display:inline-block
      }
    .cs-loader-inner label:nth-child(4) {
      animation: lol 3s .2s infinite ease-in-out
    }
      @keyframes lol{
        0%{
          opacity:0;
          transform:translateX(-300px)
        }
        33%{
          opacity:1;
          transform:translateX(0)
        }
        66%{
          opacity:1;
          transform:translateX(0)
        }
        100%{
          opacity:0;
          transform:translateX(300px)
        }
      }
      .cs-loader-inner label:nth-child(6){
        animation:lol 3s infinite ease-in-out
      }
      .cs-loader-inner label:nth-child(5){
        animation:lol 3s .1s infinite ease-in-out
      }
      .cs-loader-inner label:nth-child(4){
        animation:lol 3s .2s infinite ease-in-out
      }
      .cs-loader-inner label:nth-child(3){
        animation:lol 3s .3s infinite ease-in-out
      }
      .cs-loader-inner label:nth-child(2){
        animation:lol 3s .4s infinite ease-in-out
      }
      .cs-loader-inner label:nth-child(1){
        animation:lol 3s .5s infinite ease-in-out
      }
    </style>
  </head>
  <body class="has-ad-rt">
    <noscript>
      <strong>We're sorry but vue-alain doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
    </noscript>
    .cs-loader-inner label:nth-child(3) {
      animation: lol 3s .3s infinite ease-in-out
    }
    <div id="app"></div>
    <div class="preloader">
      <div class="cs-loader">
        <div class="cs-loader-inner">
          <label> ●</label>
          <label> ●</label>
          <label> ●</label>
          <label> ●</label>
          <label> ●</label>
          <label> ●</label>
        </div>
    .cs-loader-inner label:nth-child(2) {
      animation: lol 3s .4s infinite ease-in-out
    }
    .cs-loader-inner label:nth-child(1) {
      animation: lol 3s .5s infinite ease-in-out
    }
  </style>
</head>
<body class="has-ad-rt">
  <noscript>
    <strong>We're sorry but vue-alain doesn't work properly without JavaScript enabled. Please enable it to
      continue.</strong>
  </noscript>
  <div id="app"></div>
  <div class="preloader">
    <div class="cs-loader">
      <div class="cs-loader-inner">
        <label> ●</label>
        <label> ●</label>
        <label> ●</label>
        <label> ●</label>
        <label> ●</label>
        <label> ●</label>
      </div>
    </div>
    <!-- built files will be auto injected -->
  </body>
</html>
  </div>
  <!-- built files will be auto injected -->
</body>
<script type="text/javascript">
  window._AMapSecurityConfig = {
    securityJsCode: '20fcbbc1782d2853f433831e61fab769',
  }
</script>
</html>
src/components/map/pickCoordinate.vue
@@ -1,38 +1,65 @@
<template>
  <a-modal
      title="坐标选择"
      destroyOnClose
      :visible="true"
      @ok="addLonAndLat"
      @cancel="handleMapCancel"
      okText="确定"
      class="modalStyle"
    title="坐标选择"
    destroyOnClose
    :visible="true"
    @ok="addLonAndLat"
    @cancel="handleMapCancel"
    okText="确定"
    class="modalStyle"
  >
    <p style="position: absolute; bottom:-3px;right: 200px"><span>设备名称:</span><span style="font-size: 18px;font-weight: bold">{{ mapRecord.name }}</span></p>
    <p style="position: absolute; bottom: -3px; right: 200px">
      <span>设备名称:</span
      ><span style="font-size: 18px; font-weight: bold">{{
        mapRecord.name
      }}</span>
    </p>
    <div>
    <p>
      <span>地址:</span><a-input v-model="keyword" style="display: inline; width: 160px;height: 26px"/>
      <span style="margin-left: 25px">经度:</span><a-input disabled="disabled"  v-model="lonAndLat.lng" style="display: inline; width: 160px;height: 26px"/>
      <span style="margin-left: 25px">纬度:</span><a-input disabled="disabled"  v-model="lonAndLat.lat" style="display: inline; width: 160px;height: 26px"/>
    </p>
<!--      :scroll-wheel-zoom="true"-->
    <baidu-map
      <p>
        <span>地址:</span
        ><a-input
          v-model="keyword"
          style="display: inline; width: 160px; height: 26px"
        />
        <span style="margin-left: 25px">经度:</span
        ><a-input
          disabled="disabled"
          v-model="lonAndLat.lng"
          style="display: inline; width: 160px; height: 26px"
        />
        <span style="margin-left: 25px">纬度:</span
        ><a-input
          disabled="disabled"
          v-model="lonAndLat.lat"
          style="display: inline; width: 160px; height: 26px"
        />
      </p>
      <!--      :scroll-wheel-zoom="true"-->
      <baidu-map
        :center="center"
        :zoom="zoom"
        @ready="handler"
        @click="mapClick"
        :scroll-wheel-zoom="true"
        style="height: 400px;width: 100%;">
      <bm-control>
      <bm-local-search :keyword="keyword" :auto-viewport="true"  style="display: none" ></bm-local-search>
        <bm-marker :position="{ lng:lonAndLat.lng , lat: lonAndLat.lat}" :dragging="true" animation="BMAP_ANIMATION_BOUNCE">
        </bm-marker>
      </bm-control>
    </baidu-map>
  </div>
        style="height: 400px; width: 100%"
      >
        <bm-control>
          <bm-local-search
            :keyword="keyword"
            :auto-viewport="true"
            style="display: none"
          ></bm-local-search>
          <bm-marker
            :position="{ lng: lonAndLat.lng, lat: lonAndLat.lat }"
            :dragging="true"
            animation="BMAP_ANIMATION_BOUNCE"
          >
          </bm-marker>
        </bm-control>
      </baidu-map>
    </div>
  </a-modal>
</template>
<script lang="tsx">
@@ -139,13 +166,12 @@
</script>
<style  lang="less">
.modalStyle{
  .ant-modal{
.modalStyle {
  .ant-modal {
    margin-left: 25%;
  }
  .ant-modal-content{
      width: 800px;
  .ant-modal-content {
    width: 800px;
  }
}
</style>
src/components/map/pickCoordinate1.vue
@@ -9,25 +9,67 @@
    class="modalStyle"
  >
    <div>
      <p>
        <span>地址:</span
        ><a-input
          v-model="keyword"
          style="display: inline; width: 160px; height: 26px"
        />
        <span style="margin-left: 25px">经度:</span
        ><a-input
          v-model="clickPoint.lng"
          style="display: inline; width: 160px; height: 26px"
        />
        <span style="margin-left: 25px">纬度:</span
        ><a-input
          v-model="clickPoint.lat"
          style="display: inline; width: 160px; height: 26px"
        />
      </p>
      <div style="display: flex">
        <div style="display: flex; width: 300px">
          <div>地址:</div>
            <a-input
            placeholder="关键字搜索"
            id="tipinput"
            style="width: 160px; height: 26px"
          ></a-input>
          <!-- <a-input
            v-model="input"
            placeholder="关键字搜索"
            id="tipinput"
            style="width: 160px; height: 26px"
            @change="searchMap"
          ></a-input> -->
          <!-- <a-button
            size="small"
            type="primary"
            @click="searchMap"
            style="margin-left: 10px"
            >搜索</a-button
          > -->
          <!-- <el-amap-search-box
            :search-option="searchOption"
            :on-search-result="selectPoi"
            style="width: 200px; height: 26px; margin-left: 10px;border;"
          /> -->
          <!-- <a-input style="width: 160px; height: 26px" @focus="selectPoi" /> -->
        </div>
        <div>
          <span style="margin-left: 25px">经度:</span
          ><a-input
            v-model="clickPoint[0]"
            style="display: inline; width: 160px; height: 26px"
          />
        </div>
        <div>
          <span style="margin-left: 25px">纬度:</span
          ><a-input
            v-model="clickPoint[1]"
            style="display: inline; width: 160px; height: 26px"
          />
        </div>
      </div>
      <el-amap
        ref="map"
        :center="clickPoint"
        :events="{ click: mapClick }"
        :zoom="zoom"
        :scroll-wheel-zoom="true"
        style="height: 400px; width: 100%; margin-top: 20px"
      >
        <el-amap-marker
          :position="clickPoint"
          animation="AMAP_ANIMATION_BOUNCE"
          :dragging="true"
        ></el-amap-marker>
      </el-amap>
      <!--      :scroll-wheel-zoom="true"-->
      <baidu-map
      <!-- <baidu-map
        :center="center"
        :zoom="zoom"
        @ready="handler"
@@ -48,7 +90,7 @@
          >
          </bm-marker>
        </bm-control>
      </baidu-map>
      </baidu-map> -->
    </div>
  </a-modal>
</template>
@@ -67,10 +109,10 @@
@Component({
})
export default class PickCoordinate extends Vue {
  private center: any = {
    lng: 120.726838,
    lat: 31.3421
  }
  private center: any = [
     120.726838,
     31.3421
  ]
  @Prop({
    type: String,
    default: ''
@@ -84,13 +126,17 @@
  private typeOperation!: string
  private keyword: string = ''
  private zoom = 3
  @Watch('clickPoint', {deep: true})
  private monitorMapFlag(newVal: any, oldVal: any) {
    this.center.lng = newVal.lng
    this.center.lat = newVal.lat
  private zoom = 19
  private searchOption:any={
      city: '全国',
      citylimit: false
  }
  @Watch('clickPoint', {deep: true, immediate: true},)
  private monitorMapFlag(newVal: any, oldVal: any) {
    console.log(newVal,'newVal');
    this.center= [newVal.lng,newVal.lat]
  }
  private num1:any=1
  @Watch('lnglat', {deep: true, immediate: true})
  private lnglatWatch(newVal: any, oldVal: any) {
@@ -100,32 +146,68 @@
    // this.center.lat = newVal.lat
  }
  private created() {
    console.log(this.clickPoint,'clickPoint');
  }
  // 初始化地图
  private handler({BMap, map}) {
    this.center.lng =  this.typeOperation === 'add' ? '120.726838' : this.lnglat.split(',')[1]
    this.center.lat =  this.typeOperation === 'add' ? '31.3421' : this.lnglat.split(',')[0]
    this.zoom = 19
  // private handler({BMap, map}) {
  //   this.center.lng =  this.typeOperation === 'add' ? '120.726838' : this.lnglat.split(',')[1]
  //   this.center.lat =  this.typeOperation === 'add' ? '31.3421' : this.lnglat.split(',')[0]
  //   this.zoom = 19
  // }
  private selectPoi(e){
    console.log(e);
    let poi = e
      if (poi.length > 0) {
         this.clickPoint = [poi[0].lng, poi[0].lat]
         }
  }
  private input:any=''
  private mark:any=''
  private searchMap(){
     var autoOptions = {
        input: "tipinput"
    };
    var auto = new AMap.AutoComplete(autoOptions);
    const placeSearch = new AMap.PlaceSearch(this.input);
    console.log(window);
     auto.on("select", select);//注册监听,当选中某条记录时会触发
        function select(e) {
          console.log(e.poi.adcode);
            placeSearch.setCity(e.poi.adcode);
            placeSearch.search(e.poi.name);  //关键字查询查询
        }
  // 关键字查询
  // console.log(this.input);
  //  placeSearch.search(this.input, (status, result) => {
  //   // 查询成功时,result即对应匹配的POI信息
  //   console.log(result);//打印这句话报错,第一遍可以打印出来,第二遍就会报错
  // });
  // // 监听选中节点事件
  // AMap.event.addListener(placeSearch, "selectChanged", (SelectChangeEvent) => {
  //   // 获取节点信息自行处理逻辑代码
  //   this.mark = SelectChangeEvent.selected.data;
  //   console.log(SelectChangeEvent.selected.data,'苏轼');
  // });
  }
  // 初始定位到星虹国际
  private clickPoint: any = this.lnglat === '' ?  {
        lng: ' 120.726838',
        lat: ' 31.3421'
      } : {
    lng: this.lnglat.split(',')[1],
    lat: this.lnglat.split(',')[0]
  }
  private clickPoint: any = this.lnglat === '' ?  [
          120.720262,
         31.335757
      ] : [
     this.lnglat.split(',')[1],
     this.lnglat.split(',')[0]
  ]
  private mapClick(e: any) {
    const { lng, lat } = e.point
    this.clickPoint.lng = lng
    this.clickPoint.lat = lat
    const { lng, lat } = e.lnglat
    this.clickPoint=[ lng, lat]
    this.$forceUpdate()
    // console.log(this.clickPoint);
  }
  private handleMapCancel() {
@@ -135,11 +217,12 @@
  private addLonAndLat() {
    if (this.typeOperation === 'add') {
      console.log('add');
      this.sendLonLat(this.clickPoint)
    } else {
      console.log('upa');
      this.editLonLat(this.clickPoint)
    }
    this.flagSend(false)
  }
@@ -150,17 +233,19 @@
  @Emit('sendLonLat')
  private sendLonLat(lonLat: any) {
    console.log(lonLat,'jia');
    return lonLat;
  }
  @Emit('editLonLat')
  private editLonLat(lonLat: any) {
    console.log(lonLat,'gai');
    return lonLat;
  }
}
</script>
<style  lang="less">
<style  lang="less" scoped>
.modalStyle {
  .ant-modal {
    margin-left: 25%;
@@ -173,4 +258,19 @@
.anchorBL {
  display: none;
}
/* 去除高德地图的logo */
/deep/.amap-logo {
  display: none;
  opacity: 0 !important;
}
/deep/.amap-copyright {
  opacity: 0;
}
.amap-sug-result {
  position: absolute;
  z-index: 9999 !important;;
  background-color: #fefefe;
  border: 1px solid #d1d1d1;
  bottom: auto;
}
</style>
src/main.ts
@@ -1,6 +1,6 @@
import Vue from 'vue';
import axios from 'axios'
import {i18n} from './app/index';
import { i18n } from './app/index';
import App from './App.vue';
import router from '@/route/router';
@@ -11,11 +11,22 @@
//百度地图
import BaiduMap from 'vue-baidu-map'
Vue.use(BaiduMap, {
   ak: '9FrZ6v3P8xS290ygi40M5Ik3Fgwes4KY'//你申请的key
  ak: '9FrZ6v3P8xS290ygi40M5Ik3Fgwes4KY'//你申请的key
})
import AMap from 'vue-amap'
Vue.use(AMap)
AMap.initAMapApiLoader({
  key: 'c4e73f2c6972766d6a54dffd2f501cac',
  plugin: ['AMap.moveAnimation', 'AMap.PlaceSearch', 'AMap.Scale',
    'AMap.OverView', 'AMap.ToolBar', 'AMap.MapType', 'AMap.PolyEditor', 'AMap.CircleEditor',
    'AMap.DistrictSearch', 'AMap.Geocoder', 'AMap.AutoComplete'],
  // 默认高德 sdk 版本为 1.4.4
  v: '1.4.4'
})
// 初始化加载器
import {preloaderFinished} from './util/preloader';
import { preloaderFinished } from './util/preloader';
preloaderFinished();
import Startup from '@/core/Startup';
@@ -38,17 +49,17 @@
    app.$mount('#app');
    // app启动
    ( window as any ).appBootstrap();
    (window as any).appBootstrap();
    // 设置app名称
    store.commit('app/appName', res.data.app);
    // 从storage中初始化token,以便登录后刷新token丢失
    const initToken = app.$ss.get('token');
    if ( initToken != null) {
      store.commit('user/loginSuccess', {token: initToken});
    if (initToken != null) {
      store.commit('user/loginSuccess', { token: initToken });
      // 获取acl权限
      store.dispatch('acl/login', {username: initToken});
      store.dispatch('acl/login', { username: initToken });
    }
  },
);
src/util/request.ts
@@ -5,6 +5,7 @@
const instance = axios.create({
    baseURL: 'http://47.99.64.149:8082/', // baseUrl会在发送请求的时候拼接在url前面      开发环境
    // baseURL: 'http://120.26.43.34:8082/',
    // baseURL: 'http://www.7drlb7.com:8082/', // baseUrl会在发送请求的时候拼接在url前面      正式环境
    timeout: 5000
})
src/views/list/devicesBasic.vue
@@ -1089,7 +1089,6 @@
import { jsonp }  from 'vue-jsonp'
import any = jasmine.any;
const statusMap = ["default", "processing", "success", "error"];
const status = ["关闭", "运行中", "已上线", "异常"];
@@ -1288,16 +1287,22 @@
  ]
  private changesen:number=0
  private handleChangevalue1(value: string){
    console.log(this.changesen);
    if(this.changesen===1){
      this.handleChange2(this.reskey);
    }
    this.changesen=1;
  }
  private AQIhandleChange(value: string){
       this.handleChange2(this.reskey);
    console.log(this.changesen);
       if(this.changesen===1){
      this.handleChange2(this.reskey);
    }
  }
  private ceAQIhandleChange(value: string){
    this.handleChange2(this.reskey);
    console.log(this.changesen);
    if(this.changesen===1){
      this.handleChange2(this.reskey);
    }
  }
  private tablecolumns:TableColumnType<datatable>=[
    {
@@ -1344,7 +1349,7 @@
  ]
 
  private rowSelectionChange(selectedRowKeys: string[], selectedRows: DataType[]){
     console.log(selectedRows);
    //  console.log(selectedRows);
     this.selectedtable=selectedRows
  }
  private selectedtable:any[]=[]
@@ -1506,6 +1511,7 @@
    this.addMapFlag = true
  }
  private showMap2() {
    this.typeOperation = 'upa'
    this.editMapFlag = true
  }
  // 定位级别数据
@@ -1654,7 +1660,6 @@
  //下拉查询框方法
  private handleChange1(selectedItems:any) {
    if (selectedItems === undefined) {
      this.selectMt = null
    }else {
@@ -1678,9 +1683,10 @@
      this.datatable=[]
      this.datatable=res.data.data
      if(this.selectvalue1==='a99054'){
        console.log(21323);
         for(var i=0;i<this.datatable.length;i++){
          if(this.ceAQIvalue==='+'){
             this.datatable[i].cel=Number((this.datatable[i].cel + this.ceAQIvaluein).toFixed(2))
             this.datatable[i].cel=((this.datatable[i].cel-0) + (this.ceAQIvaluein-0)).toFixed(2)
          }else if(this.ceAQIvalue==='-'){
            this.datatable[i].cel=Number((this.datatable[i].cel - this.ceAQIvaluein).toFixed(2))
          }else if(this.ceAQIvalue==='*'){
@@ -1696,28 +1702,27 @@
        //   this.datatable[i].cel=parseFloat(this.datatable[i].cel+this.ceAQIvaluein).toFixed(2)
        //   this.datatable[i].agehou='aqi*'+this.datatable[i].aqi+'+'+'ce1*'+this.datatable[i].cel
            if(this.AQIvalue1==='+'){
              // console.log(this,'+++');
              this.datatable[i].aqi=Number((this.datatable[i].aqi + this.AQIvalue).toFixed(2))
              this.datatable[i].aqi=((this.datatable[i].aqi-0) + (this.AQIvalue-0)).toFixed(2)
            }else if(this.AQIvalue1==='-'){
              this.datatable[i].aqi=Number((this.datatable[i].aqi - this.AQIvalue).toFixed(2))
              this.datatable[i].aqi=Number((this.datatable[i].aqi - this.AQIvalue)).toFixed(2)
            } else if(this.AQIvalue1==='*'){
              this.datatable[i].aqi=Number((this.datatable[i].aqi * this.AQIvalue).toFixed(2))
              this.datatable[i].aqi=Number((this.datatable[i].aqi * this.AQIvalue)).toFixed(2)
            }else if(this.AQIvalue1==='/'){
              this.datatable[i].aqi=Number((this.datatable[i].aqi / this.AQIvalue).toFixed(2))
              this.datatable[i].aqi=Number((this.datatable[i].aqi / this.AQIvalue).toFixed(3))
            } 
            if(this.ceAQIvalue==='+'){
             this.datatable[i].cel=Number((this.datatable[i].cel + this.ceAQIvaluein).toFixed(2))
             this.datatable[i].cel=((this.datatable[i].cel-0) + (this.ceAQIvaluein-0)).toFixed(2)
            }else if(this.ceAQIvalue==='-'){
              this.datatable[i].cel=Number((this.datatable[i].cel - this.ceAQIvaluein).toFixed(2))
              this.datatable[i].cel=Number((this.datatable[i].cel - this.ceAQIvaluein)).toFixed(2)
            }else if(this.ceAQIvalue==='*'){
              this.datatable[i].cel=Number((this.datatable[i].cel * this.ceAQIvaluein).toFixed(2))
              this.datatable[i].cel=Number((this.datatable[i].cel * this.ceAQIvaluein)).toFixed(2)
            }else if(this.ceAQIvalue==='/'){
              this.datatable[i].cel=Number((this.datatable[i].cel / this.ceAQIvaluein).toFixed(3))
            }
            this.datatable[i].agehou='aqi*'+this.datatable[i].aqi+'+'+'ce1*'+this.datatable[i].cel
        }
      }
      this.changesen=1;
    })
  }
@@ -2046,10 +2051,10 @@
  }
  private handleCreateModalCancel1():any{
    this.datatable=[];
    this.selectvalue1='请选择因子';
    this.changesen=0;
    this.visibleCreateModal1=false;
    this.datatable=[]
    this.selectvalue1='请选择因子'
    this.changesen=0
  }
  private handlerSelectChange(arr1: any, arr2: any) {
@@ -2190,48 +2195,95 @@
  }
  private receiveFlag2(flag: boolean){
    console.log('receiveFlag2');
    this.editMapFlag = flag
  }
  // 接收新增经纬度点
  private receiveLomLat(lonLat: any) {
    this.addLL = lonLat
    this.getTownData(lonLat)
  }
  private getTownData(lonLat: any) {
    // jsonp('/proxy/reverse_geocoding/v3/', {
    jsonp('https://api.map.baidu.com/reverse_geocoding/v3/', {
        ak: 'e5ig9Z7AKFjv8wbkqDbuLkUMzBev0tgT',
        output: 'json',
        coordtype: 'wgs8411',
        extensions_town: true,
        location: lonLat.lat+ ',' + lonLat.lng
    }).then((res: any) => {
      if(this.typeOperation === 'add') {
        this.town_code = res.result.addressComponent.town_code
        this.form.setFieldsValue({
          jingdu: this.addLL.lng,
          weidu: this.addLL.lat,
          town: res.result.addressComponent.town
        })
      } else {
        console.log(res);
        if (!(res.result.addressComponent.town === '' && res.result.addressComponent.town_code === '')){
          this.editBeforeData.town.townName = res.result.addressComponent.town
          this.editBeforeData.town.townCode = res.result.addressComponent.town_code
        } else {
          this.editBeforeData.town.townName = res.result.addressComponent.town
          this.editBeforeData.town.townCode = res.result.addressComponent.town_code
          this.$message.warning('选择位置信息异常')
        }
    console.log(lonLat,'dsasa');
            let self=this
                    var geocoder = new AMap.Geocoder({
                        // city 指定进行编码查询的城市,支持传入城市名、adcode 和 citycode
                        city: '010'
                    })
                    geocoder.getAddress(lonLat, function(status, result) {
            console.log(result,'result');
                        if (status === 'complete' && result.info === 'OK') {
                            // self.formattedAddress=result.regeocode.formattedAddress
              // console.log(result,'321312');
              if(self.typeOperation === 'add') {
                if(result.regeocode.addressComponent.towncode.length>9){
                  self.town_code=result.regeocode.addressComponent.towncode.slice(0,9)
                }else{
                  self.town_code = result.regeocode.addressComponent.towncode
                }
                self.form.setFieldsValue({
                  jingdu: self.addLL[0],
                  weidu: self.addLL[1],
                  town: result.regeocode.addressComponent.township
                })
                console.log(self.town_code);
              } else {
                if (!(result.regeocode.addressComponent.township === '' && result.regeocode.addressComponent.towncode === '')){
                  self.editBeforeData.town.townName = result.regeocode.addressComponent.township
                  if(result.regeocode.addressComponent.towncode.length>9){
                    self.editBeforeData.town.townCode = result.regeocode.addressComponent.towncode.slice(0,9)
                  }else{
                    self.editBeforeData.town.townCode = result.regeocode.addressComponent.towncode
                  }
                  // console.log(self.editBeforeData.town.townName,self.editBeforeData.town.townCode,'222');
                } else {
                  self.editBeforeData.town.townName = result.regeocode.addressComponent.town
                  self.editBeforeData.town.townCode = result.regeocode.addressComponent.towncode
                  self.$message.warning('选择位置信息异常')
                }
      }
    })
              }
                            // result为对应的地理位置详细信息
                        }
                    })
    // jsonp('/proxy/reverse_geocoding/v3/', {
    // jsonp('https://api.map.baidu.com/reverse_geocoding/v3/', {
    //     ak: 'e5ig9Z7AKFjv8wbkqDbuLkUMzBev0tgT',
    //     output: 'json',
    //     coordtype: 'wgs8411',
    //     extensions_town: true,
    //     location: lonLat.lat+ ',' + lonLat.lng
    // }).then((res: any) => {
    //   console.log(res,'res');
    //   if(this.typeOperation === 'add') {
    //     this.town_code = res.result.addressComponent.town_code
    //     this.form.setFieldsValue({
    //       jingdu: this.addLL.lng,
    //       weidu: this.addLL.lat,
    //       town: res.result.addressComponent.town
    //     })
    //   } else {
    //     console.log(res,'555');
    //     if (!(res.result.addressComponent.town === '' && res.result.addressComponent.town_code === '')){
    //       this.editBeforeData.town.townName = res.result.addressComponent.town
    //       this.editBeforeData.town.townCode = res.result.addressComponent.town_code
    //     } else {
    //       this.editBeforeData.town.townName = res.result.addressComponent.town
    //       this.editBeforeData.town.townCode = res.result.addressComponent.town_code
    //       this.$message.warning('选择位置信息异常')
    //     }
    //   }
    // })
  }
  // 接收修改经纬度点
  private receiveLomLat1(lonLat: any) {
    this.editBeforeData.longitude = lonLat.lng
    this.editBeforeData.latitude = lonLat.lat
    console.log(lonLat,'lonLat');
    this.editBeforeData.longitude = lonLat[0]
    this.editBeforeData.latitude = lonLat[1]
    this.getTownData(lonLat)
  }