<template>
  <div class="auditMap">
    <div>
      <div class="head_boxtwo" v-show="this.$route.query.isTitle != 0">
        <el-breadcrumb separator="/">
          <el-breadcrumb-item :to="{ path: '/indexPage'}">首页</el-breadcrumb-item>
          <el-breadcrumb-item>待办事件</el-breadcrumb-item>
        </el-breadcrumb>
        <div class="myBox">
          <div class="headLeft"><h4>待办事件</h4></div>
          <div class="headRight">
            <el-row>
              <el-button class="addButton" type="text" @click="rejectMsg" v-if="rejectShow">驳回</el-button>
              <el-button class="addButton a" type="primary" @click="handleBtnChange($event)">{{appro}}</el-button>
            </el-row>
          </div>
        </div>
        <div class="myMsg">
          <div class="msgLift">
            <el-col :span="9">
              <div class="mymsgTOP">&nbsp;&nbsp;<span class="myColor">创建人:</span><span>{{myName}}</span></div>
              <div><span class="myColor">创建时间:</span><span>{{craetionTime | formatDate}}</span></div>
            </el-col>
            <el-col :span="9">
              <div class="mymsgTOP">&nbsp;&nbsp;<span class="myColor">修改人:</span><span>{{hisName}}</span></div>
              <div><span class="myColor">修改时间:</span><span>{{modifiTime | formatDate}}</span></div>
            </el-col>
            <el-col :span="6" v-if="!rejectShow">
              <div><span class="myColor">驳回原因:</span><span>{{rejectReason}}</span></div>
            </el-col>
          </div>
          <div class="msgRight">
            <div>状态</div>
            <div class="msgRight_top">{{stateNow}}</div>
          </div>
        </div>
      </div>
      <div class="head_boxtwo" v-show="this.$route.query.isTitle == 0">
        <el-breadcrumb separator="/">
          <el-breadcrumb-item >内容管理</el-breadcrumb-item>
          <el-breadcrumb-item :to="{ path: '/serviceDirectoryPage'}">网点服务地图</el-breadcrumb-item>
          <el-breadcrumb-item>详情</el-breadcrumb-item>
        </el-breadcrumb>
        <div class="headLeft"><h4>详情</h4></div>
        <div class="myMsg">
          <div class="msgLift">
            <el-col :span="9">
              <div class="mymsgTOP">&nbsp;&nbsp;<span class="myColor">创建人:</span><span>{{myName}}</span></div>
              <div><span class="myColor">创建时间:</span><span>{{craetionTime | formatDate}}</span></div>
            </el-col>
            <el-col :span="9">
              <div class="mymsgTOP">&nbsp;&nbsp;<span class="myColor">修改人:</span><span>{{hisName}}</span></div>
              <div><span class="myColor">修改时间:</span><span>{{modifiTime | formatDate}}</span></div>
            </el-col>
            <el-col :span="6" v-if="!rejectShow">
              <div><span class="myColor">驳回原因:</span><span>{{rejectReason}}</span></div>
            </el-col>
          </div>
        </div>
      </div>
      <div class="content_boxtwo">
      <div class="form_box h778px">
        <div class="myWord">信息</div>
        <div class="myOnly">
          <div class="myonlyFirst">
            <div><span class="myColor">网点名称:</span><span>{{activity}}</span></div>
          </div>
          <div class="myonlyThird" v-show="this.$route.query.isTitle != 0"><span class="myColor">类别:</span><span>{{category}}</span></div>
        </div>
        <div class="line"></div>
        <div class="myWord">
          <div class="mymap">
            <div class="map_content_left">
              <div class="scrool">
                <div>
                  <el-table :data="hotSpotList" stripe style="width: 300px; height:calc(100% - 50px)"
                            @dblclick="toggleSelection(props.row,feature)">
                    <el-table-column prop="name" label="热点名称"></el-table-column>
                    <el-table-column label="操作" header-align="center" align="center">
                      <template slot-scope="scope">
                        <el-button-group>
                          <el-button title="定位" size="mini" type="text" @click="setMapCenterByFeature(scope.row)">定位</el-button>
                        </el-button-group>
                      </template>
                    </el-table-column>
                  </el-table>
                </div>
              </div>
            </div>
            <div class="map_content_right">
              <div id="map"></div>
              <div id="popup" class="ol-popup portlet box">
                <div class="portlet-title">
                  <div class="caption">
                    <i class="icon icon-info-20"></i>
                    <span class="caption-subject" v-show="hotSpot.type == POINT_TYPE">热点</span>
                    <span class="caption-subject" v-show="hotSpot.type == POLYGON_TYPE">热区</span>
                  </div>
                  <div class="actions">
                    <a href="#" id="popup-closer" class="ol-popup-closer"></a>
                  </div>
                </div>
                <div id="popup-content">
                  <el-row>
                    <el-form ref="form" :model="form" label-width="90px">
                      <el-col :span="24">
                        <el-form-item label="热点名称" v-show="hotSpot.type == POINT_TYPE" prop="name">
                          <el-input placeholder="请输入热点名称" size="mini" v-model="hotSpot.name" class="hotSpotNum"></el-input>
                        </el-form-item>
                        <el-form-item label="热区名称" v-show="hotSpot.type == POLYGON_TYPE" prop="name">
                          <el-input placeholder="请输入热区名称" size="mini" v-model="hotSpot.name" class="hotSpotNum"></el-input>
                        </el-form-item>
                      </el-col>
                      <el-col :span="24" >
                        <el-form-item label="热区说明" v-show="hotSpot.type == POLYGON_TYPE">
                          <el-input  size="mini" type="textarea" :rows="2"   placeholder="请输入对该热区的描述"  v-model="hotSpot.note"></el-input>
                        </el-form-item>
                        <el-form-item label="上传图标" v-show="hotSpot.type == POINT_TYPE" >
                          <el-upload class="avatar-uploader" name="headMap" style="height: 70px" action="" :show-file-list="false"
                                     :http-request="addPointImage"
                                     accept="image/gif, image/jpeg, image/png">
                            <img v-if="hotSpot.imageUrl" :src="hotSpot.imageUrl" class="avatar" style="width: 70px;height: 70px">
                            <i v-else class="el-icon-plus avatar-uploader-icon"></i>
                          </el-upload>
                        </el-form-item>
                      </el-col>
                    </el-form>
                  </el-row>

                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
    </div>
  </div>
