Browse Source

预约调试

XWookey 1 year ago
parent
commit
f90666f42b

+ 13 - 2
pages/charginfo/charginfo.js

@@ -391,8 +391,19 @@ console.info('xxxxxxxxxxxxxx')
     }
   },
 
-  seeReservation: function(){
-    let url = `/pages/reservation/reservation`;
+  seeReservation: function(e){
+    let idx = e.currentTarget.dataset.idx;
+    console.info(idx)
+    let {
+      chargStationId,
+      chargPileName,
+      chargPileId,
+      chargStationName,
+      id
+    } = idx;
+    let userInfo = wx.getStorageSync('userInfo');
+    let userId = userInfo.userId;
+    let url = `/pages/reservation/reservation?chargStationId=` + chargStationId + `&chargPileName=` + chargPileName + `&chargPileId=` + chargPileId + `&chargPileIdId=` + id + "&chargStationName=" + chargStationName + "&userId=" + userId;
     wx.navigateTo({
       url
     });

+ 3 - 1
pages/charginfo/charginfo.wxml

@@ -100,7 +100,9 @@
       </view>
       <view class="chargInfo_v">
       <view class="chargInfo_v_name">{{item.chargPileName}}</view>
-      <view class="chargInfo_v_id">{{item.chargPileId}}  <text wx:if="{{true}}" class="seeReservation" bindtap="seeReservation">查看预约</text></view>
+      <!-- GUYUTEST -->
+      <view class="chargInfo_v_id">{{item.chargPileId}}  <text wx:if="{{item.openStatus}}" class="seeReservation" bindtap="seeReservation">查看预约</text></view>
+      <view class="chargInfo_v_id">{{item.chargPileId}}  <text wx:if="true" class="seeReservation" bindtap="seeReservation"  data-idx="{{item}}">查看预约</text></view>
       </view>
       <view class="iconleft" >
         <view class="icon {{item.pileType=='慢充'?'slowBar':'fastBar'}}">{{item.pileType=='慢充'?'慢':'快'}}</view>

+ 154 - 3
pages/reservation/reservation.js

@@ -5,19 +5,170 @@ Page({
    * 页面的初始数据
    */
   data: {
-    timeList:["22:00 - 23:00","22:00 - 23:00","22:00 - 23:00","22:00 - 23:00","22:00 - 23:00","22:00 - 23:00","22:00 - 23:00","22:00 - 23:00","22:00 - 23:00","22:00 - 23:00","22:00 - 23:00","22:00 - 23:00","22:00 - 23:00","22:00 - 23:00"]
+    timeList:[],
+    chargStationId:'',
+    chargPileName:'加载中',
+    chargPileId:'',
+    chargPileIdId:'',
+    userId:'',
+    chargStationName:'',
+    earliestReservTime:'',
+    advanceReservDays:'',
+    minReservTime:'',
+    maxReservTime:'',
+    maxEarlyExerciseTime:'',
+    maxReservOvertime:'',
+    current:[],
+    second:[],
+    three:[],
+    four:[],
+    dayIndex:1,
+    dayFlag1:'',
+    dayFlag2:'',
+    dayFlag3:'',
+    dayFlag4:'',
   },
   goReservation(){
-    let url = `/pages/reservation/reservationEdit`;
+    let {
+      chargStationId,
+      chargPileName,
+      chargPileId,
+      chargPileIdId,
+      chargStationName,
+      userId,
+      earliestReservTime,
+      advanceReservDays,
+      minReservTime,
+      maxReservTime,
+      maxEarlyExerciseTime,
+      maxReservOvertime
+    } = this.data;
+
+    let url = `/pages/reservation/reservationEdit?chargStationId=` + chargStationId + `&chargPileName=` + chargPileName + 
+    `&chargPileId=` + chargPileId + 
+    `&chargPileIdId=` + chargPileIdId + 
+    "&chargStationName=" + chargStationName + 
+    "&earliestReservTime=" + earliestReservTime + 
+    "&advanceReservDays=" + advanceReservDays+ 
+    "&minReservTime=" + minReservTime + 
+    "&maxReservTime=" + maxReservTime +
+    "&maxEarlyExerciseTime=" + maxEarlyExerciseTime + 
+    "&maxReservOvertime=" + maxReservOvertime + 
+    "&userId=" + userId;
     wx.navigateTo({
       url
     });
   },
+  switchDay(e){
+    let dayIndex = e.currentTarget.dataset.idx;
+    let timeList = [];
+    if(dayIndex==1){
+      timeList = this.data.current;
+    }else if(dayIndex==2){
+      timeList = this.data.second;
+    }else if(dayIndex==3){
+      timeList = this.data.three;
+    }else if(dayIndex==4){
+      timeList = this.data.four;
+    };
+    this.setData({
+      dayIndex,
+      timeList
+    })
+  },
   /**
    * 生命周期函数--监听页面加载
    */
   onLoad(options) {
-
+    let that = this;
+    let {
+      chargStationId,
+      chargPileName,
+      chargPileId,
+      chargPileIdId,
+      userId,
+      chargStationName
+    } = options;
+
+    this.setData({
+        chargStationId,
+        chargPileName,
+        chargPileId,
+        chargPileIdId,
+        userId,
+        chargStationName
+      }
+    )
+
+    wx.request({
+      url: getApp().globalData.postHeadAgreement +'/restapi/wechat/ReservOrder?userId=' + userId + '&reservPileNo=' + chargPileId,
+      data: {
+      },
+      method: 'POST',
+      success(res) {
+        let earliestReservTime = res?.data?.result?.reservationConfig?.earliestReservTime
+        earliestReservTime = earliestReservTime?earliestReservTime:0;
+        let advanceReservDays = res?.data?.result?.reservationConfig?.advanceReservDays
+        advanceReservDays = advanceReservDays?advanceReservDays:0;
+        let minReservTime = res?.data?.result?.reservationConfig?.minReservTime
+        minReservTime = minReservTime?minReservTime:0;
+        let maxReservTime = res?.data?.result?.reservationConfig?.maxReservTime
+        maxReservTime = maxReservTime?maxReservTime:0;
+        let maxEarlyExerciseTime = res?.data?.result?.reservationConfig?.maxEarlyExerciseTime
+        maxEarlyExerciseTime = maxEarlyExerciseTime?maxEarlyExerciseTime:0;
+        let maxReservOvertime = res?.data?.result?.reservationConfig?.maxReservOvertime
+        maxReservOvertime = maxReservOvertime?maxReservOvertime:0;
+
+        let current = res?.data?.result?.current;
+        current.forEach(series => {
+          series.starttime = series.reservChargeStartTime.substr(11,5);
+          series.endtime = series.reservChargeEndTime.substr(11,5);
+        });
+        let second = res?.data?.result?.cursecondrent;
+        second.forEach(series => {
+          series.starttime = series.reservChargeStartTime.substr(11,5);
+          series.endtime = series.reservChargeEndTime.substr(11,5);
+        });
+        let three = res?.data?.result?.three;
+        three.forEach(series => {
+          series.starttime = series.reservChargeStartTime.substr(11,5);
+          series.endtime = series.reservChargeEndTime.substr(11,5);;
+        });
+        let four = res?.data?.result?.four;
+        four.forEach(series => {
+          series.starttime = series.reservChargeStartTime.substr(11,5);
+          series.endtime = series.reservChargeEndTime.substr(11,5);
+        });
+        let now = new Date();
+        let dayFlag1 = (now.getMonth() + 1) + "." + now.getDate()
+        now = new Date(now.setDate(now.getDate() + 1));
+        let dayFlag2 = (now.getMonth() + 1) + "." + now.getDate()
+
+        now = new Date(now.setDate(now.getDate() + 1));
+        let dayFlag3 =  (now.getMonth() + 1) + "." + now.getDate()
+
+        now = new Date(now.setDate(now.getDate() + 1));
+        let dayFlag4 = (now.getMonth() + 1) + "." + now.getDate()
+
+        that.setData({
+          earliestReservTime,
+          advanceReservDays,
+          minReservTime,
+          maxReservTime,
+          maxEarlyExerciseTime,
+          maxReservOvertime,
+          current,
+          second,
+          three,
+          four,
+          timeList: current,
+          dayFlag1,
+          dayFlag2,
+          dayFlag3,
+          dayFlag4
+        })
+      }
+    });
   },
 
   /**

+ 11 - 11
pages/reservation/reservation.wxml

@@ -7,25 +7,25 @@
     <view class='charging_text_title1'><!--
       <text class='bold'>{{chargPile.chargPileName}}</text>
       <text class="h1">终端编号:{{chargPile.chargPileId}}</text>-->
-      <text class='bold'>dddddddddddddddd</text>
-      <text class="h1">终端编号:111111111111</text>
+      <text class='bold'>{{chargPileName}}</text>
+      <text class="h1">终端编号:{{chargPileId}}</text>
     </view>
 </view>
 <view class="select_card">
-  <view class="card">
-    <view class="title">7.14</view>
+  <view class="card {{dayIndex==1?'active':''}}" data-idx="1" bindtap="switchDay">
+    <view class="title">{{dayFlag1}}</view>
     <image src="/images/yulan.png"/>
   </view>
-  <view class="card">
-    <view class="title">7.14</view>
+  <view class="card {{dayIndex==2?'active':''}}" data-idx="2" bindtap="switchDay">
+    <view class="title">{{dayFlag2}}</view>
     <image src="/images/yulan.png"/>
   </view>
-  <view class="card">
-    <view class="title">7.14</view>
+  <view class="card {{dayIndex==3?'active':''}}" data-idx="3" bindtap="switchDay">
+    <view class="title">{{dayFlag3}}</view>
     <image src="/images/yulan.png"/>
   </view>
-  <view class="card active">
-    <view class="title">7.14</view>
+  <view class="card {{dayIndex==4?'active':''}}" data-idx="4" bindtap="switchDay">
+    <view class="title">{{dayFlag4}}</view>
     <image src="/images/yulan.png"/>
   </view>
 </view>
@@ -33,7 +33,7 @@
 <view class="title2_sub">(显示近4天已预约时段,请酌情选择预约时间)</view>
 <view class="title2_line"></view>
 <scroll-view class="scrollView" scroll-y='true' wx:if="{{timeList.length > 0}}">
-  <view wx:for="{{timeList}}" wx:key="unique" data-index="{{index}}" class="card">{{item}}
+  <view wx:for="{{timeList}}" wx:key="unique" data-index="{{index}}" class="card">{{item.starttime}} ~ {{item.endtime}}
   </view>
 </scroll-view>
 

+ 196 - 1
pages/reservation/reservationEdit.js

@@ -1,20 +1,215 @@
-// pages/reservation/reservationEdit.js
+let Util = require("../../utils/util");
 Page({
 
   /**
    * 页面的初始数据
    */
   data: {
+    chargStationId:'',
+    chargPileName:'加载中',
+    chargPileId:'',
+    chargPileIdId:'',
+    userId:'',
+    chargStationName:'',
+    startparams:{
+      placeholder: '请选择时间', 
+      startDateTime: '2020-01-01 00:00',
+      endDateTime: '2040-01-01 00:00',
+      // pText: Util.formatTimePicker(new Date()) //'2022-04-30 00:00'
+      pText: '' //'2022-04-30 00:00'
 
+    },
+    finishparams:{
+      placeholder: '请选择时间', 
+      startDateTime: '2020-01-01 00:00',
+      endDateTime: '2040-01-01 00:00',
+      // pText: Util.formatTimePicker(new Date()) //'2022-04-30 00:00'
+      pText: ''
+    },
   },
+  bindStartparamsChange(e){
+    let startparams =  this.data.startparams;
+    let endparams =  this.data.endparams;
+    startparams.pText = e.detail
+    this.setData({
+      startparams:startparams
+    })
+    let currTime = new Date(e.detail );
 
+    console.info(currTime)
+    let curTime3 = new Date(currTime);
+    let estime = new Date(curTime3.setMinutes(curTime3.getMinutes() + parseInt(this.data.minReservTime)));
+    let curTime4 = new Date(currTime);
+    let eetime = new Date(curTime4.setMinutes(curTime4.getMinutes() + parseInt(this.data.maxReservTime)));
+    if(endparams?.pText){
+      let currEndTime = new Date(endparams.pText);
+      if(currEndTime<=currTime){
+        this.setData({
+          "finishparams.pText":'',
+        });
+      }
+    }
+
+
+
+    this.setData({
+      "finishparams.startDateTime":Util.formatTimePicker(estime),
+      // "finishparams.pText":Util.formatTimePicker(estime),
+      "finishparams.endDateTime":Util.formatTimePicker(eetime),
+    }
+    );
+  },
+
+  bindFinishparamsChange(e){
+    let finishparams =  this.data.finishparams;
+    finishparams.pText = e.detail
+    this.setData({
+      finishparams:finishparams
+    })
+    console.info("finishparams " + finishparams.pText)
+  },
   /**
    * 生命周期函数--监听页面加载
    */
   onLoad(options) {
+      let {
+        chargStationId,
+        chargPileName,
+        chargPileId,
+        chargPileIdId,
+        userId,
+        chargStationName,
+        earliestReservTime,
+        advanceReservDays,
+        minReservTime,
+        maxReservTime,
+        maxEarlyExerciseTime,
+        maxReservOvertime
+      } = options;
+  
+      console.info(options);
+      let curTime = new Date();
+      let sstime = new Date(curTime.setMinutes(curTime.getMinutes() + parseInt(earliestReservTime)));
+      let curTime2 = new Date();
+      let setime = new Date(curTime2.setMinutes(curTime2.getMinutes() + parseInt(advanceReservDays) * 60 * 24));
+      let curTime3 = new Date(sstime);
+      let estime = new Date(curTime3.setMinutes(curTime3.getMinutes() + parseInt(minReservTime)));
+      let curTime4 = new Date(sstime);
+      let eetime = new Date(curTime4.setMinutes(curTime4.getMinutes() + parseInt(maxReservTime)));
+      this.setData({
+          chargStationId,
+          chargPileName,
+          chargPileId,
+          chargPileIdId,
+          userId,
+          chargStationName,
+          earliestReservTime,
+          advanceReservDays,
+          minReservTime,
+          maxReservTime,
+          maxEarlyExerciseTime,
+          maxReservOvertime,
+          "startparams.startDateTime":Util.formatTimePicker(sstime),
+          // "startparams.pText":Util.formatTimePicker(sstime),
+          "startparams.endDateTime":Util.formatTimePicker(setime),
+          "finishparams.startDateTime":Util.formatTimePicker(estime),
+          // "finishparams.pText":Util.formatTimePicker(estime),
+          "finishparams.endDateTime":Util.formatTimePicker(eetime),
+        }
+      );
 
   },
+  SubmitBtn(){
+    // 预约充电站ID   * 预约充电桩ID  * 预约用户ID   * 预约充电开始时间  * 预约充电结束时间
+    let reservChargeStartTime = this.data.startparams.pText
+    let reservChargeEndTime = this.data.finishparams.pText
+    let reservPileId = this.data.chargPileIdId;
+    let reservStationId = this.data.chargStationId;
+    let sysUserId = this.data.userId;
+
 
+    if(!reservChargeStartTime){
+      wx.showModal({
+        title: '提示',
+        content: '请先选择预约开始充电时间',
+        showCancel:false,
+        confirmColor:'#00AADD',
+      });
+      return;
+    }
+    reservChargeStartTime = reservChargeStartTime + ':00'
+    if(!reservChargeEndTime){
+      wx.showModal({
+        title: '提示',
+        content: '请先选择预约结束充电时间',
+        showCancel:false,
+        confirmColor:'#00AADD',
+      });
+      return;
+    }
+    reservChargeEndTime = reservChargeEndTime + ':00'
+    wx.request({
+      // url: getApp().globalData.postHeadAgreement +'/restapi/wechat/reserv2?reservChargeStartTime=' + reservChargeStartTime +
+      // '&reservChargeEndTime=' + reservChargeEndTime + 
+      // '&reservPile.id=' + reservPileId + 
+      // '&reservStation.id=' + reservStationId + 
+      // '&sysUser.id=' + sysUserId,
+      url: getApp().globalData.postHeadAgreement +'/restapi/wechat/reserv2',
+      data: {
+        reservChargeStartTime:reservChargeStartTime,
+        reservChargeEndTime:reservChargeEndTime,
+        reservPile:{
+          id:reservPileId
+        },
+        reservStation:{
+          id:reservStationId
+        },
+        sysUser:{
+          userId:sysUserId
+        },
+      },
+      method: 'POST',
+      success(res) {
+        console.info(res)
+        if(res?.data?.msg=="操作成功"){
+          wx.showModal({
+            title: '提示',
+            content: '预约成功',
+            showCancel:false,
+            confirmColor:'#00AADD',
+            complete: (res) => {
+              if (res.cancel) {
+                
+              }
+          
+              if (res.confirm) {
+                wx.requestSubscribeMessage({
+                  tmplIds: ['DA80dlHRpvYMfZVICp-SVPPKuZOKtUd8PT0Rl7PZzuI'],
+                  success (res) { 
+                    console.info(res)
+                  }
+                })
+              }
+            }
+          });
+        }else{
+          wx.showModal({
+            title: '提示',
+            content: '预约失败',
+            showCancel:false,
+            confirmColor:'#00AADD',
+          });
+          wx.requestSubscribeMessage({
+            tmplIds: ['DA80dlHRpvYMfZVICp-SVPPKuZOKtUd8PT0Rl7PZzuI'],
+            success (res) { 
+              console.info(res)
+            }
+          })
+        }
+
+      }
+    });
+  },
   /**
    * 生命周期函数--监听页面初次渲染完成
    */

+ 8 - 8
pages/reservation/reservationEdit.wxml

@@ -1,27 +1,27 @@
 
   <view class="context">
     <text>场站</text>
-    <view class='input' type='text'>dfdfdfdfdf</view>
+    <view class='input' type='text'>{{chargPileName}}</view>
   </view>
   <view class="context">
     <text>桩编号</text>
-    <view class='input' type='text'>sfsfsfsfsfs</view>
+    <view class='input' type='text'>{{chargPileId}}</view>
   </view>
   <view class="context">
     <text>桩名称</text>
-    <view class='input' type='text'>sfsfsfsfsfs</view>
+    <view class='input' type='text'>{{chargStationName}}</view>
   </view>
 
   <view class="context">
     <text>预约开始充电时间</text>
-    <datepicker wx:if="{{!workstatusFinished}}" params="{{workEndtimeParams}}"  bind:getDateString="bindworkEndtimeParamsChange" style="width: 100%;"/>
-    <input  wx:if="{{workstatusFinished}}"  class='input' type='text' value='{{workEndtimeParams.pText}}' disabled="{{workstatusFinished}}"></input>
+    <datepicker params="{{startparams}}"  bind:getDateString="bindStartparamsChange" style="width: 100%;"/>
+    <!-- <input  wx:if="{{workstatusFinished}}"  class='input' type='text' value='{{workEndtimeParams.pText}}' disabled="{{workstatusFinished}}"></input> -->
   </view>
   <view class="context">
     <text>预约结束充电时间</text>
-    <datepicker wx:if="{{!workstatusFinished}}" params="{{finishparams}}" bind:getDateString="bindFinishparamsChange" style="width: 100%;"/>
-    <input  wx:if="{{workstatusFinished}}"  class='input' type='text' value='{{finishparams.pText}}' disabled="{{workstatusFinished}}"></input>
+    <datepicker params="{{finishparams}}" bind:getDateString="bindFinishparamsChange" style="width: 100%;"/>
+    <!-- <input  wx:if="{{workstatusFinished}}"  class='input' type='text' value='{{finishparams.pText}}' disabled="{{workstatusFinished}}"></input> -->
   </view>
 
 <view class="tip">点击提交预约即表示同意<text class="link">免责声明</text></view>  
-<button wx:if="{{!workstatusFinished}}" bindtap='bindWorkSheetSubmit' class='submitbutton'>提交预约</button>
+<button wx:if="{{!workstatusFinished}}" bindtap='SubmitBtn' class='submitbutton'>提交预约</button>