From c679b60cb7cc632576ddfa870a1ed71c346677d5 Mon Sep 17 00:00:00 2001
From: GaoHao <1210693421@qq.com>
Date: Mon, 18 Nov 2024 14:18:10 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E6=83=A0=E5=88=B8=E7=9B=B8=E5=85=B3?=
=?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
common/js/api.js | 3 +
framework/0-conf.js | 2 +
pages/member/components/registermember.vue | 71 ++++-
pages/member/index.vue | 25 +-
pages/member/memberdetails.vue | 6 +-
pages/member/setPassword.vue | 2 +-
pages/order_food/components/shoppingCart.vue | 8 -
.../components/shoppingCartBilling.vue | 6 -
pages/order_food/order_food.vue | 1 -
pages/user/coupon.vue | 107 ++++++-
pages/user/my_info.vue | 65 ++++-
pagesInviteFriends/index/index.vue | 18 +-
pagesOrder/components/orderInfoAfter.vue | 269 +++++++++++++++++-
pagesOrder/components/orderInfoBefore.vue | 58 +++-
pagesOrder/confirm_order/index.vue | 214 +++++++++++---
pagesOrder/order_detail/index.vue | 6 +
pagesPoints/index/index.vue | 8 +-
17 files changed, 760 insertions(+), 109 deletions(-)
diff --git a/common/js/api.js b/common/js/api.js
index 0be8890..5656a91 100644
--- a/common/js/api.js
+++ b/common/js/api.js
@@ -85,6 +85,9 @@ export default {
creatOrder(data) { //创建订单
return uni.api.post("/order/creatOrder", data);
},
+ useCoupon(data) { //订单选择优惠券
+ return uni.api.post("/order/useCoupon", data);
+ },
// 团购订单列表
diff --git a/framework/0-conf.js b/framework/0-conf.js
index 3b14b89..2cc2c99 100644
--- a/framework/0-conf.js
+++ b/framework/0-conf.js
@@ -8,6 +8,8 @@ const proxyApi = "/api"
// const proxyApiwws = 'ws://192.168.1.15:9888/netty' // 测试
const proxyApi = 'https://wxcashiertest.sxczgkj.cn/cashierService' // 测试
const proxyApiwws = 'wss://wxcashiertest.sxczgkj.cn/netty' // 测试
+// const proxyApi = 'https://pre-cashier.sxczgkj.cn/cashierService' // 预发布
+// const proxyApiwws = 'wss://pre-cashier.sxczgkj.cn/netty' // 预发布
// const proxyApi = 'https://cashier.sxczgkj.cn/cashierService' // 线上
// const proxyApiwws = 'wss://cashier.sxczgkj.cn/netty' // 线上
// #endif
diff --git a/pages/member/components/registermember.vue b/pages/member/components/registermember.vue
index c81d248..d06f79a 100644
--- a/pages/member/components/registermember.vue
+++ b/pages/member/components/registermember.vue
@@ -8,13 +8,16 @@
-
@@ -41,7 +44,7 @@
手机号
-
+
@@ -49,7 +52,7 @@
- {{'获取微信手机号'}}
+ {{'获取手机号'}}
@@ -154,11 +157,10 @@
* 上传头像
* @param {Object} e
*/
- uploadImg(e) {
- const {
- avatarUrl
- } = e.detail
- // this.userHeadImg = avatarUrl
+ onChooseAvatar(e) {
+ let _this = this;
+ //#ifdef MP-WEIXIN
+ let avatarUrl = e.detail.avatarUrl
uni.uploadFile({
url: uni.conf.baseUrl + '/common/upload',
// url: uni.conf.baseUrl + '/common/upload',
@@ -167,7 +169,9 @@
environment: 'app',
type: 'android',
version: '1.7.3',
+ 'content-type': 'multipart/form-data'
},
+ fileType:'image',
name: "file",
formData: {
file: avatarUrl,
@@ -180,6 +184,49 @@
console.log(res)
}
});
+ // #endif
+ //#ifdef MP-ALIPAY
+ uni.chooseImage({
+ count: 1, // 默认9,设置图片的数量
+ sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
+ sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
+ success: function (res) {
+ // 成功选择图片后
+ let avatarUrl = res.tempFilePaths[0]; // 获取文件路径
+
+ my.uploadFile({
+ url: uni.conf.baseUrl + '/common/upload',
+ // url: uni.conf.baseUrl + '/common/upload',
+ filePath: avatarUrl,
+ header: {
+ environment: 'app',
+ type: 'android',
+ version: '1.7.3',
+ 'content-type': 'multipart/form-data'
+ },
+ fileType:'image',
+ name: "file",
+ formData: {
+ file: avatarUrl,
+ },
+ success: (uploadFileRes) => {
+ let { data } = JSON.parse(uploadFileRes.data)
+ _this.userHeadImg = data
+ },
+ fail: (res) => {
+ console.log(res)
+ }
+ });
+ },
+ fail: (res) => {
+ console.log(res)
+ }
+ });
+
+ // #endif
+
+
+
},
/**
diff --git a/pages/member/index.vue b/pages/member/index.vue
index a7ca791..6e82399 100644
--- a/pages/member/index.vue
+++ b/pages/member/index.vue
@@ -372,8 +372,8 @@
title: '加载中',
mask: true
})
- // #ifdef MP-WEIXIN
uni.requestPayment({
+ // #ifdef MP-WEIXIN
provider: 'wxpay', //支付类型-固定值
partnerid: res.data.appId, // 微信支付商户号
timeStamp: res.data.timeStamp, // 时间戳(单位:秒)
@@ -381,12 +381,18 @@
package: res.data.package, // 固定值
signType: res.data.signType, //固定值
paySign: res.data.paySign, //签名
+ // #endif
+ // #ifdef MP-ALIPAY
+ provider: 'alipay', //支付类型-固定值
+ orderInfo: res.data.tradeNo, // 微信支付商户号
+ // #endif
success: (res) => {
uni.showToast({
title: "支付成功"
})
uni.hideLoading()
let pages = getCurrentPages()
+ // #ifdef MP-WEIXIN
uni.requestSubscribeMessage({
tmplIds:["AV-KybUHaK3KtFVLqpy6PHccHBS7XeX__mOM4RbufnQ"],
complete() {
@@ -406,6 +412,22 @@
},
})
+ // #endif
+ // #ifdef MP-ALIPAY
+ if ( _this.type && _this.type == "topUpActivity") {
+ uni.pro.navigateBack()
+ } else {
+ if ( pages.length > 1) {
+ _this.shopInfo()
+ } else {
+ setTimeout(res => {
+ uni.switchTab({
+ url: '/pages/index/index'
+ })
+ }, 500)
+ }
+ }
+ // #endif
@@ -415,7 +437,6 @@
}
});
uni.hideLoading()
- // #endif
}
},
diff --git a/pages/member/memberdetails.vue b/pages/member/memberdetails.vue
index 9a52242..2ba6cb0 100644
--- a/pages/member/memberdetails.vue
+++ b/pages/member/memberdetails.vue
@@ -28,10 +28,10 @@
{{shopUserInfo.amount || '0.00'}}储值
- 0积分
+ {{shopUserInfo.accountPoints || '0'}}积分
- 0优惠券
+ {{shopUserInfo.couponNum || '0'}}优惠券
0权益卡
@@ -49,7 +49,7 @@
感谢你 2 天陪伴
您今天的幸运词:林波微步
-
+
diff --git a/pages/member/setPassword.vue b/pages/member/setPassword.vue
index 452e0c6..319a489 100644
--- a/pages/member/setPassword.vue
+++ b/pages/member/setPassword.vue
@@ -5,7 +5,7 @@
当前账号
- 获取微信手机号
+ 获取手机号
diff --git a/pages/order_food/components/shoppingCart.vue b/pages/order_food/components/shoppingCart.vue
index 082e2c9..6ba4f7f 100644
--- a/pages/order_food/components/shoppingCart.vue
+++ b/pages/order_food/components/shoppingCart.vue
@@ -96,22 +96,16 @@
tableCode:{
immediate: true,
handler (newVal) {
- console.log(newVal)
- console.log("tableCode1==",this.tableCode)
}
},
shopId:{
immediate: true,
handler (newVal) {
- console.log(newVal)
- console.log("shopId1==",this.shopId)
}
},
},
mounted() {
- console.log("tableCode3==",this.tableCode)
- console.log("shopId3==",this.shopId)
},
methods: {
@@ -128,8 +122,6 @@
* @param {Object} a
*/
async cartListadd(item, index, c) {
- console.log(this.shopId)
- console.log(this.tableCode)
try {
if ( c == "+" && item.isVip == 1){
return;
diff --git a/pages/order_food/components/shoppingCartBilling.vue b/pages/order_food/components/shoppingCartBilling.vue
index a4e10bb..fe97dba 100644
--- a/pages/order_food/components/shoppingCartBilling.vue
+++ b/pages/order_food/components/shoppingCartBilling.vue
@@ -55,17 +55,11 @@
},
mounted() {
- console.log("tableCode==",this.tableCode)
- console.log("shopId==",this.shopId)
},
watch:{
tableCode(newVal, oldValue) {
- console.log(newVal)
- console.log("tableCode2==",this.tableCode)
},
shopId(newVal, oldValue) {
- console.log(newVal)
- console.log("shopId2==",this.tableCode)
},
},
methods: {
diff --git a/pages/order_food/order_food.vue b/pages/order_food/order_food.vue
index 268f96c..fd80e6f 100644
--- a/pages/order_food/order_food.vue
+++ b/pages/order_food/order_food.vue
@@ -991,7 +991,6 @@
})
this.salePrice = res.data.salePrice // 价格
let data = null;
- console.log(a)
if (a == 1) { //1添加购物车 2是websocket返回这个商品的价格(应为不同的多规格商品返回不同的价格)
let params = {
"skuId": res.data.id,
diff --git a/pages/user/coupon.vue b/pages/user/coupon.vue
index 6ca57b3..25a733e 100644
--- a/pages/user/coupon.vue
+++ b/pages/user/coupon.vue
@@ -35,7 +35,7 @@
'containertopboxitemleft_tows': status != 1,
'containertopboxitemleft_nameVip': item.type == 2,
}">
- {{ item.type == 2 ? item.detail : '优惠券(元)'}}
+ {{ item.type == 2 ? item.name : '优惠券(元)'}}
@@ -84,19 +84,27 @@
{
name: '已使用',
type: '2'
+ },
+ {
+ name: '已过期',
+ type: '-1'
}
],
tabIndex: 1,
list: [],
status: 1,
type: "",
+ payAmount: 0,
+ shoppingCart: [],
+ productList: [],
};
},
onLoad(options) {
- if (options.type) {
- this.type = options.type;
- }
+ if (options.type) { this.type = options.type }
+ if (options.payAmount) { this.payAmount = options.payAmount }
+ if (options.shoppingCart) { this.shoppingCart = JSON.parse(decodeURIComponent(options.shoppingCart)) }
+ if (options.productList) { this.productList = JSON.parse(decodeURIComponent(options.productList)) }
this.getCouponList()
},
@@ -117,13 +125,26 @@
*/
async getCouponList() {
try {
- let res = await this.api.conponList({
+ let params = {
userId: uni.cache.get('userInfo').id,
shopId: uni.cache.get('shopId'),
status: this.status
- })
+ }
+ if ( this.type == 'confirm_order_coupon' || this.type == 'confirm_order_product' ) {
+ params.orderId = -1;
+ }
+ let res = await this.api.conponList(params)
if (res.code == 0) {
- this.list = res.data;
+ console.log(res)
+ let list = [];
+ if ( this.type == 'confirm_order_coupon') {
+ list = res.data.filter(v => v.type == 1);
+ }else if ( this.type == 'confirm_order_product') {
+ list = res.data.filter(v => v.type == 2);
+ } else {
+ list = res.data;
+ }
+ this.list = list;
}
} catch (e) {
//TODO handle the exception
@@ -135,9 +156,73 @@
*/
navigatorGo ( item ) {
uni.cache.set('shopId',item.shopId)
- if ( this.type == 'confirm_order') {
- uni.$emit('couponItem', JSON.stringify(item))
- uni.navigateBack();
+ if ( this.type == 'confirm_order_coupon' || this.type == 'confirm_order_product') {
+ if ( item.type == 1 ) {
+ if( this.payAmount < item.fullAmount) {
+ uni.showToast({
+ title: "当前订单金额不足使用金额",
+ icon: "none",
+ })
+ return;
+ }
+ uni.$emit('couponItem', JSON.stringify(item))
+ uni.navigateBack();
+ } else {
+ let productNum = 0;//商品购物车数量
+ let productTicketNum = 0;//商品券使用数量
+ let product = this.shoppingCart.filter(v => v.productId == item.proId);
+ let productTicket = this.productList.filter(v => v.productId == item.proId);
+ if ( product.length <= 0 ) {
+ uni.showToast({
+ title: "购物车没有"+item.name,
+ icon: "none",
+ })
+ return;
+ }
+ if (this.productList.filter(v => v.userCouponId == item.id).length > 0) {
+ uni.showToast({
+ title: `当前优惠券已选择`,
+ icon: "none",
+ })
+ return;
+ }
+ // 计算当前商品购物车数量
+ product.forEach(item => {
+ productNum += item.number;
+ })
+ // 计算当前商品券使用数量
+ productTicket.forEach(item => {
+ productTicketNum += item.num;
+ })
+ if ( (productNum - productTicketNum) == 0 ) {
+ uni.showToast({
+ title: `当前商品已经全部抵扣`,
+ icon: "none",
+ })
+ return;
+ }
+
+
+
+ // let productNum = 0;
+ // product.map(item => {
+ // productNum += item.number
+ // })
+ // if ( productNum < item.num) {
+ // uni.showToast({
+ // title: `购物车${item.name}数量不足`,
+ // icon: "none",
+ // })
+ // return;
+ // }
+ // if (product[0].number item.num) {
+
+ // }
+ uni.$emit('couponItem', JSON.stringify(item))
+ uni.navigateBack();
+ }
+
+
} else {
uni.pro.navigateTo('/pages/order_food/order_food', {
shopId: item.shopId
@@ -163,7 +248,7 @@
margin-top: 32rpx;
.towcontentlistxitembox {
- width: 50%;
+ width: 33.33%;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 28rpx;
diff --git a/pages/user/my_info.vue b/pages/user/my_info.vue
index 63ee92f..112123e 100644
--- a/pages/user/my_info.vue
+++ b/pages/user/my_info.vue
@@ -8,12 +8,15 @@
-
-
-
-
+
+
+
+
+
+
+
@@ -257,8 +260,9 @@
* @param {Object} e
*/
onChooseAvatar(e) {
- const { avatarUrl } = e.detail
- // this.userHeadImg = avatarUrl
+ let _this = this;
+ //#ifdef MP-WEIXIN
+ let avatarUrl = e.detail.avatarUrl
uni.uploadFile({
url: uni.conf.baseUrl + '/common/upload',
// url: uni.conf.baseUrl + '/common/upload',
@@ -267,22 +271,63 @@
environment: 'app',
type: 'android',
version: '1.7.3',
+ 'content-type': 'multipart/form-data'
},
+ fileType:'image',
name: "file",
formData: {
file: avatarUrl,
},
success: (uploadFileRes) => {
- console.log(uploadFileRes)
- let {
- data
- } = JSON.parse(uploadFileRes.data)
+ let { data } = JSON.parse(uploadFileRes.data)
this.userHeadImg = data
},
fail: (res) => {
console.log(res)
}
});
+ // #endif
+ //#ifdef MP-ALIPAY
+ uni.chooseImage({
+ count: 1, // 默认9,设置图片的数量
+ sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
+ sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
+ success: function (res) {
+ // 成功选择图片后
+ let avatarUrl = res.tempFilePaths[0]; // 获取文件路径
+
+ my.uploadFile({
+ url: uni.conf.baseUrl + '/common/upload',
+ // url: uni.conf.baseUrl + '/common/upload',
+ filePath: avatarUrl,
+ header: {
+ environment: 'app',
+ type: 'android',
+ version: '1.7.3',
+ 'content-type': 'multipart/form-data'
+ },
+ fileType:'image',
+ name: "file",
+ formData: {
+ file: avatarUrl,
+ },
+ success: (uploadFileRes) => {
+ let { data } = JSON.parse(uploadFileRes.data)
+ _this.userHeadImg = data
+ },
+ fail: (res) => {
+ console.log(res)
+ }
+ });
+ },
+ fail: (res) => {
+ console.log(res)
+ }
+ });
+
+ // #endif
+
+
},
/**
diff --git a/pagesInviteFriends/index/index.vue b/pagesInviteFriends/index/index.vue
index 9eb382c..75056eb 100644
--- a/pagesInviteFriends/index/index.vue
+++ b/pagesInviteFriends/index/index.vue
@@ -17,7 +17,7 @@
{{item.useDetail}}
- 每邀请{{InviteFriendsData.invitedNum}}个用户可获得
+ 每邀请{{InviteFriendsData.invitedNum||''}}个用户可获得
¥{{item.discountAmount}}
@@ -38,7 +38,7 @@
>{{item.label}}{{item.num||0}}人
-
+
{{item.invitedName}}
{{
@@ -46,7 +46,7 @@
}}
{{item.createTime}}
-
+
@@ -68,7 +68,8 @@
领券
- 领券
+ 已领完
+ 非新用户不可领取
@@ -142,6 +143,14 @@
this.share.path = `/pagesInviteFriends/index/index?shopId=${this.shopId}&is_type=he&shareId=${this.InviteFriendsData.id}&invitedId=${uni.cache.get('userInfo').id}`
this.share.imageUrl = res.data.shareImg
this.shareRecord();
+ } else {
+ uni.showToast({
+ title: res.msg,
+ icon: "none",
+ })
+ setTimeout(()=>{
+ uni.navigateBack();
+ },2000)
}
},
@@ -190,6 +199,7 @@
shopId : this.shopId,
}
let res = await this.api.shareReceive(params)
+ console.log(res)
if ( res.code == 0 ) {
uni.showToast({
title: "领取成功",
diff --git a/pagesOrder/components/orderInfoAfter.vue b/pagesOrder/components/orderInfoAfter.vue
index bae1e76..f9ca335 100644
--- a/pagesOrder/components/orderInfoAfter.vue
+++ b/pagesOrder/components/orderInfoAfter.vue
@@ -33,6 +33,7 @@
+
未付款
小计¥
@@ -52,6 +53,40 @@
{{listinfo.orderInfo.seatAmount}}
+
+
+
+
+ {{ item.name }}
+
+
+ {{item.value}}
+
+
+
+
+ {{items.name}}
+ X{{items.num}}
+ -¥{{items.discountAmount || 0}}
+
+
+
+
+
+ 使用 {{ calcUsablePointsData.pointsNum}} 积分抵扣¥{{calcUsablePointsData.pointsNum/calcUsablePointsData.equivalentPoints}}
+
+
+ {{calcUsablePointsData.unusableReason}}
+
+
+
+
+
+
+
+
+
+
总计¥
{{listinfo.payAmount}}
@@ -81,11 +116,11 @@
备注:
- {{ listinfo.orderInfo.remark||""}}
+ {{ listinfo.orderInfo.remark || ""}}
就餐人数:
- {{ listinfo.orderInfo.seatCount}}
+ {{ listinfo.orderInfo.seatCount || ""}}
@@ -97,19 +132,184 @@
data() {
return {
-
-
+ favorable: [
+ { name: "优惠券", type: "coupon",value: "", url: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/confirmOrder/coupon.png"},
+ { name: "商品券", type: "product",value: [], url: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/confirmOrder/coupon.png"},
+ // { name: "团购优惠", type: "group",value: "", url: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/confirmOrder/groupOffer.png"},
+ { name: "积分抵扣", type: "points",value: "", url: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/confirmOrder/points.png" }
+ ],
+ calcUsablePointsData: null,
+ isPointsChecked: false,
+ freeCheck: false,
+ freeDisabled: false,
+ userCouponInfos: [],
}
},
props:{
listinfo:{
type: Object
- }
+ },
},
mounted() {
+ console.log(this.listinfo.shopId)
+ this.getCalcUsablePoints()
},
methods: {
+ /**
+ * 监听优惠券/商品券选择
+ * @param {Object} data
+ */
+ changeCoupon ( data ) {
+ let _this = this;
+ // uni.$off('couponItem')
+ let couponData = JSON.parse(data)
+ console.log('监听到事件来自返回的参数:' , couponData);
+ if ( couponData.type == 1 ) { //满减优惠券
+ let couponList = _this.userCouponInfos.filter(v => v.type == 1);
+ //不包含优惠券的金额
+ let currentPayAmount = (couponList.length > 0 ? _this.listinfo.payAmount + couponList[0].discountAmount : _this.listinfo.payAmount)
+ // 判断优惠金额不能大于支付金额
+ if ( couponData.discountAmount < currentPayAmount) {
+ _this.listinfo.payAmount = ( currentPayAmount - couponData.discountAmount).toFixed(2)
+ _this.favorable[0].value = ('-¥'+couponData.discountAmount)
+ if ( couponList.length > 0) {
+ _this.userCouponInfos.map(item => {
+ if ( item.type == 1 ) {
+ item.userCouponId = couponData.id
+ item.type = couponData.type
+ item.discountAmount = couponData.discountAmount
+ item.num = couponData.type == 1 ? 1 : couponData.num
+ }
+ })
+ } else {
+ _this.favorable[0].value = ('-¥'+couponData.discountAmount)
+ _this.userCouponInfos.push({
+ userCouponId: couponData.id,
+ type: couponData.type,
+ discountAmount: couponData.discountAmount,
+ num: couponData.type == 1 ? 1 : couponData.num,
+ })
+ }
+ if ( _this.isPointsChecked) {
+ _this.pointsChange()
+ _this.getCalcUsablePoints()
+ }
+
+ } else {
+ uni.showToast({
+ title: "优惠券满减金额大于订单金额不可使用",
+ icon: "none",
+ })
+ }
+ } else { //商品券
+ // this.listinfo.details
+ // 筛选选中商品券商品列表
+ let couponList = _this.listinfo.details.filter(v => v.productId == couponData.proId);
+ //金额从小到大排序
+ let minCouponList = couponList.sort((a, b) => (a.memberPrice > 0 ? a.memberPrice : a.salePrice) - (b.memberPrice > 0 ? b.memberPrice : b.salePrice))
+ let productTicketList = _this.userCouponInfos.filter(v => v.productId == couponData.proId);
+ //商品券抵扣的数量
+ let productNum = couponData.num;
+ let productPayAmount = 0;
+ let productTicketNum = 0;
+ let productNumber = 0;
+ productTicketList.map((item,index) => {
+ productTicketNum += item.num
+ })
+ console.log(productTicketNum)
+ minCouponList.map((item,index) => {
+ productNumber += item.number
+ if ( productNum > 0 && productNumber > productTicketNum) {
+ let num = productNum >= item.number ? item.number : productNum
+ productNum = (productNum - item.number) >= 0 ? (productNum - item.number) : 0;
+ console.log(num)
+ console.log(item.salePrice)
+ productPayAmount = productPayAmount + (num*(item.memberPrice > 0 ? item.memberPrice : item.salePrice))
+ }
+ })
+ console.log(minCouponList)
+ _this.userCouponInfos.push({
+ userCouponId: couponData.id,
+ type: couponData.type,
+ productId: couponData.proId,
+ discountAmount: productPayAmount,
+ num: productNum == 0 ? couponData.num : (couponData.num - productNum),
+ })
+ _this.favorable[1].value.push({
+ userCouponId: couponData.id,
+ name: couponData.name,
+ type: couponData.type,
+ productId: couponData.proId,
+ discountAmount: productPayAmount,
+ num: productNum == 0 ? couponData.num : (couponData.num - productNum),
+ })
+
+ if ( _this.isPointsChecked) {
+ _this.pointsChange()
+ _this.getCalcUsablePoints()
+ }
+ }
+ uni.$off('couponItem')
+ },
+ /**
+ * 积分状态监听
+ */
+ pointsChange (){
+ if ( this.freeCheck || !this.calcUsablePointsData.usable) {
+ return;
+ }
+ this.isPointsChecked = !this.isPointsChecked
+ if ( this.isPointsChecked ) {
+ this.freeDisabled = true
+
+ this.listinfo.payAmount = (this.listinfo.payAmount-(this.calcUsablePointsData.pointsNum/this.calcUsablePointsData.equivalentPoints)).toFixed(2);
+ } else {
+ this.freeDisabled = false
+ this.listinfo.payAmount = (Number(this.listinfo.payAmount)+(this.calcUsablePointsData.pointsNum/this.calcUsablePointsData.equivalentPoints)).toFixed(2);
+ }
+ },
+ goUrl(item){
+ switch (item.type){
+ case 'coupon':
+ let payAmount = this.listinfo.payAmount;
+ let couponList = this.userCouponInfos.filter(v => v.type == 1);
+ if ( couponList.length > 0 ) {
+ payAmount = payAmount + couponList.discountAmount;
+ }
+ uni.pro.navigateTo('/pages/user/coupon', {
+ type: "confirm_order_coupon",
+ payAmount: payAmount,
+ shoppingCart: JSON.stringify(this.listinfo.details)
+ })
+ break;
+ case 'product':
+ let productList = this.userCouponInfos.filter(v => v.type == 2);
+ uni.pro.navigateTo('/pages/user/coupon', {
+ type: "confirm_order_product",
+ payAmount: this.listinfo.payAmount,
+ shoppingCart: JSON.stringify(this.listinfo.details),
+ productList: JSON.stringify(productList)
+ })
+ break;
+
+
+ }
+ },
+ /**
+ * 获取积分相关信息
+ */
+ async getCalcUsablePoints() {
+ let params = {
+ memberId: this.listinfo.orderInfo.memberId,
+ orderAmount: this.listinfo.payAmount,
+ }
+ let res = await this.api.calcUsablePoints(params)
+ this.calcUsablePointsData = res.data;
+ if ( this.calcUsablePointsData.usable && this.listinfo.payAmount >= this.calcUsablePointsData.minPaymentAmount) {
+ this.calcUsablePointsData.pointsNum = this.calcUsablePointsData.accountPoints >= this.calcUsablePointsData.maxUsablePoints ? this.calcUsablePointsData.maxUsablePoints : this.calcUsablePointsData.accountPoints
+ }
+ },
/**
* 复制订单号
* @param {Object} e
@@ -339,6 +539,65 @@
}
}
}
+
+ .favorable{
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ // padding: 0 30rpx;
+ box-sizing: border-box;
+ padding-bottom: 26rpx;
+ padding-top: 26rpx;
+ border-bottom: 2rpx solid #E5E5E5;
+ .favorable_left{
+ display: flex;
+ align-items: center;
+ .icon{
+ width: 40rpx;
+ height: 40rpx;
+ margin-right: 16rpx;
+ }
+ .name{
+ font-size: 28rpx;
+ font-weight: 400rpx;
+ color: #333;
+ }
+ }
+ .favorable_right{
+ display: flex;
+ align-items: center;
+ .favorable_right_text{
+ font-size: 24rpx;
+ color: #999;
+ font-weight: 400rpx;
+ }
+
+ }
+ .favorable_right.column{
+ display: flex;
+ flex-direction: column;
+ .favorable_right_text{
+ margin-bottom: 10rpx;
+ text:nth-child(1){
+ font-size: 26rpx;
+ color: #999;
+ }
+ text:nth-child(2){
+ font-size: 26rpx;
+ color: #999;
+ margin: 0 30rpx;
+ }
+ text:nth-child(3){
+ font-size: 26rpx;
+ color: #333;
+
+ }
+ }
+ }
+ }
+ .favorable.column{
+ align-items: flex-start;
+ }
.total-wrap {
width: 100%;
diff --git a/pagesOrder/components/orderInfoBefore.vue b/pagesOrder/components/orderInfoBefore.vue
index d26b100..20e4b21 100644
--- a/pagesOrder/components/orderInfoBefore.vue
+++ b/pagesOrder/components/orderInfoBefore.vue
@@ -91,7 +91,27 @@
{{listinfo.orderInfo.seatAmount}}
-
+
+
+ 优惠券
+
+
+ -¥
+ {{item.discountAmount}}
+
+
+
+
+ 商品券
+
+
+ {{item.name}}
+ X{{item.finalUseNum}}
+ -¥{{item.finalDiscountAmount}}
+
+
+
+
积分抵扣
@@ -137,7 +157,7 @@
就餐人数:
- {{ listinfo.orderInfo.seatCount}}
+ {{ listinfo.orderInfo.seatCount || ""}}
@@ -380,13 +400,13 @@
align-items: flex-end;
padding-bottom: 32rpx;
border-bottom: 2rpx dashed #e5e5e5;
- view:nth-child(1){
+ >view:nth-child(1){
font-weight: 400;
font-size: 24rpx;
color: #999999;
margin-right: 42rpx;
}
- view:nth-child(2){
+ >view:nth-child(2){
display: flex;
align-items: flex-end;
font-weight: bold;
@@ -394,6 +414,36 @@
color: #333333;
}
}
+ .val.column{
+ display: flex;
+ flex-direction: column;
+ .productCoupon{
+ display: flex;
+ align-items: flex-end;
+ margin: 0 0 10rpx 0;
+ .name{
+ font-weight: 400;
+ font-size: 26rpx;
+ color: #999;
+ margin: 0;
+ }
+ .num{
+ font-weight: 400;
+ font-size: 26rpx;
+ color: #999;
+ margin: 0 30rpx;
+ line-height: 20rpx;
+ }
+ .amount{
+ font-weight: bold;
+ font-size: 26rpx;
+ color: #333;
+ }
+ }
+ }
+ }
+ .cell-item.column{
+ align-items: flex-start;
}
.total-wrap {
width: 100%;
diff --git a/pagesOrder/confirm_order/index.vue b/pagesOrder/confirm_order/index.vue
index 7e7e913..873831d 100644
--- a/pagesOrder/confirm_order/index.vue
+++ b/pagesOrder/confirm_order/index.vue
@@ -80,7 +80,7 @@
{{packFee.toFixed(2)}}
-
+
餐位费
X{{shopTableInfo.seatNum}}
@@ -88,20 +88,25 @@
{{(shopTableInfo.seatNum*storeInfo.tableFee).toFixed(2)}}
-
-
+
+
-
+
{{ item.name }}
- {{item.value}}
-
-
-
-
- {{ item.name }}
+
+ {{item.value}}
+
-
+
+
+ {{items.name}}
+ X{{items.num}}
+ -¥{{items.discountAmount || 0}}
+
+
+
+
使用 {{ calcUsablePointsData.pointsNum}} 积分抵扣¥{{calcUsablePointsData.pointsNum/calcUsablePointsData.equivalentPoints}}
@@ -115,6 +120,7 @@
+
@@ -207,6 +213,7 @@
eatModel: [],
favorable: [
{ name: "优惠券", type: "coupon",value: "", url: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/confirmOrder/coupon.png"},
+ { name: "商品券", type: "product",value: [], url: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/confirmOrder/coupon.png"},
// { name: "团购优惠", type: "group",value: "", url: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/confirmOrder/groupOffer.png"},
{ name: "积分抵扣", type: "points",value: "", url: "https://czg-qr-order.oss-cn-beijing.aliyuncs.com/confirmOrder/points.png" }
],
@@ -216,7 +223,7 @@
order: {
phone: "",
},
- userCouponInfos: null,
+ userCouponInfos: [],
shopTableInfo: null,
freeDingConfig: null,
cartLists: [],
@@ -294,33 +301,107 @@
if ( this.storeInfo.eatModel.indexOf(item.val) != -1) {
item.show = true;
}
- })
- uni.$on('couponItem',function(data){
+ })
+ uni.$on('couponItem',this.changeCoupon)
+ },
+ methods: {
+ /**
+ * 监听优惠券/商品券选择
+ * @param {Object} data
+ */
+ changeCoupon ( data ) {
+ let _this = this;
+ // uni.$off('couponItem')
let couponData = JSON.parse(data)
console.log('监听到事件来自返回的参数:' , couponData);
- _this.userCouponInfos = {
- userCouponId: couponData.id,
- discountAmount: couponData.discountAmount,
- num: 1,
- }
- console.log('监听到事件来自返回的参数:' , _this.favorable);
- if ( couponData.discountAmount < _this.listinfo.payAmount) {
- _this.listinfo.payAmount = _this.listinfo.payAmount - _this.userCouponInfos.discountAmount
- _this.favorable[0].value = ('-¥'+couponData.discountAmount)
+ if ( couponData.type == 1 ) { //满减优惠券
+ let couponList = _this.userCouponInfos.filter(v => v.type == 1);
+ //不包含优惠券的金额
+ let currentPayAmount = (couponList.length > 0 ? _this.listinfo.payAmount + couponList[0].discountAmount : _this.listinfo.payAmount)
+ // 判断优惠金额不能大于支付金额
+ if ( couponData.discountAmount < currentPayAmount) {
+ _this.listinfo.payAmount = ( currentPayAmount - couponData.discountAmount).toFixed(2)
+ _this.favorable[0].value = ('-¥'+couponData.discountAmount)
+ if ( couponList.length > 0) {
+ _this.userCouponInfos.map(item => {
+ if ( item.type == 1 ) {
+ item.userCouponId = couponData.id
+ item.type = couponData.type
+ item.discountAmount = couponData.discountAmount
+ item.num = couponData.type == 1 ? 1 : couponData.num
+ }
+ })
+ } else {
+ _this.favorable[0].value = ('-¥'+couponData.discountAmount)
+ _this.userCouponInfos.push({
+ userCouponId: couponData.id,
+ type: couponData.type,
+ discountAmount: couponData.discountAmount,
+ num: couponData.type == 1 ? 1 : couponData.num,
+ })
+ }
+ if ( _this.isPointsChecked) {
+ _this.pointsChange()
+ _this.getCalcUsablePoints()
+ }
+
+ } else {
+ uni.showToast({
+ title: "优惠券满减金额大于订单金额不可使用",
+ icon: "none",
+ })
+ }
+ } else { //商品券
+ // this.listinfo.details
+ // 筛选选中商品券商品列表
+ let couponList = _this.listinfo.details.filter(v => v.productId == couponData.proId);
+ //金额从小到大排序
+ let minCouponList = couponList.sort((a, b) => (a.memberPrice > 0 ? a.memberPrice : a.salePrice) - (b.memberPrice > 0 ? b.memberPrice : b.salePrice))
+ let productTicketList = _this.userCouponInfos.filter(v => v.productId == couponData.proId);
+ //商品券抵扣的数量
+ let productNum = couponData.num;
+ let productPayAmount = 0;
+ let productTicketNum = 0;
+ let productNumber = 0;
+ productTicketList.map((item,index) => {
+ productTicketNum += item.num
+ })
+ console.log(productTicketNum)
+ minCouponList.map((item,index) => {
+ productNumber += item.number
+ if ( productNum > 0 && productNumber > productTicketNum) {
+ let num = productNum >= item.number ? item.number : productNum
+ productNum = (productNum - item.number) >= 0 ? (productNum - item.number) : 0;
+ console.log(num)
+ console.log(item.salePrice)
+ productPayAmount = productPayAmount + (num*(item.memberPrice > 0 ? item.memberPrice : item.salePrice))
+ }
+ })
+ console.log(minCouponList)
+ _this.userCouponInfos.push({
+ userCouponId: couponData.id,
+ type: couponData.type,
+ productId: couponData.proId,
+ discountAmount: productPayAmount,
+ num: productNum == 0 ? couponData.num : (couponData.num - productNum),
+ })
+ _this.favorable[1].value.push({
+ userCouponId: couponData.id,
+ name: couponData.name,
+ type: couponData.type,
+ productId: couponData.proId,
+ discountAmount: productPayAmount,
+ num: productNum == 0 ? couponData.num : (couponData.num - productNum),
+ })
+
if ( _this.isPointsChecked) {
_this.pointsChange()
_this.getCalcUsablePoints()
}
-
- } else {
-
}
- // TODO 下面执行刷新的方法
- })
- },
- methods: {
+ uni.$off('couponItem')
+ },
setPayAmount ( cartLists ) {
- console.log(cartLists)
let tableFee;
if ( this.is_type == 0 ) {
tableFee = this.shopTableInfo?(this.shopTableInfo.seatNum*this.storeInfo.tableFee):0
@@ -332,6 +413,22 @@
} else {
this.listinfo.payAmount = (cartLists.amount+tableFee).toFixed(2)
}
+ if ( this.userCouponInfos.length > 0 ) {
+ console.log(this.userCouponInfos)
+ this.userCouponInfos.forEach(item => {
+ if ( item.type == 1 ) {
+ if ( item.discountAmount && item.discountAmount > 0 ) {
+ this.listinfo.payAmount = (this.listinfo.payAmount - item.discountAmount).toFixed(2)
+ }
+ } else {
+ if ( item.discountAmount && item.discountAmount > 0 ) {
+ this.listinfo.payAmount = (this.listinfo.payAmount - item.discountAmount).toFixed(2)
+ }
+ }
+ })
+ }
+
+
this.isPointsChecked = false;
this.getCalcUsablePoints()
},
@@ -369,10 +466,27 @@
goUrl(item){
switch (item.type){
case 'coupon':
+ let payAmount = this.listinfo.payAmount;
+ let couponList = this.userCouponInfos.filter(v => v.type == 1);
+ if ( couponList.length > 0 ) {
+ payAmount = payAmount + couponList.discountAmount;
+ }
uni.pro.navigateTo('/pages/user/coupon', {
- type: "confirm_order"
+ type: "confirm_order_coupon",
+ payAmount: payAmount,
+ shoppingCart: JSON.stringify(this.listinfo.details)
})
break;
+ case 'product':
+ let productList = this.userCouponInfos.filter(v => v.type == 2);
+ uni.pro.navigateTo('/pages/user/coupon', {
+ type: "confirm_order_product",
+ payAmount: this.listinfo.payAmount,
+ shoppingCart: JSON.stringify(this.listinfo.details),
+ productList: JSON.stringify(productList)
+ })
+ break;
+
}
},
@@ -390,7 +504,6 @@
if ( this.calcUsablePointsData.usable && this.listinfo.payAmount >= this.calcUsablePointsData.minPaymentAmount) {
this.calcUsablePointsData.pointsNum = this.calcUsablePointsData.accountPoints >= this.calcUsablePointsData.maxUsablePoints ? this.calcUsablePointsData.maxUsablePoints : this.calcUsablePointsData.accountPoints
}
- console.log(this.calcUsablePointsData)
},
/**
@@ -421,7 +534,6 @@
lat: uni.cache.get('getLocationstorage').lat ? uni.cache.get('getLocationstorage').lat :
'',
}
- console.log(this.shopId)
if (this.tableCode) {params.code = this.tableCode}
if (this.shopId) {params.shopId = this.shopId}
let res = await this.api.productqueryShop(params)
@@ -552,7 +664,6 @@
if ( this.shopTableInfo && this.shopTableInfo.seatNum ) { params.num = this.shopTableInfo.seatNum; }
let res = await this.api.choseEatModel(params)
- console.log(index)
if ( type == 'tabClick') {
if ( index == 1 ) {
if ( res.data.info.length > 0) {
@@ -697,7 +808,6 @@
params.userCouponInfos = this.userCouponInfos
}
let res = await this.api.creatOrder(params)
- console.log(res)
this.listinfoid = res.data.id;
if ( this.storeInfo.registerType == 'restaurant') {
uni.redirectTo({
@@ -1274,7 +1384,9 @@
justify-content: space-between;
padding: 0 30rpx;
box-sizing: border-box;
- margin-bottom: 32rpx;
+ padding-bottom: 26rpx;
+ padding-top: 26rpx;
+ border-bottom: 2rpx solid #E5E5E5;
.favorable_left{
display: flex;
align-items: center;
@@ -1299,6 +1411,30 @@
}
}
+ .favorable_right.column{
+ display: flex;
+ flex-direction: column;
+ .favorable_right_text{
+ margin-bottom: 10rpx;
+ text:nth-child(1){
+ font-size: 26rpx;
+ color: #999;
+ }
+ text:nth-child(2){
+ font-size: 26rpx;
+ color: #999;
+ margin: 0 30rpx;
+ }
+ text:nth-child(3){
+ font-size: 26rpx;
+ color: #333;
+
+ }
+ }
+ }
+ }
+ .favorable.column{
+ align-items: flex-start;
}
.cell-item{
display: flex;
@@ -1327,11 +1463,13 @@
color: #333333;
}
}
+
}
+
.totalPrice{
padding: 32rpx 30rpx;
box-sizing: border-box;
- border-top: 2rpx solid #E5E5E5;
+ // border-top: 2rpx solid #E5E5E5;
display: flex;
justify-content: flex-end;
align-items: flex-end;
diff --git a/pagesOrder/order_detail/index.vue b/pagesOrder/order_detail/index.vue
index 65e46b4..f1ca626 100644
--- a/pagesOrder/order_detail/index.vue
+++ b/pagesOrder/order_detail/index.vue
@@ -153,11 +153,17 @@
})
if (res.code == 0) {
this.listinfo = res.data;
+ console.log(this.listinfo.orderInfo.couponInfoList)
+ if ( this.listinfo.orderInfo.couponInfoList ) {
+ this.listinfo.orderInfo.couponInfoList = JSON.parse(this.listinfo.orderInfo.couponInfoList)
+ // this.listinfo.orderInfo.couponInfoList = eval('(' + jsonString + ')')
+ }
this.listinfoid = res.data.orderId;
this.shopId = res.data.shopId;
if (this.listinfo.useType == " ") {
//堂食先付费
}
+ console.log(this.listinfo)
this.getAount();
}
},
diff --git a/pagesPoints/index/index.vue b/pagesPoints/index/index.vue
index 22ab9ce..6be9288 100644
--- a/pagesPoints/index/index.vue
+++ b/pagesPoints/index/index.vue
@@ -4,14 +4,14 @@
- 可用积分
- {{pointsInfo.accountPoints}}
-
+ 可用积分
+ {{pointsInfo.accountPoints}}
+
{{item.name}}
-
+