Files
xiuhuwangqiu/pages/order/cg-order-detail.vue
wangxiaowei f0d16babf0 完善订单
2025-12-09 18:03:40 +08:00

1034 lines
28 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view :data-theme="theme()" :class="'order-datail pb100' + theme()" v-if="!loadding" style="padding-bottom: 200rpx;">
<navbar bg="#F2F2F2" :title="title"></navbar>
<!--详情状态-->
<view class="d-s-c" style="margin-top: 10rpx;">
<!-- 待付款 -->
<view class="state-cont icon-box" style="width: 100%;" v-if="detail.order_status == 0">
<image style="width: 36rpx;height: 36rpx;margin-top: 16rpx;" src="@/static/icon/time2.png" mode=""></image>
<view class="countdown-datetime" v-if="detail.pay_end_time">
<text>还剩<text style="color: #FF5951">{{ detail.pay_end_time }}</text>订单自动取消</text>
</view>
</view>
<!-- 已预约 -->
<view class="" style="width: 100%;" v-if="detail.order_status == 1">
<view class="status-text" style="width: 100%;text-align: center;">
使用过程中有任何问题,请联系商家
</view>
<!-- <view class="face d-f a-i-c">
<view class="d-f a-i-c">
<view style="margin-right: 10rpx;">
<image src="@/static/icon/prompt.png" style="width: 32rpx; height: 32rpx;"/>
</view>
<view class="face-title">进入场馆需要进行人脸识别,请录入</view>
</view>
<view class="face-desc">
<text>去设置</text>
<text style="margin-left: 10rpx;">></text>
</view>
</view> -->
</view>
<!-- 交易完成 -->
<view class="status-text" style="width: 100%;" v-if="detail.order_status == 2">
感谢预定场馆,期待下次再见!
</view>
<!-- 订单取消 -->
<view class="status-text" style="width: 100%;" v-if="detail.order_status == 3">
您的订单已取消。期待下次有机会再为您服务!
</view>
<!-- 退款 -->
<view class="status-text" style="width: 100%;" v-if="detail.order_status == 4">
<view class="d-c-c" style="margin-bottom: 18rpx;" @tap="billPopup = true">
<view class="refund-txt">实际退款¥175.00</view>
<image style="width: 48rpx;height: 48rpx;margin-left: 6rpx;margin-top: 10rpx;" src="@/static/icon/right.png" mode=""></image>
</view>
<view class="">您的订单已取消。期待下次有机会再为您服务!</view>
</view>
<view class="dot-bg"></view>
</view>
<view class="shop">
<view class="one-product" :key="index">
<view class="d-s-s">
<view class="cover" style="width: 190rpx;height: 190rpx;border-radius: 16rpx;margin-right: 30rpx;">
<image :src="venue.image" mode="aspectFit" style="width: 190rpx;height: 190rpx;border-radius: 16rpx;"></image>
<!-- <image :src="detail.image" mode="aspectFit" style="width: 190rpx;height: 190rpx;border-radius: 16rpx;"></image> -->
</view>
<view class="flex-1">
<view class="d-b-c">
<view class="gray3 f30 d-f a-i-c">
<view class="cg-name" @click="againReserve">{{ detail.ground_name }}</view>
<image style="width: 48rpx;height: 48rpx;" src="@/static/icon/right.png" mode=""></image>
</view>
<view class="cg-price" v-if="ballType == 2">
¥
<text class="f40">{{ detail.order_amount }}</text>
</view>
</view>
<view class="d-b-c" style="margin-top:18rpx;" v-if="ballType == 2">
<view class="cg-hour">¥100/小时</view>
<view class="cg-num">x{{ item.hours }}</view>
</view>
<view class="d-f a-i-c" style="text-align: right;justify-content: end;margin-top:18rpx;">
<view style="font-size: 24rpx; color: #606266;line-height: 34rpx;margin-right:10rpx;">实付</view>
<view class="">
<price-format color="#606266" :subscript-size="26" :first-size="32" :second-size="32" :price=" detail.order_amount"></price-format>
</view>
</view>
</view>
</view>
<!-- 预约信息 -->
<view class="cg-reserve">
<view class="cg-title">预约信息</view>
<!-- todo 这里的状态如果是交易完成、订单取消、退款成功则将下面的预约改为使用 -->
<view class="cg-desc1">预约时间:{{ detail.day_time }}</view>
<view class="cg-desc2">预约时长:{{ detail.hours }}小时</view>
<template v-if="ballType == 1">
<view class="cg-desc2">场地信息:</view>
<view class="desc" v-for="(item, index) in detail.trade" :key="index">
<view class="fb" style="margin: 20rpx 0;">{{ index }}</view>
<view class="date-grid">
<view class="date-time-btn" v-for="(item2, index2) in item" :key="index2">
{{ item2.start_time }}-{{ item2.end_time }}
</view>
</view>
</view>
</template>
</view>
</view>
</view>
<!-- 适用场馆 -->
<view class="cg-store">
<view class="cg-store-title" @click="againReserve">适用场馆</view>
<view class="d-s-c">
<view class="cover" style="width: 190rpx;height: 190rpx;border-radius: 16rpx;margin-right: 30rpx;">
<image :src="venue.image" mode="aspectFit" style="width: 190rpx;height: 190rpx;border-radius: 16rpx;" />
</view>
<view class="flex-1 d-f pr">
<view class="">
<view class="gray3 f30 d-f a-i-c">
<view class="cg-name">{{ venue.name }}</view>
<image style="width: 48rpx;height: 48rpx;" src="@/static/icon/right.png" mode=""></image>
</view>
<view class="cg-store-jl">距您{{ venue.distance }}km</view>
<view class="d-f a-i-c cg-address-block">
<view class="">
<image style="width: 36rpx;height: 36rpx;" src="@/static/icon/address.png" mode=""></image>
</view>
<view class="cg-address">
{{ venue.address }}
</view>
</view>
</view>
<view class="pa cg-icon-box d-f a-i-c">
<image style="width: 64rpx;height: 64rpx;margin-right: 20rpx;" src="@/static/icon/share.png" mode="" @click="location"></image>
<image style="width: 64rpx;height: 64rpx;" src="@/static/icon/mobile.png" mode="" @click="contactStore"></image>
</view>
</view>
</view>
</view>
<!-- 订单信息 -->
<view class="cg-order">
<view class="cg-order-title">订单信息</view>
<view class="cg-order-info d-b-c">
<view class="">订单编号</view>
<view class="">
<text>{{ detail.order_sn }}</text>
<text style="margin: 0 12rpx;color: #BFC2C2;">|</text>
<text class="cg-copy" @click="copy(detail.order_sn)">复制</text>
</view>
</view>
<view class="cg-order-info d-b-c mt14" v-if="detail.pay_way > 0">
<view class="">交易方式</view>
<view class="">
<text>{{ detail.pay_way == 1 ? '余额支付' : '微信支付' }}</text>
</view>
</view>
<view class="cg-order-info d-b-c mt14" v-if="detail.dtime">
<view class="">创建时间</view>
<view class="">
<text>{{ detail.dtime }}</text>
</view>
</view>
<view class="cg-order-info d-b-c mt14" v-if=" detail.update_dtime">
<view class="">付款时间</view>
<view class="">
<text>{{ detail.update_dtime }}</text>
</view>
</view>
</view>
<template v-if="detail.order_source != 80">
<view v-if="detail.order_status.value != 20 && detail.order_status.value != 30" class="foot-btns">
<!-- 待支付 -->
<templte class="ww100" v-if="detail.order_status == 0">
<view class="d-b-c ww100">
<view class="cancle-btn" @click="showCancleOrderPopup">取消订单</view>
<view class="pay-btn" @click="onPayOrder(detail.ground_id)">立即支付{{ detail.order_amount }}</view>
</view>
</templte>
<!-- 已预约 -->
<templte class="ww100" v-if="detail.order_status == 1">
<view class="d-b-c ww100">
<view class="cancle-reserve-btn" @click="showCancleReservePopup">取消预约</view>
<view class="contact-btn" @click="contactStore">联系商家</view>
</view>
</templte>
<!-- 订单取消退款成功 -->
<templte class="ww100" v-if="detail.order_status == 3 || detail.order_status == 4">
<view class="ww100 again-btn" @click="againReserve">再次预定</view>
</templte>
</view>
</template>
<!-- 退款账单 -->
<Popup :show="billPopup" :width='750' :padding="0" type="bottom" backgroundColor="#FBFBFB" radius="32rpx 32rpx 0 0">
<view class="ww100 box-s-b pop-improt typeof pr time-popup">
<image style="width: 64rpx;height: 64rpx;position: absolute; top: 26rpx;right: 30rpx;" src="@/static/icon/close2.png" mode="" @tap="handleShowTime"></image>
<view class="d-c-c pt42">
<text class="f34 fb">费用明细</text>
</view>
<view class="bg-white bill-info">
<view class="">
<view class="title1 d-b-c">
<view>场地费</view>
<view>
<price-format color="#303133" :subscript-size="30" :first-size="30" :second-size="30" price="100"></price-format>
</view>
</view>
<view class="title2 d-b-c">
<view>场地费100/小时</view>
<view>x3</view>
</view>
</view>
<view style="margin-top: 52rpx;">
<view class="title1 d-b-c">
<view>灯光费</view>
<view>
<price-format color="#303133" :subscript-size="30" :first-size="30" :second-size="30" price="100"></price-format>
</view>
</view>
<view class="title2 d-b-c">
<view>灯光费50/小时</view>
<view>x3</view>
</view>
</view>
<view class="line"></view>
<view class="title3 d-b-c">
<view>实付退款金额</view>
<view>
<price-format color="#303133" :subscript-size="30" :first-size="30" :second-size="30" price="100"></price-format>
</view>
</view>
</view>
</view>
</Popup>
<!-- 取消订单 -->
<Popup :show="cancelOrderPopup" radius="16rpx">
<view class="notice-popup">
<view class="title">确定取消订单</view>
<view class="desc">
取消订单后无法恢复是否确认取消
</view>
<view class="btn">
<view class="btn1" @click="cancelOrderPopup = false">取消</view>
<view class="btn2" @click="cancelOrder">确定</view>
</view>
</view>
</Popup>
<!-- 取消预约 -->
<Popup :show="cancelReservePopup" radius="16rpx">
<view class="notice-popup">
<view class="title">确定取消预约吗</view>
<view class="desc">
<view class="rule">取消按照如下规则请谨慎操作</view>
<view class="rule1">1预约开始前24小时取消100%退款</view>
<view class="rule1">2预约开始前4小时-24小时取消50%退款</view>
<view class="rule1">3预约开始前4小时内取消不予退款</view>
</view>
<view class="btn">
<view class="btn1" @click="cancelReservePopup = false">取消</view>
<view class="btn2" @click="cancelReserveOrder">确定</view>
</view>
</view>
</Popup>
</view>
</template>
<script>
import navbar from '@/components/navbar.vue';
import Popup from '@/components/uni-popup.vue';
export default {
components: {
Popup,
navbar
},
data() {
return {
ballType: 1, // 1网球 2篮球
title: '订单详情',
/*是否加载完成*/
loadding: true,
indicatorDots: true,
autoplay: true,
interval: 2000,
duration: 500,
/*是否显示支付类别弹窗*/
isPayPopup: false,
/*订单id*/
order_id: 0,
/*订单详情*/
detail: {
order_status: [],
address: {
region: []
},
product: [],
pay_type: [],
delivery_type: [],
pay_status: []
},
extractStore: {},
billPopup: false,
venue: {}, // 场馆
cancelOrderPopup: false,
cancelReservePopup: false
};
},
onLoad(e) {
this.order_id = e.order_id;
this.ballType = e.ballType || 1;
},
onShow() {
/*获取订单详情*/
this.getData();
},
methods: {
/*获取数据*/
getData() {
let self = this;
let order_id = self.order_id;
uni.showLoading({
title: '加载中'
});
self._post(
'order.groundOrder/orderGroundDetails',
{
order_id: order_id
},
function(res) {
self.detail = res.data.lists;
console.log("🚀 ~ self.detail:", self.detail)
// self.extractStore = res.data.order.extractStore;
// self.title = self.detail.state_text;
// if (self.detail.state_text == '待付款') {
// self.title = '等待付款';
// }
// 获取场馆详情
self._post(
'ground.ground/groundDetails',
{
app_id: self.getAppId(),
id: self.detail.ground_id,
latitude: uni.getStorageSync('latitude') || 0,
longitude: uni.getStorageSync('longitude') || 0,
},
function (res) {
if (res.code) {
self.loadding = false;
self.venue = res.data.lists
}
}
)
self.loadding = false;
uni.hideLoading();
}
);
},
// 取消订单弹窗
showCancleOrderPopup() {
this.cancelOrderPopup = true;
},
/*取消订单*/
cancelOrder() {
let self = this;
uni.showLoading({
title: '正在处理'
});
self._post(
'order.groundOrder/cancelGroundOrder',
{
order_id: self.order_id
},
function(res) {
self.cancelOrderPopup = false;
uni.hideLoading();
uni.showToast({
title: '操作成功',
duration: 2000,
icon: 'success'
});
self.getData();
}
);
},
// 取消预约
showCancleReservePopup() {
this.cancelReservePopup = true
},
/*取消预约订单*/
cancelReserveOrder() {
let self = this;
uni.showLoading({
title: '正在处理'
});
self._post(
'order.groundOrder/refund',
{
order_id: self.order_id
},
function(res) {
self.cancelReservePopup = false;
uni.hideLoading();
uni.showToast({
title: '操作成功',
duration: 2000,
icon: 'success'
});
self.getData();
}
);
},
/*确认收货*/
orderReceipt(order_id) {
let self = this;
uni.showModal({
title: '提示',
content: '您确定要收货吗?',
success: function(o) {
if (o.confirm) {
uni.showLoading({
title: '正在处理'
});
self._post(
'user.order/receipt',
{
order_id: order_id
},
function(res) {
uni.hideLoading();
uni.showToast({
title: res.msg,
duration: 2000,
icon: 'success'
});
self.getData();
}
);
}
}
});
},
/*查看物流*/
gotoExpress(order_id) {
this.gotoPage('/pages/order/express/express?order_id=' + order_id);
},
/*申请售后*/
onApplyRefund(e) {
this.gotoPage('/pages/order/refund/apply/apply?order_product_id=' + e);
},
onSaveTable(table_id, order_product_id) {
this.gotoPage('/pages/plus/table/table?table_id=' + table_id + '&order_product_id=' + order_product_id);
},
// 复制订单号
copy(sn) {
uni.setClipboardData({
data: sn,
success: function() {
uni.showToast({
title: '复制成功',
duration: 2000,
icon: 'success'
});
}
});
},
// 跳转支付页面
onPayOrder(groundId = 0) {
let self = this;
if (self.ballType == 1) {
// 网球场
self.gotoPage(`/bundle/reserve/confirm?orderId=${self.order_id}&venueId=${groundId}&typeId=1`);
return
}
},
// 再次预定
againReserve() {
this.gotoPage(`/bundle/reserve/details?id=${this.detail.ground_id}&ballType=${this.ballType}`);
// toGround(ground_id) {
// uni.navigateTo({
// url: `/bundle/reserve/details?id=${ground_id}&typeId=${this.ballType}`
// });
},
// 联系商家
contactStore() {
uni.makePhoneCall({
phoneNumber: this.venue.contact_phone //仅为示例,并非真实的电话号码
});
},
// 导航
location() {
uni.openLocation({
latitude: this.venue.latitude, // 纬度,范围为-90~90负数表示南纬
longitude: this.venue.longitude, // 经度,范围为-180~180负数表示西经
scale: 18, // 缩放比例
name: this.venue.name,
address: this.venue.address
});
}
}
};
</script>
<style scoped lang="scss">
page {
background: #F6F7F8 !important;
}
.order-express {
background: #ffffff;
margin: 0 20rpx;
border-radius: 12rpx;
margin-top: 20rpx;
}
.order-express .icon-box .iconfont {
font-size: 50rpx;
}
.order-datail {
padding-bottom: 90rpx;
background-color: #f2f2f2;
}
.state-cont .countdown-datetime {
margin-top: 16rpx;
}
.state-cont .countdown-datetime text {
padding: 4rpx 8rpx;
border-radius: 4rpx;
}
.group {
margin: 0 20rpx;
margin-top: 20rpx;
border-radius: 12rpx;
}
.foot-btns {
height: 146rpx;
line-height: 146rpx;
padding: 8rpx 60rpx;
}
.supplement-box {
margin-top: 20rpx;
@include background_color('bg-tips');
@include border_color('border_color');
border: 1rpx solid;
border-radius: 12rpx;
line-height: 1.5;
}
.shop{
// background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArIAAAHqCAMAAADPkl21AAABvFBMVEUAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////l5eX///8dYfCxAAAAknRSTlMAAQIDBAYHCAkKCwwNDg8TFBUXGBobHR4fICEiIycoKSssLzAyMzQ1OEFCQ0VLTlBSU1ZXWVtdYWNkZWZnamtub3BxdHV3eXqDhYeJjI2Oj5KUlpiZm56go6Smp6qsrrCzuru8vb/GyMrLzs/S09TV1tfa29zd3t/g4eLj5ebn6Orr7/Dx8vP09fb3+Pn6+/z9/jTqU2QAAAWpSURBVHja7dznc1RlGMbhB0g2IUZRQzFgTFAUFFA6iIpIsWEJIFIVRKWXqAQUpFggbOjyDwMBISHZ3W/M8w7X9fGd/XTPb2bPnLN7Ih5qe+ern/6o3oZUqr//+MXbLTHaa9vUSlqXvp35WLAtX980C5ld/7x5eLHdx01CdodmPCq254I9yO/My/8XO/2cNShBf8f9YtuP2YIy7K8MJbvZEpTis6EL2RuGoBSDU+4mu9MOlKM3YtI1M1COvyvxrhUoyXzXBZTly+gzAiXZG4NGoCT9ccsIlGQgbEBZJItkQbIgWSQLkgXJIlmQLEgWyYJkQbJIFiQLkkWyIFmQLJIFyYJkkSxIFiSLZEGyIFkkC5IFyYJkkSxIFiSLZEGyIFkkC5IFySJZkCxIFsmCZEGySBYkC5JFsiBZkCySBcmCZJEsSBYkC5JFsiBZkCySBcmCZJEsSBYki2RBsiBZJAuSBckiWZAsSBbJgmRBskgWJAuSRbIgWZAsSBbJgmRBskgWJAuSRbIgWZAskgXJgmSRLEgWJItkQbIgWSQLkgXJIlmQLEgWyYJkQbIgWSQLkgXJIlmQLEgWyYJkQbJIFiQLkkWyIFmQLJIFyYJkkSxIFiSLZEGyIFkkC5IFySJZEyBZkCxIFsmCZEGySBYkC5JFsiBZkCySBcmCZJEsSBYki2RBsiBZJAuSBckiWZAsSBbJgmRBsiBZJAuSBckiWZAsSBbJgmRBskgWJAuSRbIgWZAskgXJgmSRLEgWJItkQbIgWSQLkgXJgmSRLEgWJItkQbIgWSQLkgXJIlmQLEgWyYJkQbJIFiQLkkWyIFmQLJIFyYJkeZqTbZ02d83uqiHIb+D7j96aVokhbcuPGoTcDi9tjeEmrL9qFPKqrh4fj3v1hF3I6nh3jGHKb5YhpyPPx5imn7UNGZ14MWqYPWgd8vm3O2r62Dzks7J2sVE5Yx/SXciOr5NsrDIQ2SyqV2w852qWZP5qqpts7DERuXxTv9hYYyJyWdwg2bkmIpeuBsl2mohcmhskO3HEp/8bxpmzJ312z60GxUazZJ2lSvZ2gxsG8YIvInKZ1CDZOSYilzcaJPu+ichlRYNkd5mIXLbXL7ZtwETk8k+lbrLvWYhsltW9xXXKQGTzy4Q6ya6zD/l8ULvY172Cg4Qu9tT8fcGf1iGjkx1jFzv5V9uQ07Ex/xQ+q98yZNX3yqhgmz7xgiMSu/zhuBHBtq/oMwq5HVrScr/W1s55a/f4kyIl3Dn4bvWbUyteiUxhJItkQbIgWSQLkgXJIlmQLEgWyYJkQbJIFiQLkkWyIFmQLJIFyYJkkSxIFiSLZEGyIFkkC5IFyYJkkSxIFiSLZEGyIFkkC5IFySJZkCxIFsmCZEGySBYkC5JFsiBZkCySBcmCZJEsSBYkC5JFsiBZkCySBcmCZJEsSBYki2RBsiBZJAuSBckiWZAsSBbJgmRBskgWJAuSRbIgWZAsSBbJgmRBskgWJAuSRbIgWZAskgXJgmSRLEgWJItkQbIgWSQLkgXJIlmQLEgWyYJkQbIgWSQLkgXJIlmQLEgWyYJkQbJIFiQLkkWyIFmQLJIFyYJkkSxIFiSLZEGyIFkkC5IFySJZEyBZkCxIFsmCZEGySBYkC5JFsiBZkCySBcmCZJEsSBYki2RBsiBZJAuSBckiWZAsSBbJgmRBsiBZJAuSBckiWZAsSBbJgmRBskgWJAuSRbIgWZAskgXJgmSRLEgWJItkIX+yV21ASa7EBSNQkvNxwAiUZF9sMQIl2RRLjEBJFsazg1agHJcmRmw1A+XYHBFdN+xAKa68dDfZ2GgISrHhXrHxzFFLUIb9LUPJRudZW1CC/o54oMcjMApwekY81N1nD7I72BnDtPbeNAmZXfu0KUaatcMzBdK6uKUrRmtf0Pvz6ap1yOXyqR82zK886vQOlHY6pWI0r3sAAAAASUVORK5CYII=");
// background-repeat: no-repeat;
// background-size: 100% auto;
background-color: #fff;
border-radius: 16rpx;
// height: 490rpx;
margin: 30rpx;
padding: 30rpx;
}
.cg-name {
font-size: 32rpx;
color: #303133;
line-height: 44rpx;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.cg-name2 {
font-size: 32rpx;
color: #303133;
line-height: 44rpx;
}
.cg-price {
font-size: 26rpx;
color: #909399;
line-height: 36rpx;
}
.cg-hour {
font-size: 26rpx;
color: #909399;
line-height: 36rpx;
}
.cg-num {
font-size: 26rpx;
color: #909399;
line-height: 36rpx;
}
.cg-reserve {
margin-top: 20rpx;
}
.cg-title {
font-size: 30rpx;
color: #303133;
line-height: 42rpx;
}
.cg-desc1,
.cg-desc2 {
font-weight: 500;
font-size: 26rpx;
color: #606266;
line-height: 48rpx;
margin-top: 20rpx;
}
.cg-store {
margin-top: 20rpx;
background-color: #fff;
border-radius: 16rpx;
margin: 0 30rpx 30rpx;
padding: 30rpx 30rpx;
}
.cg-store-title {
font-size: 32rpx;
color: #303133;
line-height: 44rpx;
margin-bottom: 26rpx;
}
.cg-store-jl {
font-size: 24rpx;
color: #909399;
line-height: 34rpx;
margin-top: 16rpx;
}
.cg-address-block {
margin-top: 20rpx;
}
.cg-address {
font-weight: 400;
font-size: 24rpx;
color: #606266;
line-height: 34rpx;
margin-left: 8rpx;
width: 230rpx;
}
.cg-icon-box {
top: 50%;
right: 0;
transform: translateY(-50%);
}
.cg-order {
margin-top: 20rpx;
background-color: #fff;
border-radius: 16rpx;
margin: 0 30rpx ;
padding: 30rpx 30rpx;
}
.cg-order-title {
font-size: 32rpx;
color: #303133;
line-height: 44rpx;
margin-bottom: 26rpx;
}
.cg-order-info {
font-size: 28rpx;
color: #606266;
line-height: 40rpx;
}
.cg-copy {
font-weight: 500;
font-size: 28rpx;
color: #365A9A;
line-height: 48rpx;
}
.mt14 {
margin-top: 14rpx;
}
.status-text {
width: 100%;
font-size: 26rpx;
color: #909399;
line-height: 36rpx;
text-align: center;
margin-top: 14rpx;
text-align: center;
}
.refund-txt {
font-size: 36rpx;
color: #303133;
line-height: 50rpx;
margin-top: 18rpx;
}
.cancel-btn {
font-size: 28rpx;
color: #606266;
line-height: 40rpx;
}
.pay-btn {
width: 360rpx;
height: 90rpx;
line-height: 90rpx;
text-align: center;
background: #365A9A;
border-radius: 8rpx;
color: #fff;
font-size: 32rpx;
}
.cancle-reserve-btn {
width: 330rpx;
height: 90rpx;
text-align: center;
line-height: 90rpx;
background: #F6F7F8;
border-radius: 8rpx;
margin-right: 30rpx;
font-size: 32rpx;
color: #303133;
}
.contact-btn {
width: 330rpx;
height: 90rpx;
text-align: center;
line-height: 90rpx;
background: #365A9A;
border-radius: 8rpx;
font-size: 32rpx;
color: #FFFFFF;
}
.again-btn {
width: 630rpx;
height: 90rpx;
text-align: center;
line-height: 90rpx;
background: #365A9A;
border-radius: 8rpx;
font-size: 32rpx;
color: #FFFFFF;
}
.time-popup {
position: relative;
.title {
font-size: 36rpx;
color: #121212;
line-height: 50rpx;
}
.pt42 {
padding-top: 42rpx;
}
.notice {
margin-top: 30rpx;
width: 100%;
height: 56rpx;
background: #FFFBE5;
padding: 10rpx 30rpx;
font-weight: 500;
font-size: 26rpx;
color: #E2950F;
line-height: 48rpx;
text-align: left;
}
.time-item {
margin-right: 32rpx;
font-weight: 400;
font-size: 32rpx;
color: #303133;
line-height: 44rpx;
height: 62rpx;
}
.time-item-line {
width: 60rpx;
height: 10px;
background-color: #365A9A;
border-radius: 6rpx;
}
.active {
color: #365A9A;
font-size: 32rpx;
line-height: 44rpx;
}
.active:after {
content: '';
display: block;
width: 60rpx;
height: 10rpx;
background-color: #365A9A;
border-radius: 6rpx;
margin: 8rpx auto 0 auto;
}
/* 日期网格:一行四个,间距 20rpx */
.date-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-gap: 20rpx 20rpx; /* 行间距和列间距均为 20rpx */
padding: 0 30rpx; /* 保持与上方时间切换区域一致的左右内边距 */
}
.date-item {
background-color: #F7F7F7;
border-radius: 10rpx;
height: 72rpx; /* 可按需调整高度 */
display: flex;
align-items: center;
justify-content: center;
font-size: 30rpx;
color: #303133;
box-sizing: border-box;
}
/* 可选:选中样式 */
.date-item.active {
border-color: #365A9A;
color: #365A9A;
box-shadow: 0 4rpx 10rpx rgba(54,90,154,0.08);
}
.price {
margin-top: 100rpx;
.line {
height: 2rpx;
background: #E5E5E5;
width: 100%;
}
.price-block {
margin: 42rpx 22rpx;
}
.price-detail {
color: #365A9A;
font-size: 24rpx;
line-height: 34rpx;
}
.price-btn {
width: 368rpx;
height: 90rpx;
line-height: 90rpx;
text-align: center;
background: #365A9A;
border-radius: 8rpx;
font-size: 32rpx;
color: #FFF;
}
}
}
.bill-info {
border-radius: 16rpx;
margin: 32rpx 30rpx 22rpx;
padding: 48rpx 30rpx 30rpx;
.title1 {
font-size: 30rpx;
color: #303133;
line-height: 42rpx;
}
.title2 {
margin-top: 12rpx;
font-weight: 400;
font-size: 24rpx;
color: #909399;
line-height: 34rpx;
}
.line {
border: 2rpx solid #F6F7F9;
margin: 34rpx 0 30rpx;
}
.title3 {
font-size: 30rpx;
color: #303133;
line-height: 42rpx;
}
}
.face {
width: 692rpx;
height: 80rpx;
background: #FFFFFF;
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #FAEED9;
color: #E2950F;
padding: 0 30rpx;
margin: 18rpx 30rpx 0;
box-sizing: border-box;
.face-title {
}
}
/* 日期网格:一行三个,间距 20rpx */
.date-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 20rpx 20rpx; /* 行间距和列间距均为 20rpx */
}
.date-time-btn {
width: 100%;
height: 60rpx;
line-height: 60rpx;
background: #365A9A;
color: #fff;
font-size: 26rpx;
border-radius: 10rpx;
text-align: center;
}
.notice-popup {
padding: 20rpx 0;
width: 100%;
.title {
font-size: 36rpx;
color: #303133;
line-height: 50rpx;
text-align: center;
}
.desc {
margin-top: 48rpx;
font-weight: 400;
font-size: 32rpx;
color: #303133;
line-height: 52rpx;
text-align: center;
}
.rule {
margin-bottom: 18rpx;
text-align: left;
}
.rule1 {
font-weight: 400;
font-size: 32rpx;
color: #303133;
line-height: 44rpx;
text-align: left;
margin-bottom: 10rpx;
}
.btn {
font-size: 32rpx;
display: flex;
justify-content: center;
align-items: center;
margin-top: 44rpx;
.btn1 {
width: 240rpx;
height: 80rpx;
line-height: 80rpx;
text-align: center;
background: #F6F7F8;
border-radius: 8rpx;
margin-right: 30rpx;
}
.btn2 {
width: 240rpx;
height: 80rpx;
line-height: 80rpx;
text-align: center;
background: #365A9A;
color: #FFFFFF;
border-radius: 8rpx;
}
}
}
</style>