feat: 代客下单更新,修复店铺列表编辑展示问题

This commit is contained in:
2025-03-04 10:34:19 +08:00
parent b71ca19c0d
commit bd59f05d26
19 changed files with 953 additions and 312 deletions

View File

@@ -1,9 +1,9 @@
import { store } from "@/store";
import WebSocketManager, { type ApifoxModel, msgType } from "@/utils/websocket";
import orderApi from "@/api/order/order";
import { useUserStore } from "@/store/modules/user";
import { useUserStoreHook } from "@/store/modules/user";
const shopUser = useUserStore();
const shopUser = useUserStoreHook();
export interface CartsState {
id: string | number;
[property: string]: any;
@@ -78,6 +78,12 @@ export const useCartsStore = defineStore("carts", () => {
})
//赠菜总价
const giftMoney = computed(() => {
let oldGiftMoney = 0
for (let i in oldOrder.value.detailMap) {
oldGiftMoney += oldOrder.value.detailMap[i].reduce((prve: number, cur: any) => {
return prve + cur.number * cur.salePrice
}, 0)
}
return giftList.value.reduce((acc: number, cur: any) => {
return acc + cur.number * cur.salePrice
}, 0)
@@ -90,7 +96,13 @@ export const useCartsStore = defineStore("carts", () => {
const giftNumber = giftList.value.reduce((acc: number, cur: any) => {
return acc + cur.pack_number * 1
}, 0)
return nowCartNumber + giftNumber
let oldNumber = 0
for (let i in oldOrder.value.detailMap) {
oldNumber += oldOrder.value.detailMap[i].reduce((prve: number, cur: any) => {
return prve + cur.pack_number
}, 0)
}
return nowCartNumber + giftNumber + oldNumber
})
//打包费
const packFee = computed(() => {
@@ -100,27 +112,73 @@ export const useCartsStore = defineStore("carts", () => {
const giftPackFee = giftList.value.reduce((acc: number, cur: any) => {
return acc + (cur.packFee || 0) * cur.pack_number
}, 0)
return nowPackFee + giftPackFee
let oldPackfee = 0;
for (let i in oldOrder.value.detailMap) {
oldPackfee += oldOrder.value.detailMap[i].reduce((prve: number, cur: any) => {
return prve + (cur.packFee || 0) * cur.pack_number
}, 0)
}
return nowPackFee + giftPackFee + oldPackfee
})
//会员优惠
const vipDiscount = computed(() => {
if (!useVipPrice.value) {
return 0
}
const listTotal = list.value.reduce((acc: number, cur: any) => {
const n = (cur.salePrice * 1 - cur.memberPrice * 1) * cur.number
return acc + (n <= 0 ? 0 : n)
}, 0)
return listTotal
})
//单品改价优惠
const singleDiscount = computed(() => {
const listTotal = list.value.reduce((acc: number, cur: any) => {
if (cur.discount_sale_amount * 1 <= 0) {
return acc + 0
}
const originPrice = useVipPrice.value ? (cur.memberPrice || cur.salePrice) : cur.salePrice
const n = (originPrice * 1 - cur.discount_sale_amount * 1) * cur.number
return acc + (n <= 0 ? 0 : n)
}, 0)
return listTotal
})
// 优惠
const yiyouhui = computed(() => {
const youhui = giftMoney.value
const youhui = giftMoney.value * 1 + vipDiscount.value * 1 + singleDiscount.value * 1
if (youhui > 0) {
return '已优惠¥' + youhui.toFixed(2)
}
return ''
})
//历史订单价格
const oldOrderMoney = computed(() => {
let total = 0
for (let i in oldOrder.value.detailMap) {
console.log(oldOrder.value)
total += oldOrder.value.detailMap[i].reduce((prve: number, cur: any) => {
const discount_sale_amount = cur.discount_sale_amount * 1 || 0
const memberPrice = cur.skuData ? (cur.skuData.memberPrice || cur.skuData.salePrice) : 0
const price = (discount_sale_amount || cur.salePrice || 0)
return prve + cur.number * (discount_sale_amount || (useVipPrice.value ? memberPrice : price))
}, 0)
}
return total
})
//支付总价
const payMoney = computed(() => {
const money = list.value.reduce((acc: number, cur: any) => {
const discount_sale_amount = cur.discount_sale_amount * 1 || 0
const memberPrice = cur.skuData ? (cur.skuData.memberPrice || cur.skuData.salePrice) : 0
const price = (cur.discount_sale_amount * 1 || cur.salePrice || 0)
return acc + cur.number * (useVipPrice.value ? memberPrice : price)
return acc + cur.number * (discount_sale_amount || (useVipPrice.value ? memberPrice : price))
}, 0)
return (money + packFee.value).toFixed(2)
return (money + packFee.value + oldOrderMoney.value * 1).toFixed(2)
})
//总计数量
const totalNumber = computed(() => {
@@ -130,7 +188,14 @@ export const useCartsStore = defineStore("carts", () => {
const giftNumber = list.value.reduce((acc: number, cur: any) => {
return acc + cur.number * 1
}, 0)
return cartNumber + giftNumber
let oldNumber = 0
for (let i in oldOrder.value.detailMap) {
oldNumber += oldOrder.value.detailMap[i].reduce((prve: number, cur: any) => {
return prve + cur.number * 1
}, 0)
}
return cartNumber + giftNumber + oldNumber
})
@@ -238,6 +303,10 @@ export const useCartsStore = defineStore("carts", () => {
if (cart.number * 1 < cart.skuData.suitNum * 1) {
return sendMessage('del', cart);
}
console.log(key, val)
if (key == 'discount_sale_amount' && val * 1 <= 0) {
return ElMessage.error('价格不能为0')
}
sendMessage('edit', { ...cart, [key]: val });
}
@@ -245,13 +314,12 @@ export const useCartsStore = defineStore("carts", () => {
sendMessage('cleanup', {});
}
function dataReset() {
list.value = [];
giftList.value = [];
selListIndex.value = -1
selListIndex.value = -1;
selPlaceNum.value = 1
isOldOrder.value = false
selListIndex.value = -1;
isSelGift.value = false
list.value = [];
giftList.value = [];
}
// 寻找套餐商品sku
@@ -304,14 +372,15 @@ export const useCartsStore = defineStore("carts", () => {
const newData: { [key: string]: any } = {}
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(v)
return {
...skuData,
placeNum: v.placeNum,
number: v.num,
id: v.id
id: v.id,
pack_number: v.packNumber,
discount_sale_amount: v.discountSaleAmount * 1 || 0
}
})
}
@@ -332,7 +401,7 @@ export const useCartsStore = defineStore("carts", () => {
...$oldOrder,
detailMap: returnDetailMap($oldOrder.detailMap)
}
console.log('initParams', initParams)
console.log('oldOrder.detailMap', oldOrder.value.detailMap)
table_code.value = initParams && initParams.table_code ? initParams.table_code : '';
@@ -454,13 +523,7 @@ export const useCartsStore = defineStore("carts", () => {
}
}
if (msg.operate_type === "manage_cleanup") {
list.value = []
giftList.value = []
oldOrder.value = {
detailMap: [],
originAmount: 0
}
table_code.value = ''
dataReset()
}
console.log(list.value)
});
@@ -478,6 +541,8 @@ export const useCartsStore = defineStore("carts", () => {
WebSocketManager.sendMessage(msg);
}
return {
singleDiscount,
vipDiscount,
dataReset,
useVipPrice,
changeUser,
@@ -503,6 +568,6 @@ export const useCartsStore = defineStore("carts", () => {
};
});
export function useDictStoreHook() {
export function useCartsStoreHook() {
return useCartsStore(store);
}

View File

@@ -25,6 +25,10 @@ export const usePermissionStore = defineStore("permission", () => {
*/
function generateRoutes() {
return new Promise<RouteRecordRaw[]>((resolve, reject) => {
if (isTest) {
isRoutesLoaded.value = true;
resolve(constantRoutes);
}
MenuAPI.getRoutes()
.then((data) => {
if (!isTest) {

View File

@@ -9,6 +9,8 @@ import UserAPI, { type UserInfo } from "@/api/system/user";
import { setToken, setRefreshToken, getRefreshToken, clearToken } from "@/utils/auth";
export const useUserStore = defineStore("user", () => {
// const isShopAdmin = ref(false) // 0商户 1员工
const isShopAdmin = useStorage("isShopAdmin", false) // 0商户 1员工
const userInfo = useStorage<UserInfo>("userInfo", {} as UserInfo);
const promissionList = useStorage<string[]>("promissionList", [] as string[]);
@@ -26,6 +28,7 @@ export const useUserStore = defineStore("user", () => {
return new Promise<void>((resolve, reject) => {
AuthAPI.login(loginRequest)
.then((data) => {
isShopAdmin.value = data.loginType == 0 ? true : false;
Object.assign(userInfo.value, { ...data.shopInfo, shopId: data.shopInfo.id });
promissionList.value = data.promissionList;
const token = data.tokenInfo.tokenValue;
@@ -115,6 +118,7 @@ export const useUserStore = defineStore("user", () => {
}
return {
isShopAdmin,
userInfo,
promissionList,
getUserInfo,