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; return;
} }
const newNumber = item.number * 1 + step * 1; 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') { if (dinnerType.value == 'take-out') {
pack_number = newNumber pack_number = newNumber
} }
if (item.product_type == 'weight') { if (item.product_type == 'weight' && item.pack_number * 1 >= 1) {
pack_number = 1 pack_number = 1
} }
update({ ...item, number: newNumber, pack_number }); update({ ...item, number: newNumber, pack_number });
@ -331,7 +331,8 @@ export const useCartsStore = defineStore("carts", () => {
product_name: "", product_name: "",
remark: "", remark: "",
sku_id: '', sku_id: '',
product_type: '' product_type: '',
suitNum: 1
} }
//当前购物车直接添加 //当前购物车直接添加
function cartsPush(data: any) { function cartsPush(data: any) {
@ -388,7 +389,7 @@ export const useCartsStore = defineStore("carts", () => {
return sendMessage('del', data); return sendMessage('del', data);
} }
const pack_number = dinnerType.value == 'take-out' ? data.number : data.pack_number 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) { function updateTag(key: string, val: any, cart: CartsState = selCart.value) {
const skuData = cart.skuData || { suitNum: 1 } const skuData = cart.skuData || { suitNum: 1 }
@ -402,6 +403,7 @@ export const useCartsStore = defineStore("carts", () => {
const msg = { ...cart, [key]: val } const msg = { ...cart, [key]: val }
if (key == 'number' && dinnerType.value == 'take-out') { if (key == 'number' && dinnerType.value == 'take-out') {
msg.pack_number == val msg.pack_number == val
msg.suitNum == skuData.suitNum
} }
sendMessage('edit', msg); sendMessage('edit', msg);
@ -587,6 +589,17 @@ export const useCartsStore = defineStore("carts", () => {
WebSocketManager.subscribeToTopic(initParams, (msg) => { WebSocketManager.subscribeToTopic(initParams, (msg) => {
console.log("收到消息:", msg); console.log("收到消息:", msg);
if (msg.hasOwnProperty('status') && msg.status != 1) { 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 || '操作失败') return ElMessage.error(msg.message || msg.msg || '操作失败')
} }
if (msg && msg.data) { if (msg && msg.data) {

View File

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

View File

@ -30,7 +30,10 @@
size="60" size="60"
></svg-icon> ></svg-icon>
<svg-icon <svg-icon
@click="ElMessage.error('该商品不在可售时间内')" @click="
ElMessage.error('该商品不在可售时间内') ||
isProductAvailable(item.days, item.startTime, item.endTime)
"
v-else-if="!item.isSaleTime" v-else-if="!item.isSaleTime"
iconClass="no-sale" iconClass="no-sale"
color="#fff" color="#fff"
@ -55,6 +58,7 @@
</template> </template>
<script setup> <script setup>
import dayjs from "dayjs";
const props = defineProps({ const props = defineProps({
item: { item: {
type: Object, type: Object,
@ -68,6 +72,30 @@ const emits = defineEmits(["itemClick"]);
function itemClick() { function itemClick() {
emits("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> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.goods-item { .goods-item {

View File

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