调整宴席订单日期选择组件
Some checks are pending
deploy / deploy (push) Waiting to run

This commit is contained in:
lewis 2025-08-16 17:47:15 +08:00
parent 2ae9c80165
commit 6e2f3666d3
7 changed files with 490 additions and 530 deletions

View File

@ -110,10 +110,7 @@
"navigationStyle": "custom"
},
"needLogin": true
},
}
]
},
{

View File

@ -39,7 +39,8 @@
<u-cell class="" style="line-height: 60rpx;" :border="true">
<template #title>
<view class="h-50 p-2 align-center font-blod" @click="close">
支付金额 <wd-text size="36rpx" bold :text="`${pre_price}`" mode="price" type="error" prefix="¥" suffix="元" />
支付金额 <wd-text size="36rpx" bold :text="`${pre_price}`" mode="price" type="error" prefix="¥"
suffix="元" />
</view>
<view class="h-50 p-2 align-center">
剩余时间
@ -144,7 +145,8 @@
<view>费用合计</view>
<view class="title-tip ">
<text v-if="oder_type===1" class="font-size-32 font-bold color-red">{{ totalPrice }}</text>
<text v-else class="font-size-32 font-bold color-red">{{ matchedItems_sp[0][0].dishes.price *orderInfo.table_number }}</text>
<text v-else
class="font-size-32 font-bold color-red">{{ matchedItems_sp[0][0].dishes.price *orderInfo.table_number }}</text>
</view>
</view>
@ -186,8 +188,7 @@
:rules="[{ required: false, pattern: /^1[3-9]\d{9}$/, message: '请输入有效手机号码' }]" />
<wd-select-picker label="宴席类型" prop="banquet_type" v-model="orderInfo.banquet_type" :columns="banquetType"
type="radio"
:rules="[
type="radio" :rules="[
{
required: false,
validator: (value: string) => {
@ -196,11 +197,8 @@
message: '请选择宴席类型'
}
]"></wd-select-picker>
<wd-calendar v-if="order_type===2" label="做宴日期" placeholder="请选择日期" prop="banquet_date" :formatter="formatter" :min-date="min_data"
v-model="orderInfo.banquet_date" :rules="[{ required: false, pattern: /^\d{13}$/, message: '请选择日期' }]"
@confirm="handleTimeConfirm" />
<wd-input v-if="order_type===2" label="做宴日期" placeholder="请选择日期" prop="banquet_date"
v-model="orderInfo.banquet_date" readonly @click="showDatePicker = true" />
<wd-input v-if="order_type===2" label="做宴桌数" placeholder="请输做宴桌数" prop="table_number" type="number" clearable
v-model="orderInfo.table_number" :rules="[{ required: false, pattern: /^[1-9]\d*$/, message: '请输入有效的桌数' }]"
@ -244,6 +242,8 @@
<!-- <wd-button size="small" plain>查看详情</wd-button> -->
</template>
</wd-card>
<up-calendar :show="showDatePicker" showLunar @confirm="pickDate"
@close="showDatePicker = false" closeOnClickOverlay></up-calendar>
</view>
</template>
@ -293,10 +293,11 @@
reservation_type: 1,
server_user_id: 0,
table_number: 1, //
banquet_date: [], //
banquet_date: '', //
},
matchedItems_sp: [],
};
showDatePicker: false
}
},
onLoad(option) {
this.server_user_id = option.id;;
@ -307,11 +308,12 @@
this.orderInfo.server_user_id = option.id;
this.getCartCheck()
this.getArea()
},
created() {
},
methods: {
pickDate(e) {
this.orderInfo.banquet_date = e[0]
this.showDatePicker = false
},
close() {
this.propShowOrder = false;
},
@ -331,7 +333,6 @@
.catch((error) => {
console.log(error, 'error')
})
},
//
@ -350,7 +351,6 @@
//
payOrder() {
CommonApi.commonPost('/api/banquet/order/pay', {
order_id: this.order_id
}).catch((res) => {
@ -371,15 +371,10 @@
console.log('complete:' + JSON.stringify(res));
}
})
console.log(res.data);
// this.close();
} else {
uni.$u.toast(res.msg);
}
});
},
//
getArea() {
@ -430,9 +425,14 @@
},
// //
getCartCheck() {
CommonApi.commonPost('/api/banquet/order/check', {
server_user_id: this.server_user_id
}).catch((res) => {
let query = {
server_user_id: this.server_user_id,
cart_ids: 0
}
if (this.order_type == 2 && this.orderInfo.cart_ids > 0) {
query.cart_ids = this.orderInfo.cart_ids
}
CommonApi.commonPost('/api/banquet/order/check', query).catch((res) => {
if (res.code === 1) {
this.matchedItems_sp = res.data.cart_list;
this.totalPrice = res.data.total_price;

View File

@ -21,9 +21,8 @@ body {
<scroll-view style="height: 1000rpx;" scroll-y="true">
<u-alert :show-icon="true" title="温馨提示:确定前请检查日期时间段" type="" effect="dark" description=" "></u-alert>
<view class="pb-4" />
<wd-calendar label="做宴日期" placeholder="请选择日期" prop="date" :formatter="formatter" :min-date="min_data"
v-model="orderInfo.date" :rules="[{ required: false, pattern: /^\d{13}$/, message: '请选择日期' }]"
@confirm="handleTimeConfirm" />
<wd-input label="做宴日期" placeholder="请选择日期" prop="date"
v-model="orderInfo.date" readonly @click="showDatePicker = true" />
<wd-select-picker label="做宴时段" v-model="orderInfo.columns" :columns="columns"
type="radio"></wd-select-picker>
@ -53,8 +52,6 @@ body {
searchIconColor="#909399" color="#606266" placeholderColor="#909399" searchIcon="search" margin="10rpx"
maxlength="-1" height="60rpx" @change="searchSP()">
</up-search>
<!-- <view style="width: calc(100vw - 180rpx);display: inline-block;"> -->
<!-- <view > -->
<wd-tabs v-model="currentTab" @change="handleChange" auto-line-width color="#59CB56" lineWidth="80rpx">
<block v-for="(item, index) in menu_list" :key="item">
<wd-tab :title="`第${index + 1}餐`" :name="index" setActive="item.name"
@ -140,6 +137,8 @@ body {
<up-button class="" style="" text="选好了" type="primary" color="#59CB56" shape="circle" size="small"
custom-style="width:200rpx;float:right;margin-right:0rpx;" @click="handleConfirm" />
</view>
<up-calendar :show="showDatePicker" showLunar @confirm="pickDate"
@close="showDatePicker = false" closeOnClickOverlay></up-calendar>
</view>
</template>
@ -159,6 +158,7 @@ import { get } from 'http';
export default defineComponent({
data() {
return {
showDatePicker: false,
badgeProps: {
title: '普通数值',
badgeProps: {
@ -182,14 +182,14 @@ export default defineComponent({
orderInfo: {
id: 0,
is_set: 0,
date: [],
date: '',
columns: '早上',
number: 1,
},
newOrderInfo: {
id: 0,
is_set: 0,
date: [],
date: '',
columns: '早上',
number: 1,
@ -205,7 +205,7 @@ export default defineComponent({
name: '第1餐', orderInfo: {
id: 0,
is_set: 0,
date: [],
date: '',
columns: '早上',
number: 1,
}
@ -214,7 +214,7 @@ export default defineComponent({
name: '第1餐', orderInfo: {
id: 0,
is_set: 0,
date: [],
date: '',
columns: '早上',
number: 1,
}
@ -223,7 +223,7 @@ export default defineComponent({
name: '第1餐', orderInfo: {
id: 0,
is_set: 0,
date: [],
date: '',
columns: '早上',
number: 1,
}
@ -232,7 +232,7 @@ export default defineComponent({
name: '第1餐', orderInfo: {
id: 0,
is_set: 0,
date: [],
date: '',
columns: '早上',
number: 1,
}
@ -241,7 +241,7 @@ export default defineComponent({
name: '第1餐', orderInfo: {
id: 0,
is_set: 0,
date: [],
date: '',
columns: '早上',
number: 1,
}
@ -250,7 +250,7 @@ export default defineComponent({
name: '第1餐', orderInfo: {
id: 0,
is_set: 0,
date: [],
date: '',
columns: '早上',
number: 1,
}
@ -259,7 +259,7 @@ export default defineComponent({
name: '第1餐', orderInfo: {
id: 0,
is_set: 0,
date: [],
date: '',
columns: '早上',
number: 1,
}
@ -268,7 +268,7 @@ export default defineComponent({
name: '第1餐', orderInfo: {
id: 0,
is_set: 0,
date: [],
date: '',
columns: '早上',
number: 1,
}
@ -277,7 +277,7 @@ export default defineComponent({
name: '第1餐', orderInfo: {
id: 0,
is_set: 0,
date: [],
date: '',
columns: '早上',
number: 1,
}
@ -286,7 +286,7 @@ export default defineComponent({
name: '第1餐', orderInfo: {
id: 0,
is_set: 0,
date: [],
date: '',
columns: '早上',
number: 1,
}
@ -295,7 +295,7 @@ export default defineComponent({
name: '第1餐', orderInfo: {
id: 0,
is_set: 0,
date: [],
date: '',
columns: '早上',
number: 1,
}
@ -304,17 +304,14 @@ export default defineComponent({
name: '第1餐', orderInfo: {
id: 0,
is_set: 0,
date: [],
date: '',
columns: '早上',
number: 1,
}
},
],
columns: [{ value: '早上', label: '早上' }, { value: '中午', label: '中午' }, { value: '晚上', label: '晚上' }],
// keyword_sp: '',
// categoryIndex: 0,
childrenIndex: 0,
// categoryList: [],
tabList: [],
good_list: [],
matchedItems_sp: [],
@ -322,22 +319,19 @@ export default defineComponent({
};
},
onLoad(option) {
// console.log(option);
this.search.server_user_id = option.id;
this.getCategoryList()
},
created () {
},
methods: {
pickDate(e) {
this.orderInfo.date = e[0]
this.showDatePicker = false
},
addGoods() {
//
var new_menu_name = '第' + parseInt(this.menu_list.length + 1) + '餐';
this.menu_list.push({ name: new_menu_name, orderInfo: this.newOrderInfo });
},
delGoods() {
if (this.menu_list.length === 1) {
return uni.$u.toast('至少要保留一个餐项');
@ -361,8 +355,6 @@ export default defineComponent({
}
},
});
},
//
handleChange() {
@ -424,8 +416,6 @@ export default defineComponent({
if (year === nowYear && month === nowMonth && da === nowDa) {
day.topInfo = '今天'
}
// const disabledDates = ['2025-08-05', '2023-08-15'];
// const formattedDate = `${year}-${month}-${da}`;
if (this.isDisabledDate.includes(day.date)) {
day.topInfo = '已预定';
day.disabled = true; //
@ -435,15 +425,12 @@ export default defineComponent({
},
handleTimeConfirm(res) {
// console.log(res.value)
this.orderInfo.date = res.value
},
//
handleClickCategory(index : number) {
this.getCategoryList();
},
handleChildrenClick(index : number) {
this.childrenIndex = index;
@ -478,7 +465,7 @@ export default defineComponent({
name: '第' + num + '餐', orderInfo: {
id: 0,
is_set: is_set_cart,
date: res.data.cart_list[val][0].banquet_date ? new Date(res.data.cart_list[val][0].banquet_date).getTime() : [],
date: res.data.cart_list[val][0].banquet_date ? res.data.cart_list[val][0].banquet_date : '',
columns: res.data.cart_list[val][0].banquet_time ? res.data.cart_list[val][0].banquet_time : '早上',
number: res.data.cart_list[val][0].table_number ? res.data.cart_list[val][0].table_number : 1,
}
@ -491,7 +478,6 @@ export default defineComponent({
} else {
this.orderInfo = this.menu_list[this.currentTab].orderInfo; // orderInfo --
}
// console.log(this.orderInfo);
this.totalPrice = res.data.total_price;
} else {
// uni.$u.toast(res.msg);
@ -505,7 +491,6 @@ export default defineComponent({
index: this.currentTab
}).catch((res) => {
if (res.code === 1) {
// this.categoryList = res.data;
this.tabList = res.data;
this.search.category_id = this.tabList[0].id;
this.getCartCheck() //
@ -521,14 +506,11 @@ export default defineComponent({
//
changeSP(pageNo : number) {
this.search.category_id = this.tabList[this.childrenIndex] ? this.tabList[this.childrenIndex].id : 0;
// console.log(pageNo);
this.search.page = pageNo;
this.search.index = this.currentTab;
CommonApi.commonGet('/api/banquet/dishes/list', this.search).catch((res) => {
if (res.code === 1) {
// this.matchedItems_sp = res.data;
this.$refs.pagingRefSP?.complete(res.data);
// console.log(res);
} else {
uni.$u.toast(res.msg);
}
@ -537,7 +519,6 @@ export default defineComponent({
},
//
dishesDetail(item) {
console.log(item);
if (item.type === 1) {
uni.navigateTo({
url: `/pages/banquet/combo/dishes?id=${item.id}`
@ -552,7 +533,6 @@ export default defineComponent({
//
addCart(e) {
console.log(e);
CommonApi.commonPost('/api/banquet/cart/add', {
server_user_id: this.search.server_user_id,
index: this.currentTab,
@ -588,7 +568,7 @@ export default defineComponent({
CommonApi.commonPost('/api/banquet/cart/edit', {
server_user_id: this.search.server_user_id,
index: this.currentTab,
date: this.formatDate(this.orderInfo.date),
date: this.orderInfo.date,
time: this.orderInfo.columns,
number: this.orderInfo.number,
@ -601,17 +581,6 @@ export default defineComponent({
}
});
},
// Y-m-d
formatDate (timestamp: number) {
const date = new Date(timestamp);
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
const formattedDate = `${year}-${month}-${day}`;
console.log('格式化后的日期:', formattedDate);
return formattedDate;
},
},

View File

@ -107,14 +107,9 @@
};
},
onLoad(option) {
// console.log(option);
this.search.id = option.id;
this.is_add = option.is_add | 0;
this.getChefDetail()
// this.changeSP()
},
created() {
},
methods: {
//

View File

@ -42,28 +42,25 @@
<up-line color="#F2F2F2"></up-line>
</view>
<view class="p-[20rpx]">
<view class="u-flex my-[20rpx]" v-for="(item, index) in dishesList" :key="index" @click="gotoDishesDetai(item.id)">
<view class="u-flex my-[20rpx]" v-for="(item, index) in dishesList" :key="index"
@click="gotoDishesDetai(item.id)">
<view class="">
<wd-img width="200rpx" height="200rpx" :src="item.images[0]" :enable-preview="false" :radius="8" :round=false
custom-class="margin-right-24" />
<wd-img width="200rpx" height="200rpx" :src="item.images[0]" :enable-preview="false" :radius="8"
:round=false custom-class="margin-right-24" />
</view>
<view class="">
<up-text size="32rpx" :text="`${item.name}`" :flex1="true" align="left" wordWrap="normal" :show="true"
prefixIcon="" customStyle="font-weight:bold" iconStyle="font-size:28rpx;color:#59CB56;margin-right:10rpx;"
lines="1" decoration="none">
</up-text>
<view class="h-50 u-flex color-gray">
<up-text size="" :text="`${item.intro}`" :flex1="true" align="left" wordWrap="normal" :show="true"
prefixIcon="" customStyle="font-size:24rpx"
iconStyle="font-size:24rpx;color:#59CB56;margin-right:10rpx;" lines="3" decoration="none">
</up-text>
<view class="u-flex u-flex-items-baseline u-flex-wrap">
<view class="font-bold text-[32rpx]">
{{item.name}}
</view>
<view class="h-50 u-flex color-gray">
<view class="text-[24rpx]">
{{item.intro}}
</view>
<view class="text-[32rpx]">
<wd-text :text="item.price" mode="price" type="error" prefix="¥" />
</view>
<view class="h-20 u-flex flex color-gray">
<view class="u-flex w-full u-flex-items-center u-flex-between">
<wd-text size="24rpx" :text="item.line_price" mode="price" decoration="line-through" prefix="¥" />
<view style="margin-top: -20rpx;">
<view class="mt-[-20rpx]">
<wd-button size="small" @click="addCart(item.id)" @click.stop>下单预定</wd-button>
</view>
</view>
@ -175,6 +172,7 @@
background-color: white;
border-radius: 20rpx;
}
.title-align {
height: 130rpx;
line-height: 130rpx;

View File

@ -203,8 +203,8 @@ export default defineComponent({
};
},
onLoad (option) {
this.order_id = option.id;;
this.orderInfo.order_id = option.id;
this.order_id = option.order_id;;
this.orderInfo.order_id = option.order_id;
this.getOrderDetail()
},
methods: {

View File

@ -213,6 +213,7 @@ async function wechatLogin () {
// }
// });
userStore.login({ account: account.value, code: event.code }).catch((res) => {
console.log(res);
if (res.code === 1) {
// const token = res.data.token;
// if (token) {