tongshanglei 3 роки тому
батько
коміт
c490a01bda

+ 0 - 618
src/views/map/alarmMap.vue

@@ -1,618 +0,0 @@
-<template>
-  <baidu-map class="bm-view" :center="center" :zoom="zoom" @ready="init">
-    <bm-map-type :map-types="['BMAP_NORMAL_MAP', 'BMAP_HYBRID_MAP']" anchor="BMAP_ANCHOR_TOP_RIGHT"></bm-map-type>
-    <bm-control :offset="searchControlOffset">
-      <div id="searchbox">
-        <div id="searchbox-container">
-          <div id="sole-searchbox-content" class="searchbox-content">
-            <input
-              id="sole-input"
-              class="searchbox-content-common"
-               v-model="queryParam.active_rfid"
-              type="text"
-              name="word"
-              autocomplete="off"
-              maxlength="256"
-              placeholder="请输入设备号"
-              value
-            />
-          </div>
-        </div>
-        <el-button type="info" id="search-button" @click="startSearch" >搜索</el-button>
-      </div>
-    </bm-control>
-    <bm-control anchor="BMAP_ANCHOR_TOP_RIGHT" :offset="listControlOffset">
-      <el-button id="toggleListBtn" @click="toggleTabs" :icon="'el-icon-d-arrow-'+toggleIcon"></el-button>
-          <div id="list-container" v-show="showTabs">
-              <div id="student-container">
-              <el-table
-                ref="singleTable"
-                :data="data"
-                @row-click="clickStudentRow"
-                highlight-current-row
-                style="width: 100%">
-                <el-table-column
-                  type="index"
-                  width="40"
-                  align="center">
-                </el-table-column>
-               
-                <el-table-column label="用户姓名" prop="realname" align="center" />
-                <el-table-column
-                  prop="imei"
-                  align="center"
-                  width="130"
-                  label="设备编号">
-                  <template slot-scope="scope">
-                     {{ scope.row.imei || scope.row.rfid }}
-                  </template>
-                </el-table-column>
-                <el-table-column label="告警类型" width="140" prop="alarm_reason" align="center"  >
-                  <template slot-scope="scope">
-                      <!-- <span v-for="(item,key) in scope.row.alarm_reason_list" :key="key">{{item.text}} </span> -->
-                      <el-tag  v-for="(item,key) in scope.row.alarm_reason_list" :key="key" effect="dark" :color='alarmReasonList[item.value]' >{{item.text}}</el-tag>
-                  </template>
-                </el-table-column>
-                <el-table-column label="告警时间"  width="140" prop="last_online_time" align="center" />
-                <el-table-column label="操作" align="center" fixed="right" >
-                <template slot-scope="device">
-                    <el-button type="primary" icon="el-icon-edit" @click="handleAlarm(device.row)" />
-                </template>
-                </el-table-column>
-              </el-table>
-            </div>
-            <div><el-pagination
-              background
-              class="pagination-container"
-              @size-change="handleSizeChange"
-              @current-change="handleCurrentChange"
-              :current-page="paginate.current"
-              
-              :page-sizes="paginate.sizes"
-              :page-size="paginate.limit"
-              layout="slot, prev, pager, next, total"
-              :total="paginate.total"/></div>
-          </div>
-            
-             
-     
-    </bm-control>
-    <!-- <bm-marker :position="{lng: 120.197113, lat: 30.196912}"  @click="infoWindowOpen" :icon="{url: 'https://rlfd.oss-cn-hangzhou.aliyuncs.com/wxt_school/student.png',imageSize:{width:36, height: 36}, size: {width:150, height: 150}}"></bm-marker> -->
-    <!-- <bm-info-window :position="{lng: 120.197113, lat: 30.196912}" :show="show" @close="infoWindowClose" @open="infoWindowOpen">我爱北京天安门</bm-info-window> -->
-      <rfid-dialog
-        :displayVisible="formVisible"
-         v-if="formVisible"
-        @formCancel="closeDialog"
-        :activeRfid="currentActiveRfid"
-      />
-      <gps-dialog
-        v-if="gpsFormVisible"
-        :displayVisible="gpsFormVisible"
-        @formCancel="closeGpsDialog"
-        :activeRfid="currentActiveRfid"
-      />
-       <user-info-dialog
-        v-if="userFormVisible"
-        :displayVisible="userFormVisible"
-        @formCancel="closeUserDialog"
-        :userId="currentUserId"
-      />
-      <fence-info-dialog
-        v-if="fenceDialogVisible"
-        :displayVisible="fenceDialogVisible"
-        @formCancel="closeFenceDialog"
-        :record="currentRecord"
-      />
-      <handle-dialog
-       v-if="handleFormVisible"
-        :displayVisible="handleFormVisible"
-        @formCancel="closeHandleDialog"
-        :record="currentRecord"
-      />
-      <urgent-dialog
-        v-if="ugentDialogVisible"
-        :displayVisible="ugentDialogVisible"
-        @formCancel="closeUrgentDialog"
-        :deviceId="device_id"
-      />
-
-     
-     <!-- 楼层平面图 -->
-        <!-- <el-dialog :title="currentBuildingInfo.name" fullscreen :visible.sync="visibleFloorMap" >
-            <floor-map ref="floor_map" :buildingId="currentBuildingInfo.id" :studentId="currentStudentInfo.id"/>
-        </el-dialog> -->
-        <audio id="alarm_audio" src="/media/alarm.mp3"/>
-  </baidu-map>
-    
-    
-</template>
-
-<script>
-import rlListOperate from "@/layout/rl-list-operate/rlListOperate";
-import rfidDialog from "./rfidRouteDialog";
-import gpsDialog from "./gpsRouteDialog";
-import userInfoDialog from "./userInfoDialog";
-import fenceInfoDialog from "./fenceInfoDialog";
-import handleDialog from "./handleDialog";
-// import viewAlarmDialog from "@/views/alarm/component/viewAlarmDialog"
-import $ from "jquery";
-// import handleForm from "@/views/alarm/device/handleForm";
-import urgentDialog from "./urgentDialog";
-export default {
-  mixins: [rlListOperate],
-  components:{rfidDialog,gpsDialog,userInfoDialog,fenceInfoDialog,handleDialog,urgentDialog},
-  data() {
-    return {
-      loading: false,
-      center: '',
-      url:'map/queryAlarmList',
-      alarm_data:[],
-      currentRecord:'',
-      currentUserId:'',
-      currentActiveRfid:'',
-      formVisible: false,
-      device_id:'',
-      searchControlOffset:{},
-      listControlOffset:{},
-      zoom: 13,
-      mapData: [],
-      show: false,
-      map: null,
-      infoBox: null,
-      content: "",
-      opts: null,
-      queryParam:{
-        active_rfid:''
-      },
-      showTabs:true,
-      toggleIcon: 'right',
-      currentBuildingInfo: {}, // 当前建筑信息
-      ugentDialogVisible: false,
-
-      currentStudentInfo:{},
-      visibleFloorMap: false, // 显示楼层平面图
-      gpsFormVisible:false,
-      userFormVisible:false,
-      handleFormVisible:false,
-      fenceDialogVisible:false,
-      markerList:[],
-      markerIcons: { // 覆盖物图标
-                student: 'https://rlfd.oss-cn-hangzhou.aliyuncs.com/wxt_school/student.png', 
-                student_alarm: 'https://rlfd.oss-cn-hangzhou.aliyuncs.com/wxt_school/student_alarm.png', 
-                station: 'https://rlfd.oss-cn-hangzhou.aliyuncs.com/wxt_school/polyline_station.png', 
-                offline_station:'https://rlfd.oss-cn-hangzhou.aliyuncs.com/wxt_school/offline_station.png',
-                building: 'https://rlfd.oss-cn-hangzhou.aliyuncs.com/wxt_school/building.png', 
-                school: 'https://rlfd.oss-cn-hangzhou.aliyuncs.com/wxt_school/school.png',  
-      },
-      // routeData:[],
-      // stationData:[],
-      // buildingnData:[],
-      currentRow: null,
-      alarmReasonList:[],
-    };
-  },
-  mounted(){
-    //  this.$http.get('map/queryStudentRoute').then(res=>{
-    //         console.log(res)
-    //   });
-    let params = this.$router.currentRoute.query 
-    this.queryParam.active_rfid=params.active_rfid
-    this.alarmReasonList=this.$appConfig["alarmReasonList"];
-
-  },
-  created(){
-    window.showRfidRoute=this.showRfidRoute;
-    window.showGpsRoute=this.showGpsRoute;
-    window.showRoomAddress=this.showRoomAddress;
-    window.handleAlarm=this.handleAlarm;
-    window.shwoAlarmRecord=this.shwoAlarmRecord;
-    window.showUserInfo=this.showUserInfo;
-    window.showUrgentList=this.showUrgentList;
-    window.showFenceInfo=this.showFenceInfo;
-    
-     
-  },
-  beforeDestroy() {
-    if (this.timer5) {
-      clearInterval(this.timer5); // 在Vue实例销毁前,清除我们的定时器
-    }
-
-    this.stopaudio()
-    
-  },
-  methods: {
-    init({ BMap, map }) {
-      this.map = map;
-      // 初始化地图,设置中心点坐标
-      
-      this.searchControlOffset=new BMap.Size(20, 20)
-      this.listControlOffset=new BMap.Size(0, 40)
-      // 添加鼠标滚动缩放
-      map.enableScrollWheelZoom();
-      //查询学生
-      
-      // this.queryLocationStationList()
-      // this.queryKqBuildingList()
-      this.queryFenceList()
-      this.getList()
-      this.queryLocationList()
-      this.timer5 = setInterval(() => {
-        this.getList()
-        this.queryLocationList()
-      }, 15000)
-    
-      
-    },
-
-    infoWindowClose () {
-      this.show = false
-    },
-    infoWindowOpen () {
-      this.show = true
-    },
-    cleartMarkerOverlays(){
-      for(var j = 0;j<this.markerList.length;j++) {
-        this.map.removeOverlay(this.markerList[j])  
-      }
-              
-    },
-    addMarkerPoint(data,type) {
-      
-      var myIcon;
-      Object.keys(data).forEach((k)=>{
-        let item=data[k]
-        var pt = new BMap.Point(item.longitude, item.latitude);
-        if(type=='student' && item.alarm_state>0){
-          myIcon = new BMap.Icon(this.markerIcons['student_alarm'], new BMap.Size(32, 32));
-          myIcon.setImageSize(new BMap.Size(32, 32));
-        }else{
-          myIcon = new BMap.Icon(this.markerIcons[type], new BMap.Size(32, 32));
-          myIcon.setImageSize(new BMap.Size(32, 32));
-        }
-        if(type=='station' && !item.online_time){
-          myIcon = new BMap.Icon(this.markerIcons['offline_station'], new BMap.Size(32, 32));
-          myIcon.setImageSize(new BMap.Size(32, 32));
-        }
-        var marker = new BMap.Marker(pt, {
-          icon: myIcon
-        }); // 创建标注
-        
-          
-        
-        let that=this
-        marker.addEventListener("click", function(){    
-          let content=that.createMarkerContent(item);
-          var opts = {
-            width : 370,     // 信息窗口宽度
-            enableAutoPan:false
-          }
-          var infoWindow = new BMap.InfoWindow(content,opts);  // 创建信息窗口对象       
-          this.map.openInfoWindow(infoWindow, pt); //开启信息窗口
-        });
-        this.markerList.push(marker)
-        this.map.addOverlay(marker);
-        // marker.setAnimation(BMAP_ANIMATION_BOUNCE);
-      })
-    },
-
-    handleAlarm(record){
-      this.currentRecord=record
-      this.handleFormVisible=true
-      // const row={imei:imei,creator_id:creator_id}
-      // console.log(imei,creator_id)
-      // this.currentRecord=row
-      // this.handleFormVisible=true
-    },
-    shwoAlarmRecord(imei){
-      // const query = {active_rfid:active_rfid}
-      // this.$http.post('AlarmRecords', query).then(response => {
-          this.$router.push({ path:'/alarm/AlarmReport',query:{imei}})
-      // })
-    },
-    showRfidRoute(val){
-      this.currentActiveRfid=val
-      this.formVisible=true
-    },
-    showGpsRoute(val){
-      this.currentActiveRfid=val
-      this.gpsFormVisible=true
-    },
-    closeGpsDialog(){
-      this.gpsFormVisible=false
-    },
-    showUserInfo(val){
-      this.currentUserId=val
-      this.userFormVisible=true
-    },
-    closeUserDialog(){
-      this.userFormVisible=false
-    },
-    closeUrgentDialog(){
-      this.ugentDialogVisible=false
-    },
-    closeHandleDialog(){
-      this.handleFormVisible=false
-    },
-    showFenceInfo(data){
-      this.currentRecord=data
-      this.fenceDialogVisible=true
-    },
-    closeFenceDialog(){
-      this.fenceDialogVisible=false
-    },
-    showRoomAddress(station_mac,active_rfid){
-      const query={station_mac:station_mac,active_rfid:active_rfid}
-       this.$http.get('map/queryBuildingInfo', {params: query}).then(resp => {
-            this.currentBuildingInfo = resp.data.build_info
-            this.currentStudentInfo=resp.data.student_info
-            this.visibleFloorMap = true;    
-      })
-        
-    },
-    addSingleMarker(data){
-        // 如果没有经纬度
-        if (!data.latitude || !data.longitude) {
-          this.$message.warning('暂无定位数据');
-          // return false;
-        }
-
-        var pt = new BMap.Point(data.longitude, data.latitude);
-        var opts = {
-            width : 370,     // 信息窗口宽度
-            enableAutoPan:false
-        }
-        let studentWindowContent=this.createMarkerContent(data)
-        var infoWindow = new BMap.InfoWindow(studentWindowContent,opts);  // 创建信息窗口对象 
-        this.map.openInfoWindow(infoWindow, pt); //开启信息窗口
-        this.map.centerAndZoom(pt,19);
-    },
-    createMarkerContent(data){
-        let showFenceInfo=false
-        let that=this
-        let address
-        if(data['loc_mode'] && data['loc_mode'].toLowerCase() =='wifi'){
-              address=data['address']
-              
-        }else{
-          var myGeo = new BMap.Geocoder();      
-          // 根据坐标得到地址描述    
-          myGeo.getLocation(new BMap.Point(data.longitude,data.latitude), function(result){          
-              address=result.address
-              $('#marker_address').text(address);
-          });
-        }
-        var content ='<div class="info_label">设备编号:' + (data.imei || data.rfid) + '</div>'
-        content += '<div class="info_label">剩余电量:' + data.battery_level + '%</div>'
-        content += '<div class="info_label">定位地址:<a id="marker_address">' + address + '</a></div>' 
-        content += '<div class="info_label">定位类型:' + data.loc_mode + '</div>'
-        content += '<div class="info_label">定位时间:'+data.last_online_time+'</div>'
-        content += '<div class="info_label">告警标签:'
-        for (let i=0;i<data.alarm_reason_list.length;i++)
-        {   
-            if(data.alarm_reason_list[i].value=='fence_in' ||data.alarm_reason_list[i].value=='fence_out'){
-              showFenceInfo=true;
-            }
-            content+='<span class="el-tag  el-tag--dark el-tag--small el-tag--light" style="border:0px;background-color:'+this.alarmReasonList[data.alarm_reason_list[i].value]+';">'+data.alarm_reason_list[i].text+'</span> '
-            //effect="dark" :color='alarmReasonList[item.value]'
-        }
-        content +='</div>'
-        content+='<div class="handle_btn info_label">'
-        // content+='<button onclick="showRfidRoute(\''+data.rfid+'\')" class="el-button el-button--info el-button--small">RFID轨迹</button>'
-        content+='<button onclick="showUrgentList(\''+data.id+'\')" class="el-button el-button--info el-button--small">紧急联系人</button>'
-        content+='<button onclick="handleAlarm('+JSON.stringify(data).replace(/\"/g,"'")+')" class="el-button el-button--info el-button--small">处理告警</button>'
-        content+='<button onclick="showUserInfo(\''+data.user_id+'\')" class="el-button el-button--info el-button--small">用户信息</button>'
-        if(showFenceInfo){
-          content+='<button onclick="showFenceInfo('+JSON.stringify(data).replace(/\"/g,"'")+')" class="el-button el-button--info el-button--small">围栏信息</button>'
-
-        }
-          
-        content+='</div>'
-          
-      return content
-    },
-    showUrgentList(id) {
-      this.device_id=id
-      this.ugentDialogVisible = true;
-    },
-    queryLocationList(){
-      const query = this.queryParam
-      this.$http.get("map/queryAlarmLocationList", { params: query }).then(response => {
-        this.cleartMarkerOverlays()
-
-        if(response.data.length>0){
-          this.playaudio()
-          this.addMarkerPoint(response.data,'student');
-          let center=response.data[0]
-          // 第一个学生没有轨迹则不设置中心点
-          if (!center.longitude || !center.latitude) {
-            return false;
-          }
-          this.center = new BMap.Point(center.longitude, center.latitude);
-          return true
-        }else{
-            this.center = '江苏省';
-           this.stopaudio()
-        }
-      })
-    },
-
-
-    queryFenceList(){
-      this.$http.get("map/queryFenceList").then(response => {
-        if(response.data.length>0){
-           Object.keys(response.data).forEach((k)=>{
-             this.addShapeFence(response.data[k])
-           })
-        
-        }
-      })
-    },
-    mapFresh(){
-      this.map.clearOverlays()
-      this.getList()
-      this.queryLocationList()
-      this.queryFenceList()
-    },
-    startSearch(){
-      this.map.clearOverlays()
-      this.getList()
-      this.queryLocationList()
-      this.queryFenceList()
-    },
-    clickStudentRow(row, column, event){
-      this.addSingleMarker(row)
-    },
-    clickTab() {
-      // this.handleRefresh()
-    },
-    playaudio() {
-      console.log('play');
-        var audio = document.getElementById('alarm_audio')
-        if (this.timer) {
-          clearInterval(this.timer); // 在Vue实例销毁前,清除我们的定时器
-        }
-        // audio.play()  //播放一段音频
-         this.timer=setInterval(function(){
-             audio.play()
-          }, 2000);
-				//audio.pause()  //暂停一段音频
-    },
-    stopaudio() {
-      var audio = document.getElementById('alarm_audio')
-      // audio.pause()
-			if (this.timer) {
-        clearInterval(this.timer); // 在Vue实例销毁前,清除我们的定时器
-      }
-      console.log('stop');
-      audio.pause()
-    },
-    // 添加围栏图形
-    addShapeFence(info) {
-            let fence_color = this.$appConfig.fenceColor;
-
-            let color=fence_color[info['level']]
-            var fenceOption = {
-                strokeColor: color,
-                strokeWeight: 2,
-                strokeOpacity: 0.3,
-            };
-            var fenceObj;
-            var that = this;
-            let fence_info=JSON.parse(info.fence_info)
-           
-            if (info.fence_shape == 'circle') {
-                fenceObj = new BMap.Circle(fence_info.center, fence_info.radius, fenceOption)
-            } else if (info.fence_shape == 'polygon') {
-                fenceObj = new BMap.Polygon(fence_info, fenceOption)
-            }
-          fenceObj.setFillColor(color);
-            fenceObj._infoData = info;
-
-            this.map.addOverlay(fenceObj)
-           
-    },
-    toggleTabs(e) {
-            this.showTabs = !this.showTabs
-             var toggleListBtn = document.getElementById('toggleListBtn')
-            if (this.showTabs) {
-                this.toggleIcon = 'right'
-                toggleListBtn && (toggleListBtn.style.right = '610px')
-            } else {
-                this.toggleIcon = 'left'
-                toggleListBtn && (toggleListBtn.style.right = '0px')
-            }
-            
-    },
-},
-  
-};
-</script>
-
-<style lang="scss" scoped>
-.bm-view {
-  width: 100%;
-  height: 100vh;
-}
-#searchbox {
-  border-radius: 2px;
-  width: 464px;
-  position: relative;
-  z-index: 5;
-  display: flex;
-}
-#searchbox #searchbox-container {
-  display: flex;
-  position: relative;
-  z-index: 2;
-  pointer-events: auto;
-  width: 250px;
-  float: left;
-  box-sizing: border-box;
-  
-}
-#sole-searchbox-content {
-  position: relative;
-}
-.searchbox-content {
-  width: 250px;
-  border-radius: 2px 0 0 2px;
-  background: #fff;
-}
-#sole-searchbox-content #sole-input,
-#searchType {
-  box-sizing: border-box;
-  border: 0;
-  padding: 9px 0;
-  border-left: 10px solid transparent;
-  border-right: 10px solid transparent;
-  line-height: 20px;
-  font-size: 14px;
-  height: 38px;
-  color: #333;
-  position: relative;
-  border-radius: 2px 0 0 2px;
-}
-#sole-input {
-  width: 250px;
-}
-#sole-input:focus {
-  outline: none;
-}
-#list-container{
-  background-color: #fff;
-  width:610px;
-  height: 820px;
-}
-#student-container{
-  // width:610px;
-  height: 750px;
-  
-}
-
-.app-container {
-    height: calc(100vh - 102px);
-}
-::v-deep .el-dialog__body {
-        padding: 0;
-    }
-#toggleListBtn {
-  height: 40px;
-  width: 15px !important;
-  text-align: center !important;
-  position: absolute;
-  top: 0px;
-  right: 610px;
-  padding:14px 1px !important;
-}
-.el-tag{
-  margin-top:5px;
-   border:0px;
-}
-::v-deep .info_label{
-  padding-top:5px;
-  font-size: 14px;
-}
-::v-deep .handle_btn{
-  margin-top: 10px;
-}
-</style>