</template>

<script>
  import {ColorChange} from '../../js/front/colorChange';
  import {createMap} from '../../js/front/map';
  import {startDataClass} from '../../js/front/getData';
  import {startDraw} from '../../js/front/drawFeature';
  import {FeatureStyle} from '../../js/front/FeatureStyle'
  import {ChangeBaseLayer} from '../../js/front/ChangeBaseLayer';
  import {Measure} from '../../js/tools/Measure';

  let mapControl;
  let maoObj;
  let drawFeatureObj;
  let editFeatureStyle;
  let changeBaseLayer;
  let measure;

  export default {
    data() {
      return {
        appro: "",
        status: "",
        rejectReason: '',
        rejectShow: true,
        myName: '',
        hisName: '',
        craetionTime: '',
        modifiTime: '',
        stateNow: '',
        blank: '',
        category: '',
        process: '',
        activity: '',
        hotSpot: {
          id: null,
          type: "",// 1 ,2点还是面
          bankBranchId: null,
          name: "",
          note: "",
          coordinate: "",
          width: "",
          height: "",
          rotationAngle: "",
          imageUrl: ""  //图标地址
        },

        tempImageLayer: null,
        POINT_TYPE: 'Point',
        POLYGON_TYPE: 'Polygon',
        hotSpotList: [],
        form: {
          id: null,
          name: "",
          imageUrl: '',
          width: '',
          height: '',
          bankQrCode: '',
        },
      }
    },
    filters: {
      formatDate: function (value) {
        let date = new Date(value);
        let y = date.getFullYear();
        let MM = date.getMonth() + 1;
        MM = MM < 10 ? ('0' + MM) : MM;
        let d = date.getDate();
        d = d < 10 ? ('0' + d) : d;
        let h = date.getHours();
        h = h < 10 ? ('0' + h) : h;
        let m = date.getMinutes();
        m = m < 10 ? ('0' + m) : m;
        let s = date.getSeconds();
        s = s < 10 ? ('0' + s) : s;
        return y + '-' + MM + '-' + d;
      }
    },
    computed: {},
    mounted() {
      this.init();
    },
    components: {},
    methods: {
      init() {

        let vm = this;

        this.auditEdit();
        let colorChange = ColorChange();
        maoObj = createMap();
        mapControl = startDataClass(maoObj, this);
        drawFeatureObj = startDraw(maoObj, this);
        changeBaseLayer = new ChangeBaseLayer(vm, maoObj);
        measure = new Measure(vm, maoObj);
        editFeatureStyle = new FeatureStyle(this, maoObj);
        editFeatureStyle.setToken(vm.backToken);
        drawFeatureObj.setCilckCallBack(function (type, fe, event) {
          editFeatureStyle.popupWindow(type, event, fe)
        });
      },
      //上传图标
      addPointImage(file) {
        let vm = this;
        vm.createReader(file.file);
        vm.handleUpload(file.file).then(function (response) {
          vm.hotSpot.imageUrl = response.data.url;
          vm.changeImageStyle();
        }).catch(() => {
          this.$message({
            type: 'info',
            message: '已取消'
          });
        });

      },
      //获取feature数据信息
      getFeatureList(isResh) {
        let vm = this;
        editFeatureStyle.getFeaturePageByLayerId(this.$route.query.id, {}, function (data) {
          vm.hotSpotList = data;
          if (!isResh) {
            let layerData = {};
            layerData.id = vm.form.id;
            layerData.featureList = data
            vm.addLayerOnView(layerData);
          }

        });

      },

      //绘制
      drawFeature(type) {
        let vm = this;
        vm.clearn();
        vm.hotSpot.type = type;
        drawFeatureObj.addInteraction(type, function () {
          editFeatureStyle.closePopupWindow();
        });
      },
      changeImageStyle() {
        //调用修改属性值方法
        editFeatureStyle.setFeatureStyle();
      },
      rejectMsg() {
        this.$prompt('', '驳回', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          inputPlaceholder: '请输入驳回原因',
          showInput: true
        }).then(({value}) => {
          let _this = this;
          if(!value || value ==" "){
            _this.$message({
              type: 'error',
              message: "驳回理由不能为空!"
            });
          }else{
            let param = {
              id: _this.$route.query.id,
              rejectReason: value,
              status: _this.status,
            };
            _this.$https({
              method: 'put',
              url: 'bankBranchInfo/reject',
              authType: this.backToken
            }, _this.$qs.stringify(param)).then((res) => {
              if (res.data.status == 201) {
                _this.$message({
                  type: 'success',
                  message: res.data.message
                });
                _this.$router.push('/indexPage');
              } else {
                _this.$message({
                  type: 'error',
                  message: res.data.message
                });
              }
              }, (error) => {
                console.log(error)
              }
            )
          }
        }).catch(() => {
          this.$message({
            type: 'info',
            message: '取消输入'
          });
        });
      },
      handleBtnChange (ev) {
        let btnName = ev.currentTarget.innerText;
        switch (btnName) {
          case '通过(上线)':
            this.passMsg();
            break;
          case '通过(下线)':
            this.passMsg();
            break;
          case '重新编辑':
            this.$router.push({
              path: '/hotSpotManage',
              query:{pId: this.$route.query.id}
            });
            break;
          case '再次申请下线':
            this.handleLine();
            break;
          default:
            break;
        }
      },
      passMsg() {
        let _this = this;
        let param = {
          id: _this.$route.query.id,
          status: _this.status,
        };
        _this.$https({
          method: 'put',
          url: 'bankBranchInfo/approved',
          authType: this.backToken
        }, _this.$qs.stringify(param)).then((res) => {
            if (res.data.status == 201) {
              _this.$message({
                type: 'success',
                message: res.data.message
              });
              _this.$router.push('/indexPage');
            } else {
              _this.$message({
                type: 'error',
                message: res.data.message
              });
            }
          }, (error) => {
            console.log(error)
          }
        )
      },
      handleLine() {
        let _this = this;
          this.$confirm('是否再次申请下线当前网点服务地图?', '提示', {
            confirmButtonText: '确定',
            cancelButtonText: '取消',
            type: 'warning',
          }).then(() => {
            _this.$https({
              method: 'put',
              url: 'bankBranchInfo/applyOffline?id='+ _this.$route.query.id,
              authType: this.backToken
            }).then((res) => {
                _this.onSearch();
                if(res.data.status == 201){
                  this.$message({
                    type: 'success',
                    message: res.data.message
                  });
                  _this.$router.push('/indexPage');
                }
              }, (error) => {
                this.$message({
                  type: 'fail',
                  message: res.data.message
                });
              }
            )
          }).catch(() => {
            this.$message({
              type: 'info',
              message: '已取消此操作'
            });
          });


      },
      auditEdit() {
        this.category = this.$route.query.typeName;
        let _this = this;
        let param = {id: _this.$route.query.id};
        _this.$https({
          method: 'get',
          url: 'bankBranchInfo/getById',
          authType: this.backToken
        }, param).then((res) => {
          if (res.status == 200) {
            _this.form = res.data;
            if (_this.form.imageUrl) {
              _this.changeMapBaseLayerMap(_this.form);
            }
            _this.getFeatureList(false); //先根据id 去获取基本信息 然后再根据id 获取热点列表
          }
          if (res.data.isShow == 2) {
            _this.appro = "通过(上线)";
            _this.stateNow = "审批上线";
          } else if (res.data.isShow == 3) {
            _this.appro = "通过(下线)";
            _this.stateNow = "审批下线";
          }else if(res.data.isShow == 1) {
            _this.appro = "重新编辑";
            _this.stateNow ="上线被驳回";
            _this.rejectShow = false;
          }else if(res.data.isShow == 6) {
            _this.appro = "再次申请下线";
            _this.stateNow ="下线被驳回";
            _this.rejectShow = false;
          }
           _this.status = res.data.isShow;
            _this.activity = res.data.name;
            _this.blank = res.data.name;
            _this.craetionTime = res.data.createTime;
            _this.modifiTime = res.data.updateTime;
            _this.myName = res.data.creatorName;
            _this.hisName = res.data.modifierName;
            _this.process = res.data.headImage;
            _this.rejectReason = res.data.rejectReason
          if (res.data.imageUrl) {
              _this.changeMapBaseLayerMap(_this.form);
            }
          }, (error) => {
            console.log(error)
          }
        )
      },
      changeMapBaseLayerMap(data) {
        let extent = [0, 0, Number(this.form.width) / 1000, Number(this.form.height) / 1000,];
        if (data.imageUrl) {
          data.url = data.imageUrl;
          this.flag = false;
        }
        this.tempImageLayer = changeBaseLayer.setImageLayer(extent, data.url, this.tempImageLayer);
        maoObj.setCenterAndZoom([Number(this.form.width) / 2000, Number(this.form.height) / 2000], 9);
      },
      createReader(file) {
        let vm = this;
        var reader = new FileReader;
        reader.onload = function (evt) {
          var image = new Image();
          image.onload = function () {
            var width = this.width;
            var height = this.height;
            vm.form.width = width;
            vm.form.height = height;
          };
          image.src = evt.target.result;
        };
        reader.readAsDataURL(file);
      },
      getParm() {
        let subject = {};
        subject = JSON.parse(JSON.stringify(this.hotSpot));
        subject.coordinate = editFeatureStyle.getWkt();
        subject.bankBranchId = this.form.id;
        return subject;
      },
      cancel() {
        // 清除数据
        let vm = this;
        let modifyFe = editFeatureStyle.getFeature();
        if (modifyFe && modifyFe.getId() && modifyFe.get('data')) {
          //属于修改的部分
          let data = modifyFe.get('data');
          editFeatureStyle.deleteFeatureFromLayer(data.id, data.layerId, function () {
            drawFeatureObj.cleanModifyOrDraw();//删除之后清空绘制的地图  这个方法不需要提示
            editFeatureStyle.closePopupWindow();
            //从图层中移除数据
            changeBaseLayer.removeFeatureFromLayer(data.layerId, data.id);
            vm.$refs.controlPanel.refreshLayerData(data.layerId);
          })
        } else {
          //自定义编辑部分
          drawFeatureObj.cleanAllFeature(function () {
            //关闭弹出框
            editFeatureStyle.closePopupWindow();
          });
        }
      }
      ,
      setMapCenterByFeature(featureItem) {
        changeBaseLayer.getFeatureById(this.$route.query.id, featureItem.id);
      },
      //热点底图
      addLayerOnView(data) {
        let vm = this;
        changeBaseLayer.changeLayerVisable(data, true, function (event, feature, layerName) {
          editFeatureStyle.popupModifyFeature(event, feature);//沿用开始I编辑的和后面做区分
        });
      },

    },
  }
