From d2ba7af3405a679628ff637395ac858b8d62f2ba Mon Sep 17 00:00:00 2001
From: YeMingfei666 <1619116647@qq.com>
Date: Mon, 1 Dec 2025 10:50:08 +0800
Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
commons/utils/hasPermission.js | 1 +
commons/utils/infoBox.js | 2 +-
http/yskApi/http.js | 17 +-
pagesCreateOrder/index/components/car.vue | 16 +-
.../index/components/cart-goods-item.vue | 38 +++-
pagesCreateOrder/index/index.vue | 198 ++++++++----------
.../table-order/components/choose-tables.vue | 14 +-
.../table-order/components/controls.vue | 36 +++-
.../table-order/components/goods-list.vue | 54 ++++-
pagesCreateOrder/table-order/index.vue | 145 +++++++++----
pagesCreateOrder/util.js | 2 +-
pagesOrder/detail/detail.vue | 2 +-
pagesOrder/pay-order/pay-order.vue | 4 +
stores/cart.js | 18 +-
14 files changed, 346 insertions(+), 201 deletions(-)
diff --git a/commons/utils/hasPermission.js b/commons/utils/hasPermission.js
index 8372d7c..9277ffe 100644
--- a/commons/utils/hasPermission.js
+++ b/commons/utils/hasPermission.js
@@ -143,6 +143,7 @@ export async function hasPermission(params) {
if(loginType=='0'){
return true
}
+ return true;
params = returnFormatParams(params)
if (!params) {
return infoBox.showToast('未找到相关权限,请检查代码或在权限配置文件commons/utils/hasPermission.js文件进行修改或增加')
diff --git a/commons/utils/infoBox.js b/commons/utils/infoBox.js
index 6b57f3f..b3ab4ed 100644
--- a/commons/utils/infoBox.js
+++ b/commons/utils/infoBox.js
@@ -25,7 +25,7 @@ const model = {
// error类型的提示
showErrorToast: (title, duration) => {
- return model.showToast(title, duration, {icon: 'error'})
+ return model.showToast(title, duration, {icon: 'none'})
},
showLoading: (title = '请稍后' ) => {
diff --git a/http/yskApi/http.js b/http/yskApi/http.js
index 99e8cac..cc84443 100644
--- a/http/yskApi/http.js
+++ b/http/yskApi/http.js
@@ -92,7 +92,6 @@ function commonsProcess(showLoading, httpReqCallback) {
return Promise.reject(bodyData); // 跳转到catch函数
}
-
// http响应码不正确
if (statusCode != 200 && statusCode != 204 && statusCode != 201) {
isShowErrorToast = true;
@@ -101,19 +100,25 @@ function commonsProcess(showLoading, httpReqCallback) {
infoBox.showToast(data.message || "服务器异常");
return Promise.reject(bodyData); // 跳转到catch函数
}
+
// 构造请求成功的响应数据
if (bodyData.code == 501) {
return Promise.reject(bodyData); // 跳转到catch函数
}
+ if(data.code!==200){
+ return Promise.reject(bodyData); // 跳转到catch函数
+ }
if (data.code == 200 && data.data === null) {
return Promise.resolve(true);
}
+
return Promise.resolve(bodyData.data);
})
.catch((res) => {
+ console.log('res', res);
if (res.code == 401 || res.code == 501) {
storageManage.token(null, true);
- infoBox.showErrorToast(res.message || "请登录").then(() => {
+ infoBox.showErrorToast(res.message || res.msg || "请登录").then(() => {
uni.redirectTo({
url: "/pages/login/index",
});
@@ -122,16 +127,12 @@ function commonsProcess(showLoading, httpReqCallback) {
}
if (res.status == 500) {
- infoBox.showErrorToast(res.message || "服务器异常").then(() => {});
+ infoBox.showErrorToast(res.message ||res.msg || "服务器异常").then(() => {});
}
+ infoBox.showErrorToast(res.message||res.msg || "服务器异常").then(() => {});
reqFinishFunc(); // 请求完毕的动作
- // 如果没有提示错误, 那么此处提示 异常。
- if (!isShowErrorToast) {
- infoBox.showErrorToast(`请求网络异常`);
- }
-
return Promise.reject(res);
})
.finally(() => {
diff --git a/pagesCreateOrder/index/components/car.vue b/pagesCreateOrder/index/components/car.vue
index 037c98f..dbcdb1c 100644
--- a/pagesCreateOrder/index/components/car.vue
+++ b/pagesCreateOrder/index/components/car.vue
@@ -94,7 +94,7 @@
{{ item.number }}
-
+
+
+
+
= 1) {
newOldRes = await createOrder({
shopId: uni.getStorageSync("shopId"), //店铺Id
@@ -600,6 +605,7 @@ async function workerConfirm() {
vipPrice: false, //是否使用会员价
limitRate: null,
subStatus: subStatus.value,
+ orderId: props.orderInfo.id?props.orderInfo.id:"",
});
if (!newOldRes) {
return infoBox.showToast("创建订单失败");
@@ -607,6 +613,7 @@ async function workerConfirm() {
}
form.workerAccount = "";
+ subStatus.value = servingStyles[0].value
go.to("PAGES_TABLE_ORDER", {
orderId: newOldRes ? newOldRes.id : props.orderInfo.id,
});
@@ -729,11 +736,12 @@ function touchend(e) {
}
function clear() {
+ edmits("clear", modal.key);
+ setModalShow("clear", false);
if (modal.type == "cart") {
hideGoods();
}
- setModalShow("clear", false);
- edmits("clear", modal.type);
+
// setModalShow('clear', false)
// edmits('clear')
diff --git a/pagesCreateOrder/index/components/cart-goods-item.vue b/pagesCreateOrder/index/components/cart-goods-item.vue
index f5e16a8..b33a5fe 100644
--- a/pagesCreateOrder/index/components/cart-goods-item.vue
+++ b/pagesCreateOrder/index/components/cart-goods-item.vue
@@ -138,7 +138,20 @@
-
+
+
+
+
+
+
+ {{ carsProductIdNumberMap[data.id] }}
+
+
+
-
+
{{ data.name }}
@@ -182,7 +195,9 @@
¥{{ data.lowPrice }}
- ¥{{ data.lowPrice }}
+
+ ¥{{ data.lowPrice }}
+
@@ -197,6 +212,7 @@ const yskUtils = inject("yskUtils");
const shopInfo = inject("shopInfo");
dayjs.extend(isBetween);
import { onLoad } from "@dcloudio/uni-app";
+import { defaultTo } from "lodash";
const props = defineProps({
limitTimeDiscount: {
type: Object,
@@ -246,6 +262,12 @@ const props = defineProps({
type: Number,
default: 20,
},
+ carsProductIdNumberMap: {
+ type: Object,
+ default: () => {
+ return {};
+ },
+ },
});
watch(
@@ -298,7 +320,7 @@ const limitPrice = computed(() => {
return 0;
}
const price = yskUtils.limitUtils.returnPrice({
- goods: props.data,
+ goods: props.data,
shopInfo: shopInfo,
limitTimeDiscountRes: props.limitTimeDiscount,
shopUserInfo: null,
@@ -383,7 +405,7 @@ function emitEvent(emitName) {
}
.btn {
- background: #FE4F1E;
+ background: #fe4f1e;
border-radius: 16rpx;
font-size: 32rpx;
font-weight: bold;
@@ -434,7 +456,7 @@ function emitEvent(emitName) {
z-index: 2;
}
.limit-discount {
- background-color: #FEB41E;
+ background-color: #feb41e;
padding: 16rpx 44rpx;
white-space: nowrap;
text-align: center;
@@ -453,4 +475,4 @@ function emitEvent(emitName) {
text-decoration: line-through;
color: #999;
}
-
\ No newline at end of file
+
diff --git a/pagesCreateOrder/index/index.vue b/pagesCreateOrder/index/index.vue
index 98a9276..63b4213 100644
--- a/pagesCreateOrder/index/index.vue
+++ b/pagesCreateOrder/index/index.vue
@@ -161,6 +161,7 @@
@tapweigh="tapweigh($event, goodsIndex)"
:data="goodsItem"
:limitTimeDiscount="data.limitTimeDiscount"
+ :carsProductIdNumberMap="carsProductIdNumberMap"
>
@@ -208,6 +209,7 @@
@reduce="goodsUpdate($event, goodsIndex, false)"
:index="index"
@tapweigh="tapweigh($event, goodsIndex)"
+ :carsProductIdNumberMap="carsProductIdNumberMap"
:data="goodsItem"
>
@@ -249,7 +251,7 @@
:orderInfo="data.orderInfo"
:historyOrder="data.historyOrder"
:tableCode="data.table.tableCode"
- @clear="cleaCart"
+ @clear="clearCart"
>
@@ -361,7 +363,9 @@ import yskUtils from "@/lib/index";
provide("yskUtils", yskUtils);
import { useAccountStore } from "@/stores/account";
+import { useCartStore } from "@/stores/cart";
const accountStore = useAccountStore();
+const cartStore = useCartStore();
provide("accountStore", accountStore);
@@ -406,7 +410,15 @@ const tapweigh = (foodsindex, index) => {
};
// wx拿到的数据
-const cars = reactive([]);
+const cars = ref([]);
+//购物中车的商品对应的数量
+const carsProductIdNumberMap = computed(() => {
+ return cars.value.reduce((prev, cur) => {
+ const productId = cur.product_id;
+ prev[productId] = (prev[productId] || 0) + cur.number * 1;
+ return prev;
+ }, {});
+});
const layout = reactive({
listMap: {
default: {
@@ -496,7 +508,10 @@ function showDetail(goods) {
function onMessage() {
websocketUtil.offMessage();
websocketUtil.onMessage(async (res) => {
+ cartStore.onMessage(res);
let msg = JSON.parse(res);
+
+ console.log("indexonMessage===", msg);
let cartItem;
let cartArr = [];
if (msg.msg_id) {
@@ -523,9 +538,12 @@ function onMessage() {
return prve;
}, []);
}
+ if (msg.type == "bc") {
+ initCart();
+ }
switch (msg.operate_type) {
case "pad_init":
- cars.length = 0;
+ cars.value = [];
if (!data.table.tableCode) {
data.table.tableCode = msg.table_code;
uni.setStorageSync("msg_id", msg.msg_id);
@@ -560,6 +578,11 @@ function onMessage() {
// infoBox.showToast('操作成功')
break;
case "pad_edit":
+ cartItem = getNowCart(msg.data, cartArr);
+ console.log(cartItem);
+
+ cartControls(cartItem, "edit");
+ break;
case "edit":
cartItem = getNowCart(msg.data, cartArr);
cartControls(cartItem, "edit");
@@ -571,13 +594,9 @@ function onMessage() {
cartControls(cartItem, "del");
break;
case "pad_cleanup":
+ cars.value = [];
case "cleanup":
- cars.length = 0;
- for (let i in data.tabbar) {
- for (let k in data.tabbar[i].foods) {
- data.tabbar[i].foods[k].chooseNumber = 0;
- }
- }
+ cars.value = [];
getHistoryOrderDetail();
break;
case "init":
@@ -627,7 +646,8 @@ async function getHistoryOrderDetail() {
let res = await getHistoryOrder({
tableCode: data.table.tableCode,
});
- if (!res.id) {
+ if (!res.id || (res && res.status != "unpaid")) {
+ data.orderInfo = {};
return;
}
data.orderInfo = res;
@@ -686,7 +706,7 @@ function cartControls(cartItem, type) {
let cartIndex = 0;
let product_id = cartItem.product_id;
// console.log(cars, 'cars值,看id是否与cartItem匹配')
- cars.map((item, index) => {
+ cars.value.map((item, index) => {
if (item.id == cartItem.id) {
cartIndex = index;
product_id = item.product_id;
@@ -694,10 +714,6 @@ function cartControls(cartItem, type) {
}
});
let $goods;
- console.log("layoutData.list", layoutData.list);
- console.log("type", type);
- console.log(cartItem, "cartItemid");
- console.log(product_id, "product_id");
layoutData.list.forEach((ele) => {
ele.productList.forEach((res) => {
if (res.id == product_id) {
@@ -708,23 +724,18 @@ function cartControls(cartItem, type) {
if (type == "del") {
console.log("del", $goods);
- cars.splice(cartIndex, 1);
- if ($goods) $goods.chooseNumber = 0;
+ cars.value.splice(cartIndex, 1);
return;
}
if (type == "add") {
- cars.push(cartItem);
+ cars.value.push(cartItem);
if ($goods) {
- $goods.chooseNumber = cartItem.number;
- console.log("$goods", $goods);
- console.log("cartItem", cartItem);
}
}
if (type == "edit") {
editItem.value = $goods;
- cars[cartIndex].number = cartItem.number;
+ cars.value[cartIndex].number = cartItem.number;
if ($goods) {
- $goods.chooseNumber = cartItem.number;
}
}
}
@@ -814,13 +825,6 @@ function setTabBar(category, goods, carsC) {
prve[cur.categoryId].push(cur);
return prve;
}, {});
- const chooseGoodsNumberMap = carsC.reduce((prve, cur) => {
- if (!prve.hasOwnProperty(cur.productId)) {
- prve[cur.productId] = 0;
- }
- prve[cur.productId] += cur.number;
- return prve;
- }, {});
let tabbar = category.map((v) => {
const foods = goodsCategoryMap[v.id] || [];
return {
@@ -828,24 +832,12 @@ function setTabBar(category, goods, carsC) {
foods: foods.map((fgoods, index) => {
return {
...fgoods,
- chooseNumber: chooseGoodsNumberMap[fgoods.id],
price: fgoods.lowPrice,
isDan: fgoods.typeEnum !== "sku",
};
}),
};
});
- // tabbar.push({
- // name: '附加费',
- // foods: [{
- // name: "餐位费",
- // price:$shop.value.tableFee,
- // chooseNumber: 0,
- // isSeatFee:true,
- // isDan: true
- // }
- // ]
- // })
tabbar = tabbar.filter((v) => {
return v.foods.length;
});
@@ -948,16 +940,27 @@ function setUser(par) {
/**
* 清除购物车
*/
-async function cleaCart(e) {
+async function clearCart(e) {
+ console.log("clearCart===", e);
+
if (e == "cart") {
let params = {
...data.socketData,
operate_type: "cleanup",
table_code: data.table.tableCode,
};
- console.log("购物车清空菜品参数===", params);
websocketUtil.send(JSON.stringify(params));
+ // websocketUtil.send(
+ // JSON.stringify({
+ // ...data.socketData,
+ // operate_type: "init",
+ // table_code: data.table.tableCode,
+ // })
+ // );
} else if (e == "allHistoryOrder") {
+ if (!data.orderInfo.id) {
+ return;
+ }
await cancelOrder({
orderId: data.orderInfo.id,
shopId: uni.getStorageSync("shopId"),
@@ -987,12 +990,7 @@ async function cleaCart(e) {
}
//点击清空购物车
async function onClearCart() {
- cars.length = 0;
- for (let i in layoutData.list) {
- for (let k in layoutData.list[i].productList) {
- layoutData.list[i].productList[k].chooseNumber = 0;
- }
- }
+ cars.value = [];
}
let $originGoods = [];
@@ -1074,17 +1072,7 @@ async function getGoodsData(max = 6, isGetPrve = false) {
: "6-grid",
productList: res2.productList.map((v) => {
v.salePrice = v.lowPrice;
- const findGoodsInCar = cars.find((cars) => {
- return cars.productId == v.id;
- });
- if (findGoodsInCar) {
- return {
- ...v,
- chooseNumber: findGoodsInCar.number,
- };
- } else {
- return v;
- }
+ return v;
}),
hasAjax: true,
};
@@ -1164,10 +1152,7 @@ async function init() {
if (option.type == "add") {
setTabBar($category, $originGoods, []);
}
- let shopInfo = await getShopInfo({
- id: uni.getStorageSync("shopInfo").id,
- });
- uni.setStorageSync("shopInfo", shopInfo);
+ let shopInfo = accountStore.shopInfo;
// 获取布局
// const getLayoutData = await getLayout({})
// 获取分类数据-获取商品分类
@@ -1227,12 +1212,12 @@ async function init() {
});
$originGoods = goods;
if (option.type == "add") {
- cars.length = 0;
+ cars.value = [];
initCart();
setTabBar($category, goods, []);
return;
}
- setTabBar($category, goods, cars);
+ setTabBar($category, goods, cars.value);
initCart();
}
@@ -1247,7 +1232,6 @@ function categoryEleInit() {
getElRect("u-tab-item" + i, instance.value, {
rect: true,
}).then((res) => {
- console.log(res);
tabsEle.tabsItems[i] = {
width: res.width,
left: res.left,
@@ -1259,10 +1243,7 @@ function categoryEleInit() {
const surcharge = ref(null);
function surchargeConfirm(e) {
- data.tabbar[data.tabbar.length - 1].foods.unshift({
- ...e,
- chooseNumber: 0,
- });
+ data.tabbar[data.tabbar.length - 1].foods.unshift(e);
}
function surchargeShow() {
@@ -1653,7 +1634,7 @@ async function guigeConfirm(sku, number, is_time_discount) {
if (res) {
//更新
let { index } = res;
- let carGoods = cars[index];
+ let carGoods = cars.value[index];
let cartId = carGoods.id;
let newNumber = carGoods.number * 1 + suitNum;
let suitNum = goods.skuList[0].suitNum || 1;
@@ -1712,7 +1693,7 @@ const $cacheGoods = {};
//修改购物车商品备注
function updateCartRemark(e) {
let { remark, index, goods } = e;
- cars[index].note = remark;
+ cars.value[index].note = remark;
let params = {
number: e.num,
id: e.goods.id,
@@ -1784,10 +1765,10 @@ async function carsNumberChange(e) {
// 找到该规格商品在购物车中是否存在并返回index值以及对应的数据
function findGoodsInCar($goods, skuId) {
const productId = $goods.id;
- const goodsInCarIndex = cars.findIndex((carsGoods) => {
+ const goodsInCarIndex = cars.value.findIndex((carsGoods) => {
return carsGoods.skuId == skuId && carsGoods.productId == productId;
});
- const carGoods = cars[goodsInCarIndex];
+ const carGoods = cars.value[goodsInCarIndex];
return carGoods
? {
index: goodsInCarIndex,
@@ -1796,16 +1777,6 @@ function findGoodsInCar($goods, skuId) {
: false;
}
-function searchGoodsUpdate(goodsItem, goodsIndex, isAdd) {
- goodsUpdate(goodsItem.goodsIndex, goodsItem.index, isAdd, goodsIndex);
-}
-
-function setSearchGoods(index, chooseNumber) {
- if (index !== undefined) {
- console.log(searchResult.value[index]);
- searchResult.value[index].chooseNumber = chooseNumber;
- }
-}
async function goodsUpdate(
foodsindex,
index,
@@ -1835,7 +1806,7 @@ async function goodsUpdate(
if ($goods.type != "sku") {
const step = isAdd ? 1 : -1;
//增加
- let isShop = cars.find((ele) => ele.product_id == $goods.id);
+ let isShop = cars.value.find((ele) => ele.product_id == $goods.id);
if (isShop) {
let { sku_id, product_id, id, number, discount_sale_amount } = isShop;
// 数量加减
@@ -1848,15 +1819,14 @@ async function goodsUpdate(
operate_type: "del",
};
websocketUtil.send(JSON.stringify(params));
- $goods.chooseNumber = num;
} else {
let suitNum = $goods.skuList[0].suitNum || 1;
if (showCurrentInput) {
//单规格
- let goodsInCarIndex = cars.findIndex((carsGoods) => {
+ let goodsInCarIndex = cars.value.findIndex((carsGoods) => {
return carsGoods.product_id == $goods.skuList[0].productId;
});
- let cartItem = cars[goodsInCarIndex];
+ let cartItem = cars.value[goodsInCarIndex];
num = cartItem.number * 1 + Number(showCurrentInput);
}
@@ -1875,11 +1845,11 @@ async function goodsUpdate(
pack_number: 0, //数量
is_temporary: 0, //是否是临时菜
is_time_discount,
+ is_print: 1,
})
);
// $goods.chooseNumber = 1
- $goods.chooseNumber = num;
}
} else {
// 起售数量
@@ -1904,6 +1874,7 @@ async function goodsUpdate(
pack_number: 0, //数量
is_temporary: 0, //是否是临时菜
is_time_discount,
+ is_print: 1,
};
console.log(params, "发送消息");
websocketUtil.send(JSON.stringify(params));
@@ -1950,12 +1921,12 @@ async function onSelTable() {
const { masterId } = await getMasterId();
data.masterId = masterId;
const cartRes = await getCart();
- cars.length = 0;
+ cars.value = [];
const cartArr = getNowCart(cartRes);
for (let i in cartArr) {
- cars.push(cartArr[i]);
+ cars.value.push(cartArr[i]);
}
- setTabBar($category, $originGoods, cars);
+ setTabBar($category, $originGoods, cars.value);
}
onBeforeUnmount(() => {});
@@ -1966,7 +1937,7 @@ function watchUpdate() {
// data.table = {
// tableId: ""
// }
- cars.length = 0;
+ cars.value = [];
init();
});
// 添加临时菜到购物车
@@ -1988,6 +1959,8 @@ onShow(() => {
if (!data.userInfo.shopName) {
loginShowOut();
}
+
+ getHistoryOrderDetail();
nextTick(() => {
uni.showLoading({
title: "购物车加载中",
@@ -2014,22 +1987,26 @@ let sysInfo = ref({
});
const limitTimeDiscountRes = ref(null);
async function getLimit() {
- const res = await limitTimeDiscountApi.limitTimeDiscount();
- limitTimeDiscountRes.value = res;
- if (data.table.tableCode) {
- data.limitTimeDiscount = limitTimeDiscountRes.value;
+ const res = await limitTimeDiscountApi.limitTimeDiscount({
+ shopId: accountStore.shopId,
+ });
+ if (res && res.id) {
+ limitTimeDiscountRes.value = res;
+ if (data.table.tableCode) {
+ data.limitTimeDiscount = limitTimeDiscountRes.value;
- websocketUtil.send(
- JSON.stringify({
- type: "shopping",
- operate_type: "time_discount_save",
- table_code: data.table.tableCode,
- shop_id: uni.getStorageSync("shopInfo").id,
- operate_type: "time_discount_save",
- data: limitTimeDiscountRes.value,
- })
- );
- console.log("limitTimeDiscount", data.limitTimeDiscount);
+ websocketUtil.send(
+ JSON.stringify({
+ type: "shopping",
+ operate_type: "time_discount_save",
+ table_code: data.table.tableCode,
+ shop_id: uni.getStorageSync("shopInfo").id,
+ operate_type: "time_discount_save",
+ data: limitTimeDiscountRes.value,
+ })
+ );
+ console.log("limitTimeDiscount", data.limitTimeDiscount);
+ }
}
}
@@ -2037,7 +2014,6 @@ async function getTableDetail() {
let res = await $returnTableDetail({
tableCode: data.table.tableCode,
});
- console.log(res, "getTableDetail");
if (res && res.tableCode) {
data.table = res;
}
diff --git a/pagesCreateOrder/table-order/components/choose-tables.vue b/pagesCreateOrder/table-order/components/choose-tables.vue
index ac44257..e9e5b7b 100644
--- a/pagesCreateOrder/table-order/components/choose-tables.vue
+++ b/pagesCreateOrder/table-order/components/choose-tables.vue
@@ -26,7 +26,7 @@
:key="index"
class="item"
@click="itemClick(item)"
- :class="[selItem && selItem.id == item.id ? 'selected' : '']"
+ :class="[selItem && selItem.tableCode == item.tableCode ? 'selected' : '']"
>
@@ -91,7 +91,7 @@ const props = defineProps({
const selItem = ref("");
function itemClick(item) {
- if (selItem.value && selItem.value.id == item.id) {
+ if (selItem.value && selItem.value.tableCode == item.tableCode) {
selItem.value = "";
return;
}
@@ -112,7 +112,7 @@ watch(
() => modelValue.value,
(newVal, oldVal) => {
console.log(newVal, oldVal);
- selItem.value = list.value.find((item) => item.id == newVal);
+ selItem.value = list.value.find((item) => item.tableCode == newVal);
console.log(selItem.value);
if (selItem.value) {
goodsName.value = selItem.value.name;
@@ -123,10 +123,10 @@ watch(
watch(
() => list.value.length,
(newVal, oldVal) => {
- selItem.value = list.value.find((item) => item.id == modelValue.value);
+ selItem.value = list.value.find((item) => item.tableCode == modelValue.value);
console.log(selItem.value);
if (selItem.value) {
- modelValue.value = selItem.value.id;
+ modelValue.value = selItem.value.tableCode;
goodsName.value = selItem.value.name;
}
}
@@ -143,12 +143,12 @@ function confirm() {
});
return;
}
- modelValue.value = selItem.value.id;
+ modelValue.value = selItem.value.tableCode;
show.value = false;
}
async function getTablelist() {
const res = await tableApi.getShopTable({ size: 999 });
- list.value = res.records || [];
+ list.value = (res.records || []).filter((item) => item.tableCode);
}
onMounted(() => {
getTablelist();
diff --git a/pagesCreateOrder/table-order/components/controls.vue b/pagesCreateOrder/table-order/components/controls.vue
index 8619bf0..4924d9f 100644
--- a/pagesCreateOrder/table-order/components/controls.vue
+++ b/pagesCreateOrder/table-order/components/controls.vue
@@ -43,7 +43,7 @@
import { ref, reactive, toRaw, watch, computed ,inject} from "vue";
const accountStore=inject('accountStore')
const cartStore=inject('cartStore')
-const orderBtns = [
+const $orderBtns = [
{
name: "单品改价",
value: "changePrice",
@@ -56,6 +56,22 @@ const orderBtns = [
name: "赠菜",
value: "gift",
},
+ {
+ name: "打包",
+ value: "pack",
+ },
+ // {
+ // name: "等叫",
+ // value: "wait",
+ // },
+ // {
+ // name: "免厨打",
+ // value: "noPrint",
+ // },
+ // {
+ // name: "单品备注",
+ // value: "remark",
+ // },
{
name: "单品上菜",
value: "serve",
@@ -69,9 +85,6 @@ const orderBtns = [
value: "startCooking",
},
];
-const selCart = defineModel("selCart", {
- default: null,
-});
const tableBtns = [
{
name: "换台",
@@ -82,6 +95,21 @@ const tableBtns = [
value: "clearTable",
},
];
+
+
+const payBeforeBtns = ['单品改价','单品转台','赠菜','打包'];
+const orderBtns=computed(()=>{
+ if(cartStore.shopInfo.registerType=='after'){
+ return $orderBtns
+ }
+ return $orderBtns.filter(v=>payBeforeBtns.find(item=>item==v.name))
+
+})
+
+const selCart = defineModel("selCart", {
+ default: null,
+});
+
const servingSel = ref("");
const tableSel = ref("");
const emits = defineEmits(["btnClick"]);
diff --git a/pagesCreateOrder/table-order/components/goods-list.vue b/pagesCreateOrder/table-order/components/goods-list.vue
index c6dd9f0..4bd0a21 100644
--- a/pagesCreateOrder/table-order/components/goods-list.vue
+++ b/pagesCreateOrder/table-order/components/goods-list.vue
@@ -18,9 +18,13 @@
>
{{ item.productName }}
-
+
赠
-
+ 包
+ {{ item.packNumber }}
+
+
- {{ cartStore.packFee }}
+ {{ cartStore.orderCostSummary.packFee }}
@@ -107,12 +111,18 @@ const timer = setInterval(() => {
}, 1000);
//超时时间
-const maxTime = 10 * 60 * 1000;
+const maxTime = cartStore.shopInfo.serveTime*60*1000;
function returnStatusClass(item) {
if (item.subStatus == "DELIVERED") {
return "success";
}
+ if (item.subStatus == "READY_TO_SERVE") {
+ return "warning";
+ }
+ if (item.subStatus == "SENT_OUT") {
+ return "green";
+ }
}
/**
* 返回商品状态文本
@@ -123,7 +133,7 @@ function returnSubStatusText(item) {
return "待起菜";
}
if (item.subStatus == "READY_TO_SERVE") {
- if (item.startOrderTime) {
+ if (item.startOrderTime&&cartStore.shopInfo.isServeTimeControl) {
const maxWaitTime = dayjs(item.startOrderTime).add(
maxTime,
"millisecond"
@@ -215,6 +225,7 @@ function itemClick(item) {
color: #999;
border-color: #999;
background-color: rgba(153, 153, 153, 0.25);
+ position: relative;
&.default {
}
&.timeout {
@@ -227,13 +238,44 @@ function itemClick(item) {
border-color: $my-main-color;
background-color: rgba(63, 158, 255, 0.25);
}
-
+ &.green {
+ $color: rgba(52, 199, 89, 1);
+ border-color: $color;
+ color: $color;
+ background-color: rgba(52, 199, 89, 0.25);
+ }
+ &.warning {
+ $color: #ff8d28;
+ border-color: $color;
+ color: $color;
+ background-color: rgba(255, 141, 40, 0.25);
+ }
&.gift {
$color: rgb(255, 159, 46);
color: $color;
background-color: rgb(255, 240, 223);
border-color: $color;
}
+ &.pack {
+ $color: rgb(49, 138, 254);
+ color: $color;
+ background-color: rgb(49, 138, 254, 0.25);
+ border-color: $color;
+ }
+ .badge {
+ position: absolute;
+ text-align: center;
+ $height:32rpx;
+ line-height: $height;
+ height: $height;
+ top: calc(-#{$height} / 2);
+ right: calc(-#{$height} / 2);
+ width: $height;
+ border-radius: 50%;
+ font-size: 20rpx;
+ color: #fff;
+ background-color: #ff383c;
+ }
}
.old-price {
text-decoration: line-through;
diff --git a/pagesCreateOrder/table-order/index.vue b/pagesCreateOrder/table-order/index.vue
index b102d74..60ae3f5 100644
--- a/pagesCreateOrder/table-order/index.vue
+++ b/pagesCreateOrder/table-order/index.vue
@@ -52,7 +52,7 @@
+
+
+
+
+
@@ -80,22 +91,23 @@
>
-
- 转入类型
-
-
-
-
-
+
+
购物车商品
@@ -130,13 +142,14 @@ import * as areaApi from "@/http/api/area.js";
import yskUtils from "ysk-utils";
import go from "@/commons/utils/go.js";
-import { reactive, ref, provide, computed,inject } from "vue";
-const websocketUtil=inject("websocketUtil")
+import { reactive, ref, provide, computed, inject } from "vue";
+const websocketUtil = inject("websocketUtil");
const cartStore = useCartStore();
const accountStore = useAccountStore();
-cartStore.shopInfo=accountStore.shopInfo;
+cartStore.shopInfo = accountStore.shopInfo;
+websocketUtil.offMessage();
websocketUtil.onMessage((data) => {
cartStore.onMessage(data);
});
@@ -145,6 +158,7 @@ const modalData = reactive({
key: "",
title: "",
form: {
+ packNumber: 0,
personCount: 0,
targetTableCode: "",
checks: [],
@@ -192,35 +206,69 @@ async function transferTable() {
targetTableCode: modalData.form.targetTableCode,
detailIds,
});
+ if (!res) {
+ uni.showModal({
+ title: "转桌失败",
+ icon: "none",
+ });
+ return;
+ }
uni.showToast({
title: "转桌成功",
icon: "none",
});
+ if (modalData.form.type == 2) {
+ await orderApi.cancelOrder({
+ orderId: cartStore.order.id,
+ shopId: cartStore.order.shopId,
+ });
- const orderRes = await orderApi.getHistoryOrder({
- tableCode: modalData.form.targetTableCode,
- });
- if (orderRes) {
- options.orderId = orderRes.id;
- getOrderById();
- modalData.show = false;
- modalData.form.targetTableCode = [];
- modalData.form.checks = [];
- modalData.form.type = 1;
+ const tableRes = await tableApi.getShopTableDetail({
+ tableCode: modalData.form.targetTableCode,
+ });
+ if (tableRes && tableRes.id) {
+ uni.$emit("choose-table", tableRes);
+ }
+ const orderRes = await orderApi.getHistoryOrder({
+ tableCode: modalData.form.targetTableCode,
+ });
+ if (orderRes) {
+ options.orderId = orderRes.id;
+ }
}
+ getOrderById();
+ modalData.show = false;
+ modalData.form.targetTableCode = [];
+ modalData.form.checks = [];
+ modalData.form.type = 1;
}
async function editPersonCount() {
cartStore.personCount = modalData.form.personCount;
modalData.show = false;
}
+
+function editPackNumber() {
+ const par = {
+ id: selCart.value.id,
+ product_id: selCart.value.product_id,
+ sku_id: selCart.value.sku_id,
+ pack_number: modalData.form.packNumber,
+ };
+ modalData.show = false;
+ modalData.form.packNumber = 0;
+ updateCart(par);
+}
async function modalConfirm(key) {
- if (modalData.key == "transferTable") {
+ if (modalData.key == "btnClick") {
transferTable();
}
if (modalData.key == "editPersonCount") {
editPersonCount();
}
+ if (modalData.key == "pack") {
+ editPackNumber();
+ }
}
provide("cartStore", cartStore);
@@ -229,6 +277,13 @@ provide("accountStore", accountStore);
const selCart = ref(null);
+const packNumberMax = computed(() => {
+ if (selCart.value) {
+ return selCart.value.num;
+ }
+ return 0;
+});
+
function back() {
uni.navigateBack();
}
@@ -282,9 +337,19 @@ async function getTablelist() {
tableList.value = res.records || [];
}
async function shopTableClear() {
- const res = await tableApi.shopTableClear({
- id: cartStore.table.id,
+ const res = await orderApi.cancelOrder({
+ orderId: cartStore.order.id,
+ shopId: accountStore.shopInfo.id,
});
+ if (res) {
+ uni.showToast({
+ title: "清台成功",
+ icon: "none",
+ });
+ setTimeout(() => {
+ uni.navigateBack();
+ }, 1500);
+ }
}
async function btnClick(type) {
if (type == "editPersonCount") {
@@ -300,7 +365,7 @@ async function btnClick(type) {
if (type == "clearTable") {
uni.showModal({
title: "提示",
- content: "是否清空该桌订单",
+ content: "该操作会取消未支付的订单,且无法恢复,是否确认清空该桌订单",
success(res) {
if (res.confirm) {
console.log("清空该桌订单");
@@ -310,15 +375,14 @@ async function btnClick(type) {
});
}
if (type == "transfer") {
- modalData.form.type == 1;
+ modalData.form.type = 1;
modalData.title = "转桌";
modalData.show = true;
}
if (type == "changeTable") {
- modalData.form.type == 2;
+ modalData.form.type = 2;
modalData.title = "转桌";
-
modalData.show = true;
}
if (type == "serveAll") {
@@ -332,6 +396,15 @@ async function btnClick(type) {
if (!selCart.value) {
return;
}
+ selCart.value = cartStore.allCartList.find((v) => v.id == selCart.value.id);
+
+ if (type === "pack") {
+ modalData.title = "打包";
+ modalData.key = "pack";
+ modalData.show = true;
+ console.log(selCart.value);
+ modalData.form.packNumber = selCart.value.packNumber;
+ }
if (type == "changePrice") {
showModel("discount");
return;
diff --git a/pagesCreateOrder/util.js b/pagesCreateOrder/util.js
index d66c250..2941f22 100644
--- a/pagesCreateOrder/util.js
+++ b/pagesCreateOrder/util.js
@@ -26,6 +26,7 @@ export function getNowCart(carItem,goodsList,user) {
carItem.packFee = goodsItem.packFee
carItem.type = goodsItem.type
carItem.isGrounding = true;
+ carItem.groupType = goodsItem.groupType
}
carItem.number = parseFloat(carItem.number)
})
@@ -37,7 +38,6 @@ export function getNowCart(carItem,goodsList,user) {
carItem.discount_sale_amount = carItem.discount_sale_amount?carItem.discount_sale_amount*1:0
carItem.discountSaleAmount = carItem.discount_sale_amount
}
- console.log("carItem===",carItem)
return carItem
}
diff --git a/pagesOrder/detail/detail.vue b/pagesOrder/detail/detail.vue
index a7738b1..abdff49 100644
--- a/pagesOrder/detail/detail.vue
+++ b/pagesOrder/detail/detail.vue
@@ -15,7 +15,7 @@
-
+
结账
diff --git a/pagesOrder/pay-order/pay-order.vue b/pagesOrder/pay-order/pay-order.vue
index 73220d0..7755855 100644
--- a/pagesOrder/pay-order/pay-order.vue
+++ b/pagesOrder/pay-order/pay-order.vue
@@ -347,6 +347,9 @@ import {
} from "../quan_util.js";
import { mathFloorPrice } from "@/commons/utils/goodsUtil.js";
import { getDiscountByUserId } from "@/http/yskApi/market/consumeDiscount.js";
+import { useCartStore } from "@/stores/cart.js";
+
+const cartStore = useCartStore();
// import { getCouponList } from '@/http/api/coupon.js'
import { getHistoryOrder } from "@/http/api/order.js";
@@ -1251,6 +1254,7 @@ async function pay(par) {
function paySuccess() {
infoBox.showToast("支付成功");
payStatus = "success";
+ cartStore.personCount=0;
setTimeout(() => {
// uni.$emit('orderDetail:update')
uni.$emit("get:table");
diff --git a/stores/cart.js b/stores/cart.js
index f3d7a9e..ebc261c 100644
--- a/stores/cart.js
+++ b/stores/cart.js
@@ -11,6 +11,7 @@ export function formatCartGoods(goods) {
number: goods.number || goods.num,
isGift: goods.isGift || goods.is_gift || 0,
is_gift: goods.is_gift || goods.isGift || 0,
+ packFee: goods.packFee || goods.packAmount,
};
}
@@ -201,11 +202,10 @@ export const useCartStore = defineStore("cart", {
case "pad_init":
this.cartList = msg.data;
this.limitTimeDiscount = msg.time_dis_info;
+ this.getOrder();
break;
case "pad_add":
case "add":
- cartItem = getNowCart(msg.data, $goods, pageData.user);
- cartControls(cartItem, "add");
break;
case "pad_edit":
break;
@@ -217,28 +217,18 @@ export const useCartStore = defineStore("cart", {
this.getOrder();
break;
case "edit":
- getCart();
break;
case "pad_del":
break;
-
case "del":
- cartItem = getNowCart(msg.data, $goods, pageData.user);
- cartControls(cartItem, "del");
break;
case "pad_cleanup":
case "cleanup":
- goods.list = [];
- $seatFee.totalNumber = 0;
- $seatFee.totalAmount = 0;
- userNumbers.defaultCateIndex = 0;
- init();
+ this.goodsList=[]
break;
case "product_update":
- init();
break;
- case "pad_batch":
- init();
+ case "batch":
break;
}
},