Feat::调整时间选择器

This commit is contained in:
linxi
2025-10-24 10:19:16 +08:00
parent d1bbea6e9b
commit f73d7587f7
2 changed files with 67 additions and 15 deletions
+20 -8
View File
@@ -133,10 +133,20 @@
<view class="buy-btn" @click="bookNow">立即购买</view> <view class="buy-btn" @click="bookNow">立即购买</view>
</view> </view>
</view> </view>
<Calendar ref="calendar" <!-- <Calendar ref="calendar"
:minDay="detail.minBookingDays" :minDay="detail.minBookingDays"
@dateSelected="handleDateSelected" @dateSelected="handleDateSelected"
></Calendar> ></Calendar> -->
<DateRangePicker
ref="dateRangePicker"
v-model="dateRange"
:show="showDatePicker"
:minBookingDays="detail.minBookingDays"
:travelGroupProductId="detail.id"
@update:show="showDatePicker = false"
@input="handleDateSelected"
>
</DateRangePicker>
</view> </view>
</template> </template>
@@ -144,13 +154,17 @@
import { getJiaLouProductDetail, getJiaLouCalendar,getJiaLouBookingRules } from '@/api/qianxian' import { getJiaLouProductDetail, getJiaLouCalendar,getJiaLouBookingRules } from '@/api/qianxian'
import {getGiftCardSendBackground} from "@/api/gift" import {getGiftCardSendBackground} from "@/api/gift"
import Calendar from '../components/Calendar.vue' import Calendar from '../components/Calendar.vue'
import DateRangePicker from '@/components/DateRangePicker/DateRangePicker.vue'
export default { export default {
name: 'GroupBuyDetails', name: 'GroupBuyDetails',
components: { components: {
Calendar Calendar,
DateRangePicker
}, },
data() { data() {
return { return {
dateRange: [null, null],
showDatePicker: false,
webUrl: this.$VUE_APP_RESOURCES_URL, webUrl: this.$VUE_APP_RESOURCES_URL,
giftBg: '', giftBg: '',
id: '', id: '',
@@ -187,12 +201,10 @@ export default {
}) })
}, },
handleDateSelected(dateRange) { handleDateSelected(dateRange) {
console.log(dateRange, 'dateRange'); this.dateRange = dateRange
this.rangeDate = dateRange
}, },
handleDate() { handleDate() {
this.$refs.calendar.showCalendar(this.calendar) this.showDatePicker = true
}, },
/** /**
* 获取产品可预约日期 * 获取产品可预约日期
@@ -284,7 +296,7 @@ export default {
}) })
}, },
bookNow() { bookNow() {
uni.navigateTo({ url: '/pkg_product/views/submitOrder?id=' + this.id + '&orderStartDate=' + this.rangeDate.startDate + '&orderEndDate=' + this.rangeDate.endDate }) uni.navigateTo({ url: '/pkg_product/views/submitOrder?id=' + this.id + '&orderStartDate=' + this.dateRange[0] + '&orderEndDate=' + this.dateRange[1] })
}, },
/** /**
* 查找指定日期的预约状态 * 查找指定日期的预约状态
+47 -7
View File
@@ -112,6 +112,7 @@
</view> </view>
<view <view
class="gift-wrap" class="gift-wrap"
v-if="orderInfo.giftCardInfo > 0"
> >
<view class="v12-justify-between v12-align-center"> <view class="v12-justify-between v12-align-center">
<view class="v12-font-28 v12-font-bold v12-align-center"> <view class="v12-font-28 v12-font-bold v12-align-center">
@@ -140,28 +141,42 @@
<button class="btn v12-primary-border v12-primary-text modify-time" @click="modifyStayTime">修改入住时间</button> <button class="btn v12-primary-border v12-primary-text modify-time" @click="modifyStayTime">修改入住时间</button>
<button class="btn v12-primary-border v12-primary-text refund" @click="applyRefund">申请退款</button> <button class="btn v12-primary-border v12-primary-text refund" @click="applyRefund">申请退款</button>
</view> </view>
<view class="v12-align-center" v-if="orderInfo._status && ['1','2'].includes(orderInfo._status._type)"> <view class="v12-align-center" v-if="!orderInfo._status && ['1','2'].includes(orderInfo._status._type)">
<button class="btn v12-dark-border v12-dark-text modify-time" @click="showPhoneDialog('phone')">联系商家</button> <button class="btn v12-dark-border v12-dark-text modify-time" @click="showPhoneDialog('phone')">联系商家</button>
</view> </view>
</view> </view>
<Calendar <!-- <Calendar
ref="calendar" ref="calendar"
:minDay="orderInfo.minBookingDays" :minDay="orderInfo.minBookingDays"
@dateSelected="handleDateSelected"> @dateSelected="handleDateSelected">
</Calendar> </Calendar> -->
<DateRangePicker
ref="dateRangePicker"
v-model="dateRange"
:show="showDatePicker"
:minBookingDays="orderInfo.minBookingDays"
:travelGroupProductId="orderInfo.travelGroupOrderInfo.travelGroupProduct.id"
@update:show="showDatePicker = false"
@input="handleDateSelected"
>
</DateRangePicker>
</view> </view>
</template> </template>
<script> <script>
import { fetchSojoumOrderDetail,sojoumOrderCheckInTime, sojoumOrderCalendar } from "@/api/sojoumOrder"; import { fetchSojoumOrderDetail,sojoumOrderCheckInTime, sojoumOrderCalendar } from "@/api/sojoumOrder";
import Calendar from "../components/Calendar.vue"; import Calendar from "../components/Calendar.vue";
import DateRangePicker from '@/components/DateRangePicker/DateRangePicker.vue'
export default { export default {
components: { components: {
Calendar Calendar,
DateRangePicker
}, },
data() { data() {
return { return {
webUrl: this.$VUE_APP_RESOURCES_URL, webUrl: this.$VUE_APP_RESOURCES_URL,
dateRange: [null, null],
showDatePicker: false,
key: '', key: '',
popContent: '', popContent: '',
title: '', title: '',
@@ -180,6 +195,31 @@ export default {
this.getSojoumOrderDetail(); this.getSojoumOrderDetail();
}, },
methods: { methods: {
handleDateRangeChange(dates) {
// if (dates && dates.length === 2) {
// [this.form.checkInDate, this.form.checkOutDate] = dates
// }
const params = {
orderId: this.key,
orderStartDate: dates[0],
orderEndDate: dates[1]
}
uni.showLoading({
title: '加载中...',
mask: true,
})
sojoumOrderCheckInTime(params).then(res => {
if (res.status === 200) {
uni.showToast({
title: '入住时间修改成功',
icon: 'success'
})
this.getSojoumOrderDetail();
}
}).finally(() => {
uni.hideLoading();
})
},
getDaysCount() { getDaysCount() {
// 根据开始日期和结束日期计算天数 // 根据开始日期和结束日期计算天数
const startDate = new Date(this.orderInfo.travelGroupOrderInfo.orderStartDate); const startDate = new Date(this.orderInfo.travelGroupOrderInfo.orderStartDate);
@@ -191,8 +231,8 @@ export default {
handleDateSelected(dateRange) { handleDateSelected(dateRange) {
const params = { const params = {
orderId: this.key, orderId: this.key,
orderStartDate: dateRange.startDate, orderStartDate: dateRange[0],
orderEndDate: dateRange.endDate orderEndDate: dateRange[1]
} }
uni.showLoading({ uni.showLoading({
title: '加载中...', title: '加载中...',
@@ -316,7 +356,7 @@ export default {
}, },
modifyStayTime() { modifyStayTime() {
// 这里可以添加修改入住时间的逻辑,比如打开日期选择器 // 这里可以添加修改入住时间的逻辑,比如打开日期选择器
this.getMonthDay(); this.showDatePicker = true;
}, },
applyRefund() { applyRefund() {
// 这里可以添加申请退款的逻辑,比如跳转到退款页面 // 这里可以添加申请退款的逻辑,比如跳转到退款页面