From 833676f545a58e7aff569a891a22cfdeb0800359 Mon Sep 17 00:00:00 2001 From: YeMingfei666 <1619116647@qq.com> Date: Tue, 4 Mar 2025 18:05:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BB=A3=E5=AE=A2=E4=B8=8B=E5=8D=95?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/api/account/table.ts | 16 ++- src/api/order/order.ts | 8 ++ src/store/modules/carts.ts | 34 +++-- src/utils/websocket.ts | 5 +- src/views/order/index/components/detail.vue | 20 ++- .../order/index/components/return-money.vue | 6 +- src/views/order/index/index.vue | 12 +- .../system-setting/pay-types/config/config.ts | 1 + .../Instead/components/carts/extra-fee.vue | 4 +- .../tool/Instead/components/carts/item.vue | 10 +- .../tool/Instead/components/carts/list.vue | 66 +++++++-- .../tool/Instead/components/choose-user.vue | 4 +- .../Instead/components/dialog-goods-sel.vue | 2 +- .../tool/Instead/components/diner-number.vue | 2 +- src/views/tool/Instead/components/note.vue | 6 +- src/views/tool/Instead/components/order.vue | 64 +++++++-- src/views/tool/Instead/components/pack.vue | 4 +- .../Instead/components/popup-linshiCai.vue | 8 +- .../Instead/components/popup-taocan-goods.vue | 2 +- .../Instead/components/popup-weight-goods.vue | 12 +- .../tool/Instead/components/scan-pay.vue | 4 +- src/views/tool/Instead/index.vue | 127 ++++++++++++------ src/views/tool/table/index.vue | 4 +- 24 files changed, 307 insertions(+), 116 deletions(-) diff --git a/README.md b/README.md index c74fd43..432f451 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ## 宝塔 - + chaozg chaozg123 diff --git a/src/api/account/table.ts b/src/api/account/table.ts index 7db43e3..02586a5 100644 --- a/src/api/account/table.ts +++ b/src/api/account/table.ts @@ -18,11 +18,11 @@ const API = { }); }, // 获取台桌详情 - get(id: string | number) { + get(params: getRequest) { return request({ url: `${baseURL}/detail`, method: "get", - params: { id } + params }); }, edit(data: editRequest) { @@ -122,7 +122,17 @@ export interface editRequest { status?: null | string; [property: string]: any; } - +export interface getRequest { + /** + * 台桌id + */ + id?: string; + /** + * 桌码 + */ + tableCode?: string; + [property: string]: any; +} export interface getListRequest { /** * 区域id diff --git a/src/api/order/order.ts b/src/api/order/order.ts index 765bef8..9e86c8c 100644 --- a/src/api/order/order.ts +++ b/src/api/order/order.ts @@ -16,6 +16,14 @@ const OrderApi = { data }); }, + //订单详情 + get(params: any) { + return request({ + url: `${baseURL}/getOrderById`, + method: "get", + params + }); + }, // 历史订单(多次下单使用) getHistoryList(params: getHistoryListRequest) { return request({ diff --git a/src/store/modules/carts.ts b/src/store/modules/carts.ts index 54f9731..006e9d8 100644 --- a/src/store/modules/carts.ts +++ b/src/store/modules/carts.ts @@ -24,7 +24,8 @@ export const useCartsStore = defineStore("carts", () => { //台桌id const table_code = ref(''); - + //购物车是否初始化连接加载完成 + const isLinkFinshed = ref(false) //当前购物车数据 const list = useStorage("carts", []); //历史订单数据 @@ -281,7 +282,7 @@ export const useCartsStore = defineStore("carts", () => { if (table_code.value) { sendMessage('rottable', { new_table_code: newVal, - id: list.value[0].id + table_code: table_code.value }); } else { table_code.value = `${newVal}`; @@ -320,6 +321,11 @@ export const useCartsStore = defineStore("carts", () => { isSelGift.value = false list.value = []; giftList.value = []; + oldOrder.value = { + detailMap: [], + originAmount: 0 + } + vipUser.value = {} } // 寻找套餐商品sku @@ -361,6 +367,7 @@ export const useCartsStore = defineStore("carts", () => { name: goods.name, specInfo: skuData.specInfo, packFee: goods.packFee || 0, + type: goods.type, skuData } } else { @@ -386,6 +393,13 @@ export const useCartsStore = defineStore("carts", () => { } return newData } + + function setOldOrder(data: any) { + oldOrder.value = { + ...data, + detailMap: returnDetailMap(data.detailMap) + } + } /** * * @param initParams 购物车初始化参数 @@ -395,12 +409,13 @@ export const useCartsStore = defineStore("carts", () => { function init(initParams: ApifoxModel, $goodsMap: any, $oldOrder: any) { // 商品id对应的数据map - goodsMap = $goodsMap - - oldOrder.value = { - ...$oldOrder, - detailMap: returnDetailMap($oldOrder.detailMap) + if ($goodsMap) { + goodsMap = $goodsMap } + if ($oldOrder) { + setOldOrder($oldOrder) + } + console.log('oldOrder.detailMap', oldOrder.value.detailMap) table_code.value = initParams && initParams.table_code ? initParams.table_code : ''; @@ -423,6 +438,7 @@ export const useCartsStore = defineStore("carts", () => { // 初始化 if (msg.operate_type === "manage_init") { + isLinkFinshed.value = true // 设置单价 list.value = msg.data.filter((v: Record) => { if (v.is_temporary) { @@ -529,7 +545,7 @@ export const useCartsStore = defineStore("carts", () => { }); } - const delArr = ['skuData', 'coverImg', 'specInfo', 'placeNum', 'update_time', 'create_time', 'packFee', 'memberPrice'] + const delArr = ['skuData', 'coverImg', 'specInfo', 'placeNum', 'update_time', 'create_time', 'packFee', 'memberPrice', 'type'] function sendMessage(operate_type: msgType, message: any) { const msg = { ...message, operate_type: operate_type, table_code: table_code.value } if (operate_type == 'edit') { @@ -541,6 +557,8 @@ export const useCartsStore = defineStore("carts", () => { WebSocketManager.sendMessage(msg); } return { + isLinkFinshed, + setOldOrder, singleDiscount, vipDiscount, dataReset, diff --git a/src/utils/websocket.ts b/src/utils/websocket.ts index 76f222f..71ca7d8 100644 --- a/src/utils/websocket.ts +++ b/src/utils/websocket.ts @@ -24,12 +24,13 @@ export type msgType = 'add' | 'reduce' | 'remove' | 'edit' | 'init' | 'cleanup' class WebSocketManager { private client: WebSocket | null = null; private connected: boolean = false; + private shop_id = user.userInfo.shopId ? String(user.userInfo.shopId) : ''; private initParams: ApifoxModel = { type: 'manage', - account: `${user.userInfo.shopId}`, + account: this.shop_id, operate_type: 'init', table_code: '', - shop_id: `${user.userInfo.shopId}`, + shop_id: this.shop_id, }; private onMessage: (message: any) => void = function () { }; private messageHandlers: Map void)[]> = new Map(); diff --git a/src/views/order/index/components/detail.vue b/src/views/order/index/components/detail.vue index dd1c41a..0cad223 100644 --- a/src/views/order/index/components/detail.vue +++ b/src/views/order/index/components/detail.vue @@ -25,7 +25,7 @@ 订单金额 - ¥{{ detail.orderAmount }} + ¥{{ returnOriginAmount }} 订单类型 @@ -97,6 +97,7 @@ 商品信息 + 第{{ index }}次下单 @@ -210,6 +211,23 @@ export default { return n; }, + //计算订单原金额 + returnOriginAmount() { + let amount = 0; + if (this.detail && this.detail.originAmount) { + return this.detail.originAmount; + } + if (!this.detail) { + return 0; + } + for (let i in this.detail.detailMap) { + amount += this.detail.detailMap[i].reduce((pre, cur) => { + return pre + cur.payAmount; + }, 0); + } + + return amount.toFixed(2); + }, }, methods: { returnPayType(payType) { diff --git a/src/views/order/index/components/return-money.vue b/src/views/order/index/components/return-money.vue index dcb0b5f..70ba32a 100644 --- a/src/views/order/index/components/return-money.vue +++ b/src/views/order/index/components/return-money.vue @@ -176,7 +176,7 @@ export default {