<template>
  <div>
    <div
      :style="{ height: `${boxHeight}px`, width: `${boxWidth}px` }"
      id="container"
    ></div>
    <div class="btn-wrapper">
      <div class="myBtn">
        <div
          class="el-btn"
          :class="{ active: targetNum == 1 }"
          @click.stop="addDevice"
        >
          <template v-if="iconClass == 'icon-create'">
            <span class="left">
              <i class="iconfont" :class="iconClass" />
            </span>
            <span class="right">{{ createLabel }}</span>
          </template>
          <template v-else>
            <span class="newLetf">{{ createLabel }}</span>
            <span class="newRight">
              <i class="iconfont" :class="iconClass" />
            </span>
          </template>
        </div>
        <div
          class="el-btn"
          :class="{ active: targetNum == 2 }"
          @click.stop="editDevice"
        >
          <span class="left">
            <i class="iconfont icon-compile" />
          </span>
          <span class="right">编辑</span>
        </div>
        <div
          class="el-btn"
          :class="{ active: targetNum == 3 }"
          @click.stop="deleteDevice"
        >
          <span class="left">
            <i class="iconfont icon-delete" />
          </span>
          <span class="right">删除</span>
        </div>
      </div>

      <div class="animate">
        <el-collapse-transition>
          <div v-show="deviceType">
            <div v-for="item in changeBtnData" :key="item.value" class="option">
              <div
                class="op-btn"
                :class="{ active: item.value == createValue }"
                @click.stop="createChange($event, item)"
              >
                <span class="left">
                  <i class="iconfont" :class="item.icon" />
                </span>
                <span class="right">{{ item.label }}</span>
              </div>
            </div>
          </div>
        </el-collapse-transition>
      </div>
    </div>

    <!-- <el-input
      v-model="keyWord"
      placeholder="点击输入"
      id="tipinput"
      class="search-input"
    />
    <el-button icon="el-icon-search" class="search-but" @click="search()"
      >搜索</el-button
    >
    <el-button icon="el-icon-refresh" class="refresh-but" @click="refreshMap()"
      >重置</el-button
    > -->

    <!-- <div class="leftBar-wrapper">
      <div
        v-for="item in changeBtnData"
        :key="item.value"
        class="box"
        :class="{ active: leftBarNum.indexOf(item.value) >= 0 }"
        @click="leftBarChange(item)"
      >
        <div class="left">
          <i class="iconfont" :class="item.icon"></i>
        </div>
        <div class="right">
          {{ item.label }}
        </div>
        <i class="el-icon-check"></i>
      </div>
    </div> -->

    <div
      ref="drawer"
      class="drawer"
      :class="{ back: backFlag, opacity: drawerOpacity }"
      @click.stop="drawerdrawer"
    >
      <div class="mapChange">
        <div :class="{ active: !mapStyle }" @click="mapChange(1)">卫星地图</div>
        <div :class="{ active: mapStyle }" @click="mapChange(2)">全景地图</div>
      </div>

      <div class="pipePressure">
        <!-- <div>管道压力</div> -->
        <div class="hasColorBox" :style="{ color: lineColor[`1`] }">
          <div :style="{ backgroundColor: lineColor[`1`] }"></div>
          低压
        </div>
        <div class="hasColorBox" :style="{ color: lineColor[`2`] }">
          <div :style="{ backgroundColor: lineColor[`2`] }"></div>
          中压
        </div>
        <div class="hasColorBox" :style="{ color: lineColor[`3`] }">
          <div :style="{ backgroundColor: lineColor[`3`] }"></div>
          次高压
        </div>
        <div class="hasColorBox" :style="{ color: lineColor[`4`] }">
          <div :style="{ backgroundColor: lineColor[`4`] }"></div>
          高压
        </div>
      </div>

      <div class="switch" @click="backFlag = !backFlag">
        <img v-if="!backFlag" src="@/assets/images/l.png" alt="" />
        <img v-else src="@/assets/images/r.png" alt="" />
      </div>
      <!-- 只能动态传入内嵌盒子的高 -->
      <div class="scroll" :style="{ height: `${boxHeight}px` }">
        <el-input
          v-model="keyWord"
          placeholder="点击输入设备名称"
          id="tipinput"
          class="search-input"
        >
          <template slot="suffix">
            <div @click="search()">
              <i class="iconfont icon-search"></i>
            </div>
          </template>
        </el-input>
        <!-- <el-button class="search-but" @click="search()">搜索</el-button> -->
        <el-button class="refresh-but" @click="refreshMap()">
          <i class="iconfont icon-reset"></i>
        </el-button>

        <div class="leftBar-wrapper">
          <div
            class="box-wrapper"
            v-for="(item, index) in changeBtnData"
            :key="item.value"
          >
            <div
              class="box"
              :class="{
                active: leftBarNum.indexOf(item.value) >= 0,
                firstbox: index == 0,
              }"
              @click.stop="arrowRightChange(item)"
            >
              <span class="upPic"> 上图 </span>
              <div class="left">
                <i class="iconfont" :class="item.icon"></i>
              </div>
              <div class="right">
                {{ item.label }}
              </div>
              <i
                @click.stop="leftBarChange(item)"
                class="el-icon-check bingo"
              ></i>
              <i class="ju"></i>
              <i
                class="arrow-right el-icon-arrow-right"
                :class="{ active: arrowRightNum.indexOf(item.value) >= 0 }"
              ></i>
            </div>
            <el-collapse-transition>
              <div
                class="animate"
                v-show="arrowRightNum.indexOf(item.value) >= 0"
              >
                <!-- 有数据 -->
                <template v-if="item.list.length > 0">
                  <!-- 设备以及管道 展示内容是一样的 -->
                  <template v-if="item.value != 9">
                    <div class="list-wrapper">
                      <div class="thead">
                        <div class="no"></div>
                        <div class="code">设备编号</div>
                        <div class="name">设备名称</div>
                      </div>
                      <div
                        class="deviceList"
                        :class="{ topActive: index == 0 }"
                        v-for="(iten, index) in item.list"
                        :key="iten.deviceId + `` + index"
                        @click.stop="panToo(iten, item)"
                      >
                        <div class="no">{{ iten.no + 1 }}</div>
                        <div :title="iten.code" class="code">
                          {{ iten.code }}
                        </div>
                        <div :title="iten.deviceName" class="name">
                          {{ iten.deviceName }}
                        </div>
                      </div>
                    </div>
                  </template>

                  <!-- 翻页 -->
                  <div class="goback">
                    <div class="btn-w">
                      <el-button
                        class="btn backPage"
                        type="mini"
                        :disabled="item.nowPage == 1"
                        @click.stop="pageBack(item, index)"
                        icon="el-icon-arrow-left"
                      />
                      <span class="btn-w-num">{{ item.nowPage }}</span>
                      <el-button
                        class="btn goPage"
                        type="mini"
                        :disabled="item.nowPage == item.maxPage"
                        @click.stop="pageGo(item, index)"
                        icon="el-icon-arrow-right"
                      />
                    </div>
                  </div>
                </template>
                <!-- 无数据 -->
                <template v-else>
                  <div style="padding-left: 5px; color: #fff">暂无数据</div>
                </template>
              </div>
            </el-collapse-transition>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>
