问题修复
This commit is contained in:
@@ -26,7 +26,7 @@
|
||||
:key="index"
|
||||
class="item"
|
||||
@click="itemClick(item)"
|
||||
:class="[selItem && selItem.id == item.id ? 'selected' : '']"
|
||||
:class="[selItem && selItem.tableCode == item.tableCode ? 'selected' : '']"
|
||||
>
|
||||
<view class="u-flex u-row-between">
|
||||
<view class="u-flex gap-20">
|
||||
@@ -91,7 +91,7 @@ const props = defineProps({
|
||||
|
||||
const selItem = ref("");
|
||||
function itemClick(item) {
|
||||
if (selItem.value && selItem.value.id == item.id) {
|
||||
if (selItem.value && selItem.value.tableCode == item.tableCode) {
|
||||
selItem.value = "";
|
||||
return;
|
||||
}
|
||||
@@ -112,7 +112,7 @@ watch(
|
||||
() => modelValue.value,
|
||||
(newVal, oldVal) => {
|
||||
console.log(newVal, oldVal);
|
||||
selItem.value = list.value.find((item) => item.id == newVal);
|
||||
selItem.value = list.value.find((item) => item.tableCode == newVal);
|
||||
console.log(selItem.value);
|
||||
if (selItem.value) {
|
||||
goodsName.value = selItem.value.name;
|
||||
@@ -123,10 +123,10 @@ watch(
|
||||
watch(
|
||||
() => list.value.length,
|
||||
(newVal, oldVal) => {
|
||||
selItem.value = list.value.find((item) => item.id == modelValue.value);
|
||||
selItem.value = list.value.find((item) => item.tableCode == modelValue.value);
|
||||
console.log(selItem.value);
|
||||
if (selItem.value) {
|
||||
modelValue.value = selItem.value.id;
|
||||
modelValue.value = selItem.value.tableCode;
|
||||
goodsName.value = selItem.value.name;
|
||||
}
|
||||
}
|
||||
@@ -143,12 +143,12 @@ function confirm() {
|
||||
});
|
||||
return;
|
||||
}
|
||||
modelValue.value = selItem.value.id;
|
||||
modelValue.value = selItem.value.tableCode;
|
||||
show.value = false;
|
||||
}
|
||||
async function getTablelist() {
|
||||
const res = await tableApi.getShopTable({ size: 999 });
|
||||
list.value = res.records || [];
|
||||
list.value = (res.records || []).filter((item) => item.tableCode);
|
||||
}
|
||||
onMounted(() => {
|
||||
getTablelist();
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
import { ref, reactive, toRaw, watch, computed ,inject} from "vue";
|
||||
const accountStore=inject('accountStore')
|
||||
const cartStore=inject('cartStore')
|
||||
const orderBtns = [
|
||||
const $orderBtns = [
|
||||
{
|
||||
name: "单品改价",
|
||||
value: "changePrice",
|
||||
@@ -56,6 +56,22 @@ const orderBtns = [
|
||||
name: "赠菜",
|
||||
value: "gift",
|
||||
},
|
||||
{
|
||||
name: "打包",
|
||||
value: "pack",
|
||||
},
|
||||
// {
|
||||
// name: "等叫",
|
||||
// value: "wait",
|
||||
// },
|
||||
// {
|
||||
// name: "免厨打",
|
||||
// value: "noPrint",
|
||||
// },
|
||||
// {
|
||||
// name: "单品备注",
|
||||
// value: "remark",
|
||||
// },
|
||||
{
|
||||
name: "单品上菜",
|
||||
value: "serve",
|
||||
@@ -69,9 +85,6 @@ const orderBtns = [
|
||||
value: "startCooking",
|
||||
},
|
||||
];
|
||||
const selCart = defineModel("selCart", {
|
||||
default: null,
|
||||
});
|
||||
const tableBtns = [
|
||||
{
|
||||
name: "换台",
|
||||
@@ -82,6 +95,21 @@ const tableBtns = [
|
||||
value: "clearTable",
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
const payBeforeBtns = ['单品改价','单品转台','赠菜','打包'];
|
||||
const orderBtns=computed(()=>{
|
||||
if(cartStore.shopInfo.registerType=='after'){
|
||||
return $orderBtns
|
||||
}
|
||||
return $orderBtns.filter(v=>payBeforeBtns.find(item=>item==v.name))
|
||||
|
||||
})
|
||||
|
||||
const selCart = defineModel("selCart", {
|
||||
default: null,
|
||||
});
|
||||
|
||||
const servingSel = ref("");
|
||||
const tableSel = ref("");
|
||||
const emits = defineEmits(["btnClick"]);
|
||||
|
||||
@@ -18,9 +18,13 @@
|
||||
>
|
||||
<view class="u-flex">
|
||||
<text>{{ item.productName }}</text>
|
||||
<view class="u-flex gap-10" style="margin-left: 40rpx">
|
||||
<view class="u-flex gap-20" style="margin-left: 40rpx">
|
||||
<text class="status gift" v-if="item.isGift">赠</text>
|
||||
<template v-if="item.subStatus">
|
||||
<text class="status pack" v-if="item.packNumber > 0"
|
||||
>包
|
||||
<view class="badge">{{ item.packNumber }}</view>
|
||||
</text>
|
||||
<template v-if="item.subStatus &&cartStore.shopInfo.registerType=='after'">
|
||||
<text
|
||||
class="status"
|
||||
:class="[
|
||||
@@ -78,7 +82,7 @@
|
||||
</view>
|
||||
|
||||
<text class="u-flex-1">
|
||||
{{ cartStore.packFee }}
|
||||
{{ cartStore.orderCostSummary.packFee }}
|
||||
</text>
|
||||
</view>
|
||||
</view>
|
||||
@@ -107,12 +111,18 @@ const timer = setInterval(() => {
|
||||
}, 1000);
|
||||
|
||||
//超时时间
|
||||
const maxTime = 10 * 60 * 1000;
|
||||
const maxTime = cartStore.shopInfo.serveTime*60*1000;
|
||||
|
||||
function returnStatusClass(item) {
|
||||
if (item.subStatus == "DELIVERED") {
|
||||
return "success";
|
||||
}
|
||||
if (item.subStatus == "READY_TO_SERVE") {
|
||||
return "warning";
|
||||
}
|
||||
if (item.subStatus == "SENT_OUT") {
|
||||
return "green";
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 返回商品状态文本
|
||||
@@ -123,7 +133,7 @@ function returnSubStatusText(item) {
|
||||
return "待起菜";
|
||||
}
|
||||
if (item.subStatus == "READY_TO_SERVE") {
|
||||
if (item.startOrderTime) {
|
||||
if (item.startOrderTime&&cartStore.shopInfo.isServeTimeControl) {
|
||||
const maxWaitTime = dayjs(item.startOrderTime).add(
|
||||
maxTime,
|
||||
"millisecond"
|
||||
@@ -215,6 +225,7 @@ function itemClick(item) {
|
||||
color: #999;
|
||||
border-color: #999;
|
||||
background-color: rgba(153, 153, 153, 0.25);
|
||||
position: relative;
|
||||
&.default {
|
||||
}
|
||||
&.timeout {
|
||||
@@ -227,13 +238,44 @@ function itemClick(item) {
|
||||
border-color: $my-main-color;
|
||||
background-color: rgba(63, 158, 255, 0.25);
|
||||
}
|
||||
|
||||
&.green {
|
||||
$color: rgba(52, 199, 89, 1);
|
||||
border-color: $color;
|
||||
color: $color;
|
||||
background-color: rgba(52, 199, 89, 0.25);
|
||||
}
|
||||
&.warning {
|
||||
$color: #ff8d28;
|
||||
border-color: $color;
|
||||
color: $color;
|
||||
background-color: rgba(255, 141, 40, 0.25);
|
||||
}
|
||||
&.gift {
|
||||
$color: rgb(255, 159, 46);
|
||||
color: $color;
|
||||
background-color: rgb(255, 240, 223);
|
||||
border-color: $color;
|
||||
}
|
||||
&.pack {
|
||||
$color: rgb(49, 138, 254);
|
||||
color: $color;
|
||||
background-color: rgb(49, 138, 254, 0.25);
|
||||
border-color: $color;
|
||||
}
|
||||
.badge {
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
$height:32rpx;
|
||||
line-height: $height;
|
||||
height: $height;
|
||||
top: calc(-#{$height} / 2);
|
||||
right: calc(-#{$height} / 2);
|
||||
width: $height;
|
||||
border-radius: 50%;
|
||||
font-size: 20rpx;
|
||||
color: #fff;
|
||||
background-color: #ff383c;
|
||||
}
|
||||
}
|
||||
.old-price {
|
||||
text-decoration: line-through;
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
<!-- 转桌 -->
|
||||
<Modal
|
||||
v-model="modalData.show"
|
||||
:width="modalData.key != 'editPersonCount' ? '800rpx' : ''"
|
||||
:width="modalData.key == 'btnClick' ? '800rpx' : ''"
|
||||
:title="modalData.title"
|
||||
confirmText="确定"
|
||||
@confirm="modalConfirm"
|
||||
@@ -68,6 +68,17 @@
|
||||
></up-number-box>
|
||||
</view>
|
||||
</template>
|
||||
<template v-if="modalData.key == 'pack'">
|
||||
<view class="u-p-40 u-font-32 color-333 u-flex u-flex-x-center">
|
||||
<up-number-box
|
||||
v-model="modalData.form.packNumber"
|
||||
integer
|
||||
:min="0"
|
||||
:max="packNumberMax"
|
||||
inputWidth="200"
|
||||
></up-number-box>
|
||||
</view>
|
||||
</template>
|
||||
<template v-if="modalData.key == 'btnClick'">
|
||||
<view class="u-p-40 u-font-32 color-333">
|
||||
<view class="u-flex">
|
||||
@@ -80,22 +91,23 @@
|
||||
></chooseTables>
|
||||
</view>
|
||||
</view>
|
||||
<view class="u-flex u-m-t-44">
|
||||
<text class="font-bold u-m-r-52">转入类型</text>
|
||||
<up-radio-group v-model="modalData.form.type" placement="row">
|
||||
<up-radio
|
||||
:key="1"
|
||||
label="转桌(部分商品转入)"
|
||||
:name="1"
|
||||
></up-radio>
|
||||
<up-radio
|
||||
:key="2"
|
||||
label="并桌(全部商品转入)"
|
||||
:name="2"
|
||||
></up-radio>
|
||||
</up-radio-group>
|
||||
</view>
|
||||
|
||||
<template v-if="modalData.form.type == 1">
|
||||
<!-- <view class="u-flex u-m-t-44">
|
||||
<text class="font-bold u-m-r-52">转入类型</text>
|
||||
<up-radio-group v-model="modalData.form.type" placement="row">
|
||||
<up-radio
|
||||
:key="1"
|
||||
label="转桌(部分商品转入)"
|
||||
:name="1"
|
||||
></up-radio>
|
||||
<up-radio
|
||||
:key="2"
|
||||
label="并桌(全部商品转入)"
|
||||
:name="2"
|
||||
></up-radio>
|
||||
</up-radio-group>
|
||||
</view> -->
|
||||
<view class="u-flex u-m-t-44">
|
||||
<text class="font-bold u-m-r-52">购物车商品</text>
|
||||
</view>
|
||||
@@ -130,13 +142,14 @@ import * as areaApi from "@/http/api/area.js";
|
||||
import yskUtils from "ysk-utils";
|
||||
import go from "@/commons/utils/go.js";
|
||||
|
||||
import { reactive, ref, provide, computed,inject } from "vue";
|
||||
const websocketUtil=inject("websocketUtil")
|
||||
import { reactive, ref, provide, computed, inject } from "vue";
|
||||
const websocketUtil = inject("websocketUtil");
|
||||
|
||||
const cartStore = useCartStore();
|
||||
const accountStore = useAccountStore();
|
||||
|
||||
cartStore.shopInfo=accountStore.shopInfo;
|
||||
cartStore.shopInfo = accountStore.shopInfo;
|
||||
websocketUtil.offMessage();
|
||||
websocketUtil.onMessage((data) => {
|
||||
cartStore.onMessage(data);
|
||||
});
|
||||
@@ -145,6 +158,7 @@ const modalData = reactive({
|
||||
key: "",
|
||||
title: "",
|
||||
form: {
|
||||
packNumber: 0,
|
||||
personCount: 0,
|
||||
targetTableCode: "",
|
||||
checks: [],
|
||||
@@ -192,35 +206,69 @@ async function transferTable() {
|
||||
targetTableCode: modalData.form.targetTableCode,
|
||||
detailIds,
|
||||
});
|
||||
if (!res) {
|
||||
uni.showModal({
|
||||
title: "转桌失败",
|
||||
icon: "none",
|
||||
});
|
||||
return;
|
||||
}
|
||||
uni.showToast({
|
||||
title: "转桌成功",
|
||||
icon: "none",
|
||||
});
|
||||
if (modalData.form.type == 2) {
|
||||
await orderApi.cancelOrder({
|
||||
orderId: cartStore.order.id,
|
||||
shopId: cartStore.order.shopId,
|
||||
});
|
||||
|
||||
const orderRes = await orderApi.getHistoryOrder({
|
||||
tableCode: modalData.form.targetTableCode,
|
||||
});
|
||||
if (orderRes) {
|
||||
options.orderId = orderRes.id;
|
||||
getOrderById();
|
||||
modalData.show = false;
|
||||
modalData.form.targetTableCode = [];
|
||||
modalData.form.checks = [];
|
||||
modalData.form.type = 1;
|
||||
const tableRes = await tableApi.getShopTableDetail({
|
||||
tableCode: modalData.form.targetTableCode,
|
||||
});
|
||||
if (tableRes && tableRes.id) {
|
||||
uni.$emit("choose-table", tableRes);
|
||||
}
|
||||
const orderRes = await orderApi.getHistoryOrder({
|
||||
tableCode: modalData.form.targetTableCode,
|
||||
});
|
||||
if (orderRes) {
|
||||
options.orderId = orderRes.id;
|
||||
}
|
||||
}
|
||||
getOrderById();
|
||||
modalData.show = false;
|
||||
modalData.form.targetTableCode = [];
|
||||
modalData.form.checks = [];
|
||||
modalData.form.type = 1;
|
||||
}
|
||||
|
||||
async function editPersonCount() {
|
||||
cartStore.personCount = modalData.form.personCount;
|
||||
modalData.show = false;
|
||||
}
|
||||
|
||||
function editPackNumber() {
|
||||
const par = {
|
||||
id: selCart.value.id,
|
||||
product_id: selCart.value.product_id,
|
||||
sku_id: selCart.value.sku_id,
|
||||
pack_number: modalData.form.packNumber,
|
||||
};
|
||||
modalData.show = false;
|
||||
modalData.form.packNumber = 0;
|
||||
updateCart(par);
|
||||
}
|
||||
async function modalConfirm(key) {
|
||||
if (modalData.key == "transferTable") {
|
||||
if (modalData.key == "btnClick") {
|
||||
transferTable();
|
||||
}
|
||||
if (modalData.key == "editPersonCount") {
|
||||
editPersonCount();
|
||||
}
|
||||
if (modalData.key == "pack") {
|
||||
editPackNumber();
|
||||
}
|
||||
}
|
||||
|
||||
provide("cartStore", cartStore);
|
||||
@@ -229,6 +277,13 @@ provide("accountStore", accountStore);
|
||||
|
||||
const selCart = ref(null);
|
||||
|
||||
const packNumberMax = computed(() => {
|
||||
if (selCart.value) {
|
||||
return selCart.value.num;
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
|
||||
function back() {
|
||||
uni.navigateBack();
|
||||
}
|
||||
@@ -282,9 +337,19 @@ async function getTablelist() {
|
||||
tableList.value = res.records || [];
|
||||
}
|
||||
async function shopTableClear() {
|
||||
const res = await tableApi.shopTableClear({
|
||||
id: cartStore.table.id,
|
||||
const res = await orderApi.cancelOrder({
|
||||
orderId: cartStore.order.id,
|
||||
shopId: accountStore.shopInfo.id,
|
||||
});
|
||||
if (res) {
|
||||
uni.showToast({
|
||||
title: "清台成功",
|
||||
icon: "none",
|
||||
});
|
||||
setTimeout(() => {
|
||||
uni.navigateBack();
|
||||
}, 1500);
|
||||
}
|
||||
}
|
||||
async function btnClick(type) {
|
||||
if (type == "editPersonCount") {
|
||||
@@ -300,7 +365,7 @@ async function btnClick(type) {
|
||||
if (type == "clearTable") {
|
||||
uni.showModal({
|
||||
title: "提示",
|
||||
content: "是否清空该桌订单",
|
||||
content: "该操作会取消未支付的订单,且无法恢复,是否确认清空该桌订单",
|
||||
success(res) {
|
||||
if (res.confirm) {
|
||||
console.log("清空该桌订单");
|
||||
@@ -310,15 +375,14 @@ async function btnClick(type) {
|
||||
});
|
||||
}
|
||||
if (type == "transfer") {
|
||||
modalData.form.type == 1;
|
||||
modalData.form.type = 1;
|
||||
modalData.title = "转桌";
|
||||
|
||||
modalData.show = true;
|
||||
}
|
||||
if (type == "changeTable") {
|
||||
modalData.form.type == 2;
|
||||
modalData.form.type = 2;
|
||||
modalData.title = "转桌";
|
||||
|
||||
modalData.show = true;
|
||||
}
|
||||
if (type == "serveAll") {
|
||||
@@ -332,6 +396,15 @@ async function btnClick(type) {
|
||||
if (!selCart.value) {
|
||||
return;
|
||||
}
|
||||
selCart.value = cartStore.allCartList.find((v) => v.id == selCart.value.id);
|
||||
|
||||
if (type === "pack") {
|
||||
modalData.title = "打包";
|
||||
modalData.key = "pack";
|
||||
modalData.show = true;
|
||||
console.log(selCart.value);
|
||||
modalData.form.packNumber = selCart.value.packNumber;
|
||||
}
|
||||
if (type == "changePrice") {
|
||||
showModel("discount");
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user