diff --git a/src/api/order.js b/src/api/order.js index f0d3ac2..289041a 100644 --- a/src/api/order.js +++ b/src/api/order.js @@ -220,3 +220,16 @@ export function queryPayStatus(params) { params, }); } + +/** + * 订单转桌 + * @param {*} data + * @returns + */ +export function mergeOrder(data) { + return request({ + method: "post", + url: "/order/admin/order/mergeOrder", + data, + }); +} diff --git a/src/components/lodop/refundPrint.js b/src/components/lodop/refundPrint.js index dc17566..a612834 100644 --- a/src/components/lodop/refundPrint.js +++ b/src/components/lodop/refundPrint.js @@ -77,6 +77,9 @@ export default (data) => {

+
备注:${ + data.remark + }
打印时间:${data.printTime}
diff --git a/src/components/payCard/payCard.vue b/src/components/payCard/payCard.vue index 2ef7f89..26834c8 100644 --- a/src/components/payCard/payCard.vue +++ b/src/components/payCard/payCard.vue @@ -68,7 +68,8 @@ + :selecttype="props.selecttype" :payType="payType" :payData="payData" @success="scanCodeSuccess" + @orderExpired="emit('orderExpired')" /> @@ -261,7 +262,7 @@ watch(props, () => { money.value = formatDecimal(props.amount) }) -const emit = defineEmits(["paySuccess"]); +const emit = defineEmits(["paySuccess", 'orderExpired']); const money = ref("0"); const discountRateVlaue = ref(0) @@ -444,6 +445,10 @@ async function confirmOrder() { emit("paySuccess"); } } catch (error) { + if (error.code == 701) { + // 订单已过期需刷新购物车和订单 + emit('orderExpired') + } console.log(error); payLoading.value = false; scanModalRef.value.loading = false; diff --git a/src/components/payCard/scanModal.vue b/src/components/payCard/scanModal.vue index 4e7a4bd..4fb9f1a 100644 --- a/src/components/payCard/scanModal.vue +++ b/src/components/payCard/scanModal.vue @@ -59,17 +59,11 @@ import { useUser } from "@/store/user.js"; import { useGlobal } from '@/store/global.js' import { formatDecimal } from '@/utils' import { microPay, queryOrderStatus, microPayVip, vipPay, queryPayStatus } from '@/api/order.js' +import { ElMessage } from "element-plus"; const store = useUser(); const global = useGlobal() -import { - queryMembermember, - createMembermember, - membermemberScanPay, - accountPaymember, -} from "@/api/member/index.js"; -import { ElMessage } from "element-plus"; -const emits = defineEmits(["success"]); +const emits = defineEmits(["success", 'orderExpired']); const props = defineProps({ amount: { @@ -181,6 +175,9 @@ async function submitHandle() { userPayWait.value = true; fastOrder.value = error.data autoCheckOrder() + } else if (error.code == 701) { + // 订单已过期需刷新购物车和订单 + emits('orderExpired') } else { scanCode.value = ""; loading.value = false; diff --git a/src/store/goods.js b/src/store/goods.js index 083d743..332b16c 100644 --- a/src/store/goods.js +++ b/src/store/goods.js @@ -7,7 +7,6 @@ import { useUser } from "@/store/user.js"; import { useSocket } from "@/store/socket.js"; import useStorage from "@/utils/useStorage.js"; import { formatDecimal } from "@/utils/index.js"; -import { ElMessage } from "element-plus"; // 商品store + 购物车store export const useGoods = defineStore("goods", { @@ -21,6 +20,7 @@ export const useGoods = defineStore("goods", { // tableCode: "66666666", // }, // 台桌信息 tableInfo: { + id: '', name: "", num: "", tableCode: "", @@ -392,6 +392,8 @@ export const useGoods = defineStore("goods", { let group_text = ""; if (val.type == "package" && item.pro_group_info) { group_text = JSON.parse(item.pro_group_info) + .flat() + .map((item) => item.goods) .flat() .map((item) => item.proName) .join("、"); @@ -548,7 +550,11 @@ export const useGoods = defineStore("goods", { if (+val.pack_number && !val.is_temporary) { packFeeNumber += +val.pack_number; - packFee += +val.pack_number * +val.packFee; + if (+val.pack_number > number) { + packFee += number * +val.packFee; + } else { + packFee += +val.pack_number * +val.packFee; + } } if (val.is_temporary) { diff --git a/src/store/socket.js b/src/store/socket.js index 8941af6..e9c87bb 100644 --- a/src/store/socket.js +++ b/src/store/socket.js @@ -120,7 +120,14 @@ export const useSocket = defineStore("socket", { goodsStore.successClearCart(); break; case "batch": - // 打包 + // 整单打包 + this.cartInit(); + break; + case "rottable": + // 转桌 + useStorage.set("tableCode", data.data.new_table_code); + goodsStore.successClearCart(); + goodsStore.historyOrderAjax(data.data.new_table_code); this.cartInit(); break; default: diff --git a/src/utils/index.js b/src/utils/index.js index 70983c2..e3ccbaa 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -18,7 +18,7 @@ export function RandomNumBoth(Max, Min = 0) { * 去除字符串中除了数字和点以外的其他字符 * @param {Object} obj */ -export function clearNoNum(obj) { +export function clearNoNum(obj) { // 如果用户第一位输入的是小数点,则重置输入框内容 if (obj.value != "" && obj.value.substr(0, 1) == ".") { obj.value = ""; @@ -182,7 +182,7 @@ export function commOrderPrintData(orderInfo) { skuName: item.skuName, salePrice: formatDecimal(item.price), totalAmount: formatDecimal(+item.payAmount), - proGroupInfo: item.proGroupInfo, + proGroupInfo: item.proGroupInfo.map((item) => item.goods).flat(), }); }); diff --git a/src/views/home/components/goods.vue b/src/views/home/components/goods.vue index 6a57cb8..1170999 100644 --- a/src/views/home/components/goods.vue +++ b/src/views/home/components/goods.vue @@ -414,21 +414,24 @@ function searchHandle() { // 确认选择规格回调 function skuConfirm(params) { - // console.log(params); + console.log(params); let goodsItem = goodsStore.cartList.find(goods => goods.product_id == params.productId && goods.sku_id == params.id) if (goodsItem && goodsItem.id) { // 编辑新增 - if (params.type && params.type == 'weight') { + if (params.goods_type == 'weight') { // 称重商品 + console.log('编辑称重商品'); goodsStore.operateCart({ ...goodsItem, number: params.number }, 'edit') - } else if (params.type && params.type == 'package') { + } else if (params.goods_type == 'package') { // 添加 + console.log('添加套餐商品'); goodsStore.addCart({ ...params }) } else { goodsStore.operateCart({ ...goodsItem, number: +goodsItem.number + 1 }, 'edit') } } else { // 添加 + console.log('直接添加'); if (params.type == 'weight') { goodsStore.addCart({ ...params, number: params.number }) } else { @@ -522,7 +525,7 @@ function showSkuHandle(item) { goodsStore.addCart({ ...item.skuList[0], lowPrice: item.skuList[0].salePrice, type: item.type, goods_type: 'package', - pro_group_info: item.groupSnap.map((item) => item.goods), + pro_group_info: item.groupSnap, number: item.skuList[0].suitNum }) } diff --git a/src/views/home/components/groupModal.vue b/src/views/home/components/groupModal.vue index d4a9e43..15cca29 100644 --- a/src/views/home/components/groupModal.vue +++ b/src/views/home/components/groupModal.vue @@ -87,7 +87,7 @@ function show(item, type = 'add') { setTimeout(() => { goodsItem.value.groupSnap.map((item, index) => { item.goods.map((val, i) => { - selectGroup[index].map(sg => { + selectGroup[index].goods.map(sg => { if (val.proId == sg.proId) { tabRefs.value[index].toggleRowSelection(val, true) } @@ -158,8 +158,9 @@ function confirmHandle() { let goodIds = [] goodsItem.value.groupSnap.map((item, index) => { - let selectNum = tabRefs.value[index].getSelectionRows() - goodIds.push(selectNum) + let obj = { ...item } + obj.goods = tabRefs.value[index].getSelectionRows() + goodIds.push(obj) }) // 将商品数据转为一维数组返回 diff --git a/src/views/home/components/settleAccount.vue b/src/views/home/components/settleAccount.vue index f492901..5131378 100644 --- a/src/views/home/components/settleAccount.vue +++ b/src/views/home/components/settleAccount.vue @@ -47,7 +47,7 @@
+ :orderId="goodsStore.orderListInfo.id" @paySuccess="paySuccess" @orderExpired="orderExpiredHnadle" />
+
- + @@ -58,7 +58,7 @@