Kaynağa Gözat

Merge tag '2025.02.09' into develop

1、改为域名https请求;2、基础库版本使用3.10.2
Zhenghanjv 1 hafta önce
ebeveyn
işleme
d080e5dd19

+ 3 - 2
components/orderItemInfo/orderItemInfo.js

@@ -18,7 +18,8 @@ Component({
         discount:15.3,
         discount:15.3,
         orderId:'20251111111111',
         orderId:'20251111111111',
         time:'2025-01-20 18:33',
         time:'2025-01-20 18:33',
-        price:''
+        price:'',
+        station:'油站名'
       }
       }
     },
     },
     bottonText1:{
     bottonText1:{
@@ -45,7 +46,7 @@ Component({
    */
    */
   methods: {
   methods: {
     showOrHide(){
     showOrHide(){
-      const height = this.data.isHide?10:29;
+      const height = this.data.isHide?10:30;
       console.log("点击了",this.data.isHide,height)
       console.log("点击了",this.data.isHide,height)
       
       
       this.setData({
       this.setData({

+ 2 - 2
components/orderItemInfo/orderItemInfo.wxml

@@ -66,8 +66,8 @@
         <text>{{order.orderId}}</text>
         <text>{{order.orderId}}</text>
       </view>
       </view>
       <view>
       <view>
-        <text>时间</text>
-        <text>{{order.time}}</text>
+        <text>油站与时间</text>
+        <text>{{order.station}}_{{order.time}}</text>
       </view>
       </view>
     </view>
     </view>
   </view>
   </view>

+ 4 - 3
components/prepayOrderItemInfo/prepayOrderItemInfo.js

@@ -18,7 +18,8 @@ Component({
         discount:15.3,
         discount:15.3,
         refund:0,
         refund:0,
         orderId:'20251111111111',
         orderId:'20251111111111',
-        time:'2025-01-20 18:33'
+        time:'2025-01-20 18:33',
+        station:'油站名'
       }
       }
     },
     },
     buttonText1:{
     buttonText1:{
@@ -35,7 +36,7 @@ Component({
    * 组件的初始数据
    * 组件的初始数据
    */
    */
   data: {
   data: {
-    contentHeight: 20,
+    contentHeight: 22,
     isHide:false,
     isHide:false,
     rotateDeg:0
     rotateDeg:0
   },
   },
@@ -47,7 +48,7 @@ Component({
     
     
     showOrHide(){
     showOrHide(){
       
       
-      const height = this.data.isHide?20:35;
+      const height = this.data.isHide?22:37;
       console.log("点击了",this.data.isHide,height)
       console.log("点击了",this.data.isHide,height)
       
       
       this.setData({
       this.setData({

+ 2 - 2
components/prepayOrderItemInfo/prepayOrderItemInfo.wxml

@@ -32,8 +32,8 @@
           <text>{{order.orderId}}</text>
           <text>{{order.orderId}}</text>
         </view>
         </view>
         <view>
         <view>
-          <text>时间</text>
-          <text>{{order.time}}</text>
+          <text>站点与时间</text>
+          <text>{{order.station}}_{{order.time}}</text>
         </view>
         </view>
       </view>
       </view>
 
 

BIN
images/stationBackground.png


BIN
images/stations.png


+ 1 - 1
images/v2_sony48.svg

@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="214.26" height="200" class="icon" viewBox="0 0 1097 1024"><path fill="#0e932e" d="M665.01 74.24c37.53 7.02 35.84 49.96 35.84 49.96l1.69 746.05 35.62 21.43 3.58 26.92 46.52 8.78 4.68 35.7H69.5l4.82-35.63 46.38-8.92 3.43-26.85 35.77-21.43 1.76-746.05s-1.76-42.94 35.69-49.96H665zm152.36 177.23v509.65l-.66.44c-4.6 3.3-34.45 24.36-105.32 80.46v-90.7l42.57-31.16-.37-458.9 63.78-9.87v.08zm-208.6-63.13H253.59v374.93h355.18V188.34zM343.33 326.51v87.33h-40.08v-87.4h40.08zm71.83 0v87.33h-40.08v-87.4h40.08zm73.36 0v87.33h-39.86v-87.4h39.86zm70.58 0v87.33h-40.08v-87.4h40.08zm326-288.7L906.4 62.1l128.87-18.95s41.62-3.58 58.23 37.9l-16.9 21.28s-14.63-27.94-33.2-27.43c-18.66.51-115.57 24.35-115.57 24.35l-35.11 95.9-47.91 40.74-102.4 16.67-12.8-3.36-.73-67.51a76 76 0 0 0-.95-15.22l157.1-128.66z"/></svg>
+<svg t="1745474771185" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2099" id="mx_n_1745474771186" width="200" height="200"><path d="M941.449846 172.110769l-101.297231-99.328a46.552615 46.552615 0 0 0-66.048 0 45.449846 45.449846 0 0 0 0 65.339077l65.61477 64.905846-48.443077 50.097231a41.275077 41.275077 0 0 0 0 57.934769 39.739077 39.739077 0 0 0 28.632615 12.209231h54.587077v424.723692a28.632615 28.632615 0 0 1-57.225846 0v-263.876923a123.392 123.392 0 0 0-124.179692-122.840615h-28.475077V134.774154a75.815385 75.815385 0 0 0-76.169847-75.382154H187.588923a75.776 75.776 0 0 0-76.169846 75.382154v736.177231h-9.728a47.064615 47.064615 0 1 0 0 94.089846h572.455385a47.064615 47.064615 0 1 0 0-94.089846h-9.531077V455.68h28.632615a28.435692 28.435692 0 0 1 28.632615 28.317538V748.307692a124.179692 124.179692 0 0 0 248.359385 0V240.246154a95.310769 95.310769 0 0 0-28.632615-67.938462z m-372.105846 223.035077a41.314462 41.314462 0 0 1-41.826462 41.393231H248.792615a41.314462 41.314462 0 0 1-41.826461-41.393231V195.190154a41.314462 41.314462 0 0 1 41.826461-41.393231h278.724923a41.314462 41.314462 0 0 1 41.826462 41.393231v199.955692z m0 0" fill="#0d7ee7" p-id="2100"></path></svg>

+ 3 - 2
js/api.js

@@ -3,7 +3,8 @@ const SM4Exten = require('../js/SM4Exten');
 const miniprogramsm4 = require("../miniprogram_npm/miniprogram-sm-crypto/index").sm4;
 const miniprogramsm4 = require("../miniprogram_npm/miniprogram-sm-crypto/index").sm4;
 const secretId = "D2BCF8DE-AA24-4BF6-9C34-C8DD325E412B"; //小程序应用ID
 const secretId = "D2BCF8DE-AA24-4BF6-9C34-C8DD325E412B"; //小程序应用ID
 const Secret = "6C680A47B87740138DFB299FC69A64E1"; //小程序应用密钥
 const Secret = "6C680A47B87740138DFB299FC69A64E1"; //小程序应用密钥
-const api_root = 'http://47.97.120.160:5007/'
+const api_root = 'https://www.hsfuel.com/'
+// const api_root = 'http://47.97.120.160:5007/'
 // const api_root = 'http://172.31.2.202:5006/'
 // const api_root = 'http://172.31.2.202:5006/'
 // const api_root = 'http://192.168.0.202:5006/'
 // const api_root = 'http://192.168.0.202:5006/'
 const CurrentBuId = '12345678-9abc-def0-1234-56789abcdef0';
 const CurrentBuId = '12345678-9abc-def0-1234-56789abcdef0';
@@ -15,7 +16,7 @@ function request(path, method = 'GET', data = null) {
     var url = api_root + path;
     var url = api_root + path;
     var nonce = generateRandomString();
     var nonce = generateRandomString();
     const timestamp = Date.now();
     const timestamp = Date.now();
-    console.log('data :' + data);
+    console.log('data :' + JSON.stringify(data));
     let jsonString = (data != null && method != 'GET') ? JSON.stringify(data) : '';
     let jsonString = (data != null && method != 'GET') ? JSON.stringify(data) : '';
     console.log('request :' + jsonString);
     console.log('request :' + jsonString);
     var stringToSign = "sign_method=" + sign_method +
     var stringToSign = "sign_method=" + sign_method +

+ 10 - 9
pages/AuthorizationTransactionPage/AuthorizationTransactionPage.js

@@ -12,7 +12,7 @@ Page({
   data: {
   data: {
     nozzleId: 0,
     nozzleId: 0,
     type: '预支付',
     type: '预支付',
-    order: null,
+    order: null
   },
   },
 
 
   /**
   /**
@@ -83,14 +83,15 @@ Page({
 
 
   /** 支付按钮点击事件 */
   /** 支付按钮点击事件 */
   toPay() {
   toPay() {
-    var that = this;
-    api.request_wechatPay(this.data.order.orderId).then(res => {
-      console.log("支付结果", res)
-      that.subMessage()
-      // this.pay()
-    }).catch(err => {
-      console.log("支付失败", err)
-    })
+    this.subMessage()
+    // var that = this;
+    // api.request_wechatPay(this.data.order.orderId).then(res => {
+    //   console.log("支付结果", res)
+    //   that.subMessage()
+    //   // this.pay()
+    // }).catch(err => {
+    //   console.log("支付失败", err)
+    // })
   },
   },
   /** 订阅消息模板 */
   /** 订阅消息模板 */
   subMessage() {
   subMessage() {

+ 50 - 27
pages/TransactionPage/TransactionPage.js

@@ -11,8 +11,8 @@ Page({
    */
    */
   data: {
   data: {
     nozzleId: 0,
     nozzleId: 0,
-    type: '后支付',
     order: null,
     order: null,
+    stationName:'',//油站名
     // order: {
     // order: {
     //   oilName: '好名字',
     //   oilName: '好名字',
     //   nozzle: "1",
     //   nozzle: "1",
@@ -39,7 +39,7 @@ Page({
     this.setData({
     this.setData({
       nozzleId: id
       nozzleId: id
     })
     })
-
+    this.getStationInfo()
     this.getOrder()
     this.getOrder()
   },
   },
 
 
@@ -75,7 +75,7 @@ Page({
    * 页面相关事件处理函数--监听用户下拉动作
    * 页面相关事件处理函数--监听用户下拉动作
    */
    */
   onPullDownRefresh() {
   onPullDownRefresh() {
-
+    this.getOrder()
   },
   },
 
 
   /**
   /**
@@ -91,7 +91,27 @@ Page({
   onShareAppMessage() {
   onShareAppMessage() {
 
 
   },
   },
-
+  /** 获取站点信息 */
+  getStationInfo() {
+    const that = this;
+    api.request_GetSiteInfo().then(res => {
+      if (res.data.statusCode == 203) {
+        //若为203,证明还未登录,跳转到登录页,这里可能刚从主页跳转过来,频繁的跳转可能会跳转页面超时,故而加上延时
+        setTimeout(() => {
+          wx.navigateTo({
+            url: '../login/login'
+          })
+        }, 500)
+        return
+      }
+      console.log("站点信息", res)
+      
+      const name = res.data.data.site.name;
+      that.setData({
+        stationName:name,
+      })
+    })
+  },
   /** 获取订单信息 */
   /** 获取订单信息 */
   getOrder() {
   getOrder() {
     wx.showLoading({
     wx.showLoading({
@@ -100,6 +120,7 @@ Page({
     api.request_GetMiniProgramTransactionsUnpaidNozzle(Number(this.data.nozzleId))
     api.request_GetMiniProgramTransactionsUnpaidNozzle(Number(this.data.nozzleId))
       .then(res => {
       .then(res => {
         wx.hideLoading()
         wx.hideLoading()
+        wx.stopPullDownRefresh()
         if (res.data.statusCode == 203) {
         if (res.data.statusCode == 203) {
           //若为203,证明还未登录,跳转到登录页,这里可能刚从主页跳转过来,频繁的跳转可能会跳转页面超时,故而加上延时
           //若为203,证明还未登录,跳转到登录页,这里可能刚从主页跳转过来,频繁的跳转可能会跳转页面超时,故而加上延时
           setTimeout(() => {
           setTimeout(() => {
@@ -123,7 +144,8 @@ Page({
             discount: order.originalAmount - order.actualPaymentAmount,
             discount: order.originalAmount - order.actualPaymentAmount,
             orderId: order.id,
             orderId: order.id,
             time: time,
             time: time,
-            price:order.price
+            price:order.price,
+            station:this.data.stationName
           }
           }
         })
         })
 
 
@@ -141,7 +163,7 @@ Page({
     })
     })
     var that = this;
     var that = this;
     wx.navigateTo({
     wx.navigateTo({
-      url: '../moreOrder/moreOrder?nozzle=' + this.data.nozzleId,
+      url: '../moreOrder/moreOrder?nozzle=' + this.data.nozzleId+'&stationName=' + this.data.stationName,
       events: {
       events: {
         acceptOrderFromMoreOrder: function (data) {
         acceptOrderFromMoreOrder: function (data) {
           console.log("获取到传送过来的订单", data)
           console.log("获取到传送过来的订单", data)
@@ -159,27 +181,28 @@ Page({
     wx.showLoading({
     wx.showLoading({
       title: '正在跳转',
       title: '正在跳转',
     })
     })
-    var that = this;
-    api.request_wechatPay(this.data.order.orderId).then(res => {
-      console.log("支付结果", res)
-      if(res.data.statusCode != 200) {
-        wx.hideLoading()
-        wx.showModal({
-          title: '提示',
-          content: '支付失败',
-        })
-        return
-      }
-      this.subMessage()
-      // this.pay()
-    }).catch(err => {
-      wx.hideLoading()
-      console.log("支付失败", err)
-      wx.showModal({
-        title: '提示',
-        content: '支付失败',
-      })
-    })
+    this.subMessage()
+    // var that = this;
+    // api.request_wechatPay(this.data.order.orderId).then(res => {
+    //   console.log("支付结果", res)
+    //   if(res.data.statusCode != 200) {
+    //     wx.hideLoading()
+    //     wx.showModal({
+    //       title: '提示',
+    //       content: '支付失败',
+    //     })
+    //     return
+    //   }
+    //   this.subMessage()
+    //   // this.pay()
+    // }).catch(err => {
+    //   wx.hideLoading()
+    //   console.log("支付失败", err)
+    //   wx.showModal({
+    //     title: '提示',
+    //     content: '支付失败',
+    //   })
+    // })
     
     
   },
   },
   /** 订阅消息模板 */
   /** 订阅消息模板 */

+ 2 - 1
pages/TransactionPage/TransactionPage.json

@@ -3,5 +3,6 @@
     "orderInfo":"../../components/orderItemInfo/orderItemInfo",
     "orderInfo":"../../components/orderItemInfo/orderItemInfo",
     "pay":"../../components/pay/pay"
     "pay":"../../components/pay/pay"
   },
   },
-  "navigationBarTitleText": "确认支付"
+  "navigationBarTitleText": "确认支付",
+  "enablePullDownRefresh": true
 }
 }

+ 0 - 1
pages/TransactionPage/TransactionPage.wxml

@@ -8,5 +8,4 @@
   <!-- 支付按钮 -->
   <!-- 支付按钮 -->
   <pay class="payButton" amount="{{order.amount}}" bind:onPay="toPay" />
   <pay class="payButton" amount="{{order.amount}}" bind:onPay="toPay" />
 
 
-  <text>{{nozzleId}}</text>
 </view>
 </view>

+ 141 - 9
pages/historyOrder/historyOrder.js

@@ -12,6 +12,11 @@ Page({
   data: {
   data: {
     orders: [],
     orders: [],
     date: '',
     date: '',
+    latitude: 0, //用户当前经度
+    longitude: 0, //用户当前纬度
+    stationName:'',//油站名
+    stationLatitude: 0, //站点经度
+    stationLongitude: 0, //站点纬度
     startDate: '',
     startDate: '',
     endDate: '',
     endDate: '',
     pageNum: 1,//查询页码
     pageNum: 1,//查询页码
@@ -152,10 +157,55 @@ Page({
       endDate: lastMouthDay
       endDate: lastMouthDay
     });
     });
     console.log("历史页当前data", this.data)
     console.log("历史页当前data", this.data)
+    this.getStationInfo();
+    // this.startCountdow();
+  },
 
 
-    
+  /** 获取站点信息 */
+  getStationInfo() {
+    const that = this;
+    api.request_GetSiteInfo().then(res => {
+      if (res.data.statusCode == 203) {
+        //若为203,证明还未登录,跳转到登录页,这里可能刚从主页跳转过来,频繁的跳转可能会跳转页面超时,故而加上延时
+        setTimeout(() => {
+          wx.navigateTo({
+            url: '../login/login'
+          })
+        }, 500)
+        return
+      }
+      console.log("站点信息", res)
+      const stationLocation = res.data.data.site.gpsCoordinates.split(",");
+      const name = res.data.data.site.name;
+      
+      that.setData({
+        stationName:name,
+      })
+      
+      if (stationLocation.length == 2) {
+        that.setData({
+          stationLatitude: stationLocation[0],
+          stationLongitude: stationLocation[1]
+        })
+      }
 
 
-    // this.startCountdow();
+      this.getLocation();
+    })
+  },
+
+  /** 获取用户经纬度 */
+  getLocation() {
+    const that = this;
+    wx.getLocation({
+      type: 'wgs84',
+      success(res) {
+        console.log("获取经纬度结果", res)
+        that.setData({
+          latitude: res.latitude,
+          longitude: res.longitude
+        })
+      }
+    })
   },
   },
 
 
   /**
   /**
@@ -214,8 +264,11 @@ Page({
 
 
   /** 日期选择器选择时间 */
   /** 日期选择器选择时间 */
   bindDateChange(date) {
   bindDateChange(date) {
+    console.log("日期选择",date)
     this.setData({
     this.setData({
       date: date.detail.value,
       date: date.detail.value,
+      pageNum:1,
+      pageSize:5,
       orders: []
       orders: []
     });
     });
     console.log(date)
     console.log(date)
@@ -257,6 +310,70 @@ Page({
     if (event.detail.event == "重新授权") {
     if (event.detail.event == "重新授权") {
       this.toAuthorization(event.detail.order.orderId)
       this.toAuthorization(event.detail.order.orderId)
     }
     }
+    if(event.detail.event == "继续支付") {
+      this.toPay(event.detail.order.orderId)
+    }
+  },
+
+  /** 支付按钮点击事件 */
+  toPay(orderId) {
+    wx.showLoading({
+      title: '支付中',
+    })
+    this.subMessage(orderId)
+  },
+  /** 订阅消息模板 */
+  subMessage(orderId) {
+    const that = this;
+    wx.requestSubscribeMessage({
+      tmplIds: ['V0tl-4n-5hwNZc4SrEttvrmawAyM-SB0pQWZNwp54Ks'], // 最多支持3条
+      success(res) {
+        that.pay(orderId)
+        // 'accept'表示用户同意订阅该条id对应的模板消息
+        if (res['V0tl-4n-5hwNZc4SrEttvrmawAyM-SB0pQWZNwp54Ks'] === 'accept') {
+          
+        }
+      },
+      fail(err) {
+        that.pay(orderId)
+      }
+    })
+
+
+  },
+  /** 实际支付 */
+  pay(orderId) {
+    const that = this;
+    api.request_wechatPay(orderId)
+      .then(res => {
+        wx.requestPayment({
+          timeStamp: res.data.data.unifiedOrderResult.timeStamp,
+          nonceStr: res.data.data.unifiedOrderResult.nonceStr,
+          package: res.data.data.unifiedOrderResult.package,
+          signType: res.data.data.unifiedOrderResult.signType,
+          paySign: res.data.data.unifiedOrderResult.paySign,
+          success: res => {
+            wx.hideLoading()
+            that.sendMessage(orderId)
+            that.refreshOrder()
+          },
+          fail: res => {
+            wx.hideLoading()
+          }
+        })
+      });
+  },
+  /** 发送消息模板 */
+  sendMessage(orderId) {
+    const message = {
+      trxid: orderId,
+      orderType: '支付'
+    }
+    api.request_sendMessage(message).then(res => {
+      console.log("发送消息模板结果", res)
+    }).catch(err => {
+      console.log("发送消息模板失败", err)
+    })
   },
   },
 
 
   /** 授权 */
   /** 授权 */
@@ -265,6 +382,13 @@ Page({
     wx.showLoading({
     wx.showLoading({
       title: '授权中',
       title: '授权中',
     })
     })
+    const distance = util.haversine(this.data.stationLatitude,this.data.stationLongitude,this.data.latitude,this.data.longitude);
+    if(distance > 500) {
+      wx.showToast({
+        title: '您不在油站范围内,请到油站时进行下单',
+      })
+      return
+    }
     api.request_NozzleAuthorization(orderId).then(res => {
     api.request_NozzleAuthorization(orderId).then(res => {
       console.log("授权", res)
       console.log("授权", res)
       wx.hideLoading()
       wx.hideLoading()
@@ -289,8 +413,10 @@ Page({
       title: '获取订单中',
       title: '获取订单中',
     })
     })
     const that = this;
     const that = this;
-    api.request_WXFindOrders(this.data.date, this.data.pageNum, this.data.pageSize).then(res => {
+    const findTime = this.data.date != '' ? this.data.date + "T23:59:59" : this.data.date;
+    api.request_WXFindOrders(findTime, this.data.pageNum, this.data.pageSize).then(res => {
       wx.hideLoading()
       wx.hideLoading()
+      wx.stopPullDownRefresh()
       // api.request_WXFindOrders(this.data.date, 3, 5).then(res => {
       // api.request_WXFindOrders(this.data.date, 3, 5).then(res => {
       console.log("获取历史订单", res)
       console.log("获取历史订单", res)
       let datas = res.data.data;
       let datas = res.data.data;
@@ -331,7 +457,7 @@ Page({
       //获取订单状态
       //获取订单状态
       var status = undefined;
       var status = undefined;
       //根据不同的模式获取订单状态值
       //根据不同的模式获取订单状态值
-      if (that.data.paymentMode == 0) {
+      if (order.orderType == 0) {
         status = that.data.payStatusValue.find(state => state.orderStatus == order.orderStatus)
         status = that.data.payStatusValue.find(state => state.orderStatus == order.orderStatus)
       } else {
       } else {
         status = that.data.prepayStatuValue.find(state =>
         status = that.data.prepayStatuValue.find(state =>
@@ -348,7 +474,7 @@ Page({
         stute = status.status
         stute = status.status
         stateColor = status.statusColor
         stateColor = status.statusColor
       }
       }
-      if (that.data.paymentMode == 0) {
+      if (order.orderType == 0) {
         if (stute == '未支付') bt2 = '重新支付';
         if (stute == '未支付') bt2 = '重新支付';
         return {
         return {
           order: {
           order: {
@@ -362,9 +488,11 @@ Page({
             discount: order.originalAmount - order.actualPaymentAmount,
             discount: order.originalAmount - order.actualPaymentAmount,
             orderId: order.id,
             orderId: order.id,
             time: time,
             time: time,
-            price: order.price
+            price: order.price,
+            station:that.data.stationName
           },
           },
-          bottonText2: bt2
+          bottonText2: bt2,
+          orderType:order.orderType
         }
         }
       } else {
       } else {
         if (stute == "授权成功") bt2 = "请尽快提枪"
         if (stute == "授权成功") bt2 = "请尽快提枪"
@@ -388,10 +516,12 @@ Page({
             discount: order.originalAmount - order.actualPaymentAmount,
             discount: order.originalAmount - order.actualPaymentAmount,
             refund: order.refundAmount,
             refund: order.refundAmount,
             orderId: order.id,
             orderId: order.id,
-            time: time
+            time: time,
+            station:that.data.stationName
           },
           },
           bottonText1: bt1,
           bottonText1: bt1,
-          bottonText2: bt2
+          bottonText2: bt2,
+          orderType:order.orderType
         }
         }
       }
       }
     })
     })
@@ -403,6 +533,8 @@ Page({
   refreshOrder() {
   refreshOrder() {
     this.setData({
     this.setData({
       date: '',
       date: '',
+      pageNum:1,
+      pageSize:5,
       orders: []
       orders: []
     });
     });
     console.log(this.data.date)
     console.log(this.data.date)

+ 2 - 1
pages/historyOrder/historyOrder.json

@@ -3,5 +3,6 @@
     "orderItem":"../../components/orderItemInfo/orderItemInfo",
     "orderItem":"../../components/orderItemInfo/orderItemInfo",
     "prepayOrderItem":"../../components/prepayOrderItemInfo/prepayOrderItemInfo"
     "prepayOrderItem":"../../components/prepayOrderItemInfo/prepayOrderItemInfo"
   },
   },
-  "navigationBarTitleText": "订单列表"
+  "navigationBarTitleText": "订单列表",
+  "enablePullDownRefresh": true
 }
 }

+ 29 - 4
pages/historyOrder/historyOrder.wxml

@@ -12,19 +12,44 @@
   </view>
   </view>
 </picker>
 </picker>
 
 
+<view class="orderItem" wx:for="{{orders}}" wx:key="index">
+      <orderItem wx:if="{{item.orderType == 0}}"
+      order="{{item.order}}"
+      bottonText2="{{item.bottonText2}}"
+      bind:bottonEvent1="onOrderButtonClick1"
+      bind:bottonEvent2="onOrderButtonClick2" />
+
+      <prepayOrderItem wx:if="{{item.orderType == 1}}"
+      order="{{item.order}}"
+      buttonText1="{{item.bottonText1}}"
+      buttonText2="{{item.bottonText2}}"
+      bind:bottonEvent1="onOrderButtonClick1"
+      bind:bottonEvent2="onOrderButtonClick2" />
+      
+    </view>
+
+    
   <!-- 订单列表-后支付-->
   <!-- 订单列表-后支付-->
-  <view class="order" wx:if="{{paymentMode == 0}}">
+  <!-- <view class="order" wx:if="{{paymentMode == 0}}">
     <view class="orderItem" wx:for="{{orders}}" wx:key="index">
     <view class="orderItem" wx:for="{{orders}}" wx:key="index">
       <orderItem 
       <orderItem 
       order="{{item.order}}"
       order="{{item.order}}"
       bottonText2="{{item.bottonText2}}"
       bottonText2="{{item.bottonText2}}"
       bind:bottonEvent1="onOrderButtonClick1"
       bind:bottonEvent1="onOrderButtonClick1"
       bind:bottonEvent2="onOrderButtonClick2" />
       bind:bottonEvent2="onOrderButtonClick2" />
+
+      <prepayOrderItem 
+      order="{{item.order}}"
+      buttonText1="{{item.bottonText1}}"
+      buttonText2="{{item.bottonText2}}"
+      bind:bottonEvent1="onOrderButtonClick1"
+      bind:bottonEvent2="onOrderButtonClick2" />
+      
     </view>
     </view>
-  </view>
+  </view> -->
 
 
   <!-- 订单列表-预支付-->
   <!-- 订单列表-预支付-->
-  <view class="order" wx:if="{{paymentMode == 1}}">
+  <!-- <view class="order" wx:if="{{paymentMode == 1}}">
     <view class="orderItem" wx:for="{{orders}}" wx:key="index">
     <view class="orderItem" wx:for="{{orders}}" wx:key="index">
       <prepayOrderItem 
       <prepayOrderItem 
       order="{{item.order}}"
       order="{{item.order}}"
@@ -33,7 +58,7 @@
       bind:bottonEvent1="onOrderButtonClick1"
       bind:bottonEvent1="onOrderButtonClick1"
       bind:bottonEvent2="onOrderButtonClick2" />
       bind:bottonEvent2="onOrderButtonClick2" />
     </view>
     </view>
-  </view>
+  </view> -->
 
 
   <text style="color: #a1a1a1; margin: 6%">仅保留一个月的交易记录</text>
   <text style="color: #a1a1a1; margin: 6%">仅保留一个月的交易记录</text>
 </view>
 </view>

+ 1 - 1
pages/historyOrder/historyOrder.wxss

@@ -42,7 +42,7 @@ picker{
 }
 }
 
 
 .orderItem {
 .orderItem {
-  width: 100%;
+  width: 90%;
   box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
   box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
   border-radius: 1%;
   border-radius: 1%;
   margin-top: 5%;
   margin-top: 5%;

+ 2 - 2
pages/login/login.js

@@ -204,8 +204,8 @@ Page({
         success(res) {
         success(res) {
           console.log('用户信息:', res.userInfo);
           console.log('用户信息:', res.userInfo);
           var user = {
           var user = {
-            // UserName: res.userInfo.nickName,
-            UserName: "测试",
+            UserName: res.userInfo.nickName,
+            // UserName: "测试",
             UserAvatarUrl: res.userInfo.avatarUrl,
             UserAvatarUrl: res.userInfo.avatarUrl,
             UserPhoneNumber: '',
             UserPhoneNumber: '',
             Address: '',
             Address: '',

+ 1 - 1
pages/login/login.wxml

@@ -1,6 +1,6 @@
 <view class="container">
 <view class="container">
   <view class="image-container">
   <view class="image-container">
-    <image src="/images/v2_sony48.svg" mode="widthFix" class="auto-image" style="position: relative; left: -16rpx; top: -135rpx"></image>
+    <image src="/images/v2_sony48.svg" mode="widthFix" class="auto-image" style="position: relative; left: -16rpx; top: -135rpx;"></image>
   </view>
   </view>
   <view class="action-text" style="position: relative; left: 0rpx; top: -110rpx">立码加油</view>
   <view class="action-text" style="position: relative; left: 0rpx; top: -110rpx">立码加油</view>
   <button class="auth-button" open-type="getPhoneNumber" style="width: 547rpx; height: 94rpx; display: block; box-sizing: border-box; left: 0rpx; top: 0rpx"  bindtap="handleAuthLogin" bindgetphonenumber="handleAuthLogin">一键授权登录</button>
   <button class="auth-button" open-type="getPhoneNumber" style="width: 547rpx; height: 94rpx; display: block; box-sizing: border-box; left: 0rpx; top: 0rpx"  bindtap="handleAuthLogin" bindgetphonenumber="handleAuthLogin">一键授权登录</button>

+ 3 - 3
pages/login/login.wxss

@@ -35,11 +35,11 @@
   font-size: 18px;
   font-size: 18px;
   font-weight: bold;
   font-weight: bold;
   margin-bottom: 20px;
   margin-bottom: 20px;
-  color: #07c160;
+  color: #0d7ee7;
 }
 }
 
 
 .auth-button {
 .auth-button {
-  background-color: #07c160;
+  background-color: #0d7ee7;
   color: white;
   color: white;
   font-size: 18px;
   font-size: 18px;
   padding: 8px 20px; /* 调整内边距,降低高度 */
   padding: 8px 20px; /* 调整内边距,降低高度 */
@@ -55,6 +55,6 @@
 }
 }
 
 
 .link {
 .link {
-  color: #07c160;
+  color: #0d7ee7;
   text-decoration: underline;
   text-decoration: underline;
 }
 }

+ 18 - 6
pages/moreOrder/moreOrder.js

@@ -8,7 +8,9 @@ Page({
    */
    */
   data: {
   data: {
     buttonMessage2:'去支付',
     buttonMessage2:'去支付',
-    orders:[]
+    orders:[],
+    stationName:'',
+    nozzleId:0
   },
   },
 
 
   /**
   /**
@@ -16,7 +18,11 @@ Page({
    */
    */
   onLoad(options) {
   onLoad(options) {
     console.log("更多订单页",options)
     console.log("更多订单页",options)
-    this.getOrder(options.nozzle)
+    this.setData({
+      stationName:options.stationName,
+      nozzleId:options.nozzle
+    })
+    this.getOrder()
   },
   },
 
 
   /**
   /**
@@ -51,7 +57,7 @@ Page({
    * 页面相关事件处理函数--监听用户下拉动作
    * 页面相关事件处理函数--监听用户下拉动作
    */
    */
   onPullDownRefresh() {
   onPullDownRefresh() {
-
+    this.getOrder()
   },
   },
 
 
   /**
   /**
@@ -78,10 +84,15 @@ Page({
   },
   },
 
 
   /** 获取订单信息 */
   /** 获取订单信息 */
-  getOrder(nozzle) {
-    api.request_GetMiniProgramTransactionsUnpaidNozzle(Number(nozzle))
+  getOrder() {
+    wx.showLoading({
+      title: '获取更多订单',
+    })
+    api.request_GetMiniProgramTransactionsUnpaidNozzle(Number(this.data.nozzleId))
     .then(res => {
     .then(res => {
       console.log("获取到未支付订单",res)
       console.log("获取到未支付订单",res)
+      wx.hideLoading()
+      wx.stopPullDownRefresh()
       var datas = res.data.data;
       var datas = res.data.data;
       var getOrders = datas.map(order => {
       var getOrders = datas.map(order => {
         var time = util.formatDateNotSecond(order.fuelItemTransactionEndTime);
         var time = util.formatDateNotSecond(order.fuelItemTransactionEndTime);
@@ -93,7 +104,8 @@ Page({
           payAmount:order.actualPaymentAmount,
           payAmount:order.actualPaymentAmount,
           discount:order.originalAmount - order.actualPaymentAmount,
           discount:order.originalAmount - order.actualPaymentAmount,
           orderId:order.id,
           orderId:order.id,
-          time:time
+          time:time,
+          station:this.data.stationName
         }
         }
       })
       })
       
       

+ 2 - 1
pages/moreOrder/moreOrder.json

@@ -2,5 +2,6 @@
   "usingComponents": {
   "usingComponents": {
     "orderItem":"../../components/orderItemInfo/orderItemInfo"
     "orderItem":"../../components/orderItemInfo/orderItemInfo"
   },
   },
-  "navigationBarTitleText": "确认支付"
+  "navigationBarTitleText": "确认支付",
+  "enablePullDownRefresh": true
 }
 }

+ 16 - 6
pages/payStatus/payStatus.js

@@ -2,13 +2,13 @@ const { default: api } = require("../../js/api");
 
 
 Page({
 Page({
   data: {
   data: {
-    id: 4 , // 初始ID值
+    id: 1 , // 初始ID值
     nozzleId:0,
     nozzleId:0,
     order:null,
     order:null,
-    countdown: 120,
+    // countdown: 120,
     progressWidth: 100, // 初始进度条宽度为100%
     progressWidth: 100, // 初始进度条宽度为100%
-    totalSeconds: 60, // 总秒数
-    currentSeconds: 60, // 当前剩余秒数
+    totalSeconds: 120,// 总秒数
+    currentSeconds: 120, // 当前剩余秒数
     countDownTimer:null, //倒计时定时器
     countDownTimer:null, //倒计时定时器
     checkNozzleStatuesTimer:null, //检查油枪状态定时器
     checkNozzleStatuesTimer:null, //检查油枪状态定时器
   },
   },
@@ -31,7 +31,7 @@ Page({
       that.toAuthorization();
       that.toAuthorization();
     }
     }
     });
     });
-
+    
   },
   },
 
 
   /** 返回重新支付 */
   /** 返回重新支付 */
@@ -71,9 +71,16 @@ Page({
   /** 取消授权 */
   /** 取消授权 */
   toUnAuthorization(){
   toUnAuthorization(){
     const that = this;
     const that = this;
+    wx.showLoading({
+      title: '正在取消授权',
+    })
     api.request_CancelNozzleAuthorization(this.data.order.orderId).then(res => {
     api.request_CancelNozzleAuthorization(this.data.order.orderId).then(res => {
       console.log("取消授权",res)
       console.log("取消授权",res)
+      wx.hideLoading()
       if(res.data.statusCode != 200) {
       if(res.data.statusCode != 200) {
+        wx.showToast({
+          title: '取消授权失败,重新取消授权',
+        })
         that.countDown()
         that.countDown()
         that.startCheckNozzle()
         that.startCheckNozzle()
         return
         return
@@ -81,6 +88,9 @@ Page({
       that.setData({
       that.setData({
         id:5
         id:5
       })
       })
+    }).catch(err => {
+      console.log("取消授权报错",err)
+      wx.hideLoading()
     })
     })
   },
   },
 
 
@@ -102,7 +112,7 @@ Page({
       if (currentSeconds < 0) {
       if (currentSeconds < 0) {
         that.toUnAuthorization()
         that.toUnAuthorization()
         that.setData({
         that.setData({
-          currentSeconds: 60,
+          currentSeconds: 120,
           progressWidth: 100
           progressWidth: 100
         })
         })
         that.clearTimer()
         that.clearTimer()

+ 5 - 4
pages/payStatus/payStatus.wxml

@@ -54,7 +54,7 @@
   </view>
   </view>
   <!-- 倒计时区域 -->
   <!-- 倒计时区域 -->
   <view class="i" style="position: relative; left: -2rpx; top: -387rpx; width: 560rpx; height: 100rpx; display: block; box-sizing: border-box">
   <view class="i" style="position: relative; left: -2rpx; top: -387rpx; width: 560rpx; height: 100rpx; display: block; box-sizing: border-box">
-    <view class="k" style="width: {{progressWidth}}%; position: relative; left: -58rpx; top: 0rpx"></view>
+    <view class="k" style="width: {{progressWidth}}%; position: relative;"></view>
     <text class="countdown-text" style="position: absolute; left: 85rpx; top: -105rpx; width: 368rpx; height: 291rpx; display: flex; box-sizing: border-box">{{currentSeconds}}s</text>
     <text class="countdown-text" style="position: absolute; left: 85rpx; top: -105rpx; width: 368rpx; height: 291rpx; display: flex; box-sizing: border-box">{{currentSeconds}}s</text>
   </view>
   </view>
   <!-- 底部链接区域 -->
   <!-- 底部链接区域 -->
@@ -78,8 +78,8 @@
     <text class="f" style="position: relative; left: 0rpx; top: -312rpx">加油中</text>
     <text class="f" style="position: relative; left: 0rpx; top: -312rpx">加油中</text>
   </view>
   </view>
   <view class="button-container">
   <view class="button-container">
-    <button class="check-order-btn" style="position: relative; left: 0rpx; top: -314rpx; width: 593rpx; display: block; box-sizing: border-box; height: 99rpx">查看订单</button>
-    <button class="complete-btn" style="position: relative; left: 0rpx; top: -295rpx; width: 593rpx; display: block; box-sizing: border-box; height: 99rpx">完成</button>
+    <button class="check-order-btn" style="position: relative; left: 0rpx; top: -314rpx; width: 593rpx; display: block; box-sizing: border-box; height: 99rpx" bind:tap="toHistory">查看订单</button>
+    <button class="complete-btn" style="position: relative; left: 0rpx; top: -295rpx; width: 593rpx; display: block; box-sizing: border-box; height: 99rpx"bind:tap="toHistory">完成</button>
   </view>
   </view>
   <!-- 底部链接区域 -->
   <!-- 底部链接区域 -->
   <view class="bottom-links" style="position: relative; left: 180rpx; top: -12rpx">
   <view class="bottom-links" style="position: relative; left: 180rpx; top: -12rpx">
@@ -103,7 +103,8 @@
 
 
   <!-- 操作按钮部分 -->
   <!-- 操作按钮部分 -->
   <view class="action-button-section">
   <view class="action-button-section">
-    <button class="retry-pay-btn" style="position: relative; left: 0rpx; top: 245rpx; width: 602rpx; display: block; box-sizing: border-box">重新发起授权</button>
+    <button class="retry-pay-btn" style="position: relative; left: 0rpx; top: 245rpx; width: 602rpx; display: block; box-sizing: border-box" bind:tap="toAuthorization">重新发起授权</button>
+    <button class="checkHistory" style="position: relative; left: 0rpx; top: 245rpx; width: 602rpx; display: block; box-sizing: border-box" bind:tap="toHistory">查看订单</button>
   </view>
   </view>
   <!-- 底部链接区域 -->
   <!-- 底部链接区域 -->
   <view class="bottom-links" style="position: relative; left: 24rpx; top: 0rpx">
   <view class="bottom-links" style="position: relative; left: 24rpx; top: 0rpx">

+ 59 - 22
pages/quantify/quantify.js

@@ -13,7 +13,9 @@ Page({
     isLoading: false,
     isLoading: false,
     nozzleInfo: null,
     nozzleInfo: null,
     quantify: '元',
     quantify: '元',
+    stationName:'',//油站名
     fastInputs: [10, 20, 50, 100, 200, 500],
     fastInputs: [10, 20, 50, 100, 200, 500],
+    selectIndex:-1,
     type: [{
     type: [{
       name: '金额',
       name: '金额',
       checked: true
       checked: true
@@ -44,9 +46,6 @@ Page({
     this.setData({
     this.setData({
       nozzleId: id
       nozzleId: id
     })
     })
-    wx.showToast({
-      title: id,
-    })
   },
   },
 
 
   /** 获取站点信息 */
   /** 获取站点信息 */
@@ -63,6 +62,10 @@ Page({
         return
         return
       }
       }
       console.log("站点信息", res)
       console.log("站点信息", res)
+      const name = res.data.data.site.name;
+      this.setData({
+        stationName:name,
+      })
       const stationLocation = res.data.data.site.gpsCoordinates.split(",");
       const stationLocation = res.data.data.site.gpsCoordinates.split(",");
       if (stationLocation.length == 2) {
       if (stationLocation.length == 2) {
         this.setData({
         this.setData({
@@ -79,6 +82,8 @@ Page({
     const that = this;
     const that = this;
     wx.getLocation({
     wx.getLocation({
       type: 'wgs84',
       type: 'wgs84',
+      isHighAccuracy:true,
+      highAccuracyExpireTime:5000,
       success(res) {
       success(res) {
         console.log("获取经纬度结果", res)
         console.log("获取经纬度结果", res)
         that.setData({
         that.setData({
@@ -113,9 +118,24 @@ Page({
   /** 输入框监听 */
   /** 输入框监听 */
   onInputChange(event) {
   onInputChange(event) {
     console.log("输入框变化", event)
     console.log("输入框变化", event)
-    this.setData({
-      inputValue: event.detail.value
-    })
+    let value = event.detail.value;
+    
+    // 1. 过滤非法字符(只允许数字和小数点)
+    value = value.replace(/[^\d.]/g, "");
+
+    // 2. 限制小数点只能出现一次
+    const dotIndex = value.indexOf(".");
+    if (dotIndex !== -1) {
+      value = value.substring(0, dotIndex + 1) + value.substring(dotIndex).replace(/\./g, "");
+    }
+
+    // 3. 限制小数点后最多两位
+    if (dotIndex !== -1 && value.length > dotIndex + 3) {
+      value = value.substring(0, dotIndex + 3);
+    }
+
+    // 4. 更新输入框值
+    this.setData({ inputValue: value });
   },
   },
 
 
   /**
   /**
@@ -123,27 +143,36 @@ Page({
    */
    */
   onFastInputClick(event) {
   onFastInputClick(event) {
     console.log("点击", event)
     console.log("点击", event)
-    const amount = event.currentTarget.dataset.id;
+    const value = event.currentTarget.dataset.id;
+    const index = event.currentTarget.dataset.index;
     this.setData({
     this.setData({
-      inputValue: amount
+      inputValue: value,
+      selectIndex:index
     });
     });
   },
   },
 
 
   /** 授权 */
   /** 授权 */
   toAuthorization() {
   toAuthorization() {
+    if(this.data.inputValue == '') {
+      wx.showToast({
+        title: '请输入定量值',
+        icon:'none'
+      })
+      return
+    }
     wx.showLoading({
     wx.showLoading({
-      title: '授权中',
+      title: '下单中',
     })
     })
   
   
     console.log('进入 toAuthorization 方法');
     console.log('进入 toAuthorization 方法');
     console.log(this.data)
     console.log(this.data)
-    // const distance = utils.haversine(this.data.stationLatitude,this.data.stationLongitude,this.data.latitude,this.data.longitude);
-    // if(distance > 500) {
-    //   wx.showToast({
-    //     title: '您不在油站范围内,请到油站时进行下单',
-    //   })
-    //   return
-    // }
+    const distance = utils.haversine(this.data.stationLatitude,this.data.stationLongitude,this.data.latitude,this.data.longitude);
+    if(distance > 500) {
+      wx.showToast({
+        title: '您不在油站范围内,请到油站时进行下单',
+      })
+      return
+    }
     this.createOrder();
     this.createOrder();
   },
   },
 
 
@@ -158,12 +187,18 @@ Page({
       });
       });
       return;
       return;
     }
     }
-
-    const value = this.data.inputValue;
-    console.log("要授权的油枪信息", nozzle, value)
-    if (value <= 0) {
+    const value = parseFloat(this.data.inputValue);
+    console.log("要授权的油枪信息", nozzle, value);
+    if (this.data.quantify == '元' && (value < 2.00 || value > 9900.00)) {
       wx.showToast({
       wx.showToast({
-        title: '定量值非法',
+        title: '金额须在2~9900之间',
+      });
+      return;
+    }
+    const price = parseFloat(nozzle.productPrice);
+    if (this.data.quantify == '升' && (value < 1.00 || (value * price) > 9900.00)) {
+      wx.showToast({
+        title: '升数不合法',
       });
       });
       return;
       return;
     }
     }
@@ -210,6 +245,7 @@ Page({
   },
   },
 
 
   toPayPage(res) {
   toPayPage(res) {
+    const that = this;
     const order = res.data.data;
     const order = res.data.data;
     const time = utils.formatDateNotSecond(order.createTime);
     const time = utils.formatDateNotSecond(order.createTime);
     setTimeout(() => {
     setTimeout(() => {
@@ -225,7 +261,8 @@ Page({
             discount: order.originalAmount - order.actualPaymentAmount,
             discount: order.originalAmount - order.actualPaymentAmount,
             orderId: order.id,
             orderId: order.id,
             time: time,
             time: time,
-            price:order.price
+            price:order.price,
+            station:that.data.stationName
           })
           })
         }
         }
       })
       })

+ 1 - 1
pages/quantify/quantify.wxml

@@ -29,7 +29,7 @@
 
 
       <!-- 快速输入 -->
       <!-- 快速输入 -->
       <view class="fastInput">
       <view class="fastInput">
-        <text hover-class="fast-item-hover" class="fastItem" wx:for="{{fastInputs}}" wx:key="index" bindtap="onFastInputClick" data-id="{{item}}">{{item}}{{quantify}}</text>
+        <text hover-class="fast-item-hover" class="{{index != selectIndex ? 'fastItem' : 'fastItemClick'}}" wx:for="{{fastInputs}}" wx:key="index" bindtap="onFastInputClick" data-id="{{item}}" data-index="{{index}}">{{item}}{{quantify}}</text>
       </view>
       </view>
 
 
       <!-- 定量类型选择 -->
       <!-- 定量类型选择 -->

+ 12 - 0
pages/quantify/quantify.wxss

@@ -102,6 +102,18 @@
   line-height: 100rpx;
   line-height: 100rpx;
   color: #acacac;
   color: #acacac;
 }
 }
+.fastItemClick{
+  flex:1 1 25%;
+  box-sizing: border-box;
+  text-align: center;
+  border: #f2f2f2 solid 2rpx;
+  background-color: #0d7ee7;
+  border-radius: 30rpx;
+  margin: 1%;
+  height: 100rpx;
+  line-height: 100rpx;
+  color: #ffffff;
+}
 
 
 .typeSelect{
 .typeSelect{
   display: flex;
   display: flex;

+ 5 - 1
pages/scan/scan.wxml

@@ -3,7 +3,7 @@
     <image src="../../images/orientation.png" />
     <image src="../../images/orientation.png" />
     <text>{{site.name}}</text>
     <text>{{site.name}}</text>
   </view>
   </view>
-  <image class="background" src="../../images/stationBackground.png" style="height: 518rpx; display: block; box-sizing: border-box"></image>
+  <image class="background" src="../../images/stations.png" style="height: 518rpx; display: block; box-sizing: border-box"></image>
 
 
   <view class="scan-box" style="position: absolute; left: 38rpx; top: 379rpx; height: 1050rpx; display: flex; box-sizing: border-box">
   <view class="scan-box" style="position: absolute; left: 38rpx; top: 379rpx; height: 1050rpx; display: flex; box-sizing: border-box">
     <!-- 登录条 -->
     <!-- 登录条 -->
@@ -46,7 +46,11 @@
       </view>
       </view>
 
 
       <text class="scan-tip-text" style="position: relative; left: 0rpx; top: 0rpx; width: 327rpx; height: 45rpx; display: block; box-sizing: border-box">{{scanTip}}</text>
       <text class="scan-tip-text" style="position: relative; left: 0rpx; top: 0rpx; width: 327rpx; height: 45rpx; display: block; box-sizing: border-box">{{scanTip}}</text>
+
     </view>
     </view>
+
+    <text class="version">V2025.02.09</text>
   </view>
   </view>
 
 
+  
 </view>
 </view>

+ 6 - 0
pages/scan/scan.wxss

@@ -36,6 +36,7 @@
   display: flex;
   display: flex;
   flex-direction: column;
   flex-direction: column;
   justify-content: center;
   justify-content: center;
+  align-items: center;
   width: 90%;
   width: 90%;
   border-radius: 5%;
   border-radius: 5%;
   position: absolute;
   position: absolute;
@@ -180,4 +181,9 @@
 .scan-tip-text{
 .scan-tip-text{
   font-size: small;
   font-size: small;
   color: #808080;
   color: #808080;
+}
+
+.version{
+  display: flex;
+
 }
 }

+ 1 - 1
project.private.config.json

@@ -5,5 +5,5 @@
     "compileHotReLoad": true,
     "compileHotReLoad": true,
     "urlCheck": false
     "urlCheck": false
   },
   },
-  "libVersion": "2.16.1"
+  "libVersion": "3.10.2"
 }
 }