修复点餐反应慢问题,修复库存问题

This commit is contained in:
2025-12-18 11:49:14 +08:00
parent ecff4204e4
commit e4e07f1bd1
2 changed files with 57 additions and 36 deletions

View File

@@ -153,14 +153,16 @@
<view class="Controls" v-else>
<view class="btn" v-if="item.cartNumber != '0'">
<up-icon name="minus-circle-fill" color="#E9AB7A" size="25"></up-icon>
<view class="btnClick"
@tap.stop="$u.throttle(() => singleclick(item, '-'), 500)"></view>
<view class="btnClick" @tap.stop="singleclick(item, '-')"></view>
<!-- <view class="btnClick"
@tap.stop="$u.throttle(() => singleclick(item, '-'), 500)"></view> -->
</view>
<text class="num">{{ ifcartNumber(item) }}</text>
<view class="btn">
<up-icon name="plus-circle-fill" color="#E9AB7A" size="25"></up-icon>
<view class="btnClick"
@tap.stop="$u.throttle(() => singleclick(item, '+'), 500)"></view>
<!-- <view class="btnClick"
@tap.stop="$u.throttle(() => singleclick(item, '+'), 500)"></view> -->
<view class="btnClick" @tap.stop="singleclick(item, '+')"></view>
</view>
</view>
</view>
@@ -288,15 +290,17 @@
<view class="Controls" v-else>
<view class="btn" v-if="item1.cartNumber * 1 != '0'">
<up-icon name="minus-circle-fill" color="#E9AB7A" size="25"></up-icon>
<view class="btnClick"
@tap.stop="$u.throttle(() => singleclick(item1, '-'), 500)"></view>
<!-- <view class="btnClick"
@tap.stop="$u.throttle(() => singleclick(item1, '-'), 500)"></view> -->
<view class="btnClick" @tap.stop="singleclick(item1, '-')"></view>
</view>
<text class="num">{{ ifcartNumber(item1) }}</text>
<view class="btn">
<up-icon name="plus-circle-fill" color="#E9AB7A" size="25"></up-icon>
<view class="btnClick"
@tap.stop="$u.throttle(() => singleclick(item1, '+'), 500)"></view>
<!-- <view class="btnClick"
@tap.stop="$u.throttle(() => singleclick(item1, '+'), 500)"></view> -->
<view class="btnClick" @tap.stop="singleclick(item1, '+')"></view>
</view>
</view>
</view>
@@ -470,7 +474,7 @@
v-if="specifications.item.suitNum > 1">「{{ specifications.item.suitNum }}{{ specifications.item.unitName }}起点」</text>
</view>
<view class="operation-wrap" v-if="specifications.item.type != 'package'">
<view class="operation-wrap" v-if="specifications.item.type != 'package'&&stockNumberIsFull(specifications.item)">
<view class="btn">
<up-icon name="minus-circle-fill" color="#E9AB7A" size="25"
v-if="shopCartNumber > 0"></up-icon>
@@ -486,23 +490,32 @@
<view class="shop_skuselect flex-start" v-if="selectedSpecsStr">
<view class="shop_skuselectname">{{ selectedSpecsStr }}</view>
</view>
<template v-if="isSkuGoods">
<view v-if="specifications.item.type == 'package'" class="addShopping"
:class="shopCartNumber > 0 && allConditionsSatisfied ? 'active' : ''"
@click="submitSelection()">
{{ skuBtnText }}
</view>
<view v-else class="addShopping" :class="shopCartNumber > 0 && canSubmit ? 'active' : ''"
@click="submitSelection()">
{{ skuBtnText }}
<template v-if="!stockNumberIsFull(specifications.item)">
<view class="addShopping">
库存不足
</view>
</template>
<template v-else>
<view class="addShopping" :class="shopCartNumber > 0 ? 'active' : ''"
@click="submitSelection()">
{{ skuBtnText }}
</view>
<template v-if="isSkuGoods">
<view v-if="specifications.item.type == 'package'" class="addShopping"
:class="shopCartNumber > 0 && allConditionsSatisfied ? 'active' : ''"
@click="submitSelection()">
{{ skuBtnText }}
</view>
<view v-else class="addShopping" :class="shopCartNumber > 0 && canSubmit ? 'active' : ''"
@click="submitSelection()">
{{ skuBtnText }}
</view>
</template>
<template v-else>
<view class="addShopping" :class="shopCartNumber > 0 ? 'active' : ''"
@click="submitSelection()">
{{ skuBtnText }}
</view>
</template>
</template>
</view>
</view>
</up-popup>
@@ -1337,18 +1350,26 @@
return isInRange;
};
function stockNumberIsFull(item){
if(item.isStock && item.stockNumber < item.suitNum){
return false
}
return true
}
/**
* 判断商品是否可售
* @param {Object} item
*/
function juageProductAvailable(item) {
function juageProductAvailable(item, i) {
if (!isProductAvailable(item.days, item.startTime, item.endTime)) {
uni.showToast({
title: '不在可售时间内'
});
return false;
}
if (item.isStock && item.stockNumber < item.suitNum) {
if ( item.isStock && item.stockNumber < item.suitNum && i == '+') {
uni.showToast({
title: '库存不足',
icon: 'none'
@@ -1361,7 +1382,7 @@
// 单规格
const singleclick = async (item, i) => {
console.log('单规格商品点击事件:', item, i);
if (!juageProductAvailable(item)) {
if (!juageProductAvailable(item, i)) {
return false;
}
// 判断购物车是否有该选中商品
@@ -1477,9 +1498,9 @@
const websocketsendMessage = (data) => {
console.log('websocketsendMessage', data);
delete data.memberPrice;
uni.$u.debounce(() => {
useSocket.sendMessage(data);
}, 500);
useSocket.sendMessage(data);
// uni.$u.debounce(() => {
// }, 500);
};
// 用于记录已经处理过的消息的 msg_id
@@ -1688,7 +1709,8 @@
}
// 提示
if (Message.status == 0 && Message.type != 'no_suit_num' && Message.type != 'time_discount'&&Message.operate_type != 'rottable_error') {
if (Message.status == 0 && Message.type != 'no_suit_num' && Message.type != 'time_discount' && Message
.operate_type != 'rottable_error') {
uni.showToast({
title: Message.msg,
icon: 'none'
@@ -2210,7 +2232,7 @@
await userStore.actionsproductqueryShop(newTableCode);
await userStore.actionsproductqueryProduct();
const res = await APIhistoryOrder({
tableCode:newTableCode
tableCode: newTableCode
});
if (res && res.id) {
@@ -2265,7 +2287,7 @@
if (e.one_more_order && e.order_id) {
extraInitPar.one_more_order = 1
extraInitPar.order_id = e.order_id
extraInitPar.user_id = uni.cache.get('userInfo').id||''
extraInitPar.user_id = uni.cache.get('userInfo').id || ''
}
useSocket.connect({

View File

@@ -387,7 +387,6 @@ export const useCartsStore = defineStore("cart", () => {
limitTimeDiscount.value = Message.time_dis_info;
}
cartsGoodsInfoInit(msgData);
uni.hideLoading();
isLoading.value = false;
}