代客下单增加单品备注,退客座费

台桌列表修改时间展示不足1分钟显示0分
This commit is contained in:
2024-09-27 13:46:11 +08:00
parent 60bc61d40f
commit 1acf00daab
4 changed files with 102 additions and 47 deletions

View File

@@ -270,6 +270,7 @@ export default {
}, },
filters: { filters: {
formatTime(milliseconds) { formatTime(milliseconds) {
console.log(milliseconds)
if (!milliseconds) { if (!milliseconds) {
return ""; return "";
} }
@@ -280,8 +281,7 @@ export default {
const minutes = Math.floor( const minutes = Math.floor(
(milliseconds % (1000 * 60 * 60)) / (1000 * 60) (milliseconds % (1000 * 60 * 60)) / (1000 * 60)
); );
return `${days ? days + "天" : ""} ${hours ? hours + "时" : ""} ${ return `${days ? days + "天" : ""} ${hours ? hours + "时" : ""} ${minutes + "分"
minutes ? minutes + "分" : ""
}`; }`;
}, },
}, },

View File

@@ -1,22 +1,22 @@
<template> <template>
<div <div class="flex order-item relative" :class="[isActive]" @click="itemClick">
class="flex order-item relative"
:class="[isActive]"
@click="itemClick"
>
<span class="absolute pack" v-if="item.isPack === 'true'"> </span> <span class="absolute pack" v-if="item.isPack === 'true'"> </span>
<span class="absolute tui" v-if="item.status === 'return'"> 退 </span> <span class="absolute tui" v-if="item.status === 'return'"> 退 </span>
<div class="flex"> <div class="flex">
<div class="img"> <div class="img">
<div class="isSeatFee img u-line-1 u-flex u-col-center u-row-center" v-if="isSeatFee"> <div
class="isSeatFee img u-line-1 u-flex u-col-center u-row-center"
v-if="isSeatFee"
>
<span>{{ item.name }}</span> <span>{{ item.name }}</span>
</div> </div>
<img v-else :src="item.coverImg" class="" alt="" /> <img v-else :src="item.coverImg" class="" alt="" />
</div> </div>
<div class="good-info"> <div class="good-info">
<div class="flex lh-16"> <div class="flex lh-16">
<div class="name" :class="{ 'free-price': item.status === 'return' }">{{ item.name }}</div> <div class="name" :class="{ 'free-price': item.status === 'return' }">
{{ item.name }}
</div>
<span class="good_info_discount" v-if="item.isGift === 'true'" <span class="good_info_discount" v-if="item.isGift === 'true'"
></span ></span
> >
@@ -24,6 +24,9 @@
<div v-if="item.specSnap" class="specSnap"> <div v-if="item.specSnap" class="specSnap">
{{ item.specSnap }} {{ item.specSnap }}
</div> </div>
<template v-if="item.note">
<div class="note">备注:{{ item.note || "" }}</div>
</template>
</div> </div>
</div> </div>
<div class="flex"> <div class="flex">
@@ -50,10 +53,14 @@
</div> </div>
</div> </div>
</div> </div>
<div class="color-333 total-price"> <div class="color-333 total-price">
<div v-if="item.isGift === 'true'||item.status=='return' ">0</div> <div v-if="item.isGift === 'true' || item.status == 'return'">0</div>
<div :class="{ 'free-price': item.isGift === 'true'||item.status=='return' }"> <div
:class="{
'free-price': item.isGift === 'true' || item.status == 'return',
}"
>
<span v-if="isSeatFee"> {{ item.totalAmount }}</span> <span v-if="isSeatFee"> {{ item.totalAmount }}</span>
<span v-else> {{ item.salePrice }}</span> <span v-else> {{ item.salePrice }}</span>
</div> </div>
@@ -66,22 +73,22 @@
export default { export default {
props: { props: {
//是否是餐位费 //是否是餐位费
isSeatFee:{ isSeatFee: {
type: Boolean, type: Boolean,
default: false, default: false,
}, },
//是否是历史订单商品 //是否是历史订单商品
isOld:{ isOld: {
type: Boolean, type: Boolean,
default: false, default: false,
}, },
//第几次下单 1以及以上为历史订单 0为当前购物车 //第几次下单 1以及以上为历史订单 0为当前购物车
placeNum:{ placeNum: {
type: [String,Number], type: [String, Number],
default: 0, default: 0,
}, },
selPlaceNum:{ selPlaceNum: {
type: [String,Number], type: [String, Number],
default: -1, default: -1,
}, },
//是否允许改变数量 //是否允许改变数量
@@ -112,11 +119,12 @@ export default {
}; };
}, },
computed: { computed: {
isActive(){ isActive() {
const isSel= (this.selIndex === this.index)&&(this.placeNum===this.selPlaceNum) const isSel =
console.log(isSel) this.selIndex === this.index && this.placeNum === this.selPlaceNum;
return isSel?'active':''; console.log(isSel);
} return isSel ? "active" : "";
},
}, },
watch: { watch: {
"item.number": function (val) { "item.number": function (val) {
@@ -135,17 +143,16 @@ export default {
} }
newval = `${newval}`.split(".")[0] * 1; newval = `${newval}`.split(".")[0] * 1;
this.number = newval; this.number = newval;
this.$emit("cartGoodsNumberChange",newval, this.index); this.$emit("cartGoodsNumberChange", newval, this.index);
}, },
//购物车商品输入框数量输入 //购物车商品输入框数量输入
cartGoodsNumberInput(newval) { cartGoodsNumberInput(newval) {
if (newval <= 0) { if (newval <= 0) {
return this.number =1 return (this.number = 1);
} }
newval = `${newval}`.split(".")[0] * 1; newval = `${newval}`.split(".")[0] * 1;
this.number = newval; this.number = newval;
this.$emit("cartGoodsNumberInput",newval, this.index); this.$emit("cartGoodsNumberInput", newval, this.index);
}, },
changeOrderNumber(isReduce) { changeOrderNumber(isReduce) {
this.$emit("changeOrderNumber", this.index, isReduce); this.$emit("changeOrderNumber", this.index, isReduce);
@@ -154,7 +161,7 @@ export default {
// if(this.isSeatFee){ // if(this.isSeatFee){
// return // return
// } // }
this.$emit("itemClick", this.index,this.canChangeNumber,this.placeNum); this.$emit("itemClick", this.index, this.canChangeNumber, this.placeNum);
}, },
}, },
}; };
@@ -171,8 +178,8 @@ export default {
padding: 0 4px; padding: 0 4px;
text-align: center; text-align: center;
} }
.isSeatFee{ .isSeatFee {
background: #3F9EFF; background: #3f9eff;
color: #fff; color: #fff;
font-size: 12px; font-size: 12px;
} }
@@ -204,6 +211,7 @@ export default {
padding: 4px; padding: 4px;
border-radius: 2px; border-radius: 2px;
display: flex; display: flex;
overflow: hidden;
cursor: pointer; cursor: pointer;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
@@ -220,7 +228,7 @@ export default {
text-align: center; text-align: center;
line-height: 17px; line-height: 17px;
} }
.tui{ .tui {
right: 100%; right: 100%;
width: 18px; width: 18px;
height: 18px; height: 18px;
@@ -272,7 +280,15 @@ export default {
} }
} }
} }
.note{
max-width: 70%;
font-size: 12px;
font-weight: 400;
text-align: left;
color: #999;
margin-top: 2px;
word-break: break-all;
}
.order-number-box { .order-number-box {
position: relative; position: relative;

View File

@@ -59,7 +59,7 @@ export default {
this.tags.splice(index,1) this.tags.splice(index,1)
}, },
addNote(tag) { addNote(tag) {
if(this.note.length<=0){ if(!this.note){
return this.note = tag return this.note = tag
} }
this.note = tag + "," + this.note; this.note = tag + "," + this.note;
@@ -76,13 +76,14 @@ export default {
}, },
confirm(){ confirm(){
const originTags = [...this.tags] const originTags = [...this.tags]
if(this.note.length>=1){ if(this.note){
if(originTags>=10){ if(originTags>=10){
originTags.shift() originTags.shift()
} }
const newTags=new Set([this.note,...originTags]) if(this.note.length<=16){
console.log(newTags) const newTags=new Set([this.note,...originTags])
localStorage.setItem("tags", JSON.stringify([...newTags])); localStorage.setItem("tags", JSON.stringify([...newTags]));
}
} }
this.$emit('confirm',this.note) this.$emit('confirm',this.note)
this.close() this.close()

View File

@@ -303,7 +303,8 @@
</template> </template>
<!-- 餐位费 --> <!-- 餐位费 -->
<template v-if="order.seatFee && order.seatFee.totalAmount > 0"> <template v-if="order.seatFee && order.seatFee.totalAmount > 0">
<div class="carts_list_title">餐位费</div> <div class="list">
<div class="carts_list_title">餐位费</div>
<cart-item <cart-item
@itemClick="changeOrderExtraSel" @itemClick="changeOrderExtraSel"
:canChangeNumber="false" :canChangeNumber="false"
@@ -315,6 +316,8 @@
:placeNum="-10" :placeNum="-10"
:selPlaceNum="order.selPlaceNum" :selPlaceNum="order.selPlaceNum"
></cart-item> ></cart-item>
</div>
</template> </template>
<div class="order_remark" v-if="note.content"> <div class="order_remark" v-if="note.content">
订单备注 {{ note.content }} 订单备注 {{ note.content }}
@@ -516,8 +519,11 @@
prveOrder.list.length prveOrder.list.length
}}</span> }}</span>
</div> --> </div> -->
<div class="btn"
:class="{ disabled: order.selIndex < 0 }"
@click="refNoteShow(true)">单品备注</div>
<div class="btn" @click="refNoteShow">整单备注</div> <div class="btn" @click="refNoteShow(false)">整单备注</div>
<div <div
class="btn" class="btn"
:class="{ :class="{
@@ -1171,6 +1177,8 @@ export default {
}, },
data() { data() {
return { return {
//是否是单品备注
isDanNote: false,
//店铺信息 //店铺信息
shopInfo: {}, shopInfo: {},
//就餐饭方式 //就餐饭方式
@@ -1350,7 +1358,7 @@ export default {
computed: { computed: {
disableTuicai() { disableTuicai() {
return ( return (
this.order.placeNum>=1 ||this.order.selIndex>=0||!this.order.selGoods|| this.order.placeNum==1 ||this.order.selIndex>=0||!this.order.selGoods||this.order.old.list.length<=0||
this.order.selGoods.status == "return" this.order.selGoods.status == "return"
); );
}, },
@@ -1410,7 +1418,7 @@ export default {
.reduce((a, b) => { .reduce((a, b) => {
return a + b.number * b.salePrice; return a + b.number * b.salePrice;
}, 0); }, 0);
return (oldPrice + price + this.order.seatFee.totalAmount * 1).toFixed(2); return (oldPrice + price + this.order.seatFee.totalAmount * (this.order.seatFee.status=='return'?0:1)).toFixed(2);
}, },
allNumber() { allNumber() {
const oldNumber = this.order.old.list.reduce((a, b) => { const oldNumber = this.order.old.list.reduce((a, b) => {
@@ -1660,8 +1668,10 @@ export default {
}, },
changeOrderUseType(useType) { changeOrderUseType(useType) {
if (useType && this.order.list.length) { if (useType && this.order.list.length) {
const tableId = useType=='takeout'?undefined: this.table.tableId;
$changeUseType({ $changeUseType({
useType, useType,
tableId,
cartIds: this.order.list.map((v) => v.id), cartIds: this.order.list.map((v) => v.id),
}); });
} }
@@ -1740,7 +1750,7 @@ export default {
this.getCart(); this.getCart();
this.getCacheOrder(); this.getCacheOrder();
console.log(this.isCreateOrder); console.log(this.isCreateOrder);
if (!this.shopInfo.isTableFee && this.table.tableId && this.perpole > 0) { if (!this.shopInfo.isTableFee && this.table.tableId && this.perpole > 0 ) {
//不免餐位费 //不免餐位费
const seatFee = await $choseCount({ const seatFee = await $choseCount({
masterId: this.masterId, masterId: this.masterId,
@@ -1922,11 +1932,32 @@ export default {
console.log(e); console.log(e);
this.isPrint = e; this.isPrint = e;
}, },
refOrderNoteConfirm(note) { async refOrderNoteConfirm(note) {
this.note.content = note; //单品备注
if(this.isDanNote){
const cart=this.order.list[this.order.selIndex]
const res= await $updateCart({
cartId: cart.id,
productId: cart.productId,
skuId: cart.skuId,
tableId: this.table.tableId,
note:note,
num: cart.number, // 0会删除此商品
});
this.$set(this.order.list, this.order.selIndex, res);
this.$notify({
title: "更新成功",
type: "success",
});
}else{
//订单备注
this.note.content = note;
}
}, },
refNoteShow() { refNoteShow(isDan=false) {
this.$refs.refOrderNote.open(this.note.content); this.isDanNote = isDan;
const note=isDan?this.order.list[this.order.selIndex].note:this.note.content;
this.$refs.refOrderNote.open(note);
}, },
// 支付订单前的处理 // 支付订单前的处理
async payOrder() { async payOrder() {
@@ -4326,5 +4357,12 @@ input[type="number"]::-webkit-outer-spin-button {
.pay_btns .el-button:disabled { .pay_btns .el-button:disabled {
border: 1px solid #dcdfe6; border: 1px solid #dcdfe6;
} }
.order_remark{
font-size: 14px;
color: #666;
margin-top: 5px;
max-width: 340px;
word-break: break-all;
}
</style> </style>