const api = require('../../api/index.js');
const app = getApp();
Page({
  data: {
    // 地图初始中心坐标（北京市中心）
    longitude: 116.404,
    latitude: 39.915,
    scale:10,
    markers: [],
    polyline: [],
    startLocation: {},
    endLocation: {},
    showTripInfo: true,
    showCallButton: true,
    showDriverInfo: true,
    carsNearby: 0,
    // 司机信息
    driverAvatar: 'https://esos-iot.bjdexn.cn/myminio/project/2a1b32553c3d4ef992bc797d26cf1614.png',
    driverName: '王师傅',
    carNumber: '京A88888',
    estimatedArrival: 5,
    locationTimer: null,
    isTracking: false,
    userdata:[],
    workorderdata:[]
  },  
// 收益统计
  onLoad() {
    // 初始化地图
this.getuser()
this.initMap()
wx.$on('wsMessage', this.handleWsMessage);
  },
  onHide(){
    // 页面卸载时，取消订阅，这是至关重要的一步！
    wx.$off('wsMessage', this.handleWsMessage);
  },
   /**
   * 处理接收到的 WebSocket 消息
   * @param {Object} message 从 app.js 广播过来的消息对象
   */
  handleWsMessage(message) {
    console.log('Other Page 收到 WebSocket 消息:', message);
 
    // 根据消息类型进行不同的处理
    switch (message.api) {
      case '/sysworkorder/selectworkorderlist':
    
        // 在这里可以更新地图、刷新UI等
        if (message.type==1) {
           this.getworkordertype()
        }

        break;
      
      case 'trajectoryInit':
        // 处理初始轨迹数据
        break;

      case 'heartbeatReply':
        // 心跳回复，通常不需要UI处理
        break;
    
      default:
        // 处理其他类型的消息
        break;
    }
  },
  // 获取待执行工单
  getworkordertype(){
    let data ={
      workorderId:'',
      workorderName:'',
      addressId:'',
      driverId:'',
      carId:'',
      customerId:'',
      workorderType:4,
      chargedischargeType:'',
    }
    api.request(`/sysworkorder/selectworkorderlist`, 'post',data ,{ isPublic: false })
    .then((data) => {
      console.log(data.data);
      if (data.code==200) {
       this.setData({
        workorderdata:data.data
       })
     
      }
    })
    .catch((err) => {
      console.error('请求失败：', err);
    });
  },
getuser(){
 
  api.request(`/sysoperation/selectoperationid`, 'post',{ isPublic: false })
  .then((data) => {
    console.log(data.data);
    if (data.code==200) {
      this.setData({
        userdata:data.data
      })
               // 设置数据到本地存储
wx.setStorage({
  key: 'user',  // 存储的key值
  data:data.data
});
   
    }
  })
  .catch((err) => {
    console.error('请求失败：', err);
  });
},
  // 初始化地图，获取用户位置
  initMap() {
    const that = this;
    
    // 获取用户当前位置
    wx.getLocation({
      type: 'gcj02', // 国测局坐标系，微信地图使用该坐标系
      success(res) {
        const longitude = res.longitude;
        const latitude = res.latitude;
        
        // 更新地图中心位置
        that.setData({
          longitude,
          latitude,
          startLocation: {
            longitude,
            latitude,
            name: '我的位置'
          },
          // 添加起点标记
          markers: [{
            id: 0,
            longitude,
            latitude,
            iconPath: 'https://esos-iot.bjdexn.cn/myminio/project/a0d245bf00c6493d949c3be82a6d2b98.png',
            width: 40,
            height: 40,
            anchor: {x: 0.5, y: 1}
          }]
        });
         // 加载附近车辆数据
         that.getloadNearbyCars();

      },
      fail() {
        wx.showToast({
          title: '无法获取位置，请检查权限',
          icon: 'none'
        });
      }
    });
  },


  // 预约叫车
  onelectricity(){

wx.navigateTo({
  url: `/package-order/pages/createorder/index?order=`,
})
  },

  onHide() {
    // 页面卸载时停止追踪
    this.stopTracking();
  },
  
 // 停止追踪
 stopTracking() {
  if (this.data.locationTimer) {
    clearInterval(this.data.locationTimer);
    this.setData({ 
      locationTimer: null,
      isTracking: false 
    });
  }

},
  // 加载附近车辆
  getloadNearbyCars() {
    const that = this;
   
        let data ={
          carId:'',
          carType:'',
          carMondel:'',
        }
        api.request(`/syscar/selectcarall`, 'post',data,{ isPublic: false })
        .then((data) => {
      if (data.code==200) {
        const cars = [];
         for (let index = 0; index < data.data.length; index++) {
         let carPosition = data.data[index].carPosition.split(",");
                   cars.push({
            id: 100+index,
            longitude: carPosition[1],
            latitude: carPosition[0],
            iconPath: 'https://esos-iot.bjdexn.cn/myminio/project/f6fba6c83b2d4864a73f5f1d83cda416.png',
            width: 30,
            height: 40,
            anchor: {x: 0.5, y: 0.5}
          });   
         }
         // 将车辆标记添加到现有标记中
         const updatedMarkers = [...that.data.markers];
         // 先移除之前的车辆标记
         const filteredMarkers = updatedMarkers.filter(marker => marker.id);
         // 添加新的车辆标记
         filteredMarkers.push(...cars);
         
         that.setData({
           markers: filteredMarkers,
           carsNearby: data.data.length
         });
        //  this.loadNearbyCars()
      }
      
        })
        .catch((err) => {
       
          console.error('请求失败：', err);
        });
    
 
  },
  // 加载附近车辆
  loadNearbyCars() {
    const { longitude, latitude } = this.data;
 
    if (this.data.isTracking) return;
    
    const that = this;
    this.setData({ isTracking: true });
    this.setData({
      locationTimer:setInterval(() => {
        let data ={
          carId:'',
          carType:'',
          carMondel:'',
        }
        api.request(`/syscar/selectcarall`, 'post',data,{ isPublic: false })
        .then((data) => {
      if (data.code==200) {
        const cars = [];
         for (let index = 0; index < data.data.length; index++) {
         let carPosition = data.data[index].carPosition.split(",");
                   cars.push({
            id: 100+index,
            longitude: carPosition[1],
            latitude: carPosition[0],
            iconPath: 'https://esos-iot.bjdexn.cn/myminio/project/f6fba6c83b2d4864a73f5f1d83cda416.png',
            width: 30,
            height: 40,
            anchor: {x: 0.5, y: 0.5}
          });   
         }
         // 将车辆标记添加到现有标记中
         const updatedMarkers = [...that.data.markers];
         // 先移除之前的车辆标记
         const filteredMarkers = updatedMarkers.filter(marker => marker.id);
         // 添加新的车辆标记
         filteredMarkers.push(...cars);
         
         that.setData({
           markers: filteredMarkers,
           carsNearby: data.data.length
         });
      }
      
        })
        .catch((err) => {
       
          console.error('请求失败：', err);
        });
      }, 10000)  // 每10秒更新一次位置
    })
    
 
  },

  // 取消订单
  positioning(){
    this.initMap()

  },
  
  details(e){

    wx.navigateTo({
    url: `/package-map/pages/map/index?id=${e.currentTarget.dataset.id}`,
  })
  },
  
 
  onShow() {
    //  this.loadNearbyCars()
this.getworkordertype()

  },
}); 
//