+ 0 - 143
src/views/map/fenceInfoDialog.vue

@@ -1,143 +0,0 @@
-<template>
-  <el-dialog
-   :visible.sync="dialog"   
-    width="460px"
-   direction="rtl" 
-  >
-       <el-divider class="dialog-divider"></el-divider>
-      <div class="dialog-content">
-        <el-row class="dialog-row">
-          <div class="dialog-row-title">
-            围栏信息
-          </div>
-          <div v-for="(item, index) in fenceData" :key="index" class="dialog-row-content">
-            <span class="content-row"> <span class="name-item"> 围栏名称: </span> <span>{{item.name}}</span> </span>
-            <span class="content-row"> <span class="name-item"> 作用机构: </span> <span>{{item.department_name}}</span> </span>
-            <span class="content-row"> <span class="name-item"> 围栏类型: </span> <span>{{item.type_name}}</span> </span>
-            <span class="content-row" v-if="item.is_check_in"> <span class="name-item"> 进围栏检测: </span> <span>{{item.in_fence_time_area_text}}</span> </span>
-            <span class="content-row" v-if="item.is_check_out"> <span class="name-item"> 出围栏检测: </span> <span>{{item.out_fence_time_area_text}}</span> </span>
-           
-          </div>
-        </el-row>
-
-      </div>
-    <el-divider class="dialog-divider"></el-divider>
-    <span slot="footer" class="dialog-footer">
-      <!-- <el-button @click="dialogVisible = false">取 消</el-button> -->
-      <el-button style="margin-left:20px" type="primary" @click="dialog = false">确 定</el-button>
-    </span>
-  </el-dialog>
-</template>
-<script>
-
-export default {
-  props: ["displayVisible","record"],
-
-  components: {
-
-  },
-  created() {
-    // 初始化统计数据
-    // this.getChartData()
-  },
-  data() {
-    return {
-        title:'用户信息',
-        fenceData:[],
-     
-    };
-  },
-  computed: {
-    dialog: {
-      set(val) {
-        this.$emit("formCancel", val); // 表示将子组件改变的值传递给父组件
-      },
-      get() {
-        if (this.displayVisible) {
- 
-          // this.$http.get('map/queryAlarmFenceList', {params: alarm_info}).then(resp => {
-            this.$http.post("map/queryAlarmFenceList", { record: this.record}).then(resp => {
-                this.fenceData = resp.data;
-                
-          }).catch(() => {
-                
-          });
-        }
-        // console.log(this.activeRfid)
-        
-        return this.displayVisible; // 表示获取父组件的值
-      }
-    }
-  },
-  mounted(){
-    
-  },
-
-  methods: {
-   
-    
-  }
-};
-</script>
-<style lang="scss" scoped>
-
-.el-drawer span:focus {
-  outline: none;
-}
-
-::v-deep .el-dialog{
-  min-width: 360px;
-}
- .el-dialog__body{
-  padding: 0px!important;
-  /* padding-bottom: 0px!important; */
-}
-
-
-.dialog-divider{
-  margin:0px;
-  margin-top:10px;
-}
-.dialog-content{
-  padding: 5px;
-}
-
-.dialog-row{
-  display: flex;
-  flex-direction: column;
-  padding: 10px;
-  font-size: 12px;
-}
-.dialog-row-title{
-  margin-left: 20px;
-  margin-bottom: 10px;
-  font-size: 15px;
-  color: black;
-}
-.dialog-row-content{
-  margin-left: 50px;
-  display: flex;
-  flex-direction: column; 
-}
-.content-row{
-  margin-top: 5px;
-}
-.name-item{
-  width: 60px;
-  white-space:pre;
-  word-wrap: break-word;
-}
-.el-drawer__body{
-  max-height:100vh;
-  overflow: hidden;
-   overflow-y: auto;
-   width:100%;
-
-}
-.primary-btn{
-  color: #fff;
-  background-color: #409eff;
-  border-color: #98a9b9;
-  margin-left:5px;
-}
-</style>

