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

View File

@@ -153,14 +153,16 @@
<view class="Controls" v-else> <view class="Controls" v-else>
<view class="btn" v-if="item.cartNumber != '0'"> <view class="btn" v-if="item.cartNumber != '0'">
<up-icon name="minus-circle-fill" color="#E9AB7A" size="25"></up-icon> <up-icon name="minus-circle-fill" color="#E9AB7A" size="25"></up-icon>
<view class="btnClick" <view class="btnClick" @tap.stop="singleclick(item, '-')"></view>
@tap.stop="$u.throttle(() => singleclick(item, '-'), 500)"></view> <!-- <view class="btnClick"
@tap.stop="$u.throttle(() => singleclick(item, '-'), 500)"></view> -->
</view> </view>
<text class="num">{{ ifcartNumber(item) }}</text> <text class="num">{{ ifcartNumber(item) }}</text>
<view class="btn"> <view class="btn">
<up-icon name="plus-circle-fill" color="#E9AB7A" size="25"></up-icon> <up-icon name="plus-circle-fill" color="#E9AB7A" size="25"></up-icon>
<view class="btnClick" <!-- <view class="btnClick"
@tap.stop="$u.throttle(() => singleclick(item, '+'), 500)"></view> @tap.stop="$u.throttle(() => singleclick(item, '+'), 500)"></view> -->
<view class="btnClick" @tap.stop="singleclick(item, '+')"></view>
</view> </view>
</view> </view>
</view> </view>
@@ -288,15 +290,17 @@
<view class="Controls" v-else> <view class="Controls" v-else>
<view class="btn" v-if="item1.cartNumber * 1 != '0'"> <view class="btn" v-if="item1.cartNumber * 1 != '0'">
<up-icon name="minus-circle-fill" color="#E9AB7A" size="25"></up-icon> <up-icon name="minus-circle-fill" color="#E9AB7A" size="25"></up-icon>
<view class="btnClick" <!-- <view class="btnClick"
@tap.stop="$u.throttle(() => singleclick(item1, '-'), 500)"></view> @tap.stop="$u.throttle(() => singleclick(item1, '-'), 500)"></view> -->
<view class="btnClick" @tap.stop="singleclick(item1, '-')"></view>
</view> </view>
<text class="num">{{ ifcartNumber(item1) }}</text> <text class="num">{{ ifcartNumber(item1) }}</text>
<view class="btn"> <view class="btn">
<up-icon name="plus-circle-fill" color="#E9AB7A" size="25"></up-icon> <up-icon name="plus-circle-fill" color="#E9AB7A" size="25"></up-icon>
<view class="btnClick" <!-- <view class="btnClick"
@tap.stop="$u.throttle(() => singleclick(item1, '+'), 500)"></view> @tap.stop="$u.throttle(() => singleclick(item1, '+'), 500)"></view> -->
<view class="btnClick" @tap.stop="singleclick(item1, '+')"></view>
</view> </view>
</view> </view>
</view> </view>
@@ -318,7 +322,7 @@
<shopindex ref="showShopInfoRef"></shopindex> <shopindex ref="showShopInfoRef"></shopindex>
<!-- 购物车 --> <!-- 购物车 -->
<shoppingCartes :cartLists_count="cartLists_count" :cartList="matchedProducts" :showCart="showCart" <shoppingCartes :cartLists_count="cartLists_count" :cartList="matchedProducts" :showCart="showCart"
:limitDiscount="limitTimeDiscountRes" @customevent="websocketsendMessage" @close="showCart = !showCart" :limitDiscount="limitTimeDiscountRes" @customevent="websocketsendMessage" @close="showCart = !showCart"
:orderinfo="orderinfo" @clickcancelOrder="clickcancelOrder" v-if="cartLists_count > 0" :orderinfo="orderinfo" @clickcancelOrder="clickcancelOrder" v-if="cartLists_count > 0"
:nextFullAmountActivty="nextFullAmountActivty"></shoppingCartes> :nextFullAmountActivty="nextFullAmountActivty"></shoppingCartes>
@@ -470,7 +474,7 @@
v-if="specifications.item.suitNum > 1">「{{ specifications.item.suitNum }}{{ specifications.item.unitName }}起点」</text> v-if="specifications.item.suitNum > 1">「{{ specifications.item.suitNum }}{{ specifications.item.unitName }}起点」</text>
</view> </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"> <view class="btn">
<up-icon name="minus-circle-fill" color="#E9AB7A" size="25" <up-icon name="minus-circle-fill" color="#E9AB7A" size="25"
v-if="shopCartNumber > 0"></up-icon> v-if="shopCartNumber > 0"></up-icon>
@@ -486,23 +490,32 @@
<view class="shop_skuselect flex-start" v-if="selectedSpecsStr"> <view class="shop_skuselect flex-start" v-if="selectedSpecsStr">
<view class="shop_skuselectname">{{ selectedSpecsStr }}</view> <view class="shop_skuselectname">{{ selectedSpecsStr }}</view>
</view> </view>
<template v-if="isSkuGoods"> <template v-if="!stockNumberIsFull(specifications.item)">
<view v-if="specifications.item.type == 'package'" class="addShopping" <view 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> </view>
</template> </template>
<template v-else> <template v-else>
<view class="addShopping" :class="shopCartNumber > 0 ? 'active' : ''" <template v-if="isSkuGoods">
@click="submitSelection()"> <view v-if="specifications.item.type == 'package'" class="addShopping"
{{ skuBtnText }} :class="shopCartNumber > 0 && allConditionsSatisfied ? 'active' : ''"
</view> @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> </template>
</view> </view>
</view> </view>
</up-popup> </up-popup>
@@ -1154,7 +1167,7 @@
return; return;
} }
let res = await shoppingcart(); let res = await shoppingcart();
if ((specifications.item.type == 'package' && allConditionsSatisfied.value) || (specifications.item.type == if ((specifications.item.type == 'package' && allConditionsSatisfied.value) || (specifications.item.type ==
'sku' && canSubmit.value)) { 'sku' && canSubmit.value)) {
// 是否是套餐 有就传 // 是否是套餐 有就传
@@ -1336,19 +1349,27 @@
return isInRange; return isInRange;
}; };
function stockNumberIsFull(item){
if(item.isStock && item.stockNumber < item.suitNum){
return false
}
return true
}
/** /**
* 判断商品是否可售 * 判断商品是否可售
* @param {Object} item * @param {Object} item
*/ */
function juageProductAvailable(item) { function juageProductAvailable(item, i) {
if (!isProductAvailable(item.days, item.startTime, item.endTime)) { if (!isProductAvailable(item.days, item.startTime, item.endTime)) {
uni.showToast({ uni.showToast({
title: '不在可售时间内' title: '不在可售时间内'
}); });
return false; return false;
} }
if (item.isStock && item.stockNumber < item.suitNum) { if ( item.isStock && item.stockNumber < item.suitNum && i == '+') {
uni.showToast({ uni.showToast({
title: '库存不足', title: '库存不足',
icon: 'none' icon: 'none'
@@ -1361,7 +1382,7 @@
// 单规格 // 单规格
const singleclick = async (item, i) => { const singleclick = async (item, i) => {
console.log('单规格商品点击事件:', item, i); console.log('单规格商品点击事件:', item, i);
if (!juageProductAvailable(item)) { if (!juageProductAvailable(item, i)) {
return false; return false;
} }
// 判断购物车是否有该选中商品 // 判断购物车是否有该选中商品
@@ -1477,9 +1498,9 @@
const websocketsendMessage = (data) => { const websocketsendMessage = (data) => {
console.log('websocketsendMessage', data); console.log('websocketsendMessage', data);
delete data.memberPrice; delete data.memberPrice;
uni.$u.debounce(() => { useSocket.sendMessage(data);
useSocket.sendMessage(data); // uni.$u.debounce(() => {
}, 500); // }, 500);
}; };
// 用于记录已经处理过的消息的 msg_id // 用于记录已经处理过的消息的 msg_id
@@ -1556,7 +1577,7 @@
} }
} }
let socketInitFinished = false let socketInitFinished = false
// 收到的消息变化 // 收到的消息变化
async function onMessage(Message) { async function onMessage(Message) {
@@ -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({ uni.showToast({
title: Message.msg, title: Message.msg,
icon: 'none' icon: 'none'
@@ -2210,7 +2232,7 @@
await userStore.actionsproductqueryShop(newTableCode); await userStore.actionsproductqueryShop(newTableCode);
await userStore.actionsproductqueryProduct(); await userStore.actionsproductqueryProduct();
const res = await APIhistoryOrder({ const res = await APIhistoryOrder({
tableCode:newTableCode tableCode: newTableCode
}); });
if (res && res.id) { if (res && res.id) {
@@ -2265,7 +2287,7 @@
if (e.one_more_order && e.order_id) { if (e.one_more_order && e.order_id) {
extraInitPar.one_more_order = 1 extraInitPar.one_more_order = 1
extraInitPar.order_id = e.order_id extraInitPar.order_id = e.order_id
extraInitPar.user_id = uni.cache.get('userInfo').id||'' extraInitPar.user_id = uni.cache.get('userInfo').id || ''
} }
useSocket.connect({ useSocket.connect({

View File

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