|
|
|
<template>
|
|
|
|
<view class="bg">
|
|
|
|
<view class="title-box">
|
|
|
|
<span class="iconfont" @click="goBack"></span>
|
|
|
|
<view>订单状态</view>
|
|
|
|
</view>
|
|
|
|
<view class="top-box">
|
|
|
|
<view>{{info.status_text}}</view>
|
|
|
|
|
|
|
|
<!-- 待支付时会显示自动取消时间 -->
|
|
|
|
<view v-if="info.status=='WAIT_PAYMENT'" class="close-time">订单将在{{info.close_time.slice(-8)}}自动取消</view>
|
|
|
|
|
|
|
|
<!-- 待退款 -->
|
|
|
|
<view v-if="info.status=='WAIT_REFUND'" class="close-time">系统将在1-7个工作日内原路退回您的原支付账户</view>
|
|
|
|
|
|
|
|
<!-- 退款完成 -->
|
|
|
|
<view v-if="info.status=='REFUND_SUCCESS'" class="close-time">您的退款金额已退还到您的原支付账户</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 景点、美食二维码 -->
|
|
|
|
<view v-if="isQrcode" style="margin-top: -66rpx;">
|
|
|
|
<view class="qrcode-remain" v-if="!info.order_child[0].extract_id">还剩<span>{{remainNum}}</span>张未核销</view>
|
|
|
|
|
|
|
|
<swiper class="qrcode-box" :circular="false" previous-margin="120rpx" next-margin="120rpx" :duration="800"
|
|
|
|
:current="current" @change="swiperChange">
|
|
|
|
<swiper-item v-for="(item, index) in info.order_child" :key="index" class="flex-center">
|
|
|
|
<view class="qrcode-item flex-column">
|
|
|
|
<view class="qrcode-title">{{item.specifications_name}}</view>
|
|
|
|
<image :src="item.qrcodeimg" style="width: 300rpx;height: 300rpx;" mode="aspectFill"></image>
|
|
|
|
<canvas :id="'qrcodeT'+index" :canvas-id="'qrcodeT'+index"
|
|
|
|
style="width:150px;height:150px;z-index: -20;bottom: -500px;position: absolute;"></canvas>
|
|
|
|
<view class="qrcode-subtitle">核销码:{{item.third_order_id||item.child_id}}</view>
|
|
|
|
|
|
|
|
<view class="complete-text flex-center"
|
|
|
|
v-if="['WAIT_REFUND','REFUND_SUCCESS','WAIT_COMMENT','COMPLETE'].includes(item.status)">
|
|
|
|
<view class="flex-center" v-if="item.status == 'WAIT_COMMENT'">
|
|
|
|
已核销
|
|
|
|
</view>
|
|
|
|
<view class="flex-center" v-else>
|
|
|
|
已失效
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</swiper-item>
|
|
|
|
</swiper>
|
|
|
|
|
|
|
|
<!-- 指示点 -->
|
|
|
|
<view class="swiper-point flex-center">
|
|
|
|
<view v-for="(item,index) in info.order_child" :key="index"
|
|
|
|
:class="[{'swiper-points': index == current}]"></view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 提示语 -->
|
|
|
|
<view class="swiper-prompt">左右滑动核销其他二维码</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 子订单里info.order_child[0].goods_genre:景点ticket、酒店hotel、美食food、邮寄自提pgoods、 -->
|
|
|
|
|
|
|
|
<view :style="{margin: isQrcode ? '0' : '-66rpx auto 0'}" v-if="info.order_child">
|
|
|
|
<!-- 景点订单 -->
|
|
|
|
<view v-if="info.order_child[0].goods_genre == 'ticket'">
|
|
|
|
<!-- 景点详情 -->
|
|
|
|
<view class="scenic-detail">
|
|
|
|
<view>
|
|
|
|
<view class="scenic-title" @click="gotoDetail">
|
|
|
|
{{info.order_child[0].goods_title}}
|
|
|
|
<image src="https://static.ticket.sz-trip.com/yandu/images/order/rightIcon.png"></image>
|
|
|
|
</view>
|
|
|
|
<view class="scenic-subtitle">
|
|
|
|
出行时间:<span>{{info.order_child[0].use_date}}</span>
|
|
|
|
</view>
|
|
|
|
<view class="scenic-subtitle" v-if="info.order_child[0].scenic_data.open_description">
|
|
|
|
开放时间:<span>{{info.order_child[0].scenic_data.open_description}}</span>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 子订单规格 -->
|
|
|
|
<view>
|
|
|
|
<view v-for="(item,index) in info.order_child" :key="index"
|
|
|
|
class="specifications-item flex-between">
|
|
|
|
<view>{{item.specifications_name}}</view>
|
|
|
|
<view class="flex-between" style="width: 150rpx;">
|
|
|
|
<view>¥{{item.money / 100}}</view>
|
|
|
|
<view>x{{item.num}}</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 商品价格 -->
|
|
|
|
<view class="public-price">
|
|
|
|
<view class="flex-between">
|
|
|
|
商品总额:<span>¥{{info.money / 100}}</span>
|
|
|
|
</view>
|
|
|
|
<view class="flex-between" v-if="info.discounts">
|
|
|
|
优惠券:<span>-¥{{info.discounts / 100}}</span>
|
|
|
|
</view>
|
|
|
|
<view class="flex-between">
|
|
|
|
实付金额:<span style="font-size: 35rpx;color: #EE3E3B;">¥{{info.pay_money / 100}}</span>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 出行人 -->
|
|
|
|
<view class="novice-box" v-if="order_child[0].contact_name">
|
|
|
|
出行人
|
|
|
|
<view v-for="(item,index) in info.order_child" :key="index" class="novice-item">
|
|
|
|
<view class="novice-title">{{item.specifications_name}}</view>
|
|
|
|
<view class="novice-subtitle" v-if="item.contact_name">
|
|
|
|
<span>姓名:</span>{{item.contact_name}}
|
|
|
|
</view>
|
|
|
|
<view class="novice-subtitle" v-if="item.id_number">
|
|
|
|
<span>身份证:</span>{{item.id_number}}
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 邮寄、自提订单 -->
|
|
|
|
<view v-if="info.order_child[0].goods_genre == 'pgoods'">
|
|
|
|
<view class="shipping-address" v-if="info.order_child[0].consignee_id">
|
|
|
|
收货地址
|
|
|
|
<view>{{info.order_child[0].consignee.name}} {{info.order_child[0].consignee.tel}}</view>
|
|
|
|
<view class="text-overflowRows">{{info.order_child[0].consignee.address}}</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 产品详情 -->
|
|
|
|
<view class="pgoods-detail">
|
|
|
|
商家名称
|
|
|
|
<view class="pgoods-product" v-for="(item,index) in info.order_child" :key="index">
|
|
|
|
<image :src="showImg(item.specifications_image)" mode="aspectFill" class="product-img"></image>
|
|
|
|
<view class="product-content flex-column">
|
|
|
|
<view class="product-title">{{item.goods_title}}</view>
|
|
|
|
<view class="product-subtitle flex-between">
|
|
|
|
{{item.specifications_name}}
|
|
|
|
<span>x{{item.num}}</span>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 商品价格 -->
|
|
|
|
<view class="public-price">
|
|
|
|
<view class="flex-between">
|
|
|
|
商品总额:<span>¥{{info.money / 100}}</span>
|
|
|
|
</view>
|
|
|
|
<view class="flex-between" v-if="info.discounts">
|
|
|
|
优惠券:<span>-¥{{info.discounts / 100}}</span>
|
|
|
|
</view>
|
|
|
|
<view class="flex-between">
|
|
|
|
实付金额:<span style="font-size: 35rpx;color: #EE3E3B;">¥{{info.pay_money / 100}}</span>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 自提信息 -->
|
|
|
|
<view class="pickup-box" v-if="info.order_child[0].contact_id && info.order_child[0].extract_id">
|
|
|
|
自提信息
|
|
|
|
<view class="pickup-user">
|
|
|
|
<image src="https://static.ticket.sz-trip.com/yandu/images/order/user.png" class="picker-img">
|
|
|
|
</image>
|
|
|
|
<view>{{info.order_child[0].contact.name}}</view>
|
|
|
|
<view>{{info.order_child[0].contact.tel}}</view>
|
|
|
|
</view>
|
|
|
|
<view class="pickup-address">
|
|
|
|
<image src="https://static.ticket.sz-trip.com/yandu/images/order/location.png"
|
|
|
|
class="picker-img" style="margin-top: 6rpx;"></image>
|
|
|
|
|
|
|
|
<view>
|
|
|
|
<view class="picker-shopName">{{info.order_child[0].extract.extract_name}}</view>
|
|
|
|
<view class="picker-shopAddress">{{info.order_child[0].extract.detail_addr}}</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="pickup-icon flex-center">
|
|
|
|
<view @click="clickPhone(info.order_child[0].extract.mobile)">
|
|
|
|
<image src="https://static.ticket.sz-trip.com/yandu/images/order/phone.png" mode="">
|
|
|
|
</image>
|
|
|
|
电话
|
|
|
|
</view>
|
|
|
|
<view
|
|
|
|
@click="openLocation(info.order_child[0].extract.lat,info.order_child[0].extract.lon)">
|
|
|
|
<image src="https://static.ticket.sz-trip.com/yandu/images/order/navigations.png"
|
|
|
|
mode=""></image>
|
|
|
|
导航
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 场馆 -->
|
|
|
|
<view>
|
|
|
|
<view class="pgoods-detail">
|
|
|
|
购买信息
|
|
|
|
<view class="pgoods-product" style="border-bottom: none;">
|
|
|
|
<image :src="showImg(foodInfo.image)" mode="aspectFill" class="product-img"></image>
|
|
|
|
<view class="product-content flex-column">
|
|
|
|
<view class="product-title">{{foodInfo.title}}</view>
|
|
|
|
<view class="product-subtitle flex-between">
|
|
|
|
<view class="product-tags" v-if="foodInfo.specifications_new_tag">
|
|
|
|
<view v-for="(item,index) in foodInfo.specifications_new_tag.split(',').slice(0,3)"
|
|
|
|
:key="index">{{item}}</view>
|
|
|
|
</view>
|
|
|
|
<span>x{{info.order_child[0].num}}</span>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 商品价格 -->
|
|
|
|
<view class="public-price">
|
|
|
|
<view class="flex-between">
|
|
|
|
商品总额:<span>¥{{info.money / 100}}</span>
|
|
|
|
</view>
|
|
|
|
<view class="flex-between" v-if="info.discounts">
|
|
|
|
优惠券:<span>-¥{{info.discounts / 100}}</span>
|
|
|
|
</view>
|
|
|
|
<view class="flex-between">
|
|
|
|
实付金额:<span style="font-size: 35rpx;color: #EE3E3B;">¥{{info.pay_money / 100}}</span>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- <view class="shop-detail">
|
|
|
|
商家信息
|
|
|
|
<view class="shop-name">店铺名称</view>
|
|
|
|
<view class="shop-info">
|
|
|
|
<view>
|
|
|
|
<view style="margin-top: 23rpx; display: flex;" v-if="info.order_child[0].goods_data.open_description">
|
|
|
|
<image src="https://static.ticket.sz-trip.com/yandu/images/order/time.png"
|
|
|
|
class="shop-time"></image>
|
|
|
|
<view>
|
|
|
|
<view class="shop-title">营业时间</view>
|
|
|
|
<view class="shop-subtitle">{{info.order_child[0].goods_data.open_description}}</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view>
|
|
|
|
<view class="flex-center" style="margin-top: 23rpx;">
|
|
|
|
<view style="display: flex;">
|
|
|
|
<image src="https://static.ticket.sz-trip.com/yandu/images/order/location.png"
|
|
|
|
class="shop-time"></image>
|
|
|
|
<view style="width: 420rpx;">
|
|
|
|
<view class="shop-title text-overflow">
|
|
|
|
{{info.order_child[0].goods_data.address}}
|
|
|
|
</view>
|
|
|
|
<view class="shop-subtitle" v-if="info.order_child[0].goods_data.distance">
|
|
|
|
距您约{{info.order_child[0].goods_data.distance > 1000 ? (info.order_child[0].goods_data.distance / 1000).toFixed(2) + 'km' : info.order_child[0].goods_data.distance + 'm'}}
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="shop-icon">
|
|
|
|
<image src="https://static.ticket.sz-trip.com/yandu/images/order/phone.png"
|
|
|
|
@click="clickPhone(info.order_child[0].goods_data.tel)"></image>
|
|
|
|
<image src="https://static.ticket.sz-trip.com/yandu/images/order/navigations.png"
|
|
|
|
@click="openLocation(info.order_child[0].goods_data.tengxun_map.lat,info.order_child[0].goods_data.tengxun_map.lon)"></image>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view> -->
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 酒店 -->
|
|
|
|
<view v-if="info.order_child[0].goods_genre == 'hotel'">
|
|
|
|
<view class="hotel-detail">
|
|
|
|
入住信息
|
|
|
|
<view class="hotel-title">{{info.order_child[0].goods_title}}</view>
|
|
|
|
|
|
|
|
<view class="hotel-date">
|
|
|
|
<view>
|
|
|
|
{{(info.order_child[0].start_date).slice(5)}}
|
|
|
|
<span>{{ShowDateDay(new Date(info.order_child[0].start_date).getDay())}}入住</span>
|
|
|
|
</view>
|
|
|
|
<view class="hotel-days">共{{calDate(info.order_child[0].start_date, info.order_child[0].end_date)}}晚</view>
|
|
|
|
<view class="use-date">
|
|
|
|
{{info.order_child[0].end_date.slice(5)}}
|
|
|
|
<span>{{ShowDateDay(new Date(info.order_child[0].end_date).getDay())}}离店</span>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="flex-between" style="margin-top: 30rpx;">
|
|
|
|
<view class="hotel-address flex-between">
|
|
|
|
<view class="address text-overflowRows">{{info.order_child[0].scenic_data.address}}</view>
|
|
|
|
<view class="address-image" @click="openLocation(info.order_child[0].scenic_data.tengxun_map.lat,info.order_child[0].scenic_data.tengxun_map.lon)">
|
|
|
|
<image src="https://static.ticket.sz-trip.com/yandu/images/order/navigation.png"></image>
|
|
|
|
<view>地图</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="hotel-phone flex-center" @click="clickPhone(info.order_child[0].scenic_data.tel)">
|
|
|
|
<image src="https://static.ticket.sz-trip.com/yandu/images/order/hotelPhone.png"></image>
|
|
|
|
<view>电话</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="hotel-skuName flex-between">
|
|
|
|
<view class="text-overflow">{{info.order_child[0].specifications_name}}</view>
|
|
|
|
<view class="flex-between">
|
|
|
|
<view>¥{{info.order_child[0].money / 100}}</view>
|
|
|
|
<view>x{{info.order_child[0].num}}</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 商品价格 -->
|
|
|
|
<view class="public-price">
|
|
|
|
<view class="flex-between">
|
|
|
|
商品总额:<span>¥{{info.money / 100}}</span>
|
|
|
|
</view>
|
|
|
|
<view class="flex-between" v-if="info.discounts">
|
|
|
|
优惠券:<span>-¥{{info.discounts / 100}}</span>
|
|
|
|
</view>
|
|
|
|
<view class="flex-between">
|
|
|
|
实付金额:<span style="font-size: 35rpx;color: #EE3E3B;">¥{{info.pay_money / 100}}</span>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="hotel-information">
|
|
|
|
预订信息
|
|
|
|
<view><span>房间数:</span>{{info.order_child[0].num}}间</view>
|
|
|
|
<view><span>入住姓名:</span>{{info.reserve_name}}</view>
|
|
|
|
<view><span>联系电话:</span>{{info.reserve_phone}}</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 出行人 -->
|
|
|
|
<view class="order-info">
|
|
|
|
出行人
|
|
|
|
<view class="order-subtitle">
|
|
|
|
<span>联系电话:</span>{{info.phone}}
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 订单信息 -->
|
|
|
|
<view class="order-info">
|
|
|
|
订单信息
|
|
|
|
<view class="order-subtitle" style="display: flex;align-items: center;">
|
|
|
|
<span>订单账号:</span>{{info.order_id}}
|
|
|
|
<view class="copy flex-around" @click="clickCopy">
|
|
|
|
<image src="https://static.ticket.sz-trip.com/changshu/images/order/copy.png" class="copy-img"></image>
|
|
|
|
复制
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="order-subtitle">
|
|
|
|
<span>下单时间:</span>{{info.create_time}}
|
|
|
|
</view>
|
|
|
|
<view class="order-subtitle" v-if="info.pay_time">
|
|
|
|
<span>支付时间:</span>{{info.pay_time}}
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 联系客服 -->
|
|
|
|
<view class="kefu-box" @click="$refs.popup.open()">
|
|
|
|
<image src="https://static.ticket.sz-trip.com/changshu/images/order/kefu.png" mode="" class="kefu-img"></image>
|
|
|
|
联系客服
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 底部按钮 -->
|
|
|
|
<footer>
|
|
|
|
<view class="bottom-price" v-if="info.status == 'WAIT_PAYMENT'">
|
|
|
|
合计:
|
|
|
|
<span class="price">{{info.pay_money/100}}</span>
|
|
|
|
</view>
|
|
|
|
<view class="btn-box">
|
|
|
|
<view class="btn" v-if="info.status == 'PAYMENT_SUCCESSFULLY'" @click="refund(info.order_id)">
|
|
|
|
取消订单
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="btn" v-if="info.status == 'WAIT_PAYMENT'" @click="closeOrder(info.order_id)">
|
|
|
|
关闭订单
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="btn"
|
|
|
|
v-if="['WAIT_REFUND','REFUND_SUCCESS','WAIT_COMMENT','COMPLETE','CLOSED'].includes(info.status)"
|
|
|
|
@click="gotoDetail">
|
|
|
|
再次购买
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="btn pay-btn" v-if="info.status == 'WAIT_PAYMENT'" @click="setOrderId(info.order_id)">
|
|
|
|
立即支付
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="btn" v-if="info.status == 'POST' && info.order_child[0].goods_genre == 'pgoods'" @click="openMask()">
|
|
|
|
快递查询
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="btn" v-if="info.status == 'POST' && info.order_child[0].goods_genre == 'pgoods'" @click="confirmGoods()">
|
|
|
|
确认收货
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</footer>
|
|
|
|
|
|
|
|
<!-- 快递详情 -->
|
|
|
|
<view class="mask" v-if="maskShow">
|
|
|
|
<view class="mask-bg" @click="maskShow = false"></view>
|
|
|
|
<view class="mask-content">
|
|
|
|
<p class="mask-title">物流信息</p>
|
|
|
|
<view class="iconfont" @click="maskShow = false">x</view>
|
|
|
|
<view class="express-all">
|
|
|
|
<view class="express-item" v-for="item,index in postInfo" :key="index">
|
|
|
|
<view class="line" v-if="index != postInfo.length - 1"></view>
|
|
|
|
<view class="express-item-icon" v-if="index!=0">·</view>
|
|
|
|
<view class="express-item-icon express-item-icons" v-else>·</view>
|
|
|
|
<view :class="['express-info',index==0?'active':'']">
|
|
|
|
<p>{{item.AcceptStation}}</p>
|
|
|
|
<p class="express-time">{{item.AcceptTime}}</p>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 客服弹框 -->
|
|
|
|
<uni-popup ref="popup" type="center">
|
|
|
|
<view class="consult-popup">
|
|
|
|
即将拨打客服电话
|
|
|
|
<view class="consult-subtitle">服务时间:周一至周五<br>8:30-11:30,14:30-18:00</view>
|
|
|
|
<view class="consult-btns">
|
|
|
|
<view @click="$refs.popup.close()">取消</view>
|
|
|
|
<view @click="clickPhone('0515-69186109')">确定</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</uni-popup>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
import QRCode from '@/static/js/weapp-qrcode.js'
|
|
|
|
export default {
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
order_id: '',
|
|
|
|
info: {},
|
|
|
|
foodInfo: {},
|
|
|
|
current: 0,
|
|
|
|
isQrcode: false,
|
|
|
|
remainNum: 0,
|
|
|
|
maskShow: false,
|
|
|
|
postInfo: []
|
|
|
|
}
|
|
|
|
},
|
|
|
|
onLoad(option) {
|
|
|
|
this.order_id = option.id
|
|
|
|
this.getDetail()
|
|
|
|
},
|
|
|
|
onShow() {
|
|
|
|
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
// 计算两个日期间的天数
|
|
|
|
calDate(startDate, endDate) {
|
|
|
|
var start = new Date(startDate);
|
|
|
|
var end = new Date(endDate);
|
|
|
|
var diff = end - start;
|
|
|
|
var days = Math.floor(diff / (1000 * 60 * 60 * 24)); // 计算天数差
|
|
|
|
return days;
|
|
|
|
},
|
|
|
|
// 获取订单详情
|
|
|
|
getDetail() {
|
|
|
|
this.Post({
|
|
|
|
order_id: this.order_id,
|
|
|
|
lon: uni.getStorageSync('location').lon || '110.43785794300781',
|
|
|
|
lat: uni.getStorageSync('location').lat || '36.95286642085422'
|
|
|
|
}, '/api/order/orderDetail').then(res => {
|
|
|
|
this.info = res.data;
|
|
|
|
|
|
|
|
// if (this.info.order_child[0].goods_genre == 'food') {
|
|
|
|
// 场馆类的需要调取规格详情
|
|
|
|
this.Post({
|
|
|
|
goods_id: this.info.order_child[0].goods_id
|
|
|
|
}, '/api/goods/getSpecificationsByGoodsId').then(res => {
|
|
|
|
res.data.forEach(item => {
|
|
|
|
if (item.id == this.info.order_child[0].specifications_id) this
|
|
|
|
.foodInfo = item
|
|
|
|
})
|
|
|
|
})
|
|
|
|
// }
|
|
|
|
|
|
|
|
// 景点、美食二维码
|
|
|
|
// if (['ticket', 'food'].includes(this.info.order_child[0].goods_genre) || (this.info.order_child[0].contact_id && this.info.order_child[0].extract_id)) {
|
|
|
|
if (['PAYMENT_SUCCESSFULLY', 'WAIT_REFUND', 'REFUND_SUCCESS', 'WAIT_COMMENT', 'COMPLETED']
|
|
|
|
.includes(this.info.status)) {
|
|
|
|
this.isQrcode = true
|
|
|
|
for (let i = 0; i < this.info.order_child.length; i++) {
|
|
|
|
// 有third_order_id 优先用third_order_id
|
|
|
|
this.getCodeImg(this.info.order_child[i].third_order_id||this.info.order_child[i].child_id, i);
|
|
|
|
|
|
|
|
// 未核销数量
|
|
|
|
if (this.info.order_child[i].status == 'SUCCESS') this.remainNum += 1
|
|
|
|
}
|
|
|
|
} else if (!['WAIT_PAYMENT', 'CLOSED'].includes(this.info.status)) {
|
|
|
|
for (let i = 0; i < this.info.order_child.length; i++) {
|
|
|
|
if (this.info.order_child[i].is_display_order_qrcode) {
|
|
|
|
this.isQrcode = true
|
|
|
|
this.getCodeImg(this.info.order_child[i].third_order_id||this.info.order_child[i].child_id, i);
|
|
|
|
|
|
|
|
// 未核销数量
|
|
|
|
if (this.info.order_child[i].status == 'SUCCESS') this.remainNum += 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
setTimeout(() => {
|
|
|
|
console.log(this.info.order_child)
|
|
|
|
}, 1000)
|
|
|
|
})
|
|
|
|
},
|
|
|
|
// 生成二维码
|
|
|
|
getCodeImg(code, index) {
|
|
|
|
new QRCode('qrcodeT' + index, {
|
|
|
|
text: code,
|
|
|
|
width: 150,
|
|
|
|
height: 150,
|
|
|
|
padding: 2,
|
|
|
|
colorDark: 'rgb(0,0,0)',
|
|
|
|
colorLight: 'rgb(255,255,255)',
|
|
|
|
correctLevel: QRCode.CorrectLevel.M, // 二维码可辨识度
|
|
|
|
callback: res => {
|
|
|
|
this.$set(this.info.order_child[index], 'qrcodeimg', res.path);
|
|
|
|
this.$forceUpdate();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
//轮播图左右滑动
|
|
|
|
swiperChange(e) {
|
|
|
|
let {
|
|
|
|
current,
|
|
|
|
source
|
|
|
|
} = e.detail;
|
|
|
|
//在自动或手动的时候才赋予current值
|
|
|
|
if (source === 'autoplay' || source === 'touch') {
|
|
|
|
this.current = current;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
// 复制订单号
|
|
|
|
clickCopy() {
|
|
|
|
uni.setClipboardData({
|
|
|
|
data: this.info.order_id, //要被复制的内容
|
|
|
|
success: () => {
|
|
|
|
//复制成功的回调函数
|
|
|
|
uni.showToast({
|
|
|
|
title: '复制成功',
|
|
|
|
icon: 'none'
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
// 再次购买:跳转产品详情
|
|
|
|
gotoDetail() {
|
|
|
|
let url = '/subPackages/venue/venueDetail?id=' + this.info.order_child[0].goods_id
|
|
|
|
this.gotoPath(url)
|
|
|
|
},
|
|
|
|
// 申请退款
|
|
|
|
refund(id) {
|
|
|
|
let that = this;
|
|
|
|
uni.showModal({
|
|
|
|
title: '提示',
|
|
|
|
content: '是否申请退款?',
|
|
|
|
success: successRes => {
|
|
|
|
if (successRes.confirm) {
|
|
|
|
that.Post({
|
|
|
|
order_id: id
|
|
|
|
},
|
|
|
|
'/api/order/applyRefund'
|
|
|
|
).then(res => {
|
|
|
|
if (res.code == 1) {
|
|
|
|
uni.showToast({
|
|
|
|
title: '申请成功',
|
|
|
|
icon: 'success'
|
|
|
|
});
|
|
|
|
this.getDetail()
|
|
|
|
uni.$emit("updateDataByConnect", {
|
|
|
|
msgType: 'updateOrderTrades',
|
|
|
|
data: {}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
// 关闭订单
|
|
|
|
closeOrder(id, index) {
|
|
|
|
let that = this;
|
|
|
|
uni.showModal({
|
|
|
|
title: '提示',
|
|
|
|
content: '确认关闭订单?',
|
|
|
|
success: successRes => {
|
|
|
|
if (successRes.confirm) {
|
|
|
|
that.Post({
|
|
|
|
order_id: id
|
|
|
|
}, '/api/order/closeOrder').then(res => {
|
|
|
|
if (res.code == 1) {
|
|
|
|
uni.showToast({
|
|
|
|
title: '关闭成功',
|
|
|
|
icon: 'success'
|
|
|
|
});
|
|
|
|
that.getDetail();
|
|
|
|
uni.$emit("updateDataByConnect", {
|
|
|
|
msgType: 'updateOrderTrades',
|
|
|
|
data: {}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
// 立即支付
|
|
|
|
setOrderId(id) {
|
|
|
|
let that = this;
|
|
|
|
that.orderId = id;
|
|
|
|
that.Post({
|
|
|
|
order_id: id,
|
|
|
|
type: "miniprogram",
|
|
|
|
platform: 'miniprogram'
|
|
|
|
}, '/api/pay/unify').then(res => {
|
|
|
|
if (res.code == 1) {
|
|
|
|
uni.requestPayment({
|
|
|
|
nonceStr: res.data.nonceStr,
|
|
|
|
package: res.data.package,
|
|
|
|
paySign: res.data.paySign,
|
|
|
|
signType: res.data.signType,
|
|
|
|
timeStamp: res.data.timeStamp,
|
|
|
|
success: () => {
|
|
|
|
that.getDetail();
|
|
|
|
uni.$emit("updateDataByConnect", {
|
|
|
|
msgType: 'updateOrderTrades',
|
|
|
|
data: {}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
// 快递查询
|
|
|
|
openMask() {
|
|
|
|
this.Post({
|
|
|
|
child_order_id: this.info.order_child[0].child_id
|
|
|
|
}, '/api/order/getExpress').then(res => {
|
|
|
|
if (res.data.length > 0){
|
|
|
|
this.postInfo = res.data.reverse()
|
|
|
|
this.maskShow = true
|
|
|
|
}else {
|
|
|
|
uni.showToast({
|
|
|
|
title: '暂未查询到物流信息,请联系客服',
|
|
|
|
icon: 'none'
|
|
|
|
});
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
// 确认收货
|
|
|
|
confirmGoods() {
|
|
|
|
uni.showModal({
|
|
|
|
title: '提示',
|
|
|
|
content: '是否确认收货?',
|
|
|
|
success: successRes => {
|
|
|
|
if (successRes.confirm) {
|
|
|
|
this.Post({
|
|
|
|
order_id: this.info.order_id
|
|
|
|
}, '/api/order/confirmPost').then(res => {
|
|
|
|
if (res.code == 1) {
|
|
|
|
uni.showToast({
|
|
|
|
title: '确认收货成功',
|
|
|
|
icon: 'none'
|
|
|
|
});
|
|
|
|
this.getDetail();
|
|
|
|
uni.$emit("updateDataByConnect", {
|
|
|
|
msgType: 'updateOrderTrades',
|
|
|
|
data: {}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
.bg {
|
|
|
|
width: 750rpx;
|
|
|
|
overflow-x: hidden;
|
|
|
|
min-height: 100vh;
|
|
|
|
background-color: #F7F7F7;
|
|
|
|
padding-bottom: 200rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.title-box {
|
|
|
|
position: absolute;
|
|
|
|
left: 5rpx;
|
|
|
|
top: 101rpx;
|
|
|
|
font-size: 40rpx;
|
|
|
|
padding: 0 26.67rpx;
|
|
|
|
z-index: 2;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
width: 100%;
|
|
|
|
|
|
|
|
view {
|
|
|
|
font-weight: 400;
|
|
|
|
font-size: 36rpx;
|
|
|
|
color: #000000;
|
|
|
|
margin-left: 245rpx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.top-box {
|
|
|
|
width: 750rpx;
|
|
|
|
height: 414rpx;
|
|
|
|
background-image: url('https://static.ticket.sz-trip.com/uploads/20250320/9b94a0d8a5252b138eca8f9872c8397b.png');
|
|
|
|
background-size: 100% 100%;
|
|
|
|
padding: 200rpx 0 0 50rpx;
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 43rpx;
|
|
|
|
color: #000000;
|
|
|
|
|
|
|
|
.close-time {
|
|
|
|
font-weight: 400;
|
|
|
|
font-size: 27rpx;
|
|
|
|
margin-top: 20rpx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 景点、美食 二维码
|
|
|
|
.qrcode-remain {
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 29rpx;
|
|
|
|
color: #000000;
|
|
|
|
text-align: center;
|
|
|
|
|
|
|
|
span {
|
|
|
|
width: 60rpx;
|
|
|
|
text-align: center;
|
|
|
|
color: rgba(238, 62, 59, 1);
|
|
|
|
display: inline-block;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.qrcode-box {
|
|
|
|
height: 456rpx;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
margin-top: 32rpx;
|
|
|
|
|
|
|
|
.qrcode-item {
|
|
|
|
width: 467rpx !important;
|
|
|
|
height: 456rpx !important;
|
|
|
|
background: #FFFFFF;
|
|
|
|
box-shadow: 0rpx 0rpx 33rpx 0rpx rgba(102, 102, 102, 0.2);
|
|
|
|
border-radius: 20rpx;
|
|
|
|
padding: 25rpx 0;
|
|
|
|
justify-content: space-between;
|
|
|
|
align-items: center;
|
|
|
|
position: relative;
|
|
|
|
|
|
|
|
image {
|
|
|
|
width: 300rpx;
|
|
|
|
height: 300rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.qrcode-title {
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 32rpx;
|
|
|
|
color: #000000;
|
|
|
|
}
|
|
|
|
|
|
|
|
.qrcode-subtitle {
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 27rpx;
|
|
|
|
color: #888888;
|
|
|
|
}
|
|
|
|
|
|
|
|
.complete-text {
|
|
|
|
position: absolute;
|
|
|
|
width: 300rpx;
|
|
|
|
height: 300rpx;
|
|
|
|
left: 0;
|
|
|
|
top: 0;
|
|
|
|
right: 0;
|
|
|
|
bottom: 0;
|
|
|
|
margin: auto;
|
|
|
|
background: rgba(0, 0, 0, .5);
|
|
|
|
|
|
|
|
view {
|
|
|
|
width: 200rpx;
|
|
|
|
height: 200rpx;
|
|
|
|
background: #FFFFFF;
|
|
|
|
border-radius: 100rpx;
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 36rpx;
|
|
|
|
color: #000000;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.swiper-point {
|
|
|
|
height: 63rpx;
|
|
|
|
|
|
|
|
view {
|
|
|
|
width: 11rpx;
|
|
|
|
height: 11rpx;
|
|
|
|
background: #CCCCCC;
|
|
|
|
border-radius: 50%;
|
|
|
|
}
|
|
|
|
|
|
|
|
view:not(:first-child) {
|
|
|
|
margin-left: 13rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.swiper-points {
|
|
|
|
background: #00AEA0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.swiper-prompt {
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 29rpx;
|
|
|
|
color: #EE3E3B;
|
|
|
|
text-align: center;
|
|
|
|
margin-bottom: 45rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
// 景点订单详情
|
|
|
|
.scenic-detail {
|
|
|
|
width: 697rpx;
|
|
|
|
height: auto;
|
|
|
|
background: #FFFFFF;
|
|
|
|
border-radius: 20rpx;
|
|
|
|
padding: 26rpx;
|
|
|
|
margin: auto;
|
|
|
|
|
|
|
|
&>view:nth-child(2) {
|
|
|
|
margin: 30rpx 0;
|
|
|
|
border-top: 1rpx solid #D8D8D8;
|
|
|
|
border-bottom: 1rpx solid #D8D8D8;
|
|
|
|
}
|
|
|
|
|
|
|
|
.scenic-title {
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 36rpx;
|
|
|
|
color: #000000;
|
|
|
|
|
|
|
|
image {
|
|
|
|
width: 17.33rpx;
|
|
|
|
height: 29.33rpx;
|
|
|
|
margin-left: 20rpx;
|
|
|
|
vertical-align: middle;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.scenic-subtitle {
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 27rpx;
|
|
|
|
color: #666666;
|
|
|
|
margin-top: 20rpx;
|
|
|
|
|
|
|
|
span {
|
|
|
|
color: #000;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.specifications-item {
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 27rpx;
|
|
|
|
color: #000000;
|
|
|
|
margin: 25rpx 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.novice-box {
|
|
|
|
width: 697rpx;
|
|
|
|
height: auto;
|
|
|
|
background: #FFFFFF;
|
|
|
|
border-radius: 20rpx;
|
|
|
|
padding: 26rpx;
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 36rpx;
|
|
|
|
color: #010101;
|
|
|
|
margin: 20rpx auto;
|
|
|
|
|
|
|
|
.novice-item {
|
|
|
|
view {
|
|
|
|
margin: 20rpx 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.novice-title {
|
|
|
|
font-weight: 800;
|
|
|
|
font-size: 27rpx;
|
|
|
|
color: #333333;
|
|
|
|
}
|
|
|
|
|
|
|
|
.novice-subtitle {
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 27rpx;
|
|
|
|
color: #000000;
|
|
|
|
|
|
|
|
span {
|
|
|
|
display: inline-block;
|
|
|
|
width: 130rpx;
|
|
|
|
color: #666666;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.novice-item:nth-child(n+2) {
|
|
|
|
border-top: 1rpx solid #D8D8D8;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 邮寄订单详情
|
|
|
|
.shipping-address {
|
|
|
|
width: 697rpx;
|
|
|
|
height: 235rpx;
|
|
|
|
background: #FFFFFF;
|
|
|
|
border-radius: 20rpx;
|
|
|
|
padding: 26rpx;
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 36rpx;
|
|
|
|
color: #000000;
|
|
|
|
margin: auto;
|
|
|
|
|
|
|
|
&>view {
|
|
|
|
margin-top: 25rpx;
|
|
|
|
font-weight: 500;
|
|
|
|
}
|
|
|
|
|
|
|
|
&>view:first-child {
|
|
|
|
font-size: 31rpx;
|
|
|
|
color: #222222;
|
|
|
|
}
|
|
|
|
|
|
|
|
&>view:last-child {
|
|
|
|
font-size: 31rpx;
|
|
|
|
color: #222222;
|
|
|
|
font-size: 27rpx;
|
|
|
|
color: #666666;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.pgoods-detail {
|
|
|
|
width: 697rpx;
|
|
|
|
height: auto;
|
|
|
|
background: #FFFFFF;
|
|
|
|
border-radius: 20rpx;
|
|
|
|
padding: 26rpx;
|
|
|
|
margin: 20rpx auto;
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 32rpx;
|
|
|
|
color: #000000;
|
|
|
|
|
|
|
|
.pgoods-product {
|
|
|
|
display: flex;
|
|
|
|
margin-top: 24rpx;
|
|
|
|
padding-bottom: 33rpx;
|
|
|
|
border-bottom: 1rpx solid #D8D8D8;
|
|
|
|
|
|
|
|
.product-img {
|
|
|
|
width: 140rpx;
|
|
|
|
height: 140rpx;
|
|
|
|
border-radius: 13rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.product-content {
|
|
|
|
width: 485rpx;
|
|
|
|
height: 140rpx;
|
|
|
|
margin-left: 18rpx;
|
|
|
|
padding: 5rpx 0 12rpx;
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
|
|
.product-title {
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 27rpx;
|
|
|
|
color: #000000;
|
|
|
|
}
|
|
|
|
|
|
|
|
.product-subtitle {
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 24rpx;
|
|
|
|
color: #666666;
|
|
|
|
|
|
|
|
.product-tags {
|
|
|
|
display: flex;
|
|
|
|
|
|
|
|
&>view:not(:last-child)::after {
|
|
|
|
content: '丨';
|
|
|
|
width: 1rpx;
|
|
|
|
height: 26rpx;
|
|
|
|
color: #666666;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 自提点信息
|
|
|
|
.pickup-box {
|
|
|
|
width: 697rpx;
|
|
|
|
height: auto;
|
|
|
|
background: #FFFFFF;
|
|
|
|
border-radius: 20rpx;
|
|
|
|
margin: 20rpx auto;
|
|
|
|
padding: 33rpx 26rpx;
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 36rpx;
|
|
|
|
color: #000000;
|
|
|
|
|
|
|
|
&>view {
|
|
|
|
margin-top: 40rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.picker-img {
|
|
|
|
width: 33.33rpx;
|
|
|
|
height: 33.33rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.pickup-user {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 31rpx;
|
|
|
|
color: #000000;
|
|
|
|
|
|
|
|
&>view:first-of-type {
|
|
|
|
margin: 0 63rpx 0 19rpx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.pickup-address {
|
|
|
|
display: flex;
|
|
|
|
|
|
|
|
.pickup-addressImg {
|
|
|
|
width: 33.33rpx;
|
|
|
|
height: 33.33rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
&>view:first-of-type {
|
|
|
|
width: 305rpx;
|
|
|
|
margin-left: 18rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.picker-shopName {
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 31rpx;
|
|
|
|
color: #222222;
|
|
|
|
}
|
|
|
|
|
|
|
|
.picker-shopAddress {
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 24rpx;
|
|
|
|
color: #666666;
|
|
|
|
margin-top: 15rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.pickup-icon {
|
|
|
|
margin-left: auto;
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 24rpx;
|
|
|
|
color: #666666;
|
|
|
|
|
|
|
|
&>view {
|
|
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
&>view:last-child {
|
|
|
|
margin-left: 40rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
image {
|
|
|
|
width: 56rpx;
|
|
|
|
height: 56rpx;
|
|
|
|
display: block;
|
|
|
|
margin-bottom: 5rpx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 美食
|
|
|
|
.food-name {
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 31rpx;
|
|
|
|
color: #000000;
|
|
|
|
margin-bottom: 40rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.shop-detail {
|
|
|
|
width: 697rpx;
|
|
|
|
height: auto;
|
|
|
|
background: #FFFFFF;
|
|
|
|
border-radius: 20rpx;
|
|
|
|
margin: 20rpx auto 0;
|
|
|
|
padding: 33rpx 26rpx;
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 36rpx;
|
|
|
|
color: #000000;
|
|
|
|
|
|
|
|
.shop-name {
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 30rpx;
|
|
|
|
color: #000000;
|
|
|
|
margin-top: 30rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.shop-info {
|
|
|
|
.shop-time {
|
|
|
|
width: 28rpx;
|
|
|
|
height: 28rpx;
|
|
|
|
margin: 5rpx 8rpx 0 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.shop-title {
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 26rpx;
|
|
|
|
color: #000000;
|
|
|
|
}
|
|
|
|
|
|
|
|
.shop-subtitle {
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 24rpx;
|
|
|
|
color: #666666;
|
|
|
|
margin-top: 23rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.shop-icon {
|
|
|
|
margin-left: auto;
|
|
|
|
|
|
|
|
image {
|
|
|
|
width: 56rpx;
|
|
|
|
height: 56rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
image:first-child {
|
|
|
|
margin-right: 40rpx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 酒店
|
|
|
|
.hotel-detail {
|
|
|
|
width: 697rpx;
|
|
|
|
height: auto;
|
|
|
|
background: #FFFFFF;
|
|
|
|
border-radius: 20rpx;
|
|
|
|
padding: 33rpx 26rpx;
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 36rpx;
|
|
|
|
color: #000000;
|
|
|
|
margin: auto;
|
|
|
|
|
|
|
|
.hotel-title {
|
|
|
|
font-size: 31rpx;
|
|
|
|
color: #222222;
|
|
|
|
margin-top: 30rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.hotel-date {
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 31rpx;
|
|
|
|
color: #000000;
|
|
|
|
display: flex;
|
|
|
|
margin-top: 30rpx;
|
|
|
|
|
|
|
|
span {
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 24rpx;
|
|
|
|
color: #666666;
|
|
|
|
margin-left: 20rpx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.hotel-days {
|
|
|
|
width: 113rpx;
|
|
|
|
line-height: 37rpx;
|
|
|
|
background: #E8F6EB;
|
|
|
|
border-radius: 18rpx;
|
|
|
|
text-align: center;
|
|
|
|
margin: 0 20rpx;
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 24rpx;
|
|
|
|
color: #000000;
|
|
|
|
}
|
|
|
|
|
|
|
|
.hotel-address {
|
|
|
|
width: 533rpx;
|
|
|
|
height: 107rpx;
|
|
|
|
background: url('https://static.ticket.sz-trip.com/yandu/images/order/addreeBg.png') no-repeat right;
|
|
|
|
background-size: auto 100%;
|
|
|
|
background-color: #E8F6EB;
|
|
|
|
border-radius: 20rpx;
|
|
|
|
padding: 22rpx 18rpx;
|
|
|
|
|
|
|
|
.address {
|
|
|
|
width: 398rpx;
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 27rpx;
|
|
|
|
color: #000000;
|
|
|
|
}
|
|
|
|
|
|
|
|
.address-image {
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 24rpx;
|
|
|
|
color: #333333;
|
|
|
|
text-align: center;
|
|
|
|
|
|
|
|
image {
|
|
|
|
width: 30.67rpx;
|
|
|
|
height: 30.67rpx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.hotel-phone {
|
|
|
|
width: 93rpx;
|
|
|
|
height: 107rpx;
|
|
|
|
background: #E8F6EB;
|
|
|
|
border-radius: 20rpx;
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 24rpx;
|
|
|
|
color: #333333;
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
|
|
image {
|
|
|
|
width: 30.67rpx;
|
|
|
|
height: 30.67rpx;
|
|
|
|
margin-bottom: 8rpx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.hotel-skuName {
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 27rpx;
|
|
|
|
color: #000000;
|
|
|
|
height: 94rpx;
|
|
|
|
border-top: 1rpx solid #D8D8D8;
|
|
|
|
border-bottom: 1rpx solid #D8D8D8;
|
|
|
|
margin-top: 34rpx;
|
|
|
|
|
|
|
|
&>view:first-child {
|
|
|
|
width: 400rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
&>view:last-child {
|
|
|
|
width: 140rpx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.hotel-information {
|
|
|
|
width: 697rpx;
|
|
|
|
height: auto;
|
|
|
|
background: #FFFFFF;
|
|
|
|
border-radius: 20rpx;
|
|
|
|
padding: 26rpx;
|
|
|
|
margin: 20rpx auto;
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 36rpx;
|
|
|
|
color: #000000;
|
|
|
|
|
|
|
|
view {
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 27rpx;
|
|
|
|
margin-top: 30rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
span {
|
|
|
|
display: inline-block;
|
|
|
|
width: 140rpx;
|
|
|
|
color: #666666;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 商品价格
|
|
|
|
.public-price {
|
|
|
|
|
|
|
|
view {
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 27rpx;
|
|
|
|
color: #666666;
|
|
|
|
margin-top: 25rpx;
|
|
|
|
|
|
|
|
span {
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 27rpx;
|
|
|
|
color: #111111;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 订单信息
|
|
|
|
.order-info {
|
|
|
|
width: 697rpx;
|
|
|
|
height: auto;
|
|
|
|
background: #FFFFFF;
|
|
|
|
border-radius: 20rpx;
|
|
|
|
margin: 20rpx auto;
|
|
|
|
padding: 33rpx 26rpx;
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 36rpx;
|
|
|
|
color: #000000;
|
|
|
|
|
|
|
|
.order-subtitle {
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 27rpx;
|
|
|
|
color: #000;
|
|
|
|
margin: 30rpx 0;
|
|
|
|
|
|
|
|
span {
|
|
|
|
display: inline-block;
|
|
|
|
width: 130rpx;
|
|
|
|
color: #666666;
|
|
|
|
white-space: nowrap;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.copy {
|
|
|
|
width: 93rpx;
|
|
|
|
height: 37rpx;
|
|
|
|
border-radius: 11rpx;
|
|
|
|
border: 1rpx solid #00AEA0;
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 22rpx;
|
|
|
|
color: #00AEA0;
|
|
|
|
margin-left: 30rpx;
|
|
|
|
|
|
|
|
.copy-img {
|
|
|
|
width: 22rpx;
|
|
|
|
height: 23.33rpx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 客服
|
|
|
|
.kefu-box {
|
|
|
|
width: 697rpx;
|
|
|
|
height: 96rpx;
|
|
|
|
background: #FFFFFF;
|
|
|
|
border-radius: 20rpx;
|
|
|
|
margin: 20rpx auto;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 31rpx;
|
|
|
|
color: #000000;
|
|
|
|
padding-left: 27rpx;
|
|
|
|
|
|
|
|
.kefu-img {
|
|
|
|
width: 44rpx;
|
|
|
|
height: 44rpx;
|
|
|
|
margin-right: 14rpx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 底部按钮
|
|
|
|
footer {
|
|
|
|
width: 750rpx;
|
|
|
|
height: 167rpx;
|
|
|
|
position: fixed;
|
|
|
|
bottom: 0;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
background-color: #fff;
|
|
|
|
border-top: 10rpx solid #F7F7F7;
|
|
|
|
padding: 0 26rpx;
|
|
|
|
|
|
|
|
.bottom-price {
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 28rpx;
|
|
|
|
color: #000000;
|
|
|
|
|
|
|
|
span {
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 48rpx;
|
|
|
|
color: #EE3E3B;
|
|
|
|
}
|
|
|
|
|
|
|
|
span::before {
|
|
|
|
content: '¥';
|
|
|
|
font-size: 27rpx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.btn-box {
|
|
|
|
margin-left: auto;
|
|
|
|
display: flex;
|
|
|
|
|
|
|
|
.btn {
|
|
|
|
width: 213rpx;
|
|
|
|
line-height: 71rpx;
|
|
|
|
border-radius: 37rpx;
|
|
|
|
border: 1rpx solid #999999;
|
|
|
|
text-align: center;
|
|
|
|
margin-right: 14rpx;
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 31rpx;
|
|
|
|
color: #000000;
|
|
|
|
}
|
|
|
|
|
|
|
|
.btn:last-of-type {
|
|
|
|
margin-right: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.pay-btn {
|
|
|
|
height: 73rpx;
|
|
|
|
background: linear-gradient(270deg, #FD6F34, #F4A61F);
|
|
|
|
border: none;
|
|
|
|
color: #FFFFFF;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 快递查询
|
|
|
|
.mask {
|
|
|
|
position: fixed;
|
|
|
|
left: 0;
|
|
|
|
right: 0;
|
|
|
|
top: 0;
|
|
|
|
bottom: 0;
|
|
|
|
background: rgba(0, 0, 0, 0.6);
|
|
|
|
z-index: 1000;
|
|
|
|
display: flex;
|
|
|
|
align-items: flex-end;
|
|
|
|
justify-content: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
.mask-bg {
|
|
|
|
position: fixed;
|
|
|
|
left: 0;
|
|
|
|
right: 0;
|
|
|
|
top: 0;
|
|
|
|
bottom: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.mask-content {
|
|
|
|
width: 100%;
|
|
|
|
padding: 28rpx 0;
|
|
|
|
border-radius: 20rpx 20rpx 0 0;
|
|
|
|
background: white;
|
|
|
|
height: 70%;
|
|
|
|
position: relative;
|
|
|
|
overflow-y: auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
.mask-content .icon-close {
|
|
|
|
position: absolute;
|
|
|
|
right: 20rpx;
|
|
|
|
top: 20rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.mask-content .close-btn {
|
|
|
|
background-image: url("https://static.ticket.sz-trip.com/taizhou/images/close.png");
|
|
|
|
width: 80rpx;
|
|
|
|
height: 80rpx;
|
|
|
|
position: absolute;
|
|
|
|
bottom: -100rpx;
|
|
|
|
left: 0;
|
|
|
|
right: 0;
|
|
|
|
margin: auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
.mask-title {
|
|
|
|
font-size: 36rpx;
|
|
|
|
font-weight: bold;
|
|
|
|
padding-left: 37rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.mask-content .iconfont {
|
|
|
|
position: absolute;
|
|
|
|
right: 30rpx;
|
|
|
|
top: 20rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.express-all {
|
|
|
|
margin: 40rpx;
|
|
|
|
position: relative;
|
|
|
|
}
|
|
|
|
|
|
|
|
.express-item {
|
|
|
|
display: flex;
|
|
|
|
justify-content: space-between;
|
|
|
|
padding-bottom: 60rpx;
|
|
|
|
position: relative;
|
|
|
|
z-index: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.line {
|
|
|
|
width: 1rpx;
|
|
|
|
height: 100%;
|
|
|
|
background: #CCCCCC;
|
|
|
|
position: absolute;
|
|
|
|
left: 13rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.express-info {
|
|
|
|
width: 600rpx;
|
|
|
|
font-size: 26rpx;
|
|
|
|
line-height: 40rpx;
|
|
|
|
color: #999;
|
|
|
|
}
|
|
|
|
|
|
|
|
.express-info.active {
|
|
|
|
color: #000;
|
|
|
|
}
|
|
|
|
|
|
|
|
.express-time {
|
|
|
|
font-size: 22rpx;
|
|
|
|
color: #666;
|
|
|
|
margin-top: 10rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.express-item-icon {
|
|
|
|
width: 27rpx;
|
|
|
|
height: 27rpx;
|
|
|
|
background: #CCCCCC;
|
|
|
|
border-radius: 50%;
|
|
|
|
position: relative;
|
|
|
|
}
|
|
|
|
|
|
|
|
.express-item-icons {
|
|
|
|
background: #00AEA0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.consult-popup {
|
|
|
|
width: 487rpx;
|
|
|
|
height: 367rpx;
|
|
|
|
background: #F0F0F0;
|
|
|
|
border-radius: 20rpx;
|
|
|
|
padding: 65rpx 0 23rpx;
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 32rpx;
|
|
|
|
color: #000000;
|
|
|
|
text-align: center;
|
|
|
|
|
|
|
|
.consult-subtitle {
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 27rpx;
|
|
|
|
color: #333333;
|
|
|
|
margin-top: 43rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.consult-btns {
|
|
|
|
display: flex;
|
|
|
|
margin-top: 75rpx;
|
|
|
|
|
|
|
|
view {
|
|
|
|
width: 50%;
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 32rpx;
|
|
|
|
color: #00AEA0;
|
|
|
|
line-height: 54rpx;
|
|
|
|
}
|
|
|
|
view:first-child {
|
|
|
|
border-right: 1rpx solid #D8D8D8;
|
|
|
|
color: #000000;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|