123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548 |
- // pages/submit-order/submit-order.js
- var http = require("../../utils/http.js");
- Page({
- /**
- * 页面的初始数据
- */
- data: {
- popupShow: false,
- // 订单入口 0购物车 1立即购买
- orderEntry: "0",
- userAddr: null,
- orderItems: [],
- shopCartOrders: [], //所有店铺的数据
- couponSts: 1,
- platformCoupons: {}, // 平台优惠券数据
- showCoupons: {
- canUseCoupons: [],
- unCanUseCoupons: []
- },
- actualTotal: 0,
- total: 0,
- totalCount: 0,
- transfee: 0,
- reduceAmount: 0, //减免金额
- couponIds: [],
- orderReduce: 0,
- userChangeCoupon: 0, // 用户有没有对优惠券进行改变
- orderReduce: 0,
- choose: true,
- totalScoreAmount: 0, //积分抵扣金额
- maxUsableScore: 0, //整个订单可以使用的积分数
- isScorePay: 0, //用户是否选择积分抵现(0不使用 1使用 默认不使用)
- isChecked: false, //是否选择会员积分抵现
- totalLevelAmount: 0, //等级抵扣金额
- freeTransfee: 0, //用户等级免运费金额
- userUseScore: '', // 用于抵扣的金额数量
- scorePopPlaceholder: '', // 积分弹窗输入框占位符
- isPurePoints: false,
- address_id: 0,
- shop_id: 0,
- deliveryAmount_num: 0,
- shop_weight: 0,
- is_distance:false
- },
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad: function (options) {
- this.setData({
- orderEntry: options.orderEntry,
- });
- // 请求用户可用积分
- this.getUserScore()
- },
- /**
- * 获取用户可用积分
- */
- getUserScore() {
- var params = {
- url: '/p/user/userInfo',
- method: 'GET',
- callBack: res => {
- this.setData({
- accountScore: res.score
- })
- }
- }
- http.request(params)
- },
- // 会员积分抵现选择
- useMemberPoints: function () {
- this.data.isChecked = !this.data.isChecked
- if (this.data.maxUsableScore > 0) { // maxUsableScore 整个订单可以使用的积分数
- this.setData({
- isScorePay: this.data.isChecked ? 1 : 0,
- userUseScore: this.data.isChecked ? this.data.userUseScore : ''
- })
- this.loadOrderData()
- }
- },
- /**
- * 积分抵扣输入框
- */
- handleScoreInput(e) {
- var maxScore = 0
- if (this.data.maxUsableScore > this.data.accountScore) {
- maxScore = this.data.accountScore
- } else {
- maxScore = this.data.maxUsableScore
- }
- this.setData({
- userUseScore: e.detail.value > 0 ? e.detail.value > maxScore ? maxScore : e.detail.value : ''
- })
- },
- /**
- * 修改积分确定弹窗
- */
- confirmScore() {
- this.loadOrderData()
- this.closePopup()
- },
- //加载订单数据
- loadOrderData: function () {
- var addrId = 0;
- if (this.data.userAddr != null) {
- addrId = this.data.userAddr.addrId;
- }
- wx.showLoading({
- mask: true
- });
- // 重置地址 避免超出配送 使用之前地址
- this.setData({userAddr:null})
- var params = {
- url: "/p/order/confirm",
- method: "POST",
- data: {
- addrId: addrId,
- orderItem: this.data.orderEntry === "1" ? JSON.parse(wx.getStorageSync("orderItem")) : undefined,
- basketIds: this.data.orderEntry === "0" ? JSON.parse(wx.getStorageSync("basketIds")) : undefined,
- couponIds: this.data.couponIds,
- userChangeCoupon: this.data.userChangeCoupon,
- isScorePay: this.data.isScorePay,
- userUseScore: this.data.userUseScore ? this.data.userUseScore : 0,
- },
- callBack: res => {
- this.setData({
- address_id: res.userAddr.addrId,
- shop_weight: res.weight
- })
- wx.hideLoading();
- var shopCartOrders = res.shopCartOrders; //购物车店铺商品信息列表
- var couponIds = []
- let img=''
- shopCartOrders.forEach(shopCart => {
- shopCart.shopCartItemDiscounts.forEach(e=>{
- e.shopCartItems.forEach(item=>{
- img=item.pic.split(',')
- item.pic=img[0]
- })
- })
- this.setData({
- shop_id: shopCart.shopId
- })
- shopCart.remarks = '';
- shopCart.shopCoupons = this.splitCouponAndPushCouponIds(shopCart.coupons, couponIds)
- })
- // 平台优惠券
- var platformCoupons = this.splitCouponAndPushCouponIds(res.coupons, couponIds) //平台优惠券
- // 平台优惠券end
- this.setData({
- platformCoupons: platformCoupons, //整个订单可以使用的优惠券列表
- shopCartOrders: shopCartOrders, //所有的店铺的购物车信息
- actualTotal: res.actualTotal, //实际总值
- total: res.total, //商品总值
- totalCount: res.totalCount, //商品总数
- userAddr: res.userAddr, //地址Dto
- transfee: res.totalTransfee, //总运费
- orderReduce: res.orderReduce, //订单优惠金额(所有店铺优惠金额和使用积分抵现相加)
- totalScoreAmount: res.totalScoreAmount, //积分抵扣金额
- totalUsableScore: res.totalUsableScore, //用于抵扣的积分数量
- isScorePay: res.isScorePay, //用户是否选择积分抵现(0不使用 1使用 默认不使用)
- totalLevelAmount: res.totalLevelAmount, //等级抵扣金额
- freeTransfee: res.freeTransfee, //用户等级免运费金额
- couponIds: couponIds,
- maxUsableScore: res.maxUsableScore, //整个订单可以使用的积分数
- scorePopPlaceholder: `剩余积分${this.data.accountScore},此订单最多可用${res.maxUsableScore}`,
- scorePlaceholder: `使用${res.totalUsableScore}积分抵扣${res.totalScoreAmount}元`,
- shopUseScore: res.shopUseScore, // 店铺积分抵扣比例;
- isPurePoints: res.actualTotal == 0 ? true : false,
- });
- this.getDeliveryAmount()
- },
- errCallBack: res => {
- setTimeout(()=>{
- wx.showToast({
- title:res.data,
- icon: "none"
- })
- },1)
- wx.hideLoading();
- }
- };
- http.request(params);
- },
- /**
- * 分割优惠券成
- * 1. canUseCoupons 可使用优惠券列表
- * 2. unCanUseCoupons 不可使用优惠券列表
- * 3. couponAmount 选中的优惠券可优惠金额
- * 4. 将选中的优惠券ids保存起来
- * @param {*} coupons 优惠券列表
- * @param {*} couponIds 选中的优惠券id
- */
- splitCouponAndPushCouponIds(coupons, couponIds) {
- if (!coupons || !coupons.length) {
- return
- }
- let canUseCoupons = []
- let unCanUseCoupons = []
- let couponAmount = 0;
- coupons.forEach(coupon => {
- if (coupon.canUse) {
- canUseCoupons.push(coupon)
- } else {
- unCanUseCoupons.push(coupon)
- }
- if (coupon.choose) {
- couponIds.push(coupon.couponId)
- couponAmount = coupon.reduceAmount;
- }
- })
- return {
- canUseLength: canUseCoupons.length,
- couponAmount: couponAmount,
- canUseCoupons: canUseCoupons,
- unCanUseCoupons: unCanUseCoupons,
- }
- },
- /**
- * 提交订单校验
- */
- toPay: function () {
- if (this.data.actualTotal < this.data.deliveryAmount_num) {
- wx.showToast({
- title: '商品总额需大于起送价~',
- icon: "none"
- })
- return;
- }
- if (!this.data.userAddr) {
- wx.showToast({
- title: '请选择地址',
- icon: "none"
- })
- return;
- }
- if (this.data.shop_weight > 20000) {
- wx.showToast({
- title: '已超过单次配送限制20kg,请减少商品数',
- icon: "none"
- })
- return
- }
- if(this.data.is_distance==false){
- wx.showToast({
- title: '超出配送范围',
- icon: "none"
- })
- return
- }
- this.submitOrder();
- },
- /**
- * 获取起送价
- */
- getDeliveryAmount: function () {
- var params = {
- url: "/p/address/deliveryAmount/" + this.data.shop_id + '/' + this.data.address_id,
- method: "GET",
- callBack: res => {
- this.setData({
- deliveryAmount_num: res.deliveryAmount,
- is_distance:true
- })
- },
- errCallBack:(err)=>{
- this.setData({
- is_distance:false
- })
- }
- }
- http.request(params);
- },
- /**
- * 获取配送距离
- */
- // getaddress_transports: function () {
- // let _this = this
- // var params = {
- // url: "/p/address/transport2",
- // method: "GET",
- // data: {
- // shopId: this.data.shop_id,
- // addrId:this.data.address_id
- // },
- // callBack: function (res) {
- // wx.setStorageSync('DISTANCE', res.distance)
- // _this.setData({
- // })
- // }
- // };
- // http.request(params);
- // },
- // 提交订单
- submitOrder: function () {
- wx.showLoading({
- mask: true
- });
- var shopCartOrders = this.data.shopCartOrders;
- var orderShopParam = [];
- shopCartOrders.forEach(shopCart => {
- orderShopParam.push({
- remarks: shopCart.remarks,
- shopId: shopCart.shopId
- });
- })
- var params = {
- url: "/p/order/submit",
- method: "POST",
- data: {
- orderShopParam: orderShopParam,
- // coupons: this.data.platformCoupons,
- coupons: this.data.coupons,
- isScorePay: this.data.isScorePay,
- },
- callBack: res => {
- wx.hideLoading();
- this.calWeixinPay(res.orderNumbers);
- },
- errCallBack: res => {
- wx.showModal({
- showCancel: false,
- title: '提示',
- content: res.data
- })
- }
- };
- http.request(params);
- },
- /**
- * 唤起微信支付
- */
- calWeixinPay: function (orderNumbers) {
- wx.showLoading({
- mask: true
- });
- var params = {
- url: "/p/order/pay",
- method: "POST",
- data: {
- payType: 1, //支付方式 (1:微信小程序支付 2:支付宝 3微信扫码支付 4 微信h5支付)
- orderNumbers: orderNumbers
- },
- callBack: (res) => {
- wx.hideLoading();
- if (this.data.isPurePoints) {
- wx.redirectTo({
- url: `/pages/pay-result/pay-result?sts=1&orderNumbers=${orderNumbers}&orderType=${this.data.orderType}`,
- })
- return
- }
- wx.requestPayment({
- timeStamp: res.timeStamp,
- nonceStr: res.nonceStr,
- package: res.packageValue,
- signType: res.signType,
- paySign: res.paySign,
- success: e => {
- wx.redirectTo({
- url: `/pages/pay-result/pay-result?sts=1&orderNumbers=${orderNumbers}&orderType=${this.data.orderType}`,
- })
- },
- fail: err => {
- wx.redirectTo({
- url: `/pages/pay-result/pay-result?sts=0&orderNumbers=${orderNumbers}&orderType=${this.data.orderType}`,
- })
- }
- })
- }
- };
- http.request(params);
- },
- /**
- * 生命周期函数--监听页面初次渲染完成
- */
- onReady: function () {
- },
- /**
- * 生命周期函数--监听页面显示
- */
- onShow: function () {
- var pages = getCurrentPages();
- var currPage = pages[pages.length - 1];
- if (currPage.data.selAddress == "yes") {
- this.setData({ //将携带的参数赋值
- userAddr: currPage.data.item
- });
- }
- //获取订单数据
- this.loadOrderData();
- setTimeout(() => {
- this.getDeliveryAmount()
- }, 500)
- },
- /**
- * 生命周期函数--监听页面隐藏
- */
- onHide: function () {
- },
- /**
- * 生命周期函数--监听页面卸载
- */
- onUnload: function () {
- },
- /**
- * 页面相关事件处理函数--监听用户下拉动作
- */
- onPullDownRefresh: function () {
- },
- /**
- * 页面上拉触底事件的处理函数
- */
- onReachBottom: function () {
- },
- /**
- * 用户点击右上角分享
- */
- onShareAppMessage: function () {
- },
- // 店铺切换可用/不可用优惠券列表
- changeCouponSts: function (e) {
- this.setData({
- couponSts: e.currentTarget.dataset.sts
- });
- },
- // 店铺优惠券弹框
- showCouponPopup: function (e) {
- var index = e.currentTarget.dataset.index;
- var shopCartOrders = this.data.shopCartOrders;
- this.setData({
- showCoupons: index + '' === '-1' ? this.data.platformCoupons : shopCartOrders[index].shopCoupons,
- popupShow: true,
- });
- },
- closePopup: function () {
- this.setData({
- popupShow: false,
- // platPopupShow: false
- showScorePop: false
- });
- },
- /**
- * 去地址页面
- */
- toAddrListPage: function () {
- wx.navigateTo({
- url: '/pages/delivery-address/delivery-address?order=0',
- })
- },
- /**
- * 确定选择好的优惠券
- */
- choosedCoupon: function () {
- var couponIds = this.data.couponIds
- if (!this.data.showCoupons) {
- this.setData({
- popupShow: false
- })
- return
- }
- // 店铺优惠券单选操作
- var canUseCoupons = this.data.showCoupons.canUseCoupons;
- var checkedCouponId = ''
- for (var canUseCouponIndex in canUseCoupons) {
- var coupon = canUseCoupons[canUseCouponIndex];
- if (!coupon.choose && couponIds.indexOf(coupon.couponId) !== -1) {
- couponIds.splice(couponIds.indexOf(coupon.couponId), 1)
- }
- if (coupon.choose) {
- checkedCouponId = coupon.couponId
- }
- }
- couponIds.push(checkedCouponId)
- this.setData({
- couponIds: couponIds,
- popupShow: false
- });
- this.loadOrderData();
- },
- /**-
- * 优惠券子组件发过来
- */
- checkCoupon: function (e) {
- var showCoupons = this.data.showCoupons;
- // 店铺优惠券单选操作
- var canUseCoupons = showCoupons.canUseCoupons;
- for (var canUseCouponIndex in canUseCoupons) {
- if (e.detail.couponId === canUseCoupons[canUseCouponIndex].couponId && canUseCouponIndex == e.detail.index) {
- canUseCoupons[canUseCouponIndex].choose = !canUseCoupons[canUseCouponIndex].choose
- } else {
- canUseCoupons[canUseCouponIndex].choose = false
- }
- }
- this.setData({
- showCoupons: showCoupons,
- userChangeCoupon: 1
- });
- },
- /**
- * 输入备注
- */
- onRemarkIpt: function (e) {
- var index = e.currentTarget.dataset.index;
- var shopCartOrders = this.data.shopCartOrders;
- shopCartOrders[index].remarks = e.detail.value;
- this.setData({
- shopCartOrders: shopCartOrders
- });
- },
- /**
- * 积分输入弹窗显示
- */
- handleScorePop() {
- this.setData({
- showScorePop: true
- })
- },
- })
|