修复库存回显问题,修复多次加菜弹窗问题
This commit is contained in:
@@ -8,9 +8,9 @@
|
|||||||
:height="height"
|
:height="height"
|
||||||
:maxCount="maxCount"
|
:maxCount="maxCount"
|
||||||
>
|
>
|
||||||
<template #default v-if="$slots.default">
|
<!-- <template #default v-if="$slots.default">
|
||||||
<slot></slot>
|
<slot></slot>
|
||||||
</template>
|
</template> -->
|
||||||
</up-upload>
|
</up-upload>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,8 @@ async function getProductListAjax() {
|
|||||||
mask: true
|
mask: true
|
||||||
});
|
});
|
||||||
const res = await getProductList();
|
const res = await getProductList();
|
||||||
list.value = res.productList;
|
console.log('res',res);
|
||||||
|
list.value = res;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error);
|
console.log(error);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,7 +145,7 @@
|
|||||||
let obj = pageData.types.find(item=> item.value == e)
|
let obj = pageData.types.find(item=> item.value == e)
|
||||||
return obj.name
|
return obj.name
|
||||||
}
|
}
|
||||||
|
let selArr=[]
|
||||||
getGoods()
|
getGoods()
|
||||||
/**
|
/**
|
||||||
* 获取商品列表
|
* 获取商品列表
|
||||||
@@ -200,7 +200,6 @@
|
|||||||
|
|
||||||
const show = ref(props.modelValue)
|
const show = ref(props.modelValue)
|
||||||
|
|
||||||
let selArr=[]
|
|
||||||
|
|
||||||
let $selGoodsMap={}
|
let $selGoodsMap={}
|
||||||
async function open(arr) {
|
async function open(arr) {
|
||||||
|
|||||||
@@ -75,7 +75,7 @@
|
|||||||
<up-radio v-for="(item,index) in tuiStockTypes" :key="index" :label="item.label"
|
<up-radio v-for="(item,index) in tuiStockTypes" :key="index" :label="item.label"
|
||||||
:name="item.key"></up-radio>
|
:name="item.key"></up-radio>
|
||||||
</up-radio-group>
|
</up-radio-group>
|
||||||
<view class="color-red u-m-t-10">当前店铺退菜退库存规则:跟随商品分类</view>
|
<view class="color-red u-m-t-10">当前店铺退菜退库存规则:{{nowRefundRule}}</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
@@ -143,7 +143,13 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
const shopInfo=uni.getStorageSync('shopInfo')
|
||||||
|
const nowRefundRule=computed(()=>{
|
||||||
|
if(!shopInfo||!shopInfo.refundMode){
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
return shopInfo.refundMode==1?'跟随商品分类':'跟随单商品'
|
||||||
|
})
|
||||||
const pageData = reactive({
|
const pageData = reactive({
|
||||||
isBindGuige: false, //是否绑定至规格
|
isBindGuige: false, //是否绑定至规格
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<up-image :src="data.coverImg" mode="aspectFill" :width="img.width" :height="img.height"></up-image>
|
<up-image :src="data.coverImg" mode="aspectFill" :width="img.width" :height="img.height"></up-image>
|
||||||
<view class="info u-flex u-row-between u-col-top u-flex-col">
|
<view class="info u-flex u-row-between u-col-top u-flex-col">
|
||||||
<view class="limit-discount" v-if="is_time_discount">限时折扣</view>
|
<view class="limit-discount" v-if="is_time_discount">限时折扣</view>
|
||||||
<view class="nowStockerNumber" v-if="nowStockerNumber<=10">
|
<view class="nowStockerNumber" v-if="data.isAutoSoldStock&&nowStockerNumber<=10&&nowStockerNumber>0">
|
||||||
剩余库存:{{nowStockerNumber}}
|
剩余库存:{{nowStockerNumber}}
|
||||||
</view>
|
</view>
|
||||||
<view>
|
<view>
|
||||||
@@ -172,7 +172,7 @@
|
|||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
// 1. 筛选匹配的耗材列表
|
// 1. 筛选匹配的耗材列表,增加对应商品数量
|
||||||
const conslist=computed(()=>{
|
const conslist=computed(()=>{
|
||||||
if(props.consStockList.length<=0){
|
if(props.consStockList.length<=0){
|
||||||
return []
|
return []
|
||||||
@@ -181,37 +181,27 @@
|
|||||||
return props.data.consList.find(i =>{
|
return props.data.consList.find(i =>{
|
||||||
return i.consInfoId == v.consId
|
return i.consInfoId == v.consId
|
||||||
});
|
});
|
||||||
});
|
}).map(v=>{
|
||||||
})
|
const cItem=props.data.consList.find(c=>c.consInfoId==v.consId)
|
||||||
// 2. 找到 stockNumber 最小的那一项
|
const goodsNumber=Math.floor(v.stockNumber/cItem.surplusStock)
|
||||||
const minConsItem=computed(()=>{
|
console.log('props.data',props.data.name);
|
||||||
if(conslist.value.length<=0){
|
console.log('goodsNumber',goodsNumber);
|
||||||
return null
|
return {
|
||||||
|
...v,
|
||||||
|
goodsNumber
|
||||||
}
|
}
|
||||||
return conslist.value.reduce((prev, current) => {
|
}).sort((a,b)=>{
|
||||||
return prev.stockNumber < current.stockNumber ? prev : current;
|
return a.goodsNumber-b.goodsNumber
|
||||||
});
|
|
||||||
})
|
})
|
||||||
// 3. 找到和 minItem 的 consId 一样的那个消耗配置项
|
|
||||||
const targetCons=computed(()=>{
|
|
||||||
if(!minConsItem.value){
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
return props.data.consList.find(i => i.consInfoId == minConsItem.value.consId);
|
|
||||||
})
|
})
|
||||||
|
|
||||||
const nowStockerNumber=computed(()=>{
|
const nowStockerNumber=computed(()=>{
|
||||||
if(!targetCons.value||!minConsItem.value){
|
return conslist.value[0]?conslist.value[0].goodsNumber:9999
|
||||||
return 9999
|
|
||||||
}
|
|
||||||
return Math.floor(minConsItem.value.stockNumber/targetCons.value.surplusStock)
|
|
||||||
})
|
})
|
||||||
function consStockisFull(item) {
|
function consStockisFull(item) {
|
||||||
// 无数据直接返回 true(或按你需求返回 false)
|
if(!item.isAutoSoldStock){
|
||||||
if (!conslist.value.length) return true;
|
return true
|
||||||
|
}
|
||||||
if(!minConsItem.value)return true;
|
|
||||||
|
|
||||||
if(!targetCons.value) return true;
|
|
||||||
|
|
||||||
// 4. 判断:最小库存 > 每份消耗库存 → 返回 true,否则 false
|
// 4. 判断:最小库存 > 每份消耗库存 → 返回 true,否则 false
|
||||||
if (nowStockerNumber.value>=1) {
|
if (nowStockerNumber.value>=1) {
|
||||||
|
|||||||
@@ -839,21 +839,21 @@
|
|||||||
let cartItem = cars[goodsInCarIndex];
|
let cartItem = cars[goodsInCarIndex];
|
||||||
let number = isAdd ? cartItem.number + 1 : +cartItem.number - 1;
|
let number = isAdd ? cartItem.number + 1 : +cartItem.number - 1;
|
||||||
if (isAdd) {
|
if (isAdd) {
|
||||||
if (number == 2 ) {
|
|
||||||
// 等待用户点击
|
|
||||||
const isConfirm = await showConfirmModal(
|
|
||||||
'购物车已有该商品,请确认是否重复',
|
|
||||||
'菜名名称:《' + $goods.name + '》'
|
|
||||||
);
|
|
||||||
if (!isConfirm) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (allHistoryOrder.value.find(v => v.productId == $goods.id)) {
|
if (allHistoryOrder.value.find(v => v.productId == $goods.id)) {
|
||||||
// 等待用户点击
|
// 等待用户点击
|
||||||
const isConfirm = await showConfirmModal(
|
const isConfirm = await showConfirmModal(
|
||||||
'该商品已下单过,请确认是否重复',
|
'该商品已下单过,请确认是否重复',
|
||||||
'菜名名称:《' + $goods.name + '》'
|
'菜品名称:《' + $goods.name + '》'
|
||||||
|
);
|
||||||
|
if (!isConfirm) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if (number == 2) {
|
||||||
|
// 等待用户点击
|
||||||
|
const isConfirm = await showConfirmModal(
|
||||||
|
'购物车已有该商品,请确认是否重复',
|
||||||
|
'菜品名称:《' + $goods.name + '》'
|
||||||
);
|
);
|
||||||
if (!isConfirm) {
|
if (!isConfirm) {
|
||||||
return
|
return
|
||||||
@@ -861,6 +861,11 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (!isAdd) {
|
if (!isAdd) {
|
||||||
if (number === 0 || number < suitNum) {
|
if (number === 0 || number < suitNum) {
|
||||||
//移除
|
//移除
|
||||||
@@ -905,7 +910,7 @@
|
|||||||
// 等待用户点击
|
// 等待用户点击
|
||||||
const isConfirm = await showConfirmModal(
|
const isConfirm = await showConfirmModal(
|
||||||
'该商品已下单过,请确认是否重复',
|
'该商品已下单过,请确认是否重复',
|
||||||
'菜名名称:《' + $goods.name + '》'
|
'菜品名称:《' + $goods.name + '》'
|
||||||
);
|
);
|
||||||
if (!isConfirm) {
|
if (!isConfirm) {
|
||||||
return
|
return
|
||||||
@@ -1144,28 +1149,27 @@
|
|||||||
let cartId = carGoods.id;
|
let cartId = carGoods.id;
|
||||||
let suitNum = goods.skuList[0].suitNum || 1;
|
let suitNum = goods.skuList[0].suitNum || 1;
|
||||||
let newNumber = carGoods.number * 1 + suitNum;
|
let newNumber = carGoods.number * 1 + suitNum;
|
||||||
if (newNumber == 2&&carGoods.number<newNumber) {
|
|
||||||
// 等待用户点击
|
|
||||||
const isConfirm = await showConfirmModal(
|
|
||||||
'请确认当前菜品是否已上菜?',
|
|
||||||
'菜名名称:《' + goods.name + '》'
|
|
||||||
);
|
|
||||||
if (!isConfirm) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (allHistoryOrder.value.find(v => v.productId == goods.id)) {
|
if (allHistoryOrder.value.find(v => v.productId == goods.id)) {
|
||||||
// 等待用户点击
|
// 等待用户点击
|
||||||
const isConfirm = await showConfirmModal(
|
const isConfirm = await showConfirmModal(
|
||||||
'该商品已下单过,请确认是否重复',
|
'该商品已下单过,请确认是否重复',
|
||||||
'菜名名称:《' + goods.name + '》'
|
'菜品名称:《' + goods.name + '》'
|
||||||
|
);
|
||||||
|
if (!isConfirm) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if (newNumber == 2 && carGoods.number < newNumber) {
|
||||||
|
// 等待用户点击
|
||||||
|
const isConfirm = await showConfirmModal(
|
||||||
|
'购物车已有该商品,请确认是否重复?',
|
||||||
|
'菜品名称:《' + goods.name + '》'
|
||||||
);
|
);
|
||||||
if (!isConfirm) {
|
if (!isConfirm) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
editCart({
|
editCart({
|
||||||
id: cartId,
|
id: cartId,
|
||||||
@@ -1186,7 +1190,7 @@
|
|||||||
// 等待用户点击
|
// 等待用户点击
|
||||||
const isConfirm = await showConfirmModal(
|
const isConfirm = await showConfirmModal(
|
||||||
'该商品已下单过,请确认是否重复',
|
'该商品已下单过,请确认是否重复',
|
||||||
'菜名名称:《' + goods.name + '》'
|
'菜品名称:《' + goods.name + '》'
|
||||||
);
|
);
|
||||||
if (!isConfirm) {
|
if (!isConfirm) {
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -12,7 +12,8 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="u-flex">
|
<view class="u-flex">
|
||||||
<view>
|
<view>
|
||||||
<text :class="[data.status]">{{$dict.getDiceName(data.status,'orderStatus')}}{{data.refundType?'['+$dict.getDiceName(data.refundType,'refundType')+']':''}}</text>
|
<text
|
||||||
|
:class="[data.status]">{{$dict.getDiceName(data.status,'orderStatus')}}{{data.refundType?'['+$dict.getDiceName(data.refundType,'refundType')+']':''}}</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="line"></view>
|
<view class="line"></view>
|
||||||
<view class=" color-main">
|
<view class=" color-main">
|
||||||
@@ -33,13 +34,18 @@
|
|||||||
<view class="" v-for="(item,index) in data.goods" :key="index">
|
<view class="" v-for="(item,index) in data.goods" :key="index">
|
||||||
<view class="u-flex u-row-between u-col-top u-m-t-32" v-if="item.productId!=-999">
|
<view class="u-flex u-row-between u-col-top u-m-t-32" v-if="item.productId!=-999">
|
||||||
<view>
|
<view>
|
||||||
<view class=""> {{item.productName}}</view>
|
<view class="">
|
||||||
|
<text>{{item.productName}}</text>
|
||||||
|
</view>
|
||||||
<view class="color-999 u-font-24 u-m-t-8">
|
<view class="color-999 u-font-24 u-m-t-8">
|
||||||
{{item.skuName}}
|
{{item.skuName}}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="u-flex u-flex-1 u-row-right" style="align-items: center;">
|
<view class="u-flex u-flex-1 u-row-right" style="align-items: center;">
|
||||||
<view style="margin-right: 10rpx;">×{{item.num}}</view>
|
<view style="margin-right: 10rpx;">
|
||||||
|
<text>×{{item.num}}</text>
|
||||||
|
<text class="color-red u-m-l-10 font-bold" v-if="item.returnNum">(退{{item.returnNum}})</text>
|
||||||
|
</view>
|
||||||
<view class="u-text-right u-relative" :style="computedPriceStyle()">
|
<view class="u-text-right u-relative" :style="computedPriceStyle()">
|
||||||
<text>¥{{item.unitPrice}}</text>
|
<text>¥{{item.unitPrice}}</text>
|
||||||
</view>
|
</view>
|
||||||
@@ -98,7 +104,12 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { computed, reactive, ref, watch } from 'vue';
|
import {
|
||||||
|
computed,
|
||||||
|
reactive,
|
||||||
|
ref,
|
||||||
|
watch
|
||||||
|
} from 'vue';
|
||||||
|
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
import go from '@/commons/utils/go.js'
|
import go from '@/commons/utils/go.js'
|
||||||
|
|||||||
Reference in New Issue
Block a user