问题修复

This commit is contained in:
2025-12-01 10:50:08 +08:00
parent 0c5ba4b092
commit d2ba7af340
14 changed files with 346 additions and 201 deletions

View File

@@ -161,6 +161,7 @@
@tapweigh="tapweigh($event, goodsIndex)"
:data="goodsItem"
:limitTimeDiscount="data.limitTimeDiscount"
:carsProductIdNumberMap="carsProductIdNumberMap"
></cart-goods-item>
</view>
</view>
@@ -208,6 +209,7 @@
@reduce="goodsUpdate($event, goodsIndex, false)"
:index="index"
@tapweigh="tapweigh($event, goodsIndex)"
:carsProductIdNumberMap="carsProductIdNumberMap"
:data="goodsItem"
></cart-goods-item>
</view>
@@ -249,7 +251,7 @@
:orderInfo="data.orderInfo"
:historyOrder="data.historyOrder"
:tableCode="data.table.tableCode"
@clear="cleaCart"
@clear="clearCart"
></my-car>
</view>
</template>
@@ -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;
}