+ 0 - 170
src/views/map/handleDialog.vue

@@ -1,170 +0,0 @@
-<template>
-  <el-dialog :visible.sync="dialog" width="460px" direction="rtl">
-     <div class="dialog-row-title">告警处理</div>
-    <el-divider class="dialog-divider"></el-divider>
-    <div class="dialog-content">
-      <el-row class="dialog-row">
-       
-        <div class="dialog-row-content">
-          <el-form ref="form" :model="formFieldsData" label-width="80px">
-            <el-form-item label="告警原因">
-              <el-tag  v-for="(item,key) in alarmOption" :key="key" effect="dark" :color='alarmReasonList[item.value]'>{{item.text}}</el-tag>
-              <!-- <el-select v-model="formFieldsData.alarm_reason" multiple collapse-tags placeholder="请选择告警原因">
-                 <el-option
-                    v-for="item in alarmOption"
-                    :key="item.value"
-                    :label="item.text"
-                    :value="item.value">
-                  </el-option>
-              </el-select> -->
-            </el-form-item>
-            <el-form-item label="处理结果">
-              <el-select v-model="formFieldsData.result" placeholder="请选择处理结果">
-                 <el-option
-                    v-for="item in resultOption"
-                    :key="item.value"
-                    :label="item.text"
-                    :value="item.value">
-                  </el-option>
-              </el-select>
-            </el-form-item>
-            <el-form-item label="备注">
-              <el-input type="textarea" v-model="formFieldsData.comment"></el-input>
-            </el-form-item>
-          </el-form>
-        </div>
-      </el-row>
-    </div>
-    <el-divider class="dialog-divider"></el-divider>
-    <span slot="footer" class="dialog-footer">
-      <el-button @click="dialog = false">取 消</el-button>
-      <el-button style="margin-left:20px" type="primary" @click="onSubmit">确 定</el-button>
-    </span>
-  </el-dialog>
-</template>
-<script>
-export default {
-  props: ["displayVisible", "record"],
-
-  components: {},
-  created() {
-    // 初始化统计数据
-    // this.getChartData()
-  },
-  data() {
-    return {
-      formFieldsData: {
-        device_number: "",
-        // alarm_reason:[],
-        comment: "",
-        result: ""
-      },
-      alarmReasonList:[],
-      resultOption:[],
-      alarmOption:[],
-    };
-  },
-  computed: {
-    dialog: {
-      set(val) {
-        this.$emit("formCancel", val); // 表示将子组件改变的值传递给父组件
-      },
-      get() {
-        if (this.displayVisible) {
-          //   this.loading = true
-          this.formFieldsData.device_number = this.record.imei;
-
-          if(this.record.alarm_reason_list){
-            this.alarmOption=this.record.alarm_reason_list
-          }
-          this.$http.post("sysDictData/getOptions", { type: "AlarmHandleResult" }).then(res => {
-              this.resultOption = res.data;
-          });
-        }
-
-        return this.displayVisible; // 表示获取父组件的值
-      }
-    }
-  },
-  mounted(){
-    this.alarmReasonList=this.$appConfig["alarmReasonList"];
-  },
-
-  methods: {
-    onSubmit() {
-      this.$http.post("AlarmRecords/handleAlarm", this.formFieldsData).then(response => {
-        this.dialog=false
-          this.$parent.$parent.mapFresh()
-          // this.$parent.handleFormVisible=false
-      });
-    }
-  }
-};
-</script>
-<style lang="scss" scoped>
-.el-drawer span:focus {
-  outline: none;
-}
-
-::v-deep .el-dialog {
-  min-width: 360px;
-}
-.el-dialog__body {
-  padding: 0px !important;
-  /* padding-bottom: 0px!important; */
-}
-
-.dialog-divider {
-  margin: 0px;
-  margin-top: 10px;
-}
-.dialog-content {
-  padding: 5px;
-}
-
-.dialog-row {
-  display: flex;
-  flex-direction: column;
-  padding: 10px;
-  font-size: 12px;
-}
-.dialog-row-title {
-  margin-left: 20px;
-  margin-bottom: 10px;
-  font-size: 15px;
-  color: black;
-}
-.dialog-row-content {
-  margin-left: 50px;
-  display: flex;
-  flex-direction: column;
-}
-.content-row {
-  margin-top: 5px;
-}
-.name-item {
-  width: 60px;
-  white-space: pre;
-  word-wrap: break-word;
-}
-.el-drawer__body {
-  max-height: 100vh;
-  overflow: hidden;
-  overflow-y: auto;
-  width: 100%;
-}
-.primary-btn {
-  color: #fff;
-  background-color: #409eff;
-  border-color: #98a9b9;
-  margin-left: 5px;
-}
-.el-input--small {
-  width: 200px !important;
-}
-.el-tag{
-  margin-right:5px;
-
-  border:0px;
-}
-</style>

+ 0 - 723
src/views/map/monitorMap.vue

