优化打包、订单云打印

This commit is contained in:
gyq 2025-03-18 17:19:59 +08:00
parent 64f539623f
commit 177d987769
10 changed files with 116 additions and 35 deletions

View File

@ -113,8 +113,8 @@ export default (data) => {
`;
let tableBody = "";
if (data.productDatalist && data.productDatalist.length) {
for (let item of data.productDatalist) {
if (data.productDataList && data.productDataList.length) {
for (let item of data.productDataList) {
tableBody += `
<tr>
<td style="font-size: 12px;width:75%;">

View File

@ -28,7 +28,7 @@
</div>
<span class="title">{{ item.payName }}</span>
</div>
<div class="item" :class="{ active: payActive == 'buyer' }"
<!-- <div class="item" :class="{ active: payActive == 'buyer' }"
@click="payTypeChange('buyer', { payType: 'buyer' })">
<div class="icon">
<div class="img"
@ -37,7 +37,7 @@
</div>
</div>
<span class="title">挂账</span>
</div>
</div> -->
</div>
<div class="input_wrap">
<div class="input" style="flex: 1">付款{{ money }}</div>
@ -255,11 +255,16 @@ const props = defineProps({
orderList: {
type: Array,
default: []
},
isPrint: {
type: [Number, String],
default: 1,
}
});
watch(props, () => {
money.value = formatDecimal(props.amount)
payData.value.checkOrderPay.isPrint = props.isPrint
})
const emit = defineEmits(["paySuccess", 'orderExpired']);
@ -383,14 +388,18 @@ async function payTypeChange(index, item) {
SelectVipUserRef.value.show()
}
}
if (item.payType == "buyer") {
if (item.payType == "arrears") {
//
showBuyerHandle();
}
if (payActive.value != "buyer") {
if (payList.value[payActive.value].payType == "deposit") {
scanModalRef.value.show();
}
if(item.payType == 'deposit'){
scanModalRef.value.show();
}
// if (payActive.value != "buyer") {
// if (payList.value[payActive.value].payType == "deposit") {
// }
// }
} catch (error) {
console.log(error);
}
@ -406,7 +415,7 @@ async function confirmOrder() {
payData.value.checkOrderPay.couponList = [...couponResList1.value.map(item => item.id), ...couponResList2.value.map(item => item.id)];
// await staffPermission("yun_xu_shou_kuan");
if (payActive.value == "buyer") {
if (payList.value[payActive.value].payType == "arrears") {
showBuyerHandle();
return
} else if (payList.value[payActive.value].payType == "scanCode") {
@ -823,6 +832,7 @@ function reset() {
roundAmount: 0, //
pointsDiscountAmount: 0, // (tb_points_basic_setting)
pointsNum: 0, // 使 ( enable_deduction使)
isPrint: props.isPrint
},
};
}

View File

@ -7,7 +7,7 @@
<el-button plain type="info" style="width: 100%" @click="inputHandle(item)">{{ item }}</el-button>
</div>
<div>
<el-button plain type="info" disabled style="width: 100%">.</el-button>
<el-button plain type="info" style="width: 100%" @click="inputHandle('.')">.</el-button>
</div>
<div>
<el-button plain type="info" style="width: 100%" @click="inputHandle(0)">0</el-button>
@ -17,7 +17,8 @@
</div>
</div>
<div class="footer">
<el-button type="primary" style="width: 100%" :loading="loading" @click="confirmHandle">确认</el-button>
<el-button type="primary" style="width: 100%" :disabled="number <= 0" :loading="loading"
@click="confirmHandle">确认</el-button>
</div>
</el-dialog>
</template>
@ -25,6 +26,7 @@
<script setup>
import { ref } from "vue";
import { ElMessage } from "element-plus";
import { clearNoNum } from '@/utils/index.js'
const props = defineProps({
type: {
@ -61,6 +63,7 @@ function opne() {
//
function inputHandle(n) {
number.value += n;
number.value = clearNoNum({ value: number.value })
}
//
@ -72,7 +75,7 @@ function delHandle() {
const loading = ref(false)
//
function confirmHandle() {
if (!number.value) return
if (!number.value || !number.value <= 0) return
if (props.type == 2) {
if (number.value.length < 6) {
ElMessage.error('请输入正确的密码')

View File

@ -20,7 +20,7 @@ export const useGoods = defineStore("goods", {
// tableCode: "66666666",
// }, // 台桌信息
tableInfo: {
id: '',
id: "",
name: "",
num: "",
tableCode: "",
@ -175,7 +175,6 @@ export const useGoods = defineStore("goods", {
}),
});
}
// val = this.completeGoodsInfo(val);
this.orderList = arr;
console.log("this.orderList===", this.orderList);
}
@ -189,15 +188,17 @@ export const useGoods = defineStore("goods", {
await this.getGoodsList();
let tableCode = useStorage.get("tableCode");
if (tableCode) this.historyOrderAjax(tableCode);
if (tableCode) {
await this.historyOrderAjax(tableCode);
}
},
// 切换商品分类
setCategoryIndex(index) {
async setCategoryIndex(index) {
this.categoryIndex = index;
useStorage.set("categoryIndex", index);
if (index == 0) {
// this.getGoodsList();
await this.getGoodsList();
this.goodsList = _.chunk(this.originGoodsList, 12);
}
// else if (this.categoryList[index].id == "off_sale") {
@ -276,7 +277,11 @@ export const useGoods = defineStore("goods", {
let packCount = 0;
arr.map((val, index) => {
numCount += +val.number;
if (val.product_type == "weight") {
numCount++;
} else {
numCount += +val.number;
}
packCount += +val.pack_number;
val = this.completeGoodsInfo(val);
val.active = false;
@ -315,6 +320,8 @@ export const useGoods = defineStore("goods", {
},
// 添加商品到购物车
addCart(params) {
console.log("添加商品到购物车===", params);
let tableCode = "";
if (this.tableInfo.tableCode) {
tableCode = this.tableInfo.tableCode;
@ -325,12 +332,19 @@ export const useGoods = defineStore("goods", {
tableCode = useStorage.get("tableCode");
}
}
let pack_number = 0;
if (params.type == "weight") {
pack_number = 1;
} else {
pack_number = params.number;
}
const sendData = {
table_code: tableCode,
product_id: params.productId || "",
sku_id: params.id || "",
number: params.number || 1,
pack_number: this.allSelected ? params.number : 0,
pack_number: this.allSelected ? pack_number : 0,
is_gift: params.is_gift || 0,
is_temporary: params.is_temporary || 0,
discount_sale_amount: params.discount_sale_amount || 0,
@ -342,6 +356,7 @@ export const useGoods = defineStore("goods", {
sku_name: params.sku_name || "",
pro_group_info: params.pro_group_info || [],
goods_type: params.goods_type || "",
product_type: params.type,
};
this.operateCart(sendData, "add");
},
@ -436,7 +451,7 @@ export const useGoods = defineStore("goods", {
}
item.product_id = item.productId;
item.lowPrice = val.lowPrice;
item.lowPrice = val.lowPrice || 0;
item.sku_name = sku && sku.specInfo;
item.group_type = val.groupType;
item.goods_type = val.type;
@ -490,12 +505,25 @@ export const useGoods = defineStore("goods", {
}
this.operateCart({ table_code: tableCode }, "cleanup");
},
// 商品更新后,需要对购物车、订单进行更新
async updateGoodsList() {
const socket = useSocket();
await this.getCategoryList();
await this.getGoodsList();
socket.cartInit();
},
// 清空购物车回执操作
successClearCart() {
async successClearCart() {
this.cartList = [];
this.cartInfo = {};
this.orderList = [];
this.orderListInfo = "";
// 存在真实台桌,需要拉取历史订单
if (this.tableInfo.id) {
await this.historyOrderAjax(this.tableInfo.tableCode);
}
this.calcCartInfo();
},
// 下单成功清除购物车,重新加载订单

View File

@ -143,6 +143,9 @@ export const useSocket = defineStore("socket", {
this.orderList.push(data.data);
this.startPrintInterval();
}
} else if (data.data_type == "product_update") {
// 商品更新
goodsStore.updateGoodsList();
}
});

View File

@ -182,7 +182,9 @@ export function commOrderPrintData(orderInfo) {
skuName: item.skuName,
salePrice: formatDecimal(item.price),
totalAmount: formatDecimal(+item.payAmount),
proGroupInfo: item.proGroupInfo.map((item) => item.goods).flat(),
proGroupInfo: item.proGroupInfo
? item.proGroupInfo.map((item) => item.goods).flat()
: "",
});
});

View File

@ -48,7 +48,7 @@
</el-icon>
<el-text class="t">赠送</el-text>
</div>
<div class="item" @click="packHandle">
<div class="item" :class="{ disabled: goodsStore.allSelected }" @click="packHandle">
<el-icon class="icon">
<Box />
</el-icon>
@ -348,14 +348,14 @@ async function returnOrderItemAjax(num = 1) {
//
function packHandle() {
let item = goodsStore.cartList[goodsStore.cartActiveIndex]
if (item && item.id) {
if (item && item.id && !goodsStore.allSelected) {
if (!item.pack_number || item.pack_number <= 0) {
if (item.number > 1) {
if (item.number > 1 && item.goods_type != 'weight') {
// 1
showPackModal.value = true
} else {
// 1
goodsStore.operateCart({ ...item, pack_number: item.number }, 'edit')
goodsStore.operateCart({ ...item, pack_number: 1 }, 'edit')
}
} else {
//
@ -400,12 +400,20 @@ function numberChange(t) {
if (item.number < item.suitNum) {
goodsStore.deleteCartItem()
} else {
goodsStore.operateCart(goodsStore.cartList[goodsStore.cartActiveIndex], 'edit')
if (goodsStore.allSelected) {
goodsStore.operateCart({ ...goodsStore.cartList[goodsStore.cartActiveIndex], pack_number: goodsStore.cartList[goodsStore.cartActiveIndex].number }, 'edit')
} else {
goodsStore.operateCart(goodsStore.cartList[goodsStore.cartActiveIndex], 'edit')
}
}
break;
case 'add':
goodsStore.cartList[goodsStore.cartActiveIndex].number++
goodsStore.operateCart(goodsStore.cartList[goodsStore.cartActiveIndex], 'edit')
if (goodsStore.allSelected) {
goodsStore.operateCart({ ...goodsStore.cartList[goodsStore.cartActiveIndex], pack_number: goodsStore.cartList[goodsStore.cartActiveIndex].number }, 'edit')
} else {
goodsStore.operateCart(goodsStore.cartList[goodsStore.cartActiveIndex], 'edit')
}
break;
default:
break;
@ -415,7 +423,11 @@ function numberChange(t) {
//
function updateNumber(num) {
goodsStore.cartList[goodsStore.cartActiveIndex].number = num
goodsStore.operateCart({ ...goodsStore.cartList[goodsStore.cartActiveIndex] }, 'edit')
if (goodsStore.allSelected) {
goodsStore.operateCart({ ...goodsStore.cartList[goodsStore.cartActiveIndex], pack_number: goodsStore.cartList[goodsStore.cartActiveIndex].number }, 'edit')
} else {
goodsStore.operateCart(goodsStore.cartList[goodsStore.cartActiveIndex], 'edit')
}
}
//

View File

@ -57,7 +57,7 @@
<template v-else>
<div class="li" @click.stop="goodEditor(item, 0)">下架</div>
<div class="li" @click.stop="goodEditor(item, 1)">售罄</div>
<div class="li" @click.stop="goodStockNumberHandle(item)">修改库存</div>
<!-- <div class="li" @click.stop="goodStockNumberHandle(item)">修改库存</div> -->
</template>
<div class="li" @click.stop="item.showMore = false">取消</div>
</div>

View File

@ -35,7 +35,7 @@
<div class="footer">
<!-- <el-button icon="Edit"></el-button> -->
<div class="button">
<el-checkbox v-model="isPrint" border label="打印结算小票" style="width: 100%" />
<el-checkbox v-model="isPrint" :true-value="1" :false-value="0" border label="打印结算小票" style="width: 100%" />
</div>
<!-- <div class="print">
<el-button type="warning" :loading="discountLoading" @click="showStaffDiscountHandle">添加折扣</el-button>
@ -47,7 +47,8 @@
</div>
<div class="pay_wrap">
<payCard ref="payCardRef" :orderList="orderList" :amount="cartInfo.totalAmount"
:orderId="goodsStore.orderListInfo.id" @paySuccess="paySuccess" @orderExpired="orderExpiredHnadle" />
:orderId="goodsStore.orderListInfo.id" @paySuccess="paySuccess" @orderExpired="orderExpiredHnadle"
:isPrint="0" />
</div>
</div>
<!-- <el-dialog v-model="showStaffDiscount" title="员工折扣" @close="global.updateData(true)">
@ -137,7 +138,7 @@ const props = defineProps({
const cartList = ref([])
const orderList = ref([])
const isPrint = ref(true);
const isPrint = ref(1);
const discountLoading = ref(false)
//

View File

@ -119,7 +119,7 @@
<div class="left" v-else></div>
<div class="right">
<el-text>
{{ formatDecimal(goodsStore.cartInfo.total, 2, true) }}
{{ formatDecimal(goodsStore.cartInfo.total || 0, 2, true) }}
</el-text>{{ formatDecimal(goodsStore.cartInfo.totalAmount || 0) }}
</div>
</div>
@ -269,6 +269,8 @@ async function createOrderHandle(t = 0) {
if (t == 1) {
settleAccountRef.value.show(t)
} else {
goodsStore.clearCart()
}
//
@ -317,8 +319,28 @@ function giftPackHandle(key, item) {
const allSelectedHandle = async () => {
if (goodsStore.allSelected) {
goodsStore.allSelected = 0
//
if (goodsStore.orderList.length) {
await goodsStore.historyOrderAjax(goodsStore.orderListInfo.tableCode)
goodsStore.calcCartInfo()
}
} else {
goodsStore.allSelected = 1
//
if (goodsStore.orderList.length) {
goodsStore.orderList.map(item => {
item.goods.map(val => {
if (val.goods_type == 'weight') {
val.pack_number = 1
} else {
val.pack_number = val.number
}
})
})
goodsStore.calcCartInfo()
}
}
if (goodsStore.cartList.length) {