新增商品状态售罄,增加删除的库存限制

This commit is contained in:
gyq
2025-04-16 18:31:12 +08:00
parent 0a0f672a02
commit 694cb154a6
12 changed files with 137 additions and 27 deletions

View File

@@ -18,7 +18,7 @@
</el-text>
</div>
<div class="item"
:class="{ disabled: goodsStore.cartList.length && (goodsStore.cartList[goodsStore.cartActiveIndex].goods_type == 'package' && goodsStore.cartList[goodsStore.cartActiveIndex].group_type == 1) }"
:class="{ disabled: goodsStore.cartList.length && (goodsStore.cartList[goodsStore.cartActiveIndex].goods_type == 'package' && goodsStore.cartList[goodsStore.cartActiveIndex].group_type == 1) || goodsStore.cartList.length && goodsStore.cartList[goodsStore.cartActiveIndex].isStock }"
@click="numberChange('add')">
<el-icon class="icon add">
<CloseBold />
@@ -408,6 +408,11 @@ function numberChange(t) {
}
break;
case 'add':
let goods = goodsStore.originGoodsList.find(pro => pro.id == item.product_id)
if (item.number >= goods.stockNumber && goods.isStock) {
ElMessage.error('库存不足')
return
}
goodsStore.cartList[goodsStore.cartActiveIndex].number++
if (goodsStore.allSelected) {
goodsStore.operateCart({ ...goodsStore.cartList[goodsStore.cartActiveIndex], pack_number: goodsStore.cartList[goodsStore.cartActiveIndex].number }, 'edit')
@@ -422,6 +427,13 @@ function numberChange(t) {
// 输入修改数量
function updateNumber(num) {
let item = goodsStore.cartList[goodsStore.cartActiveIndex]
let goods = goodsStore.originGoodsList.find(pro => pro.id == item.product_id)
if (num > goods.stockNumber && goods.isStock) {
ElMessage.error('库存不足')
return
}
goodsStore.cartList[goodsStore.cartActiveIndex].number = num
if (goodsStore.allSelected) {
goodsStore.operateCart({ ...goodsStore.cartList[goodsStore.cartActiveIndex], pack_number: goodsStore.cartList[goodsStore.cartActiveIndex].number }, 'edit')

View File

@@ -72,9 +72,24 @@
<div class="cover" v-if="shopListType == 'img'">
<el-image :src="`${item.coverImg}?x-oss-process=image/resize,m_lfit,w_120,h_120`"
class="el_img" fit="cover"></el-image>
<div class="sell_out" v-if="item.isSoldStock">
<img class="sell_out_icon" src="../../../assets/icon_xq.png">
<!-- 已下架 -->
<div class="sell_out" v-if="!item.isSale">
<img class="sell_out_icon" src="@/assets/icon_goods_yxj.svg">
</div>
<!-- 未开售不在可售时间内 -->
<div class="sell_out" v-else-if="!item.isSaleTime">
<img class="sell_out_icon" src="@/assets/icon_goods_wks.svg">
</div>
<!-- 售罄 -->
<div class="sell_out" v-else-if="item.isSoldStock">
<img class="sell_out_icon" src="@/assets/icon_goods_sq.svg">
</div>
<!-- 库存不足 -->
<div class="sell_out" v-else-if="item.isStock && item.stockNumber <= 0">
<img class="sell_out_icon" src="@/assets/icon_goods_kcbz.svg">
</div>
<div class="weight" v-if="item.type == 'weight'">称重</div>
<div class="weight" v-if="item.type == 'package' && item.groupType == 1">可选套餐</div>
<div class="weight" v-if="item.type == 'package' && item.groupType == 0">固定套餐</div>
@@ -492,11 +507,24 @@ function showSkuHandle(item) {
item.showMore = true
}
} else {
if (item.isStock && item.stockNumber <= 0) {
ElMessage({
type: 'error',
message: '库存不足',
})
return
}
if (item.isSoldStock) {
ElMessage({
type: 'error',
message: '该商品已售罄',
showClose: true,
})
return
}
if (!item.isSaleTime) {
ElMessage({
type: 'error',
message: '不在可售时间内',
})
return
}
@@ -504,10 +532,10 @@ function showSkuHandle(item) {
ElMessage({
type: 'error',
message: '该商品已下架,请编辑上架后操作',
showClose: true,
})
return
}
let goodsItem = goodsStore.cartList.find(goods => goods.product_id == item.id)
if (item.type == 'sku') {
// 多规格
@@ -518,7 +546,17 @@ function showSkuHandle(item) {
// 编辑
goodsStore.operateCart({ ...goodsItem, number: +goodsItem.number + 1 }, 'edit')
} else {
console.log(item);
// 添加
// 先判断起售数量是否大于库存
if (item.isStock && item.skuList[0].suitNum > item.stockNumber) {
ElMessage({
type: 'error',
message: '库存不足',
})
return
}
goodsStore.addCart({ ...item.skuList[0], lowPrice: item.skuList[0].salePrice, number: item.skuList[0].suitNum })
}
} else if (item.type == 'weight') {
@@ -686,7 +724,6 @@ async function closeSellHandle() {
ElMessage({
type: 'success',
message: '操作成功',
showClose: true,
})
updateGoods()
} catch (error) {
@@ -722,7 +759,6 @@ async function putawayHandle(item) {
ElMessage({
type: 'success',
message: '操作成功',
showClose: true,
})
updateGoods()
} catch (error) {
@@ -755,7 +791,6 @@ async function goodEditorConfirm() {
ElMessage({
type: 'success',
message: '操作成功',
showClose: true,
})
updateGoods()
} catch (error) {
@@ -775,7 +810,7 @@ async function goodStockNumberHandle(item) {
// type: 'warning',
// message: '未开启共享库存无法修改',
// showClose: true,
//
// })
// } else {
// goodsEditorStockItem.value = item
@@ -805,7 +840,7 @@ async function goodsEditorStockConfirm() {
ElMessage({
type: 'success',
message: '操作成功',
showClose: true,
})
updateGoods()
} catch (error) {
@@ -1082,12 +1117,12 @@ onMounted(() => {
display: flex;
align-items: center;
justify-content: center;
background-color: rgba(0, 0, 0, 0.3);
// backdrop-filter: blur(2px);
background-color: rgba(0, 0, 0, 0.5);
// backdrop-filter: blur(2px);
z-index: 10;
.sell_out_icon {
$size: 60px;
$size: 80px;
width: $size;
height: $size;
object-fit: cover;