Merge branch 'gyq' of https://newgitea.sxczgkj.cn/czg_team/cashier-web into ymf
|
|
@ -1,18 +1,15 @@
|
||||||
<template>
|
<template>
|
||||||
<el-config-provider :locale="locale" :size="size">
|
<el-config-provider :locale="locale" :size="size">
|
||||||
<!-- 开启水印 -->
|
<!-- 开启水印 -->
|
||||||
<el-watermark
|
<el-watermark :font="{ color: fontColor }" :content="watermarkEnabled ? defaultSettings.watermarkContent : ''"
|
||||||
:font="{ color: fontColor }"
|
:z-index="9999" class="wh-full">
|
||||||
:content="watermarkEnabled ? defaultSettings.watermarkContent : ''"
|
|
||||||
:z-index="9999"
|
|
||||||
class="wh-full"
|
|
||||||
>
|
|
||||||
<router-view />
|
<router-view />
|
||||||
</el-watermark>
|
</el-watermark>
|
||||||
</el-config-provider>
|
</el-config-provider>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
// test
|
||||||
import { useAppStore, useSettingsStore } from "@/store";
|
import { useAppStore, useSettingsStore } from "@/store";
|
||||||
import defaultSettings from "@/settings";
|
import defaultSettings from "@/settings";
|
||||||
import { ThemeEnum } from "@/enums/ThemeEnum";
|
import { ThemeEnum } from "@/enums/ThemeEnum";
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 900 B |
|
After Width: | Height: | Size: 957 B |
|
After Width: | Height: | Size: 805 B |
|
After Width: | Height: | Size: 943 B |
|
After Width: | Height: | Size: 895 B |
|
After Width: | Height: | Size: 947 B |
|
After Width: | Height: | Size: 945 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 813 B |
|
After Width: | Height: | Size: 1018 B |
|
After Width: | Height: | Size: 857 B |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 962 B |
|
After Width: | Height: | Size: 930 B |
|
After Width: | Height: | Size: 930 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 792 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 777 B |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 857 B |
|
After Width: | Height: | Size: 896 B |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 857 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 774 B |
|
After Width: | Height: | Size: 935 B |
|
After Width: | Height: | Size: 918 B |
|
|
@ -0,0 +1,3 @@
|
||||||
|
<template>
|
||||||
|
<RouterView />
|
||||||
|
</template>
|
||||||
|
|
@ -0,0 +1,173 @@
|
||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<div class="card">
|
||||||
|
<div class="row" v-for="(item, index) in menus" :key="index">
|
||||||
|
<div class="title">
|
||||||
|
{{ item.label }}
|
||||||
|
</div>
|
||||||
|
<div class="menus_wrap">
|
||||||
|
<div class="item" v-for="(val, i) in item.list" :key="i">
|
||||||
|
<img :src="getIconPath(val.icon)" class="icon" @error="handleImageError(val)" />
|
||||||
|
<div class="info" @click="to(val)">
|
||||||
|
<div class="name">{{ val.name }}</div>
|
||||||
|
<div class="intro">
|
||||||
|
{{ val.intro }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import defaultIcon from '@/assets/logo.png';
|
||||||
|
import { ElMessage } from 'element-plus'
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
|
const to = (item) => {
|
||||||
|
if (!item.path) {
|
||||||
|
ElMessage.warning('暂未开放')
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
router.push("/application/" + item.path);
|
||||||
|
};
|
||||||
|
const menus = ref([
|
||||||
|
{
|
||||||
|
label: '营销',
|
||||||
|
list: [
|
||||||
|
{ name: "霸王餐", icon: 'bwc', path: "bwc", intro: '设置充值消费的N倍,当前订单立即免单' },
|
||||||
|
{ name: "邀请列表", icon: 'yqlb', path: "invite", intro: '邀请好友领券' },
|
||||||
|
{ name: "积分锁客", icon: 'jfsk', path: "points", intro: '设置充值消费的N倍,当前订单立即免单' },
|
||||||
|
{ name: "充值活动", icon: 'czhd', path: "", intro: '允许客户充值并使用余额支付' },
|
||||||
|
{ name: "弹窗广告", icon: 'tcgg', path: "", intro: '设置弹窗广告' },
|
||||||
|
{ name: "超级会员", icon: 'cjhy', path: "", intro: '用户会员管理设置' },
|
||||||
|
{ name: "新客立减", icon: 'xklj', path: "", intro: '首单下单减免金额' },
|
||||||
|
{ name: "智慧充值", icon: 'zhcz', path: "", intro: '允许客户充值并使用余额支付' },
|
||||||
|
{ name: "分销", icon: 'zhcz', path: "", intro: '允许客户充值并使用余额支付' },
|
||||||
|
{ name: "消费返现", icon: 'xffx', path: "", intro: '用户下单后返现一定的金额到余额,可促进复购' },
|
||||||
|
{ name: "私域引流", icon: 'syyl', path: "", intro: '可设置用户下单成功后的群二维码' },
|
||||||
|
{ name: "满减活动", icon: 'mjhd', path: "", intro: '达到指定支付金额享受减价' },
|
||||||
|
{ name: "生日有礼", icon: 'sryl', path: "", intro: '用户生日管理设置' },
|
||||||
|
{ name: "点餐智能推荐", icon: 'dczntj', path: "", intro: '进入点单页X秒未点自动推荐商品,此推荐设置启用即生效' },
|
||||||
|
{ name: "超值券包", icon: 'czqb', path: "", intro: '下单加购' },
|
||||||
|
{ name: "套餐推广", icon: 'tctg', path: "", intro: '下单通过用户邀请好友减免金额的方式裂变宣传套餐加购' },
|
||||||
|
{ name: "充值兑换码", icon: 'czdhm', path: "", intro: '兑换码直充余额,可当作礼品赠送' },
|
||||||
|
{ name: "券兑换码", icon: 'qdhm', path: "", intro: '可添加多券组合兑换' },
|
||||||
|
{ name: "限时折扣", icon: 'xszk', path: "", intro: '批量设置商品折扣' },
|
||||||
|
{ name: "商品拼团", icon: 'sppt', path: "", intro: '拼团' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '优惠券',
|
||||||
|
list: [
|
||||||
|
{ name: "满减券", icon: 'mjq', path: "coupon", intro: '用户满足指定金额后,可使用优惠券立减相应金额,如:设置满100-50券,符合要求的订单满100元后,立减50元。' },
|
||||||
|
{ name: "商品兑换券", icon: 'spdhq', path: "bwc", intro: '设置可兑换成商品的券' },
|
||||||
|
{ name: "折扣券", icon: 'zkq', path: "", intro: '下单享折扣但折扣的金额将在券中抵扣。' },
|
||||||
|
{ name: "第二件半价券", icon: 'dejbjq', path: "", intro: '设置第二件半价券' },
|
||||||
|
{ name: "消费赠券", icon: 'xfzq', path: "", intro: '达到指定消费金额赠送优惠券' },
|
||||||
|
{ name: "买一送一券", icon: 'myzy', path: "", intro: '针对营销活动买一送一设置券品' },
|
||||||
|
{ name: "固定价格券", icon: 'gdjkq', path: "", intro: '设置该券后,允许用户以固定价格兑换指定商品,如:设置一个固定价格9.9的券,商品20元,用户使用券后只需要9.9元兑换该商品。' },
|
||||||
|
{ name: "免配送费券", icon: 'mfpsq', path: "", intro: '可设置一张免除订单配送费的券' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '推送功能',
|
||||||
|
list: [
|
||||||
|
{ name: "推送活动消息", icon: 'tshdxx', path: "coupon", intro: '给用户推送服务通知' },
|
||||||
|
{ name: "短信推送", icon: 'dxts', path: "bwc", intro: '给用户推送服务通知' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '扩展功能',
|
||||||
|
list: [
|
||||||
|
{ name: "微信公众号", icon: 'wxgzh', path: "coupon", intro: '授权微信公众号后,让你能够在后台查看和维护公众号的粉丝;同时你的店铺也有出现关注公众号的入口。' },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
|
||||||
|
// 动态获取PNG图标路径
|
||||||
|
const getIconPath = (iconName) => {
|
||||||
|
try {
|
||||||
|
// 直接导入对应PNG文件
|
||||||
|
return new URL(`/src/assets/applocation/${iconName}.png`, import.meta.url).href;
|
||||||
|
} catch (error) {
|
||||||
|
console.warn(`图标 ${iconName}.png 不存在`);
|
||||||
|
return defaultIcon; // 图标不存在时使用默认图标
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 处理图片加载失败
|
||||||
|
const handleImageError = (item) => {
|
||||||
|
console.error(`图标 ${item.icon}.png 加载失败`);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.app-container {
|
||||||
|
padding: 14px;
|
||||||
|
|
||||||
|
.card {
|
||||||
|
padding: 14px;
|
||||||
|
background-color: #fff;
|
||||||
|
|
||||||
|
.row {
|
||||||
|
padding-bottom: 14px;
|
||||||
|
|
||||||
|
.title {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menus_wrap {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
gap: 14px;
|
||||||
|
margin-top: 14px;
|
||||||
|
|
||||||
|
.item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: 10px;
|
||||||
|
background-color: #F8F8F8;
|
||||||
|
border-radius: 4px;
|
||||||
|
transition: all 0.1s ease-in-out;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: #d5ebff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
width: 48px;
|
||||||
|
height: 48px;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info {
|
||||||
|
.name {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.intro {
|
||||||
|
margin-top: 4px;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #666;
|
||||||
|
line-height: 1.4em;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-line-clamp: 1;
|
||||||
|
line-clamp: 1;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
word-break: break-all;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -2,21 +2,20 @@
|
||||||
<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
|
<el-tab-pane v-for="item in tableArea.tabs" :key="item.id" :label="item.name" :name="`${item.id}`">
|
||||||
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>
|
||||||
{{ item.name }}
|
{{ item.name }}
|
||||||
</span>
|
</span>
|
||||||
<el-icon style="margin: 0 10px" @click="addEaraShow(item)"><EditPen /></el-icon>
|
<el-icon style="margin: 0 10px" @click="addEaraShow(item)">
|
||||||
|
<EditPen />
|
||||||
|
</el-icon>
|
||||||
<el-popconfirm title="确定删除吗?" @confirm="delArea(item.id)">
|
<el-popconfirm title="确定删除吗?" @confirm="delArea(item.id)">
|
||||||
<template #reference>
|
<template #reference>
|
||||||
<el-icon><Delete /></el-icon>
|
<el-icon>
|
||||||
|
<Delete />
|
||||||
|
</el-icon>
|
||||||
</template>
|
</template>
|
||||||
</el-popconfirm>
|
</el-popconfirm>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -35,12 +34,9 @@
|
||||||
|
|
||||||
<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
|
<span class="dot" :style="{
|
||||||
class="dot"
|
backgroundColor: status[key] ? status[key].type : '',
|
||||||
:style="{
|
}" />
|
||||||
backgroundColor: status[key] ? status[key].type : '',
|
|
||||||
}"
|
|
||||||
/>
|
|
||||||
{{ item.label }}
|
{{ item.label }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -48,12 +44,8 @@
|
||||||
<!-- 列表 -->
|
<!-- 列表 -->
|
||||||
<div class="head-container">
|
<div class="head-container">
|
||||||
<div v-loading="loading" class="table_list">
|
<div v-loading="loading" class="table_list">
|
||||||
<div
|
<div v-for="item in tableList" :key="item.id" class="item"
|
||||||
v-for="item in tableList"
|
:style="{ 'background-color': status[item.status] ? status[item.status].type : '' }">
|
||||||
:key="item.id"
|
|
||||||
class="item"
|
|
||||||
:style="{ '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">
|
||||||
|
|
@ -64,7 +56,9 @@
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<el-dropdown trigger="click" @command="tableComman($event, item)">
|
<el-dropdown trigger="click" @command="tableComman($event, item)">
|
||||||
<el-icon color="#fff" class="cur-pointer"><More /></el-icon>
|
<el-icon color="#fff" class="cur-pointer">
|
||||||
|
<More />
|
||||||
|
</el-icon>
|
||||||
<template #dropdown>
|
<template #dropdown>
|
||||||
<el-dropdown-menu>
|
<el-dropdown-menu>
|
||||||
<el-dropdown-item command="edit">
|
<el-dropdown-item command="edit">
|
||||||
|
|
@ -89,15 +83,9 @@
|
||||||
item.bookingInfo.gender == 1 ? "先生" : "女士"
|
item.bookingInfo.gender == 1 ? "先生" : "女士"
|
||||||
}}」
|
}}」
|
||||||
</span>
|
</span>
|
||||||
<div
|
<div class="state" style="font-size: 12px; color: #666; display: flex; align-items: center">
|
||||||
class="state"
|
<img style="width: 16px; height: 16px; filter: contrast(0.5)" src="@/assets/images/perpole.png"
|
||||||
style="font-size: 12px; color: #666; display: flex; align-items: center"
|
alt="" />
|
||||||
>
|
|
||||||
<img
|
|
||||||
style="width: 16px; height: 16px; filter: contrast(0.5)"
|
|
||||||
src="@/assets/images/perpole.png"
|
|
||||||
alt=""
|
|
||||||
/>
|
|
||||||
|
|
||||||
{{ item.bookingInfo.bookingTime.substring(11, 19) }}
|
{{ item.bookingInfo.bookingTime.substring(11, 19) }}
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -110,61 +98,41 @@
|
||||||
</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
|
<span v-if="item.status == 'using'" class="cur-pointer" @click="diancanShow(item, 'isAddGoods')">
|
||||||
v-if="item.status == 'using'"
|
|
||||||
class="cur-pointer"
|
|
||||||
@click="diancanShow(item, 'isAddGoods')"
|
|
||||||
>
|
|
||||||
¥{{ item.totalAmount || 0 }}「{{ item.productNum }}件」
|
¥{{ item.totalAmount || 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
|
<el-button type="success" :disabled="!item.tableId || item.status === 'closed'"
|
||||||
type="success"
|
@click="markStatus(item, -1)">
|
||||||
:disabled="!item.tableId || item.status === 'closed'"
|
|
||||||
@click="markStatus(item, -1)"
|
|
||||||
>
|
|
||||||
取消预约
|
取消预约
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
<template v-if="item.status == 'subscribe' && item.bookingInfo.status == 20">
|
<template v-if="item.status == 'subscribe' && item.bookingInfo.status == 20">
|
||||||
<el-button
|
<el-button type="success" :disabled="!item.tableId || item.status === 'closed'"
|
||||||
type="success"
|
@click="markStatus(item, 10)">
|
||||||
:disabled="!item.tableId || item.status === 'closed'"
|
|
||||||
@click="markStatus(item, 10)"
|
|
||||||
>
|
|
||||||
到店
|
到店
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
<template
|
<template v-if="
|
||||||
v-if="
|
item.status == 'idle' ||
|
||||||
item.status == 'idle' ||
|
(item.status == 'subscribe' && item.bookingInfo.status == 10)
|
||||||
(item.status == 'subscribe' && 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
|
<el-button :disabled="!item.tableId || item.status === 'closed'"
|
||||||
:disabled="!item.tableId || item.status === 'closed'"
|
@click="diancanShow(item, 'isAddGoods')">
|
||||||
@click="diancanShow(item, 'isAddGoods')"
|
|
||||||
>
|
|
||||||
加菜
|
加菜
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button type="danger" :disabled="!item.tableId || item.status === 'closed'"
|
||||||
type="danger"
|
@click="diancanShow(item, 'isPayOrder')">
|
||||||
:disabled="!item.tableId || item.status === 'closed'"
|
|
||||||
@click="diancanShow(item, 'isPayOrder')"
|
|
||||||
>
|
|
||||||
结账
|
结账
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -172,14 +140,10 @@
|
||||||
<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
|
<el-button type="info" :style="{
|
||||||
type="info"
|
backgroundColor: status[item.status].type,
|
||||||
:style="{
|
borderColor: status[item.status].type,
|
||||||
backgroundColor: status[item.status].type,
|
}" @click="cleanTableHandle(item)">
|
||||||
borderColor: status[item.status].type,
|
|
||||||
}"
|
|
||||||
@click="cleanTableHandle(item)"
|
|
||||||
>
|
|
||||||
清台
|
清台
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -189,26 +153,17 @@
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div class="u-flex u-col-bottom bottom u-row-between color-666"
|
||||||
class="u-flex u-col-bottom bottom u-row-between color-666"
|
:class="{ 'opacity-0': item.status == 'closed' }">
|
||||||
:class="{ 'opacity-0': item.status == 'closed' }"
|
|
||||||
>
|
|
||||||
<div class="u-flex u-col-center">
|
<div class="u-flex u-col-center">
|
||||||
<img
|
<img style="width: 16px; height: 16px; filter: contrast(0.5)" src="@/assets/images/perpole.png"
|
||||||
style="width: 16px; height: 16px; filter: contrast(0.5)"
|
alt="" />
|
||||||
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.useNum || 0 }}/{{ item.maxCapacity }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="item.status == 'using'" class="u-flex">
|
<div v-if="item.status == 'using'" class="u-flex">
|
||||||
<img
|
<img style="width: 16px; height: 16px; filter: contrast(0.5)" src="@/assets/images/shalou.png" alt="" />
|
||||||
style="width: 16px; height: 16px; filter: contrast(0.5)"
|
|
||||||
src="@/assets/images/shalou.png"
|
|
||||||
alt=""
|
|
||||||
/>
|
|
||||||
<span class="u-m-t-4 u-font-12">{{ formatTime(item.durationTime) }}</span>
|
<span class="u-m-t-4 u-font-12">{{ formatTime(item.durationTime) }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -269,7 +224,7 @@ function formatTime(milliseconds) {
|
||||||
return `${days ? days + "天" : ""} ${hours ? hours + "时" : ""} ${minutes + "分"}`;
|
return `${days ? days + "天" : ""} ${hours ? hours + "时" : ""} ${minutes + "分"}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
function downloadTableCpde() {}
|
function downloadTableCpde() { }
|
||||||
function downloadShopCpde() {
|
function downloadShopCpde() {
|
||||||
try {
|
try {
|
||||||
const link = document.createElement("a");
|
const link = document.createElement("a");
|
||||||
|
|
@ -312,7 +267,7 @@ function tableComman(command, item) {
|
||||||
ElMessage.success("删除成功");
|
ElMessage.success("删除成功");
|
||||||
tableInit();
|
tableInit();
|
||||||
})
|
})
|
||||||
.catch(() => {});
|
.catch(() => { });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -388,7 +343,7 @@ function init() {
|
||||||
areainit();
|
areainit();
|
||||||
tableInit();
|
tableInit();
|
||||||
}
|
}
|
||||||
onMounted(() => {});
|
onMounted(() => { });
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|
@ -400,21 +355,26 @@ onMounted(() => {});
|
||||||
.cur-pointer {
|
.cur-pointer {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.opacity-0 {
|
.opacity-0 {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.btn-group .el-button) {
|
:deep(.btn-group .el-button) {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.el-dropdown-menu__item) {
|
:deep(.el-dropdown-menu__item) {
|
||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
padding: 0 20px;
|
padding: 0 20px;
|
||||||
min-width: 60px;
|
min-width: 60px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.state {
|
.state {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
@ -427,6 +387,7 @@ onMounted(() => {});
|
||||||
margin-right: $size;
|
margin-right: $size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.table_list {
|
.table_list {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
|
@ -438,6 +399,7 @@ onMounted(() => {});
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-group {
|
.btn-group {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
|
|
@ -454,25 +416,31 @@ onMounted(() => {});
|
||||||
background-color: #1890ff;
|
background-color: #1890ff;
|
||||||
max-width: 210px;
|
max-width: 210px;
|
||||||
min-width: 190px;
|
min-width: 190px;
|
||||||
|
|
||||||
&.using {
|
&.using {
|
||||||
background-color: rgb(250, 85, 85);
|
background-color: rgb(250, 85, 85);
|
||||||
}
|
}
|
||||||
|
|
||||||
&.closed {
|
&.closed {
|
||||||
background-color: rgb(221, 221, 221);
|
background-color: rgb(221, 221, 221);
|
||||||
filter: grayscale(1);
|
filter: grayscale(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.total-price {
|
.total-price {
|
||||||
line-height: 35px;
|
line-height: 35px;
|
||||||
height: 35px;
|
height: 35px;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.new-top {
|
.new-top {
|
||||||
height: 30px;
|
height: 30px;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
padding: 0 12px;
|
padding: 0 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.name {
|
.name {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
line-height: 30px;
|
line-height: 30px;
|
||||||
|
|
@ -480,6 +448,7 @@ onMounted(() => {});
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
}
|
}
|
||||||
|
|
||||||
.box {
|
.box {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
|
|
@ -488,10 +457,12 @@ onMounted(() => {});
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom {
|
.bottom {
|
||||||
border-top: 1px solid #f7f7fa;
|
border-top: 1px solid #f7f7fa;
|
||||||
padding: 6px 15px;
|
padding: 6px 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.top {
|
.top {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
|
|
@ -500,6 +471,7 @@ onMounted(() => {});
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
|
|
||||||
.row {
|
.row {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
|
|
@ -520,6 +492,7 @@ onMounted(() => {});
|
||||||
background-color: #efefef;
|
background-color: #efefef;
|
||||||
display: flex;
|
display: flex;
|
||||||
border-radius: 0 0 6px 6px;
|
border-radius: 0 0 6px 6px;
|
||||||
|
|
||||||
.btm_item {
|
.btm_item {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
export default {
|
export default {
|
||||||
pending: { label: '挂单中', type: '#E6A23C' },
|
unbound: { label: "未绑定", type: "#909090" },
|
||||||
cleaning: { label: '待清台', type: '#FAAD14' },
|
idle: { label: "空闲", type: "#187CAA" },
|
||||||
using: { label: '开台中', type: '#FF4D4F' },
|
ordering: { label: "点餐中", type: "#46AEA4" },
|
||||||
idle: { label: '空闲', type: '#3F9EFF' },
|
unsettled: { label: "未结账", type: "#DD3F41" },
|
||||||
paying: { label: '结算中', type: '#E6A23C' },
|
paying: { label: "支付中", type: "#909090" },
|
||||||
closed: { label: '关台', type: '#DDDDDD' },
|
settled: { label: "待清台", type: "#FF9500" },
|
||||||
subscribe: { label: '预约', type: '#52C41A ' },
|
closed: { label: "关台", type: "#DDDDDD" },
|
||||||
unbind: { label: '未绑定', type: 'rgb(221,221,221)' }
|
subscribe: { label: "预定", type: "#58B22C" },
|
||||||
}
|
};
|
||||||
|
|
|
||||||