优惠券
+
@@ -1019,6 +1069,9 @@
:disabledPayType="disabledPayType"
>
+
挂账
立即支付
@@ -1413,7 +1466,25 @@
>
-
+
+
+
+
+
+
+
@@ -1431,6 +1502,11 @@ import chooseDinersNumber from "./components/choose-diners-number.vue";
import returnCart from "./components/return-cart.vue";
import moneyKeyboard from "./components/money-keyboard.vue";
import caiAdd from "./components/popup-linshiCai.vue";
+import cartChangePrice from "./components/popup-cart-changePrice.vue";
+import popTuanQuan from "./components/popup-tuan-quan.vue";
+import tuanQuanTable from "./components/tuan-quan-table.vue";
+import popupChooseGuazhang from "./components/popup-choose-guazhang.vue";
+
import dayjs from "dayjs";
import { tbShopInfo } from "@/api/user";
import { hasPermission } from "@/utils/limits.js";
@@ -1463,7 +1539,9 @@ import {
$calcUsablePoints,
$calcDeDuctionPoints,
} from "@/api/table";
+
import { tbShopCategoryGet } from "@/api/shop";
+import { $checkCoupon,$waitCall } from "@/api/Instead";
import {
isCanBuy,
arrayContainsAll,
@@ -1480,10 +1558,15 @@ import { returnProductCoupAllPrice } from "./quan_util.js";
//商品数量从0到n每一个对应的价格
let $goodsPayPriceMap = {};
import { $status } from "@/utils/table.js";
+import PopupChooseGuazhang from "./components/popup-choose-guazhang.vue";
let $originTableList = [];
export default {
components: {
+ popupChooseGuazhang,
+ cartChangePrice,
+ popTuanQuan,
+ tuanQuanTable,
caiAdd,
quansPop,
returnCart,
@@ -1496,9 +1579,12 @@ export default {
moneyDiscount,
cartItem,
chooseDinersNumber,
+ PopupChooseGuazhang,
},
data() {
return {
+ //挂账人
+ guazhangRen: "",
disabledPayType: [],
//积分抵扣
points: {
@@ -1512,6 +1598,8 @@ export default {
value: 0,
toMoney: 0,
},
+ //团购券
+ tuanQuan: "",
//选中可用优惠券
quansSelArr: [],
//台桌搜索文字
@@ -1710,9 +1798,33 @@ export default {
},
},
timer: null,
+ isAllWaitCall: false,
};
},
computed: {
+ returnPrintText(){
+ if (this.order.selIndex < 0) {
+ return "免厨打";
+ }
+ return this.order.list[this.order.selIndex].isPrint
+ ? "免厨打"
+ : "打印";
+ },
+ returnWaingText() {
+ if (this.order.selIndex < 0) {
+ return "等叫";
+ }
+ return this.order.list[this.order.selIndex].isWaitCall == 1
+ ? "取消等叫"
+ : "等叫";
+ },
+ isHasWaiting() {
+ const waitingArr = this.order.list.filter((v) => v.isWaitCall == 1);
+ return waitingArr.length > 0 ? true : false;
+ },
+ returnWaingAllText() {
+ return this.isAllWaitCall ? "取消全部等叫" : "整单等叫";
+ },
pointsDiscountAmount() {
if (this.points.selected) {
return this.points.toMoney;
@@ -1765,6 +1877,8 @@ export default {
!this.order.selGoods ||
this.order.old.list.length <= 0 ||
this.order.selGoods.status == "return"
+ ||this.order.selGoods.useType=='dine-in'
+ ||this.order.selGoods.useType=='dine-in-before'
);
},
title() {
@@ -1918,8 +2032,28 @@ export default {
}, 0);
return (oldMemberPrice + nowMemberprice).toFixed(2);
},
+ discountSaleAmount() {
+ const oldTotal = this.order.old.list.reduce((a, b) => {
+ const bTotal = b.info
+ .filter((v) => v.discountSaleAmount && v.discountSaleAmount > 0)
+ .reduce((prve, cur) => {
+ return prve + cur.number * cur.discountSaleAmount;
+ }, 0);
+ return a + bTotal;
+ }, 0);
+ const nowTotal = this.order.list
+ .filter((v) => v.discountSaleAmount && v.discountSaleAmount > 0)
+ .reduce((a, b) => {
+ return a + b.number * b.discountSaleAmount;
+ }, 0);
+ return (oldTotal + nowTotal).toFixed(2);
+ },
youhuiAllPrice() {
- return (this.vipDiscountPrice * 1 + this.allGiftMoney * 1).toFixed(2);
+ return (
+ this.vipDiscountPrice * 1 +
+ this.allGiftMoney * 1 +
+ this.discountSaleAmount * 1
+ ).toFixed(2);
},
allNumber() {
const oldNumber = this.order.old.list.reduce((a, b) => {
@@ -1975,7 +2109,7 @@ export default {
watch: {
yinFuJinE: function (newval) {
if (newval <= 0) {
- this.disabledPayType = ["scanCode", "deposit"];
+ this.disabledPayType = ["scanCode", "deposit","creditBuyer"];
} else {
this.disabledPayType = [];
}
@@ -2194,6 +2328,38 @@ export default {
this.open(this.$route.query);
},
methods: {
+ //挂账人支付确认
+ guazhangPayConfirm(guazhangren, price) {
+ this.guazhangRen = guazhangren;
+ this.pays({
+ creditBuyerId: this.guazhangRen.id,
+ payType: "creditBuyer",
+ });
+ },
+ //挂账
+ guazhangShow() {
+ this.$refs.refGuaZhang.open();
+ },
+ //团购券扫码弹窗
+ shouwTuanQuan() {
+ this.$refs.refPopTuanQuan.open();
+ },
+ tuanQuanConfirm(e) {
+ console.log(e);
+ this.tuanQuan = e;
+ },
+ //更新单品改价数据
+ updateCartItem(res) {
+ if (res) {
+ // this.order.list[this.order.selIndex] = res;
+ this.$set(this.order.list, this.order.selIndex, res)
+ }
+ },
+ // 单品改价
+ refPopChangePriceShow() {
+ const orderGoods = this.order.list[this.order.selIndex];
+ this.$refs.refPopChangePrice.open(orderGoods);
+ },
returnProDiscount(row) {
console.log(row);
//相同商品抵扣券数组
@@ -2216,20 +2382,24 @@ export default {
}
},
lingshicaiShow() {
- this.$refs.refPopAddCai.open();
+ this.$refs.refPopAddCai.open({
+ masterId: this.masterId,
+ tableId: this.table.tableId,
+ vipUserId: this.vipUser.id,
+ });
},
delQuan(row) {
const index = this.quansSelArr.findIndex((v) => v.id == row.id);
console.log(index);
if (index != -1) {
this.quansSelArr.splice(index, 1);
- this.quansSelArr
- .map((v, index) => {
- return {
- ...v,
- discountAmount:v.type==2?this.returnProDiscount(v):v.discountAmount,
- };
- });
+ this.quansSelArr.map((v, index) => {
+ return {
+ ...v,
+ discountAmount:
+ v.type == 2 ? this.returnProDiscount(v) : v.discountAmount,
+ };
+ });
}
},
async getCalcUsablePoints() {
@@ -2249,8 +2419,8 @@ export default {
this.vipUser.accountPoints,
this.points.res.maxUsablePoints || 0
);
- if(!pointsRes.usable){
- this.points.selected=false
+ if (!pointsRes.usable) {
+ this.points.selected = false;
}
}
return pointsRes;
@@ -2296,11 +2466,12 @@ export default {
this.createOrder.discount = 1;
this.points.selected = "";
e.map((v, index) => {
- return {
- ...v,
- discountAmount:v.type==2? this.returnProDiscount(v):v.discountAmount,
- };
- });
+ return {
+ ...v,
+ discountAmount:
+ v.type == 2 ? this.returnProDiscount(v) : v.discountAmount,
+ };
+ });
this.quansSelArr = [...e];
$goodsPayPriceMap = goodsPayPriceMap;
},
@@ -2892,7 +3063,7 @@ export default {
this.pays();
},
// 支付订单
- async pays() {
+ async pays(par) {
this.loading = true;
const userCouponInfos = this.quansSelArr.reduce((prve, cur) => {
const index = prve.findIndex((v) => v.userCouponId == cur.couponId);
@@ -2907,6 +3078,15 @@ export default {
return prve;
}, []);
try {
+ // 核销团购券商品
+ if (this.tuanQuan && this.tuanQuan.goods.length > 0) {
+ await $checkCoupon({
+ code: this.tuanQuan.couponCode,
+ num: this.tuanQuan.number,
+ orderId: this.createOrder.data.id,
+ cartId: this.tuanQuan.goods.map((v) => v.cartId),
+ });
+ }
const res = await $payOrder({
tableId: this.table.tableId,
masterId: this.masterId,
@@ -2915,8 +3095,9 @@ export default {
vipUserId: this.createOrder.data.memberId || this.vipUser.id,
discount: this.createOrder.discount,
code: this.createOrder.code,
- userCouponInfos,
+ userCouponInfos: userCouponInfos.length > 0 ? userCouponInfos : "",
pointsNum: this.points.value,
+ ...par,
});
this.loading = false;
this.payOrderSuccess();
@@ -3044,7 +3225,16 @@ export default {
updateOrder(par = {}) {
let item = this.order.list[this.order.selIndex];
console.log(this.table);
- const { productId, skuId, isPack, isGift, number, id } = item;
+ const {
+ productId,
+ skuId,
+ isPack,
+ isGift,
+ number,
+ id,
+ isPrint,
+ isWaitCall,
+ } = item;
$updateCart({
cartId: id,
masterId: this.masterId,
@@ -3055,6 +3245,8 @@ export default {
num: number,
isPack: isPack === "true" ? true : false,
isGift: isGift === "true" ? true : false,
+ isPrint,
+ isWaitCall,
...par,
}).then((res) => {
this.$set(this.order.list, this.order.selIndex, {
@@ -3107,7 +3299,7 @@ export default {
// },
//右侧控制按钮点击事件
- orderBtnsClick(key) {
+ async orderBtnsClick(key) {
const orderGoods = this.order.list[this.order.selIndex];
if (this.key != "isJieZhang" && this.payAfter) {
this.createOrderClose();
@@ -3132,6 +3324,27 @@ export default {
if (key === "del") {
return this.removeCart();
}
+ if (key === "print") {
+ const isPrint = orderGoods.isPrint;
+ this.updateOrder({ isPrint: !isPrint });
+ return;
+ }
+ if (key === "isWaitCall") {
+ const isWaitCall = orderGoods.isWaitCall;
+ this.updateOrder({ isWaitCall: !isWaitCall });
+ return;
+ }
+ if (key == "AllWaitCall") {
+ await $waitCall({
+ orderId:this.createOrder.data.id,
+ masterId:this.masterId,
+ tableId:this.table.tableId,
+ isWaitCall: !this.isAllWaitCall?1:0
+ })
+ this.isAllWaitCall=!this.isAllWaitCall;
+ this.getCart()
+ return;
+ }
if (key === "save") {
this.prveOrder.list.push({
cart: this.order.list,
@@ -3532,6 +3745,7 @@ export default {
tableId: this.table.tableId,
num: this.skuGoods.number, // 0会删除此商品
isPack: false, // 是否打包
+ isWaitCall:this.isAllWaitCall //是否等叫
});
this.orderListPush({ ...res, specSnap: name });
// this.orderListPush({
@@ -3637,6 +3851,7 @@ export default {
},
reset() {
// this.goods.list = [];
+ this.guazhangRen = "";
this.order.status = "";
this.loading = false;
this.table = "";
@@ -3671,7 +3886,8 @@ export default {
//设置购物车数据
setCart(res) {
console.log(res);
- const { seatFee } = res;
+ try {
+ const { seatFee } = res;
this.order.seatFee = seatFee
? {
...seatFee,
@@ -3690,6 +3906,32 @@ export default {
this.order.old.list = oldCart ? oldCart : [];
// this.order.gift.list = returnGiftArr(res.records);
console.log(this.order.old.list);
+ } catch (error) {
+ //当购物车数据发生错误时会导致页面报错购物车商品不展示
+ this.$confirm('购物车数据结构错误,是否清空购物车商品?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ $clearCart({
+ masterId: this.masterId,
+ tableId: this.table.tableId,
+ }).then((res) => {
+ this.order.list = [];
+ this.changeOrderSel(-1);
+ this.$message({
+ type: "success",
+ message: "清除成功!",
+ });
+ });
+ }).catch(() => {
+ this.$message({
+ type: 'info',
+ message: '已取消'
+ });
+ });
+ }
+
},
//获取购物车数据
async getCart() {
@@ -3833,6 +4075,7 @@ export default {
tableId: this.table.tableId,
num: item.specList[0].suit, // 0会删除此商品
isPack: false, // 是否打包
+ isWaitCall:this.isAllWaitCall //是否等叫
});
this.orderListPush(res);
}
@@ -4114,9 +4357,7 @@ input[type="number"]::-webkit-outer-spin-button {
background-color: #fff;
height: 100%;
}
-::v-deep .el-button--text {
- // color: #000;
-}
+
::v-deep .meal_box .el-button-group {
width: 100%;
display: flex;
@@ -4635,13 +4876,6 @@ input[type="number"]::-webkit-outer-spin-button {
background-color: #fff;
border: 1px solid #dcdfe6;
}
-::v-deep .el-checkbox__input.is-checked .el-checkbox__inner {
- // background-color: #22bf64;
- // border-color: #22bf64;
-}
-::v-deep .el-checkbox__input.is-checked + .el-checkbox__label {
- // color: #22bf64;
-}
::v-deep .tag-group .el-tag--dark {
background: rgba(34, 191, 100, 0.1);
diff --git a/src/views/tool/Instead/util.js b/src/views/tool/Instead/util.js
index 7d61c8a..3c49399 100644
--- a/src/views/tool/Instead/util.js
+++ b/src/views/tool/Instead/util.js
@@ -218,4 +218,14 @@ export function returnCouponAllPrice(coupArr, goodsArr, vipUser) {
const poductAllprice=returnProductCouponAllPrice(coupArr, goodsArr, vipUser)
const pointAllPrice=returnFullReductionCouponAllPrice(coupArr)
return (poductAllprice*1+pointAllPrice*1).toFixed(2);
+}
+
+//返回购物车商品价格
+export function returnCartPrice(goods, vipUser) {
+ const price=goods.price||goods.salePrice
+ if(!vipUser||!vipUser.id ||!vipUser.isVip){
+ return price
+ }
+ const memberPrice = goods.memberPrice ? goods.memberPrice :price;
+ return memberPrice
}
\ No newline at end of file