对接订单列表接口

This commit is contained in:
gyq
2025-03-01 14:08:24 +08:00
parent d3ed4ec8e6
commit 573dd88b24
21 changed files with 2769 additions and 1674 deletions

View File

@@ -1,7 +1,7 @@
<template>
<div class="operation_wrap">
<div class="item"
:class="{ disabled: goodsStore.cartList.length && (goodsStore.cartList[goodsStore.cartActiveIndex].number <= 1 || !goodsStore.cartList[goodsStore.cartActiveIndex].id || (goodsStore.cartList[goodsStore.cartActiveIndex].goods_type == 'package' && goodsStore.cartList[goodsStore.cartActiveIndex].group_type == 1)) }"
:class="{ disabled: goodsStore.cartList.length && (!goodsStore.cartList[goodsStore.cartActiveIndex].id || (goodsStore.cartList[goodsStore.cartActiveIndex].goods_type == 'package' && goodsStore.cartList[goodsStore.cartActiveIndex].group_type == 1)) }"
@click="numberChange('sub')">
<el-icon class="icon">
<SemiSelect />
@@ -46,9 +46,7 @@
</el-icon>
<el-text class="t">赠送</el-text>
</div>
<div class="item"
:class="{ disabled: goodsStore.cartList.length && goodsStore.cartList[goodsStore.cartActiveIndex].is_pack }"
@click="giftPackHandle('is_pack')" v-if="shopStore.info.eatModel == 'take-out'">
<div class="item" @click="packHandle">
<el-icon class="icon">
<Box />
</el-icon>
@@ -74,7 +72,7 @@
</el-icon>
<el-text class="t">挂单</el-text>
</div> -->
<div class="item" @click="tableMergingHandle" v-if="goodsStore.tableInfo.tableCode">
<div class="item" @click="tableMergingRef.show()">
<el-icon class="icon">
<EditPen />
</el-icon>
@@ -124,12 +122,39 @@
</div>
</div>
</el-dialog>
<!-- 修改打包数量 -->
<el-dialog v-model="showPackModal" title="打包数量" @open="packModalOpen" width="350">
<div class="dialog">
<div class="el-popover__title content">
<el-form ref="packNumerFormRef" :model="packNumberForm" :rules="packNumberFormRules" label-width="60px"
label-position="left">
<el-form-item label="数量" prop="number">
<el-input v-model="packNumberForm.number"
:placeholder="`最多输入${+packItem.number}${packItem.unitName}`" @input="packNumberInput">
<template #append>{{ packItem.unitName }}</template>
</el-input>
</el-form-item>
</el-form>
</div>
<div class="footer_wrap">
<div class="btn">
<el-button style="width: 100%;" @click="showPackModal = false">取消</el-button>
</div>
<div class="btn">
<el-button type="primary" style="width: 100%;" @click="packFormSubmit">确认</el-button>
</div>
</div>
</div>
</el-dialog>
<!-- 合并/转桌 -->
<tableMerging ref="tableMergingRef" @success="" />
</template>
<script setup>
import { ref } from 'vue'
import { ElMessage } from 'element-plus'
import takeFoodCode from '@/components/takeFoodCode.vue'
import TableMerging from './tableMerging.vue'
import skuModal from '@/components/skuModal.vue'
import { useShop } from '@/store/shop.js'
import { useGoods } from '@/store/goods.js'
@@ -139,6 +164,8 @@ import { updatePrice, orderPrint } from '@/api/product.js'
const shopStore = useShop()
const goodsStore = useGoods()
const tableMergingRef = ref(null)
const props = defineProps({
item: {
type: Object,
@@ -150,6 +177,20 @@ const emit = defineEmits(['confirm', 'delete', 'pending', 'clearCart', 'merging'
const takeFoodCodeRef = ref(null)
const skuModalRef = ref([])
// 显示打包
function packHandle() {
let item = goodsStore.cartList[goodsStore.cartActiveIndex]
if (item && item.id) {
if (item.number > 1) {
// 大于1时需要编辑
showPackModal.value = true
} else {
// 小于1时直接提交
goodsStore.operateCart({ ...item, pack_number: item.number }, 'edit')
}
}
}
// 赠送打包操作
function giftPackHandle(key) {
if (!goodsStore.cartList[goodsStore.cartActiveIndex].id) return
@@ -178,12 +219,14 @@ function numberChange(t) {
let item = goodsStore.cartList.length ? goodsStore.cartList[goodsStore.cartActiveIndex] : ''
if (!item || (item.goods_type == 'package' && item.group_type == 1)) return
// if (!goodsStore.cartList[goodsStore.cartActiveIndex].id || (goodsStore.cartList[goodsStore.cartActiveIndex].goods_type == 'package' && goodsStore.cartList[goodsStore.cartActiveIndex].group_type == 1)) return
switch (t) {
case 'sub':
if (goodsStore.cartList[goodsStore.cartActiveIndex].number <= 1) return
goodsStore.cartList[goodsStore.cartActiveIndex].number--
goodsStore.operateCart(goodsStore.cartList[goodsStore.cartActiveIndex], 'edit')
if (item.number < item.suitNum) {
goodsStore.deleteCartItem()
} else {
goodsStore.operateCart(goodsStore.cartList[goodsStore.cartActiveIndex], 'edit')
}
break;
case 'add':
goodsStore.cartList[goodsStore.cartActiveIndex].number++
@@ -329,14 +372,6 @@ async function kitchenPrint() {
}
/**免厨打印 end */
// 显示合并转桌
function tableMergingHandle() {
if (props.item.id) {
emit('merging')
}
}
// 删除
function deleteHandle() {
if (goodsStore.cartList[goodsStore.cartActiveIndex].id) {
@@ -348,6 +383,59 @@ function deleteHandle() {
function clearCart() {
goodsStore.clearCart()
}
/** 修改打包数量 start */
const showPackModal = ref(false)
const packNumerFormRef = ref(null)
const packItem = ref('')
const packNumberForm = ref({
number: 1
})
const packNumberFormRules = {
number: [
{
required: true,
validator: validatePackNumber,
trigger: 'blur',
}
]
}
// 校验数量是否合法
function validatePackNumber(rule, value, callback) {
if (!packNumberForm.value.number) {
callback(new Error('请输入打包数量'))
} else if (packNumberForm.value.number < 1) {
callback(new Error('输入有误'))
} else if (packNumberForm.value.number > packItem.value.number) {
callback(new Error(`最多输入${+packItem.value.number}${packItem.value.unitName}`))
} else {
callback()
}
}
function packNumberInput(e) {
setTimeout(() => {
packNumberForm.value.number = inputFilterFloat(e)
}, 50)
}
// modal打开时
function packModalOpen() {
packItem.value = goodsStore.cartList[goodsStore.cartActiveIndex]
}
// 提交
function packFormSubmit() {
packNumerFormRef.value.validate(valid => {
if (valid) {
showPackModal.value = false
goodsStore.operateCart({ ...packItem.value, pack_number: packNumberForm.value.number }, 'edit')
}
})
}
/** 修改打包数量 end */
</script>
<style scoped lang="scss">