优化打印 优化退单

This commit is contained in:
gyq
2025-03-17 09:47:49 +08:00
parent d08a629b0a
commit 64f539623f
14 changed files with 279 additions and 118 deletions

View File

@@ -3,14 +3,17 @@
<el-dialog title="转桌/并桌" width="700px" v-model="visible" @closed="onClose" top="3vh">
<div class="scroll_y">
<el-form :model="form" ref="formRef" :rules="rules" label-position="top">
<el-form-item label="当前台桌" v-if="goodsStore.tableInfo.id">
{{ goodsStore.tableInfo.name }}
</el-form-item>
<el-form-item label="转入台桌" prop="targetTableId">
<el-select v-model="form.targetTableId" style="width: 200px;" placeholder="请选择目标台桌">
<el-option :label="item.name" :value="item.qrcode" v-for="item in tableList"
:key="item.qrcode"></el-option>
<el-option :label="item.name" :value="item.id" v-for="item in tableList"
:key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="转入类型">
<el-radio-group v-model="form.isFull">
<el-form-item label="转入类型" prop="cartIds">
<el-radio-group v-model="form.isFull" @change="tableChange">
<el-radio :value="false" border>转桌可将部分商品转入</el-radio>
<el-radio :value="true" border>并桌并台会将全部购物车商品转入</el-radio>
</el-radio-group>
@@ -24,7 +27,7 @@
<el-table-column label="价格" prop="lowPrice"></el-table-column>
</el-table>
</el-form-item>
<el-form-item label="已下单商品" prop="cartIds" v-if="!form.isFull">
<el-form-item label="已下单商品" v-if="!form.isFull && goodsStore.orderList.length">
<div v-for="item in goodsStore.orderList" style="width: 100%;">
<div>{{ `${item.orderNum}次下单` }}</div>
<el-table ref="orderTableRefs" :data="item.goods" border stripe>
@@ -51,30 +54,25 @@
<script setup>
import { onMounted, ref } from 'vue'
import { orderSwitcht } from '@/api/product.js'
import { mergeOrder } from '@/api/order.js'
import { useGoods } from '@/store/goods.js'
import { useUser } from "@/store/user.js"
import { ElMessage } from 'element-plus'
import { shopTable } from "@/api/account.js";
import useStorage from '@/utils/useStorage.js'
import { useSocket } from '@/store/socket.js'
const emits = defineEmits(['success'])
const store = useUser()
const socket = useSocket()
const goodsStore = useGoods()
const visible = ref(false)
const cartTableRefs = ref(null)
const orderTableRefs = ref(null)
const orderTableRefs = ref([])
const loading = ref(false)
const formRef = ref(null)
const resetForm = ref({})
const form = ref({
shopId: store.userInfo.shopId,
masterId: '',
orderId: '',
cartIds: [],
isFull: false,
currentTableId: '',
targetTableId: '',
isFull: false,
})
const rules = ref({
@@ -89,14 +87,19 @@ const rules = ref({
{
required: true,
validator: (rule, value, callback) => {
let arr = []
props.data.map((item, index) => {
arr.push(...tableRefs.value[index].getSelectionRows())
})
if (!form.value.isFull) {
let arr = []
arr.push(...cartTableRefs.value.getSelectionRows())
if (!arr.length) {
ElMessage.error('至少选择一个商品')
callback(new Error('至少选择一个商品'))
goodsStore.orderList.map((item, index) => {
arr.push(...orderTableRefs.value[index].getSelectionRows())
})
if (!arr.length) {
callback(new Error('至少选择一个商品'))
} else {
callback()
}
} else {
callback()
}
@@ -106,13 +109,18 @@ const rules = ref({
]
})
// 切换道并桌时清除掉所有验证
function tableChange(e) {
if (e) formRef.value.clearValidate('cartIds')
}
const tableList = ref([])
// 获取台桌列表
async function queryShopTableAjax() {
try {
const res = await shopTable({
status: 'using',
isBind: true
// status: 'using',
// isBind: true
})
tableList.value = res.records
} catch (error) {
@@ -126,32 +134,66 @@ function confirmHandle() {
try {
if (valid) {
loading.value = true
form.value.masterId = props.data[0].info[0].masterId
form.value.orderId = props.data[0].info[0].orderId
form.value.currentTableId = props.data[0].info[0].tableId
if (!form.value.isFull) {
let arr = []
props.data.map((item, index) => {
arr.push(...tableRefs.value[index].getSelectionRows())
let targetTable = tableList.value.find(item => item.id == form.value.targetTableId)
let sourceOrderId = goodsStore.orderListInfo.id
let targetOrderId = targetTable.orderId
let targetTableCode = targetTable.tableCode
let detailIds = []
if (form.value.isFull) {
goodsStore.orderList.map((item, index) => {
item.goods.map(val => {
detailIds.push(val.id)
})
})
} else {
goodsStore.orderList.map((item, index) => {
detailIds.push(...orderTableRefs.value[index].getSelectionRows().map(item => item.id))
})
form.value.cartIds = arr.map(item => item.id)
}
await orderSwitcht(form.value)
loading.value = false
// 更新台桌信息
// 在这里做点什么
if (detailIds.length) {
await mergeOrder({
sourceOrderId: sourceOrderId, // 来源订单id
targetOrderId: targetOrderId, // 目标台桌订单id
targetTableCode: targetTableCode, // 目标台桌码
detailIds: detailIds // 转台详情
})
if (!goodsStore.cartList.length) {
useStorage.set('tableCode', targetTableCode)
goodsStore.successClearCart();
goodsStore.historyOrderAjax(targetTableCode);
socket.cartInit();
}
}
if (goodsStore.cartList.length) {
let table_code = goodsStore.cartList[0].table_code
let new_table_code = targetTable.tableCode
let cart_id = []
if (form.value.isFull) {
cart_id = goodsStore.cartList.map(item => item.id)
} else {
cart_id = cartTableRefs.value.getSelectionRows().map(item => item.id)
}
goodsStore.operateCart({
table_code: table_code,
new_table_code: new_table_code,
cart_id: cart_id
}, 'rottable')
}
visible.value = false
emits('success', { isTemporary: true })
}
} catch (error) {
loading.value = false
console.log(error);
}
loading.value = false
})
}
@@ -161,8 +203,10 @@ function onClose() {
}
function show() {
visible.value = true
queryShopTableAjax()
if (goodsStore.cartList.length || goodsStore.orderList.length) {
visible.value = true
queryShopTableAjax()
}
}
defineExpose({