<template>
  <div>

    <div v-if="showMapp">
      <el-form :inline="true" :model="queryParams" class="demo-form-inline">

        <el-form-item label="围栏名称">
          <el-input v-model="queryParams.fenceName" placeholder="模糊查询围栏名称"></el-input>
        </el-form-item>

        <el-form-item label="围栏类型">
          <el-select v-model="queryParams.fenceTypeId" placeholder="请选择围栏类型">
            <el-option label="驶出" value="1">驶出</el-option>
            <el-option label="驶入" value="2">驶入</el-option>
          </el-select>
        </el-form-item>

        <el-form-item label="围栏状态">
          <el-select v-model="queryParams.fenceState" placeholder="请选择围栏状态">
            <el-option label="正常" value="1">正常</el-option>
            <el-option label="停用" value="2">停用</el-option>
          </el-select>
        </el-form-item>

        <el-form-item>
          <el-button type="primary" @click="onSubmit" icon="el-icon-search">搜索</el-button>
        </el-form-item>
      </el-form>

      <el-button type="primary" plain icon="el-icon-plus" @click="fencadd">新增</el-button>

      <el-table :data="fenceList" style="width: 100%"  ref="multipleTable">

        <el-table-column label="围栏名称" align="center" prop="fenceName" />

        <el-table-column label="围栏类型"
          width="180">
          <template slot-scope="scope">
            <span style="margin-left: 10px" v-if="scope.row.fenceTypeId==1">驶出</span>
            <span style="margin-left: 10px" v-if="scope.row.fenceTypeId==2">驶入</span>
          </template>
        </el-table-column>

        <el-table-column label="围栏状态"
          width="180">
          <template slot-scope="scope">
            <span style="margin-left: 10px" v-if="scope.row.fenceState==1"><el-tag>正常</el-tag></span>
            <span style="margin-left: 10px" v-if="scope.row.fenceState==2"><el-tag>停用</el-tag></span>
          </template>
        </el-table-column>

        <el-table-column label="经纬度信息" width="280">
          <template slot-scope="scope">
            <span style="margin-left: 10px">{{ scope.row.fenceMessage }}</span>
          </template>
        </el-table-column>


        <el-table-column label="操作">
          <template slot-scope="scope">
            <el-link type="primary" icon="el-icon-map-location" @click="handleWdit(scope.row)">编辑围栏</el-link>

            <el-link type="primary" icon="el-icon-edit" @click="handleEdit(scope.row)">编辑</el-link>

            <el-link type="primary" icon="el-icon-delete"  @click="handleDelete(scope.row.fenceId)">删除</el-link>
          </template>
        </el-table-column>
      </el-table>

      <pagination
        v-show="total>0"
        :total="total"
        :page.sync="queryParams.pageNum"
        :limit.sync="queryParams.pageSize"
        @pagination="getList"
      />


      <!--    围栏添加-->
      <el-dialog :title="title" :visible.sync="dialogFormVisible">

        <el-form :model="fences">

          <el-form-item label="围栏名称" :label-width="formLabelWidth">
            <el-input v-model="fences.fenceName" autocomplete="off"></el-input>
          </el-form-item>


          <el-form-item label="围栏类型" :label-width="formLabelWidth">
            <el-select v-model="fences.fenceTypeId" placeholder="请选择活动区域">
              <el-option label="驶出" value="1">驶出</el-option>
              <el-option label="驶入" value="2">驶入</el-option>
            </el-select>
          </el-form-item>

        </el-form>

        <div slot="footer" class="dialog-footer">
          <el-button @click="dialogFormVisible = false">取 消</el-button>
          <el-button type="primary" @click="addAll">新增</el-button>
        </div>
      </el-dialog>


      <!--    修改电子围栏-->
      <el-dialog :title="title" :visible.sync="dialogFormVisible1">

        <el-form :model="fences">
          <el-form-item label="围栏名称" :label-width="formLabelWidth1">
            <el-input v-model="fences.fenceName" autocomplete="off"></el-input>
          </el-form-item>

          <el-form-item label="围栏类型" :label-width="formLabelWidth1">
            <el-select v-model="fences.fenceTypeId" placeholder="请选择活动区域">
              <el-option label="驶出" value="1">驶出</el-option>
              <el-option label="驶入" value="2">驶入</el-option>
            </el-select>
          </el-form-item>

          <el-form-item label="围栏状态">
            <el-radio-group v-model="fences.fenceState" :label-width="formLabelWidth1">
              <el-radio :label="1">正常</el-radio>
              <el-radio :label="2">停用</el-radio>
            </el-radio-group>
          </el-form-item>
        </el-form>

        <div slot="footer" class="dialog-footer">
          <el-button @click="dialogFormVisible = false">取 消</el-button>
          <el-button type="primary" @click="updateAll">修 改</el-button>
        </div>
      </el-dialog>

    </div>
    <el-button @click="drawPolygon">绘制围栏</el-button>
<!--    <el-button @click="saveFenceData">保存围栏</el-button>-->
    <el-button @click="cleanFence">清除围栏</el-button>

    <div id="container" v-if="showMap"></div>



  </div>

</template>

