Merge branch 'wwz' of https://e.coding.net/g-cphe0354/yinshoukeguanliduan/management into test
This commit is contained in:
commit
6be5fc0b07
|
|
@ -1,10 +1,10 @@
|
|||
// 代客下单
|
||||
import request from "@/utils/request";
|
||||
//就餐形式,默认堂食后付费
|
||||
const useType='dine-in-after'
|
||||
function getUseType(){
|
||||
const type=localStorage.getItem("useType")
|
||||
return type?type:useType
|
||||
const useType = 'dine-in-after'
|
||||
function getUseType() {
|
||||
const type = localStorage.getItem("useType")
|
||||
return type ? type : useType
|
||||
}
|
||||
|
||||
// 购物车-临时菜添加
|
||||
|
|
@ -12,9 +12,9 @@ export function $temporaryDishes(data) {
|
|||
return request({
|
||||
url: '/api/place/temporaryDishes',
|
||||
method: "post",
|
||||
data:{
|
||||
data: {
|
||||
shopId: localStorage.getItem("shopId"),
|
||||
useType:getUseType(),
|
||||
useType: getUseType(),
|
||||
...data
|
||||
}
|
||||
});
|
||||
|
|
@ -24,12 +24,27 @@ export function $updatePrice(data) {
|
|||
return request({
|
||||
url: '/api/place/updatePrice',
|
||||
method: "put",
|
||||
data:{
|
||||
data: {
|
||||
shopId: localStorage.getItem("shopId"),
|
||||
...data
|
||||
}
|
||||
});
|
||||
}
|
||||
/**
|
||||
* 购物车-转桌/并桌
|
||||
*/
|
||||
export function placeswitch(data) {
|
||||
return request({
|
||||
url: `/api/place/switch`,
|
||||
method: "put",
|
||||
data: {
|
||||
shopId: localStorage.getItem("shopId"),
|
||||
useType: localStorage.getItem("useType"),
|
||||
...data
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// 团购券-获取可使用团购券列表
|
||||
|
||||
|
|
@ -37,7 +52,7 @@ export function $thirdPartyCoupon(data) {
|
|||
return request({
|
||||
url: '/api/thirdPartyCoupon/list',
|
||||
method: "get",
|
||||
params:{
|
||||
params: {
|
||||
shopId: localStorage.getItem("shopId"),
|
||||
...data
|
||||
}
|
||||
|
|
@ -48,7 +63,7 @@ export function $checkCoupon(data) {
|
|||
return request({
|
||||
url: '/api/place/checkCoupon',
|
||||
method: "post",
|
||||
data:{
|
||||
data: {
|
||||
shopId: localStorage.getItem("shopId"),
|
||||
...data
|
||||
}
|
||||
|
|
@ -59,8 +74,8 @@ export function $waitCall(data) {
|
|||
return request({
|
||||
url: '/api/place/waitCall',
|
||||
method: "put",
|
||||
data:{
|
||||
useType:getUseType(),
|
||||
data: {
|
||||
useType: getUseType(),
|
||||
shopId: localStorage.getItem("shopId"),
|
||||
...data
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,191 @@
|
|||
<template>
|
||||
<div class="select_desk">
|
||||
<el-dialog title="请选择商品" :visible.sync="show">
|
||||
<div style="padding: 10px 0;display: flex;justify-content: space-between;align-items: center;">
|
||||
<el-checkbox v-model="isFull">并桌</el-checkbox>
|
||||
<el-select v-model="targetTableId" placeholder="请选择目标台桌">
|
||||
<el-option v-for="item in originTableList" :key="item.tableId" :label="item.name"
|
||||
:value="item.tableId" @click="changeTable(item, index)">
|
||||
</el-option>
|
||||
</el-select>
|
||||
|
||||
</div>
|
||||
<div v-if="!isFull">
|
||||
<div v-if="itemdata.list.length > 0">
|
||||
<h4>购物车商品</h4>
|
||||
<el-table ref="refcart" :data="itemdata.list" tooltip-effect="dark" style="width: 100%"
|
||||
@selection-change="handlerefcart($event)">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="图片" prop="coverImg">
|
||||
<template slot-scope="scope">
|
||||
<el-image style="width: 50px; height: 50px" :src="scope.row.coverImg"
|
||||
fit="cover"></el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="名称" prop="name" />
|
||||
<el-table-column prop="number" label="数量" />
|
||||
<el-table-column prop="price" label="价格">
|
||||
<template slot-scope="scope">
|
||||
<div>
|
||||
¥{{ (scope.row.salePrice * scope.row.number).toFixed(2) }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div v-if="itemdata.old.list.length > 0">
|
||||
<div v-for="(orderItem, orderIndex) in itemdata.old.list" :key="orderIndex">
|
||||
<h4>第{{ orderItem.placeNum }}次下单商品</h4>
|
||||
<el-table ref="reftransfertoPinpin" :data="orderItem.info" tooltip-effect="dark"
|
||||
style="width: 100%" @selection-change="handleSelectionChange($event, orderIndex)">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="图片" prop="coverImg">
|
||||
<template slot-scope="scope">
|
||||
<el-image style="width: 50px; height: 50px" :src="scope.row.coverImg"
|
||||
fit="cover"></el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="名称" prop="name" />
|
||||
<el-table-column prop="number" label="数量" />
|
||||
<el-table-column prop="price" label="价格">
|
||||
<template slot-scope="scope">
|
||||
<div>
|
||||
¥{{ (scope.row.salePrice * scope.row.number).toFixed(2) }}
|
||||
</div>
|
||||
</template>
|
||||
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="buttonbox">
|
||||
<el-button type="primary" @click="confirm">确定</el-button>
|
||||
<el-button @click="toggleSelection">取消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { placeswitch } from "@/api/Instead";
|
||||
import { forEach } from "lodash";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
show: false,
|
||||
itemdata: {},
|
||||
list: [],
|
||||
masterId: '',
|
||||
currentTableId: '',
|
||||
targetTableId: '',
|
||||
originTableList: [],//桌台列表
|
||||
multipleSelection: [],
|
||||
refcartSelection: [],
|
||||
isFull: false
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
toggleSelection() {
|
||||
try {
|
||||
this.$refs.refcart.clearSelection();
|
||||
this.$refs.reftransfertoPinpin.forEach((a) => {
|
||||
a.clearSelection();
|
||||
})
|
||||
} catch (error) {
|
||||
|
||||
}
|
||||
},
|
||||
handleSelectionChange(val, index) {
|
||||
try {
|
||||
this.itemdata.old.list.forEach((a, i) => {
|
||||
this.multipleSelection[index] = i === index ? val : this.multipleSelection[index] || []
|
||||
})
|
||||
} catch (error) { }
|
||||
},
|
||||
handlerefcart(val) {
|
||||
this.refcartSelection = val
|
||||
},
|
||||
async confirm() {
|
||||
console.log(this.itemdata, this.multipleSelection)
|
||||
if (!this.targetTableId) {
|
||||
this.$message({
|
||||
message: '请选择目标台桌!',
|
||||
type: 'warning'
|
||||
})
|
||||
return false;
|
||||
}
|
||||
if (this.refcartSelection.length) {
|
||||
this.refcartSelection.forEach((i) => {
|
||||
i.cartId = i.id
|
||||
})
|
||||
}
|
||||
let cartIds = [...this.multipleSelection, [...this.refcartSelection]]
|
||||
console.log(cartIds)
|
||||
await placeswitch({
|
||||
masterId: this.masterId,
|
||||
orderId: this.itemdata.orderId,//当前台桌订单id 可选
|
||||
cartIds: this.isFull ? '' : cartIds.flatMap(subArray => subArray.map(item => item.cartId)),//转单的购物车商品 并桌时可不传 可选
|
||||
isFull: this.isFull,//并台会将全部购物车商品转入,默认为false 可选
|
||||
currentTableId: this.currentTableId,
|
||||
targetTableId: this.targetTableId,
|
||||
|
||||
})
|
||||
this.$forceUpdate();
|
||||
this.$emit("transfertoPinpin");
|
||||
this.show = false;
|
||||
|
||||
},
|
||||
open(item, masterId, currentTableId, originTableList) {
|
||||
// 订单信息,取餐码,用餐类型,桌台号id,台桌列表
|
||||
console.log(item, masterId, currentTableId, originTableList)
|
||||
this.itemdata = item
|
||||
this.masterId = masterId//取餐码
|
||||
this.currentTableId = currentTableId//当前桌台id
|
||||
this.originTableList = originTableList.filter((i) => i.tableId != currentTableId && i.status == 'using')//台桌列表
|
||||
try {
|
||||
this.$refs.refcart.clearSelection();
|
||||
this.$refs.reftransfertoPinpin.forEach((a) => {
|
||||
a.clearSelection();
|
||||
})
|
||||
} catch (error) { }
|
||||
this.show = true;
|
||||
},
|
||||
returnTableColor(key) {
|
||||
const item = $status[key];
|
||||
return item ? item.type : "";
|
||||
},
|
||||
changeTable(item, index) {
|
||||
console.log(item, index)
|
||||
},
|
||||
searchInput(e) {
|
||||
console.log(e);
|
||||
// this.tableList = $originTableList.filter((v) =>
|
||||
// $strMatch(v.name, e.trim())
|
||||
// );
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
::v-deep.el-button {
|
||||
padding: 12px 20px;
|
||||
}
|
||||
|
||||
.select_desk {
|
||||
.box {
|
||||
margin: 20px 10px;
|
||||
|
||||
.boxspan {}
|
||||
|
||||
}
|
||||
|
||||
.buttonbox {
|
||||
margin: 0 auto;
|
||||
padding: 20px 0;
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -379,7 +379,7 @@
|
|||
删除
|
||||
</div>
|
||||
|
||||
<div class="btn" :class="{ disabled: !order.list.length || order.old.list.length }" @click="saveOrder">
|
||||
<!-- <div class="btn" :class="{ disabled: !order.list.length || order.old.list.length }" @click="saveOrder">
|
||||
存单
|
||||
</div>
|
||||
<div class="btn relative" :class="{
|
||||
|
|
@ -389,7 +389,7 @@
|
|||
<span class="prve-car-len" v-if="prveOrder.list.length">{{
|
||||
prveOrder.list.length
|
||||
}}</span>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<!-- <div
|
||||
class="btn"
|
||||
|
|
@ -434,7 +434,11 @@
|
|||
:class="{ disabled: isCreateOrder }">
|
||||
{{ returnWaingAllText }}
|
||||
</div>
|
||||
|
||||
<div class="btn no-wrap u-font-12" @click="clicktransfertoPinpin()"
|
||||
v-if="table.name && useTypes.sel == 'dine-in' && payAfter">
|
||||
转桌/并桌
|
||||
</div>
|
||||
<!-- -->
|
||||
<!-- <div
|
||||
class="btn"
|
||||
:class="{ disabled: order.old.list.length <= 0 }"
|
||||
|
|
@ -1022,6 +1026,8 @@
|
|||
</popup-weight-goods>
|
||||
<!-- 可选套餐 -->
|
||||
<dialogpackage ref="refdialogpackage" @dialogpackageconfirm="dialogpackageconfirm"></dialogpackage>
|
||||
<!-- 并桌/转桌 -->
|
||||
<transfertoPinpin ref="refransfertoPinpin" @transfertoPinpin="reset"></transfertoPinpin>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
@ -1046,6 +1052,8 @@ import tuanQuanTable from "./components/tuan-quan-table.vue";
|
|||
import popupChooseGuazhang from "./components/popup-choose-guazhang.vue";
|
||||
import popupWeightGoods from "./components/popup-weight-goods.vue";
|
||||
import dialogpackage from "./components/dialogpackage.vue";
|
||||
import transfertoPinpin from "./components/transfertoPinpin.vue";
|
||||
|
||||
|
||||
|
||||
import dayjs from "dayjs";
|
||||
|
|
@ -1122,7 +1130,8 @@ export default {
|
|||
cartItem,
|
||||
chooseDinersNumber,
|
||||
PopupChooseGuazhang,
|
||||
dialogpackage
|
||||
dialogpackage,
|
||||
transfertoPinpin
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
|
@ -2881,7 +2890,27 @@ export default {
|
|||
// return { ...v, cart: JSON.parse(v.cart) };
|
||||
// });
|
||||
// },
|
||||
|
||||
clicktransfertoPinpin() {
|
||||
// 使用 reduce 方法统计指定值出现的次数
|
||||
const count = this.tableList.reduce((acc, cur) => {
|
||||
if (cur.status == 'using') {
|
||||
return acc + 1;
|
||||
}
|
||||
return acc;
|
||||
}, 0);
|
||||
console.log(count)
|
||||
if (count >= 2) {
|
||||
// console.log(this.order, this.masterId, this.table.tableId, this.tableList)
|
||||
// 订单信息,取餐码,用餐类型,桌台号id,台桌列表
|
||||
this.$refs.refransfertoPinpin.open(this.order, this.masterId, this.table.tableId, this.tableList);
|
||||
} else {
|
||||
this.$message({
|
||||
message: '暂无可转台桌!',
|
||||
type: 'warning'
|
||||
})
|
||||
return false;
|
||||
}
|
||||
},
|
||||
//右侧控制按钮点击事件
|
||||
async orderBtnsClick(key) {
|
||||
const orderGoods = this.order.list[this.order.selIndex];
|
||||
|
|
@ -3471,6 +3500,7 @@ export default {
|
|||
this.order.orderId = "";
|
||||
this.perpole = "";
|
||||
this.useTypes.sel = "dine-in";
|
||||
this.getTable()
|
||||
},
|
||||
//设置购物车数据
|
||||
setCart(res) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue