From 3ec10b0c2654e1243e42a5ad563d088ac89c87fe Mon Sep 17 00:00:00 2001
From: litian <C21AF165>
Date: 星期五, 27 九月 2024 14:06:56 +0800
Subject: [PATCH] zf

---
 pages/cart/paymentPage/index.js |  319 ++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 245 insertions(+), 74 deletions(-)

diff --git a/pages/cart/paymentPage/index.js b/pages/cart/paymentPage/index.js
index 6742356..a9e402d 100644
--- a/pages/cart/paymentPage/index.js
+++ b/pages/cart/paymentPage/index.js
@@ -1,29 +1,48 @@
 // pages/cart/paymentPage/index.js
+import Toast from 'tdesign-miniprogram/toast/index';
+
 const app = getApp()
-import { getPublicImage } from '../../../assets/js/middleGround/tool';
-import drawQrcode from './js/weapp.qrcode'
+import {
+  getPublicImage
+} from '../../../assets/js/middleGround/tool';
+
 Page({
 
   /**
    * 椤甸潰鐨勫垵濮嬫暟鎹�
    */
   data: {
+    loading: true,
+    hidden: true,
+    myOrderOrderNumber: [],
     orderNumber: null,
     navBarHeight: '',
     barHeight: '',
     selectedIds: '',
     purchasedIds: [],
     productList: [],
+    price: '',
     payPrice: '',
     orderGoods: '',
     isPaySuccess: false,
     isPayComplete: false,
+    type: '',
+    onNorderSaleMethod: '',
+    integral: 0,
+    defaultVal: false,
+    deductioRate: 0,
+    currentBalance: 0,
+    showIntegral: false
+
   },
 
   /**
    * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
    */
   onLoad(options) {
+    wx.setNavigationBarTitle({
+      title: '鎻愪氦璁㈠崟'
+    });
     const systInfo = wx.getSystemInfoSync();
     const menu = wx.getMenuButtonBoundingClientRect(); // 鑳跺泭淇℃伅
     const navBarHeight = (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 瀵艰埅鏍忛珮搴�
@@ -31,12 +50,25 @@
       orderNumber: options.orderNumber,
       navBarHeight: navBarHeight,
       barHeight: systInfo.statusBarHeight,
-      selectedIds: options.selectedIds
+      selectedIds: options.selectedIds,
+      onNorderSaleMethod: options.onNorderSaleMethod
     })
-    console.log('鎺ユ敹鍒扮殑璁㈠崟鍙�:', this.data.orderNumber);
+    this.getIntegral()
     this.getOrderByOrderNumData()
+    this.getDataList()
   },
-
+  getIntegral() {
+    app.MG.store
+      .getUserWallet({
+        type: 'integral'
+      })
+      .then((res) => {
+        this.setData({
+          integral: res.balance,
+          deductioRate: res.exchangeRate
+        });
+      })
+  },
   /**
    * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
    */
@@ -89,96 +121,235 @@
     wx.navigateBack();
   },
 
