From 5f1688173fd9bfbb352068ec0cfe61580102c67f Mon Sep 17 00:00:00 2001
From: YeMingfei666 <1619116647@qq.com>
Date: Thu, 19 Sep 2024 10:53:03 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E5=AE=A2=E4=B8=8B=E5=8D=95=E5=A2=9E?=
=?UTF-8?q?=E5=8A=A0=E5=B0=B1=E9=A4=90=E7=B1=BB=E5=9E=8B=E5=88=87=E6=8D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/table.js | 16 +-
src/views/table/components/table-diancan.vue | 208 ++++++++++++++-----
src/views/table/table_list.vue | 18 ++
3 files changed, 193 insertions(+), 49 deletions(-)
diff --git a/src/api/table.js b/src/api/table.js
index 88e39e2..9a99460 100644
--- a/src/api/table.js
+++ b/src/api/table.js
@@ -1,6 +1,11 @@
// 桌台管理
import request from "@/utils/request";
-
+//就餐形式,默认堂食后付费
+const useType='dine-in-after'
+function getUseType(){
+ const type=localStorage.getItem("useType")
+ return type?type:useType
+}
/**
* 台桌列表
* @returns
@@ -133,6 +138,7 @@ export function getCart(params) {
method: "get",
params:{
shopId: localStorage.getItem("shopId"),
+ useType: getUseType(),
...params
}
});
@@ -162,6 +168,7 @@ export function addCart(data) {
method: "post",
data:{
shopId: localStorage.getItem("shopId"),
+ useType: getUseType(),
...data
}
});
@@ -177,6 +184,7 @@ export function $clearCart(data) {
method: "delete",
data:{
shopId: localStorage.getItem("shopId"),
+ useType: getUseType(),
...data
}
});
@@ -192,6 +200,7 @@ export function $removeCart(data) {
method: "delete",
data:{
shopId: localStorage.getItem("shopId"),
+ useType: getUseType(),
...data
}
});
@@ -234,6 +243,7 @@ export function $getMasterId(data) {
method: "get",
params:{
shopId: localStorage.getItem("shopId"),
+ useType: getUseType(),
...data
}
});
@@ -262,6 +272,7 @@ export function $createOrder(data) {
method: "post",
data:{
shopId: localStorage.getItem("shopId"),
+ useType: getUseType(),
...data
}
});
@@ -278,6 +289,7 @@ export function $cacheOrder(data) {
method: "post",
data:{
shopId: localStorage.getItem("shopId"),
+ useType: getUseType(),
...data
}
});
@@ -293,6 +305,7 @@ export function $getCacheOrder(data) {
method: "get",
params:{
shopId: localStorage.getItem("shopId"),
+ useType: getUseType(),
...data
}
});
@@ -362,6 +375,7 @@ export function $choseCount(data) {
method: "put",
data:{
shopId: localStorage.getItem("shopId"),
+ useType: getUseType(),
...data
}
});
diff --git a/src/views/table/components/table-diancan.vue b/src/views/table/components/table-diancan.vue
index 3f188c9..df18fdf 100644
--- a/src/views/table/components/table-diancan.vue
+++ b/src/views/table/components/table-diancan.vue
@@ -12,7 +12,8 @@
{{ title }}
-
+
+
+
+ {{ postPay ? "后付费" : "先付费" }}
+
+
+
+
+ {{ item.name }}
+
+
-
- 就餐人数:{{ perpole }}位
-
-
+
+
+ 就餐人数:{{ perpole }}位
+
+
+
+
+
+ 就餐人数:-位
+
+
+
{
const bTotal = b.info
- .filter((v) => v.isGift !== "true"&& v.status !== "return")
+ .filter((v) => v.isGift !== "true" && v.status !== "return")
.reduce((prve, cur) => {
return prve + cur.number * cur.salePrice;
}, 0);
@@ -1329,7 +1376,7 @@ export default {
.reduce((a, b) => {
return a + b.number * b.salePrice;
}, 0);
- return (oldPrice + price+this.order.seatFee.totalAmount*1).toFixed(2);
+ return (oldPrice + price + this.order.seatFee.totalAmount * 1).toFixed(2);
},
allNumber() {
const oldNumber = this.order.old.list.reduce((a, b) => {
@@ -1374,8 +1421,12 @@ export default {
},
},
watch: {
- perpole(newval,oldval) {
- if (!oldval&&newval&&this.table.tableId) {
+ "useTypes.sel": function (newval, oldval) {
+ this.setPostPay();
+ this.setUseType();
+ },
+ perpole(newval, oldval) {
+ if (!oldval && newval && this.table.tableId) {
// $choseCount({
// masterId: this.masterId,
// tableId: this.table.tableId,
@@ -1386,9 +1437,9 @@ export default {
}
},
table(oldval, newval) {
- if(oldval&&newval) {
- this.onTableChange()
- }
+ if (oldval && newval) {
+ this.onTableChange();
+ }
// if (oldval && newval) {
// console.log(oldval, newval);
// $choseTable({
@@ -1407,8 +1458,8 @@ export default {
}
},
"vipUser.id": async function (val) {
- if(!this.table.tableId){
- return
+ if (!this.table.tableId) {
+ return;
}
let masterId = this.order.masterId;
if (!masterId) {
@@ -1533,17 +1584,60 @@ export default {
// this.getCategory();
// this.refToggle('refScanCode',true)
// this.refToggle("refDiscount", true);
+ this.getShopInfo();
},
methods: {
+ //设置用餐类型
+ setUseType() {
+ // 自取
+ if (this.useTypes.sel == "takeout") {
+ localStorage.setItem("useType", "takeout");
+ } else {
+ //堂食
+ localStorage.setItem(
+ "useType",
+ `dine-in-${this.postPay ? "after" : "before"}`
+ );
+ }
+ },
+ //设置先付后付
+ setPostPay() {
+ // 自取
+ // postPay true 后付 false 先付
+
+ if (this.useTypes.sel == "takeout") {
+ this.postPay = false;
+ } else {
+ //munchies 先付 restaurant 后付
+ this.postPay = this.shopInfo.registerType == "munchies" ? false : true;
+ }
+ },
+ //获取店铺信息
+ async getShopInfo() {
+ try {
+ const shopId = localStorage.getItem("shopId");
+ const res = await tbShopInfo(shopId);
+ this.shopInfo = res;
+ this.setPostPay();
+ this.setUseType();
+ } catch (error) {}
+ },
+ //更改就餐方式
+ changeUseType(type) {
+ if(this.order.old.list.length > 0){
+ return this.$message('下单后不支持更改就餐方式');
+ }
+ this.useTypes.sel = type;
+ },
//更改就餐人数
- changePerpole(){
+ changePerpole() {
$choseCount({
- masterId: this.masterId,
- tableId: this.table.tableId,
- num: this.perpole,
- }).then(res=>{
- this.order.seatFee=res
- })
+ masterId: this.masterId,
+ tableId: this.table.tableId,
+ num: this.perpole,
+ }).then((res) => {
+ this.order.seatFee = res;
+ });
},
//台桌变化时重新获取取餐号、购物车数据,如果是正在结账状态,创建订单到待支付页面
async onTableChange() {
@@ -1555,11 +1649,11 @@ export default {
}
},
// 获取台桌详情
- async getTableDetail(){
- const res=await tbShopTableGet({
- qrcode:this.table.tableId
- })
- console.log(res)
+ async getTableDetail() {
+ const res = await tbShopTableGet({
+ qrcode: this.table.tableId,
+ });
+ console.log(res);
},
//打印制作单
printOrder() {
@@ -1587,7 +1681,7 @@ export default {
tableId: this.table.tableId,
});
this.order.selGoods.status = "return";
- this.order.old.selIndex=-1;
+ this.order.old.selIndex = -1;
console.log(this.order.selGoods);
},
// 台桌列表
@@ -1596,7 +1690,7 @@ export default {
const { content, total } = await tbShopTableGet({
shopId: localStorage.getItem("shopId"),
});
- this.tableList = content.filter(v=>v.status!='closed');
+ this.tableList = content.filter((v) => v.status != "closed");
} catch (error) {
console.log(error);
}
@@ -1607,8 +1701,7 @@ export default {
},
chooseDinersNumberConfirm(e) {
this.perpole = e;
- this.changePerpole()
-
+ this.changePerpole();
},
//扫码支付弹窗确认
scanPayConfirm(code) {
@@ -2443,7 +2536,7 @@ export default {
this.order.selPlaceNum = -1;
this.order.old.list = [];
this.order.selGoods = "";
- this.order.seatFee={totalAmount:0}//餐位费
+ this.order.seatFee = { totalAmount: 0 }; //餐位费
this.prveOrder.list = [];
this.prveOrder.selIndex = -1;
this.order.old.selIndex = -1;
@@ -2461,21 +2554,22 @@ export default {
this.key = "";
this.order.orderId = "";
this.perpole = "";
+ this.useTypes.sel='dine-in'
},
//获取购物车数据
async getCart() {
- console.log(this.table)
+ console.log(this.table);
const res = await getCart({
...this.order.query,
masterId: this.masterId,
tableId: this.table.tableId,
});
- this.order.seatFee=res.seatFee?res.seatFee:this.order.seatFee;
- this.perpole=res.seatFee?res.seatFee.totalNumber:1;
- const nowCart=res.records.find((v) => v.placeNum == 0);
- this.order.list=nowCart?nowCart.info:[];
- const oldCart=res.records.filter((v) => v.placeNum != 0);
- this.order.old.list=oldCart?oldCart:[];
+ this.order.seatFee = res.seatFee ? res.seatFee : this.order.seatFee;
+ this.perpole = res.seatFee ? res.seatFee.totalNumber : 1;
+ const nowCart = res.records.find((v) => v.placeNum == 0);
+ this.order.list = nowCart ? nowCart.info : [];
+ const oldCart = res.records.filter((v) => v.placeNum != 0);
+ this.order.old.list = oldCart ? oldCart : [];
// if (this.key|| res.records.length) {
// this.order.old.list = res.records;
// } else {
@@ -2739,11 +2833,16 @@ export default {
// this.getCart();
// }
// this.changePerpole()
- await $choseCount({
+
+ if (!this.shopInfo.isTableFee) {
+ //不免餐位费
+ await $choseCount({
masterId: this.masterId,
tableId: this.table.tableId,
num: this.perpole,
- })
+ });
+ }
+
this.getCart();
this.getGoods();
this.getCategory();
@@ -2827,6 +2926,19 @@ input[type="number"]::-webkit-outer-spin-button {
::v-deep .el-button--text {
// color: #000;
}
+::v-deep .meal_box .el-button-group {
+ width: 100%;
+ display: flex;
+}
+::v-deep .meal_box .el-button-group .el-button {
+ flex: 1;
+}
+::v-deep .meal_box .el-button-group .active {
+ border: 1px solid #409eff !important;
+ color: #409eff !important;
+ background: rgba(24, 144, 255, 0.1) !important;
+ z-index: 10;
+}
::v-deep .number-box .el-input__inner {
border: none;
padding: 0 4px;
diff --git a/src/views/table/table_list.vue b/src/views/table/table_list.vue
index ae6dd4b..d4fc486 100644
--- a/src/views/table/table_list.vue
+++ b/src/views/table/table_list.vue
@@ -223,6 +223,7 @@ import downloadTableCode from "./components/downloadTableCode";
import tableDiancan from "./components/table-diancan.vue";
import $status from "./status.js";
import chooseDinersNumber from "./components/table-diancan-components/choose-diners-number.vue";
+import { tbShopInfo } from "@/api/user";
import {
tbShopTableGet,
@@ -251,10 +252,13 @@ export default {
status: $status,
selTable: "", //当前选中的桌台
areaMap: {},
+ shopInfo:{},
};
},
mounted() {
this.tbShopAreaGet();
+ this.getShopInfo()
+
},
filters: {
formatTime(time) {
@@ -262,6 +266,15 @@ export default {
},
},
methods: {
+ //获取店铺信息
+ async getShopInfo() {
+ try {
+ const shopId = localStorage.getItem("shopId");
+ const res = await tbShopInfo(shopId);
+ this.shopInfo=res
+ console.log(res)
+ } catch (error) {}
+ },
// 清台
cleanTableHandle(item) {
this.$confirm("确定要清台:"+item.name, "提示", {
@@ -308,6 +321,11 @@ export default {
//key isAddGoods 加菜
//key isPayOrder结账
this.selTable = item;
+ if(this.shopInfo.isTableFee){
+ //免餐位费
+ this.$refs.diancan.open(item, key, '');
+ return
+ }
const num = item.useNum || 0;
if (item.useNum <= 0) {
return this.$refs.refChooseDinersNumber.open();