<script>
import gaodeMap from "utils/gaodeMap.js";
import { pipeAllInfoList } from "@/api/device/pipe.js";
import { map, DEVICE_TYPE, mapOperateType } from "utils/gaodeMap.js";
import { getAllDeviceInfo } from "@/api/device/deviceInfo";
import { lineColor } from "@/utils/mapCommon.js";

export default {
  data() {
    return {
      gaoMap: null,
      deviceType: false,
      value: "",
      operateType: "",
      radio1: "",
      // 1新建，2编辑，3删除,点按钮变色
      targetNum: 0,
      lineColor,

      backFlag: true,
      // 卫星与全景地图的切换
      mapStyle: true,
      // 抽屉内的滚动条的高需要赋值赋值
      boxHeight: "",
      boxWidth: "",
      drawerOpacity: false,
      // 左边的bar的active判定
      leftBarNum: [1, 2, 3, 4, 7],
      // 右转箭头的样式active判定
      arrowRightNum: [],

      // 新建里的值
      iconClass: "icon-create",
      createValue: 0,
      createLabel: "新增",
      changeBtnData: [
        {
          value: 1,
          icon: "icon-gd",
          label: "管道",
          nowPage: 1,
          maxPage: 99,
          list: [],
        },
        {
          value: 2,
          icon: "icon-tyx",
          label: "调压箱",
          nowPage: 1,
          maxPage: 99,
          list: [],
        },
        {
          value: 3,
          icon: "icon-fmj",
          label: "阀门井",
          nowPage: 1,
          maxPage: 99,
          list: [],
        },
        {
          value: 4,
          icon: "icon-llj",
          label: "流量计",
          nowPage: 1,
          maxPage: 99,
          list: [],
        },
        {
          value: 7,
          icon: "icon-ylb",
          label: "压力表",
          nowPage: 1,
          maxPage: 99,
          list: [],
        },
      ],
      allList: [[], [], [], [], []],
      keyWord: "",
    };
  },
  mounted() {
    this.onResize();
    window.removeEventListener("resize", this.onResize);
    window.addEventListener("resize", this.onResize);
    this.initMap();
  },
  methods: {
    onResize() {
      this.boxHeight = document.body.clientHeight - 80;
      this.boxWidth = document.body.clientWidth - 100;
    },
    async initMap() {
      let gaoMap = new gaodeMap("石家庄");
      this.gaoMap = gaoMap;
      this.gaoMap.view = this;
      window.removeEventListener("click", this.barClose);
      window.addEventListener("click", this.barClose);
      gaoMap.addMouseTool();
      gaoMap.searchTips("tipinput");
      await this.getDeviceInfo();
      await this.getPipeList();
      this.pipeList();
    },
    // 左边的Bar修改值
    leftBarChange(item) {
      // this.leftBarNum= this.leftBarNum != item.value ? item.value:0;
      // 关闭infowindow
      this.gaoMap.closeInfoWindow();
      // 恢复颜色
      this.gaoMap.polyLinesColorClear();
      const index = this.leftBarNum.indexOf(item.value);
      if (index >= 0) {
        this.leftBarNum.splice(index, 1);
      } else {
        this.leftBarNum.push(item.value);
        this.panTo(item);
      }
      // 1,2,3,4,7分别对应数据库type5，1，2，3，4
      console.log(this.leftBarNum);

      if (this.leftBarNum.includes(1)) {
        this.gaoMap.lineShow(true);
      } else {
        this.gaoMap.lineShow(false);
      }

      // console.log("marks",this.gaoMap.markers)
      // this.gaoMap.markerShow();
      if (this.leftBarNum.includes(2)) {
        this.gaoMap.markerShow(1, true);
      } else {
        this.gaoMap.markerShow(1, false);
      }

      if (this.leftBarNum.includes(3)) {
        this.gaoMap.markerShow(2, true);
      } else {
        this.gaoMap.markerShow(2, false);
      }

      if (this.leftBarNum.includes(4)) {
        this.gaoMap.markerShow(3, true);
      } else {
        this.gaoMap.markerShow(3, false);
      }

      if (this.leftBarNum.includes(7)) {
        this.gaoMap.markerShow(4, true);
      } else {
        this.gaoMap.markerShow(4, false);
      }
    },
    // 卫星地图与全景地图的切换
    mapChange(num) {
      if (num == 1) {
        this.mapStyle = false;
      } else {
        this.mapStyle = true;
      }
      this.gaoMap.changeMap(this.mapStyle);
    },
    addDevice() {
      if (this.iconClass == "icon-create") {
        this.targetNum = this.targetNum != 1 ? 1 : 0;
      } else {
        if (this.deviceType) {
          this.targetNum = 0;
          this.createReset();
          this.gaoMap.newLineReset();
        }
      }
      if (this.targetNum == 1 && this.createValue == 1) {
        this.gaoMap.lineType = 1;
      } else {
        this.gaoMap.lineType = 0;
        this.gaoMap.mouseTool.close();
      }
      // 关闭当前的infowindow
      this.gaoMap.closeInfoWindow();
      // 清除所有线的颜色
      this.gaoMap.polyLinesColorClear();

      this.deviceType = !this.deviceType;
      this.gaoMap.mapOperateType = "add";
      this.gaoMap.removeMarkerDragg();
    },

    // 选择新建项目哪个
    createChange(e, item) {
      // e.stopPropagation();
      this.deviceType = false;
      this.iconClass = item.icon;
      this.createValue = item.value;
      this.createLabel = item.label;

      if (this.targetNum == 1 && this.createValue == 1) {
        // 0是初始，1是新建 2是编辑 3删除
        this.gaoMap.lineType = 1;
        if (this.gaoMap.newLineObj == null) {
          console.log(this.gaoMap.newLineObj);
          this.gaoMap.createNewLine();
        }
      } else {
        // 如果不是管道，就归位
        this.gaoMap.lineType = 0;
        // 如果不是管道了，把之前的管道清空
        this.gaoMap.newLineReset();

        // this.createReset();
        // 其他
        this.gaoMap.draw(this.createValue.toString());
      }
      // 清空所有正在编辑状态的线
      this.gaoMap.linePolyEditorAllClose();
    },
    // 新建按钮还原
    createReset() {
      this.iconClass = "icon-create";
      this.createValue = 0;
      this.createLabel = "新建";
      this.gaoMap.closeAddMarker();
    },
    editDevice() {
      this.targetNum = this.targetNum != 2 ? 2 : 0;
      this.gaoMap.lineType = this.targetNum;
      if (this.targetNum != 2) {
        this.gaoMap.linePolyEditorAllClose();
        this.gaoMap.removeMarkerDragg();
        this.gaoMap.mapOperateType = "normal";
      } else {
        // 如果正在新建线条，则清空
        this.gaoMap.newLineReset();
        this.deviceType = false;
        this.gaoMap.mapOperateType = "edit";
        this.gaoMap.addMarkerDragg();
        // this.gaoMap.placeSearch.clear();
        this.gaoMap.closeAddMarker();
      }
      // 关闭当前的infowindow
      this.gaoMap.closeInfoWindow();
      // 清空管道颜色
      this.gaoMap.polyLinesColorClear();
      this.createReset();
    },
    deleteDevice() {
      this.targetNum = this.targetNum != 3 ? 3 : 0;
      this.gaoMap.lineType = this.targetNum;
      if (this.targetNum != 3) {
        this.gaoMap.removeMarkerDragg();
        this.gaoMap.mapOperateType = "normal";
      } else {
        // 如果正在新建线条，则清空
        this.gaoMap.newLineReset();
        // 清空所有正在编辑状态的线
        this.gaoMap.linePolyEditorAllClose();
        this.deviceType = false;
        this.gaoMap.mapOperateType = "delete";
        this.gaoMap.removeMarkerDragg();
        //this.gaoMap.placeSearch.clear();
        this.gaoMap.closeAddMarker();
      }
      // 关闭当前的infowindow
      this.gaoMap.closeInfoWindow();
      // 清空管道颜色
      this.gaoMap.polyLinesColorClear();
      this.createReset();
    },
    selectDeviceType(val) {
      // if("add" == this.operationType){
      this.gaoMap.draw(val);
      // }
      this.deviceType = false;
      this.value = "";
      // 如果选择的是新建管道
      if (val == 1) {
        this.gaoMap.lineType = 1;
        this.gaoMap.createNewLine();
      }
    },
    getDeviceInfo(queryParams) {
      this.loading = true;
      return getAllDeviceInfo(queryParams).then((response) => {
        if (response.code == 200) {
          this.deviceClassify(response.data);
          for (var i = 0; i < response.data.length; i++) {
            if ("1" == response.data[i].deviceType) {
              this.gaoMap.addMarker(
                DEVICE_TYPE.REGEULATORBOX,
                response.data[i]
              );
            }
            if ("2" == response.data[i].deviceType) {
              this.gaoMap.addMarker(DEVICE_TYPE.VALUEWELL, response.data[i]);
            }
            if ("3" == response.data[i].deviceType) {
              this.gaoMap.addMarker(DEVICE_TYPE.FLOWMETER, response.data[i]);
            }
            if ("4" == response.data[i].deviceType) {
              this.gaoMap.addMarker(DEVICE_TYPE.PRESSUREGAGE, response.data[i]);
            }
          }
        }
        this.loading = false;
      });
    },
    getPipeList(queryParams) {
      return pipeAllInfoList(queryParams).then((res) => {
        console.log("管道", res);
        if (res.code == 200) {
          this.pipeClassify(res.data);
          this.gaoMap.addPolyline(res.data);
        }
      });
    },
    searchClear() {
      this.iconClass = "icon-create";
      this.createValue = 0;
      this.createLabel = "新建";
      this.targetNum = 0;
      this.gaoMap.lineType = 0;
      this.gaoMap.newLineReset();
      this.gaoMap.linePolyEditorAllClose();
      this.gaoMap.closeAddMarker();
      this.gaoMap.removeMarkerDragg();
      this.gaoMap.mapOperateType = "normal";
      this.leftBarNum = [1, 2, 3, 4, 7];
      // map.remove(this.gaodeMap.markerOverlays);
    },
    async search() {
      this.searchClear();
      map.clearMap();
      this.gaoMap.placeSearch.clear();
      if (!(!this.gaoMap.searchSelectAdcode && !this.gaoMap.searchSelectName)) {
        this.gaoMap.placeSearch.setCity(this.gaoMap.searchSelectAdcode);
        this.gaoMap.placeSearch.search(this.gaoMap.searchSelectName);
        this.gaoMap.markers = [];
        await this.getDeviceInfo({ deviceName: this.gaoMap.searchSelectName });
        this.gaoMap.polyLines = [];
        await this.getPipeList({ pipeName: this.gaoMap.searchSelectName });
        this.gaoMap.searchSelectAdcode = undefined;
        this.gaoMap.searchSelectName = undefined;
      } else {
        this.gaoMap.placeSearch.search(this.keyWord);
        this.gaoMap.markers = [];
        await this.getDeviceInfo({ deviceName: this.keyWord });
        this.gaoMap.polyLines = [];
        await this.getPipeList({ pipeName: this.keyWord });
      }
      this.changeBtnData.forEach((item) => {
        item.nowPage = 1;
      });
      this.pipeList();
    },
    // 新建下拉列表关闭 window点击事件
    barClose() {
      console.log("window");
      this.deviceType = false;
      // 关闭当前线条的infowindow
      // 如果当前状态只有是编辑跟删除状态才会关闭
      if (this.targetNum == 2 || this.targetNum == 3) {
        this.gaoMap.closeInfoWindow();
      }
      // 如果没有选择的时候点window 则高亮消失
      console.log(this.targetNum);
      if (this.targetNum == 1 && this.iconClass == "icon-create") {
        this.targetNum = 0;
      }
      // 辅助新建重新画线
      // if (!this.gaoMap.lineFlag || this.gaoMap.lineType != 1) return;
      console.log("利用window把lineFlagh恢复");
      this.gaoMap.lineFlag = false;
      // this.gaoMap.createNewLine();
    },
    refreshMap() {
      this.iconClass = "icon-create";
      this.createValue = 0;
      this.createLabel = "新建";
      this.targetNum = 0;

      map.clearMap();
      this.keyWord = "";
      this.arrowRightNum = [];
      this.leftBarNum = [1, 2, 3, 4, 7];
      this.changeBtnData.forEach((item) => {
        item.nowPage = 1;
      });
      this.initMap();
    },
    drawerdrawer() {
      // 关闭infowindow
      this.gaoMap.closeInfoWindow();
      // 恢复颜色
      this.gaoMap.polyLinesColorClear();
    },
    // 向右的箭头的动画
    arrowRightChange(item) {
      // 关闭infowindow
      this.gaoMap.closeInfoWindow();
      // 恢复颜色
      this.gaoMap.polyLinesColorClear();
      const index = this.arrowRightNum.indexOf(item.value);
      if (index >= 0) {
        this.arrowRightNum.splice(index, 1);
      } else {
        this.arrowRightNum.push(item.value);
      }
    },

    // 管道储存
    pipeClassify(pipeData) {
      const pipeArr = pipeData.map((item, index) => {
        // console.log( '管道路径',eval(item.coordinates )[0])
        return {
          lnglat: eval(item.coordinates)[0],
          path: eval(item.coordinates)[1],
          no: index,
          deviceId: item.pipeId,
          deviceType: "0",
          deviceName: item.pipeName,
          code: item.pipeCode,
        };
      });
      this.allList[0] = pipeArr;
      console.log("管道管道管道管道", pipeArr);
    },
    // 设备分类存储
    deviceClassify(data) {
      // 所有调压箱数据
      const tyxArr = data
        .filter((item) => {
          return item.deviceType == 1;
        })
        .map((item, index) => {
          return {
            path: [item.longitude, item.latitude],
            no: index,
            deviceId: item.deviceId,
            deviceType: item.deviceType,
            deviceName: item.deviceName,
            code: item.iotNo,
          };
        });
      // 所有阀门井数据
      const fmjArr = data
        .filter((item) => {
          return item.deviceType == 2;
        })
        .map((item, index) => {
          return {
            path: [item.longitude, item.latitude],
            no: index,
            deviceId: item.deviceId,
            deviceType: item.deviceType,
            deviceName: item.deviceName,
            code: item.iotNo,
          };
        });
      // 所有流量计数据
      const lljArr = data
        .filter((item) => {
          return item.deviceType == 3;
        })
        .map((item, index) => {
          return {
            path: [item.longitude, item.latitude],
            no: index,
            deviceId: item.deviceId,
            deviceType: item.deviceType,
            deviceName: item.deviceName,
            code: item.iotNo,
          };
        });
      // 所有压力表数据
      const ylbArr = data
        .filter((item) => {
          return item.deviceType == 4;
        })
        .map((item, index) => {
          return {
            path: [item.longitude, item.latitude],
            no: index,
            deviceId: item.deviceId,
            deviceType: item.deviceType,
            deviceName: item.deviceName,
            code: item.iotNo,
          };
        });
      // console.log("设备", tyxArr, fmjArr, lljArr, ylbArr);
      this.allList[1] = tyxArr;
      this.allList[2] = fmjArr;
      this.allList[3] = lljArr;
      this.allList[4] = ylbArr;
    },
    // 左边设备翻页
    pipeList(pageNum) {
      const num = pageNum ? pageNum : 10;
      // const { nowPage } = this.changeBtnData[0];
      // this.changeBtnData[0].list = this.allList[0].filter((item, index) => {
      //   return index >= (nowPage - 1) * num && index < nowPage * num;
      // });
      // console.log(this.changeBtnData[0], this.allList[0]);
      console.log("this.allList[0]", this.allList[0]);
      this.changeBtnData.forEach((item, index) => {
        // console.log("=======", index, this.allList[index]);
        if (this.allList[index]?.length > 0) {
          console.log("大于0");
          item.list = this.allList[index].filter((item2, index2) => {
            return (
              index2 >= (item.nowPage - 1) * num && index2 < item.nowPage * num
            );
          });
          item.maxPage = Math.ceil(this.allList[index].length / num);
        } else {
          // 如果为空，就直接把item.list写成[];
          item.list = [];
        }
      });
    },
    pageBack(item) {
      item.nowPage--;
      this.pipeList();
    },
    pageGo(item) {
      item.nowPage++;
      this.pipeList();
    },
    panTo(item, bool) {
      this.gaoMap.myMap.setZoom(12);
      if (item.list.length > 0) {
        if (this.leftBarNum.includes(item.value)) {
          let path;
          // 线条
          if (item.value == 1) {
            const a =
              (Number(item.list[0].lnglat[0]) + Number(item.list[0].path[0])) /
              2;
            const b =
              (Number(item.list[0].lnglat[1]) + Number(item.list[0].path[1])) /
              2;
            path = [a, b - 0.06];
          } else {
            path = [item.list[0].path[0], item.list[0].path[1] - 0.06];
          }
          this.gaoMap.panTo(path);
        }
      }
    },
    panToo(iten, item) {
      // 如果没打对勾，就啥也不干
      if (!this.leftBarNum.includes(item.value)) return;
      // 如果地图太大了就吸纳是不出来infowindow了，所以要固定缩放比例
      // 所有线条颜色还原
      this.gaoMap.leftListClick = true;
      this.gaoMap.polyLinesColorClear();
      this.gaoMap.myMap.setZoom(12);
      if (item.list.length > 0) {
        if (this.leftBarNum.includes(item.value)) {
          let path;
          if (item.value == 1) {
            const a = (Number(iten.lnglat[0]) + Number(iten.path[0])) / 2;
            const b = (Number(iten.lnglat[1]) + Number(iten.path[1])) / 2;
            //屏幕移动的位置
            path = [a, b - 0.06];
            // 线条infowindow显示中间,保留六位转换字符串，否则有时候会出现一些问题
            iten.infoPath = [a.toFixed(6), b.toFixed(6)];
          } else {
            path = [iten.path[0], iten.path[1] - 0.06];
          }
          this.gaoMap.panTo(path);
        }
      }
      // 当前地图中心点
      const { lat, lng } = this.gaoMap.myMap.getCenter();
      // 管道是这个方法，因为管道比较特殊
      if (item.value == 1) {
        this.polylineInfoWindowShow(iten, lat, lng);
      } else if (item.value == 9) {
      } else if (item.value == 8) {
      } else {
        // 其他设备
        this.diveceInfoWindowShow(iten, lat, lng);
      }
    },

    // 如果是线条飞过去出现infowindow
    polylineInfoWindowShow(iten, lat, lng) {
      const target = this.gaoMap.polyLines.filter((item) => {
        return item.getExtData().lineData.pipeId == iten.deviceId;
      })[0];
      console.log("target", target);
      const e = {
        target,
        lnglat: iten.infoPath,
      };
      // console.log(target.getOptions());
      // 如果是原地不动，就直接执行
      // console.log(iten.infoPath, lng, lat + 0.1);

      // 因为计算问题，误差小于0.00001就没动
      if (
        iten.infoPath[0] - lng >= -0.00001 &&
        iten.infoPath[0] - lng <= 0.00001 &&
        iten.infoPath[1] - (lat + 0.06) >= -0.00001 &&
        iten.infoPath[1] - (lat + 0.06) <= 0.00001
      ) {
        this.gaoMap.leftListClick = false;
        target.setOptions({ strokeColor: "#F7FE38" });
        this.gaoMap.polylineMouseOver(e);
        return;
      }
      // 因为地图移动的时候infowindow无法显示
      this.gaoMap.handleInfoWindowOpenFunc = () => {
        this.gaoMap.polylineMouseOver(e);
        target.setOptions({ strokeColor: "#F7FE38" });
      };
    },
    // 这个是其他设备的infowindow
    diveceInfoWindowShow(iten, lat, lng) {
      const target = this.gaoMap.markers.filter((item) => {
        return item.getExtData().deviceId == iten.deviceId;
      })[0];
      console.log("target", target);
      const e = {
        target,
        lnglat: iten.path,
      };
      // 如果是原地不动，就直接执行
      if (iten.path[0] == lng && iten.path[1] >= lat + 0.06 - 0.000001) {
        console.log("9999999999");
        this.gaoMap.infoOpen(e);
        return;
      }
      // 因为地图移动的时候infowindow无法显示
      this.gaoMap.handleInfoWindowOpenFunc = () => {
        this.gaoMap.infoOpen(e);
      };
    },
  },

  beforeDestroy() {
    console.log("移除window事件");
    window.removeEventListener("click", this.barClose);
    window.removeEventListener("resize", this.onResize);
  },
};
</script>


