272 lines
5.5 KiB
Vue
272 lines
5.5 KiB
Vue
<template>
|
|
<view class="container">
|
|
<image class="top_bg" src="https://czg-qr-order.oss-cn-beijing.aliyuncs.com/order/orderAMeal.png"
|
|
mode="aspectFill"></image>
|
|
<view class="content_box">
|
|
<view class="content">
|
|
<view class="title">
|
|
<view class="title_text">请选择就餐人数</view>
|
|
<view class="title_tabNum">桌号{{shopTable.name}}</view>
|
|
</view>
|
|
<view class="num" :class="{'active':numIndex==-1}">
|
|
<view class="item" @click="tabCut(index)" v-for="(item,index) in 9" :key="index">
|
|
<view class="num_item" :class="{'active':numIndex==index }">{{index+1}}</view>
|
|
</view>
|
|
<view class="item" @click="tabCut(-1)">
|
|
<view class="num_item" :style="numIndex==-1?'background-color: #E8AD7B;':'' ">
|
|
<up--input v-model="otherNum" @input="isOtherNum" @blur="blur()" border="none" type="nubmer"
|
|
maxlength="3" placeholder='请输入..'></up--input>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
<!-- <view class="num_item" v-else :class="{'active':numIndex==-1 }">其</view> -->
|
|
</view>
|
|
<view class="startBtn" @click="start">
|
|
开始点餐
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<Loading :isLoading="isLoading" />
|
|
</view>
|
|
</template>
|
|
|
|
<script setup>
|
|
import {
|
|
ref,
|
|
onMounted,
|
|
getCurrentInstance,
|
|
nextTick
|
|
} from 'vue'
|
|
|
|
import {
|
|
onLoad
|
|
} from '@dcloudio/uni-app'
|
|
|
|
import {
|
|
Storelogin
|
|
} from '@/stores/user.js';
|
|
|
|
import Loading from '@/components/Loading.vue';
|
|
|
|
// 获取全局属性
|
|
const {
|
|
proxy
|
|
} = getCurrentInstance();
|
|
|
|
import {
|
|
productStore
|
|
} from '@/stores/user.js';
|
|
|
|
// 初始加载中
|
|
const isLoading = ref(true);
|
|
|
|
const otherNum = ref('')
|
|
|
|
const numIndex = ref(0)
|
|
|
|
const dinersNum = ref(1)
|
|
|
|
const isOtherNum = (e) => {
|
|
otherNum.value = otherNum.value.replace(/\D/g, '')
|
|
}
|
|
|
|
const tableCode = uni.cache.get('tableCode')
|
|
|
|
// 切换桌型
|
|
const tabCut = (index) => {
|
|
console.log(index)
|
|
numIndex.value = index;
|
|
if (index != -1) {
|
|
dinersNum.value = index + 1;
|
|
} else {
|
|
otherNum.value = otherNum.value == "其他" ? "" : otherNum.value
|
|
}
|
|
}
|
|
|
|
const blur = (index) => {
|
|
otherNum.value = otherNum.value == "" ? "其他" : otherNum.value
|
|
}
|
|
|
|
const shopTable = uni.cache.get('shopTable')
|
|
|
|
const start = async () => {
|
|
if (numIndex.value == -1 && (otherNum.value == "其他" || otherNum.value <= 0)) {
|
|
uni.showToast({
|
|
title: '请选择就餐人数',
|
|
icon: 'none',
|
|
})
|
|
return;
|
|
}
|
|
if (numIndex.value == -1 && otherNum.value != "其他") {
|
|
dinersNum.value = otherNum.value
|
|
}
|
|
if (shopTable.useNum < dinersNum.value && shopTable.useNum > 0) {
|
|
uni.showToast({
|
|
title: `最多${shopTable.useNum}人`,
|
|
icon: 'none'
|
|
});
|
|
return false;
|
|
}
|
|
uni.cache.set('dinersNum', dinersNum.value)
|
|
uni.pro.redirectTo('product/index')
|
|
}
|
|
|
|
onMounted(async () => {
|
|
await proxy.$onLaunched;
|
|
// 获取当前页面栈
|
|
const pages = getCurrentPages();
|
|
// 获取当前页面实例
|
|
const currentPage = pages[pages.length - 1];
|
|
// 获取页面参数
|
|
const options = currentPage.options;
|
|
// #ifdef MP-WEIXIN
|
|
if (options.q) {
|
|
const store = productStore();
|
|
await store.scanCodeactions(options.q)
|
|
}
|
|
// #endif
|
|
// #ifdef MP-ALIPAY
|
|
if (getApp().globalData.tableCode) {
|
|
await store.scanCodeactions(getApp().globalData.tableCode)
|
|
}
|
|
// #endif
|
|
await nextTick()
|
|
isLoading.value = uni.cache.get('shopInfo').isTableFee == 0 ? false : true
|
|
})
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
page {
|
|
// background: #f6f6f6;
|
|
}
|
|
|
|
.top_bg {
|
|
width: 100%;
|
|
height: 100%;
|
|
position: absolute;
|
|
z-index: 1;
|
|
top: 0;
|
|
}
|
|
|
|
.content_box {
|
|
width: 100%;
|
|
padding: 0 28rpx;
|
|
position: absolute;
|
|
bottom: 148rpx;
|
|
}
|
|
|
|
.content {
|
|
width: 100%;
|
|
position: relative;
|
|
z-index: 2;
|
|
display: flex;
|
|
flex-direction: column;
|
|
padding: 48rpx 0 32rpx 32rpx;
|
|
background: #FFFFFF;
|
|
border-radius: 44rpx 44rpx 44rpx 44rpx;
|
|
|
|
.title {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
margin-bottom: 48rpx;
|
|
padding-right: 32rpx;
|
|
|
|
.title_text {
|
|
font-weight: bold;
|
|
font-size: 32rpx;
|
|
color: #333333;
|
|
}
|
|
|
|
.title_tabNum {
|
|
font-weight: 400;
|
|
font-size: 28rpx;
|
|
color: #666666;
|
|
}
|
|
}
|
|
|
|
.num {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
|
|
.item {
|
|
width: 20%;
|
|
padding-right: 32rpx;
|
|
}
|
|
|
|
.num_item {
|
|
width: 100%;
|
|
height: 56rpx;
|
|
line-height: 56rpx;
|
|
text-align: center;
|
|
margin-right: 28rpx;
|
|
margin-bottom: 32rpx;
|
|
background-color: #FEF4EB;
|
|
border-radius: 12rpx;
|
|
font-weight: 400;
|
|
font-size: 28rpx;
|
|
color: #333333;
|
|
}
|
|
|
|
.num_item:nth-child(5n) {
|
|
margin-right: 0;
|
|
}
|
|
|
|
::v-deep .u-input {
|
|
width: 100%;
|
|
height: 56rpx;
|
|
line-height: 56rpx;
|
|
text-align: center;
|
|
margin-bottom: 32rpx;
|
|
background-color: #FEF4EB;
|
|
border-radius: 12rpx;
|
|
|
|
}
|
|
|
|
::v-deep input {
|
|
font-weight: 400;
|
|
border-radius: 12rpx;
|
|
font-size: 28rpx !important;
|
|
color: #333333 !important;
|
|
text-align: center !important;
|
|
background-color: #FEF4EB;
|
|
}
|
|
|
|
.active {
|
|
color: #fff;
|
|
background-color: #E8AD7B;
|
|
}
|
|
|
|
}
|
|
|
|
::v-deep .num.active .u-input {
|
|
width: 100%;
|
|
height: 56rpx;
|
|
line-height: 56rpx;
|
|
text-align: center;
|
|
margin-bottom: 32rpx;
|
|
background-color: #E8AD7B !important;
|
|
border-radius: 12rpx;
|
|
}
|
|
|
|
::v-deep .num.active input {
|
|
color: #fff !important;
|
|
border-radius: 12rpx;
|
|
background-color: #E8AD7B !important;
|
|
}
|
|
|
|
}
|
|
|
|
.startBtn {
|
|
width: 100%;
|
|
height: 96rpx;
|
|
line-height: 96rpx;
|
|
text-align: center;
|
|
background-color: #E8AD7B;
|
|
border-radius: 48rpx;
|
|
font-weight: bold;
|
|
font-size: 32rpx;
|
|
color: #FFFFFF;
|
|
}
|
|
</style> |