<template>
  <div>
    <div style="width: 100vw; height: 100vh" id="container"></div>
    <!-- <div class="input-card" style='width: 24rem;'>
      <div class="input-item">
        <input type="radio" name='func' value='marker'><span class="input-text">画点</span>
        <input type="radio" name='func' value='polyline'><span class="input-text">画折线</span>
        <input type="radio" name='func' value='polygon'><span class="input-text" style='width:5rem;'>画多边形</span>
      </div>
      <div class="input-item">
        <input type="radio" name='func' value='rectangle'><span class="input-text">画矩形</span>
        <input type="radio" name='func' value='circle'><span class="input-text">画圆</span>
      </div>
      <div class="input-item">
        <input id="clear" type="button" class="btn" value="清除" />
        <input id="close" type="button" class="btn" value="关闭绘图" />
      </div>
    </div>-->
    <div class="btn-wrapper">
      <!-- <el-button type="primary" class="el-btn" icon="el-icon-search" @click="addDevice"
        >
        新增
      </el-button>
      <el-button type="primary" class="el-btn" @click="editDevice"
        >编辑
      </el-button>
      <el-button type="primary" class="el-btn" @click="deleteDevice"
        >删除
      </el-button> -->
      <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-select-->
    <el-input
      v-model="keyWord"
      placeholder="点击输入"
      id="tipinput"
      class="search-input"
    />
    <el-button
      type="red"
      icon="el-icon-search"
      class="search-but"
      @click="search()"
      >搜索</el-button
    >
    <!-- <el-button
      type="primary"
      style="position: absolute; top: 100px; left: 75%"
      @click="addDevice"
      >新增</el-button
    >
    <el-button
      type="primary"
      style="position: absolute; top: 100px; left: 82%"
      @click="editDevice"
      >编辑</el-button
    >
    <el-button
      type="primary"
      style="position: absolute; top: 100px; left: 90%"
      @click="deleteDevice"
      >删除</el-button
    >
    <el-select
      v-model="value"
      placeholder="请选择..."
      @change="selectDeviceType"
      style="position: absolute; top: 150px; left: 75%"
      v-if="deviceType"
    >
      <el-option label="管道" value="1"></el-option>
      <el-option label="调压箱" value="2"></el-option>
      <el-option label="阀门井" value="3"></el-option>
      <el-option label="流量计" value="4"></el-option>
      <el-option label="值班人员" value="5"></el-option>
    </el-select> -->

    <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>
      </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";
