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 }}位 - -
+ +
{ 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();