代客下单增加历史订单,代码优化
This commit is contained in:
parent
eb7522c222
commit
d889b9b1ad
|
|
@ -0,0 +1,265 @@
|
||||||
|
<template>
|
||||||
|
<div
|
||||||
|
class="flex order-item relative"
|
||||||
|
:class="{ active: selIndex === index }"
|
||||||
|
@click="itemClick"
|
||||||
|
>
|
||||||
|
<span class="absolute pack" v-if="item.isPack === 'true'"> 包 </span>
|
||||||
|
<div class="flex">
|
||||||
|
<div class="img">
|
||||||
|
<img :src="item.coverImg" class="" alt="" />
|
||||||
|
</div>
|
||||||
|
<div class="good-info">
|
||||||
|
<div class="flex lh-16">
|
||||||
|
<div class="name">{{ item.name }}</div>
|
||||||
|
<span class="good_info_discount" v-if="item.isGift === 'true'"
|
||||||
|
>赠</span
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<div v-if="item.specSnap" class="specSnap">
|
||||||
|
{{ item.specSnap }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex">
|
||||||
|
<div class="order-number-box">
|
||||||
|
<div class="" style="">X{{ item.number }}</div>
|
||||||
|
<div class="absolute" v-if="canChangeNumber">
|
||||||
|
<div class="order-input-number">
|
||||||
|
<i class="icon-remove" @click="changeOrderNumber(true)"></i>
|
||||||
|
<div style="width: 40px" class="number-box">
|
||||||
|
<el-input
|
||||||
|
:min="0"
|
||||||
|
type="number"
|
||||||
|
@input="cartGoodsNumberInput"
|
||||||
|
@change="cartGoodsNumberChange"
|
||||||
|
v-model="number"
|
||||||
|
placeholder="0"
|
||||||
|
></el-input>
|
||||||
|
</div>
|
||||||
|
<i
|
||||||
|
class="el-icon-circle-plus icon-add"
|
||||||
|
@click="changeOrderNumber(false)"
|
||||||
|
></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-333 total-price">
|
||||||
|
<div v-if="item.isGift === 'true'">¥0</div>
|
||||||
|
<div :class="{ 'free-price': item.isGift === 'true' }">
|
||||||
|
¥{{ item.salePrice }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
//是否允许改变梳理
|
||||||
|
canChangeNumber: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
|
item: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {
|
||||||
|
return {
|
||||||
|
number: 0,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
},
|
||||||
|
selIndex: {
|
||||||
|
type: Number,
|
||||||
|
default: 0,
|
||||||
|
},
|
||||||
|
index: {
|
||||||
|
type: Number,
|
||||||
|
default: 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
number: 0,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
"item.number": function (val) {
|
||||||
|
this.number = val;
|
||||||
|
// this.$emit('changeOrderNumber',this.index)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.number = this.item.number;
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
//购物车商品输入框数量改变
|
||||||
|
cartGoodsNumberChange(newval) {
|
||||||
|
if (newval <= 0) {
|
||||||
|
item.number = 1;
|
||||||
|
}
|
||||||
|
newval = `${newval}`.split(".")[0] * 1;
|
||||||
|
this.number = newval;
|
||||||
|
this.$emit("cartGoodsNumberChange",newval, this.index);
|
||||||
|
|
||||||
|
},
|
||||||
|
//购物车商品输入框数量输入
|
||||||
|
cartGoodsNumberInput(newval) {
|
||||||
|
if (newval <= 0) {
|
||||||
|
return this.number =1
|
||||||
|
}
|
||||||
|
newval = `${newval}`.split(".")[0] * 1;
|
||||||
|
this.number = newval;
|
||||||
|
this.$emit("cartGoodsNumberInput",newval, this.index);
|
||||||
|
},
|
||||||
|
changeOrderNumber(isReduce) {
|
||||||
|
this.$emit("changeOrderNumber", this.index, isReduce);
|
||||||
|
},
|
||||||
|
itemClick() {
|
||||||
|
this.$emit("itemClick", this.index,this.canChangeNumber);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
::v-deep .number-box .el-input__inner {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
::v-deep .el-button--text {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
::v-deep .number-box .el-input__inner {
|
||||||
|
border: none;
|
||||||
|
padding: 0 4px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.icon-remove {
|
||||||
|
border: 1px solid #d8d8d8;
|
||||||
|
width: 22px;
|
||||||
|
height: 22px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: 50%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
width: 10px;
|
||||||
|
height: 1px;
|
||||||
|
background: #999;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.icon-add {
|
||||||
|
color: rgb(34, 191, 100);
|
||||||
|
font-size: 22px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.order-item {
|
||||||
|
padding: 4px;
|
||||||
|
border-radius: 2px;
|
||||||
|
display: flex;
|
||||||
|
cursor: pointer;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
background-color: rgba(0, 0, 0, 0);
|
||||||
|
transition: all 0.3s;
|
||||||
|
.pack {
|
||||||
|
right: 100%;
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
background: #35ac6a;
|
||||||
|
border-radius: 4px 0 4px 0;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #fff;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 17px;
|
||||||
|
}
|
||||||
|
&.active {
|
||||||
|
background-color: rgba(0, 0, 0, 0.04);
|
||||||
|
}
|
||||||
|
|
||||||
|
.total-price {
|
||||||
|
width: 94px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.good-info {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
min-width: 70px;
|
||||||
|
|
||||||
|
.specSnap {
|
||||||
|
color: #999;
|
||||||
|
font-size: 12px;
|
||||||
|
margin-top: 3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.name {
|
||||||
|
font-size: 13px;
|
||||||
|
text-align: left;
|
||||||
|
color: #212121;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.img {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
position: relative;
|
||||||
|
margin-right: 10px;
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-number-box {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.absolute {
|
||||||
|
width: 60px;
|
||||||
|
height: 40px;
|
||||||
|
right: -30px;
|
||||||
|
top: -12px;
|
||||||
|
position: absolute;
|
||||||
|
|
||||||
|
.order-input-number {
|
||||||
|
position: absolute;
|
||||||
|
right: -6px;
|
||||||
|
top: 0;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
display: none;
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #e4e7ed;
|
||||||
|
border-radius: 4px;
|
||||||
|
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);
|
||||||
|
padding: 9px 6px;
|
||||||
|
background-color: #fff;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover .order-input-number {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.good_info_discount {
|
||||||
|
height: 16px;
|
||||||
|
padding: 0 3px;
|
||||||
|
color: #ff3f3f;
|
||||||
|
background-color: rgba(255, 63, 63, 0.1);
|
||||||
|
border-radius: 2px;
|
||||||
|
margin-left: 6px;
|
||||||
|
font-size: 12px;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -260,7 +260,7 @@
|
||||||
<div class="flex-1">
|
<div class="flex-1">
|
||||||
<el-button
|
<el-button
|
||||||
size="medium"
|
size="medium"
|
||||||
:disabled="!order.list.length"
|
:disabled="!order.list.length && !order.old.list.length"
|
||||||
@click="toCreateOrder(true)"
|
@click="toCreateOrder(true)"
|
||||||
>
|
>
|
||||||
去结账
|
去结账
|
||||||
|
|
@ -270,75 +270,46 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<div
|
<!-- 当前购物车列表 -->
|
||||||
|
<template v-if="order.list.length">
|
||||||
|
<cart-item
|
||||||
|
@itemClick="changeOrderSel"
|
||||||
|
@changeOrderNumber="changeOrderNumber"
|
||||||
|
@cartGoodsNumberInput="cartGoodsNumberInput"
|
||||||
|
@cartGoodsNumberChange="cartGoodsNumberChange"
|
||||||
v-for="(item, index) in order.list"
|
v-for="(item, index) in order.list"
|
||||||
:key="index"
|
:key="index"
|
||||||
class="flex order-item relative"
|
:index="index"
|
||||||
:class="{ active: order.selIndex === index }"
|
:item="item"
|
||||||
@click="changeOrderSel(index)"
|
:selIndex="order.selIndex"
|
||||||
>
|
></cart-item>
|
||||||
<span class="absolute pack" v-if="item.isPack === 'true'">
|
</template>
|
||||||
包
|
|
||||||
</span>
|
|
||||||
<div class="flex">
|
|
||||||
<div class="img">
|
|
||||||
<img :src="item.coverImg" class="" alt="" />
|
|
||||||
</div>
|
|
||||||
<div class="good-info">
|
|
||||||
<div class="flex lh-16">
|
|
||||||
<div class="name">{{ item.name }}</div>
|
|
||||||
<span
|
|
||||||
class="good_info_discount"
|
|
||||||
v-if="item.isGift === 'true'"
|
|
||||||
>赠</span
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
<div v-if="item.specSnap" class="specSnap">
|
|
||||||
{{ item.specSnap }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex">
|
|
||||||
<div class="order-number-box">
|
|
||||||
<div class="color-999" style="">X{{ item.number }}</div>
|
|
||||||
<div class="absolute">
|
|
||||||
<div class="order-input-number">
|
|
||||||
<i
|
|
||||||
class="icon-remove"
|
|
||||||
@click="changeOrderNumber(index, '-')"
|
|
||||||
></i>
|
|
||||||
<div style="width: 40px" class="number-box">
|
|
||||||
<el-input
|
|
||||||
:min="0"
|
|
||||||
type="number"
|
|
||||||
@input="cartGoodsNumberInput($event, item)"
|
|
||||||
@change="cartGoodsNumberChange($event, item)"
|
|
||||||
v-model="item.number"
|
|
||||||
placeholder="0"
|
|
||||||
></el-input>
|
|
||||||
</div>
|
|
||||||
<i
|
|
||||||
class="el-icon-circle-plus icon-add"
|
|
||||||
@click="changeOrderNumber(index)"
|
|
||||||
></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="color-333 total-price">
|
|
||||||
¥{{ item.salePrice }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div v-if="order.gift.list.length">
|
<div v-if="order.gift.list.length">
|
||||||
<div class="carts_list_title">以下是优惠菜品</div>
|
<div class="carts_list_title">以下是优惠菜品</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="!order.list.length">
|
<div v-if="!order.list.length">
|
||||||
<el-empty description="点餐列表为空"></el-empty>
|
<el-empty
|
||||||
|
:image-size="50"
|
||||||
|
description="点餐列表为空"
|
||||||
|
></el-empty>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- 已下单菜品列表 -->
|
||||||
|
<template v-if="order.old.list.length">
|
||||||
|
<div class="carts_list_title">已下单菜品</div>
|
||||||
|
<div class="list">
|
||||||
|
<cart-item
|
||||||
|
@itemClick="changeOrderOldSel"
|
||||||
|
:canChangeNumber="false"
|
||||||
|
v-for="(item, index) in order.old.list"
|
||||||
|
:key="index"
|
||||||
|
:index="index"
|
||||||
|
:item="item"
|
||||||
|
:selIndex="order.old.selIndex"
|
||||||
|
></cart-item>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
<div class="order_remark" v-if="note.content">
|
<div class="order_remark" v-if="note.content">
|
||||||
订单备注: {{ note.content }}
|
订单备注: {{ note.content }}
|
||||||
|
|
@ -346,7 +317,10 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<div class="numberbox">
|
<div
|
||||||
|
class="numberbox"
|
||||||
|
:class="{ 'cur-pointer': order.old.selIndex < 0 }"
|
||||||
|
>
|
||||||
<div class="reduce" @click="changeOrderGoodsNumber('-')">-</div>
|
<div class="reduce" @click="changeOrderGoodsNumber('-')">-</div>
|
||||||
<div class="input relative">
|
<div class="input relative">
|
||||||
<div
|
<div
|
||||||
|
|
@ -399,14 +373,14 @@
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="btn"
|
class="btn"
|
||||||
:class="{ disabled: !order.list.length }"
|
:class="{ disabled: !order.list.length ||key}"
|
||||||
@click="saveOrder"
|
@click="saveOrder"
|
||||||
>
|
>
|
||||||
存单
|
存单
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="btn relative"
|
class="btn relative"
|
||||||
:class="{ disabled: !prveOrder.list.length }"
|
:class="{ disabled: !prveOrder.list.length ||key}"
|
||||||
@click="cacheOrderShow"
|
@click="cacheOrderShow"
|
||||||
>
|
>
|
||||||
取单
|
取单
|
||||||
|
|
@ -699,12 +673,16 @@
|
||||||
}}
|
}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!---->
|
<div class="detail_form_item" v-if="createOrder.data.packFee">
|
||||||
|
<div class="left">打包费</div>
|
||||||
|
<div class="right">
|
||||||
|
¥{{ createOrder.data.packFee || "0.00" }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="detail_form_item">
|
<div class="detail_form_item">
|
||||||
<div class="left">桌位费/附加费</div>
|
<div class="left">桌位费/附加费</div>
|
||||||
<div class="right">¥0.00</div>
|
<div class="right">¥0.00</div>
|
||||||
</div>
|
</div>
|
||||||
<!----><!----><!---->
|
|
||||||
<div class="detail_form_item">
|
<div class="detail_form_item">
|
||||||
<div class="left">总价</div>
|
<div class="left">总价</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
|
|
@ -772,27 +750,6 @@
|
||||||
>
|
>
|
||||||
{{ val.name }}
|
{{ val.name }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- <el-tag
|
|
||||||
v-if="val === item.sel"
|
|
||||||
size="medium"
|
|
||||||
:disabled="item.disabled"
|
|
||||||
@click="changeTagSel(index, val)"
|
|
||||||
effect="dark"
|
|
||||||
type="success"
|
|
||||||
>
|
|
||||||
|
|
||||||
{{ val }}
|
|
||||||
</el-tag>
|
|
||||||
<el-tag
|
|
||||||
v-else
|
|
||||||
size="medium"
|
|
||||||
type="success"
|
|
||||||
:disabled="item.disabled"
|
|
||||||
@click="changeTagSel(index, val)"
|
|
||||||
effect="light"
|
|
||||||
>
|
|
||||||
{{ val }}
|
|
||||||
</el-tag> -->
|
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -804,7 +761,7 @@
|
||||||
<div class="price">¥{{ skuGoods.data.salePrice | to2 }}</div>
|
<div class="price">¥{{ skuGoods.data.salePrice | to2 }}</div>
|
||||||
<div class="sku-group-text">
|
<div class="sku-group-text">
|
||||||
<span> {{ skuText }}</span>
|
<span> {{ skuText }}</span>
|
||||||
<span>库存:{{ skuGoods.data.stockNumber || "" }}</span>
|
<span>库存:{{ skuGoods.data.stockNumber || 0 }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
|
|
@ -828,6 +785,14 @@
|
||||||
disabled
|
disabled
|
||||||
>
|
>
|
||||||
已下架
|
已下架
|
||||||
|
</button>
|
||||||
|
<template v-else>
|
||||||
|
<button
|
||||||
|
class="my-btn disabled flex-1"
|
||||||
|
v-if=" skuGoods.data.stockNumber<=0"
|
||||||
|
disabled
|
||||||
|
>
|
||||||
|
库存不足
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
class="my-btn success flex-1"
|
class="my-btn success flex-1"
|
||||||
|
|
@ -837,6 +802,10 @@
|
||||||
>
|
>
|
||||||
确定
|
确定
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
@ -989,9 +958,11 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import _ from "lodash";
|
||||||
import chooseUser from "./choose-user.vue";
|
import chooseUser from "./choose-user.vue";
|
||||||
import payType from "./pay-type.vue";
|
import payType from "./pay-type.vue";
|
||||||
import chooseTable from "./table-diancan-components/choose-table-master.vue";
|
import chooseTable from "./table-diancan-components/choose-table-master.vue";
|
||||||
|
import cartItem from "./table-diancan-components/cart-item.vue";
|
||||||
import scanPay from "./table-diancan-components/scan-pay.vue";
|
import scanPay from "./table-diancan-components/scan-pay.vue";
|
||||||
import moneyDiscount from "./table-diancan-components/discount.vue";
|
import moneyDiscount from "./table-diancan-components/discount.vue";
|
||||||
import orderNote from "./table-diancan-components/note.vue";
|
import orderNote from "./table-diancan-components/note.vue";
|
||||||
|
|
@ -1020,7 +991,6 @@ import {
|
||||||
generateCombinations,
|
generateCombinations,
|
||||||
returnReverseVal,
|
returnReverseVal,
|
||||||
} from "./util.js";
|
} from "./util.js";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
chooseUser,
|
chooseUser,
|
||||||
|
|
@ -1030,9 +1000,12 @@ export default {
|
||||||
moneyKeyboard,
|
moneyKeyboard,
|
||||||
scanPay,
|
scanPay,
|
||||||
moneyDiscount,
|
moneyDiscount,
|
||||||
|
cartItem,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
//台桌点餐页面打开时带来的参数 isAddGoods 加菜 isPayOrder结账
|
||||||
|
key: "",
|
||||||
//是否是从挂单里取出来的订单
|
//是否是从挂单里取出来的订单
|
||||||
isPrverOrder: false,
|
isPrverOrder: false,
|
||||||
//是否全屏
|
//是否全屏
|
||||||
|
|
@ -1113,6 +1086,11 @@ export default {
|
||||||
list: [],
|
list: [],
|
||||||
selIndex: -1,
|
selIndex: -1,
|
||||||
},
|
},
|
||||||
|
//已下单菜品
|
||||||
|
old: {
|
||||||
|
list: [],
|
||||||
|
selIndex: -1,
|
||||||
|
},
|
||||||
query: {
|
query: {
|
||||||
page: 1,
|
page: 1,
|
||||||
size: 20,
|
size: 20,
|
||||||
|
|
@ -1209,17 +1187,26 @@ export default {
|
||||||
return result.substring(0, result.length - 1);
|
return result.substring(0, result.length - 1);
|
||||||
},
|
},
|
||||||
allPrice() {
|
allPrice() {
|
||||||
|
const oldPrice = this.order.old.list
|
||||||
|
.filter((v) => v.isGift !== "true")
|
||||||
|
.reduce((a, b) => {
|
||||||
|
return a + b.number * b.salePrice;
|
||||||
|
}, 0);
|
||||||
const price = this.order.list
|
const price = this.order.list
|
||||||
.filter((v) => v.isGift !== "true")
|
.filter((v) => v.isGift !== "true")
|
||||||
.reduce((a, b) => {
|
.reduce((a, b) => {
|
||||||
return a + b.number * b.salePrice;
|
return a + b.number * b.salePrice;
|
||||||
}, 0);
|
}, 0);
|
||||||
return price.toFixed(2);
|
return (oldPrice + price).toFixed(2);
|
||||||
},
|
},
|
||||||
allNumber() {
|
allNumber() {
|
||||||
return this.order.list.reduce((a, b) => {
|
const oldNumber = this.order.old.list.reduce((a, b) => {
|
||||||
return a + b.number * 1;
|
return a + b.number * 1;
|
||||||
}, 0);
|
}, 0);
|
||||||
|
const cartNumber = this.order.list.reduce((a, b) => {
|
||||||
|
return a + b.number * 1;
|
||||||
|
}, 0);
|
||||||
|
return oldNumber + cartNumber;
|
||||||
},
|
},
|
||||||
selGoodsHide() {
|
selGoodsHide() {
|
||||||
this.selGoods.show = false;
|
this.selGoods.show = false;
|
||||||
|
|
@ -1252,10 +1239,10 @@ export default {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
"masterId": function (val) {
|
masterId: function (val) {
|
||||||
console.log(val);
|
console.log(val);
|
||||||
},
|
},
|
||||||
"isCreateOrder": function (val) {
|
isCreateOrder: function (val) {
|
||||||
if (!val) {
|
if (!val) {
|
||||||
this.createOrder.discount = 1;
|
this.createOrder.discount = 1;
|
||||||
}
|
}
|
||||||
|
|
@ -1351,7 +1338,7 @@ export default {
|
||||||
// this.order.number = this.order.list[this.order.selIndex].number;
|
// this.order.number = this.order.list[this.order.selIndex].number;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"order.number": function (newval) {
|
"order.number": _.debounce(function (newval) {
|
||||||
if (this.order.list.length <= 0 || this.order.selIndex < 0) {
|
if (this.order.list.length <= 0 || this.order.selIndex < 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -1360,23 +1347,27 @@ export default {
|
||||||
let item = this.order.list[this.order.selIndex];
|
let item = this.order.list[this.order.selIndex];
|
||||||
console.log(item.specSnap);
|
console.log(item.specSnap);
|
||||||
const { productId, skuId, isPack, isGift, number } = item;
|
const { productId, skuId, isPack, isGift, number } = item;
|
||||||
|
const oldGoods = this.order.old.list.find((v) => {
|
||||||
|
return v.productId === productId && v.skuId === skuId;
|
||||||
|
});
|
||||||
$updateCart({
|
$updateCart({
|
||||||
cartId: item.id,
|
cartId: item.id,
|
||||||
productId,
|
productId,
|
||||||
skuId,
|
skuId,
|
||||||
tableId: this.table.tableId,
|
tableId: this.table.tableId,
|
||||||
num: this.order.number, // 0会删除此商品
|
num: this.order.number + (oldGoods ? oldGoods.number : 0), // 0会删除此商品
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
this.$set(this.order.list, this.order.selIndex, {
|
this.$set(this.order.list, this.order.selIndex, {
|
||||||
...res,
|
...res,
|
||||||
specSnap: item.specSnap,
|
specSnap: item.specSnap,
|
||||||
|
number: this.order.number,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
this.updateOrder({
|
this.updateOrder({
|
||||||
num: newval, // 0会删除此商品
|
num: newval, // 0会删除此商品
|
||||||
});
|
});
|
||||||
},
|
}, 30),
|
||||||
"goods.query.productId": function (newval) {
|
"goods.query.productId": function (newval) {
|
||||||
if (!this.$goodsData) {
|
if (!this.$goodsData) {
|
||||||
return;
|
return;
|
||||||
|
|
@ -1416,23 +1407,15 @@ export default {
|
||||||
isShow ? this.$refs[key].open(data) : this.$refs[key].close(data);
|
isShow ? this.$refs[key].open(data) : this.$refs[key].close(data);
|
||||||
},
|
},
|
||||||
//购物车商品输入框数量输入
|
//购物车商品输入框数量输入
|
||||||
cartGoodsNumberInput(newval, item) {
|
cartGoodsNumberInput(newval, index) {
|
||||||
if (newval <= 0) {
|
const item = this.order.list[index];
|
||||||
return (this.order.cacheNumber = 1);
|
console.log(item);
|
||||||
}
|
|
||||||
newval = `${newval}`.split(".")[0] * 1;
|
|
||||||
this.order.cacheNumber = newval;
|
this.order.cacheNumber = newval;
|
||||||
this.$nextTick(() => {
|
|
||||||
item.number = newval;
|
item.number = newval;
|
||||||
});
|
|
||||||
},
|
},
|
||||||
//购物车商品输入框数量改变
|
//购物车商品输入框数量改变
|
||||||
cartGoodsNumberChange(newval, item) {
|
cartGoodsNumberChange(newval, index) {
|
||||||
console.log(newval);
|
const item = this.order.list[index];
|
||||||
if (newval <= 0) {
|
|
||||||
item.number = 1;
|
|
||||||
return (this.order.number = 1);
|
|
||||||
}
|
|
||||||
newval = `${newval}`.split(".")[0] * 1;
|
newval = `${newval}`.split(".")[0] * 1;
|
||||||
console.log(newval);
|
console.log(newval);
|
||||||
this.order.cacheNumber = newval;
|
this.order.cacheNumber = newval;
|
||||||
|
|
@ -1843,6 +1826,7 @@ export default {
|
||||||
}
|
}
|
||||||
this.order.selIndex = index;
|
this.order.selIndex = index;
|
||||||
console.log(index);
|
console.log(index);
|
||||||
|
console.log(isReduce);
|
||||||
const item = this.order.list[index];
|
const item = this.order.list[index];
|
||||||
const mumber = item.number * 1;
|
const mumber = item.number * 1;
|
||||||
const newval = mumber + (isReduce ? -1 : 1);
|
const newval = mumber + (isReduce ? -1 : 1);
|
||||||
|
|
@ -1943,10 +1927,16 @@ export default {
|
||||||
id: "",
|
id: "",
|
||||||
name: "全部",
|
name: "全部",
|
||||||
});
|
});
|
||||||
console.log(this.category.list);
|
|
||||||
},
|
},
|
||||||
|
//改变购物车菜品选中
|
||||||
changeOrderSel(index) {
|
changeOrderSel(index) {
|
||||||
this.order.selIndex = index;
|
this.order.selIndex = index;
|
||||||
|
this.order.old.selIndex = -1;
|
||||||
|
},
|
||||||
|
//改变已下单菜品选中
|
||||||
|
changeOrderOldSel(index) {
|
||||||
|
this.order.old.selIndex = index;
|
||||||
|
this.order.cacheNumber = this.order.old.list[index].number;
|
||||||
},
|
},
|
||||||
chooseSkuConfirm() {
|
chooseSkuConfirm() {
|
||||||
if (this.timer) {
|
if (this.timer) {
|
||||||
|
|
@ -2003,20 +1993,34 @@ export default {
|
||||||
});
|
});
|
||||||
const orderGoods =
|
const orderGoods =
|
||||||
orderGoodsIndex != -1 ? this.order.list[orderGoodsIndex] : undefined;
|
orderGoodsIndex != -1 ? this.order.list[orderGoodsIndex] : undefined;
|
||||||
console.log(orderGoods);
|
const oldOrderGoods = this.order.old.list.find((V) => {
|
||||||
if (orderGoods) {
|
return V.skuId == item.id && V.productId == this.selGoods.data.id;
|
||||||
|
});
|
||||||
|
if (orderGoods || oldOrderGoods) {
|
||||||
//更新
|
//更新
|
||||||
|
const newNum =
|
||||||
|
(oldOrderGoods ? oldOrderGoods.number : 0) +
|
||||||
|
(orderGoods ? orderGoods.number * 1 : 0) +
|
||||||
|
this.skuGoods.number;
|
||||||
res = await $updateCart({
|
res = await $updateCart({
|
||||||
cartId: orderGoods.id,
|
cartId: orderGoods ? orderGoods.id : oldOrderGoods.id,
|
||||||
productId: this.selGoods.data.id,
|
productId: this.selGoods.data.id,
|
||||||
skuId: item.id,
|
skuId: item.id,
|
||||||
tableId: this.table.tableId,
|
tableId: this.table.tableId,
|
||||||
num: orderGoods.number * 1 + this.skuGoods.number, // 0会删除此商品
|
num: newNum, // 0会删除此商品
|
||||||
isPack: false, // 是否打包
|
isPack: false, // 是否打包
|
||||||
});
|
});
|
||||||
|
if (this.key && orderGoodsIndex == -1) {
|
||||||
|
this.orderListPush({
|
||||||
|
...res,
|
||||||
|
specSnap: name,
|
||||||
|
number: this.skuGoods.number,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
orderGoods.number += this.skuGoods.number;
|
orderGoods.number += this.skuGoods.number;
|
||||||
this.order.selIndex = orderGoodsIndex;
|
this.order.selIndex = orderGoodsIndex;
|
||||||
this.order.cacheNumber = orderGoods.number;
|
this.order.cacheNumber = orderGoods.number;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
//添加
|
//添加
|
||||||
res = await addCart({
|
res = await addCart({
|
||||||
|
|
@ -2091,14 +2095,14 @@ export default {
|
||||||
prve[i] = matchArr
|
prve[i] = matchArr
|
||||||
.filter((v) => v.specSnap.match(i))
|
.filter((v) => v.specSnap.match(i))
|
||||||
.every((v) => {
|
.every((v) => {
|
||||||
return (
|
// return isCanBuy(v,this.selGoods.data.isStock)
|
||||||
!v.isGrounding || v.isPauseSale == 1 || v.stockNumber <= 0
|
return isCanBuy(v)
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return prve;
|
return prve;
|
||||||
}, {});
|
}, {});
|
||||||
|
console.log(includeSkuMap)
|
||||||
for (let i in includeSkuMap) {
|
for (let i in includeSkuMap) {
|
||||||
for (let k in skuList) {
|
for (let k in skuList) {
|
||||||
const index = skuList[k].valueArr.findIndex((val) => val === i);
|
const index = skuList[k].valueArr.findIndex((val) => val === i);
|
||||||
|
|
@ -2136,6 +2140,9 @@ export default {
|
||||||
this.order.query.page = 1;
|
this.order.query.page = 1;
|
||||||
this.goods.total = 0;
|
this.goods.total = 0;
|
||||||
this.order.list = [];
|
this.order.list = [];
|
||||||
|
this.order.selIndex = -1;
|
||||||
|
this.order.old.list = [];
|
||||||
|
this.order.old.selIndex = -1;
|
||||||
this.isCreateOrder = false;
|
this.isCreateOrder = false;
|
||||||
this.note.content = "";
|
this.note.content = "";
|
||||||
this.vipUser = { id: "" };
|
this.vipUser = { id: "" };
|
||||||
|
|
@ -2143,6 +2150,7 @@ export default {
|
||||||
this.note.content = "";
|
this.note.content = "";
|
||||||
this.isPrverOrder = false;
|
this.isPrverOrder = false;
|
||||||
this.createOrder.discount = 1;
|
this.createOrder.discount = 1;
|
||||||
|
this.key = "";
|
||||||
},
|
},
|
||||||
//获取购物车数据
|
//获取购物车数据
|
||||||
async getCart() {
|
async getCart() {
|
||||||
|
|
@ -2151,7 +2159,11 @@ export default {
|
||||||
masterId: this.masterId,
|
masterId: this.masterId,
|
||||||
tableId: this.table.tableId,
|
tableId: this.table.tableId,
|
||||||
});
|
});
|
||||||
|
if (this.key) {
|
||||||
|
this.order.old.list = res.records;
|
||||||
|
} else {
|
||||||
this.order.list = res.records;
|
this.order.list = res.records;
|
||||||
|
}
|
||||||
this.order.total = res.total;
|
this.order.total = res.total;
|
||||||
},
|
},
|
||||||
showSelGoods(item) {
|
showSelGoods(item) {
|
||||||
|
|
@ -2392,11 +2404,19 @@ export default {
|
||||||
this.goods.total = res.total;
|
this.goods.total = res.total;
|
||||||
this.$goodsData = goods;
|
this.$goodsData = goods;
|
||||||
},
|
},
|
||||||
async open(item) {
|
async open(item, key) {
|
||||||
this.table = item;
|
this.table = item;
|
||||||
|
this.key = key;
|
||||||
|
if (this.key == "isPayOrder") {
|
||||||
|
this.isCreateOrder = true;
|
||||||
|
}
|
||||||
|
this.informationdialogshow;
|
||||||
this.informationdialogshow = true;
|
this.informationdialogshow = true;
|
||||||
const res = await this.getMasterId();
|
const res = await this.getMasterId();
|
||||||
this.masterId = res.masterId;
|
this.masterId = res.masterId;
|
||||||
|
if (this.key == "isPayOrder") {
|
||||||
|
this.toCreateOrder(true);
|
||||||
|
}
|
||||||
this.getCart();
|
this.getCart();
|
||||||
this.getGoods();
|
this.getGoods();
|
||||||
this.getCategory();
|
this.getCategory();
|
||||||
|
|
@ -2484,7 +2504,9 @@ input[type="number"]::-webkit-outer-spin-button {
|
||||||
padding: 0 4px;
|
padding: 0 4px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
::v-deep .el-empty {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
::v-deep .el-button--success:not(.is-disabled) {
|
::v-deep .el-button--success:not(.is-disabled) {
|
||||||
background: #22bf64;
|
background: #22bf64;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
|
|
@ -2647,25 +2669,6 @@ input[type="number"]::-webkit-outer-spin-button {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.color-333 {
|
|
||||||
color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.color-666 {
|
|
||||||
color: #666;
|
|
||||||
}
|
|
||||||
.ft-13 {
|
|
||||||
font-size: 13px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.color-000 {
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
.color-999 {
|
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ft-12 {
|
.ft-12 {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
@ -2973,6 +2976,7 @@ input[type="number"]::-webkit-outer-spin-button {
|
||||||
color: #888;
|
color: #888;
|
||||||
margin: 0 0 10px 7px;
|
margin: 0 0 10px 7px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.numberbox {
|
.numberbox {
|
||||||
border: 1px solid #dcdfe6;
|
border: 1px solid #dcdfe6;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
|
|
@ -2982,7 +2986,6 @@ input[type="number"]::-webkit-outer-spin-button {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
position: relative;
|
position: relative;
|
||||||
cursor: pointer;
|
|
||||||
margin: 0 0 10px;
|
margin: 0 0 10px;
|
||||||
|
|
||||||
.reduce,
|
.reduce,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue