Bläddra i källkod

汽车桩异常订单申诉

XWookey 1 år sedan
förälder
incheckning
c209dcce86

+ 3 - 3
app.js

@@ -3,13 +3,13 @@ let wechat = require('./utils/wechat.js');
 let log = require('./utils/log.js');
 App({
   globalData: {
-   // postHeadAgreement: 'http://127.0.0.1:10301',
+    // postHeadAgreement: 'http://127.0.0.1:10301',
     // 测试
-    // postHeadAgreement: 'https://jqcs.pjnes.com/cloud/chargapi',
+    postHeadAgreement: 'https://jqcs.pjnes.com/cloud/chargapi',
     // postHeadAgreement: 'http://192.168.105.171:10301',
     
     // 正式
-    postHeadAgreement: 'https://cdglyy.pjnes.com/cloud/chargapi',
+    // postHeadAgreement: 'https://cdglyy.pjnes.com/cloud/chargapi',
     helpPhoneNum: '4009608068',
     version:'2.0'
   },

+ 4 - 1
app.json

@@ -49,7 +49,10 @@
     "pages/ucenter/car/bindCar",
     "pages/reservation/reservation",
     "pages/reservation/reservationEdit",
-    "pages/ucenter/yuyt/yuyt"
+    "pages/ucenter/yuyt/yuyt",
+    "pages/ucenter/car/chooseCar",
+    "pages/ucenter/car/chooseAndBindCar",
+    "pages/ucenter/charginglog/opsCharginglog"
   ],
   "window": {
     "backgroundTextStyle": "light",

BIN
images/user_log.png


BIN
images/warn.png


+ 25 - 2
pages/charginfo/charginfo.js

@@ -12,6 +12,8 @@ Page({
   data: {
     name:'',
     address:'', 
+    offlineServicecall:'',
+    stationTagList:[],
     chargprice: '', 
     serviceprice: '', 
     chargid: '',
@@ -83,12 +85,20 @@ Page({
    */
   onLoad: function(e) {
     let that = this;
-
+    let stationTagList = [];
+    let offlineServicecall ="";
     wx.getStorage({
       key: 'index_seeInfo_chargpile',
       success: function (res) {
         console.info(res)
         var seeInfoChargPile = res.data;
+        stationTagList = seeInfoChargPile.stationTagList
+        offlineServicecall = seeInfoChargPile.offlineServicecall
+        that.setData({
+            stationTagList,
+            offlineServicecall,
+        })
+        console.info(stationTagList)
         // 异步更新
         console.info(seeInfoChargPile.chargStationId)
         that.execParking(that,seeInfoChargPile.chargStationId)
@@ -133,14 +143,17 @@ Page({
 
     name =  name=='null'?null:name;
     address =  address=='null'?null:address;
+    // stationTagList = !stationTagList?null:stationTagList;
     chargprice =  chargprice=='null'?null:chargprice;
     serviceprice =  serviceprice=='null'?null:serviceprice;
     chargid =  chargid=='null'?null:chargid;
     // let sumprice = (chargprice==null || serviceprice==null)? null:chargprice+serviceprice;
     let sumprice = (chargprice==null || serviceprice==null)? null:chargprice+serviceprice;
+
     this.setData({
       name,
       address,
+    //   stationTagList,
       chargprice,
       serviceprice,
       chargid,
@@ -470,7 +483,17 @@ Page({
       });
     }
   },
-
+  chargingLog(e){
+    
+    let idx = e.currentTarget.dataset.idx;
+    let chargPileId = idx.chargPileId;
+    console.info(chargPileId);
+    let url = '/pages/ucenter/charginglog/opsCharginglog?chargPileId=' + chargPileId
+    wx.navigateTo({
+      url
+    });
+    return;
+  },
   /**
    * 生命周期函数--监听页面隐藏
    */

+ 9 - 3
pages/charginfo/charginfo.wxml

@@ -7,7 +7,13 @@
       <view class='charging_text_title'>
         <view class='charging_text_title1'>
           <text class='name'>{{name}}</text>
-          <text class="grey">{{address}}</text>
+          <text class="tag"  wx:if='{{stationTagList && stationTagList.length > 0}}'>
+            <block wx:for="{{stationTagList}}" wx:key="unique" data-index="{{index}}">
+                <text class="tagItem">{{item}}</text> 
+            </block>   
+          </text>
+          <text class="grey address">{{address}}</text>
+          <text class="grey">线下运维电话: {{offlineServicecall}}</text>
         </view>
       </view>
 
@@ -92,13 +98,13 @@
   <view class="title_list">终端列表</view>
 
   <scroll-view class='context' scroll-y='true' bindscrolltolower="bindScrollTolowerEvent" >
-    <view class="charg"  hover-class='active' wx:key='{{key}}' wx:for="{{chargList}}" >
+    <view class="charg"  hover-class='active' wx:key='{{key}}' wx:for="{{chargList}}" data-idx="{{item}}" bindtap="{{userInfo.flag ?'chargingLog':''}}">
       <view class="runstatus {{item.chargstatusclass}}">
       <view class="runstatus_inner ">{{item.chargstatusname}}</view>
       </view>
       <view class="chargInfo_v">
       <view class="chargInfo_v_name">{{item.chargPileName}}</view>
-      <view class="chargInfo_v_id"><text style="width:300rpx">{{item.chargPileId}}</text><text wx:if="{{!item.openStatus}}" decode="{{true}}" space="nbsp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</text><text wx:if="{{item.openStatus}}" class="seeReservation" bindtap="seeReservation" bindtap="seeReservation"  data-idx="{{item}}">查看预约</text><text class="startpower" wx:if="{{!userInfo.flag && item.chargstatusname=='已插枪'}}"  data-keywords="{{item}}"  bindtap="{{(!userInfo.flag && item.chargstatusname=='已插枪')?'goScanResult':''}}">启动充电 ></text></view>
+      <view class="chargInfo_v_id"><text style="width:300rpx">{{item.chargPileId}}</text><text wx:if="{{!item.openStatus}}" decode="{{true}}" space="nbsp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</text><text wx:if="{{!userInfo.flag && item.openStatus}}" class="seeReservation" bindtap="seeReservation" bindtap="seeReservation"  data-idx="{{item}}">查看预约</text><text class="startpower" wx:if="{{!userInfo.flag && item.chargstatusname=='已插枪'}}"  data-keywords="{{item}}"  bindtap="{{(!userInfo.flag && item.chargstatusname=='已插枪')?'goScanResult':''}}">启动充电 ></text></view>
       </view>
       <view class="iconCard" >
         <view class="icon {{item.pileType=='慢充'?'slowBar':'fastBar'}}">{{item.pileType=='慢充'?'慢':'快'}}</view>

+ 28 - 0
pages/charginfo/charginfo.wxss

@@ -71,6 +71,14 @@ text.inline{
   color: #9d9d9d;
   margin: 0;
 }
+.grey.address{
+  display: block;
+  line-height: 50rpx;
+}
+
+.grey.phone{
+    line-height:20rpx;
+}
 
 text.border{
  line-height: 40rpx;
@@ -333,4 +341,24 @@ text.price {
   position:absolute;
   right: 28rpx;
   top: 10rpx;
+}
+
+
+.charging_text_title1 text.tag{
+    display: flex;
+    font-size: 20rpx;
+    height: 32rpx;
+    width: 100%;
+    margin:0;
+}
+
+.charging_text_title1 .tag .tagItem{
+    float: left;
+    color: #FFFFFF;
+    background: #21ADFF;
+    margin-right: 10rpx;
+    padding: 2rpx 6rpx;
+    border-radius: 15rpx;
+    height: 30rpx;
+    line-height: 30rpx;
 }

+ 53 - 1
pages/charging/charging.js

@@ -483,13 +483,65 @@ Page({
           }
         }
       });
-    }, 5000);
+    }, 50000000000000);
+    // }, 5000);
   },
   phoneCall(e) {
     wx.makePhoneCall({
       phoneNumber: getApp().globalData.helpPhoneNum
     });
   },
+  exceptionWarn(){
+
+    let userInfo = wx.getStorageSync('userInfo');
+    let isLogin = wx.getStorageSync('isLogin');
+    let that = this;
+
+    wx.showModal({
+        title: '提示',
+        content: '如果您无法正常结束充电,请提交申诉(一小时内最多提交两次)',
+        confirmText: '提交',
+        showCancel:true,
+        confirmColor:'#00AADD',
+        cancelColor:'#00AADD',
+        success: function (res1) {
+          if(!res1.confirm){
+            return;
+          }
+          wx.request({
+            url: getApp().globalData.postHeadAgreement + '/restapi/pileLog/applyDeleteChargPileLog',
+            data: {
+                loginName: userInfo.loginName,
+                orderId:that.data.orderid
+            },
+            method: 'POST',
+            success: function (res) {
+                console.info(res);
+                if(res.data.code == 200){
+                    wx.showModal({
+                        title: '提示',
+                        content: '申诉成功,异常订单已删除',
+                        confirmColor:'#00AADD',
+                    })
+                }else{
+                    console.info(res.data.msg)
+                    wx.showModal({
+                        title: '提示',
+                        content: '申诉失败,未发现订单异常。如有疑问请拨打客服电话4009608068',
+                        confirmColor:'#00AADD',
+                        showCancel: false,
+                    })
+                }
+            },
+            fail(e) {
+            console.log("删除车辆失败");
+            log.info('[删除车辆]','[fail]', e);
+            }
+          });
+        }
+      });
+  },
+
   /**
    * 生命周期函数--监听页面隐藏
    */

+ 6 - 5
pages/charging/charging.wxml

@@ -12,8 +12,8 @@
   <view class="desc_text" style="color:#8F8E94" bindtap="phoneCall">客服电话:4009608068</view>
 
   <view class='chargeover'>
-    <image src='/images/chargeover_1.png'></image>
-    <ec-canvas class="progress_canvas" id="mychart-dom-bar" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
+    <image class='over' src='/images/chargeover_1.png'></image>
+    <ec-canvas force-use-old-canvas="true" class="progress_canvas" id="mychart-dom-bar" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
   </view>
 
   <view class='text_context' >
@@ -37,8 +37,9 @@
       <text class='text2'>{{totalMoney}}元</text>
     </view>
   </view>
-  <!-- <text class="help" decode='true'>客服电话:4009608068&nbsp;&nbsp;&nbsp;&nbsp;工作时间:工作日 08:30-17:00</text> -->
+  
 
-</view>
 
-<button class='{{chargingOrder.chargPileStatus==2?"charg_button":"charg_button_disable"}}' bindtap='{{chargingOrder.chargPileStatus==2?"stopCharging":""}}'>停止充电</button>
+<view class="e_warn" bindtap="exceptionWarn"><image src="/images/warn.png"/><text>异常订单申诉</text></view>
+<button class='{{chargingOrder.chargPileStatus==2?"charg_button":"charg_button_disable"}}' bindtap='{{chargingOrder.chargPileStatus==2?"stopCharging":""}}'>停止充电</button>
+</view>

+ 30 - 2
pages/charging/charging.wxss

@@ -9,7 +9,7 @@ page {
 
 .map_text {
   position: relative;
-  height: calc(100% - 190rpx);
+  /* height: calc(100% - 190rpx); */
   background: #fff;
   padding: 0 30rpx;
   margin: 0;
@@ -38,7 +38,7 @@ page {
   overflow: hidden;
 }
 
-.chargeover image {
+.chargeover .over {
   width: 634rpx;
   height: 485rpx;
   position: absolute;
@@ -248,4 +248,32 @@ text.inline {
   text-align: center;
   font-size: 22rpx;
   color:#f06c6c;
+}
+.e_warn{
+    display: flex;
+    flex-direction: row;
+    height: 50rpx;
+    width: 210rpx;
+    margin: 0 auto;
+    margin-top: 50rpx;
+    border: 2rpx solid #F06C75;
+    border-radius: 30rpx;
+    overflow: hidden;
+    padding: 0 10rpx;
+}
+.e_warn image{
+    width: 40rpx;
+    height: 40rpx;
+    margin: 8rpx;
+}
+
+.e_warn text{
+    color: #F06C75;
+    height: 60rpx;
+    font-size: 24rpx;
+    line-height: 55rpx;
+    width: 150rpx;
+}
+page{
+    overflow: auto;
 }

+ 27 - 3
pages/index/index.js

@@ -191,11 +191,16 @@ Page({
   },
   resetchargStations(data){
     let that = this
+    // 刷新 stationTag)
+
+    
     for(let i=0;i<data.length;i++){
       let seeInfoChargPile = data[i];
+      that.resetStationTag(seeInfoChargPile);
       let resultTable = seeInfoChargPile.resultList
       that.resetResultList(resultTable);
       that.resetResultData(resultTable,seeInfoChargPile)
+      
     }
   },
   resetResultData(resultList,data){
@@ -209,7 +214,16 @@ Page({
       }
     }
   },
-
+  resetStationTag(seeInfoChargPile){
+    let that = this
+    if(!seeInfoChargPile){
+      return;
+    }
+    if(!seeInfoChargPile?.stationTag){
+        return;
+    }
+    seeInfoChargPile.stationTagList = seeInfoChargPile.stationTag.split("|");
+  },
   resetResultList(resultList){
     let that = this
     if(!resultList){
@@ -412,6 +426,9 @@ Page({
                       stopprice: item.stopprice,
                       operationState: item.operationState,
                       chargStationId: item.id,
+                      stationTag: item.stationTag,
+                      stationTagList: item.stationTagList,
+                      offlineServicecall: item.offlineServicecall,
                     };
                     markers[index] = marker;
                   });
@@ -478,7 +495,10 @@ Page({
                   valleyChargPrice : item.valleyChargPrice,
                   valleyServicePrice : item.valleyServicePrice,
                   resultList: item.resultList,
-                  chargStationId: item.id
+                  chargStationId: item.id,
+                  stationTag: item.stationTag,
+                  stationTagList: item.stationTagList,
+                  offlineServicecall: item.offlineServicecall,
                 };
                 markers[index] = marker;
 
@@ -1054,7 +1074,11 @@ Page({
                     valleyChargPrice : item.valleyChargPrice,
                     valleyServicePrice : item.valleyServicePrice,
                     resultList: item.resultList,
-                    chargStationId: item.id
+                    chargStationId: item.id,
+                    stationTag: item.stationTag,
+                    stationTagList: item.stationTagList,
+                    offlineServicecall: item.offlineServicecall,
+                    
                   };
                   markers[index] = marker;
                 });

+ 5 - 0
pages/index/index.wxml

@@ -41,6 +41,11 @@
       <view class='charging_text_title'>
         <view class='charging_text_title1'>
           <text class='bold'>{{textData.name}}</text>
+          <text class="tag"  wx:if='{{textData && textData.stationTagList && textData.stationTagList.length > 0}}'>
+            <block wx:for="{{textData.stationTagList}}" wx:key="unique" data-index="{{index}}">
+                <text class="tagItem">{{item}}</text> 
+            </block>   
+          </text>
           <text class="h1">{{textData.address}}</text>
         </view>
       </view>

+ 19 - 1
pages/index/index.wxss

@@ -174,7 +174,7 @@
   left: 0;
   right: 0;
   bottom: 95rpx;
-  height: 230rpx;
+  height: 260rpx;
   background: #fff;
   padding: 0 0 0 38rpx;
 }
@@ -576,4 +576,22 @@ rich-text{
 
 .userPrivacy{
     color:#21ADFF;
+}
+.charging_text_title1 .tag{
+    font-size: 20rpx;
+    height: 32rpx;
+    width: 100%;
+    margin:0;
+}
+
+.charging_text_title1 .tag .tagItem{
+    float: left;
+    color: #FFFFFF;
+    background: #21ADFF;
+    margin-right: 10rpx;
+    padding: 2rpx 6rpx;
+    border-radius: 15rpx;
+    height: 30rpx;
+    line-height: 30rpx;
+    font-size: 22rpx;
 }

+ 108 - 1
pages/reservation/reservationEdit.js

@@ -10,6 +10,7 @@ Page({
     chargPileId:'',
     chargPileIdId:'',
     userId:'',
+    plateNumber:'',
     chargStationName:'',
     startparams:{
       placeholder: '请选择时间', 
@@ -70,6 +71,8 @@ Page({
    * 生命周期函数--监听页面加载
    */
   onLoad(options) {
+    this.initCar();
+
       let {
         chargStationId,
         chargPileName,
@@ -126,7 +129,17 @@ Page({
     let reservPileId = this.data.chargPileIdId;
     let reservStationId = this.data.chargStationId;
     let sysUserId = this.data.userId;
+    let plateNumber = this.data.plateNumber;
 
+    if(!plateNumber){
+        wx.showModal({
+            title: '提示',
+            content: '请先选择车牌',
+            showCancel:false,
+            confirmColor:'#00AADD',
+          });
+          return;
+    }
 
     if(!reservChargeStartTime){
       wx.showModal({
@@ -159,6 +172,7 @@ Page({
           // '&sysUser.id=' + sysUserId,
           url: getApp().globalData.postHeadAgreement +'/restapi/wechat/reserv',
           data: {
+            reservPlateNum:plateNumber,
             reservChargeStartTime:reservChargeStartTime,
             reservChargeEndTime:reservChargeEndTime,
             reservPile:{
@@ -204,6 +218,90 @@ Page({
     })
 
   },
+  chooseCar(){
+    let url = '/pages/ucenter/car/chooseCar'
+    wx.setStorageSync('chooseCar_plateNumber',{plateNumber:this.data.plateNumber})
+    wx.navigateTo({
+      url
+    });
+  },
+  initCar(){
+    let that = this
+    let userInfo = wx.getStorageSync('userInfo');
+    let isLogin = wx.getStorageSync('isLogin');
+
+    // 读取默认车牌
+    wx.request({
+        url: getApp().globalData.postHeadAgreement + '/restapi/wechat/carList?loginName=' + userInfo.loginName,
+        // data: {
+        // loginName: userInfo.loginName
+        // },
+        method: 'POST',
+        success: function (res) {
+            let userCarList = res.data;
+            userCarList = userCarList.filter(it=>it.defaultType==1);
+            console.info(userCarList)
+            if(userCarList.length==0 ){
+            // wx.showModal({
+            //     title: '提示',
+            //     content: '当前充电站可减免停车费,是否绑定车牌信息?',
+            //     confirmText: '绑定车牌',
+            //     cancelText: '直接启动',
+            //     showCancel:true,
+            //     confirmColor:'#00AADD',
+            //     cancelColor:'#00AADD',
+            //     success: function (ress1) {
+            //     if(ress1.confirm){
+            //         let url = '/pages/ucenter/car/chooseCar'
+            //         wx.navigateTo({
+            //         url
+            //         });
+            //     }else{
+            //         that.beginChargeInner(that,'')
+            //     }
+            //     }
+            // });
+            }else{
+            let userCar = userCarList[0]
+            that.setData({
+                plateNumber: userCar.plateNumber
+            })
+            // wx.showModal({
+            //     title: '提示',
+            //     content: '确定使用' + userCar.plateNumber + '车牌信息减免停车费?',
+            //     confirmText: '确定',
+            //     cancelText: '其他车牌',
+            //     showCancel:true,
+            //     confirmColor:'#00AADD',
+            //     cancelColor:'#00AADD',
+            //     success: function (ress1) {
+            //         if(ress1.confirm){
+            //         that.beginChargeInner(that,userCar.plateNumber)
+            //         }else{
+            //         let url = '/pages/ucenter/car/chooseCar'
+            //         wx.navigateTo({
+            //             url
+            //         });
+            //         }
+            //         return;
+    
+            //     },
+            //     fail: function(res1){
+            //     console.info(res1)
+            //     }
+            // });
+            }
+    
+        },
+        fail(e) {
+        console.log("查询车辆失败");
+        log.info('[查询车辆]','[fail]', e);
+        }
+        });
+  },
+
+
+
   /**
    * 生命周期函数--监听页面初次渲染完成
    */
@@ -215,7 +313,16 @@ Page({
    * 生命周期函数--监听页面显示
    */
   onShow() {
-
+    let car = wx.getStorageSync('chooseCar_plateNumber')
+    console.info(car)
+    let plateNumber = ''
+    if(car){
+        plateNumber = car.plateNumber;
+        wx.removeStorageSync('chooseCar_plateNumber')
+    }
+    this.setData({
+        plateNumber
+    })
   },
 
   /**

+ 4 - 0
pages/reservation/reservationEdit.wxml

@@ -22,6 +22,10 @@
     <datepicker params="{{finishparams}}" bind:getDateString="bindFinishparamsChange" style="width: 100%;" id="end"/>
     <!-- <input  wx:if="{{workstatusFinished}}"  class='input' type='text' value='{{finishparams.pText}}' disabled="{{workstatusFinished}}"></input> -->
   </view>
+  <view class="context">
+    <text>车牌号</text>
+    <view class='input' type='text' bindtap='chooseCar'>{{plateNumber?plateNumber:'请绑定车牌'}}</view>
+  </view>
 
 <!-- <view class="tip">点击提交预约即表示同意<text class="link">免责声明</text></view>  -->
 <button wx:if="{{!workstatusFinished}}" bindtap='SubmitBtn' class='submitbutton'>提交预约</button>

+ 119 - 77
pages/scan_result/scan_result.js

@@ -17,6 +17,7 @@ Page({
     parkTime: 0,
     url:'/images/scan_result.png',
     authStatus: 1,
+    defPlateNumber:''
   },
   resetResultList(resultList){
     let that = this
@@ -265,99 +266,103 @@ Page({
             // });
           } else if (data.repaidbalance > 15) {
             log.info('[扫码]', '[同步用户数据]', '[余额充足开始充电]', data);
-            that.beginCharge_satrt(plateNumber);
+            that.beginCharge_satrt(plateNumber,1);
           }
         }
       }
     });
     // 扫描结束
   },
-  beginCharge(e) {
+  beginChargeMsg(e){
     let that = this
     wx.requestSubscribeMessage({
       tmplIds: ['3FR5XRyycT81ZWMdVi_ZQYKJcVatZr2Tm7DgcLwCD1I','KWHBIONCrdumgTkE1dpIpAZRgrN5TuhpHuZ0uU-Eud4','XWj70eHMLAjLlufPuhE_NQmdSQzhrOwEXIblWveH0bk'],
       success (res33333) {
-        
-        let userInfo = wx.getStorageSync('userInfo');
-        let isLogin = wx.getStorageSync('isLogin');
-
-        if(!that.data.carParkingRate){
-          that.beginChargeInner(that);
-          return;
-        }
-        // 读取默认车牌
-        wx.request({
-          url: getApp().globalData.postHeadAgreement + '/restapi/wechat/carList?loginName=' + userInfo.loginName,
-          // data: {
-          // loginName: userInfo.loginName
-          // },
-          method: 'POST',
-          success: function (res) {
-            let userCarList = res.data;
-            userCarList = userCarList.filter(it=>it.defaultType==1);
-            console.info(userCarList)
-            if(userCarList.length==0 ){
-              wx.showModal({
-                title: '提示',
-                content: '当前充电站可减免停车费,是否绑定车牌信息?',
-                confirmText: '绑定车牌',
-                cancelText: '直接启动',
-                showCancel:true,
-                confirmColor:'#00AADD',
-                cancelColor:'#00AADD',
-                success: function (ress1) {
-                  if(ress1.confirm){
-                    let url = '/pages/ucenter/car/car'
-                    wx.navigateTo({
-                      url
-                    });
-                  }else{
-                    that.beginChargeInner(that)
-                  }
-                }
-              });
-            }else{
-              let userCar = userCarList[0]
-              wx.showModal({
-                title: '提示',
-                content: '确定使用' + userCar.plateNumber + '车牌信息减免停车费?',
-                confirmText: '确定',
-                cancelText: '其他车牌',
-                showCancel:true,
-                confirmColor:'#00AADD',
-                cancelColor:'#00AADD',
-                success: function (ress1) {
-                    if(ress1.confirm){
-                      that.beginChargeInner(that,userCar.plateNumber)
-                    }else{
-                      let url = '/pages/ucenter/car/car'
-                      wx.navigateTo({
-                        url
-                      });
-                    }
-                    return;
-    
-                },
-                fail: function(res1){
-                  console.info(res1)
-                }
-              });
-            }
-    
-          },
-          fail(e) {
-          console.log("查询车辆失败");
-          log.info('[查询车辆]','[fail]', e);
-          }
-        });
+        that.beginCharge(e)
       },fail(reee){
         console.info("ffffffffffffff")
         console.info(reee)
       }
     })
+  },
+  beginCharge(e) {
+    let that = this
+    let userInfo = wx.getStorageSync('userInfo');
+    let isLogin = wx.getStorageSync('isLogin');
+
+    if(!that.data.carParkingRate){
+      that.beginChargeInner(that,'');
+      return;
+    }
+    // 读取默认车牌
+    wx.request({
+      url: getApp().globalData.postHeadAgreement + '/restapi/wechat/carList?loginName=' + userInfo.loginName,
+      // data: {
+      // loginName: userInfo.loginName
+      // },
+      method: 'POST',
+      success: function (res) {
+        let userCarList = res.data;
+        userCarList = userCarList.filter(it=>it.defaultType==1);
+        console.info(userCarList)
+        if(userCarList.length==0 ){
+          wx.showModal({
+            title: '提示',
+            content: '当前充电站可减免停车费,是否绑定车牌信息?',
+            confirmText: '绑定车牌',
+            cancelText: '直接启动',
+            showCancel:true,
+            confirmColor:'#00AADD',
+            cancelColor:'#00AADD',
+            success: function (ress1) {
+              if(ress1.confirm){
+                let url = '/pages/ucenter/car/chooseCar'
+                wx.navigateTo({
+                  url
+                });
+              }else{
+                that.beginChargeInner(that,'')
+              }
+            }
+          });
+        }else{
+          let userCar = userCarList[0]
+          wx.showModal({
+            title: '提示',
+            content: '确定使用' + userCar.plateNumber + '车牌信息减免停车费?',
+            confirmText: '确定',
+            cancelText: '其他车牌',
+            showCancel:true,
+            confirmColor:'#00AADD',
+            cancelColor:'#00AADD',
+            success: function (ress1) {
+                if(ress1.confirm){
+                  that.beginChargeInner(that,userCar.plateNumber)
+                }else{
+                  let url = '/pages/ucenter/car/chooseCar'
+                  wx.navigateTo({
+                    url
+                  });
+                }
+                return;
+
+            },
+            fail: function(res1){
+              console.info(res1)
+            }
+          });
+        }
+
+      },
+      fail(e) {
+      console.log("查询车辆失败");
+      log.info('[查询车辆]','[fail]', e);
+      }
+    });
+  
   
   },
-  beginCharge_satrt(plateNumber) {
+  beginCharge_satrt(plateNumber,runTimes) {
     wx.showLoading({
       title: '开启充电中...',
       mask: true
@@ -386,7 +391,8 @@ Page({
         chargPileId: terminalNum,
         userId: userId,
         chargstarttime: chargstarttime,
-        userPlateNumber: plateNumber
+        userPlateNumber: plateNumber,
+        runTimes:runTimes
       },
       method: 'POST',
       fail(e) {
@@ -434,6 +440,29 @@ Page({
             confirmColor:'#00AADD',
           });
           log.info('[扫码]', '[开始充电]', '[失败data.code=502' + data.message + ']', data);
+        } else if (data && data.code == 503) {
+            //开启充电失败,提示用户
+            let msg = res?.data?.message
+            wx.showModal({
+                title: '提示',
+                showCancel: true,
+                content: msg,
+                cancelText:'其他车辆',
+                confirmText:'继续启动',
+                confirmColor:'#00AADD',
+                cancelColor:'#00AADD',
+                success: function (res) {
+                    if (res.cancel) {
+                       //点击取消,其他车辆
+                    } else {
+                       //点击确定,继续启动
+                       that.beginCharge_satrt(plateNumber,runTimes + 1)
+                    }
+                 },
+                 fail: function (res) { },//接口调用失败的回调函数
+                 complete: function (res) { },//接口调用结束的回调函数(调用成功、失败都会执行)
+              });
+            log.info('[扫码]', '[开始充电]', '[失败data.code=502' + data.message + ']', data);
         } else {
           //开启充电失败,提示用户
           let msg = res?.data?.message
@@ -467,7 +496,20 @@ Page({
    * 生命周期函数--监听页面显示
    */
   onShow: function () {
+    let car = wx.getStorageSync('chooseCar_plateNumber')
+    let plateNumber = ''
+    if(car){
+        plateNumber = car.plateNumber;
+        wx.removeStorageSync('chooseCar_plateNumber')
+    }
+    this.setData({
+        plateNumber
+    })
+    console.info('将会自动跳过弹窗,默认车牌号:' + plateNumber)
 
+    if(car){
+        this.beginChargeInner(this,plateNumber)
+    }
   },
 
   /**

+ 1 - 1
pages/scan_result/scan_result.wxml

@@ -99,7 +99,7 @@
 
 
 
-  <button wx:if="{{chargPile}}" class='charg_button' bindtap="beginCharge" >开始充电</button>
+  <button wx:if="{{chargPile}}" class='charg_button' bindtap="beginChargeMsg" >开始充电</button>
 
 <!-- <view style="width: 100%;margin-top:50rpx">
   <ad unit-id="adunit-8eb13875bcf592b0" ad-intervals="30"></ad>

+ 27 - 7
pages/search_result/search_result.js

@@ -24,6 +24,7 @@ Page({
     let that = this
     for(let i=0;i<data.length;i++){
       let seeInfoChargPile = data[i];
+      that.resetStationTag(seeInfoChargPile);
       let resultTable = seeInfoChargPile.resultList
       that.resetResultList(resultTable);
       that.resetResultData(resultTable,seeInfoChargPile)
@@ -40,7 +41,16 @@ Page({
       }
     }
   },
-
+  resetStationTag(seeInfoChargPile){
+    let that = this
+    if(!seeInfoChargPile){
+      return;
+    }
+    if(!seeInfoChargPile?.stationTag){
+        return;
+    }
+    seeInfoChargPile.stationTagList = seeInfoChargPile.stationTag.split("|");
+  },
   resetResultList(resultList){
     let that = this
     if(!resultList){
@@ -174,9 +184,10 @@ Page({
                   valleyChargPrice : item.valleyChargPrice,
                   valleyServicePrice : item.valleyServicePrice,
                   resultList: item.resultList,
-                  chargStationId: item.id
-
-
+                  chargStationId: item.id,
+                  stationTag: item.stationTag,
+                  stationTagList: item.stationTagList,
+                  offlineServicecall: item.offlineServicecall,
                 };
                 if (myChargeStationsIds.indexOf(item.id + ',') != -1) {
                   marker.userFlag = true;
@@ -239,7 +250,10 @@ Page({
               valleyChargPrice : item.valleyChargPrice,
               valleyServicePrice : item.valleyServicePrice,
               resultList: item.resultList,
-              chargStationId: item.id
+              chargStationId: item.id,
+              stationTag: item.stationTag,
+              stationTagList: item.stationTagList,
+              offlineServicecall: item.offlineServicecall,
             };
             markers[index] = marker;
           });
@@ -369,7 +383,10 @@ Page({
                   valleyChargPrice : item.valleyChargPrice,
                   valleyServicePrice : item.valleyServicePrice,
                   resultList: item.resultList,
-                  chargStationId: item.id
+                  chargStationId: item.id,
+                  stationTag: item.stationTag,
+                  stationTagList: item.stationTagList,
+                  offlineServicecall: item.offlineServicecall,
                 };
                 if (myChargeStationsIds.indexOf(item.id + ',') != -1) {
                   marker.userFlag = true;
@@ -438,7 +455,10 @@ Page({
               valleyChargPrice : item.valleyChargPrice,
               valleyServicePrice : item.valleyServicePrice,
               resultList: item.resultList,
-              chargStationId: item.id
+              chargStationId: item.id,
+              stationTag: item.stationTag,
+              stationTagList: item.stationTagList,
+              offlineServicecall: item.offlineServicecall,
             };
             markers[index] = marker;
           });

+ 196 - 0
pages/ucenter/car/chooseAndBindCar.js

@@ -0,0 +1,196 @@
+// pages/ucenter/car/bindCar.js
+Page({
+
+    /**
+     * 页面的初始数据
+     */
+    data: {
+      carNum: '',
+      carId: '',
+      updateFlag: false,
+      isDef: false,
+    },
+    inputPlateNumber(e){
+      console.info(e.detail.value)
+      console.info(e)
+      this.setData({
+        carNum: e.detail.value
+      });
+    },
+    saveCarNum(){
+      let carNum = this.data.carNum;
+      if (!this.checkCarNum(carNum)) {
+        wx.showModal({
+          title: '提示',
+          showCancel:false,
+          content: '车牌号输入有误,请重新输入',
+          confirmColor:'#00AADD',
+        });
+        return;
+      } else {
+        this.setData({
+          carNum: carNum,
+          errorMsg: ''
+        });
+      }
+      this.bindUpdateCarNum(carNum);
+    },
+    checkCarNum(carNum){
+      if (carNum){
+        // if (!(/^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$/.test(this.data.carNum))) {
+        // if (!/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领].*$/.test(carNum)) {
+        //   return false;
+        // }
+        if(carNum.length<1 || carNum.length>10){
+            return false;
+        }
+      }else{
+        return false;
+      }
+      return true;
+    },
+    bindUpdateCarNum(carNum) {
+      let that = this;
+      let userInfo = wx.getStorageSync('userInfo');
+      // loginName: userInfo.loginName
+      
+      // 判断是更新车牌还是新增车牌
+      console.info(this.data.updateFlag)
+      if(this.data.updateFlag){
+        console.info("更新车牌号:" + carNum + ",用户:" + userInfo.loginName + ",车牌号:" + this.data.carNum )
+  
+        wx.request({
+          url: getApp().globalData.postHeadAgreement + '/restapi/wechat/carAlter?loginName=' + userInfo.loginName,
+          data: {
+            carId: that.data.carId,
+            plateNumber: carNum,
+            defaultType: that.data.isDef?"1":"0"
+          },
+          method: 'POST',
+          success: function (res) {
+            console.info(res)
+            wx.navigateBack({
+              delta: 1
+            });
+          },
+          fail(e) {
+          console.log("更新车牌号失败");
+          log.info('[更新车牌号]','[fail]', e);
+          }
+        });
+  
+  
+      }else{
+        console.info("新增车牌号:" + carNum + ",用户:" + userInfo.loginName + "")
+  
+        wx.request({
+          url: getApp().globalData.postHeadAgreement + '/restapi/wechat/saveCar?loginName=' + userInfo.loginName + '&plateNumber=' + carNum + '&defaultType=' + (that.data.isDef?"1":"0"),
+          // data: {
+          //   defaultType: 1,
+          //   carId: idx.carId,
+          //   plateNumber: idx.plateNumber
+          // },
+          method: 'POST',
+          success: function (res) {
+            console.info(res)
+            wx.setStorageSync("chooseCar_plateNumber", {plateNumber:carNum});
+            wx.navigateBack({
+              delta: 2
+            });
+          },
+          fail(e) {
+          console.log("新增车牌号失败",e);
+          //log.info('[新增车牌号]','[fail]', e);
+          }
+        });
+
+
+  
+      }
+    },
+    /**
+     * 生命周期函数--监听页面加载
+     */
+    onLoad(options) {
+      let {carId,plateNumber,defaultType} = options;
+      let updateFlag = false;
+      if(carId){
+        updateFlag = true;
+      }else{
+        if(carId==0){
+          updateFlag = true
+        }else{
+          updateFlag = false
+        }
+      }
+      console.info(updateFlag?'更新模式':'新增模式')
+      console.info(plateNumber)
+      this.setData({
+        carId,
+        updateFlag,
+        carNum:plateNumber,
+        isDef:defaultType==1
+      })
+    },
+    radioChange: function(e) {
+      let that = this;
+      this.setData({
+        isDef:!that.data.isDef
+      })
+    },
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady() {
+  
+    },
+  
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow() {
+        let data = wx.getStorageSync("chooseCar_plateNumber");
+        console.info(data)
+        if(data){
+            this.setData({
+                carNum:data.carNum
+            })
+        }
+
+    },
+  
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide() {
+  
+    },
+  
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload() {
+  
+    },
+  
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh() {
+  
+    },
+  
+    /**
+     * 页面上拉触底事件的处理函数
+     */
+    onReachBottom() {
+  
+    },
+  
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage() {
+  
+    }
+  })

+ 4 - 0
pages/ucenter/car/chooseAndBindCar.json

@@ -0,0 +1,4 @@
+{
+    "navigationBarTitleText": "绑定车辆",
+    "usingComponents": {}
+  }

+ 20 - 0
pages/ucenter/car/chooseAndBindCar.wxml

@@ -0,0 +1,20 @@
+<!--pages/ucenter/car/bindCar.wxml-->
+<view class="card">
+  <view class="icard">
+    <view class="t1">车牌号</view>
+    <view class="t2">绑定后可在指定场站享受停车费减免优惠</view>
+    <view class='input_view'>
+      <input placeholder='请输车牌号' value="{{carNum}}" bindinput='inputPlateNumber'placeholder-class='placeholder' maxlength="10"></input>
+    </view>
+    <label class="radio" bindtap="radioChange">
+        <image src="/images/gzxrkl.png"   wx:if="{{!isDef}}"/> <image src="/images/gzxrkl_active.png"  wx:if="{{isDef}}"/><text>设为默认</text>
+    </label>
+
+    <button class='login_button' bindtap="saveCarNum" >保存</button>
+
+    <radio-group class="radio-group" bindchange="radioChange">
+
+
+</radio-group>
+  </view>
+</view>

+ 126 - 0
pages/ucenter/car/chooseAndBindCar.wxss

@@ -0,0 +1,126 @@
+/* pages/ucenter/car/bindCar.wxss */
+page{
+    background-color: #F5F5F5;
+  }
+  
+  .card{
+    width: calc(100% - 100rpx);
+    margin: 10rpx;
+    height: 540rpx;
+    background-color: #FFFFFF;
+    border-radius: 10rpx;
+    display: flex;
+    flex-direction: column;
+    padding: 20rpx 40rpx;
+  }
+  
+  .card .t1{
+    font-size: 32rpx;
+    margin: 10rpx 0;
+  }
+  
+  .card .t2{
+    font-size: 24rpx;
+    color:#aaaaaa;
+  }
+  
+  .input_view input {
+    width: calc(100% - 122rpx);
+    display: inline-block;
+    font-size: 34rpx;
+    height: 88rppx;
+    line-height: 88rpx;
+    min-height: 88rpx;
+    padding-left: 30rpx;
+    color: #434343;
+    font-family: 'Lucida Sans',
+                   'Lucida Sans Regular',
+                   'Lucida Grande',
+                   'Lucida Sans Unicode',
+                   Geneva,
+                   Verdana,
+                   sans-serif;
+  }
+  
+  .input_view .placeholder {
+    color: #999999;
+    font-size: 34rpx;
+    font-family: 'Lucida Sans',
+                   'Lucida Sans Regular',
+                   'Lucida Grande',
+                   'Lucida Sans Unicode',
+                   Geneva,
+                   Verdana,
+                   sans-serif;
+  }
+  
+  .input_view{
+    box-shadow: 0rpx 0rpx 10rpx  #dedede;
+    border-radius: 10rpx;
+    margin-top: 40rpx;
+    margin-bottom: 20rpx;
+    height: 88rpx;
+  }
+  
+  .login_button {
+    width: calc(100% - 270rpx);
+    font-size: 32rpx;
+    /* margin: 0rpx 32rpx; */
+    font-family: 'Lucida Sans',
+                   'Lucida Sans Regular',
+                   'Lucida Grande',
+                   'Lucida Sans Unicode',
+                   Geneva,
+                   Verdana,
+                   sans-serif;
+    color: #fff;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    background-color: #00a8dc;
+    border-radius: 40rpx;
+    height: 80rpx;
+    border: none;
+    margin: 125rpx 135rpx 0 135rpx;
+  }
+  
+  .login_button_disable {
+    width: calc(100% - 270rpx);
+    font-size: 32rpx;
+    /* margin: 0rpx 32rpx; */
+    font-family: 'Lucida Sans',
+                   'Lucida Sans Regular',
+                   'Lucida Grande',
+                   'Lucida Sans Unicode',
+                   Geneva,
+                   Verdana,
+                   sans-serif;
+    color: #fff;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    background-color: #c9c9c9;
+    border-radius: 40rpx;
+    height: 80rpx;
+    border: none;
+    margin: 125rpx 135rpx 0 135rpx;
+  }
+  
+  .login_button.button-hover {
+    background-color: #36a9a6;
+  }
+  
+  .radio{
+    line-height: 15px;
+    height: 30rpx;
+    display: flex;
+  }
+  
+  .radio image{
+    width: 26rpx;
+    height: 26rpx;
+    margin-right:10rpx;
+  }
+  
+  .radio text{
+    line-height: 24rpx;
+    font-size: 24rpx;
+  }

+ 213 - 0
pages/ucenter/car/chooseCar.js

@@ -0,0 +1,213 @@
+// pages/ucenter/car/chooseCar.js
+
+var selectPopup;
+var idx;
+var plateNumber;
+
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+    textArray : ["设为默认","使用此车牌号","修改车牌号","删除车牌号"],
+    textArrayColor : ["#576B95","#576B95","#576B95","#576B95"],
+    userCarList: []
+  },
+  showMore(e){
+    idx = e.currentTarget.dataset.idx;
+    plateNumber = e.currentTarget.dataset.plateNumber;
+    if(idx.defaultType==0){
+      this.setData({
+        textArray : ["设为默认","使用此车牌号","修改车牌号","删除车牌号"],
+      })
+    }else{
+      this.setData({
+        textArray : ["使用此车牌号","修改车牌号","删除车牌号"],
+      })
+    }
+    selectPopup.show(this.data.textArray,this.data.textArrayColor);
+  },
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad(options) {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady() {
+    selectPopup = this.selectComponent("#selectpopup");
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow() {
+    let that = this;
+    let userInfo = wx.getStorageSync('userInfo');
+		wx.request({
+		  url: getApp().globalData.postHeadAgreement + '/restapi/wechat/carList?loginName=' + userInfo.loginName,
+		  // data: {
+			// loginName: userInfo.loginName
+		  // },
+		  method: 'POST',
+		  success: function (res) {
+        console.info(res)
+        that.setData({
+          userCarList: res.data
+        })
+		  },
+		  fail(e) {
+			console.log("查询车辆失败");
+			log.info('[查询车辆]','[fail]', e);
+		  }
+		});
+  },
+
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload() {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh() {
+
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom() {
+
+  },
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage() {
+
+  },
+  bindCar(){
+    let url = '/pages/ucenter/car/chooseAndBindCar'
+    wx.navigateTo({
+      url
+    });
+  },
+  selectPopupItemClick:function(e){
+    let that = this;
+    if((!idx) && idx!=0){
+      console.info("idx is null!!!")
+      return;
+    }
+    let index = e.detail[0]
+    let textArrVal = this.data.textArray[index]
+    // ["设为默认","修改车牌号","删除车牌号"],
+    let userInfo = wx.getStorageSync('userInfo');
+    if(textArrVal=="设为默认"){
+      console.info("设为默认")
+      wx.request({
+        url: getApp().globalData.postHeadAgreement + '/restapi/wechat/carAlter?loginName=' + userInfo.loginName,
+        data: {
+          defaultType: 1,
+          carId: idx.carId,
+          plateNumber: idx.plateNumber
+        },
+        method: 'POST',
+        success: function (res) {
+          console.info(res)
+          that.onShow()
+        },
+        fail(e) {
+        console.log("查询车辆失败");
+        log.info('[查询车辆]','[fail]', e);
+        }
+      });
+    }else if(textArrVal=="修改车牌号"){
+      console.info("修改车牌号")
+      console.info(idx)
+      let url = '/pages/ucenter/car/bindCar?carId=' + idx.carId + '&plateNumber=' + idx.plateNumber + '&defaultType=' + idx.defaultType
+      wx.navigateTo({
+        url
+      });
+    }else if(textArrVal=="删除车牌号"){
+      console.info("删除车牌号")
+      wx.showModal({
+        title: '提示',
+        content: '确定要删除当前车辆信息?',
+        confirmText: '确定',
+        showCancel:true,
+        confirmColor:'#00AADD',
+        cancelColor:'#00AADD',
+        success: function (res1) {
+          if(!res1.confirm){
+            return;
+          }
+          wx.request({
+            url: getApp().globalData.postHeadAgreement + '/restapi/wechat/carRemove?loginName=' + userInfo.loginName + '&carId=' + idx.carId,
+            // data: {
+            // loginName: userInfo.loginName
+            // },
+            method: 'POST',
+            success: function (res) {
+              console.log("删除车辆成功");
+              console.info(res)
+              that.onShow()
+              // that.setData({
+              //   userCarList: res.data
+              // })
+            },
+            fail(e) {
+            console.log("删除车辆失败");
+            log.info('[删除车辆]','[fail]', e);
+            }
+          });
+        }
+      });
+    }else if(textArrVal=="使用此车牌号"){
+        /*
+        
+        {
+            carId: 4168
+            createBy: "yawuga"
+            createTime: "2023-08-11 20:41:36"
+            defaultType: 0
+            params: {}
+            plateNumber: "232321111"
+            remark: null
+            searchValue: null
+            status: 0
+            sysUser: {searchValue: null, createBy: null, createTime: "2019-05-30 13:34:38", updateBy: null, updateTime: null, …}
+            updateBy: "yawuga"
+            updateTime: "2023-08-11 20:45:12"
+        }
+        
+        */
+       console.info(idx)
+        wx.setStorageSync("chooseCar_plateNumber", idx);
+        wx.navigateBack();
+    }
+    
+    // console.log("选择的item下标:"+e.detail[0])
+    // console.log("组件标识:"+e.detail[1])
+  },
+
+  selectPopupExit:function(e){
+    console.log(e)
+    // console.log("点击了取消或空白区域取消")
+    // console.log("组件标识:"+e.detail[1])
+  }
+})

+ 6 - 0
pages/ucenter/car/chooseCar.json

@@ -0,0 +1,6 @@
+{
+    "navigationBarTitleText": "我的车辆",
+    "usingComponents": {
+      "selectpopup": "/components/selectpopup/selectpopup"
+    }
+  }

+ 26 - 0
pages/ucenter/car/chooseCar.wxml

@@ -0,0 +1,26 @@
+<!--pages/ucenter/car/chooseCar.wxml-->
+<view class="selectpopup_bg">   
+ <selectpopup  id="selectpopup" bind:selectPopupItemClick="selectPopupItemClick" 
+      bind:selectPopupExit="selectPopupExit"></selectpopup>
+</view>
+
+<view class="nocar" wx:if="{{userCarList.length==0}}" >
+<view class="t1">暂无车辆</view>
+<view class="t2">绑定后可在指定场站享受停车费减免优惠</view>
+<button class='login_button' bindtap="bindCar">绑定车辆</button>
+</view>
+<view class="hascar" wx:if="{{userCarList.length>0}}" >
+  <scroll-view class='context' scroll-y='true'>
+    <block wx:for="{{userCarList}}" wx:key="*this">
+      <view data-idx="{{item}}"  data-idn="{{item.plateNumber}}" class="carView" bindtap="showMore">
+        <text class="title">{{item.plateNumber}}</text>
+        <text class="def" wx:if="{{item.defaultType==1}}">默认</text>
+        <image src="/images/car_more.png"/>
+      </view>
+    </block>
+  </scroll-view>
+  <button class='login_button' bindtap="bindCar" >绑定车辆</button>
+
+</view>
+
+

+ 149 - 0
pages/ucenter/car/chooseCar.wxss

@@ -0,0 +1,149 @@
+/* pages/ucenter/car/chooseCar.wxss */
+page{
+    background-color: #F5F5F5;
+    height:100vh;
+    overflow: hidden;
+  }
+  .nocar .t1{
+    width: 100%;
+    margin-top: 70rpx;
+    text-align: center;
+    font-size: 36rpx;
+  }
+  
+  
+  .nocar .t2{
+    width: 100%;
+    margin-top: 16rpx;
+    text-align: center;
+    font-size: 24rpx;
+    color:#aaaaaa;
+  }
+  
+  .nocar .login_button {
+    width: calc(100% - 270rpx);
+    font-size: 32rpx;
+    /* margin: 0rpx 32rpx; */
+    font-family: 'Lucida Sans',
+                   'Lucida Sans Regular',
+                   'Lucida Grande',
+                   'Lucida Sans Unicode',
+                   Geneva,
+                   Verdana,
+                   sans-serif;
+    color: #fff;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    background-color: #00a8dc;
+    border-radius: 40rpx;
+    height: 80rpx;
+    border: none;
+    margin: 40rpx 135rpx 0 135rpx;
+  }
+  .hascar{
+    width: 100%;
+    height:100vh;
+  }
+  .hascar .carView{
+    height:100%;
+    width:100%;
+  }
+  .hascar .context{
+    height: calc(100vh - 200rpx);
+    overflow: hidden;
+  }
+  
+  .hascar .carView{
+    width: calc(100% - 40rpx);
+    margin:20rpx 20rpx;
+    height: 140rpx;
+    background-color: #FFF;
+    border-radius: 10rpx;
+    font-size: 36rpx;
+    line-height: 36rpx;
+    position: relative;
+    overflow: hidden;
+  }
+  
+  .hascar .carView .title{
+    position: absolute;
+    padding: 20rpx 20rpx;
+    top: 0;
+    left: 0;
+  }
+  
+  .hascar .carView image{
+    position: absolute;
+    padding: 0rpx 10rpx;
+    bottom: 0;
+    right: 0;
+    width: 60rpx;
+    height: 60rpx;
+  }
+  
+  .hascar .carView .def{
+    position: absolute;
+    top: 0;
+    right: 0;
+    width:60rpx;
+    height:36rpx;
+    color:#FFF;
+    background-color: #21ADFF;
+    font-size:18rpx;
+    text-align: center;
+    line-height: 36rpx;
+  }
+  
+  .selectpopup_bg{
+    height:100vh;
+    width: 100%;
+    position: absolute;
+    top: 0;
+  }
+  
+  
+  .login_button {
+    width: calc(100% - 270rpx);
+    font-size: 32rpx;
+    /* margin: 0rpx 32rpx; */
+    font-family: 'Lucida Sans',
+                   'Lucida Sans Regular',
+                   'Lucida Grande',
+                   'Lucida Sans Unicode',
+                   Geneva,
+                   Verdana,
+                   sans-serif;
+    color: #fff;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    background-color: #00a8dc;
+    border-radius: 40rpx;
+    height: 80rpx;
+    border: none;
+    margin: 50rpx auto;
+  }
+  
+  .login_button_disable {
+    width: calc(100% - 270rpx);
+    font-size: 32rpx;
+    /* margin: 0rpx 32rpx; */
+    font-family: 'Lucida Sans',
+                   'Lucida Sans Regular',
+                   'Lucida Grande',
+                   'Lucida Sans Unicode',
+                   Geneva,
+                   Verdana,
+                   sans-serif;
+    color: #fff;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    background-color: #c9c9c9;
+    border-radius: 40rpx;
+    height: 80rpx;
+    border: none;
+    margin: 125rpx 135rpx 0 135rpx;
+  }
+  
+  .login_button.button-hover {
+    background-color: #36a9a6;
+  }

+ 157 - 0
pages/ucenter/charginglog/opsCharginglog.js

@@ -0,0 +1,157 @@
+// pages/ucenter/charginglog/charginglog.js
+let Util = require("../../../utils/util");
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+    charginglogs: [],
+    pagesize:10,
+    pagenum:1,
+    total:-1,
+    loadTotal: 0,
+    finishedLoadTap: 0,
+    finishedLoadShowTimes: 0,
+    chargPileId: ''
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: function(options) {
+    let userInfo = wx.getStorageSync('userInfo');
+    let isLogin = wx.getStorageSync('isLogin');
+    let that = this;
+    let {
+        chargPileId
+      } = options;
+
+      console.info(chargPileId)
+      this.setData({
+        chargPileId
+      })
+    // 页面显示
+      this.getPage();
+  },
+  getPage(){
+
+    wx.showLoading({
+      title: '数据加载中....',
+    })
+
+  let that = this;
+
+    wx.request({
+      url: getApp().globalData.postHeadAgreement +'/restapi/pileLog/wechatchargpilelog',
+      data: {
+          chargPileId:that.data.chargPileId
+      },
+      method: 'POST',
+      success(res) {
+        console.log(res);
+        if (res.data.result) {
+          that.formatCharginglogs(res.data.result);
+          wx.hideLoading()
+          that.setData({
+            charginglogs: res.data.result,
+          });
+        }
+      }
+    });
+  },
+
+
+  formatCharginglogs(charginglogs) {
+    charginglogs.forEach((item, index) => {
+      try {
+        item.platenumber = item.platenumber?item.platenumber:'';
+        item.userPlateNumber = item.userPlateNumber?item.userPlateNumber:'';
+        item.vinno = item.vinno?item.vinno:'';
+        // 坑爹的上报有问题用正则过滤一下
+        item.vinno = /^[0-9a-zA-Z]*$/.test(item.vinno)?item.vinno:'';
+        item.socstart = item.socstart?item.socstart:'';
+        item.socend = item.socend?item.socend:'';
+        
+
+        
+        
+        // var startDate = Util.parseDate(item.chargstarttime);
+        // var endDate = Util.parseDate(item.chargendtime)
+        // var totalTime = Math.round((endDate.getTime() - startDate.getTime()) / 60000);
+        // var totalTimeHour = Math.floor(totalTime / 60);
+        // var totalTimeMinute = totalTime % 60;
+        // var startTime = startDate.getFullYear() + "年" + Util.formatNumber(startDate.getMonth() + 1) + '月' + Util.formatNumber(startDate.getDate()) + '日  ' + Util.formatNumber(startDate.getHours()) + ':' + Util.formatNumber(startDate.getMinutes()) + ':' + Util.formatNumber(startDate.getSeconds());
+        // var endTime = endDate.getFullYear() + "年" + Util.formatNumber(endDate.getMonth() + 1) + '月' + Util.formatNumber(endDate.getDate()) + '日  ' + Util.formatNumber(endDate.getHours()) + ':' + Util.formatNumber(endDate.getMinutes()) + ':' + Util.formatNumber(endDate.getSeconds());
+        // totalTime = Util.formatNumber(totalTimeHour) + "时" + Util.formatNumber(totalTimeMinute) + "分";
+        // item.startTime = startTime;
+        // item.endTime = endTime;
+        // item.totalTime = totalTime;
+        // item.chargallmoney = item.chargallmoney.toFixed(2);
+        // item.chargservice = item.chargservice.toFixed(2);
+        // item.chargmoney = item.chargmoney.toFixed(2);
+        //console.log(item.chargPile);
+      } catch (err) {
+        //在这里处理错误
+      }
+    });
+
+  },
+  startTimeOrder(charginglogs) {
+    if (charginglogs && 0 != charginglogs.length) {
+      charginglogs.sort(function(ma, mb) {
+        return mb.chargstarttime.localeCompare(ma.chargstarttime);
+      });
+    }
+  },
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady: function() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: function() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide: function() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload: function() {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh: function() {
+
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom: function() {
+
+  },
+  bindScrollTolowerEvent: function(){
+    this.getPage();
+  },
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage: function() {
+
+  }
+})

+ 4 - 0
pages/ucenter/charginglog/opsCharginglog.json

@@ -0,0 +1,4 @@
+{
+    "usingComponents": {},
+    "navigationBarTitleText": "充电记录"
+  }

+ 42 - 0
pages/ucenter/charginglog/opsCharginglog.wxml

@@ -0,0 +1,42 @@
+<!--pages/ucenter/charginglog/charginglog.wxml-->
+<scroll-view class='context' scroll-y='true'  bindscrolltolower="bindScrollTolowerEvent" >
+  <view class='context_block'></view>
+  
+  <view class="text_context" wx:for="{{charginglogs}}" wx:key="id" wx:for-item="charginglog" hover-class='active'>
+    <!-- <view class="map-1" bindtap="getRoute">
+      <image src="/images/jt.png"></image>
+      <view>路线</view>
+    </view> -->
+    <view class='charging_text_title'>
+      <view class='charging'>
+        <image src='/images/user_log.png'></image>
+      </view>
+      <view class='charging_text_title1'>
+        <text class='bold'>{{charginglog.sysUser.userName}}</text>
+        <text class="h1">{{charginglog.sysUser.phonenumber}}</text>
+      </view>
+    </view>
+    <!-- <text>{{charginglog.chargPile.chargPileName}}</text> -->
+    <view  class="inline-view">
+      <text class='inline' decode='true'>VIN车牌号:</text><text class='gray inline' decode='true'>{{charginglog.platenumber}}&nbsp;&nbsp;&nbsp;&nbsp;</text>
+      <text class='inline'>录入车牌号:</text><text class='gray inline'>{{charginglog.userPlateNumber}}</text>
+    </view>
+    <view  class="inline-view">
+      <text class='inline' decode='true'>车架号:</text><text class='gray inline' decode='true'>{{charginglog.vinno}}&nbsp;</text>
+    </view>
+    <view  class="inline-view">
+        <text class='inline'></text><text class='gray inline'>{{charginglog.chargstarttime}}-{{charginglog.chargendtime}}</text>
+        <!-- <text class='inline'>充电时间:</text><text class='gray inline'>{{charginglog.chargstarttime}}-{{charginglog.chargendtime}}</text> -->
+    </view>
+    <view  class="inline-view">
+      <text class='inline' decode='true'>起止SOC:</text><text class='gray inline' decode='true'>{{charginglog.socstart}} - {{charginglog.socend}}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</text>
+      <text class='inline'>充电量(度):</text><text class='gray inline'>{{charginglog.chargpower}}</text>
+    </view>
+    <view  class="inline-view">
+        <text class='inline'>结束原因:</text><text class='gray inline'>{{charginglog.chargpilelogCause}}</text>
+    </view>
+
+  </view>
+
+  
+</scroll-view>

+ 119 - 0
pages/ucenter/charginglog/opsCharginglog.wxss

@@ -0,0 +1,119 @@
+/* pages/ucenter/charginglog/charginglog.wxss */
+
+page {
+    background-color: #f4f4f4;
+    height: 100%;
+    overflow-y: hidden;
+  }
+  
+  .context {
+    height: 100%;
+  }
+  
+  .context_block {
+    width: 100%;
+    height: 24rpx;
+  }
+  
+  .text_context {
+    position: relative;
+    height: 378rpx;
+    background: #fff;
+    padding: 0 30rpx;
+    margin: 0 28rpx 24rpx 28rpx;
+    border-radius: 20rpx;
+    box-shadow: 0rpx 4rpx 4rpx #d5d5d5;
+  }
+  
+  .text_context.active {
+    background-color: #ebebeb;
+  }
+  
+  .charging_text_title {
+    height: 105rpx;
+    width: 100%;
+    display: flex;
+    margin-bottom: 20rpx;
+  }
+  
+  .charging_text_title1 {
+    width: 100%;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    overflow: hidden;
+  }
+  
+  .charging {
+    width: 62rpx;
+    height: 62rpx;
+    margin: 30rpx 30rpx 30rpx 0;
+    flex-shrink: 0;
+    overflow: hidden;
+  }
+  
+  .charging image {
+    width: 62rpx;
+    height: 62rpx;
+  }
+  
+  .text_context text {
+    display: block;
+    font-size: 24rpx;
+    font-family: 'Lucida Sans',
+                   'Lucida Sans Regular',
+                   'Lucida Grande',
+                   'Lucida Sans Unicode',
+                   Geneva,
+                   Verdana,
+                   sans-serif;
+    color: #231400;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    overflow: hidden;
+    line-height: 30rpx;
+    height: 30rpx;
+    min-height: 30rpx;
+  }
+  
+  .text_context .bold {
+    font-weight: bold;
+    line-height: 34rpx;
+    height: 34rpx;
+    min-height: 34rpx;
+    margin-top: 28rpx;
+    margin-bottom: 8rpx;
+    display: block;  
+    font-size: 30rpx;
+  }
+  .text_context .h1 {
+    margin: 0rpx 0rpx 24rpx 0rpx;
+    font-size: 24rpx;
+    line-height: 28rpx;
+    height: 28rpx;
+    min-height: 28rpx;
+    color: #a3a3a3;
+  }
+  .inline-view{
+    height: 42rpx;
+  }
+  text.gray {
+    color: #a3a3a3;
+    font-size: 24rpx;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    overflow: hidden;
+    line-height: 28rpx;
+    height: 28rpx;
+    min-height: 28rpx;
+  }
+  text.gray1 {
+    color: #575757;
+  }
+  text.inline {
+    display: inline-block;
+  }
+  
+  text.red {
+    color: red;
+  }
+  

+ 1 - 1
project.private.config.json

@@ -4,5 +4,5 @@
   "setting": {
     "compileHotReLoad": true
   },
-  "libVersion": "3.0.2"
+  "libVersion": "3.2.4"
 }