@@ -1,723 +0,0 @@
-<template>
-  <baidu-map class="bm-view" :center="center" :zoom="zoom" @ready="init">
-    <!-- <bml-marker-clusterer :averageCenter="true">
-      <bm-marker v-for="(marker,index) of markers" :key="index" :position="{lng: marker.position.lng, lat: marker.position.lat}">
-      </bm-marker>
-    </bml-marker-clusterer> -->
-    <bm-map-type :map-types="['BMAP_NORMAL_MAP', 'BMAP_HYBRID_MAP']" anchor="BMAP_ANCHOR_TOP_LEFT" :offset="mapTypeControlOffset"></bm-map-type>
-    <bm-navigation anchor="BMAP_ANCHOR_TOP_LEFT" :offset="navigationControlOffset"></bm-navigation>
-
-    <bm-control anchor="BMAP_ANCHOR_TOP_LEFT" class="bottom_box" :offset="listControlOffset">
-        <div id="control-container">
-             <!-- <button @click="openDistanceTool">开启测距</button> -->
-             <div class="head_control_time" @click="openDistanceTool">{{flash_time}}秒</div>
-             <!-- <div class="head_control_btn" @click="openDistanceTool"><i class="el-icon-location-information"></i>跟踪</div> -->
-             <!-- <div class="head_control_btn" @click="openDistanceTool"><i class="el-icon-place"></i>轨迹</div> -->
-             <div class="head_control_btn" @click="openDistanceTool"><i class="el-icon-paperclip"></i>测距</div>
-        </div>
-    </bm-control>
-    <!-- 地图右边控件 设备列表 -->
-    <bm-control anchor="BMAP_ANCHOR_TOP_RIGHT" class="right_box" :offset="listControlOffset">
-      <el-button id="toggleListBtn" @click="toggleTabs" :icon="'el-icon-arrow-'+toggleIcon"></el-button>
-      <el-tabs type="card" @tab-click="clickTab" v-model="activeName" v-show="showTabs">
-        <el-tab-pane label="我的设备" name="deviceList">
-            <div id="student-container">
-              <el-table class="ontop-table"  ref="multipleTable" row-key="id" :data="data"  @select="selectSingleChange" @row-click="currentRowClick" @selection-change="handleSelectionChange"  highlight-current-row>
-                  <el-table-column type="selection" width="45" align="center" reserve-selection></el-table-column>
-                  <el-table-column prop="status_icon" align="center"  label="类型" width="45">
-                    <template slot-scope="scope">
-                      <img :src="statusIcons[ scope.row.status_icon]" class="status_img">
-                      
-                    </template>
-                  </el-table-column>
-                  <el-table-column prop="imei" align="center"  label="设备号">
-                    <template slot-scope="scope">
-                      {{ scope.row.imei  ||  scope.row.rfid}}
-                    </template>
-                  </el-table-column>
-                  <el-table-column prop="status_text" label="状态" align="center"  width="60"></el-table-column>
-              </el-table>
-              <el-pagination
-                small
-                background
-                class="pagination-container"
-                hide-on-single-page
-                @size-change="handleSizeChange"
-                @current-change="handleCurrentChange"
-                :current-page="paginate.current"
-                :page-sizes="paginate.sizes"
-                :page-size="paginate.limit"
-                :pager-count="5"
-                layout="slot, prev, pager, next, total"
-                :total="paginate.total"/>
-            </div>
-        </el-tab-pane>
-      </el-tabs>
-    </bm-control>
-    <!-- 地图底部控件 -->
-    <bm-control anchor="BMAP_ANCHOR_BOTTOM_LEFT" class="bottom_box" :offset="listControlOffset">
-      <el-button id="bottomToggleBtn" @click="bottomToggleTabs" :icon="'el-icon-arrow-'+BotToggleIcon"></el-button>
-      <div id="route-container" v-show="bottomShowTabs">
-        <div class="route_head">
-          <div class="route_head_tab"  :class="{ active: 'realinfo' == currentShowTab }" @click="showBottomContent('realinfo')">实时信息</div>
-          <div class="route_head_tab" :class="{ active: 'handlelog' == currentShowTab }" @click="showBottomContent('handlelog')">操作记录</div>
-          <div class="route_head_flash" >刷新(秒): <el-input class="route_head_flash_input" size="mini" v-model="route_flash_interval"> </el-input></div>
-          
-         
-          <div class="route_head_btn route_head_tab_select" @click="saveFlashInterval" ><i class="el-icon-s-order"></i>保存</div>
-          <!-- <div class="route_head_btn route_head_tab_select"><i class="el-icon-download"></i>导出</div> -->
-          <div class="route_head_right"> 
-            <!-- <span class="status_icon"><img :src="statusIcons.stop" class="status_img">停止</span> -->
-            <span class="status_icon"><img :src="statusIcons.run" class="status_img">在线</span>
-            <!-- <span class="status_icon"><img :src="statusIcons.online" class="status_img">在线</span> -->
-            <span class="status_icon"><img :src="statusIcons.offline" class="status_img">离线</span>
-            <span class="status_icon"><img :src="statusIcons.alarm" class="status_img">报警</span>
-            <span class="status_icon"><img :src="statusIcons.unuse" class="status_img">未使用</span>
-                 
-          
-          </div>
-        </div>
-        <div class="route_content" >
-          <el-table :data="tableData" class="route_table" v-show="showRouteContent">
-            <el-table-column prop="status_text" align="center" label="状态"></el-table-column>
-            <el-table-column prop="loc_mode" align="center"  label="定位类型"></el-table-column>
-            <el-table-column prop="name" align="center"  label="设备名称"></el-table-column>
-            <el-table-column prop="imei" align="center"  label="设备编号"></el-table-column>
-            <el-table-column prop="department_id" align="center"  label="所属机构"></el-table-column>
-            <el-table-column prop="online_time" align="center" label="定位时间"></el-table-column>
-            <el-table-column prop="address" align="center"  label="地址"></el-table-column>
-            <!-- <el-table-column prop="address" align="center"  label="查看"></el-table-column> -->
-          </el-table>
-        </div>
-      </div>
-    </bm-control>
-
-       <user-info-dialog
-        v-if="userFormVisible"
-        :displayVisible="userFormVisible"
-        @formCancel="closeUserDialog"
-        :userId="currentUserId"
-      />
-     
-  </baidu-map>
-    
-    
-</template>
-
-<script>
-import rlListOperate from "@/layout/rl-list-operate/rlListOperate";
-import DistanceTool from '@/utils/DistanceTool'
-// import MarkerClusterer from '@/utils/MarkerClusterer'
-// import TextIconOverlay from '@/utils/TextIconOverlay'
-import {BmlMarkerClusterer} from 'vue-baidu-map'
-import userInfoDialog from "./userInfoDialog";
-
-import $ from "jquery";
-export default {
-  mixins: [rlListOperate],
-  components:{BmlMarkerClusterer,userInfoDialog},
-  data() {
-    return {
-      activeName: 'deviceList',
-      loading: false,
-      center: '杭州市滨江区',
-      url:'map/queryDeviceList',
-      alarm_data:[],
-      tableData:[],
-      currentInfoWindow:'',
-      infoWindow:{},
-      currentUserId:'',
-      currentWindowImei:'',
-      route_flash_interval:60,
-      flash_time:60,
-      formVisible: false,
-      mapTypeControlOffset:{},
-      navigationControlOffset:{},
-      showTabs:true,
-      bottomShowTabs:true,
-      showRouteContent:true,
-      currentShowTab:'realinfo',
-      listControlOffset:{},
-      toggleIcon: 'right',
-      BotToggleIcon: 'down',
-      zoom: 13,
-      mapData: [],
-      show: false,
-      map: null,
-      markers:[],
-      pointArr:[],
-      content: "",
-      opts: null,
-      realTimeiImei:[],
-      queryParam:{
-        device_number:'',
-        limit:15
-      },
-
-      userFormVisible:false,
-      statusIcons:{
-        stop:'https://rlfd.oss-cn-hangzhou.aliyuncs.com/catch_fd/icon/stop.png',
-        alarm:'https://rlfd.oss-cn-hangzhou.aliyuncs.com/catch_fd/icon/alarm.png',
-        offline:'https://rlfd.oss-cn-hangzhou.aliyuncs.com/catch_fd/icon/offline.png',
-        // online:'https://rlfd.oss-cn-hangzhou.aliyuncs.com/catch_fd/icon/online.png',
-        run:'https://rlfd.oss-cn-hangzhou.aliyuncs.com/catch_fd/icon/run.png',
-        unuse:'https://rlfd.oss-cn-hangzhou.aliyuncs.com/catch_fd/icon/unuse.png',
-      },
-      markerIcons: { // 覆盖物图标
-                car: 'https://rlfd.oss-cn-hangzhou.aliyuncs.com/catch_fd/car/car_2_0.png', 
-
-      },
-  
-      currentRow: null,
-      alarmReasonList:[],
-    };
-  },
-  unmount () {
-    distanceTool && distanceTool.close()
-  },
-  mounted(){
-    let topTables = document.getElementsByClassName('ontop-table');
-    let routeTables = document.getElementsByClassName('route_table');
-    this.alarmReasonList=this.$appConfig["alarmReasonList"];
-    topTables.forEach((item,index) => {
-      item.onwheel = function(e) {
-        e.stopPropagation();
-      }
-    })
-    routeTables.forEach((item,index) => {
-      item.onwheel = function(e) {
-        e.stopPropagation();
-      }
-    })
-    let params = this.$router.currentRoute.query 
-    // this.queryParam.device_number=params.device_number
-  },
-  created(){
-   
-    window.showUserInfo=this.showUserInfo;
-     
-  },
-  methods: {
-    init({ BMap, map }) {
-      this.map = map;
-      // 初始化地图,设置中心点坐标
-
-      this.mapTypeControlOffset= new BMap.Size(10, 40)
-      this.navigationControlOffset=new BMap.Size(10, 80)
-      this.listControlOffset=new BMap.Size(0, 0)
-     //开始测量
-     this.distanceTool = new BMapLib.DistanceTool(map);
-      // 添加鼠标滚动缩放
-      map.enableScrollWheelZoom();
-      //开启定时查询
-      this.startQueryRealInfo();
-      
-    },
-    openDistanceTool (e) {
-      const {distanceTool} = this
-      distanceTool && distanceTool.open()
-    },
-    infoWindowClose () {
-      this.show = false
-    },
-    infoWindowOpen () {
-      this.show = true
-    },
-    addMarkerPoint(data) {
-      this.map.clearOverlays(this.markers)
-      this.pointArr=[]
-      this.markers=[]
-      var myIcon;
-      Object.keys(data).forEach((k)=>{
-
-        let item=data[k]
-        var pt = new BMap.Point(item.longitude, item.latitude);
-        this.pointArr.push(pt)
-        myIcon = new BMap.Icon(this.markerIcons['car'], new BMap.Size(32, 32));
-        myIcon.setImageSize(new BMap.Size(32, 32));
-      
-        var marker = new BMap.Marker(pt, {
-          icon: myIcon
-        }); // 创建标注
-        // marker.position={lng: item.longitude, lat: item.latitude}
-       
-        let that=this
-        marker.addEventListener("click", function(){     
-          let content=that.createMarkerContent(item);
-          var opts = {
-            width : 320,     // 信息窗口宽度
-            enableAutoPan:false
-          }
-          var infoWindow = new BMap.InfoWindow(content,opts);  // 创建信息窗口对象      
-          this.map.openInfoWindow(infoWindow, pt); //开启信息窗口
-        });
-        this.markers.push(marker);
-        this.map.addOverlay(marker);
-        // var markerClusterer = new BMapLib.MarkerClusterer(this.map, {markers:this.markers});
-        // this.map.setViewport(this.pointArr,{margins: [0, 200, 100,0] ,zoomFactor:-1});
-      })
-    },
-    showBottomContent(val){
-      this.currentShowTab=val
-      if(val=='realinfo'){
-        this.showRouteContent=true;
-      }else{
-        this.showRouteContent=false;
-      }
-    },
-    showUserInfo(val){
-      this.currentUserId=val
-      this.userFormVisible=true
-    },
-    closeUserDialog(){
-      this.userFormVisible=false
-    },
-  
-    currentRowClick(val){
-      this.addSingleMarker(val)
-      //  var pt = new BMap.Point(val.longitude, val.latitude);
-      //     this.map.centerAndZoom(pt,13);
-      let ifHighlight=true
-      if(this.selectedIds.length){
-           this.selectedIds.map((item,i) => {
-              if(val.id == item){
-                ifHighlight=false
-                this.highlight = false
-                this.selectedIds.splice(i,1)
-              }
-            })
-            if(ifHighlight){
-              this.highlight = true
-            }
-            
-            this.$refs.multipleTable.toggleRowSelection(val)
-              
-      }else{
-        this.highlight = true
-        this.$refs.multipleTable.toggleRowSelection(val)
-      }
-    },
-    selectSingleChange(val,row){
-      this.addSingleMarker(row)
-    },
-    handleSelectionChange(val){
-      for(var i=0;i<this.markers.length;i++){
-        this.map.removeOverlay(this.markers[i])
-      }
-
-      // this.map.clearOverlays(this.markers)
-      this.realTimeiImei=[]
-      this.tableData=[]
-      if(val.length <= 0){
-        return;
-      }
-      
-      
-      Object.keys(val).forEach((k) => {
-         this.realTimeiImei.push(val[k].imei)
-         
-      })
-      this.addMarkerPoint(val) 
-          this.tableData=val
-      // this.querySelectDeviceInfo()
-    
-  
-    },
-    querySelectDeviceInfo(){
-       const query = {imeis:this.realTimeiImei}
-      this.$http.post('/map/queryDeviceRealTimeInfo', query ).then(response => {
-        this.map.closeInfoWindow(); 
-          this.addMarkerPoint(response.data)
-         this.map.setViewport(this.pointArr);
-          this.tableData=response.data
-          // Object.keys(response.data).forEach((k) => {
-          //   console.log(response.data[k].imei)
-          //     if(response.data[k].imei==this.currentWindowImei){
-          //       console.log('AAAAA')
-          //       let windowContent=this.createMarkerContent(response.data[k])
-          //       this.infoWindow = new BMap.InfoWindow(windowContent,opts);  // 创建信息窗口对象 
-          //     }
-              
-          //   })
-
-      }).catch(()=>{
-       
-      })
-    },
-    addSingleMarker(data){
-        let that=this
-        // 如果没有经纬度
-        if (!data.latitude || !data.longitude) {
-          this.$message.warning('暂无定位数据');
-          return false;
-        }
-         
-       var pt = new BMap.Point(data.longitude, data.latitude);
-        var opts = {
-            width : 320,     // 信息窗口宽度
-            enableAutoPan:false
-        }
-        // this.currentWindowImei=data.imei
-        let windowContent=this.createMarkerContent(data)
-        this.infoWindow = new BMap.InfoWindow(windowContent,opts);  // 创建信息窗口对象 
-        // console.log(data.imei)
-        // console.log(this.realTimeiImei)
-        if(this.realTimeiImei.indexOf(data.imei)>=0){
-          this.map.closeInfoWindow(); 
-        }else{
-          this.map.openInfoWindow(this.infoWindow, pt); //开启信息窗口
-          this.map.centerAndZoom(pt,13);
-        }
-        
-    },
-    createMarkerContent(data){
-      let address
-      if(data['loc_mode'] && data['loc_mode'].toLowerCase() =='rfid'){
-            address=data['address']
-            
-      }else{
-          var myGeo = new BMap.Geocoder();      
-          // 根据坐标得到地址描述    
-          myGeo.getLocation(new BMap.Point(data.longitude,data.latitude), function(result){          
-              address=result.address
-              $('#marker_address').text(address);
-          });
-      }
-      var content ='<div class="info_label">设备编号:' + (data.imei || data.rfid) + '</div>'
-      if(data.online_time){
-          content += '<div class="info_label">剩余电量:' + data.battery_level + '%</div>'
-      }else{
-          content += '<div class="info_label">剩余电量:--</div>'
-      }
-      content += '<div class="info_label">定位地址:<a id="marker_address">' + address + '</a></div>' 
-      content += '<div class="info_label">定位类型:' + data.loc_mode + '</div>'
-      content += '<div class="info_label">在线时间:'+data.online_time+'</div>'
-        
-        // if(data.alarm_state>0 && data.alarm_reason_list){
-        //   content += '<div class="info_label">告警标签:'
-        //   for (let i=0;i<data.alarm_reason_list.length;i++)
-        //   { 
-        //     content+='<span class="el-tag el-tag--dark el-tag--small el-tag--light" style="border:0px;background-color:'+this.alarmReasonList[data.alarm_reason_list[i].value]+';">'+data.alarm_reason_list[i].text+'</span> '
-            
-        //   }
-        //   content +='</div>'
-        // }
-      content+='<div class="handle_btn info_label">'
-      content+='<button onclick="showGpsRoute(\''+data.imei+'\')" class="el-button el-button--info el-button--small">轨迹</button>';
-        // if(data.alarm_state>0){
-        //   content+='<button onclick="shwoAlarmRecord(\''+data.imei+'\')" class="el-button el-button--info el-button--small">告警记录</button>'
-        // }
-      content+='<button onclick="showUserInfo(\''+data.user_id+'\')" class="el-button el-button--info el-button--small">资料</button>'
-      content+='</div>'
-          
-      return content
-    },
-   
-    
-    clickTab(tab) {
-      let name = tab.name;
-      if (name == 'deviceList') {
-        this.url = 'map/queryDeviceList';
-      }
-      this.handleRefresh();
-    },
-    
-    toggleTabs(e) {
-            this.showTabs = !this.showTabs
-             var toggleListBtn = document.getElementById('toggleListBtn')
-             var list_container = document.getElementById('route-container')
-             var  control_container = document.getElementById('control-container')
-            
-             var bottomToggleBtn = document.getElementById('bottomToggleBtn')
-            if (this.showTabs) {
-             
-              this.toggleIcon = 'right'
-              toggleListBtn && (toggleListBtn.style.right = '310px')
-              list_container && (list_container.style.width = 'calc(100% - 310px)')
-              control_container && (control_container.style.width = 'calc(100% - 310px)')
-              bottomToggleBtn && (bottomToggleBtn.style.left = 'calc(50% - 140px)')
-            } else {
-             
-              this.toggleIcon = 'left'
-              toggleListBtn && (toggleListBtn.style.right = '0px')
-              list_container && (list_container.style.width = '100%')
-              control_container && (control_container.style.width = '100%')
-              bottomToggleBtn && (bottomToggleBtn.style.left = '50%')
-            }
-            
-    },
-    bottomToggleTabs(e) {
-            this.bottomShowTabs = !this.bottomShowTabs
-            var bottomToggleBtn = document.getElementById('bottomToggleBtn')
-            if (this.bottomShowTabs) {
-              this.BotToggleIcon = 'down'
-              bottomToggleBtn && (bottomToggleBtn.style.bottom = '195px')
-            } else {
-             
-              this.BotToggleIcon = 'up'
-              bottomToggleBtn && (bottomToggleBtn.style.bottom = '0px')
-            }
-            
-    },
-    saveFlashInterval(){
-      this.startQueryRealInfo();
-       this.$message({
-          message: '保存成功',
-          type: 'success'
-        });
-    },
-    startQueryRealInfo(){
-      if (this.timer) {
-        clearInterval(this.timer); // 在Vue实例销毁前,清除我们的定时器
-      }
-      if (this.timer1) {
-        clearInterval(this.timer1); // 在Vue实例销毁前,清除我们的定时器
-      }
-     this.flash_time=this.route_flash_interval
-      this.timer = setInterval(() => {
-        //that.date = this.initDate()
-        this.flash_time--
-        if(this.flash_time==0){
-          this.getList()
-          this.querySelectDeviceInfo()
-          this.flash_time=this.route_flash_interval
-        }
-      }, 1000)
-      // this.timer1 = setInterval(() => {
-      //   console.log('定时查询-------')
-      // }, this.route_flash_interval*1000)
-    }
-    
-  },
-  beforeDestroy() {
-    if (this.timer) {
-      clearInterval(this.timer); // 在Vue实例销毁前,清除我们的定时器
-    }
-     if (this.timer1) {
-        clearInterval(this.timer1); // 在Vue实例销毁前,清除我们的定时器
-      }
-  }
-};
-</script>
-
-<style lang="scss" scoped>
-.bm-view {
-  width: 100%;
-  // height: 100vh;
-  height: calc(100vh - 84px);
-}
-
-
-#sole-input {
-  width: 250px;
-}
-#sole-input:focus {
-  outline: none;
-}
-
-
-.app-container {
-    height: calc(100vh - 102px);
-}
-::v-deep .el-dialog__body {
-        padding: 0;
-    }
-::v-deep .info_label{
-  padding-top:5px;
-  font-size: 14px;
-}
-::v-deep .handle_btn{
-  margin-top: 10px;
-}
-#search-button{
-  margin-left:1px;
-}
-#student-container{
-  width:310px;
-  height: calc(100vh - 102px);
-  background-color: #fff;
-}
-.ontop-table{
-   width:100%;
-  height: calc(100% - 100px);
-  max-height: 700px;
-  overflow: auto;
-}
-
-#toggleListBtn {
-  background:#5c90d2 ;
-  color:#fff;
-  font-size: 21px;
-  height: 50px;
-  width: 20px !important;
-  text-align: center !important;
-  position: absolute;
-  top:calc(50vh - 50px);
-  right: 310px;
-  padding:14px 0px !important;
-}
-#bottomToggleBtn{
-  background:#5c90d2 ;
-  color:#fff;
-  font-size: 20px;
-  height: 21px;
-  width: 50px;
-  text-align: center !important;
-  position: absolute;
-  bottom:195px;
-  left: calc(50% - 140px);
-  padding:0px 14px !important;
-}
-#route-container{
-  background-color: #fff;
-  width:calc(100% - 310px);
-  height: 195px;
-}
-#control-container{
-   background-color: #fff;
-  width:calc(100% - 310px);
-  padding-right: 30px;
-  height: 30px;
-}
-.bottom_box{
-  z-index: 98 !important;
-  // border-top:2px #accdea solid;
-  width:100%;
-}
-.route_table{
-  height:160px;
-  width:100%;
-  overflow: auto;
-}
-.route_head{
-  width:100%;
-  // background-color: #ccc;
-  height: 32px;
-  padding:0px;
-}
-.route_head_tab{
-  width:75px;
-  height: 28px;
-  text-align: center;
-  line-height: 26px;
-  margin-left: 5px;
-  margin-top: 4px;
-  display: inline-block;
-
-  border-left: 1.5px solid #5c90d2;
-  border-right: 1.5px solid #5c90d2;
-  border-top: 1.5px solid #5c90d2;
-  border-bottom: none;
-  color: #666;
-  font-size: 14px;
-  cursor: pointer;
-  &.active {
-    color: #fff;
-    background: #66afef;
-  }
-}
-.route_head_right{
-  
-  width:400px;
-  height: 32px;
-  margin-right: 30px;
-  float: right;
-  line-height: 32px;
-  text-align: right;
-   font-size: 14px;
-}
-.status_icon{
- width:60px;
- height: 100%;
- text-align: left;
- margin-right:5px ;
- display: inline-block;
-}
-.status_img{
-  float: left;
-  margin-top:7px;
-}
-.route_head_btn{
-  width:60px;
-  height: 24px;
-  text-align: center;
-  line-height: 22px;
-  margin-left: 5px;
-  display: inline-block;
-  border: 1.5px solid #5c90d2;
-  color: #666;
-  font-size: 14px;
-  cursor: pointer;
-}
-.head_control_time{
-  width:60px;
-  height: 24px;
-  text-align: center;
-  line-height: 22px;
-  margin-top: 3px;
-  margin-left: 5px;
-  float: left;
-  border: 1px solid yellow;
-  color: #666;
-  font-size: 14px;
-  cursor: pointer;
-  color: #000;
-  background: yellow;
-}
-.head_control_btn{
-   width:60px;
-  height: 24px;
-  text-align: center;
-  line-height: 22px;
-  margin-top: 3px;
-  margin-right: 5px;
-  float: right;
-  border: 1px solid #d64635;
-  color: #666;
-  font-size: 14px;
-  cursor: pointer;
-  color: #fff;
-  background: #d64635;
-}
-.route_head_btn:hover{
-  background:#1b65a7;
-}
-.route_head_tab_select{
-  color: #fff;
-  background: #66afef;
-}
-.route_head_flash{
-    width:140px;
-  height: 26px;
-  text-align: center;
-  line-height: 24px;
-  margin-left: 5px;
-  // margin-top: 6px;
-  display: inline-block;
-
-  // border: 1.5px solid #5c90d2;
-
-  color: #666;
-  font-size: 14px;
-
-}
-.route_head_flash_input{
-  width:55px;
-  height: 24px !important;
-  top:-2px;
-  //  margin-bottom: 10px;
-
-}
-.route_content{
-  // background-color: #eee;
-  border-top:1.5px #5c90d2 solid;
-  width:100%;
-}
-
-.right_box{
-   background-color: #fff;
-  z-index: 99 !important;
-  border-left:1px #accdea solid;
-}
-
-</style>