-
+  // 閲戦鏄剧ず.00鏍煎紡
+  numFormat(value) {
+    if (!value) return "0.00";
+    value = Number(value).toFixed(2);
+    var intPart = Math.trunc(value); // 鑾峰彇鏁存暟閮ㄥ垎
+    var intPartFormat = intPart
+      .toString()
+      .replace(/(\d)(?=(?:\d{3})+$)/g, "$1,"); // 灏嗘暣鏁伴儴鍒嗛�笁涓�鏂�
+    var floatPart = ".00"; // 棰勫畾涔夊皬鏁伴儴鍒�
+    var value2Array = value.split(".");
+    // =2琛ㄧず鏁版嵁鏈夊皬鏁颁綅
+    if (value2Array.length === 2) {
+      floatPart = value2Array[1].toString(); // 鎷垮埌灏忔暟閮ㄥ垎
+      if (floatPart.length === 1) {
+        return `${intPartFormat}.${floatPart}0`;
+      }
+      return `${intPartFormat}.${floatPart}`;
+    }
+    return intPartFormat + floatPart;
+  },
   getOrderByOrderNumData() {
     let query = {
       orderNum: this.data.orderNumber,
       fields: {
         content: [],
         subtitle: [],
-
-
       }
     }
     app.MG.store.getOrderByOrderNum(query).then(res => {
-      console.log(res, 'res');
       this.setData({
-        orderGoods: res.orderNumber
+        orderGoods: res.orderNumber,
+        price: res.totalPrice.toFixed(2),
+        payPrice: res.payPrice.toFixed(2),
       })
-      console.log(this.data.orderGoods, 'res.orderNumber');
-
-      console.log(res.payPrice);
-      this.setData({
-        payPrice: res.payPrice.toFixed(2)
-      })
+      if (Number(this.data.payPrice) < Number(this.data.price)) {
+        this.handleChange()
+      }
       res.saleMethodLinks.forEach(item => {
-
+        const type = item.orderSaleMethod.type == 'createProductItemSaleMethod' ? 'item' : 'product';
+        item.type = type; // 灏唗ype璁剧疆涓篿tem瀵硅薄鐨勫睘鎬э紝鑰屼笉鏄娇鐢╯etData
         item.paymentIcon = getPublicImage(item.orderSaleMethod.product.icon)
-        console.log(item.orderSaleMethod.type);
+        if (item.orderSaleMethod.product.cmsTypeRefCode == 'jsek_digitalTextbooks') {
+          item.typeTxt = '鏁板瓧鏁欐潗'
+          item.productType = "鏁板瓧鏁欐潗"
+        } else if (item.orderSaleMethod.product.cmsTypeRefCode == 'jsek_digitalCourses') {
+          item.typeTxt = '鏁板瓧璇剧▼'
+          item.productType = "鏁板瓧璇剧▼"
+        } else {
+          item.typeTxt = '鐢靛瓙涔�'
+          item.productType = "鍥句功鏈嶅姟-鐢靛瓙涔�"
 
-        this.setData({
-          productList: res.saleMethodLinks,
-          type: item.orderSaleMethod.type == 'createProductItemSaleMethod' ? 'item' : 'product'
-        })
-
+          if (item.orderSaleMethod.type == 'createProductItemSaleMethod') {
+            item.typeTxt = '浜戝涔�'
+            item.productType = "鍥句功鏈嶅姟-浜戝涔�"
+          }
+        }
+      })
+      this.setData({
+        productList: res.saleMethodLinks,
+        loading: false,
+        hidden: false,
       })
     })
   },