<style lang="scss" scoped>
// 解决地图下拉框
#container {
  position: fixed;
  top: 80px;
  bottom: 0;
  width: 100%;
}
// 左边的bar

// .leftBar-wrapper {
//   position: fixed;
//   left: 100px;
//   top: 150px;
//   .box {
//     width: 180px;
//     height: 48px;
//     display: flex;
//     background-color: #ffffff;
//     box-sizing: border-box;
//     border: 1px solid rgba(0, 0, 0, 0.1);
//     border-top: none;
//     cursor: pointer;
//     position: relative;
//     > i {
//       position: absolute;
//       line-height: 48px;
//       right: 20px;
//       color: #fff;
//     }
//     &:hover {
//       // background-color: #053b6a;
//       // color: #ffffff;
//       // > i {
//       //   color:#fff;
//       // }
//     }
//     &:hover .left,
//     &:hover .right {
//       // color: #ffffff;
//     }
//     &.active {
//       // background-color: #053b6a;
//       .left,
//       .right {
//         color: #053b6a;
//       }
//       > i {
//         color: #053b6a;
//       }
//     }
//     .left {
//       color: #053b6a;
//       line-height: 48px;
//       margin-left: 40px;
//     }
//     .right {
//       color: #1d1d1d;
//       line-height: 48px;
//       margin-left: 20px;
//     }
//   }
// }

