From f2f5bac39e2f0a2dc2074503bc691d3cea9ab8c8 Mon Sep 17 00:00:00 2001
From: YeMingfei666 <1619116647@qq.com>
Date: Wed, 6 Nov 2024 17:37:56 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=A2=E5=8D=95=E8=AF=A6?=
=?UTF-8?q?=E6=83=85=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8=E4=BB=B7=E6=A0=BC?=
=?UTF-8?q?=E5=B1=95=E7=A4=BA=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BC=9A=E5=91=98?=
=?UTF-8?q?=E4=BB=B7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
commons/utils/goodsUtil.js | 3 +
http/yskApi/Instead.js | 58 ++++
pages.json | 1 +
pagesOrder/detail/components/list.vue | 131 ++++++--
pagesOrder/detail/detail.vue | 7 +-
pagesOrder/index/compoents/order-item.vue | 29 +-
pagesOrder/pay-order/pay-order.vue | 65 +++-
pagesOrder/quan/quan.vue | 361 +++++++++++++++++++++-
8 files changed, 593 insertions(+), 62 deletions(-)
diff --git a/commons/utils/goodsUtil.js b/commons/utils/goodsUtil.js
index b0e821d..c919e53 100644
--- a/commons/utils/goodsUtil.js
+++ b/commons/utils/goodsUtil.js
@@ -19,6 +19,9 @@ export function canTuiKuan(orderInfo,item){
export function isTui(item){
return item.status=='return'||item.status=='refund'||item.status=='refunding'
}
+export function isGift(item){
+ return !isTui(item)&&item.gift
+}
export function numSum(arr){
const sum=arr.reduce((a,b)=>{
return a+b*100
diff --git a/http/yskApi/Instead.js b/http/yskApi/Instead.js
index 3221307..d964201 100644
--- a/http/yskApi/Instead.js
+++ b/http/yskApi/Instead.js
@@ -331,4 +331,62 @@ export function $returnOrder(data) {
...data
}
});
+}
+
+//获取订单可用优惠券
+export function $activateByOrderId(data) {
+ return request({
+ url: '/api/tbShopCoupon/activateByOrderId',
+ method: "get",
+ params:{
+ shopId: uni.getStorageSync("shopId"),
+ ...data
+ }
+ });
+}
+
+//会员积分列表
+export function $returnMemberPointsList(data) {
+ return request({
+ url: '/api/points/member-points/page',
+ method: "get",
+ params:{
+ shopId: uni.getStorageSync("shopId"),
+ ...data
+ }
+ });
+}
+
+// 会员积分账户信息
+export function $returnMemberPoints(memberId) {
+ return request({
+ url: '/api/points/member-points/'+memberId,
+ method: "get",
+ params:{
+ shopId: uni.getStorageSync("shopId"),
+ ...data
+ }
+ });
+}
+//002-获取订单可用积分及抵扣金额(支付页面使用)
+export function $calcUsablePoints(data) {
+ return request({
+ url: '/api/points/member-points/calc-usable-points',
+ method: "get",
+ params:{
+ shopId: uni.getStorageSync("shopId"),
+ ...data
+ }
+ });
+}
+// 003-根据积分计算可抵扣金额
+export function $calcDeDuctionPoints(data) {
+ return request({
+ url: '/api/points/member-points/calc-deduction-amount',
+ method: "get",
+ params:{
+ shopId: uni.getStorageSync("shopId"),
+ ...data
+ }
+ });
}
\ No newline at end of file
diff --git a/pages.json b/pages.json
index 0691aa5..38a9c78 100644
--- a/pages.json
+++ b/pages.json
@@ -878,6 +878,7 @@
},
{
"path" : "quan/quan",
+ "pageId": "PAGES_ORDER_QUAN",
"style" :
{
"navigationBarTitleText" : "券包"
diff --git a/pagesOrder/detail/components/list.vue b/pagesOrder/detail/components/list.vue
index fc3770b..53ffcca 100644
--- a/pagesOrder/detail/components/list.vue
+++ b/pagesOrder/detail/components/list.vue
@@ -26,7 +26,9 @@
{{item.status=='refunding'?'退款中':'已退'}}
- {{item.name||item.productName}}
+
+ {{item.name||item.productName}}
@@ -54,8 +56,20 @@
¥{{returnTotalMoney(item)}}
+
+ ¥0.00
+ ¥{{returnTotalMoney(item)}}
+
+
- ¥{{returnTotalMoney(item)}}
+
+ ¥{{returnVipMoney(item)}}
+
+ ¥{{returnTotalMoney(item)}}
+
+
+ ¥{{returnTotalMoney(item)}}
+
X{{item.number||item.num}}
@@ -70,10 +84,10 @@
-
- 退款
-
+
+ 退款
+
@@ -99,9 +113,15 @@
-
- 小计¥
- {{allPrice}}
+
+
+ 已优惠¥{{youhuiAllPrice}}
+
+
+ 小计¥
+ {{allPrice}}
+
+
@@ -148,9 +168,44 @@
import {
hasPermission
} from '@/commons/utils/hasPermission.js'
- import {isTui,canTuiKuan,canTuicai,numSum} from '@/commons/utils/goodsUtil.js'
+ import {
+ isTui,isGift,
+ canTuiKuan,
+ canTuicai,
+ numSum
+ } from '@/commons/utils/goodsUtil.js'
+ const props = defineProps({
+ orderInfo: {
+ type: Object,
+ default: () => {}
+ },
+ data: {
+ type: Array,
+ default: () => []
+ },
+ seatFee: {
+ type: Object,
+ default: () => {}
+ },
+ user: {
+ type: Object,
+ default: () => {
+ return {
+ id: '',
+ isVip: false
+ }
+ }
+ }
+ })
const emits = defineEmits(['tuicai', 'tuikuan', 'printOrder'])
+ function returnVipMoney(item) {
+ if (!item.memberPrice || !props.user.isVip) {
+ return 0
+ }
+ return (item.memberPrice * item.num).toFixed(2)
+ }
+
function returnTotalMoney(item) {
return (item.price * item.num).toFixed(2)
}
@@ -177,20 +232,7 @@
function printOrder() {
emits('printOrder')
}
- const props = defineProps({
- orderInfo: {
- type: Object,
- default: () => {}
- },
- data: {
- type: Array,
- default: () => []
- },
- seatFee: {
- type: Object,
- default: () => {}
- }
- })
+
const seatFeePrice = computed(() => {
if (!props.seatFee.priceAmount) {
@@ -199,21 +241,44 @@
const n = props.seatFee.priceAmount * (props.seatFee.status == 'return' ? 0 : 1)
return n.toFixed(2)
})
-
- const allPrice = computed(() => {
+ const goodsOriginAllPrice = computed(() => {
const goodsPrice = props.data.reduce((prve, cur) => {
- const curTotal = cur.info.filter(v => v.gift != true && v.status !== "return").reduce((a,
+ const curTotal = cur.info.reduce((a,
b) => {
- // return a + b.priceAmount*1||(b.num*b.price+b.packAmount*1)
- // return a + (b.num*b.price+b.packAmount*1)
return a + (b.num * b.price)
}, 0)
return prve + curTotal
}, 0)
return goodsPrice.toFixed(2)
-
})
-
+
+ const freePrice = computed(() => {
+ const goodsPrice = props.data.reduce((prve, cur) => {
+ const curTotal = cur.info.filter(v => v.gift == true || isTui(v)).reduce((a,
+ b) => {
+ return a + (b.num * b.price)
+ }, 0)
+ return prve + curTotal
+ }, 0)
+ return goodsPrice.toFixed(2)
+ })
+ const vipDiscountPrice = computed(() => {
+ if (!props.user.isVip) {
+ return 0
+ }
+ const goodsPrice = props.data.reduce((prve, cur) => {
+ const curTotal = cur.info.filter(v => v.gift != true && v.status !== "return"&&v.memberPrice&&(v.memberPrice!=v.price)).reduce((a,
+ b) => {
+ return a + (b.num * (b.price-b.memberPrice))
+ }, 0)
+ return prve + curTotal
+ }, 0)
+ return goodsPrice.toFixed(2)
+ })
+ const youhuiAllPrice=computed(()=>{
+ console.log(freePrice.value);
+ return (freePrice.value*1+vipDiscountPrice.value*1).toFixed(2)
+ })
const packFee = computed(() => {
const goodsPrice = props.data.reduce((prve, cur) => {
const curTotal = cur.info.filter(v => v.gift != true && v.status !== "return").reduce((a,
@@ -225,7 +290,9 @@
return goodsPrice.toFixed(2)
})
-
+ const allPrice = computed(() => {
+ return (goodsOriginAllPrice.value-freePrice.value-vipDiscountPrice.value).toFixed(2)
+ })
const goodsNumber = computed(() => {
let result = 0
diff --git a/pagesOrder/detail/detail.vue b/pagesOrder/detail/detail.vue
index 18059ef..2a39559 100644
--- a/pagesOrder/detail/detail.vue
+++ b/pagesOrder/detail/detail.vue
@@ -6,6 +6,7 @@
{{orderDetail.info.tableName}}
-->
@@ -318,7 +319,7 @@
totalScore:'0.00'
})
//更新选择用户
- function setUser(par) {
+ async function setUser(par) {
const submitPar = {
orderId:options.id||'',
masterId: options.masterId,
@@ -327,7 +328,9 @@
type: user.value.id ? 0 : 1 //0 设置 1 取消
}
Object.assign(submitPar, par)
- return Api.$setUser(submitPar)
+ const res=await Api.$setUser(submitPar)
+ init()
+ return res
}
diff --git a/pagesOrder/index/compoents/order-item.vue b/pagesOrder/index/compoents/order-item.vue
index 83334d3..7c8cf3f 100644
--- a/pagesOrder/index/compoents/order-item.vue
+++ b/pagesOrder/index/compoents/order-item.vue
@@ -41,12 +41,27 @@
×{{item.num}}
-
- ¥{{goodsPriceAmount(item)}}
-
- ¥0
+
+
+ ¥{{goodsPriceAmount(item)}}
+
+ ¥0
+
-
+
+
+
+ ¥{{goodsPriceAmount(item)}}
+
+ ¥{{goodsVipPriceAmount(item)}}
+
+
+
+
+
+ ¥{{goodsPriceAmount(item)}}
+
+
@@ -123,6 +138,10 @@
function goodsPriceAmount(item){
return (item.price*item.num).toFixed(2)
}
+ function goodsVipPriceAmount(item){
+ const price=props.data.memberId?item.memberPrice: item.price
+ return (price*item.num).toFixed(2)
+ }
// const packeFee=computed(()=>{
// return props.data.detailList.reduce((prve,cur)=>{
// return prve+cur.packAmount
diff --git a/pagesOrder/pay-order/pay-order.vue b/pagesOrder/pay-order/pay-order.vue
index ed2d9c2..67897b7 100644
--- a/pagesOrder/pay-order/pay-order.vue
+++ b/pagesOrder/pay-order/pay-order.vue
@@ -15,15 +15,31 @@
-
- 优惠券
-
- 选择优惠券
-
-
+
+
+ 优惠券
+
+ 选择优惠券
+
+
+
+
+
+
+ 减
+ {{item.name}}
+
+
+ ¥{{item.discountAmount}}
+
+
+
+
+
+
服务员改价
@@ -45,7 +61,7 @@
{{item.payName}}
-
+
会员:
{{user.telephone||user.nickName}}
@@ -130,6 +146,18 @@
import * as orderApi from '@/http/yskApi/order.js'
import infoBox from '@/commons/utils/infoBox.js'
import editDiscount from '@/components/my-components/edit-discount.vue'
+ function toQuan(){
+ console.log(order);
+ if(!order.memberId){
+ return infoBox.showToast('请先选择会员',0.5).then(()=>{
+ chooseUser()
+ })
+ }
+ go.to('PAGES_ORDER_QUAN',{
+ orderId:order.id,
+ memberId:order.memberId
+ })
+ }
async function discountShow(){
const bol=await hasPermission('yun_xu_da_zhe')
if(bol){
@@ -173,7 +201,8 @@
payTypes: {
list: [],
selIndex: 0
- }
+ },
+ quan:[]
})
function chooseUser() {
@@ -184,9 +213,9 @@
console.log(option);
const submitPar = {
tableId: order.tableId,
+ orderId:order.id,
masterId: order.masterId,
vipUserId: user.value.id ? user.value.id : '',
- orderId:order.id,
type: user.value.id ? 0 : 1 //0 设置 1 取消
}
Object.assign(submitPar, par)
@@ -206,8 +235,17 @@
})
})
}
+ function watchChooseQuan() {
+ uni.$off('choose-quan')
+ uni.$on('choose-quan', (arr) => {
+ console.log(arr);
+ pays.quan=arr
+ })
+ }
+
onShow(()=>{
watchChooseuser()
+ watchChooseQuan()
})
watch(() => pays.selIndex, (newval) => {
@@ -381,6 +419,15 @@
+ .fixed-b {
+ position: fixed;
+ bottom: 0;
+ background-color: #fff;
+ right: 0;
+ left: 0;
+ }
+
+ .bg-gray {
+ border-radius: 18rpx;
+ overflow: hidden;
+ }
+
+ .price1 {
+ color: rgb(255, 107, 0);
+ }
+
+ .payType {
+ .radio {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ background-color: rgb(255, 212, 0);
+ width: 40rpx;
+ height: 40rpx;
+ border-radius: 40rpx;
+ opacity: 0;
+
+ }
+
+ .active {
+ .radio {
+ opacity: 1;
+ }
+ }
+ }
+
+ .left-block {
+ position: relative;
+
+ &::after {
+ content: '';
+ position: absolute;
+ left: -30rpx;
+ display: block;
+ width: 12rpx;
+ top: 0;
+ background-color: rgb(255, 212, 0);
+ bottom: 0;
+ }
+ }
+
+ .filtergray {
+ filter: grayscale(1);
+ }
+
+ .radio {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ background-color: rgb(255, 255, 255);
+ width: 40rpx;
+ height: 40rpx;
+ border-radius: 40rpx;
+
+ &.active {}
+ }
+
+ .use-btn {
+ background-color: #fff;
+ border-radius: 100rpx;
+ padding: 4rpx 20rpx;
+ color: $quan-color;
+ }
+
+ .u-font-40 {
+ font-size: 40rpx;
+ }
+
+ .yilingqu {
+ position: absolute;
+ bottom: 20rpx;
+ right: 20rpx;
+ }
+
+ .lingqu {
+ position: absolute;
+ bottom: 20rpx;
+ right: 20rpx;
+ background-color: rgb(255, 207, 0);
+ padding: 10rpx 30rpx;
+ border-radius: 100rpx;
+ }
+
+ .btn {
+ background-color: $my-main-color;
+ color: #fff;
+ border: none;
+ padding: 10rpx 20rpx;
+ border-radius: 10rpx;
+ }
+
+ .hui {
+ // background-color: $quan-color;
+ background-image: linear-gradient(to right bottom,rgb(254,103,4),rgb(241,50,42));
+ padding: 4rpx 10rpx;
+ border-radius: 10rpx;
+ font-size: 24rpx;
+ color: #fff;
+ }
+
+ .quan {
+ border: 1px solid rgb(238, 238, 238);
+ position: relative;
+ border-radius: 10rpx;
+ box-shadow: 0 0 5px #eee;
+ overflow: hidden;
+
+ .sel {
+ padding: 2rpx 4rpx;
+ position: absolute;
+ background-color: $quan-color;
+ left: 0;
+ top: 0;
+ border-radius: 0 0 24rpx 0;
+ }
+
+ .right {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ padding: 20rpx 24rpx;
+ color: #fff;
+ display: flex;
+ flex-direction: column;
+ background-color: $quan-color;
+ height: 100%;
+ }
+
+ &.goods {
+ .right {
+ background-color: #fff;
+ position: initial;
+
+ .use-btn {
+ padding: 10rpx 40rpx;
+ color: #fff;
+ background-color: $quan-color;
+ }
+ }
+ }
+ }
+
+ .bottom {
+ padding: 30rpx 30rpx 80rpx 30rpx;
+ }
+
\ No newline at end of file