+ 1 - 1
src/views/map/routeMap.vue

@@ -297,7 +297,7 @@ export default {
 
         content+='<div class="handle_btn info_label">'
 
-        // content+='<button onclick="showGpsRoute(\''+data.number+'\')" class="el-button el-button--info el-button--small">历史轨迹</button>';
+        content+='<button onclick="showGpsRoute(\''+data.number+'\')" class="el-button el-button--info el-button--small">历史定位</button>';
 
         // content+='<button onclick="showUserInfo(\''+data.user_id+'\')" class="el-button el-button--info el-button--small">用户信息</button>'
           

+ 0 - 985
src/views/map/routeMap_old1.vue

@@ -1,985 +0,0 @@
-<template>
-  <baidu-map class="bm-view" :center="center" :zoom="zoom" @ready="init">
-    <!-- <bml-marker-clusterer :averageCenter="true">
-      <bm-marker v-for="(marker,index) of markers" :key="index" :position="{lng: marker.position.lng, lat: marker.position.lat}"></bm-marker>
-    </bml-marker-clusterer> -->
-    <bm-map-type :map-types="['BMAP_NORMAL_MAP', 'BMAP_HYBRID_MAP']" anchor="BMAP_ANCHOR_TOP_LEFT" :offset="mapTypeControlOffset"></bm-map-type>
-    <bm-navigation anchor="BMAP_ANCHOR_TOP_LEFT" :offset="navigationControlOffset"></bm-navigation>
-
-    <bm-control anchor="BMAP_ANCHOR_TOP_LEFT" class="bottom_box" :offset="listControlOffset">
-        <div id="control-container">
-             <!-- <button @click="openDistanceTool">开启测距</button> -->
-             <!-- <div class="head_control_time" @click="openDistanceTool">{{flash_time}}秒</div> -->
-             <!-- <div class="head_control_btn" @click="openDistanceTool"><i class="el-icon-location-information"></i>跟踪</div> -->
-             <!-- <div class="head_control_btn" @click="openDistanceTool"><i class="el-icon-place"></i>轨迹</div> -->
-             
-             <div class="head_control_btn" @click="openDistanceTool"><i class="el-icon-paperclip"></i>测距</div>
-             <div class="head_control_select" >
-                <el-radio-group v-model="route_radio" @change="RouteTypeChange">
-                  <el-radio :label="1">轨迹回放</el-radio>
-                  <el-radio :label="2">实时监控</el-radio>
-                 </el-radio-group>
-             </div>
-        </div>
-    </bm-control>
-    <!-- 地图右边控件 设备列表 -->
-    <bm-control anchor="BMAP_ANCHOR_TOP_RIGHT" class="right_box" :offset="listControlOffset">
-      <div id="right-search-box">
-        <div class="search_title">
-           <div v-if="queryRouteParam.imei != ''">{{queryRouteParam.imei}}</div>
-          <div v-else>请先选择一个设备</div>
-        </div>
-        <div class="search_content" v-if="showSearchContent">
-            <el-select v-model="queryRouteInterval" size="mini" @change="handleTimeChange" class="time_select">
-              <el-option
-                v-for="item in timePickerOptions"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value">
-              </el-option>
-            </el-select>    
-            <div class="search_btn" @click="searchRoute" v-show="showSearchBtn"><i class="el-icon-search"></i>&nbsp;搜索</div>
-            <div class="search_btn" @click="playRoute" v-show="showSearchBtn"><i class="el-icon-video-play"></i>&nbsp;播放</div>
-            <div class="search_btn" @click="pauseRoute" v-show="showPauseBtn"><i class="el-icon-video-pause"></i>&nbsp;暂停</div>
-            <div class="search_btn" @click="keepOnRoute" v-show="showkeepOnBtn"><i class="el-icon-video-play"></i>&nbsp;继续</div>
-            <div class="search_btn" @click="stopRoute" v-show="!showSearchBtn"><i class="el-icon-switch-button"></i>&nbsp;停止</div>
-            <div v-show="showTimeRange">
-              <el-date-picker
-                v-model="queryRouteParam.time_range"
-                class="time_range_select"
-                type="datetimerange"
-                size="mini"
-                range-separator="至"
-                start-placeholder="开始日期"
-                end-placeholder="结束日期">
-              </el-date-picker>
-            </div>
-            <el-select v-model="move_speed" size="mini" class="time_select">
-              <el-option
-                v-for="item in speedOptions"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value">
-              </el-option>
-            </el-select>    
-        </div>
-        <div class="search_content" v-else>
-            <div class="interval_title">每隔</div>
-            <el-select v-model="queryInterval" size="mini" class="interval_select">
-              <el-option
-                v-for="item in intervalPickerOptions"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value">
-              </el-option>
-            </el-select>    
-            <div class="search_btn" @click="FreshMonitorRoute"><i class="el-icon-refresh-right"></i>&nbsp;刷新</div>
-            <div class="interval_title">计时</div>
-             <div class="interval_content">{{countdownInterval}}秒</div>
-            <!-- <div class="search_btn btn_onlyred" @click="StartCountDown"><i class="el-icon-caret-right"></i>&nbsp;开始</div> -->
-            <div :class="[StartBtnReadOnly==true ?'search_btn btn_onlyred':'search_btn']" @click="StartCountDown"><i class="el-icon-caret-right"></i>&nbsp;开始</div>
-            <div :class="[StopBtnReadOnly==true ?'search_btn btn_onlyred':'search_btn']" @click="StopCountDown"><i class="el-icon-switch-button"></i>&nbsp;停止</div>
-
-          
-        </div>
-      </div>
-      <el-button id="toggleListBtn" @click="toggleTabs" :icon="'el-icon-arrow-'+toggleIcon"></el-button>
-      <el-tabs type="card" @tab-click="clickTab" v-model="activeName" v-show="showTabs">
-        <el-tab-pane label="我的设备" name="deviceList">
-            <div id="student-container">
-              <el-table class="ontop-table"  ref="multipleTable" row-key="id" :data="data"  @row-click="currentRowClick" highlight-current-row>
-                  <!-- <el-table-column type="selection" width="50" align="center" reserve-selection></el-table-column> -->
-                  <el-table-column prop="status_icon" align="center"  label="类型" width="45">
-                    <template slot-scope="scope">
-                      <img :src="statusIcons[ scope.row.status_icon]" class="status_img">
-                      
-                    </template>
-                  </el-table-column>
-                  <el-table-column prop="imei" align="center"  label="设备号">
-                    <template slot-scope="scope">
-                      {{ scope.row.imei  ||  scope.row.rfid}}
-                    </template>
-                  </el-table-column>
-                  <el-table-column prop="status_text" label="状态" align="center"  width="60"></el-table-column>
-              </el-table>
-              <el-pagination
-                small
-                background
-                class="pagination-container"
-                hide-on-single-page
-                @size-change="handleSizeChange"
-                @current-change="handleCurrentChange"
-                :current-page="paginate.current"
-                :page-sizes="paginate.sizes"
-                :page-size="paginate.limit"
-                :pager-count="5"
-                layout="slot, prev, pager, next, total"
-                :total="paginate.total"/>
-            </div>
-        </el-tab-pane>
-      </el-tabs>
-    </bm-control>
-    <!-- 地图底部控件 -->
-    <bm-control anchor="BMAP_ANCHOR_BOTTOM_LEFT" class="bottom_box" :offset="listControlOffset">
-      <el-button id="bottomToggleBtn" @click="bottomToggleTabs" :icon="'el-icon-arrow-'+BotToggleIcon"></el-button>
-      <div id="route-container" v-show="bottomShowTabs">
-        <div class="route_content" >
-          <el-table :data="Routedata" class="route_table" v-show="showRouteContent" @row-click="clickRouteRow" highlight-current-row>
-              <el-table-column type="index" width="50"> </el-table-column>
-              <el-table-column prop="SignalType" align="center"  label="定位类型"></el-table-column>
-              <el-table-column prop="PassTime" align="center" label="定位时间"></el-table-column>
-              <el-table-column prop="BatteryLevel" align="center" label="电量"></el-table-column>
-              <!-- <el-table-column prop="address" align="center"  label="经纬度"></el-table-column> -->
-              <el-table-column label="经纬度" align="center"  >
-                  <template slot-scope="scope">
-                    <div> {{scope.row.Longitude}},{{scope.row.Latitude}}
-                      <span v-if="scope.row.Address">@{{scope.row.Address}}</span>
-                    </div> 
-                  </template>
-              </el-table-column>
-            <!-- <el-table-column prop="address" align="center"  label="查看"></el-table-column> -->
-          </el-table>
-        </div>
-      </div>
-    </bm-control>
-
-     <bml-lushu
-        @stop="resetRoute"
-        :path="path"
-        :icon="icon"
-        :play="playState"
-        :speed="move_speed"
-        :rotation="true">
-      </bml-lushu>
-  </baidu-map>
-    
-    
-</template>
-
-<script>
-import rlListOperate from "@/layout/rl-list-operate/rlListOperate";
-import DistanceTool from '@/utils/DistanceTool'
-import {BmlMarkerClusterer} from 'vue-baidu-map'
-import userInfoDialog from "./userInfoDialog";
-import {BmlLushu} from 'vue-baidu-map'
-import $ from "jquery";
-export default {
-  mixins: [rlListOperate],
-  components:{BmlMarkerClusterer,userInfoDialog,BmlLushu},
-  data() {
-    return {
-      playState: false,
-      showSearchContent:true,
-      route_radio:1,
-      pointArr:[],
-      path: [],
-      move_speed:200,
-      icon: {
-        url: 'https://rlfd.oss-cn-hangzhou.aliyuncs.com/catch_fd/car/car_p_3.png',
-        size: {width: 36, height: 36},
-        opts: {anchor: {width: 18, height:13}}
-      },
-      activeName: 'deviceList',
-      loading: false,
-      center: '杭州市滨江区',
-      url:'map/queryDeviceList',
-      alarm_data:[],
-      StartBtnReadOnly:false,
-      StopBtnReadOnly:true,
-      infoWindow:{},
-      currentUserId:'',
-      showSearchBtn:true,
-      showPauseBtn:false,
-      showkeepOnBtn:false,
-      formVisible: false,
-      mapTypeControlOffset:{},
-      navigationControlOffset:{},
-      showTabs:true,
-      bottomShowTabs:false,
-      showRouteContent:true,
-      currentShowTab:'realinfo',
-      listControlOffset:{},
-      toggleIcon: 'right',
-      BotToggleIcon: 'up',
-      zoom: 13,
-      mapData: [],
-      show: false,
-      map: null,
-      markers:[],
-      pointArr:[],
-      content: "",
-      opts: null,
-      queryParam:{
-        limit:15
-      },
-
-      userFormVisible:false,
-      statusIcons:{
-        stop:'https://rlfd.oss-cn-hangzhou.aliyuncs.com/catch_fd/icon/stop.png',
-        alarm:'https://rlfd.oss-cn-hangzhou.aliyuncs.com/catch_fd/icon/alarm.png',
-        offline:'https://rlfd.oss-cn-hangzhou.aliyuncs.com/catch_fd/icon/offline.png',
-        online:'https://rlfd.oss-cn-hangzhou.aliyuncs.com/catch_fd/icon/online.png',
-        run:'https://rlfd.oss-cn-hangzhou.aliyuncs.com/catch_fd/icon/run.png',
-        unuse:'https://rlfd.oss-cn-hangzhou.aliyuncs.com/catch_fd/icon/unuse.png',
-      },
-      markerIcons: { // 覆盖物图标
-                car: 'https://rlfd.oss-cn-hangzhou.aliyuncs.com/catch_fd/car/car_2_0.png',
-                origin: 'https://rlfd.oss-cn-hangzhou.aliyuncs.com/wxt_school/origin_icon.png', 
-                terminus: 'https://rlfd.oss-cn-hangzhou.aliyuncs.com/wxt_school/terminus_icon.png', 
-                alarm: 'https://rlfd.oss-cn-hangzhou.aliyuncs.com/wxt_school/alarm_icon.png', 
-                // node_gps: 'https://rlfd.oss-cn-hangzhou.aliyuncs.com/wxt_school/node_gps.png', 
-                node: 'https://rlfd.oss-cn-hangzhou.aliyuncs.com/wxt_school/node_wifi.png',  
-
-      },
-      currentRow: null,
-      alarmReasonList:[],
-      queryInterval:15,
-      countdownInterval:15,
-      intervalPickerOptions:[{
-          value: 5,
-          label: '5秒'
-        },{
-          value: 8,
-          label: '8秒'
-        },{
-          value: 10,
-          label: '10秒'
-        },{
-          value: 12,
-          label: '12秒'
-        },{
-          value: 15,
-          label: '15秒'
-        },{
-          value: 20,
-          label: '20秒'
-        },{
-          value: 25,
-          label: '25秒'
-        }, {
-          value: 30,
-          label: '30秒'
-      }],
-      timePickerOptions: [{
-          value: 3*3600,
-          label: '3小时内'
-        }, {
-          value: 6*3600,
-          label: '6小时内'
-        }, {
-          value: 12*3600,
-          label: '12小时内'
-        }, {
-          value: 24*3600,
-          label: '24小时内'
-        }, {
-          value: 48*3600,
-          label: '3天内'
-        }, {
-          value: 0,
-          label: '自定义'
-      }],
-      startDateTime:'',
-      queryRouteInterval:6*3600,
-      queryRouteParam: {
-        imei:'',
-        time:'',
-        time_range:'',
-      },
-      showTimeRange:false,
-      speedOptions:[{
-          value: 50,
-          label: '很慢(50)'
-        }, {
-          value: 100,
-          label: '慢速(100)'
-        }, {
-          value: 200,
-          label: '一般(200)'
-        }, {
-          value: 500,
-          label: '比较快(500)'
-        }, {
-          value: 1000,
-          label: '很快(1000)'
-      }, {
-          value: 5000,
-          label: '超快(5000)'
-      }],
-      
-      trackMarkers:[],
-      Routedata:[],
-    };
-  },
-  unmount () {
-    distanceTool && distanceTool.close()
-  },
-  mounted(){
-    let topTables = document.getElementsByClassName('ontop-table');
-    let routeTables = document.getElementsByClassName('route_table');
-    this.alarmReasonList=this.$appConfig["alarmReasonList"];
-    topTables.forEach((item,index) => {
-      item.onwheel = function(e) {
-        e.stopPropagation();
-      }
-    })
-    routeTables.forEach((item,index) => {
-      item.onwheel = function(e) {
-        e.stopPropagation();
-      }
-    })
-    let params = this.$router.currentRoute.query 
-    // this.queryParam.device_number=params.device_number
-  },
-  created(){
-    window.showUserInfo=this.showUserInfo;
-  },
-  methods: {
-    init({ BMap, map }) {
-      this.map = map;
-      // 初始化地图,设置中心点坐标
-
-      this.mapTypeControlOffset= new BMap.Size(10, 40)
-      this.navigationControlOffset=new BMap.Size(10, 80)
-      this.listControlOffset=new BMap.Size(0, 0)
-     //开始测量
-     this.distanceTool = new BMapLib.DistanceTool(map);
-      // 添加鼠标滚动缩放
-      map.enableScrollWheelZoom();
-
-      
-    },
-    
-    openDistanceTool (e) {
-      const {distanceTool} = this
-      distanceTool && distanceTool.open()
-    },
-
-
-    showUserInfo(val){
-      this.currentUserId=val
-      this.userFormVisible=true
-    },
-    closeUserDialog(){
-      this.userFormVisible=false
-    },
-  
-    currentRowClick(val){
-       this.map.clearOverlays()
-      this.addSingleMarker(val)
-    },
-  
-    addSingleMarker(data){
-      let that=this
-      // 如果没有经纬度
-      if (!data.latitude || !data.longitude) {
-          this.queryRouteParam.imei='';
-          this.$message.warning('暂无定位数据');
-          return false;
-      }
-      this.queryRouteParam.imei=data.imei;
-      var pt = new BMap.Point(data.longitude, data.latitude);
-      var opts = {
-          width : 320,     // 信息窗口宽度
-          enableAutoPan:false
-      }
-      var  myIcon = new BMap.Icon(this.markerIcons['car'], new BMap.Size(32, 32));
-      myIcon.setImageSize(new BMap.Size(32, 32));
-      var marker = new BMap.Marker(pt, {
-          icon: myIcon
-      }); // 创建标注
-
-      let windowContent=this.createMarkerContent(data)
-      this.infoWindow = new BMap.InfoWindow(windowContent,opts);  // 创建信息窗口对象 
-
-      marker.addEventListener("click", function(){     
-          this.map.openInfoWindow(that.infoWindow, pt); //开启信息窗口
-      });
-      this.map.addOverlay(marker);
-
-      this.map.openInfoWindow(this.infoWindow, pt); //开启信息窗口
-      this.map.centerAndZoom(pt,13);
-    },
-    createMarkerContent(data){
-      let address
-      if(data['loc_mode'] && data['loc_mode'].toLowerCase() =='rfid'){
-            address=data['address']
-      }else{
-          var myGeo = new BMap.Geocoder();      
-          // 根据坐标得到地址描述    
-          myGeo.getLocation(new BMap.Point(data.longitude,data.latitude), function(result){          
-              address=result.address
-              $('#marker_address').text(address);
-          });
-      }
-      var content ='<div class="info_label">设备编号:' + (data.imei || data.rfid) + '</div>'
-      if(data.online_time){
-          content += '<div class="info_label">剩余电量:' + data.battery_level + '%</div>'
-      }else{
-          content += '<div class="info_label">剩余电量:--</div>'
-      }
-      content += '<div class="info_label">定位地址:<a id="marker_address">' + address + '</a></div>' 
-      content += '<div class="info_label">定位类型:' + data.loc_mode + '</div>'
-      content += '<div class="info_label">在线时间:'+data.online_time+'</div>'
-        
-        // if(data.alarm_state>0 && data.alarm_reason_list){
-        //   content += '<div class="info_label">告警标签:'
-        //   for (let i=0;i<data.alarm_reason_list.length;i++)
-        //   { 
-        //     content+='<span class="el-tag el-tag--dark el-tag--small el-tag--light" style="border:0px;background-color:'+this.alarmReasonList[data.alarm_reason_list[i].value]+';">'+data.alarm_reason_list[i].text+'</span> '
-        //   }
-        //   content +='</div>'
-        // }
-
-      return content
-    },
-   
-    
-    clickTab(tab) {
-      let name = tab.name;
-      if (name == 'deviceList') {
-        this.url = 'map/queryDeviceList';
-      }
-      this.handleRefresh();
-    },
-    
-    toggleTabs(e) {
-            this.showTabs = !this.showTabs
-             var toggleListBtn = document.getElementById('toggleListBtn')
-              var rightSearchBox = document.getElementById('right-search-box')
-             
-             var list_container = document.getElementById('route-container')
-             var  control_container = document.getElementById('control-container')
-            
-             var bottomToggleBtn = document.getElementById('bottomToggleBtn')
-            if (this.showTabs) {
-             
-              this.toggleIcon = 'right'
-              toggleListBtn && (toggleListBtn.style.right = '310px')
-              rightSearchBox && (rightSearchBox.style.right = '310px')
-              list_container && (list_container.style.width = 'calc(100% - 310px)')
-              control_container && (control_container.style.width = 'calc(100% - 310px)')
-              bottomToggleBtn && (bottomToggleBtn.style.left = 'calc(50% - 140px)')
-            } else {
-             
-              this.toggleIcon = 'left'
-              toggleListBtn && (toggleListBtn.style.right = '0px')
-              rightSearchBox && (rightSearchBox.style.right = '0px')
-              list_container && (list_container.style.width = '100%')
-              control_container && (control_container.style.width = '100%')
-              bottomToggleBtn && (bottomToggleBtn.style.left = '50%')
-            }
-            
-    },
-    bottomToggleTabs(e) {
-            this.bottomShowTabs = !this.bottomShowTabs
-            var bottomToggleBtn = document.getElementById('bottomToggleBtn')
-            if (this.bottomShowTabs) {
-              this.BotToggleIcon = 'down'
-              bottomToggleBtn && (bottomToggleBtn.style.bottom = '195px')
-            } else {
-             
-              this.BotToggleIcon = 'up'
-              bottomToggleBtn && (bottomToggleBtn.style.bottom = '0px')
-            }
-            
-    },
-    handleTimeChange(val){
-      if(val==0){
-        this.showTimeRange=true
-      }else{
-        this.showTimeRange=false
-      }
-    },
-    searchRoute(){
-       this.playState=false
-      if(this.queryRouteParam.imei==''){
-        this.$message.error('请先选择设备');
-          return false;
-      }
-      this.queryRouteParam.time=this.queryRouteInterval
-      if(this.queryRouteParam.time==0 && this.queryRouteParam.time_range==''){
-        this.$message.error('请选择自定义时间段');
-        return false;
-      }
-      this.queryRouteGps()
-      
-    },
-    queryRouteGps(){
-      this.loading = true;
-      this.$http.get('map/queryDeviceRouteGps',{ params: this.queryRouteParam,timeout:60000}).then(res=>{
-          this.map.clearOverlays()
-          let data=[]
-          let trackLength=res.data.length
-          if(trackLength>0){
-            for (var i = 0; i < trackLength; i++){
-                let item=res.data[i]
-                item['index']=i
-                data[i]=item
-            }
-            this.DrawMapLine(data)
-          }
-          this.Routedata=data 
-          this.loading = false;
-          var bottomToggleBtn = document.getElementById('bottomToggleBtn')
-          if(!this.bottomShowTabs){
-             this.bottomShowTabs = !this.bottomShowTabs
-             this.BotToggleIcon = 'down'
-             bottomToggleBtn && (bottomToggleBtn.style.bottom = '195px')
-          }
-          
-          
-      }).catch(e => {
-        this.loading = false;
-      });
-    },
-    //播放按钮
-    playRoute(){
-      this.path=this.pointArr
-      //显示暂停 停止按钮
-      this.showSearchBtn=false
-      this.showPauseBtn=true
-      this.playState=true
-    },
-    //播放结束回调
-    resetRoute(){
-      this.showSearchBtn=true
-      this.playState=false
-      this.showPauseBtn=false
-      this.showkeepOnBtn=false
-    },
-    //暂停
-    pauseRoute(){
-      this.showkeepOnBtn=true
-      this.showPauseBtn=false
-      this.playState=false
-    },
-    //继续
-    keepOnRoute(){
-       this.showkeepOnBtn=false
-       this.showPauseBtn=true
-       this.playState=true
-    },
-    //停止
-    stopRoute(){
-      this.path=[]
-      this.showSearchBtn=true
-      this.showkeepOnBtn=false
-      this.showPauseBtn=false
-      this.playState=false
-    },
-    //监控轨迹刷新
-    FreshMonitorRoute(){
-      if(this.queryRouteParam.imei==''){
-        this.$message.error('请先选择设备');
-          return false;
-      }
-      // console.log('query');
-      var endDateTime = new Date();
-      var time = Math.round((endDateTime-this.startDateTime)/1000)
-      this.queryRouteParam.time=time
-      this.queryRouteGps()
-    },
-    //开始监控
-    StartCountDown(){
-      if(this.queryRouteParam.imei==''){
-        this.$message.error('请先选择设备');
-          return false;
-      }
-      this.StartBtnReadOnly=true
-      this.StopBtnReadOnly=false
-      this.startDateTime = new Date();
-      console.log('start',this.startDateTime)
-      this.timer= setInterval(() => {
-        this.countdownInterval--  
-        if(this.countdownInterval<0){
-          this.countdownInterval=this.queryInterval-1
-          //开始查询
-          this.FreshMonitorRoute()
-        }
-      }, 1000)
-    },
-    //停止监控
-    StopCountDown(){
-      clearInterval(this.timer);
-      this.StartBtnReadOnly=false
-      this.StopBtnReadOnly=true
-      this.countdownInterval=this.queryInterval
-    },
-
-    DrawMapLine(data){
-
-        var pointType = "node";//点类型
-        var pointLogLat = new BMap.Point(data[0].Longitude, data[0].Latitude);//终点
-        this.pointArr=[]
-        var trackCount=data.length
-        var onLineCoordinates = [];
-        for (var i = trackCount-1; i >= 0; i--)
-        {
-            //线上的点
-            pointLogLat = new BMap.Point(data[i].Longitude, data[i].Latitude);
-
-            this.pointArr.push(pointLogLat)
-            onLineCoordinates.push(pointLogLat);
-            //描点
-            if (i == 0){
-                pointType = "terminus";
-            }else if (i==(trackCount - 1)){
-                pointType = "origin";
-            }else if (data[i].AlarmType >0 ){
-                pointType = "alarm";
-            }else{
-                pointType = "node";
-            }   
-            var pointMarker = this.CreatePointMarkers(data[i], pointType);
-            this.trackMarkers.push(pointMarker);
-            
-        }
-        var sy = new BMap.Symbol(BMap_Symbol_SHAPE_BACKWARD_OPEN_ARROW, {
-            scale: 0.6,//图标缩放大小
-            strokeColor:'#fff',//设置矢量图标的线填充颜色
-            strokeWeight: '2',//设置线宽
-        });
-        var icons = new BMap.IconSequence(sy, '10', '30');
-        //画线
-        var polyline = new BMap.Polyline(onLineCoordinates,{
-          enableEditing: false,//是否启用线编辑,默认为false
-          enableClicking: true,//是否响应点击事件,默认为true
-          icons:[icons],
-          strokeWeight:'4',//折线的宽度,以像素为单位
-          strokeOpacity: 0.8,//折线的透明度,取值范围0 - 1
-          strokeColor:"blue" //折线颜色
-        });
-        this.map.addOverlay(polyline);
-        //最佳视野
-        this.map.setViewport(onLineCoordinates,{margins: [0, 200, 100,0] ,zoomFactor:-1});
-    },
-    CreatePointMarkers(pointInfo, pType)
-    {
-        // console.log(pType)
-        var _this=this
-        var trackMarker;
-        var trackPoint = new BMap.Point(pointInfo.Longitude, pointInfo.Latitude);
-
-        if(pType=='node_gps'){
-          var pointIcon = new BMap.Icon(this.markerIcons[pType], new BMap.Size(20, 20))
-          pointIcon.setImageSize(new BMap.Size(20, 20));
-
-        }else{
-          var pointIcon = new BMap.Icon(this.markerIcons[pType], new BMap.Size(27, 32));
-        }
-        // var pointIcon = new BMap.Icon(this.markerIcons[pType], new BMap.Size(27, 32));
-            //描点,创建标注 
-        pointIcon.iconAnchor = new BMap.Point(5, 5);
-        pointIcon.shadow = "";
-        trackMarker = new BMap.Marker(trackPoint, { icon: pointIcon });
-
-        if(pType=='node_gps'){
-          // trackMarker.setOffset(new BMap.Size(-1, -5));//大图标,偏移确定图片在点正上方
-        }else{
-          trackMarker.setOffset(new BMap.Size(-1, -15));//大图标,偏移确定图片在点正上方
-        }
-        
-        
-        trackMarker.addEventListener("click", function ()
-        {
-              var myGeo = new BMap.Geocoder();      
-                // 根据坐标得到地址描述    
-              myGeo.getLocation(new BMap.Point(pointInfo.Longitude,pointInfo.Latitude), function(result){     
-                          let index=pointInfo['index']     
-                          pointInfo['Address']=result.address
-                          _this.Routedata[index]=pointInfo
-                          var trackPoint = new BMap.Point(pointInfo.Longitude, pointInfo.Latitude);
-                          var content ='<p>经过时间:' + pointInfo.PassTime + '</p><p>地址:' + pointInfo.Address + '</p><p>定位类型:' + pointInfo.SignalType + '</p>'
-                          var opts = {
-                                width : 320,     // 信息窗口宽度
-                                enableAutoPan:false
-                            }
-                          var infoWindow = new BMap.InfoWindow(content,opts);  // 创建信息窗口对象  
-                          _this.map.openInfoWindow(infoWindow,trackPoint);
-              });
-              // var content ='<p>经过时间:' + pointInfo.PassTime + '</p><p>地址:' + pointInfo.Address + '</p><p>定位类型:' + pointInfo.SignalType + '</p>'
-            
-            
-           
-        });
-        this.map.addOverlay(trackMarker);
-
-        return trackMarker;
-    },
-    clickRouteRow(row){
-      // console.log(row)
-      var _this=this
-      var myGeo = new BMap.Geocoder();      
-                // 根据坐标得到地址描述    
-      myGeo.getLocation(new BMap.Point(row.Longitude,row.Latitude), function(result){     
-          let index=row['index']     
-          row['Address']=result.address
-          _this.Routedata[index]=row
-          var trackPoint = new BMap.Point(row.Longitude, row.Latitude);
-          var content ='<p>经过时间:' + row.PassTime + '</p><p>地址:' + row.Address + '</p><p>定位类型:' + row.SignalType + '</p>'
-          var opts = {
-              width : 320, // 信息窗口宽度
-              enableAutoPan:false
-          }
-          var infoWindow = new BMap.InfoWindow(content,opts);  // 创建信息窗口对象  
-          _this.map.centerAndZoom(trackPoint, 19);
-          _this.map.openInfoWindow(infoWindow,trackPoint);
-          
-      });
-    },
-    RouteTypeChange(value){
-      // if(this.queryRouteParam.imei==''){
-      //   this.$message.error('请先选择设备');
-      //     return false;
-      // }
-      if(value==1){
-        clearInterval(this.timer);
-        this.showSearchContent=true
-      }else{
-        this.map.clearOverlays()
-        this.showSearchContent=false
-      }
-
-    }
-
-    
-  },
-  beforeDestroy() {
-    
-  }
-};
-</script>
-
-<style lang="scss" scoped>
-.bm-view {
-  width: 100%;
-  // height: 100vh;
-  height: calc(100vh - 84px);
-}
-
-
-#sole-input {
-  width: 250px;
-}
-#sole-input:focus {
-  outline: none;
-}
-
-
-.app-container {
-    height: calc(100vh - 102px);
-}
-::v-deep .el-dialog__body {
-        padding: 0;
-    }
-::v-deep .info_label{
-  padding-top:5px;
-  font-size: 14px;
-}
-::v-deep .handle_btn{
-  margin-top: 10px;
-}
-#search-button{
-  margin-left:1px;
-}
-#student-container{
-  width:310px;
-  height: calc(100vh - 102px);
-  background-color: #fff;
-}
-.ontop-table{
-   width:100%;
-  height: calc(100% - 100px);
-  max-height: 700px;
-  overflow: auto;
-}
-
-#toggleListBtn {
-  background:#5c90d2 ;
-  color:#fff;
-  font-size: 21px;
-  height: 50px;
-  width: 20px !important;
-  text-align: center !important;
-  position: absolute;
-  top:calc(50vh - 50px);
-  right: 310px;
-  padding:14px 0px !important;
-}
-#right-search-box{
-  background:#5c90d2 ;
-  color:#fff;
-  font-size: 21px;
-  height: 145px;
-  border: 1px solid #5c90d2;
-  width: 280px;
-   position: absolute;
-  top:50px;
-  right: 310px;
-}
-.search_title{
-  font-size: 12px;
-  font-weight: bold;
-  line-height: 27px;
-  padding-left: 10px;
-  width:100%;
-  height:28px;
-}
-.search_content{
-  width:100%;
-  height:115px;
-  background-color: #fff;
-}
-.time_select{
-  width:120px;
-  float: left;
-  margin-left:10px;
-  margin-top:5px;
-}
-.interval_select{
-  width:100px;
-  float: left;
-  margin-right:10px;
-  margin-top:5px;
-}
-
-.time_range_select{
-  width:260px;
-  float: left;
-  margin-left:10px;
-  margin-top:5px;
-}
-.interval_title{
-  width:40px;
-  font-size: 13px;
-  line-height: 25px;
-  text-align: left;
-  height: 28px;
-  float: left;
-  color:#000;
-  margin-left:20px;
-  margin-top:5px;
-
-}
-.interval_content{
-  width:35px;
-  font-size: 13px;
-  line-height: 25px;
-  text-align: left;
-  height: 28px;
-  float: left;
-  color:#000;
-  margin-left:10px;
-  margin-top:5px;
-  color:blue;
-}
-
-.search_btn{
-  width:55px;
-  padding: 1px;
-  background:#5c90d2 ;
-  font-size: 13px;
-  line-height: 25px;
-  text-align: center;
-  height: 28px;
-  float: left;
-  margin-left:10px;
-  margin-top:5px;
-  cursor: pointer;
-}
-.search_btn:hover{
-  background:#5497f0 ;
-}
-#bottomToggleBtn{
-  background:#5c90d2 ;
-  color:#fff;
-  font-size: 20px;
-  height: 21px;
-  width: 50px;
-  text-align: center !important;
-  position: absolute;
-  bottom:0px;
-  left: calc(50% - 140px);
-  padding:0px 14px !important;
-}
-#route-container{
-  background-color: #fff;
-  width:calc(100% - 310px);
-  height: 195px;
-}
-#control-container{
-   background-color: #fff;
-  width:calc(100% - 310px);
-  padding-right: 30px;
-  height: 30px;
-}
-.bottom_box{
-  z-index: 98 !important;
-  // border-top:2px #accdea solid;
-  width:100%;
-}
-.route_table{
-  height:192px;
-  width:100%;
-  overflow: auto;
-}
-
-.status_icon{
- width:60px;
- height: 100%;
- text-align: left;
- margin-right:5px ;
- display: inline-block;
-}
-.status_img{
-  float: left;
-  margin-top:7px;
-}
-.el-radio{
-  margin-right: 10px !important;
-}
-.head_control_select{
-  width:200px;
-  height: 24px;
-  text-align: center;
-  line-height: 22px;
-  margin-top: 3px;
-  margin-right: 5px;
-  float: right;
-  font-size: 14px;
-}
-.head_control_btn{
-   width:60px;
-  height: 24px;
-  text-align: center;
-  line-height: 22px;
-  margin-top: 3px;
-  margin-right: 5px;
-  float: right;
-  border: 1px solid #d64635;
-  color: #666;
-  font-size: 14px;
-  cursor: pointer;
-  color: #fff;
-  background: #d64635;
-}
-
-
-.route_content{
-  // background-color: #eee;
-  border-top:1.5px #5c90d2 solid;
-  width:100%;
-}
-
-.right_box{
-   background-color: #fff;
-  z-index: 99 !important;
-  border-left:1px #accdea solid;
-}
-.btn_onlyred{
-  pointer-events: none;
-  cursor: default;
-  opacity: 0.6;
-}
-</style>

