代码合并
This commit is contained in:
@@ -226,9 +226,27 @@ export const useCartsStore = defineStore("carts", () => {
|
|||||||
const isLinkFinshed = ref(false);
|
const isLinkFinshed = ref(false);
|
||||||
|
|
||||||
// 当前购物车数据(现在 getAllGoodsList 能直接访问)
|
// 当前购物车数据(现在 getAllGoodsList 能直接访问)
|
||||||
const list = useStorage<any[]>("carts", []);
|
const list = useStorage<any[]>(
|
||||||
// 历史订单数据(现在 getAllGoodsList 能直接访问),不从本地缓存获取,改为从接口获取
|
"carts",
|
||||||
const oldOrder = ref<any>({
|
[],
|
||||||
|
localStorage,
|
||||||
|
{
|
||||||
|
serializer: {
|
||||||
|
read: (rawValue) => {
|
||||||
|
// 没有值时直接返回默认空数组
|
||||||
|
if (!rawValue) return []
|
||||||
|
try {
|
||||||
|
return JSON.parse(rawValue)
|
||||||
|
} catch {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
write: (value) => JSON.stringify(value),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
// 历史订单数据(现在 getAllGoodsList 能直接访问)
|
||||||
|
const oldOrder = useStorage<any>("Instead_olold_order", {
|
||||||
detailMap: [],
|
detailMap: [],
|
||||||
originAmount: 0
|
originAmount: 0
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -3,14 +3,25 @@
|
|||||||
<div>
|
<div>
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="160px" label-position="left">
|
<el-form ref="form" :model="form" :rules="rules" label-width="160px" label-position="left">
|
||||||
<el-form-item label="门店名称" prop="shopName">
|
<el-form-item label="门店名称" prop="shopName">
|
||||||
<el-input v-model.trim="form.shopName" placeholder="请输入门店名称" style="width: 500px"></el-input>
|
<el-input
|
||||||
|
v-model.trim="form.shopName"
|
||||||
|
placeholder="请输入门店名称"
|
||||||
|
style="width: 500px"
|
||||||
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="连锁店扩展店名">
|
<el-form-item label="连锁店扩展店名">
|
||||||
<el-input v-model.trim="form.chainName" placeholder="请输入连锁店扩展店名" style="width: 500px"></el-input>
|
<el-input
|
||||||
|
v-model.trim="form.chainName"
|
||||||
|
placeholder="请输入连锁店扩展店名"
|
||||||
|
style="width: 500px"
|
||||||
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="门店logo">
|
<el-form-item label="门店logo">
|
||||||
<div class="img_box">
|
<div class="img_box">
|
||||||
<single-image-upload style="width: 80px; height: 80px" v-model="form.logo"></single-image-upload>
|
<single-image-upload
|
||||||
|
style="width: 80px; height: 80px"
|
||||||
|
v-model="form.logo"
|
||||||
|
></single-image-upload>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item label="门店照片">
|
<!-- <el-form-item label="门店照片">
|
||||||
@@ -27,14 +38,22 @@
|
|||||||
<el-form-item label="门店收款码">
|
<el-form-item label="门店收款码">
|
||||||
<div class="img_box">
|
<div class="img_box">
|
||||||
<canvas ref="canvas" id="QRCode_header" style="width: 80px; height: 80px"></canvas>
|
<canvas ref="canvas" id="QRCode_header" style="width: 80px; height: 80px"></canvas>
|
||||||
<el-button size="small" plain v-if="form.paymentQrcode" @click="downloadCanvas(form.paymentQrcode)">
|
<el-button
|
||||||
|
size="small"
|
||||||
|
plain
|
||||||
|
v-if="form.paymentQrcode"
|
||||||
|
@click="downloadCanvas(form.paymentQrcode)"
|
||||||
|
>
|
||||||
下载
|
下载
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="微信二维码">
|
<el-form-item label="微信二维码">
|
||||||
<div class="img_box">
|
<div class="img_box">
|
||||||
<single-image-upload style="width: 80px; height: 80px" v-model="form.shopQrcode"></single-image-upload>
|
<single-image-upload
|
||||||
|
style="width: 80px; height: 80px"
|
||||||
|
v-model="form.shopQrcode"
|
||||||
|
></single-image-upload>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item label="店铺小程序码">
|
<!-- <el-form-item label="店铺小程序码">
|
||||||
@@ -52,6 +71,21 @@
|
|||||||
<el-radio value="after">餐饮版(先下单后支付)</el-radio>
|
<el-radio value="after">餐饮版(先下单后支付)</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item
|
||||||
|
label="是否允许用户自行支付"
|
||||||
|
prop="isUserPay"
|
||||||
|
v-if="form.registerType === 'after'"
|
||||||
|
>
|
||||||
|
<div class="column">
|
||||||
|
<div class="center" style="display: flex; align-items: center; gap: 14px">
|
||||||
|
<el-switch v-model="form.isUserPay" :active-value="1" :inactive-value="0"></el-switch>
|
||||||
|
<div class="tips" style="font-size: 14px; color: #999">
|
||||||
|
关闭后,用户将不能自行支付
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="就餐模式「多选」" prop="eatModel">
|
<el-form-item label="就餐模式「多选」" prop="eatModel">
|
||||||
<el-checkbox-group v-model="form.eatModel">
|
<el-checkbox-group v-model="form.eatModel">
|
||||||
<el-checkbox value="dine-in">堂食自取</el-checkbox>
|
<el-checkbox value="dine-in">堂食自取</el-checkbox>
|
||||||
@@ -65,7 +99,11 @@
|
|||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item> -->
|
</el-form-item> -->
|
||||||
<el-form-item label="联系电话" prop="phone">
|
<el-form-item label="联系电话" prop="phone">
|
||||||
<el-input v-model.trim="form.phone" placeholder="请输入联系电话" style="width: 500px"></el-input>
|
<el-input
|
||||||
|
v-model.trim="form.phone"
|
||||||
|
placeholder="请输入联系电话"
|
||||||
|
style="width: 500px"
|
||||||
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item label="外卖起送金额">
|
<!-- <el-form-item label="外卖起送金额">
|
||||||
<el-input-number v-model="form.takeaway_money" placeholder="0.00" controls-position="right"
|
<el-input-number v-model="form.takeaway_money" placeholder="0.00" controls-position="right"
|
||||||
@@ -91,30 +129,62 @@
|
|||||||
<div style="color: #999">注:准确的定位便于用户导航到店铺</div>
|
<div style="color: #999">注:准确的定位便于用户导航到店铺</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="门店详细地址">
|
<el-form-item label="门店详细地址">
|
||||||
<el-input type="textarea" v-model.trim="form.address" placeholder="请输入门店详细地址" style="width: 500px"></el-input>
|
<el-input
|
||||||
|
type="textarea"
|
||||||
|
v-model.trim="form.address"
|
||||||
|
placeholder="请输入门店详细地址"
|
||||||
|
style="width: 500px"
|
||||||
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="营业时间">
|
<el-form-item label="营业时间">
|
||||||
<div class="u-flex gap-2" style="width: 50%">
|
<div class="u-flex gap-2" style="width: 50%">
|
||||||
<el-select v-model="form.businessStartDay" placeholder="周几开始">
|
<el-select v-model="form.businessStartDay" placeholder="周几开始">
|
||||||
<el-option :value="item.label" :label="item.label" v-for="item in weeks" :key="item.value"></el-option>
|
<el-option
|
||||||
|
:value="item.label"
|
||||||
|
:label="item.label"
|
||||||
|
v-for="item in weeks"
|
||||||
|
:key="item.value"
|
||||||
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-select v-model="form.businessEndDay" placeholder="周几结束">
|
<el-select v-model="form.businessEndDay" placeholder="周几结束">
|
||||||
<el-option :value="item.label" :label="item.label" v-for="item in weeks" :key="item.value"></el-option>
|
<el-option
|
||||||
|
:value="item.label"
|
||||||
|
:label="item.label"
|
||||||
|
v-for="item in weeks"
|
||||||
|
:key="item.value"
|
||||||
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-time-picker placeholder="起始时间" v-model="startTime" :picker-options="{
|
<el-time-picker
|
||||||
|
placeholder="起始时间"
|
||||||
|
v-model="startTime"
|
||||||
|
:picker-options="{
|
||||||
selectableRange: '00:00:00 - 23:59:59',
|
selectableRange: '00:00:00 - 23:59:59',
|
||||||
format: 'HH:mm',
|
format: 'HH:mm',
|
||||||
}" format="HH:mm" value-format="HH:mm"></el-time-picker>
|
}"
|
||||||
<el-time-picker placeholder="结束时间" v-model="endTime" :picker-options="{
|
format="HH:mm"
|
||||||
|
value-format="HH:mm"
|
||||||
|
></el-time-picker>
|
||||||
|
<el-time-picker
|
||||||
|
placeholder="结束时间"
|
||||||
|
v-model="endTime"
|
||||||
|
:picker-options="{
|
||||||
selectableRange: '00:00:00 - 23:59:59',
|
selectableRange: '00:00:00 - 23:59:59',
|
||||||
}" format="HH:mm" value-format="HH:mm"></el-time-picker>
|
}"
|
||||||
|
format="HH:mm"
|
||||||
|
value-format="HH:mm"
|
||||||
|
></el-time-picker>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="桌位费/位/元">
|
<el-form-item label="桌位费/位/元">
|
||||||
<el-input-number :disabled="!!form.isTableFee" v-model="form.tableFee" :min="0" />
|
<el-input-number :disabled="!!form.isTableFee" v-model="form.tableFee" :min="0" />
|
||||||
<!-- <el-checkbox v-model="form.isTableFee" :label="1">免餐位费</el-checkbox> -->
|
<!-- <el-checkbox v-model="form.isTableFee" :label="1">免餐位费</el-checkbox> -->
|
||||||
<el-switch class="u-m-l-10" v-model.trim="form.isTableFee" :active-value="1" :inactive-value="0"
|
<el-switch
|
||||||
active-text="免餐位费"></el-switch>
|
class="u-m-l-10"
|
||||||
|
v-model.trim="form.isTableFee"
|
||||||
|
:active-value="1"
|
||||||
|
:inactive-value="0"
|
||||||
|
active-text="免餐位费"
|
||||||
|
></el-switch>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item label="是否开启8折活动">
|
<!-- <el-form-item label="是否开启8折活动">
|
||||||
<el-switch v-model.trim="form.isOpenYhq" active-value="true" inactive-value="false"></el-switch>
|
<el-switch v-model.trim="form.isOpenYhq" active-value="true" inactive-value="false"></el-switch>
|
||||||
@@ -148,42 +218,68 @@
|
|||||||
</el-time-picker>
|
</el-time-picker>
|
||||||
</el-form-item> -->
|
</el-form-item> -->
|
||||||
<el-form-item label="店铺简介">
|
<el-form-item label="店铺简介">
|
||||||
<el-input type="textarea" v-model.trim="form.detail" placeholder="请输入店铺简介" style="width: 500px"></el-input>
|
<el-input
|
||||||
|
type="textarea"
|
||||||
|
v-model.trim="form.detail"
|
||||||
|
placeholder="请输入店铺简介"
|
||||||
|
style="width: 500px"
|
||||||
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="台桌预订短信">
|
<el-form-item label="台桌预订短信">
|
||||||
<el-input type="textarea" v-model.trim="form.bookingSms" placeholder="请输入台桌预订短信"
|
<el-input
|
||||||
style="width: 500px"></el-input>
|
type="textarea"
|
||||||
|
v-model.trim="form.bookingSms"
|
||||||
|
placeholder="请输入台桌预订短信"
|
||||||
|
style="width: 500px"
|
||||||
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="电子围栏" prop="isOrderFence">
|
<el-form-item label="电子围栏" prop="isOrderFence">
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<div class="center" style="display: flex; align-items: center; gap: 14px">
|
<div class="center" style="display: flex; align-items: center; gap: 14px">
|
||||||
<el-switch v-model="form.isOrderFence" :active-value="1" :inactive-value="0"></el-switch>
|
<el-switch
|
||||||
|
v-model="form.isOrderFence"
|
||||||
|
:active-value="1"
|
||||||
|
:inactive-value="0"
|
||||||
|
></el-switch>
|
||||||
<div class="tips" style="font-size: 14px; color: #999">
|
<div class="tips" style="font-size: 14px; color: #999">
|
||||||
开启后,用户只能在店铺附近xx公里内点餐
|
开启后,用户只能在店铺附近xx公里内点餐
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="center" v-if="form.isOrderFence == 1">
|
<div class="center" v-if="form.isOrderFence == 1">
|
||||||
<el-input v-model="form.orderFenceDistance" placeholder="请输入"
|
<el-input
|
||||||
@input="(e) => (form.orderFenceDistance = filterNumberInput(e))" style="width: 250px"
|
v-model="form.orderFenceDistance"
|
||||||
input-style="text-align: center;">
|
placeholder="请输入"
|
||||||
|
@input="(e) => (form.orderFenceDistance = filterNumberInput(e))"
|
||||||
|
style="width: 250px"
|
||||||
|
input-style="text-align: center;"
|
||||||
|
>
|
||||||
<template #prepend>限制:</template>
|
<template #prepend>限制:</template>
|
||||||
<template #append>公里</template>
|
<template #append>公里</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="上菜时间(分钟)" prop="isServeTimeControl">
|
<el-form-item label="上菜时间(分钟)" prop="isServeTimeControl">
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<div class="center" style="display: flex; align-items: center; gap: 14px">
|
<div class="center" style="display: flex; align-items: center; gap: 14px">
|
||||||
<el-switch v-model="form.isServeTimeControl" :active-value="1" :inactive-value="0"></el-switch>
|
<el-switch
|
||||||
|
v-model="form.isServeTimeControl"
|
||||||
|
:active-value="1"
|
||||||
|
:inactive-value="0"
|
||||||
|
></el-switch>
|
||||||
<div class="tips" style="font-size: 14px; color: #999">
|
<div class="tips" style="font-size: 14px; color: #999">
|
||||||
起菜到上菜的时间间隔,开启后会有超时提示
|
起菜到上菜的时间间隔,开启后会有超时提示
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="center" v-if="form.isServeTimeControl == 1">
|
<div class="center" v-if="form.isServeTimeControl == 1">
|
||||||
<el-input v-model="form.serveTime" placeholder="请输入"
|
<el-input
|
||||||
@input="(e) => (form.serveTime = filterNumberInput(e))" style="width: 250px"
|
v-model="form.serveTime"
|
||||||
input-style="text-align: center;">
|
placeholder="请输入"
|
||||||
|
@input="(e) => (form.serveTime = filterNumberInput(e))"
|
||||||
|
style="width: 250px"
|
||||||
|
input-style="text-align: center;"
|
||||||
|
>
|
||||||
<template #prepend>限制:</template>
|
<template #prepend>限制:</template>
|
||||||
<template #append>分钟</template>
|
<template #append>分钟</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
@@ -208,11 +304,24 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
<ChooseAddress ref="refChooseAddress" @choose="chooseAddressConfirm"></ChooseAddress>
|
<ChooseAddress ref="refChooseAddress" @choose="chooseAddressConfirm"></ChooseAddress>
|
||||||
<el-dialog v-model="showUpload" :close-on-click-modal="false" append-to-body width="500px"
|
<el-dialog
|
||||||
@close="showUpload = false">
|
v-model="showUpload"
|
||||||
<el-upload :before-remove="handleBeforeRemove" :on-success="handleSuccess" :on-error="handleError"
|
:close-on-click-modal="false"
|
||||||
:file-list="fileList" :headers="headers" :action="qiNiuUploadApi" :limit="1" list-type="picture"
|
append-to-body
|
||||||
class="upload-demo">
|
width="500px"
|
||||||
|
@close="showUpload = false"
|
||||||
|
>
|
||||||
|
<el-upload
|
||||||
|
:before-remove="handleBeforeRemove"
|
||||||
|
:on-success="handleSuccess"
|
||||||
|
:on-error="handleError"
|
||||||
|
:file-list="fileList"
|
||||||
|
:headers="headers"
|
||||||
|
:action="qiNiuUploadApi"
|
||||||
|
:limit="1"
|
||||||
|
list-type="picture"
|
||||||
|
class="upload-demo"
|
||||||
|
>
|
||||||
<el-button size="small" type="primary">点击上传</el-button>
|
<el-button size="small" type="primary">点击上传</el-button>
|
||||||
<template #tip>
|
<template #tip>
|
||||||
<div style="display: block" class="el-upload__tip">请勿上传违法文件,且文件不超过15M</div>
|
<div style="display: block" class="el-upload__tip">请勿上传违法文件,且文件不超过15M</div>
|
||||||
@@ -341,6 +450,14 @@ export default {
|
|||||||
mounted() {
|
mounted() {
|
||||||
this.tbShopInfo();
|
this.tbShopInfo();
|
||||||
},
|
},
|
||||||
|
watch: {
|
||||||
|
"form.registerType"(val) {
|
||||||
|
console.log(val);
|
||||||
|
if (val === "before") {
|
||||||
|
this.form.isUserPay = 1;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
chooseAddressConfirm(e) {
|
chooseAddressConfirm(e) {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
|
|||||||
@@ -2,7 +2,12 @@
|
|||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-tabs v-model="tableArea.tabsSel" type="card" @tab-click="tabClick">
|
<el-tabs v-model="tableArea.tabsSel" type="card" @tab-click="tabClick">
|
||||||
<el-tab-pane label="全部" name="" />
|
<el-tab-pane label="全部" name="" />
|
||||||
<el-tab-pane v-for="item in tableArea.tabs" :key="item.id" :label="item.name" :name="`${item.id}`">
|
<el-tab-pane
|
||||||
|
v-for="item in tableArea.tabs"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:name="`${item.id}`"
|
||||||
|
>
|
||||||
<template #label>
|
<template #label>
|
||||||
<div class="">
|
<div class="">
|
||||||
<span>
|
<span>
|
||||||
@@ -23,18 +28,13 @@
|
|||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
|
|
||||||
<div class="" style="display: flex;">
|
<div class="">
|
||||||
<el-button icon="plus" @click="addEaraShow()">添加区域</el-button>
|
<el-button icon="plus" @click="addEaraShow()">添加区域</el-button>
|
||||||
<el-button type="primary" icon="plus" @click="addTableShow()">添加台桌</el-button>
|
<el-button type="primary" icon="plus" @click="addTableShow()">添加台桌</el-button>
|
||||||
<el-button type="danger" icon="Setting" @click="clearTabDialogRef.show()">清台设置</el-button>
|
<el-button type="danger" icon="Setting" @click="clearTabDialogRef.show()">清台设置</el-button>
|
||||||
<el-button type="primary" icon="download" @click="showDownloadTableCode">
|
<el-button type="primary" icon="download" @click="showDownloadTableCode">
|
||||||
下载桌台码
|
下载桌台码
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- 批量导入 -->
|
|
||||||
<importData :type="5" @close="init" />
|
|
||||||
<!-- <el-button icon="Upload" @click="importDataRef.show()">
|
|
||||||
批量导入
|
|
||||||
</el-button> -->
|
|
||||||
<!-- <el-button type="primary" icon="download" @click="downloadShopCpde">
|
<!-- <el-button type="primary" icon="download" @click="downloadShopCpde">
|
||||||
下载店铺码
|
下载店铺码
|
||||||
</el-button> -->
|
</el-button> -->
|
||||||
@@ -42,9 +42,12 @@
|
|||||||
|
|
||||||
<div class="u-flex u-p-b-15 u-font-14 u-m-t-16">
|
<div class="u-flex u-p-b-15 u-font-14 u-m-t-16">
|
||||||
<div v-for="(item, key) in status" :key="key" class="state u-m-r-24">
|
<div v-for="(item, key) in status" :key="key" class="state u-m-r-24">
|
||||||
<span class="dot" :style="{
|
<span
|
||||||
|
class="dot"
|
||||||
|
:style="{
|
||||||
backgroundColor: status[key] ? status[key].type : '',
|
backgroundColor: status[key] ? status[key].type : '',
|
||||||
}" />
|
}"
|
||||||
|
/>
|
||||||
{{ item.label }}
|
{{ item.label }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -52,9 +55,14 @@
|
|||||||
<!-- 列表 -->
|
<!-- 列表 -->
|
||||||
<div class="head-container">
|
<div class="head-container">
|
||||||
<div v-loading="loading" class="table_list">
|
<div v-loading="loading" class="table_list">
|
||||||
<div v-for="item in tableList" :key="item.id" class="item" :style="{
|
<div
|
||||||
|
v-for="item in tableList"
|
||||||
|
:key="item.id"
|
||||||
|
class="item"
|
||||||
|
:style="{
|
||||||
'background-color': status[item.status] ? status[item.status].type : '',
|
'background-color': status[item.status] ? status[item.status].type : '',
|
||||||
}">
|
}"
|
||||||
|
>
|
||||||
<div class="new-top flex u-row-between">
|
<div class="new-top flex u-row-between">
|
||||||
<div class="u-flex u-flex-1 u-p-r-10">
|
<div class="u-flex u-flex-1 u-p-r-10">
|
||||||
<span class="name u-line-1" style="max-width: 50px">
|
<span class="name u-line-1" style="max-width: 50px">
|
||||||
@@ -88,18 +96,19 @@
|
|||||||
<div v-if="item.status == 'subscribe' && item.bookingInfo">
|
<div v-if="item.status == 'subscribe' && item.bookingInfo">
|
||||||
<div class="row row1" style="align-items: flex-start">
|
<div class="row row1" style="align-items: flex-start">
|
||||||
<span style="font-size: 14px; color: #333">
|
<span style="font-size: 14px; color: #333">
|
||||||
{{ item.bookingInfo.createUserName }}订{{
|
{{ item.bookingInfo.createUserName }}订{{ item.bookingInfo.bookingPerson }}「{{
|
||||||
item.bookingInfo.bookingPerson
|
item.bookingInfo.gender == 1 ? "先生" : "女士"
|
||||||
}}「{{ item.bookingInfo.gender == 1 ? "先生" : "女士" }}」
|
}}」
|
||||||
</span>
|
</span>
|
||||||
<div class="state" style="
|
<div
|
||||||
font-size: 12px;
|
class="state"
|
||||||
color: #666;
|
style="font-size: 12px; color: #666; display: flex; align-items: center"
|
||||||
display: flex;
|
>
|
||||||
align-items: center;
|
<img
|
||||||
">
|
style="width: 16px; height: 16px; filter: contrast(0.5)"
|
||||||
<img style="width: 16px; height: 16px; filter: contrast(0.5)" src="@/assets/images/perpole.png"
|
src="@/assets/images/perpole.png"
|
||||||
alt="" />
|
alt=""
|
||||||
|
/>
|
||||||
|
|
||||||
{{ item.bookingInfo.bookingTime.substring(11, 19) }}
|
{{ item.bookingInfo.bookingTime.substring(11, 19) }}
|
||||||
</div>
|
</div>
|
||||||
@@ -112,47 +121,68 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-else class="u-font-18 font-600 total-price">
|
<div v-else class="u-font-18 font-600 total-price">
|
||||||
<span v-if="item.status == 'using'" class="cur-pointer" @click="diancanShow(item, 'isAddGoods')">
|
<span
|
||||||
¥{{ item.totalAmount || 0 }}「{{ item.productNum }}件」
|
v-if="item.status == 'unsettled'"
|
||||||
|
class="cur-pointer"
|
||||||
|
@click="diancanShow(item, 'isAddGoods')"
|
||||||
|
>
|
||||||
|
¥{{ item.orderAmount || 0 }}
|
||||||
|
<!-- 「{{ item.productNum }}件」 -->
|
||||||
</span>
|
</span>
|
||||||
<!-- <span v-else class="color-fff">|</span> -->
|
<!-- <span v-else class="color-fff">|</span> -->
|
||||||
</div>
|
</div>
|
||||||
<div class="row btn-group" style="margin-top: 10px">
|
<div class="row btn-group" style="margin-top: 10px">
|
||||||
<template v-if="item.status == 'subscribe'">
|
<template v-if="item.status == 'subscribe'">
|
||||||
<el-button type="success" :disabled="!item.tableId || item.status === 'closed'"
|
<el-button
|
||||||
@click="markStatus(item, -1)">
|
type="success"
|
||||||
|
:disabled="!item.tableId || item.status === 'closed'"
|
||||||
|
@click="markStatus(item, -1)"
|
||||||
|
>
|
||||||
取消预约
|
取消预约
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
<template v-if="
|
<template
|
||||||
item.status == 'subscribe' &&
|
v-if="
|
||||||
item.bookingInfo &&
|
item.status == 'subscribe' && item.bookingInfo && item.bookingInfo.status == 20
|
||||||
item.bookingInfo.status == 20
|
"
|
||||||
">
|
>
|
||||||
<el-button type="success" :disabled="!item.tableId || item.status === 'closed'"
|
<el-button
|
||||||
@click="markStatus(item, 10)">
|
type="success"
|
||||||
|
:disabled="!item.tableId || item.status === 'closed'"
|
||||||
|
@click="markStatus(item, 10)"
|
||||||
|
>
|
||||||
到店
|
到店
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
<template v-if="
|
<template
|
||||||
|
v-if="
|
||||||
item.status == 'idle' ||
|
item.status == 'idle' ||
|
||||||
(item.status == 'subscribe' &&
|
(item.status == 'subscribe' &&
|
||||||
item.bookingInfo &&
|
item.bookingInfo &&
|
||||||
item.bookingInfo.status == 10)
|
item.bookingInfo.status == 10)
|
||||||
">
|
"
|
||||||
<el-button type="primary" :disabled="!item.tableCode || item.status === 'closed'"
|
>
|
||||||
@click="diancanShow(item)">
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
:disabled="!item.tableCode || item.status === 'closed'"
|
||||||
|
@click="diancanShow(item)"
|
||||||
|
>
|
||||||
点餐
|
点餐
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="item.status != 'idle' && item.status != 'subscribe'">
|
<template v-else-if="item.status != 'idle' && item.status != 'subscribe'">
|
||||||
<template v-if="item.status == 'using'">
|
<template v-if="item.status == 'using'">
|
||||||
<el-button :disabled="!item.tableId || item.status === 'closed'"
|
<el-button
|
||||||
@click="diancanShow(item, 'isAddGoods')">
|
:disabled="!item.tableId || item.status === 'closed'"
|
||||||
|
@click="diancanShow(item, 'isAddGoods')"
|
||||||
|
>
|
||||||
加菜
|
加菜
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button type="danger" :disabled="!item.tableId || item.status === 'closed'"
|
<el-button
|
||||||
@click="diancanShow(item, 'isPayOrder')">
|
type="danger"
|
||||||
|
:disabled="!item.tableId || item.status === 'closed'"
|
||||||
|
@click="diancanShow(item, 'isPayOrder')"
|
||||||
|
>
|
||||||
结账
|
结账
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
@@ -160,10 +190,13 @@
|
|||||||
<el-button type="info" disabled>已关台</el-button>
|
<el-button type="info" disabled>已关台</el-button>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="item.status == 'cleaning'">
|
<template v-else-if="item.status == 'cleaning'">
|
||||||
<el-button type="info" :style="{
|
<el-button
|
||||||
|
type="info"
|
||||||
|
:style="{
|
||||||
backgroundColor: status[item.status].type,
|
backgroundColor: status[item.status].type,
|
||||||
borderColor: status[item.status].type,
|
borderColor: status[item.status].type,
|
||||||
}">
|
}"
|
||||||
|
>
|
||||||
清理中
|
清理中
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
@@ -173,19 +206,28 @@
|
|||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="u-flex u-col-bottom bottom u-row-between color-666"
|
<div
|
||||||
:class="{ 'opacity-0': item.status == 'closed' }">
|
class="u-flex u-col-bottom bottom u-row-between color-666"
|
||||||
|
:class="{ 'opacity-0': item.status == 'closed' }"
|
||||||
|
>
|
||||||
<div class="u-flex u-col-center">
|
<div class="u-flex u-col-center">
|
||||||
<img style="width: 16px; height: 16px; filter: contrast(0.5)" src="@/assets/images/perpole.png"
|
<img
|
||||||
alt="" />
|
style="width: 16px; height: 16px; filter: contrast(0.5)"
|
||||||
|
src="@/assets/images/perpole.png"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
<span class="u-m-t-4 u-font-12 u-m-l-2">
|
<span class="u-m-t-4 u-font-12 u-m-l-2">
|
||||||
{{ item.useNum || 0 }}/{{ item.maxCapacity }}
|
{{ item.personNum || 0 }}/{{ item.maxCapacity }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="item.status == 'using'" class="u-flex">
|
<div v-if="item.status == 'unsettled'" class="u-flex">
|
||||||
<img style="width: 16px; height: 16px; filter: contrast(0.5)" src="@/assets/images/shalou.png" alt="" />
|
<img
|
||||||
|
style="width: 16px; height: 16px; filter: contrast(0.5)"
|
||||||
|
src="@/assets/images/shalou.png"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
<span class="u-m-t-4 u-font-12">
|
<span class="u-m-t-4 u-font-12">
|
||||||
{{ formatTime(item.durationTime) }}
|
{{ formatTime(item.orderCreateTime) }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -223,7 +265,7 @@ import bindCode from "./components/bind-table-code.vue";
|
|||||||
import downloadTableCode from "./components/downloadTableCode.vue";
|
import downloadTableCode from "./components/downloadTableCode.vue";
|
||||||
import clearTabDialog from "./components/clearTabDialog.vue";
|
import clearTabDialog from "./components/clearTabDialog.vue";
|
||||||
|
|
||||||
const clearTabDialogRef = ref(null)
|
const clearTabDialogRef = ref(null);
|
||||||
|
|
||||||
const envName = import.meta.env.VITE_APP_NAME;
|
const envName = import.meta.env.VITE_APP_NAME;
|
||||||
|
|
||||||
@@ -240,15 +282,28 @@ function showDownloadTableCode() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let loading = ref(false);
|
let loading = ref(false);
|
||||||
//工具方法
|
|
||||||
function formatTime(milliseconds) {
|
const nowTime = ref(new Date().getTime());
|
||||||
console.log(milliseconds);
|
|
||||||
if (!milliseconds) {
|
// 实时更新当前时间(循环执行)
|
||||||
return "";
|
function updateTime() {
|
||||||
|
nowTime.value = new Date().getTime();
|
||||||
|
requestAnimationFrame(updateTime);
|
||||||
}
|
}
|
||||||
|
updateTime(); // 启动
|
||||||
|
|
||||||
|
// 工具方法
|
||||||
|
function formatTime(str) {
|
||||||
|
if (!str) return "";
|
||||||
|
const targetTime = new Date(str).getTime();
|
||||||
|
const milliseconds = nowTime.value - targetTime;
|
||||||
|
|
||||||
|
if (milliseconds <= 0) return "已结束";
|
||||||
|
|
||||||
const days = Math.floor(milliseconds / (1000 * 60 * 60 * 24));
|
const days = Math.floor(milliseconds / (1000 * 60 * 60 * 24));
|
||||||
const hours = Math.floor((milliseconds % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
|
const hours = Math.floor((milliseconds % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
|
||||||
const minutes = Math.floor((milliseconds % (1000 * 60 * 60)) / (1000 * 60));
|
const minutes = Math.floor((milliseconds % (1000 * 60 * 60)) / (1000 * 60));
|
||||||
|
|
||||||
return `${days ? days + "天" : ""} ${hours ? hours + "时" : ""} ${minutes + "分"}`;
|
return `${days ? days + "天" : ""} ${hours ? hours + "时" : ""} ${minutes + "分"}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user