</script>

<style lang="less">
  @import '../../style/common';

  .auditMap {
    width: 100%;
    height: calc(100% - 0px);
    overflow-x: hidden;
    overflow-y: scroll;
    .head_boxtwo {
      padding: 20px 30px 20px 20px!important;
      h6 {
        font-size: 14px;
        font-weight: 400;
        color: rgba(0, 0, 0, 0.65);
        padding: 5px 0px 13px;
      }
      h4 {
        font-size: 20px;
        font-weight: 500;
        color: rgba(0, 0, 0, 0.85);
      }
      .myBox {
        width: 100%;
        display: flex;
        justify-content: space-between;
        .headLeft {
          width: 10%;
        }
        .headRight {
          .el-button--text {
            color: rgba(0, 0, 0, 0.6);
            border: 1px solid #dcdfe6;
          }
          .addButton {
            width: 47px;
            height: 26px;
            padding: 0;
            text-align: center;
            line-height: 26px;
            font-size: 23px;
          }
          .addButton.a {
            width: 85px;
          }
          .el-button {
            text-align: center;
            font-size: 12px;
            line-height: 20px;
          }
          .el-button span {
            font-size: 12px;
          }
        }
      }
      .myMsg {
        width: 100%;
        margin-top: 18px;
        display: flex;
        justify-content: space-between;
        .msgLift {
          width: 80%;
          display: flex;
          justify-content: space-between;
          .myColor {
            display: inline-block;
            color: black;
            width: 70px;
            text-align: right;
          }
          .mymsgTOP {
            margin-bottom: 10px;
            span.myColor {
              width: 63px;
            }
          }
        }
        .msgRight {
          text-align: right;
          div {
            font-size: 14px;
            font-weight: 400;
            color: rgba(0, 0, 0, 0.45);
          }
          div.msgRight_top {
            margin-top: 5px;
            font-size: 16px;
            font-weight: 600;
            color: rgba(0, 0, 0, 0.85);
          }
        }
      }
    }
    .content_boxtwo {
      width: 100%;
      height: 100%;
      background: #F0F2F5;
      /*padding: 24px 24px 0;*/
      border: 1px solid transparent;
      .form_box {
        margin-bottom: 0px;
        background: #fff;
        .myWord {
          font-weight: 600;
          font-size: 18px;
          .mymap{
            height: 500px;
            width: 100%;
            .map_content_left {
              display: inline-block;
              float: left;
              width: 300px;
              height: calc(100% - 20px);
              border-top-left-radius: 4px;
              border-bottom-left-radius: 4px;
              background-color: #fff;
              .scrool {
                width: 100%;
                height: 100%;
                overflow-x: hidden;
                overflow-y: scroll;
              }
            }
            .map_content_right {
              position: relative;
              display: inline-block;
              width: calc(100% - 300px);
              height: calc(100% - 20px);
              border-top-right-radius: 4px;
              border-bottom-right-radius: 4px;
              background: url("../../../static/images/map-background.jpg");
              #map{
                width: 100%;
                height: 100%;
                background: url("../../../static/images/map-background.jpg") repeat;
                .ol-overlaycontainer-stopevent .ol-overlay-container.ol-selectable{
                  #popup { /*窗体*/
                      width: 374px;
                      /*height: 240px;*/
                    background: #fff;
                    border-radius: 4px;
                    .portlet-title{
                      height: 40px;
                      line-height: 40px;
                      padding-left: 10px;
                      background-color: #409EFF;
                      border-bottom: 1px solid #E9E9E9;
                    }
                    #popup-content {
                      .el-row{
                        .el-form {
                          .el-col-24{
                            padding: 0px 20px 10px;
                          }
                          .el-col-24:nth-child(1){
                            padding-top: 10px;
                          }
                          .el-form-item {
                            margin-bottom: 10px;
                            width: 100%;
                            .el-form-item__content{
                              width: calc(100% - 90px);
                              .avatar-uploader .el-upload {
                                width: 70px;
                                height: 70px;
                                border: 1px dashed #d9d9d9;
                                border-radius: 6px;
                                cursor: pointer;
                                position: relative;
                                overflow: hidden;
                                .el-icon-plus.avatar-uploader-icon {
                                  line-height: 5;
                                }
                              }
                            }
                          }
                          .el-input__inner {
                            height: 32px;
                          }
                          .el-upload--picture-card {
                            width: 468px;
                            height: 270px;
                            line-height: 270px;
                          }
                        }
                        .dialog-footer {
                          text-align: center;
                          .el-button {
                            padding: 6px 13px;
                          }
                        }

                      }
                      /*.el-input-number--mini {*/
                      /*width: 105px;*/
                      /*}*/
                      /*.el-input-number--mini .el-input-number__decrease, .el-input-number--mini .el-input-number__increase {*/
                      /*height: 30px;*/
                      /*}*/


                      /*.el-row .el-form .el-col .el-form-item .el-form-item__content{*/
                      /*width: 70%;*/
                      /*}*/


                    }
                  }
                }
              }
              .btn_group {
                position: absolute;
                bottom: 10px;
                right: 20px;
                .avatar-uploader {
                  display: inline-block
                }
              }
            }
          }

        }
        .myOnly {
          width: 80%;
          display: flex;
          justify-content: space-between;
          margin-top: 10px;
          .myColor {
            color: black;
          }
          .myonlyFirst {
            .myfirstOne {
              margin-top: 20px;
              display: flex;
              align-items: center;
              .myImg {
                width: 100px;
                height: 100px;
              }
            }
          }
          .myonlySecond {
            .myfirstOneoo {
              margin-top: 15px;
            }

            .myColortwo {
              display: inline-block;
              width: 80px;
              height: 16px;
            }
          }
          .myonlyThird {
            .myonlyThirdone {
              margin-top: 20px;
              .myColoro {
                color: #0000cc;
              }
            }
          }
        }
        .line {
          width: 100%;
          height: 1.5px;
          background: #eeeeee;
          margin-top: 10px;
        }
      }

    }

  }


</style>