+ 0 - 144
src/views/map/urgentDialog.vue

@@ -1,144 +0,0 @@
-<template>
-  <el-dialog
-   :visible.sync="dialog"   
-    width="460px"
-   direction="rtl" 
-  >
-       <el-divider class="dialog-divider"></el-divider>
-      <div class="dialog-content">
-        <el-row class="dialog-row">
-          <div class="dialog-row-title">
-            紧急联系人
-          </div>
-          <div v-for="(item, index) in tableData" :key="index" class="dialog-row-content">
-            <span class="content-row"> <span class="name-item"> 联系人姓名: </span> <span>{{item.name}}</span> </span>
-            <span class="content-row"> <span class="name-item"> 联系人电话: </span> <span>{{item.phone}}</span> </span>
-            <span class="content-row"> <span class="name-item"> 与用户关系: </span> <span>{{item.ship_text}}</span> </span>
-          </div>
-        </el-row>
-
-      </div>
-    <el-divider class="dialog-divider"></el-divider>
-    <span slot="footer" class="dialog-footer">
-      <!-- <el-button @click="dialogVisible = false">取 消</el-button> -->
-      <el-button style="margin-left:20px" type="primary" @click="dialog = false">确 定</el-button>
-    </span>
-  </el-dialog>
-</template>
-<script>
-
-export default {
-  props: ["displayVisible","deviceId"],
-
-  components: {
-
-  },
-  created() {
-    // 初始化统计数据
-    // this.getChartData()
-  },
-  data() {
-    return {
-        
-        tableData:[],
-     
-    };
-  },
-  computed: {
-    dialog: {
-      set(val) {
-        this.$emit("formCancel", val); // 表示将子组件改变的值传递给父组件
-      },
-      get() {
-        if (this.displayVisible) {
-        //   this.loading = true
-            this.$http.post("urgentList", { device_id: this.deviceId }).then(resp => {
-                this.tableData = resp.data;
-                
-              }).catch(() => {
-                
-              });
-            // this.$http.get("users/"+this.userId).then(response => {
-            //     this.userInfo=response.data
-            //     // console.log(this.userInfo)
-            // })
-        }
-        // console.log(this.activeRfid)
-        
-        return this.displayVisible; // 表示获取父组件的值
-      }
-    }
-  },
-  mounted(){
-    
-  },
-
-  methods: {
-   
-    
-  }
-};
-</script>
-<style lang="scss" scoped>
-
-.el-drawer span:focus {
-  outline: none;
-}
-
-::v-deep .el-dialog{
-  min-width: 360px;
-}
- .el-dialog__body{
-  padding: 0px!important;
-  /* padding-bottom: 0px!important; */
-}
-
-
-.dialog-divider{
-  margin:0px;
-  margin-top:10px;
-}
-.dialog-content{
-  padding: 5px;
-}
-
-.dialog-row{
-  display: flex;
-  flex-direction: column;
-  padding: 10px;
-  font-size: 12px;
-}
-.dialog-row-title{
-  margin-left: 20px;
-  margin-bottom: 10px;
-  font-size: 15px;
-  color: black;
-}
-.dialog-row-content{
-  margin-left: 50px;
-  display: flex;
-  flex-direction: column; 
-  margin-bottom: 10px;
-}
-.content-row{
-  margin-top: 5px;
-}
-.name-item{
-  width: 60px;
-  white-space:pre;
-  word-wrap: break-word;
-}
-.el-drawer__body{
-  max-height:100vh;
-  overflow: hidden;
-   overflow-y: auto;
-   width:100%;
-
-}
-.primary-btn{
-  color: #fff;
-  background-color: #409eff;
-  border-color: #98a9b9;
-  margin-left:5px;
-}
-</style>