.btn-wrapper {
  position: fixed;
  right: 32px;
  top: 100px;
  .myBtn {
    display: flex;
    justify-content: space-between;
    .el-btn {
      width: 144px;
      height: 44px;
      background-color: #053b6a;
      margin-right: 22px;
      border-radius: 4px;
      text-align: center;
      line-height: 44px;
      color: #fff;
      cursor: pointer;
      font-size: 18px;
      display: flex;
      justify-content: space-between;
      &.active {
        background: #31eaea;
        color: #053b6a !important;
      }
      .left {
        padding-left: 38px;
        i {
          font-size: 18px;
        }
      }
      .right {
        padding-right: 38px;
      }

      .newLetf {
        margin-left: 20px;
      }
      .newRight {
        margin-right: 20px;
        position: relative;
        i {
          position: absolute;
          right: 0px;
          top: 1px;
          font-size: 30px;
        }
      }
    }
  }
  .animate {
    .option {
      .op-btn {
        width: 144px;
        height: 38px;
        border-radius: 0;
        color: #053b6a;
        line-height: 38px;
        background-color: #fff;
        cursor: pointer;
        position: relative;
        border: 1px solid #cccccc;
        border-top: 0;
        &.active {
          background-image: url("../../../assets/images/bac1.png");
        }
        .left {
          position: relative;
          margin-right: 30px;
          margin-left: 22px;
          i {
            position: absolute;
            top: -7px;
            font-size: 20px;
          }
        }
        .right {
          display: inline-block;
          font-size: 14px;
          line-height: 38px;
        }

        &:hover {
          background-image: url("../../../assets/images/bac1.png");
        }
      }
    }
  }
}
.input-card {
  display: flex;
  flex-direction: column;
  min-width: 0;
  word-wrap: break-word;
  background-color: #fff;
  background-clip: border-box;
  border-radius: 0.25rem;
  width: 22rem;
  border-width: 0;
  border-radius: 0.4rem;
  box-shadow: 0 2px 6px 0 rgba(114, 124, 245, 0.5);
  position: fixed;
  bottom: 1rem;
  right: 1rem;
  -ms-flex: 1 1 auto;
  flex: 1 1 auto;
  padding: 0.75rem 1.25rem;
}