export default {
  data() {
    return {
      gaoMap: null,
      deviceType: false,
      value: "",
      operateType: "",
      queryParams: {
        enterpriseId: null,
        pipeId: null,
        deviceName: null,
        deviceAddr: null,
        deviceModel: null,
        deviceType: null,
        longitude: null,
        latitude: null,
        iotNo: null,
        iconUrl: null,
        linkman: null,
        phone: null,
        installationTime: null,
        inspectionTime: null,
        remarks: null,
      },
      radio1: "",
      // 1新建，2编辑，3删除,点按钮变色
      targetNum: 0,
      // 左边的bar的active判定
      leftBarNum: [1, 2, 3, 4, 5],

      // 新建里的值
      iconClass: "icon-create",
      createValue: 0,
      createLabel: "新增",
      changeBtnData: [
        {
          value: 1,
          icon: "icon-gd",
          label: "管道",
        },
        {
          value: 2,
          icon: "icon-tyx",
          label: "调压箱",
        },
        {
          value: 3,
          icon: "icon-fmj",
          label: "阀门井",
        },
        {
          value: 4,
          icon: "icon-llj",
          label: "流量计",
        },
        {
          value: 7,
          icon: "icon-ylb",
          label: "压力表",
        },
      ],
      keyWord: "",
    };
  },
  mounted() {
    let gaoMap = new gaodeMap("石家庄");

    this.gaoMap = gaoMap;
    window.addEventListener("click", this.barClose);
    let path = [
      [
        [114.436698, 38.083306],
        [114.57952, 38.065468],
        [114.57952, 38.002732],
        [114.440131, 38.006519],
        [114.436698, 38.083306],
      ],
      [
        [114.528708, 38.075198],
        [114.530768, 38.00165],
      ],
    ];
    gaoMap.addMouseTool();
    gaoMap.searchTips("tipinput");
    this.getDeviceInfo();
    this.getPipeList();
  },
  methods: {
    // 左边的Bar修改值
    leftBarChange(item) {
      // this.leftBarNum= this.leftBarNum != item.value ? item.value:0;
      const index = this.leftBarNum.indexOf(item.value);
      if (index >= 0) {
        this.leftBarNum.splice(index, 1);
      } else {
        this.leftBarNum.push(item.value);
      }
    },
    addDevice() {
      if (this.iconClass == "icon-create") {
        this.targetNum = this.targetNum != 1 ? 1 : 0;
      } else {
        if (this.deviceType) {
          this.targetNum = 0;
          this.createReset();
        }
      }
      if (this.targetNum == 1 && this.createValue == 1) {
        this.gaoMap.lineType = 1;
      }
      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;
        this.gaoMap.createNewLine();
      }else {
        this.gaoMap.draw(this.createValue.toString());
      }
    },
    // 新建按钮还原
    createReset() {
      this.iconClass = "icon-create";
      this.createValue = 0;
      this.createLabel = "新建";
    },
    editDevice() {
      this.targetNum = this.targetNum != 2 ? 2 : 0;
      this.gaoMap.lineType = this.targetNum;
      console.log(this.gaoMap.lineType);
      if (this.targetNum != 2) {
        this.gaoMap.linePolyEditorAllClose();
      }
      this.createReset();
      // 如果正在新建线条，则清空
      this.gaoMap.newLineReset();
      this.deviceType = false;
      this.gaoMap.mapOperateType = "edit";
      this.gaoMap.addMarkerDragg();
      this.gaoMap.placeSearch.clear();
      this.gaoMap.closeAddMarker();
    },
    deleteDevice() {
      this.targetNum = this.targetNum != 3 ? 3 : 0;
      this.gaoMap.lineType = this.targetNum;
      // 如果正在新建线条，则清空
      this.gaoMap.newLineReset();
      this.createReset();
      this.deviceType = false;
      this.gaoMap.mapOperateType = "delete";
      this.gaoMap.removeMarkerDragg();
      this.gaoMap.placeSearch.clear();
      this.gaoMap.closeAddMarker();
    },
    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() {
      this.loading = true;
      getAllDeviceInfo(this.queryParams).then((response) => {
        if (response.code == 200) {
          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() {
      pipeAllInfoList().then((res) => {
        console.log("管道", res);
        if (res.code == 200) {
          this.gaoMap.addPolyline(res.data);
        }
      });
    },
    search() {
      this.gaoMap.placeSearch.clear();
      this.gaoMap.placeSearch.search(this.keyWord);
    },
    // 新建下拉列表关闭
    barClose() {
      console.log("window");
      this.deviceType = false;
      // 如果没有选择的时候点window 则高亮消失
      if (this.targetNum == 1 && this.iconClass == "icon-create") {
        this.targetNum = 0;
      }
      // 辅助新建重新画线
      if (!this.gaoMap.lineFlag) return;
      this.gaoMap.lineFlag = false;
      this.gaoMap.createNewLine();
    },
  },

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


<style lang="scss" scoped>
// 左边的bar
.leftBar-wrapper {
  position: fixed;
  left: 100px;
  top: 100px;
  .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;
    &:hover {
      background-color: #053b6a;
      color: #ffffff;
    }
    &:hover .left,
    &:hover .right {
      color: #ffffff;
    }
    &.active {
      background-color: #053b6a;
      .left,
      .right {
        color: #ffffff;
      }
    }
    .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: absolute;
  top: 100px;
  left: 2%;
  width: 240px;
}
.search-but {
  position: absolute;
  top: 100px;
  left: 19%;
  width: 85px;
  color: white;
  background-color: #053b6a;
}
</style>

