From 9d350dbb53edb67b16c2c162ffabdb34747b0633 Mon Sep 17 00:00:00 2001 From: lwh <2679599887@qq.com> Date: Fri, 22 Sep 2023 22:09:03 +0800 Subject: [PATCH] =?UTF-8?q?fixed=20=E4=BF=AE=E6=94=B9=E7=BB=86=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- model/order/orderConfirm.js | 86 ++++++++++--------- .../components/goods-specs-popup/index.wxss | 2 +- pages/goods/details/index.wxml | 5 +- pages/goods/details/index.wxss | 3 +- .../components/selectCoupons/selectCoupons.js | 75 +++++++++------- .../components/address-card/index.wxml | 10 +-- pages/order/order-confirm/index.js | 11 ++- pages/order/order-confirm/index.wxml | 31 +++---- pages/order/order-confirm/pay.js | 42 ++++++--- pages/usercenter/address/list/util.js | 4 +- project.config.json | 2 +- 11 files changed, 158 insertions(+), 113 deletions(-) diff --git a/model/order/orderConfirm.js b/model/order/orderConfirm.js index 7170492..dc4e9e1 100644 --- a/model/order/orderConfirm.js +++ b/model/order/orderConfirm.js @@ -1,4 +1,7 @@ -import { mockIp, mockReqId } from '../../utils/mock'; +import { + mockIp, + mockReqId +} from '../../utils/mock'; export const transformGoodsDataToConfirmData = (goodsDataList) => { const list = []; @@ -6,10 +9,11 @@ export const transformGoodsDataToConfirmData = (goodsDataList) => { goodsDataList.forEach((goodsData) => { list.push({ storeId: goodsData.storeId, + storeName: goodsData?.storeName, spuId: goodsData.spuId, skuId: goodsData.skuId, goodsName: goodsData.title, - image: goodsData.primaryImage, + image: goodsData.thumb, reminderStock: 119, quantity: goodsData.quantity, payPrice: goodsData.price, @@ -37,18 +41,22 @@ export const transformGoodsDataToConfirmData = (goodsDataList) => { /** 生成结算数据 */ export function genSettleDetail(params) { - const { userAddressReq, couponList, goodsRequestList } = params; + const { + userAddressReq, + couponList, + goodsRequestList + } = params; const resp = { data: { settleType: 0, userAddress: null, - totalGoodsCount: 3, - packageCount: 1, + totalGoodsCount: 0, + packageCount: 0, totalAmount: '289997', totalPayAmount: '', totalDiscountAmount: '110000', - totalPromotionAmount: '1100', + totalPromotionAmount: '0', totalCouponAmount: '0', totalSalePrice: '289997', totalGoodsAmount: '289997', @@ -56,27 +64,23 @@ export function genSettleDetail(params) { invoiceRequest: null, skuImages: null, deliveryFeeList: null, - storeGoodsList: [ - { + storeGoodsList: [{ + storeId: '1000', + storeName: '云Mall深圳旗舰店', + remark: null, + goodsCount: 1, + deliveryFee: '0', + deliveryWords: null, + storeTotalAmount: '0', + storeTotalPayAmount: '179997', + storeTotalDiscountAmount: '110000', + storeTotalCouponAmount: '0', + skuDetailVos: [], + couponList: [{ + couponId: 11, storeId: '1000', - storeName: '云Mall深圳旗舰店', - remark: null, - goodsCount: 1, - deliveryFee: '0', - deliveryWords: null, - storeTotalAmount: '0', - storeTotalPayAmount: '179997', - storeTotalDiscountAmount: '110000', - storeTotalCouponAmount: '0', - skuDetailVos: [], - couponList: [ - { - couponId: 11, - storeId: '1000', - }, - ], - }, - ], + }, ], + }, ], inValidGoodsList: null, outOfStockGoodsList: null, limitGoodsList: null, @@ -92,7 +96,7 @@ export function genSettleDetail(params) { }; const list = transformGoodsDataToConfirmData(goodsRequestList); - + console.log(list, '看看list'); // 获取购物车传递的商品数据 resp.data.storeGoodsList[0].skuDetailVos = list; @@ -119,18 +123,18 @@ export function genSettleDetail(params) { // 计算折扣 const totalDiscountPrice = - discountPrice.length > 0 - ? discountPrice.reduce((pre, cur) => { - if (cur.type === 1) { - return pre + cur.value; - } - if (cur.type === 2) { - return pre + (Number(totalPrice) * cur.value) / 10; - } + discountPrice.length > 0 ? + discountPrice.reduce((pre, cur) => { + if (cur.type === 1) { + return pre + cur.value; + } + if (cur.type === 2) { + return pre + (Number(totalPrice) * cur.value) / 10; + } - return pre + cur; - }, 0) - : 0; + return pre + cur; + }, 0) : + 0; resp.data.totalSalePrice = totalPrice; @@ -139,9 +143,13 @@ export function genSettleDetail(params) { resp.data.totalPayAmount = totalPrice - totalDiscountPrice - Number(resp.data.totalPromotionAmount); + list.forEach(item => { + resp.data.totalGoodsCount += item.quantity + }); + if (userAddressReq) { resp.data.settleType = 1; resp.data.userAddress = userAddressReq; } return resp; -} +} \ No newline at end of file diff --git a/pages/goods/details/components/goods-specs-popup/index.wxss b/pages/goods/details/components/goods-specs-popup/index.wxss index 7898c0c..4e86630 100644 --- a/pages/goods/details/components/goods-specs-popup/index.wxss +++ b/pages/goods/details/components/goods-specs-popup/index.wxss @@ -259,7 +259,7 @@ } .popup-sku-actions .sku-operate .sku-operate-addCart { - background-color: #ffece9; + background-color: #f8f8f8; color: #1989fa; border-radius: 48rpx 0 0 48rpx; } diff --git a/pages/goods/details/index.wxml b/pages/goods/details/index.wxml index a6b8904..40fd59a 100644 --- a/pages/goods/details/index.wxml +++ b/pages/goods/details/index.wxml @@ -39,7 +39,8 @@ 已售{{soldNum}} - + {{ details.goodsSellingPoint }} + {{details.title}} diff --git a/pages/goods/details/index.wxss b/pages/goods/details/index.wxss index 7e0a4da..d876903 100644 --- a/pages/goods/details/index.wxss +++ b/pages/goods/details/index.wxss @@ -377,13 +377,14 @@ page { width: 180rpx; overflow: hidden; margin-right: 20rpx; + border-radius: 50%; + border: 1rpx solid rgb(204, 204, 204); } .shop-left-img { height: 100%; width: 100%; object-fit: cover; - border: 1rpx solid rgb(204, 204, 204); } .shop-left-box { diff --git a/pages/order/components/selectCoupons/selectCoupons.js b/pages/order/components/selectCoupons/selectCoupons.js index 235ffba..6f941f9 100644 --- a/pages/order/components/selectCoupons/selectCoupons.js +++ b/pages/order/components/selectCoupons/selectCoupons.js @@ -1,6 +1,10 @@ import dayjs from 'dayjs'; -import { couponsData } from './mock'; - +import { + couponsData +} from './mock'; +import { + fetchCouponList +} from '~/services/coupon/index'; const emptyCouponImg = `https://cdn-we-retail.ym.tencent.com/miniapp/coupon/ordersure-coupon-newempty.png`; Component({ @@ -19,8 +23,12 @@ Component({ value: false, observer(couponsShow) { if (couponsShow) { - const { promotionGoodsList, orderSureCouponList, storeId } = - this.data; + const { + promotionGoodsList, + orderSureCouponList, + storeId + } = + this.data; const products = promotionGoodsList && promotionGoodsList.map((goods) => { @@ -53,6 +61,7 @@ Component({ selectedCoupons, storeId, }).then((res) => { + console.log(res,'res来咯'); this.initData(res); }); } @@ -69,41 +78,32 @@ Component({ }, methods: { initData(data = {}) { - const { couponResultList = [], reduce = 0 } = data; + const { + couponResultList = [], reduce = 0 + } = data; + console.log(data,'data来咯'); const selectedList = []; let selectedNum = 0; const couponsList = couponResultList && couponResultList.map((coupon) => { - const { status, couponVO } = coupon; - const { - couponId, - condition = '', - endTime = 0, - name = '', - startTime = 0, - value, - type, - } = couponVO; - if (status === 1) { + console.log(coupon,'优惠价'); + if (coupon.status === 1) { selectedNum++; selectedList.push({ - couponId, + couponId: coupon.key, promotionId: ruleId, storeId: this.storeId, }); } - const val = type === 2 ? value / 100 : value / 10; return { - key: couponId, - title: name, + key: coupon.key, + title: coupon.title, isSelected: false, - timeLimit: `${dayjs(+startTime).format('YYYY-MM-DD')}-${dayjs( - +endTime, - ).format('YYYY-MM-DD')}`, - value: val, - status: status === -1 ? 'useless' : 'default', - desc: condition, + timeLimit: coupon.timeLimit, + value: coupon.value, + status: coupon.status === 1 ? 'default' : 'useless', + desc: coupon.desc, type, tag: '', }; @@ -116,8 +116,13 @@ Component({ }); }, selectCoupon(e) { - const { key } = e.currentTarget.dataset; - const { couponsList, selectedList } = this.data; + const { + key + } = e.currentTarget.dataset; + const { + couponsList, + selectedList + } = this.data; couponsList.forEach((coupon) => { if (coupon.key === key) { coupon.isSelected = !coupon.isSelected; @@ -144,10 +149,16 @@ Component({ }, coupons(coupon = {}) { return new Promise((resolve, reject) => { + console.log(coupon,'coupon里有什么'); if (coupon?.selectedCoupons) { - resolve({ - couponResultList: couponsData.couponResultList, - reduce: couponsData.reduce, + // 优惠券接口 + fetchCouponList({ + status: 1 + }).then((res) => { + resolve({ + couponResultList: res, + reduce: 1000, + }); }); } return reject({ @@ -157,4 +168,4 @@ Component({ }); }, }, -}); +}); \ No newline at end of file diff --git a/pages/order/order-confirm/components/address-card/index.wxml b/pages/order/order-confirm/components/address-card/index.wxml index 9cf86f4..d3583d0 100644 --- a/pages/order/order-confirm/components/address-card/index.wxml +++ b/pages/order/order-confirm/components/address-card/index.wxml @@ -10,19 +10,19 @@ - + - - {{addressData.addressTag}} + + 默认 {{addressData.provinceName}} {{addressData.cityName}} {{addressData.districtName}} - {{addressData.detailAddress}} + {{addressData.detaiaddresslAddress}} - {{addressData.name}} {{utils.hidePhoneNum(addressData.phone)}} + {{addressData.name}} {{utils.hidePhoneNum(addressData.phoneNumber)}} s.specValue), // 规格列表 string[] + specs: item.skuSpecLst?.map((s) => s.specValue), // 规格列表 string[] price: item.tagPrice || item.settlePrice || '0', // 优先取限时活动价 settlePrice: item.settlePrice, titlePrefixTags: item.tagText ? [{ text: item.tagText }] : [], @@ -242,6 +243,7 @@ Page({ storeName: ele.storeName, remark: '', }); + submitCouponList.push({ storeId: ele.storeId, couponList: ele.couponList || [], @@ -251,6 +253,9 @@ Page({ orderCardList.push(orderCard); }); + + + this.setData({ orderCardList, storeInfoList, submitCouponList }); return data; }, @@ -393,15 +398,18 @@ Page({ if (invoiceData && invoiceData.email) { params.invoiceRequest = invoiceData; } + /** 提交订单方法(接口) */ commitPay(params).then( (res) => { this.payLock = false; const { data } = res; + console.log(res,'后端接口返回调起微信支付的参数'); // 提交出现 失效 不在配送范围 限购的商品 提示弹窗 if (this.isInvalidOrder(data)) { return; } if (res.code === 'Success') { + console.log("正在调起支付"); this.handlePay(data, settleDetailData); } else { Toast({ @@ -484,6 +492,7 @@ Page({ tradeNo: tradeNo, transactionId: transactionId, }; + console.log(payOrderInfo,'支付信息'); if (channel === 'wechat') { wechatPayOrder(payOrderInfo); diff --git a/pages/order/order-confirm/index.wxml b/pages/order/order-confirm/index.wxml index 6d909e6..c6d6832 100644 --- a/pages/order/order-confirm/index.wxml +++ b/pages/order/order-confirm/index.wxml @@ -11,10 +11,10 @@ wx:for-index="storeIndex" wx:key="storeIndex" > - + - + {{goods.title}} {{goods.specs}} - + x{{goods.num}} @@ -38,6 +38,7 @@ 商品总额 + - + 免运费 - + + + 订单备注 @@ -99,12 +100,12 @@ 共{{settleDetailData.totalGoodsCount}}件 小计 - + - + 提交订单 diff --git a/pages/order/order-confirm/pay.js b/pages/order/order-confirm/pay.js index 0c27c3c..1d4cc22 100644 --- a/pages/order/order-confirm/pay.js +++ b/pages/order/order-confirm/pay.js @@ -1,7 +1,9 @@ import Dialog from 'tdesign-miniprogram/dialog/index'; import Toast from 'tdesign-miniprogram/toast/index'; -import { dispatchCommitPay } from '../../../services/order/orderConfirm'; +import { + dispatchCommitPay +} from '../../../services/order/orderConfirm'; // 真实的提交支付 export const commitPay = (params) => { @@ -26,7 +28,12 @@ export const commitPay = (params) => { }; export const paySuccess = (payOrderInfo) => { - const { payAmt, tradeNo, groupId, promotionId } = payOrderInfo; + const { + payAmt, + tradeNo, + groupId, + promotionId + } = payOrderInfo; // 支付成功 Toast({ context: this, @@ -50,7 +57,9 @@ export const paySuccess = (payOrderInfo) => { .map((k) => `${k}=${params[k]}`) .join('&'); // 跳转支付结果页面 - wx.redirectTo({ url: `/pages/order/pay-result/index?${paramsStr}` }); + wx.redirectTo({ + url: `/pages/order/pay-result/index?${paramsStr}` + }); }; export const payFail = (payOrderInfo, resultMsg) => { @@ -63,7 +72,9 @@ export const payFail = (payOrderInfo, resultMsg) => { confirmBtn: '放弃', cancelBtn: '继续付款', }).then(() => { - wx.redirectTo({ url: '/pages/order/order-list/index' }); + wx.redirectTo({ + url: '/pages/order/order-list/index' + }); }); } else { //订单列表页,订单详情页,取消付款,toast提示 @@ -83,21 +94,24 @@ export const payFail = (payOrderInfo, resultMsg) => { duration: 2000, icon: 'close-circle', }); - setTimeout(() => { - wx.redirectTo({ url: '/pages/order/order-list/index' }); - }, 2000); + console.log(resultMsg,'错误信息'); + // setTimeout(() => { + // wx.redirectTo({ + // url: '/pages/order/order-list/index' + // }); + // }, 2000); } }; // 微信支付方式 export const wechatPayOrder = (payOrderInfo) => { - // const payInfo = JSON.parse(payOrderInfo.payInfo); - // const { timeStamp, nonceStr, signType, paySign } = payInfo; + const payInfo = JSON.parse(payOrderInfo.payInfo); + const { timeStamp, nonceStr, signType, paySign } = payInfo; return new Promise((resolve) => { // demo 中直接走支付成功 - paySuccess(payOrderInfo); - resolve(); - /* wx.requestPayment({ + // paySuccess(payOrderInfo); + // resolve(); + wx.requestPayment({ timeStamp, nonceStr, package: payInfo.package, @@ -110,6 +124,6 @@ export const wechatPayOrder = (payOrderInfo) => { fail: function (err) { payFail(payOrderInfo, err.errMsg); }, - }); */ + }); }); -}; +}; \ No newline at end of file diff --git a/pages/usercenter/address/list/util.js b/pages/usercenter/address/list/util.js index e6dcc21..32d6a49 100644 --- a/pages/usercenter/address/list/util.js +++ b/pages/usercenter/address/list/util.js @@ -16,10 +16,10 @@ export const getAddressPromise = () => { /** 用户选择了一个地址 */ export const resolveAddress = (allAddress,address) => { - allAddress.forEach(({ resolver }) => resolver(address)); + addressPromise.forEach(({ resolver }) => resolver(address)); }; /** 用户没有选择任何地址只是返回上一页了 */ export const rejectAddress = (allAddress) => { - allAddress.forEach(({ rejecter }) => rejecter(new Error('cancel'))); + addressPromise.forEach(({ rejecter }) => rejecter(new Error('cancel'))); }; diff --git a/project.config.json b/project.config.json index 8ef4e1c..f191a40 100644 --- a/project.config.json +++ b/project.config.json @@ -1,5 +1,5 @@ { - "description": "项目配置文件,详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", + "description": "Project configuration file, more information: https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", "packOptions": { "ignore": [], "include": []