feat: 增加代课下单商品不在可售时间内判断,增加购物车提示库存不足处理,增加购物车编辑增加参数起售数量

This commit is contained in:
YeMingfei666 2025-04-21 11:04:24 +08:00
parent 8a9cca4ee2
commit 65c1aef7bf
4 changed files with 53 additions and 5 deletions

View File

@ -279,11 +279,11 @@ export const useCartsStore = defineStore("carts", () => {
return;
}
const newNumber = item.number * 1 + step * 1;
let pack_number = newNumber < item.pack_number ? (item.pack_number * 1 + step * 1) : item.pack_number;
let pack_number = newNumber < item.pack_number ? (item.pack_number * 1 + step * 1) : item.pack_number * 1;
if (dinnerType.value == 'take-out') {
pack_number = newNumber
}
if (item.product_type == 'weight') {
if (item.product_type == 'weight' && item.pack_number * 1 >= 1) {
pack_number = 1
}
update({ ...item, number: newNumber, pack_number });
@ -331,7 +331,8 @@ export const useCartsStore = defineStore("carts", () => {
product_name: "",
remark: "",
sku_id: '',
product_type: ''
product_type: '',
suitNum: 1
}
//当前购物车直接添加
function cartsPush(data: any) {
@ -388,7 +389,7 @@ export const useCartsStore = defineStore("carts", () => {
return sendMessage('del', data);
}
const pack_number = dinnerType.value == 'take-out' ? data.number : data.pack_number
sendMessage('edit', { ...data, pack_number });
sendMessage('edit', { ...data, suitNum, pack_number });
}
function updateTag(key: string, val: any, cart: CartsState = selCart.value) {
const skuData = cart.skuData || { suitNum: 1 }
@ -402,6 +403,7 @@ export const useCartsStore = defineStore("carts", () => {
const msg = { ...cart, [key]: val }
if (key == 'number' && dinnerType.value == 'take-out') {
msg.pack_number == val
msg.suitNum == skuData.suitNum
}
sendMessage('edit', msg);
@ -587,6 +589,17 @@ export const useCartsStore = defineStore("carts", () => {
WebSocketManager.subscribeToTopic(initParams, (msg) => {
console.log("收到消息:", msg);
if (msg.hasOwnProperty('status') && msg.status != 1) {
if (msg.type === 'no_suit_num' && selListIndex.value != -1) {
return ElMessageBox.confirm(`${list.value[selListIndex.value].name}库存不足`, '提示', {
confirmButtonText: '确定',
callback: (action: string) => {
if (action == 'confirm') {
list.value.splice(selListIndex.value, 1)
}
}
});
}
return ElMessage.error(msg.message || msg.msg || '操作失败')
}
if (msg && msg.data) {

View File

@ -128,6 +128,7 @@ function confirm() {
product_id: goods.value.id,
number: number.value,
product_type: goods.value.type,
suitNum: skuData.value.suitNum || 1,
});
close();
}

View File

@ -30,7 +30,10 @@
size="60"
></svg-icon>
<svg-icon
@click="ElMessage.error('该商品不在可售时间内')"
@click="
ElMessage.error('该商品不在可售时间内') ||
isProductAvailable(item.days, item.startTime, item.endTime)
"
v-else-if="!item.isSaleTime"
iconClass="no-sale"
color="#fff"
@ -55,6 +58,7 @@
</template>
<script setup>
import dayjs from "dayjs";
const props = defineProps({
item: {
type: Object,
@ -68,6 +72,30 @@ const emits = defineEmits(["itemClick"]);
function itemClick() {
emits("itemClick");
}
//
function isProductAvailable(sellDaysStr, startTimeStr, endTimeStr) {
//
const sellDays = sellDaysStr.split(",");
const now = dayjs();
const days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
const currentDay = days[now.day()]; // console.log(':', currentDay); // console.log(':', sellDays); //
if (!sellDays.includes(currentDay)) {
// console.log('');
return false;
}
const startTime = dayjs(`${now.format("YYYY-MM-DD")} ${startTimeStr}`);
let endTime = dayjs(`${now.format("YYYY-MM-DD")} ${endTimeStr}`); //
if (endTime.isBefore(startTime)) {
endTime = endTime.add(1, "day");
} // console.log('当前时间:', now.format('YYYY-MM-DD HH:mm:ss')); // console.log('开始时间:', startTime.format('YYYY-MM-DD HH:mm:ss')); // console.log(':', endTime.format('YYYY-MM-DD HH:mm:ss'));
const isInRange = now.isBetween(startTime, endTime, null, "[)"); // console.log(':', isInRange);
return isInRange;
}
</script>
<style scoped lang="scss">
.goods-item {

View File

@ -511,6 +511,7 @@ function taocanConfirm(goods, pro_group_info) {
pro_group_info: JSON.stringify(pro_group_info),
number: goods.skuList[0].suitNum,
pack_number: diners.sel ? goods.skuList[0].suitNum : 0,
suitNum: goods.skuList[0].suitNum,
});
}
function taocanShow(item) {
@ -527,6 +528,7 @@ function changeWeightConfirm(goods, number) {
sku_id: goods.skuList[0].id,
number,
product_type: goods.type,
suitNum: goods.skuList[0].suitNum || 1,
},
true
);
@ -584,6 +586,7 @@ function addLingShiCaiConfirm(data) {
product_id: "-999",
is_temporary: 1,
...data,
suitNum: 1,
});
}
//
@ -708,6 +711,7 @@ function goodsClick(item) {
//
if (item.type == "single") {
addCarts({
suitNum: item.suitNum || 1,
product_id: item.id,
sku_id: item.skuList[0].id,
number: item.skuList[0].suitNum || 1,
@ -735,6 +739,7 @@ function goodsClick(item) {
product_id: item.id,
number: item.skuList[0].suitNum || 1,
product_type: item.type,
suitNum: item.skuList[0].suitNum || 1,
};
addCarts(sendmsg);
return;
@ -750,6 +755,7 @@ function goodsClick(item) {
//
function skuSelConfirm(item) {
console.log("item");
console.log(item);
addCarts(item);
}