.input-item {
  position: relative;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  -ms-flex-align: center;
  align-items: center;
  width: 100%;
  height: 2.2rem;
}
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  padding: 0;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  padding: 0;
  margin: 0 0.5rem 0 0;
}
// .btn {
//   display: inline-block;
//   font-weight: 400;
//   text-align: center;
//   white-space: nowrap;
//   vertical-align: middle;
//   -webkit-user-select: none;
//   -moz-user-select: none;
//   -ms-user-select: none;
//   user-select: none;
//   border: 1px solid transparent;
//   transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
//     border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
//   background-color: transparent;
//   background-image: none;
//   color: #25a5f7;
//   border-color: #25a5f7;
//   padding: 0.25rem 0.5rem;
//   line-height: 1.5;
//   border-radius: 1rem;
//   -webkit-appearance: button;
//   cursor: pointer;
//   width: 6rem;
//   margin: 0 1rem 0 2rem;
// }

// .btn:hover {
//   color: #fff;
//   background-color: #25a5f7;
//   border-color: #25a5f7;
// }
.input-text {
  width: 4rem;
  margin-right: 1rem;
}
.search-input {
  position: fixed;
  top: 100px;
  left: 7%;
  width: 240px;
}
.search-but {
  position: fixed;
  top: 100px;
  left: 23%;
  width: 85px;
  color: white;
  background-color: #053b6a;
}