+  getDataList() {
+    let data = {
+      start: 0,
+      size: 999,
+      filterList: [{
+        field: 'State',
+        value: 'WaitPay'
+      }],
+      sort: {
+        type: 'Desc',
+        field: 'CreateDate'
+      }
+    }
+    app.MG.store.getUserOrderList(data).then((res) => {
+      res.datas.forEach((item) => {
+        this.data.myOrderOrderNumber.push(item.saleMethodLinks[0].orderSaleMethod.id)
+      })
+    })
+  },
+
+  handleChange(e) {
+    if (e) {
+      this.setData({
+        defaultVal: e.detail.value,
+      });
+    } else {
+      this.setData({
+        defaultVal: true,
+      });
+    }
+
+    if (this.data.defaultVal) {
+      let useBalance = Math.round(Number(this.data.payPrice) * Number(this.data.deductioRate));
+      if (useBalance >= this.data.integral) {
+        this.setData({
+          currentBalance: this.data.integral,
+        });
+      } else {
+        this.setData({
+          currentBalance: useBalance,
+        });
+      }
+      const data = {
+        orderNumber: this.data.orderNumber,
+        payMethod: "Wallet",
+        type: "integral",
+        payValue: this.data.currentBalance
+      }
+      app.MG.store.newOrderPay(data).then(res => {
+        if (res) {
+          this.setData({
+            payId: res.payList[0].id,
+            payPrice: res.payPrice.toFixed(2),
+            deduct: (this.data.currentBalance / 100).toFixed(2),
+            integral: this.data.integral - this.data.currentBalance,
+            showIntegral: true
+          });
+        }
+      })
+    } else {
+      const data = {
+        orderNumber: this.data.orderNumber,
+        payId: this.data.payId,
+      }
+      app.MG.store.delOrderPay(data).then(res => {
+        if (res) {
+          this.setData({
+            payPrice: res.payPrice.toFixed(2),
+            showIntegral: false
+          });
+          this.getIntegral()
+        }
+      })
+    }
+  },
+
+
   confirmOrderGet() {
-    var that = this;
+    if (this.data.myOrderOrderNumber.includes(parseInt(this.data.onNorderSaleMethod))) {
+      Toast({
+        context: this,
+        selector: '#t-toast',
+        message: '宸茬粡鍦ㄨ鍗曚腑',
+        theme: 'warning',
+        direction: 'column',
+      });
+    } else {
+      var that = this;
+      let query = {
+        orderNum: this.data.orderGoods
+      }
+      app.MG.store.confirmOrder(query).then(res => {
+        if (res.orderNumber) {
+          let resOrderNum = {
+            orderNum: res.orderNumber,
+            platform: "WeChatAppCustom"
+          };
+          // 鐢ㄦ埛鏈粦瀹氬井淇� 鎶�500
+          app.MG.store.makeWeChatPay(resOrderNum).then(payRes => {
+            if (payRes) {
+              const payVal = JSON.parse(payRes);
+              wx.requestPayment({
+                "appId": payVal.appId,
+                "timeStamp": payVal.timeStamp,
+                "nonceStr": payVal.nonceStr,
+                "package": payVal.package,
+                "signType": payVal.signType,
+                "paySign": payVal.paySign,
+                success: function (res) {
+                  if (res.errMsg == 'requestPayment:ok') {
+                    that.setData({
+                      isPaySuccess: true
+                    })
+                  }
+                },
+                fail: function (res) {
+                  console.log('鏀粯澶辫触');
+                },
+                // 鏃犺鏀粯鎴愬姛澶辫触閮戒細璋冪敤
+                "complete": function (res) {
+                  if (res.errMsg == 'requestPayment:ok') {
+                    that.setData({
+                      isPayComplete: true
+                    })
+                  }
+                  if (that.data.isPaySuccess && that.data.isPayComplete) {
+                    that.navToBack()
+                  }
+                }
+              });
+            } else {
+              Toast({
+                context: this,
+                selector: '#t-toast',
+                message: '鏀粯澶辫触',
+                theme: 'warning',
+                direction: 'column',
+              });
+            }
+
+          })
+        }
+      })
+    }
+
+  },
+  // 椤甸潰杩斿洖
+  navToBack() {
+    this.getOrderByOrderNumData()
+    // 杩斿洖
+    wx.navigateBack()
+  },
+  onReceive() {
     let query = {
       orderNum: this.data.orderGoods
     }
     app.MG.store.confirmOrder(query).then(res => {
-      console.log(res.orderNumber, 'res');
-      if (res.orderNumber) {
-        const resOrderNum = {
-          orderNum: res.orderNumber,
-        };
-
-        // 鐢ㄦ埛鏈粦瀹氬井淇� 鎶�500
-        app.MG.store.makeWeChatPay(resOrderNum).then(payRes => {
-          const payVal = JSON.parse(payRes);
-          wx.requestPayment({
-            "appId": payVal.appId,
-            "timeStamp": payVal.timeStamp,
-            "nonceStr": payVal.nonceStr,
-            "package": payVal.package,
-            "signType": payVal.signType,
-            "paySign": payVal.paySign,
-            success: function (res) {
-              console.log('鏀粯鎴愬姛');
-              if (res.errMsg == 'requestPayment:ok') {
-                that.setData({
-                  isPaySuccess: true
-                })
-              }
-            },
-            fail: function (res) {
-              console.log('鏀粯澶辫触');
-            },
-            // 鏃犺鏀粯鎴愬姛澶辫触閮戒細璋冪敤
-            "complete": function (res) {
-              if (res.errMsg == 'requestPayment:ok') {
-                that.setData({
-                  isPayComplete: true
-                })
-              }
-              if (that.data.isPaySuccess && that.data.isPayComplete) {
-                that.navToBack()
-              }
-            }
-          });
-        })
-      }
-
+      Toast({
+        context: this,
+        selector: '#t-toast',
+        message: '棰嗗彇鎴愬姛',
+        theme: 'success',
+        direction: 'column',
+      });
+      wx.navigateBack()
     })
-    // 璋冨彇寰俊浜岀淮鐮佹敮浠�
-  },
-  // 椤甸潰杩斿洖
-  navToBack() {
-
-    // 杩斿洖
-    wx.navigateBack()
-  },
+  }
 })
\ No newline at end of file

--
Gitblit v1.9.1