add: 增加新客立减和计算公式测试

This commit is contained in:
2025-09-17 09:19:12 +08:00
parent a66de31f1b
commit 171c81eea6
8 changed files with 1603 additions and 86 deletions

View File

@@ -4,7 +4,9 @@ import orderApi from "@/api/order/order";
import { useUserStoreHook } from "@/store/modules/user";
import { customTruncateToTwoDecimals } from '@/utils/tools'
import productApi from "@/api/product/index";
import yskUtils from 'ysk-utils'
const { OrderPriceCalculator } = yskUtils
console.log(OrderPriceCalculator)
const shopUser = useUserStoreHook();
export interface CartsState {
id: string | number;
@@ -22,11 +24,6 @@ export const useCartsStore = defineStore("carts", () => {
let dinnerType = ref<string>('dine-in');
//就餐模式 先付 后付
const isPayBefore = computed(() => {
return shopUser.userInfo.registerType == 'before' ? true : false;
});
//是否启用会员价
const useVipPrice = computed(() => {
@@ -42,22 +39,21 @@ export const useCartsStore = defineStore("carts", () => {
//当前购物车数据
const list = useStorage<any[]>("carts", []);
//历史订单数据
// const oldOrder = useStorage<any>("Instead_olold_order", {
// detailMap: [],
// originAmount: 0
// });
const oldOrder = ref({
const oldOrder = useStorage<any>("Instead_olold_order", {
detailMap: [],
originAmount: 0
})
});
//代客下单页面商品缓存
const goods = useStorage<any[]>("Instead_goods", []);
async function getGoods(query: any) {
const res = await productApi.list({
const res = await productApi.getPage({
page: 1,
size: 999,
status: "on_sale",
...query,
});
goods.value = res.filter((v: { type: string }) => v.type != 'coupon');
goods.value = res.records;
setGoodsMap(goods.value)
}
@@ -135,11 +131,9 @@ export const useCartsStore = defineStore("carts", () => {
})
//返回打包数量称重商品打包数量最大为1
function returnCartPackNumber(cur: any) {
const maxReturnNum = cur.number - (cur.returnNum || 0);
let pack_number = (dinnerType.value == 'take-out' ? cur.number : cur.pack_number * 1);
console.log(cur)
let pack_number = (dinnerType.value == 'take-out' ? cur.number : cur.pack_number * 1)
pack_number = (cur.product_type == 'weight' && pack_number > 1) ? 1 : pack_number;
pack_number = Math.min(maxReturnNum, pack_number);
pack_number = pack_number <= 0 ? 0 : pack_number
return pack_number * 1
}
//打包数量
@@ -247,7 +241,7 @@ export const useCartsStore = defineStore("carts", () => {
const price = (cur.discount_sale_amount * 1 || cur.salePrice || 0)
return acc + cur.number * (discount_sale_amount || (useVipPrice.value ? memberPrice : price))
}, 0)
return (money + packFee.value * 1 + oldOrderMoney.value * 1).toFixed(2)
return (money + packFee.value + oldOrderMoney.value * 1).toFixed(2)
})
//只算商品的总价
const goodsTotal = computed(() => {
@@ -264,7 +258,7 @@ export const useCartsStore = defineStore("carts", () => {
const cartNumber = list.value.reduce((acc: number, cur: any) => {
return acc + cur.number * 1
}, 0)
const giftNumber = giftList.value.reduce((acc: number, cur: any) => {
const giftNumber = list.value.reduce((acc: number, cur: any) => {
return acc + cur.number * 1
}, 0)
let oldNumber = 0
@@ -284,11 +278,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 * 1;
let pack_number = newNumber < item.pack_number ? (item.pack_number * 1 + step * 1) : item.pack_number;
if (dinnerType.value == 'take-out') {
pack_number = newNumber
}
if (item.product_type == 'weight' && item.pack_number * 1 >= 1) {
if (item.product_type == 'weight') {
pack_number = 1
}
update({ ...item, number: newNumber, pack_number });
@@ -308,8 +302,11 @@ export const useCartsStore = defineStore("carts", () => {
})
return
}
selPlaceNum.value = -1;
isOldOrder.value = false;
if (cart.is_gift) {
isSelGift.value = true
} else {
isSelGift.value = false
}
if (cart.is_gift) {
isSelGift.value = true
@@ -320,7 +317,6 @@ export const useCartsStore = defineStore("carts", () => {
isSelGift.value = false
selListIndex.value = list.value.findIndex((item: CartsState) => item.id === cart.id);
}
}
@@ -336,8 +332,7 @@ export const useCartsStore = defineStore("carts", () => {
product_name: "",
remark: "",
sku_id: '',
product_type: '',
suitNum: 1
product_type: ''
}
//当前购物车直接添加
function cartsPush(data: any) {
@@ -377,10 +372,6 @@ export const useCartsStore = defineStore("carts", () => {
cart_id
});
}
//清空历史订单
function clearHistory() {
sendMessage('clearOrder', {});
}
function del(data: any) {
@@ -394,7 +385,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, suitNum, pack_number });
sendMessage('edit', { ...data, pack_number });
}
function updateTag(key: string, val: any, cart: CartsState = selCart.value) {
const skuData = cart.skuData || { suitNum: 1 }
@@ -408,7 +399,6 @@ 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);
@@ -462,15 +452,8 @@ export const useCartsStore = defineStore("carts", () => {
//获取历史订单
async function getOldOrder(table_code: string | number) {
const res = await orderApi.getHistoryList({ tableCode: table_code })
console.log('getOldOrder');
console.log(res);
if (res) {
setOldOrder(res)
} else {
oldOrder.value = {
detailMap: [],
originAmount: 0
}
}
}
@@ -512,22 +495,12 @@ export const useCartsStore = defineStore("carts", () => {
for (let i in data) {
newData[i] = data[i].map((v: any) => {
const skuData = getProductDetails({ product_id: v.productId, sku_id: v.skuId })
console.log(skuData)
console.log(v)
return {
...v,
...skuData,
skuData: {
...skuData,
salePrice: v.price,
memberPrice: v.memberPrice
},
placeNum: v.placeNum,
number: v.num,
id: v.id,
salePrice: v.price,
memberPrice: v.memberPrice,
pack_number: v.packNumber,
discount_sale_amount: v.discountSaleAmount * 1 || 0,
is_print: v.isPrint,
@@ -538,12 +511,10 @@ export const useCartsStore = defineStore("carts", () => {
product_name: v.productName,
sku_name: v.skuName,
sku_id: v.skuId,
product_type: v.productType,
packFee: v.packAmount,
product_type: v.productType
}
})
}
console.log('newData', newData)
return newData
}
@@ -573,7 +544,7 @@ export const useCartsStore = defineStore("carts", () => {
if ($oldOrder) {
setOldOrder($oldOrder)
} else {
oldOrder.value = { detailMap: [], originAmount: 0 }
oldOrder.value = { detailMap: [] }
}
// console.log('oldOrder.detailMap', oldOrder.value.detailMap)
@@ -593,19 +564,9 @@ export const useCartsStore = defineStore("carts", () => {
console.log("初始化参数", initParams);
WebSocketManager.subscribeToTopic(initParams, (msg) => {
console.log("收到消息:", msg);
console.log([...list.value, ...giftList.value])
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 || '操作失败')
}
if (msg && msg.data) {
if (Array.isArray(msg.data) && msg.data.length && msg.data[0].table_code) {
@@ -636,7 +597,7 @@ export const useCartsStore = defineStore("carts", () => {
v[key] = skuData[key];
});
} else {
// del({ id: v.id })
del({ id: v.id })
return false
}
return !v.is_gift
@@ -666,13 +627,10 @@ export const useCartsStore = defineStore("carts", () => {
return ElMessage.warning(msg.message || '该商品已存在')
}
const skuData = getProductDetails({ product_id: msg.data.product_id, sku_id: msg.data.sku_id })
if (skuData || msg.data.is_temporary) {
const newGoods = { ...skuData, ...msg.data }
console.log('newGoods', newGoods)
list.value.push(newGoods)
return ElMessage.success(msg.message || '添加成功')
}
const newGoods = { ...skuData, ...msg.data }
console.log('newGoods', newGoods)
list.value.push(newGoods)
return ElMessage.success(msg.message || '添加成功')
}
if (msg.operate_type === "manage_edit") {
@@ -723,9 +681,6 @@ export const useCartsStore = defineStore("carts", () => {
if (msg.operate_type === "batch") {
concocatSocket({ ...$initParams, table_code: table_code.value })
}
if (msg.operate_type === "manage_clearOrder") {
getOldOrder(msg.data.table_code)
}
if (msg.operate_type === "product_update") {
console.log('商品更新')
init($initParams, oldOrder.value)
@@ -747,7 +702,6 @@ export const useCartsStore = defineStore("carts", () => {
WebSocketManager.sendMessage(msg);
}
return {
clearHistory,
disconnect,
dinnerType,
changePack,
@@ -781,7 +735,7 @@ export const useCartsStore = defineStore("carts", () => {
changeTable,
rotTable,
getGoods,
setGoodsMap, isPayBefore
setGoodsMap
};
});