.refresh-but {
  position: fixed;
  top: 100px;
  left: 28%;
  width: 85px;
  color: white;
  background-color: #053b6a;
}

.drawer {
  position: fixed;
  top: 80px;
  bottom: 0;
  left: 100px;
  width: 348px;
  transition: 0.2s linear;
  // background: #fff;
  background: rgba(6, 29, 51, 0.8);

  // background: red;
  opacity: 0;
  &.opacity {
    opacity: 1;
  }
  &.back {
    left: -248px;
  }
  .mapChange {
    right: -178px;
    top: 10px;
    color: #fff;
    position: absolute;
    display: flex;
    div {
      padding: 4px 8px;
      border: 1px solid #fff;
      margin-left: 8px;
      cursor: pointer;
      &.active,
      &:hover {
        background-color: #053b6a;
        color: #31eaea;
      }
    }
  }
  .pipePressure {
    position: absolute;
    color: #fff;
    right: -80px;
    top: 50px;
    padding: 1px;
    // background: rgba(6, 29, 51, 0.8);
    .hasColorBox {
      // border: 1px solid #053b6a;
      padding: 2px 5px;
      margin-bottom: 5px;
      & > div {
        display: inline-block;
        width: 10px;
        height: 10px;
      }
    }
  }
  .scroll {
    // height: 100%;
    position: relative;
    overflow-y: scroll;
    overflow-x: hidden;

    &::-webkit-scrollbar {
      display: none;
    }
    .search-input {
      position: absolute;
      top: 14px;
      left: 39px;
      width: 236px;
      .icon-search {
        line-height: 28px;
        cursor: pointer;
        font-size: 13px;
      }
    }
    .refresh-but {
      // position: fixed;
      position: absolute;
      padding: 0px;
      height: 28px;
      width: 28px;
      top: 14px;
      left: 285px;
      // width: 85px;
      color: white;
      background-color: #053b6a;
      .icon-reset {
        font-size: 13px;
      }
    }
  }

  // 左边的bar
  .leftBar-wrapper {
    // position: fixed;
    width: 340px;
    // margin-left: 20px;
    margin-top: 60px;
    // box-sizing: border-box;
    .box-wrapper {
      width: 340px;
    }
    .animate {
      border-bottom: 1px solid rgba(0, 0, 0, 0.1);
      border-top: none;
      width: 340px;
      .list-wrapper {
        margin-left: 22px;
        padding-top: 8px;
      }
      .thead {
        display: flex;
        font-size: 14px;
        margin-bottom: 8px;
        > div {
          // border-right: 1px solid #cccccc;
          box-sizing: border-box;
          // padding-left: 5px;
          // color: #053b6a;
          color: #fff;

          font-weight: 600;
        }
      }
      .deviceList {
        cursor: pointer;
        margin-bottom: 2px;
        box-sizing: border-box;
        border-bottom: 1px solid #053b6a00;
        color: #1d1d1d;
        &:hover {
          box-sizing: border-box;
          // border-bottom: 1px solid #053b6a;
          border-bottom: 1px solid #7fc0f8;

          // color: #053b6a;
          font-weight: 600;
          > div {
            color: #7fc0f8;
          }
        }
        &.topActive {
          // border-top: 1px solid #cccccc;
        }
        display: flex;
        // border-bottom: 1px solid #cccccc;
        // justify-content: space-between;
        > div {
          // flex: 1;
          font-size: 14px;
          // border-right: 1px solid #cccccc;
          box-sizing: border-box;
          // padding-left: 5px;
          overflow: hidden;
          text-overflow: ellipsis;
          white-space: nowrap;
          color: #fff;

          // border-right: 1px solid #cccccc;
        }
      }
      .no {
        width: 25px;
        font-weight: 700;
      }
      .name {
        // border-right: none;
        flex: 1;
        text-align: center;
        margin-left: 10px;
      }
      .code {
        width: 100px;
        text-align: center;
      }
    }
    .box {
      width: 348px;
      height: 48px;
      padding-left: 20px;
      display: flex;
      // background-color: #ffffff;
      box-sizing: border-box;
      border-bottom: 1px solid rgba(0, 0, 0, 0.5);
      cursor: pointer;
      position: relative;
      // box-sizing: border-box;
      &.firstbox {
        // border-top: 1px solid rgba(0, 0, 0, 0.1);
        border-top: 1px solid rgba(5, 59, 106, 0);

        // box-sizing: border-box;
        &:hover {
          border-top: 1px solid rgba(5, 59, 106, 0);
        }
      }
      &:hover {
        box-sizing: border-box;
        // background-color: rgba(5, 59, 106, 0.1);
        background-color: #053b6a;
        border-bottom: none !important;
        .upPic {
          color: #31eaea;
        }
        .left,
        .right {
          color: #31eaea !important;
        }
      }
      .upPic {
        display: inline-block;
        margin-left: 40px;
        line-height: 48px;
        font-size: 16px;
        // color: #053b6a;
        color: #fff;
      }
      > i.ju {
        position: absolute;
        display: inline-block;
        width: 15px;
        height: 15px;
        background: #fff;
        border: 1px solid #cccccc;
        left: 45px;
        top: 16px;
        // top: ;
        z-index: 1;
        border-radius: 2px;
      }
      > i.bingo {
        z-index: 2;
        position: absolute;
        // line-height: 48px;
        left: 45px;
        top: 16px;
        color: #fff;
      }
      > i.arrow-right {
        color: #fff !important;
        position: absolute;
        right: 32px;
        top: 16px;
        transition: 0.3s linear;
        &.active {
          transform: rotate(90deg);
        }
      }
      &.active {
        // background-color: #053b6a;
        // .left,
        // .right {
        //   color: #053b6a;
        // }
        // > i {
        //   color: #053b6a;
        // }
        > i {
          color: #31eaea;
          font-weight: 600;
        }
      }
      .left {
        // color: #053b6a;
        color: #fff;
        line-height: 48px;
        margin-left: 28px;
        .iconfont {
          font-size: 22px;
        }
      }
      .right {
        // color: #1d1d1d;
        color: #fff;
        line-height: 48px;
        font-size: 16px;
        margin-left: 4px;
      }
    }
    .goback {
      display: flex;
      justify-content: space-between;
      .minMax {
        font-size: 14px;
        line-height: 28px;
        box-sizing: border-box;
        padding-left: 3px;
      }
      .btn-w {
        width: 100%;
        text-align: center;
        padding-bottom: 2px;
        .btn {
          border-radius: 50%;
          background: none;

          // width: 14px;
          // height: 14px;
          padding: 2px;
        }
        .btn-w-num {
          display: inline-block;
          font-size: 14px;
          padding: 0px 5px;
          color: #fff;
        }
      }
    }
  }
  // 开关
  .switch {
    position: absolute;
    font-size: 30px;
    right: -30px;
    top: 50%;
    margin-top: -123px;
    width: 40px;
    border-radius: 40%;
    overflow: hidden;
    cursor: pointer;
    i {
      background: #fff;
    }
  }
}
</style>