<script>
import AMapLoader from '@amap/amap-jsapi-loader';
//这里可以导入其他文件（比如：组件，工具js，第三方插件js，json文件，图片文件等等）,
//例如：import 《组件名称》 from '《组件路径》,
import {fenceAdd, fenceDelete, fenceList, fenceUpdate, fenceUpdateMap} from "@/api/system/fence";
import mouseTool from "quill";
export default {
  name: "map-view",
  //生命周期 - 挂载完成（可以访问DOM元素）",
  mounted() {
    this.initAMap();
  },
  //import引入的组件需要注入到对象中才能使用"
  components: {},
  props: {},
  data() {
    //这里存放数据"

    return {
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        fenceName: null,
        fenceTypeId: null,
        fenceState: null,
      },
      total:0,
      dialogFormVisible:false,
      formLabelWidth:'120px',
      fences:{

      },
      title:'',
      dialogFormVisible1:false,
      formLabelWidth1:'120px',
      dj:false,
      mouseTool:null,
      map:null,
      Amap:null,

      //跳转地图页面
      showMap:false,
      showMapp:true,

      fenceList: [],

      //保存围栏
      mapRequest:{
        fenceId:0,
        jwd:[]
      }

    };
  },
  //计算属性 类似于data概念",
  computed: {},
  //监控data中的数据变化",
  watch: {},
  //方法集合",
  methods: {
    //获取围栏列表
    getList() {
      this.loading = true;
      fenceList(this.queryParams).then(res => {
        this.fenceList = res.data.rows;
        this.total = res.data.total;
        this.loading = false;
      });
    },
    // 搜索框
    onSubmit() {
      this.getList()
    },

    //修改电子围栏
    handleEdit(obj) {
      this.dialogFormVisible1 = true
      this.fences = obj
      this.title = '修改电子围栏'

    },


    updateAll() {
      fenceUpdate(this.fences).then(
        res => {
          this.$message.success(res.msg)
          this.getList()
        }
      )
      this.dialogFormVisible1=false;
    },
    //新增
    fencadd() {
      this.fences = {}
      this.dialogFormVisible = true
      this.title = '新增页面'
    },


    addAll() {
      fenceAdd(this.fences).then(
        res => {
          this.$message.success(res.msg)
          this.getList()
        }
      )
      this.dialogFormVisible = false
    },


    //删除电子围栏
    handleDelete(fenceId){
      fenceDelete(fenceId,'deleted').then(
        res=>{
          this.$message.success(res.msg)
          this.getList()
        }
      )
    },


    //编辑围栏
    handleWdit(obj) {
      this.showMap=true
      this.showMapp=false
      this.fences = obj
      this.initAMap()
    },


    //初始化地图
    initAMap(){

      AMapLoader.load({
        key:"1666544c7b614ba063b4c58d5c148248",
        version:"2.0",
        plugins:["AMap.Scale","AMap.MouseTool"],
      })
        .then((AMap)=>{
          this.Amap=AMap;
          this.map=new AMap.Map("container",{
            //设置地图容器ID
            viewMode:"2D",
            zoom:11,
            center: [116.397428, 39.90923],
          });

          this.mouseTool=new AMap.MouseTool(this.map);
          this.mouseTool.on('draw', this.drawReady)
        })
        .catch((e)=>{
          console.log(e);
        });
    },

    drawPolygon () {
      this.mouseTool.polygon({
        strokeColor: "#FF33FF",
        strokeOpacity: 1,
        strokeWeight: 6,
        strokeOpacity: 0.2,
        fillColor: '#1791fc',
        fillOpacity: 0.4,
        // 线样式还支持 'dashed'
        strokeStyle: "solid",
        // strokeStyle是dashed时有效
        strokeDasharray: [30,10],
      })
    },

    // 在 drawReady 方法中获取绘制的围栏的经纬度信息
    drawReady(event){
      console.log(event)
      console.log(event.obj.getPath())
      const coordinates = event.obj.getPath()

      const coordinatesString = coordinates.map(coord => `${coord.lng},${coord.lat}`).join(';');
      console.log(coordinatesString);
      this.fences.fenceMessage = coordinatesString;



      console.info('覆盖物对象绘制完成')

      // // 获取绘制的围栏经纬度信息
      // const path =event.obj.getPath()
      // // 将经纬度信息保存到 scope.row.fenceMessage 中
      // this.tableData.forEach(item=>{
      //   if(item.fenceId === event.obj.fenceId){ // 假设 fenceId 是围栏的唯一标识符
      //     item.fenceMessage = path.toString();  // 这里使用 toString() 方法将路径转换为字符串形式
      //   }
      // })
      fenceUpdateMap(this.fences).then(res=>{
        // this.$modal.msgSuccess("保存成功")
        this.getList()
      })
    },


    //清除围栏
    cleanFence(){
      this.mouseTool.close(true)
    },

    // //保存围栏
    // saveFenceData(){
    //   console.log(this.mapRequest.jwd)
    //   saveFence(this.mapRequest).then(response=>{
    //     // this.$modal.msgSuccess("保存成功")
    //   })
    // },



  },

  //生命周期 - 创建完成（可以访问当前this实例）",
  created() {
    // this.list();
    this.getList();
    // this.mapRequest.fenceId=this.$router.query.fenceId
  },
  beforeCreate() {
  }, //生命周期 - 创建之前",
  beforeMount() {
  }, //生命周期 - 挂载之前",
  beforeUpdate() {
  }, //生命周期 - 更新之前",
  updated() {
  }, //生命周期 - 更新之后",
  beforeDestroy() {
  }, //生命周期 - 销毁之前",
  destroyed() {
  }, //生命周期 - 销毁完成",
  activated() {
  } //如果页面有keep-alive缓存功能，这个函数会触发",
};
</script>
<style lang="scss" scoped>
.dashboard{
  &-container{
    margin: 30px;
  }
  &-text{
    font-size:30px;
    line-height:46px;
  }
}
#container{

  padding:0px;
  margin:0px;
  width:100%;
  height:800px;
}
</style>
