1219 lines
38 KiB
Vue
1219 lines
38 KiB
Vue
|
|
<template>
|
|||
|
|
<view :data-theme="theme">
|
|||
|
|
<!-- #ifdef MP || APP -->
|
|||
|
|
<view class='cart_nav'>
|
|||
|
|
<nav-bar :navTitle='navTitle' iconColor='#fff' :isBackgroundColor="true" ref="navBarRef"></nav-bar>
|
|||
|
|
</view>
|
|||
|
|
<!-- #endif -->
|
|||
|
|
<view class="borderPad pt20 pick-gradient-bg" v-if="secondType == ProductTypeEnum.PunchCard">
|
|||
|
|
<view class="pick-up-info-top-box">
|
|||
|
|
<pick-up-info v-if="merchantOrderVoList[0] && Object.keys(merchantOrderVoList[0]).length > 0 &&
|
|||
|
|
merchantOrderVoList[0].latitude && merchantOrderVoList[0].longitude" :isPunchCard="true"
|
|||
|
|
:merAddressInfo="merchantOrderVoList[0]" :secondType="secondType">
|
|||
|
|
</pick-up-info>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class='order-submission' @touchstart="touchStart">
|
|||
|
|
<!-- 拼团切换样式 -->
|
|||
|
|
<view class="allAddress"
|
|||
|
|
v-if="Number(orderInfoVo.secondType)<5 && Number(orderInfoVo.secondType)!==2&&orderInfoVo.type==2">
|
|||
|
|
<view class="h-96 relative" v-if="orderInfoVo.merchantInfoList[0].deliveryMethodMer.split(',').length==2">
|
|||
|
|
<view class="w-full abs-lb rd-t-24rpx flex bg--w111-fff">
|
|||
|
|
<view class="flex-center w-50p h-76 fs-28 rd-lt-24rpx z-2"
|
|||
|
|
:class="shippingType == 1 ? 'bg--w111-fff font-color' : 'bg-primary-light'" @tap="addressType(1)">商家配送
|
|||
|
|
</view>
|
|||
|
|
<view class="flex-center w-50p h-76 fs-28 rd-rt-24rpx z-2"
|
|||
|
|
:class="shippingType == 2 ? 'bg--w111-fff font-color' : 'bg-primary-light'" @tap="addressType(2)">到店自提
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="w-50p rd-t-24rpx bg--w111-fff h-96" :class="shippingType == 1 ? 'abs-lt' : 'abs-rt'">
|
|||
|
|
<view class="w-full h-full relative active-card"></view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class='address group acea-row row-between-wrapper'
|
|||
|
|
:class="orderInfoVo.merchantInfoList[0].deliveryMethodMer.split(',').length == 2?'bd-r-14':'' "
|
|||
|
|
@tap='onAddress' v-if='shippingType == 1'>
|
|||
|
|
<view class='addressCon' v-if="addressInfo.realName">
|
|||
|
|
<view class='name acea-row'>
|
|||
|
|
<view class="line1 select-name">{{addressInfo.realName}}</view>
|
|||
|
|
<view class='phone'>{{addressInfo.phone}}</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="acea-row">
|
|||
|
|
<view class="line1"><text class='default font-color'
|
|||
|
|
v-if="addressInfo.isDefault">[默认]</text>{{addressInfo.province}}{{addressInfo.city}}{{addressInfo.district}}{{ addressInfo.street}}{{addressInfo.detail}}
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class='addressCon' v-else>
|
|||
|
|
<view class='setaddress'>设置收货地址</view>
|
|||
|
|
</view>
|
|||
|
|
<view class='iconfont icon-ic_rightarrow mt30'></view>
|
|||
|
|
</view>
|
|||
|
|
<view class='address group acea-row row-between-wrapper' v-if='shippingType == 2'
|
|||
|
|
:class="orderInfoVo.merchantInfoList[0].deliveryMethodMer.split(',').length == 2?'bd-r-14':'' ">
|
|||
|
|
<view class='addressCon' v-for="(item, index) in merchantOrderVoList" :key="index" @click="goMap(item)">
|
|||
|
|
<view class='name acea-row'>
|
|||
|
|
<view class="line1 select-name">{{item.merName}}</view>
|
|||
|
|
<view class='phone ml-24'>{{item.phone}}</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="acea-row">
|
|||
|
|
<view class="line1">{{item.addressDetail}}</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class='iconfont icon-ic_rightarrow mt30' @click="goMap(merchantOrderVoList[0])"></view>
|
|||
|
|
</view>
|
|||
|
|
<view class='line'>
|
|||
|
|
<image src='../static/images/line.png'></image>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<!-- 只有用户地址样式,预约商品不展示 -->
|
|||
|
|
<view
|
|||
|
|
v-if="Number(orderInfoVo.secondType)<5 && Number(orderInfoVo.secondType)!==2&&orderInfoVo.type!=2 &&orderInfoVo.type!==7"
|
|||
|
|
class="allAddress">
|
|||
|
|
<view class='address acea-row row-between-wrapper' @tap='onAddress'>
|
|||
|
|
<view class='addressCon' v-if="addressInfo.realName">
|
|||
|
|
<view class='name mb-16'>{{addressInfo.realName}}
|
|||
|
|
<text class='phone ml-24'>{{addressInfo.phone}}</text>
|
|||
|
|
</view>
|
|||
|
|
<view class="acea-row line2">
|
|||
|
|
<text class='default font-color' v-if="addressInfo.isDefault">[默认]</text>
|
|||
|
|
<text>{{addressInfo.province}}{{addressInfo.city}}{{addressInfo.district}}{{ addressInfo.street}}{{addressInfo.detail}}</text>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class='addressCon' v-else>
|
|||
|
|
<view class='setaddress'>设置收货地址</view>
|
|||
|
|
</view>
|
|||
|
|
<view class='iconfont icon-ic_rightarrow'></view>
|
|||
|
|
</view>
|
|||
|
|
<view class='line'>
|
|||
|
|
<image src='../static/images/line.png'></image>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<!-- 预约商品,预约时间 -->
|
|||
|
|
<view v-show="orderInfoVo.secondType === ProductTypeEnum.Reservation" class="allAddress">
|
|||
|
|
<view class='address acea-row row-between-wrapper'>
|
|||
|
|
<view class='f-s-32'>
|
|||
|
|
<view class='name'>预约时间:
|
|||
|
|
<text class=''>{{reservationInfo.reservationDate}}</text>
|
|||
|
|
<text class="ml-20">{{reservationInfo.reservationTime}}</text>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="borderPad mt20">
|
|||
|
|
<view v-for="(item, index) in merchantOrderVoList" :key="index" class='wrapper borRadius14 pb-8'>
|
|||
|
|
<view class="borderPad">
|
|||
|
|
<orderGoods :cartInfo="item.orderInfoList" :orderInfo="item" :secondType="secondType"
|
|||
|
|
:orderProNum="orderProNum" :isShowBtn="false" :isShowRecord="false">
|
|||
|
|
</orderGoods>
|
|||
|
|
</view>
|
|||
|
|
<view v-show="orderInfoVo.secondType ===0&&orderInfoVo.type!=2" class="boxs">
|
|||
|
|
<view class='item acea-row row-between-wrapper'>
|
|||
|
|
<view>配送方式</view>
|
|||
|
|
<view v-if="item.deliveryMethodMer.length===3 && item.takeTheirSwitch"
|
|||
|
|
class='discount acea-row row-middle'>
|
|||
|
|
<text @tap="openShowBox(item,index)">{{item.shippingType === 1 ? '商家配送' : '到店自提'}}</text>
|
|||
|
|
|
|||
|
|
<text @tap="openShowBox(item,index)" class='text-bbb iconfont icon-ic_rightarrow ml-4'></text>
|
|||
|
|
</view>
|
|||
|
|
<view v-else class='discount'>
|
|||
|
|
{{item.shippingType === 1 ? '商家配送' : '到店自提'}}
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view v-if="item.shippingType == 2 && item.takeTheirSwitch" class="store-address acea-row">
|
|||
|
|
<pick-up-info v-if="Object.keys(item).length > 0 && item.latitude && item.longitude"
|
|||
|
|
:merAddressInfo="item" :secondType="secondType">
|
|||
|
|
</pick-up-info>
|
|||
|
|
<!-- <view>
|
|||
|
|
<view class="name phone">{{item.phone}}</view>
|
|||
|
|
<view class="name w-480px">{{item.addressDetail}}</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="map" @click="goMap(item)">
|
|||
|
|
<text class="iconfont icon-ic_location51"></text>
|
|||
|
|
<view class="map_text">查看地图</view>
|
|||
|
|
</view> -->
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view v-show="item.shippingType === 1 && Number(orderInfoVo.secondType)===0"
|
|||
|
|
class='item acea-row row-between-wrapper'>
|
|||
|
|
<view>快递费用</view>
|
|||
|
|
<view v-if='!item.freightFee || item.freightFee == 0' class="noCoupon">免运费</view>
|
|||
|
|
<view v-else class='money'>¥{{item.freightFee || 0}}</view>
|
|||
|
|
</view>
|
|||
|
|
<view v-show="item.svipDiscountPrice != 0&&orderInfoVo.type!=2" class='item acea-row row-between-wrapper'>
|
|||
|
|
<view>SVIP优惠</view>
|
|||
|
|
<view class='money'>-¥{{item.svipDiscountPrice || 0}}</view>
|
|||
|
|
</view>
|
|||
|
|
<view v-show="item.merchantMemberDiscountPrice != 0&&orderInfoVo.type!=2" class='item acea-row row-between-wrapper'>
|
|||
|
|
<view>商户会员优惠</view>
|
|||
|
|
<view class='money'>-¥{{item.merchantMemberDiscountPrice || 0}}</view>
|
|||
|
|
</view>
|
|||
|
|
<view v-if="isProductType" class='item acea-row row-between-wrapper'>
|
|||
|
|
<view>店铺优惠</view>
|
|||
|
|
<view v-if="item.merCouponUserList && item.merCouponUserList.length"
|
|||
|
|
@tap='couponTap(item.merCouponUserList,item.merId, index)'>
|
|||
|
|
<view class='discount acea-row row-between-wrapper'>
|
|||
|
|
<text
|
|||
|
|
class="couponTitle line1">{{item.couponFee==0?`有${item.merCouponUserList.length}张优惠券可选`:`-¥${item.couponFee}`}}</text>
|
|||
|
|
<text class='iconfont text-bbb icon-ic_rightarrow ml-4'></text>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view v-else class="noCoupon">暂无优惠券</view>
|
|||
|
|
</view>
|
|||
|
|
<view class='item acea-row row-between-wrapper' v-if="textareaStatus" style="height: auto;">
|
|||
|
|
<view>买家留言</view>
|
|||
|
|
<input class="fs-28" placeholder-class='placeholder' value="" name="mark" placeholder='选填买家留言'
|
|||
|
|
v-model="item.remark" @input='bindHideKeyboard(item.remark,index)'
|
|||
|
|
style="width: 484rpx;text-align: right;"></input>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<!--商品关联系统表单-->
|
|||
|
|
<view v-if="orderInfoVo.systemFormValue && orderInfoVo.systemFormValue.length" class='borRadius14'>
|
|||
|
|
<system-from v-model="orderInfoVo.systemFormValue" ref="systemFromRef"></system-from>
|
|||
|
|
</view>
|
|||
|
|
<view v-show="secondType !== ProductTypeEnum.Integral" class='moneyList borRadius14'>
|
|||
|
|
<view class='item acea-row row-between-wrapper'>
|
|||
|
|
<view>商品总价</view>
|
|||
|
|
<view class='money'>¥{{orderInfoVo.proTotalFee || 0}}</view>
|
|||
|
|
</view>
|
|||
|
|
<view class='item acea-row row-between-wrapper' v-if="parseInt(orderInfoVo.freightFee) > 0">
|
|||
|
|
<view>运费:</view>
|
|||
|
|
<view class='money'>+¥{{orderInfoVo.freightFee || 0}}</view>
|
|||
|
|
</view>
|
|||
|
|
<view v-show="orderInfoVo.svipDiscountPrice != 0 &&orderInfoVo.type!=2"
|
|||
|
|
class='item acea-row row-between-wrapper'>
|
|||
|
|
<view>SVIP优惠</view>
|
|||
|
|
<view class='money'>-¥{{orderInfoVo.svipDiscountPrice || 0}}</view>
|
|||
|
|
</view>
|
|||
|
|
<view v-show="orderInfoVo.merchantMemberDiscountPrice != 0 &&orderInfoVo.type!=2"
|
|||
|
|
class='item acea-row row-between-wrapper'>
|
|||
|
|
<view>商户会员优惠</view>
|
|||
|
|
<view class='money'>-¥{{orderInfoVo.merchantMemberDiscountPrice || 0}}</view>
|
|||
|
|
</view>
|
|||
|
|
<view class='item acea-row row-between-wrapper' v-if="parseInt(merCouponFee) > 0 && isProductType">
|
|||
|
|
<view>店铺优惠</view>
|
|||
|
|
<view class='money'>-¥{{merCouponFee}}</view>
|
|||
|
|
</view>
|
|||
|
|
<view v-if="isProductType" class='item acea-row row-between-wrapper'>
|
|||
|
|
<view>平台优惠</view>
|
|||
|
|
<view v-if="orderInfoVo.platCouponUserList && orderInfoVo.platCouponUserList.length"
|
|||
|
|
class='discount acea-row row-between-wrapper' @tap='couponTap(orderInfoVo.platCouponUserList,0)'>
|
|||
|
|
<text
|
|||
|
|
class="couponTitle line1">{{platCouponFee==0?`有${orderInfoVo.platCouponUserList.length}张优惠券可选`:`-¥${platCouponFee}`}}</text>
|
|||
|
|
<text class='text-bbb iconfont icon-ic_rightarrow ml-4'></text>
|
|||
|
|
</view>
|
|||
|
|
<view v-else class="noCoupon">暂无优惠券</view>
|
|||
|
|
</view>
|
|||
|
|
<view class='item acea-row row-between-wrapper' v-if="orderInfoVo.integralDeductionSwitch && isProductType">
|
|||
|
|
<view>积分抵扣</view>
|
|||
|
|
<view class='discount acea-row row-middle'>
|
|||
|
|
<view class="mr14"> {{isUseIntegral ? "使用积分":"当前积分"}}
|
|||
|
|
<text
|
|||
|
|
class='num font-color'>{{ isUseIntegral ? orderInfoVo.surplusIntegral : orderInfoVo.userIntegral}}</text>
|
|||
|
|
</view>
|
|||
|
|
<checkbox-group @change="ChangeIntegral">
|
|||
|
|
<checkbox :checked='isUseIntegral ? true : false'
|
|||
|
|
:disabled="orderInfoVo.userIntegral==0 && !isUseIntegral" />
|
|||
|
|
</checkbox-group>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
|
|||
|
|
<view class='item acea-row row-between-wrapper' v-if="Number(orderInfoVo.deductionPrice) > 0">
|
|||
|
|
<view>抵扣金额</view>
|
|||
|
|
<view class='money'>-¥{{orderInfoVo.deductionPrice || 0}}</view>
|
|||
|
|
</view>
|
|||
|
|
|
|||
|
|
</view>
|
|||
|
|
<view style='height:120rpx;'></view>
|
|||
|
|
</view>
|
|||
|
|
<view class='footer acea-row row-between-wrapper'>
|
|||
|
|
<view class="acea-row row-middle">合计:
|
|||
|
|
<!-- 积分价格 -->
|
|||
|
|
<PointsPrice v-if="orderInfoVo.secondType === ProductTypeEnum.Integral" :pointsPrice="orderInfoVo"
|
|||
|
|
:pointsGoodsStyle="hotPointsStyle"></PointsPrice>
|
|||
|
|
<!-- 其他价格 -->
|
|||
|
|
<text v-else class='price_color f-s-38 fw-500 regular line-heightOne'>¥{{orderInfoVo.payFee || 0}}</text>
|
|||
|
|
</view>
|
|||
|
|
<view class='settlement' style='z-index:100' @tap="SubOrder">
|
|||
|
|
{{secondType === ProductTypeEnum.Integral?"确认兑换":"立即下单"}}
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<couponListWindow :coupon='coupon' @ChangCouponsClone="ChangCouponsClone" :openType='openType'
|
|||
|
|
@ChangCoupons="ChangCoupons" :orderShow="orderShow" :surplusFee="surplusFee"></couponListWindow>
|
|||
|
|
|
|||
|
|
<view v-if="isShowBox">
|
|||
|
|
<checkDelivery :isShowBox="isShowBox" :activeObj="activeObj" @close="boxClose" @confirmBtn="getShippingType">
|
|||
|
|
</checkDelivery>
|
|||
|
|
</view>
|
|||
|
|
<!-- 满员提示 -->
|
|||
|
|
<uni-popup ref="sh_popup" background-color="#fff" borderRadius="10px">
|
|||
|
|
<view class="sh_popup-content">
|
|||
|
|
<view class="sh_popup_title">
|
|||
|
|
提示
|
|||
|
|
</view>
|
|||
|
|
<view class="sh_popup_text">
|
|||
|
|
该团已拼成,是否自行开团?
|
|||
|
|
</view>
|
|||
|
|
<view class="sh_popup_btn">
|
|||
|
|
<view class="no_btn btn font-color" @click="popupClose">返回首页</view>
|
|||
|
|
<view class="yes_btn btn" @click="toAudit">去开团</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</uni-popup>
|
|||
|
|
</view>
|
|||
|
|
</template>
|
|||
|
|
<script>
|
|||
|
|
// +----------------------------------------------------------------------
|
|||
|
|
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
|||
|
|
// +----------------------------------------------------------------------
|
|||
|
|
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
|||
|
|
// +----------------------------------------------------------------------
|
|||
|
|
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
|||
|
|
// +----------------------------------------------------------------------
|
|||
|
|
// | Author: CRMEB Team <admin@crmeb.com>
|
|||
|
|
// +----------------------------------------------------------------------
|
|||
|
|
import {
|
|||
|
|
orderCreate,
|
|||
|
|
postOrderComputed,
|
|||
|
|
loadPreOrderApi
|
|||
|
|
} from '@/api/order.js';
|
|||
|
|
import {
|
|||
|
|
takeTheirApi
|
|||
|
|
} from '@/api/merchant.js';
|
|||
|
|
import couponListWindow from '../components/couponListWindow';
|
|||
|
|
import orderGoods from '@/components/orderGoods'
|
|||
|
|
import navBar from '@/components/navBar';
|
|||
|
|
import checkDelivery from '../components/checkDelivery/index.vue';
|
|||
|
|
import systemFrom from '../components/systemFrom/index.vue';
|
|||
|
|
import PointsPrice from '@/components/PointsPrice.vue';
|
|||
|
|
import pickUpInfo from './components/pickUpInfo.vue';
|
|||
|
|
import {
|
|||
|
|
toLogin
|
|||
|
|
} from '@/libs/login.js';
|
|||
|
|
import {
|
|||
|
|
mapGetters
|
|||
|
|
} from "vuex";
|
|||
|
|
import {
|
|||
|
|
Debounce
|
|||
|
|
} from '@/utils/validate.js'
|
|||
|
|
import {
|
|||
|
|
ProductTypeEnum,
|
|||
|
|
ProductMarketingTypeEnum
|
|||
|
|
} from "../../../enums/productEnums";
|
|||
|
|
import orderPay from "@/mixins/OrderPay.js";
|
|||
|
|
let app = getApp();
|
|||
|
|
/**
|
|||
|
|
* 积分商品推荐样式
|
|||
|
|
*/
|
|||
|
|
const hotPointsStyle = {
|
|||
|
|
iconStyle: {
|
|||
|
|
width: '28rpx',
|
|||
|
|
height: '28rpx'
|
|||
|
|
},
|
|||
|
|
priceStyle: {
|
|||
|
|
fontSize: '38rpx',
|
|||
|
|
},
|
|||
|
|
unitStyle: {
|
|||
|
|
fontSize: '26rpx',
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
export default {
|
|||
|
|
mixins: [orderPay],
|
|||
|
|
components: {
|
|||
|
|
navBar,
|
|||
|
|
couponListWindow,
|
|||
|
|
orderGoods,
|
|||
|
|
checkDelivery,
|
|||
|
|
systemFrom,
|
|||
|
|
PointsPrice,
|
|||
|
|
pickUpInfo
|
|||
|
|
},
|
|||
|
|
computed: {
|
|||
|
|
// 是否可以使用优惠券、积分抵扣。 基础订单/云盘订单,卡密,虚拟,预约,可以使用优惠券、积分抵扣
|
|||
|
|
isProductType() {
|
|||
|
|
return this.type === ProductMarketingTypeEnum.Normal && this.secondType !== this.ProductTypeEnum
|
|||
|
|
.Integral && this.secondType !== this.ProductTypeEnum.Video
|
|||
|
|
},
|
|||
|
|
...mapGetters(['productType', 'isLogin'])
|
|||
|
|
},
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
hotPointsStyle: hotPointsStyle,
|
|||
|
|
ProductMarketingTypeEnum: ProductMarketingTypeEnum,
|
|||
|
|
ProductTypeEnum: ProductTypeEnum,
|
|||
|
|
navTitle: '提交订单',
|
|||
|
|
homeTop: 20,
|
|||
|
|
orderShow: 'orderShow', //下单页面使用优惠券组件不展示tab切换页
|
|||
|
|
textareaStatus: true,
|
|||
|
|
openType: 1, //优惠券打开方式 1=使用
|
|||
|
|
couponShow: false,
|
|||
|
|
coupon: {
|
|||
|
|
coupon: false,
|
|||
|
|
list: [], //商户优惠券
|
|||
|
|
statusTile: '立即使用',
|
|||
|
|
couponMoney: 0
|
|||
|
|
}, //优惠券组件
|
|||
|
|
addressInfo: {}, //地址信息
|
|||
|
|
addressId: 0, //地址id
|
|||
|
|
orderMerchantRequestList: [], //商户属性集合
|
|||
|
|
cartId: '', //购物车id
|
|||
|
|
userInfo: {}, //用户信息
|
|||
|
|
mark: '', //买家留言
|
|||
|
|
couponFee: '请选择', //优惠券
|
|||
|
|
coupon_price: 0, //优惠券抵扣金额
|
|||
|
|
isUseIntegral: false, //是否使用积分
|
|||
|
|
integral_price: 0, //积分抵扣金额
|
|||
|
|
integral: 0,
|
|||
|
|
ChangePrice: 0, //使用积分抵扣变动后的金额
|
|||
|
|
formIds: [], //收集formid
|
|||
|
|
status: 0,
|
|||
|
|
toPay: false, //修复进入支付时页面隐藏从新刷新页面
|
|||
|
|
shippingType: 1,
|
|||
|
|
storePostage: 0,
|
|||
|
|
contacts: '',
|
|||
|
|
contactsTel: '',
|
|||
|
|
mydata: {},
|
|||
|
|
merchantOrderVoList: [],
|
|||
|
|
priceGroup: {},
|
|||
|
|
animated: false,
|
|||
|
|
totalPrice: 0,
|
|||
|
|
integralRatio: "0",
|
|||
|
|
orderKey: "",
|
|||
|
|
// usableCoupon: {},
|
|||
|
|
offlinePostage: "",
|
|||
|
|
news: true,
|
|||
|
|
again: false,
|
|||
|
|
addAgain: false,
|
|||
|
|
bargain: false, //是否是砍价
|
|||
|
|
combination: false, //是否是拼团
|
|||
|
|
secKill: false, //是否是秒杀
|
|||
|
|
orderInfoVo: {},
|
|||
|
|
addressList: [], //地址列表数据
|
|||
|
|
orderProNum: 0,
|
|||
|
|
orderNo: '', //预下单订单号
|
|||
|
|
theme: app.globalData.theme,
|
|||
|
|
addressChangeId: 0,
|
|||
|
|
isShowBox: false,
|
|||
|
|
activeObj: {},
|
|||
|
|
activeIndex: 0, // 选中店铺索引
|
|||
|
|
type: 0, // 0-基础订单,1-秒杀订单,2-拼团订单
|
|||
|
|
secondType: 0, //订单二级类型:0-普通订单,1-积分订单,2-虚拟订单,4-视频号订单,5-云盘订单,6-卡密订单
|
|||
|
|
merId: 0, //商户id,用于判断商户优惠券还是平台优惠券,平台优惠券商户id为0
|
|||
|
|
platUserCouponObj: {}, //平台优惠券对象,用于缓存数据使用
|
|||
|
|
platUserCouponId: 0, //平台优惠券id
|
|||
|
|
platCouponFee: '', //平台优惠券金额
|
|||
|
|
merCouponFee: '', //店铺优惠券总金额
|
|||
|
|
surplusFee: 0, //商品总金额-商户优惠券金额=平台端可使用优惠券的门槛
|
|||
|
|
merUserCouponId: 0, //店铺使用优惠券的id
|
|||
|
|
tempCouponObj: {}, //临时优惠券数据
|
|||
|
|
merchangtInfo: {}, //商户信息
|
|||
|
|
orderForm: [], //系统表单配置的数据
|
|||
|
|
orderExtend: {}, //提交接口表单的数据
|
|||
|
|
productId: '',
|
|||
|
|
groupActivityId: '',
|
|||
|
|
reservationInfo: {} // 预约信息
|
|||
|
|
};
|
|||
|
|
},
|
|||
|
|
watch: {
|
|||
|
|
isLogin: {
|
|||
|
|
handler: function(newV, oldV) {
|
|||
|
|
if (newV) {
|
|||
|
|
this.getloadPreOrder();
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
deep: true
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
onLoad(options) {
|
|||
|
|
this.orderNo = options.orderNo || 0;
|
|||
|
|
this.addressChangeId = parseInt(options.addressId) || 0;
|
|||
|
|
if (this.isLogin) {
|
|||
|
|
this.getloadPreOrder();
|
|||
|
|
} else {
|
|||
|
|
toLogin();
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
/**
|
|||
|
|
* 生命周期函数--监听页面显示
|
|||
|
|
*/
|
|||
|
|
onShow: function() {
|
|||
|
|
let _this = this
|
|||
|
|
this.textareaStatus = true;
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
//滚动
|
|||
|
|
touchStart() {
|
|||
|
|
// #ifdef MP || APP
|
|||
|
|
this.$refs.navBarRef.currentPage = false;
|
|||
|
|
// #endif
|
|||
|
|
},
|
|||
|
|
popupClose() {
|
|||
|
|
this.$refs.sh_popup.close()
|
|||
|
|
this.$util.navigateTo('/pages/index/index');
|
|||
|
|
},
|
|||
|
|
//去开团
|
|||
|
|
toAudit() {
|
|||
|
|
this.$refs.sh_popup.close()
|
|||
|
|
uni.navigateTo({
|
|||
|
|
url: `/pages/goods/goods_details/index?id=${this.productId}&mt=2&gd=${this.groupActivityId}`
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
addressType(type) {
|
|||
|
|
this.merchantOrderVoList[0].shippingType = type
|
|||
|
|
this.getShippingType(this.merchantOrderVoList[0])
|
|||
|
|
if (type == 2) {
|
|||
|
|
setTimeout(() => {
|
|||
|
|
this.shippingType = type
|
|||
|
|
}, 300)
|
|||
|
|
} else {
|
|||
|
|
this.shippingType = type
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
//选择配送方式回调
|
|||
|
|
getShippingType(item) {
|
|||
|
|
this.orderMerchantRequestList[this.activeIndex].shippingType = item.shippingType;
|
|||
|
|
this.$set(this.merchantOrderVoList[this.activeIndex], 'shippingType', item.shippingType);
|
|||
|
|
if (item.shippingType === 2) this.getTakeTheir(item.merId);
|
|||
|
|
this.computedPrice();
|
|||
|
|
this.isShowBox = false;
|
|||
|
|
},
|
|||
|
|
getTakeTheir(id) {
|
|||
|
|
takeTheirApi(id).then(res => {
|
|||
|
|
this.merchangtInfo = res.data; //商户信息
|
|||
|
|
this.$set(this.merchantOrderVoList[this.activeIndex], 'addressDetail', res.data.addressDetail);
|
|||
|
|
this.$set(this.merchantOrderVoList[this.activeIndex], 'phone', res.data.phone);
|
|||
|
|
this.$set(this.merchantOrderVoList[this.activeIndex], 'latitude', res.data.latitude);
|
|||
|
|
this.$set(this.merchantOrderVoList[this.activeIndex], 'longitude', res.data.longitude);
|
|||
|
|
this.$set(this.merchantOrderVoList[this.activeIndex], 'coverImage', res.data.coverImage);
|
|||
|
|
}).catch(err => {
|
|||
|
|
return this.$util.Tips({
|
|||
|
|
title: err
|
|||
|
|
});
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
//查看内置地图
|
|||
|
|
goMap(item) {
|
|||
|
|
let that = this;
|
|||
|
|
//#ifdef H5
|
|||
|
|
if (that.$wechat.isWeixin() === true) {
|
|||
|
|
that.$wechat.seeLocation({
|
|||
|
|
latitude: parseFloat(this.merchantOrderVoList[this.activeIndex].latitude),
|
|||
|
|
longitude: parseFloat(this.merchantOrderVoList[this.activeIndex].longitude),
|
|||
|
|
name: item.merName,
|
|||
|
|
address: item.addressDetail ? item.addressDetail : '',
|
|||
|
|
}).then(res => {
|
|||
|
|
console.log('success');
|
|||
|
|
})
|
|||
|
|
} else {
|
|||
|
|
//#endif
|
|||
|
|
uni.openLocation({
|
|||
|
|
latitude: parseFloat(this.merchantOrderVoList[this.activeIndex].latitude),
|
|||
|
|
longitude: parseFloat(this.merchantOrderVoList[this.activeIndex].longitude),
|
|||
|
|
scale: 8,
|
|||
|
|
name: item.merName,
|
|||
|
|
address: item.addressDetail ? item.addressDetail : '',
|
|||
|
|
success: function(res) {
|
|||
|
|
that.go_map = true
|
|||
|
|
},
|
|||
|
|
});
|
|||
|
|
// #ifdef H5
|
|||
|
|
}
|
|||
|
|
//#endif
|
|||
|
|
},
|
|||
|
|
// 打开配送方式弹窗
|
|||
|
|
openShowBox(item, index) {
|
|||
|
|
this.activeObj = item
|
|||
|
|
this.activeIndex = index
|
|||
|
|
this.isShowBox = true
|
|||
|
|
},
|
|||
|
|
boxClose() {
|
|||
|
|
this.isShowBox = false
|
|||
|
|
},
|
|||
|
|
// 订单详情
|
|||
|
|
getloadPreOrder: function() {
|
|||
|
|
loadPreOrderApi(this.orderNo).then(res => {
|
|||
|
|
let orderInfoVo = res.data;
|
|||
|
|
if (orderInfoVo.merchantInfoList[0].orderInfoList[0].groupBuyActivityId) {
|
|||
|
|
this.groupActivityId = orderInfoVo.merchantInfoList[0].orderInfoList[0].groupBuyActivityId
|
|||
|
|
this.productId = orderInfoVo.merchantInfoList[0].orderInfoList[0].productId
|
|||
|
|
}
|
|||
|
|
if (orderInfoVo.merchantInfoList[0].deliveryMethodMer.split(',').length == 1) {
|
|||
|
|
this.shippingType = orderInfoVo.merchantInfoList[0].deliveryMethodMer
|
|||
|
|
}
|
|||
|
|
this.reservationInfo = uni.getStorageSync('reservationInfo') || {} //缓存的预约信息,地址id,配送类型
|
|||
|
|
orderInfoVo.merchantInfoList.map(item => {
|
|||
|
|
if (item.shippingType === 2) this.getTakeTheir(item.merId)
|
|||
|
|
this.orderMerchantRequestList.push({
|
|||
|
|
shippingType: orderInfoVo.secondType === this.ProductTypeEnum.Reservation ? this
|
|||
|
|
.reservationInfo.shippingType : item.shippingType,
|
|||
|
|
merId: item.merId,
|
|||
|
|
remark: '',
|
|||
|
|
userCouponId: item.userCouponId
|
|||
|
|
})
|
|||
|
|
item.addressDetail = this.merchangtInfo.addressDetail;
|
|||
|
|
item.phone = this.merchangtInfo.phone;
|
|||
|
|
item.latitude = this.merchangtInfo.latitude;
|
|||
|
|
item.longitude = this.merchangtInfo.longitude;
|
|||
|
|
});
|
|||
|
|
this.merchantOrderVoList = orderInfoVo.merchantInfoList; //商户端数据
|
|||
|
|
this.platCouponFee = orderInfoVo.platCouponFee; //平台优惠券总金额
|
|||
|
|
this.platUserCouponId = orderInfoVo.platUserCouponId;
|
|||
|
|
this.merCouponFee = orderInfoVo.merCouponFee; //店铺优惠券总金额
|
|||
|
|
this.orderInfoVo = {
|
|||
|
|
...orderInfoVo,
|
|||
|
|
systemFormValue: orderInfoVo.systemFormValue ? this.$util.objToArr(JSON.parse(
|
|||
|
|
orderInfoVo.systemFormValue)) : []
|
|||
|
|
};
|
|||
|
|
let payNum = orderInfoVo.formDataSubmitType === 1 ? orderInfoVo.merchantInfoList[0].orderInfoList[0]
|
|||
|
|
.payNum : 1 //预约单的商品下单数量
|
|||
|
|
this.$nextTick(() => {
|
|||
|
|
if (this.orderInfoVo.systemFormValue.length) {
|
|||
|
|
this.$refs.systemFromRef.getFormList(payNum)
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
this.type = orderInfoVo.type; //订单类型
|
|||
|
|
this.secondType = orderInfoVo
|
|||
|
|
.secondType; //订单二级类型:0-普通订单,1-积分订单,2-虚拟订单,4-视频号订单,5-云盘订单,6-卡密订单
|
|||
|
|
this.orderProNum = orderInfoVo.orderProNum;
|
|||
|
|
if (orderInfoVo.addressId && this.addressChangeId === 0) {
|
|||
|
|
this.addressId = orderInfoVo.addressId;
|
|||
|
|
} else {
|
|||
|
|
this.addressId = this.addressChangeId;
|
|||
|
|
if (orderInfoVo.addressId != this.addressChangeId && this.addressChangeId > 0)
|
|||
|
|
this.computedPrice();
|
|||
|
|
}
|
|||
|
|
this.getAddressInfo();
|
|||
|
|
}).catch(err => {
|
|||
|
|
uni.navigateTo({
|
|||
|
|
url: '/pages/goods/order_list/index'
|
|||
|
|
});
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
// 计算订单价格
|
|||
|
|
computedPrice: function() {
|
|||
|
|
uni.showLoading({
|
|||
|
|
title: '加载中...'
|
|||
|
|
});
|
|||
|
|
let shippingType = this.shippingType;
|
|||
|
|
postOrderComputed({
|
|||
|
|
addressId: this.addressId,
|
|||
|
|
isUseIntegral: this.isUseIntegral,
|
|||
|
|
orderMerchantRequestList: this.orderMerchantRequestList,
|
|||
|
|
preOrderNo: this.orderNo,
|
|||
|
|
platUserCouponId: this.platUserCouponId
|
|||
|
|
}).then(res => {
|
|||
|
|
let data = res.data;
|
|||
|
|
//usedIntegral 使用的积分,surplusIntegral 剩余积分
|
|||
|
|
data.merOrderResponseList.map((item, i) => {
|
|||
|
|
this.merchantOrderVoList[i].freightFee = item.freightFee
|
|||
|
|
this.merchantOrderVoList[i].couponFee = item.couponFee
|
|||
|
|
});
|
|||
|
|
this.orderInfoVo.platCouponUserList = data.platCouponUserList; //平台优惠券数据
|
|||
|
|
this.merCouponFee = data.merCouponFee; //店铺优惠券总金额
|
|||
|
|
this.orderInfoVo.couponFee = data.couponFee; //优惠券优惠金额
|
|||
|
|
this.orderInfoVo.userIntegral = data.surplusIntegral; //使用的积分
|
|||
|
|
this.orderInfoVo.deductionPrice = data.deductionPrice;
|
|||
|
|
this.orderInfoVo.freightFee = data.freightFee;
|
|||
|
|
this.orderInfoVo.payFee = data.payFee;
|
|||
|
|
this.orderInfoVo.proTotalFee = data.proTotalFee;
|
|||
|
|
this.orderInfoVo.surplusIntegral = data.usedIntegral; //剩余积分
|
|||
|
|
this.platCouponFee = data.platCouponFee; //平台优惠金额
|
|||
|
|
this.orderInfoVo.integralDeductionSwitch = data.integralDeductionSwitch //积分抵扣开关
|
|||
|
|
//选中商户优惠券的值
|
|||
|
|
this.merchantOrderVoList[this.activeIndex].merCouponUserList = data.merOrderResponseList[
|
|||
|
|
this.activeIndex].merCouponUserList; //商户数据
|
|||
|
|
this.merUserCouponId = data.merOrderResponseList[this.activeIndex]
|
|||
|
|
.userCouponId //店铺使用优惠券的id
|
|||
|
|
uni.hideLoading();
|
|||
|
|
}).catch(err => {
|
|||
|
|
uni.hideLoading();
|
|||
|
|
return this.$util.Tips({
|
|||
|
|
title: err
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
bindPickerChange: function(e) {
|
|||
|
|
let value = e.detail.value;
|
|||
|
|
this.shippingType = value;
|
|||
|
|
this.computedPrice();
|
|||
|
|
},
|
|||
|
|
/**
|
|||
|
|
* 使用积分抵扣
|
|||
|
|
*/
|
|||
|
|
ChangeIntegral: function() {
|
|||
|
|
this.isUseIntegral = !this.isUseIntegral;
|
|||
|
|
this.computedPrice();
|
|||
|
|
},
|
|||
|
|
bindHideKeyboard: function(e, i) {
|
|||
|
|
this.orderMerchantRequestList[i].remark = e;
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
|
|||
|
|
//关闭优惠券弹窗
|
|||
|
|
ChangCouponsClone: function(coupon) {
|
|||
|
|
this.coupon.list = [];
|
|||
|
|
this.coupon.coupon = false;
|
|||
|
|
},
|
|||
|
|
//点击优惠券弹窗确定后
|
|||
|
|
ChangCoupons: function(item) {
|
|||
|
|
this.coupon.list = [];
|
|||
|
|
if (item.merId === 0) {
|
|||
|
|
this.platUserCouponId = item.isChecked ? item.id : 0;
|
|||
|
|
} else {
|
|||
|
|
this.$set(this.orderMerchantRequestList[this.activeIndex], 'userCouponId', item.isChecked ? item
|
|||
|
|
.id : 0);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
this.coupon.coupon = false;
|
|||
|
|
this.computedPrice();
|
|||
|
|
},
|
|||
|
|
/**
|
|||
|
|
* 选择优惠券
|
|||
|
|
* @param {Object} item优惠券对象
|
|||
|
|
* @param {Number} merId商户id
|
|||
|
|
* @param {Number} index索引
|
|||
|
|
*/
|
|||
|
|
couponTap: function(item, merId, index) {
|
|||
|
|
this.$set(this.coupon, 'list', item);
|
|||
|
|
this.$set(this.coupon, 'couponMoney', item);
|
|||
|
|
this.coupon.coupon = true;
|
|||
|
|
this.merId = merId; //商户id
|
|||
|
|
if (merId !== 0) this.activeIndex = index;
|
|||
|
|
this.coupon.loading = false;
|
|||
|
|
},
|
|||
|
|
/**
|
|||
|
|
* 获取当前金额可用优惠券
|
|||
|
|
*
|
|||
|
|
*/
|
|||
|
|
getCouponList: function(item, merId) {
|
|||
|
|
this.$set(this.coupon, 'list', item);
|
|||
|
|
this.openType = 1;
|
|||
|
|
uni.hideLoading();
|
|||
|
|
},
|
|||
|
|
onAddress: function() {
|
|||
|
|
uni.navigateTo({
|
|||
|
|
url: '/pages/address/user_address_list/index?orderNo=' + this.orderNo
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
realName: function(e) {
|
|||
|
|
this.contacts = e.detail.value;
|
|||
|
|
},
|
|||
|
|
phone: function(e) {
|
|||
|
|
this.contactsTel = e.detail.value;
|
|||
|
|
},
|
|||
|
|
payment: function(data) {
|
|||
|
|
let that = this;
|
|||
|
|
// #ifdef MP
|
|||
|
|
uni.checkBeforeAddOrder({
|
|||
|
|
success(res) {
|
|||
|
|
console.log("下单前置检查 成功:", JSON.stringify(res));
|
|||
|
|
const traceId = res.data.traceId;
|
|||
|
|
data.traceId = traceId;
|
|||
|
|
that.onCreate(data);
|
|||
|
|
},
|
|||
|
|
fail(res) {
|
|||
|
|
console.log("下单前置检查 失败:", JSON.stringify(res));
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
// #endif
|
|||
|
|
// #ifndef MP
|
|||
|
|
that.onCreate(data);
|
|||
|
|
// #endif
|
|||
|
|
},
|
|||
|
|
onCreate(data) {
|
|||
|
|
orderCreate(data).then(res => {
|
|||
|
|
if (res.data.groupBuyIsFull == 1) {
|
|||
|
|
uni.hideLoading();
|
|||
|
|
return this.$refs.sh_popup.open('center')
|
|||
|
|
}
|
|||
|
|
if (this.secondType === this.ProductTypeEnum.Integral && this.orderInfoVo.payFee == 0) {
|
|||
|
|
// 积分商品并且支付金额为0时,直接默认走余额支付的逻辑,订单支付成功跳转到支付结果页
|
|||
|
|
this.changeOrderPay(res.data.orderNo, 'yue', 'yue', 'integral', 'integral', '0')
|
|||
|
|
} else {
|
|||
|
|
// 其他商品走正常流程,去支付收银台页面
|
|||
|
|
this.getToPayment(this.secondType, res.data)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
uni.hideLoading();
|
|||
|
|
}).catch(err => {
|
|||
|
|
uni.hideLoading();
|
|||
|
|
return this.$util.Tips({
|
|||
|
|
title: err
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
//立即下单
|
|||
|
|
SubOrder: Debounce(async function(e) {
|
|||
|
|
let that = this,
|
|||
|
|
data = {};
|
|||
|
|
let flag = false;
|
|||
|
|
that.orderMerchantRequestList.map(function(v) {
|
|||
|
|
if (v.shippingType === 1 && !that.addressId && that.orderInfoVo.secondType !== 2) {
|
|||
|
|
flag = true;
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
if (flag && this.secondType !== this.ProductTypeEnum.Reservation) {
|
|||
|
|
that.$util.Tips({
|
|||
|
|
title: '请选择收货地址'
|
|||
|
|
});
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
let systemFormData = []
|
|||
|
|
if (this.orderInfoVo.systemFormValue.length) {
|
|||
|
|
systemFormData = await this.$refs.systemFromRef.getSubmitFromData()
|
|||
|
|
if (!systemFormData.length) return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
data = {
|
|||
|
|
addressId: this.secondType === this.ProductTypeEnum.Reservation ? this.reservationInfo.addressId : that
|
|||
|
|
.addressId,
|
|||
|
|
orderMerchantRequestList: that.orderMerchantRequestList,
|
|||
|
|
isUseIntegral: that.isUseIntegral,
|
|||
|
|
preOrderNo: that.orderNo,
|
|||
|
|
platUserCouponId: this.platUserCouponId,
|
|||
|
|
systemFormId: this.orderInfoVo.systemFormId,
|
|||
|
|
orderExtend: systemFormData.length ? JSON.stringify(systemFormData) : '',
|
|||
|
|
reservationName: this.reservationInfo.reservationName,
|
|||
|
|
reservationPhone: this.reservationInfo.reservationPhone
|
|||
|
|
};
|
|||
|
|
uni.showLoading({
|
|||
|
|
title: '订单提交中'
|
|||
|
|
});
|
|||
|
|
await that.payment(data);
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style lang="scss" scoped>
|
|||
|
|
.w-480px {
|
|||
|
|
width: 480rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.noCoupon {
|
|||
|
|
color: #999999;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.mr14 {
|
|||
|
|
margin-right: 14rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.couponTitle {
|
|||
|
|
width: 430rpx;
|
|||
|
|
display: inline-block;
|
|||
|
|
text-align: right;
|
|||
|
|
color: #666666;
|
|||
|
|
// @include main_color(theme);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.store-address {
|
|||
|
|
// padding: 20rpx;
|
|||
|
|
margin: 0 24rpx;
|
|||
|
|
background: #F6F6F6;
|
|||
|
|
// background: #FFF;
|
|||
|
|
// border: solid 2rpx #F6F6F6;
|
|||
|
|
border-radius: 16rpx;
|
|||
|
|
font-size: 24rpx;
|
|||
|
|
/*垂直居中*/
|
|||
|
|
-webkit-box-align: center;
|
|||
|
|
/*旧版本*/
|
|||
|
|
-moz-box-align: center;
|
|||
|
|
/*旧版本*/
|
|||
|
|
-ms-flex-align: center;
|
|||
|
|
/*混合版本*/
|
|||
|
|
-webkit-align-items: center;
|
|||
|
|
/*新版本*/
|
|||
|
|
align-items: center;
|
|||
|
|
|
|||
|
|
/*新版本*/
|
|||
|
|
.phone {
|
|||
|
|
margin-bottom: 10rpx;
|
|||
|
|
color: #282828;
|
|||
|
|
font-weight: bold;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.name {
|
|||
|
|
padding-right: 20rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.info {
|
|||
|
|
flex: 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.line2 {
|
|||
|
|
width: 456rpx !important;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.map {
|
|||
|
|
text-align: center;
|
|||
|
|
padding-left: 36rpx;
|
|||
|
|
position: relative;
|
|||
|
|
@include main_color(theme);
|
|||
|
|
|
|||
|
|
&::before {
|
|||
|
|
content: '';
|
|||
|
|
display: inline-block;
|
|||
|
|
width: 2rpx;
|
|||
|
|
height: 42rpx;
|
|||
|
|
background-color: #DDDDDD;
|
|||
|
|
position: absolute;
|
|||
|
|
left: 0;
|
|||
|
|
top: 18rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.iconfont {
|
|||
|
|
color: var(--view-theme);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.map_text {
|
|||
|
|
color: var(--view-theme);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.price_color {
|
|||
|
|
@include price_color(theme);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.line2 {
|
|||
|
|
width: 624rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.textR {
|
|||
|
|
text-align: right;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
.order-submission .wrapper .item .discount .placeholder {
|
|||
|
|
color: #ccc;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .wrapper {
|
|||
|
|
background-color: #fff;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .wrapper .item {
|
|||
|
|
padding: 20rpx 24rpx;
|
|||
|
|
font-size: 28rpx;
|
|||
|
|
color: #333333;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .wrapper .item .discount {
|
|||
|
|
font-size: 28rpx;
|
|||
|
|
color: #333;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .wrapper .item .discount .num {
|
|||
|
|
font-size: 32rpx;
|
|||
|
|
margin-right: 20rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .wrapper .item .shipping {
|
|||
|
|
font-size: 28rpx;
|
|||
|
|
color: #999;
|
|||
|
|
position: relative;
|
|||
|
|
padding-right: 58rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .wrapper .item .shipping .iconfont {
|
|||
|
|
font-size: 35rpx;
|
|||
|
|
color: #707070;
|
|||
|
|
position: absolute;
|
|||
|
|
right: 0;
|
|||
|
|
top: 50%;
|
|||
|
|
transform: translateY(-50%);
|
|||
|
|
margin-left: 30rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .wrapper .item textarea {
|
|||
|
|
background-color: #f9f9f9;
|
|||
|
|
width: auto !important;
|
|||
|
|
height: 140rpx;
|
|||
|
|
border-radius: 14rpx;
|
|||
|
|
margin-top: 30rpx;
|
|||
|
|
padding: 15rpx;
|
|||
|
|
box-sizing: border-box;
|
|||
|
|
font-weight: 400;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .wrapper .item .placeholder {
|
|||
|
|
color: #ccc;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .wrapper .item .list {
|
|||
|
|
margin-top: 35rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .wrapper .item .list .payItem {
|
|||
|
|
border: 1px solid #eee;
|
|||
|
|
border-radius: 14rpx;
|
|||
|
|
height: 86rpx;
|
|||
|
|
width: 100%;
|
|||
|
|
box-sizing: border-box;
|
|||
|
|
margin-top: 20rpx;
|
|||
|
|
font-size: 28rpx;
|
|||
|
|
color: #282828;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .wrapper .item .list .payItem.on {
|
|||
|
|
// border-color: #fc5445;
|
|||
|
|
@include coupons_border_color(theme);
|
|||
|
|
color: $theme-color;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .wrapper .item .list .payItem .name {
|
|||
|
|
width: 50%;
|
|||
|
|
text-align: center;
|
|||
|
|
border-right: 1px solid #eee;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .wrapper .item .list .payItem .name .iconfont {
|
|||
|
|
width: 44rpx;
|
|||
|
|
height: 44rpx;
|
|||
|
|
border-radius: 50%;
|
|||
|
|
text-align: center;
|
|||
|
|
line-height: 44rpx;
|
|||
|
|
background-color: #fe960f;
|
|||
|
|
color: #fff;
|
|||
|
|
font-size: 28rpx;
|
|||
|
|
margin-right: 15rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .wrapper .item .list .payItem .name .iconfont.icon-weixin2 {
|
|||
|
|
background-color: #41b035;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .wrapper .item .list .payItem .name .iconfont.icon-a-ic_alipay {
|
|||
|
|
background-color: #00AAEA;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .wrapper .item .list .payItem .tip {
|
|||
|
|
width: 49%;
|
|||
|
|
text-align: center;
|
|||
|
|
font-size: 26rpx;
|
|||
|
|
color: #aaa;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .moneyList {
|
|||
|
|
margin-top: 20rpx;
|
|||
|
|
background-color: #fff;
|
|||
|
|
padding: 10rpx 24rpx;
|
|||
|
|
margin-bottom: calc(constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
|
|||
|
|
margin-bottom: calc(env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .moneyList .item {
|
|||
|
|
font-size: 28rpx;
|
|||
|
|
color: #282828;
|
|||
|
|
height: 80rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .moneyList .item~.item {
|
|||
|
|
// margin-top: 20rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .moneyList .item .money {
|
|||
|
|
color: #666666;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .footer {
|
|||
|
|
width: 100%;
|
|||
|
|
height: 100rpx;
|
|||
|
|
background-color: #fff;
|
|||
|
|
padding: 0 30rpx;
|
|||
|
|
font-size: 28rpx;
|
|||
|
|
color: #333;
|
|||
|
|
box-sizing: border-box;
|
|||
|
|
position: fixed;
|
|||
|
|
bottom: 0;
|
|||
|
|
left: 0;
|
|||
|
|
height: calc(100rpx+ constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
|
|||
|
|
height: calc(100rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
|
|||
|
|
z-index: 999;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.order-submission .footer .settlement {
|
|||
|
|
background-color: #fff;
|
|||
|
|
font-size: 26rpx;
|
|||
|
|
color: #fff;
|
|||
|
|
width: 200rpx;
|
|||
|
|
height: 72rpx;
|
|||
|
|
@include main_bg_color(theme);
|
|||
|
|
border-radius: 60rpx;
|
|||
|
|
text-align: center;
|
|||
|
|
line-height: 72rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.footer .transparent {
|
|||
|
|
opacity: 0
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/deep/ checkbox .uni-checkbox-input.uni-checkbox-input-checked,
|
|||
|
|
/deep/ .uni-radio-input-checked {
|
|||
|
|
@include main_bg_color(theme);
|
|||
|
|
border: none !important;
|
|||
|
|
color: #fff !important
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/deep/ checkbox .wx-checkbox-input.wx-checkbox-input-checked,
|
|||
|
|
/deep/ .wx-radio-input-checked {
|
|||
|
|
@include main_bg_color(theme);
|
|||
|
|
border: none !important;
|
|||
|
|
color: #fff !important;
|
|||
|
|
margin-right: 0 !important;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 切换
|
|||
|
|
/deep/.uni-date-x--border {
|
|||
|
|
border: 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/deep/.uni-icons {
|
|||
|
|
font-size: 0 !important;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/deep/.uni-date-x {
|
|||
|
|
color: #999;
|
|||
|
|
font-size: 15px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/deep/.uni-date__x-input {
|
|||
|
|
font-size: 15px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/deep/uni-checkbox[disabled] .uni-checkbox-input {
|
|||
|
|
background-color: #eee;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.address {
|
|||
|
|
background-color: #fff;
|
|||
|
|
box-sizing: border-box;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.footer .transparent {
|
|||
|
|
opacity: 0
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.w-322 {
|
|||
|
|
width: 322rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.w-450 {
|
|||
|
|
width: 450rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.h-auto {
|
|||
|
|
height: auto;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.mt30 {
|
|||
|
|
margin-top: 30rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.bg-primary-light {
|
|||
|
|
@include main_rgba_color(theme);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.rd-lt-24rpx {
|
|||
|
|
border-radius: 24rpx 0 0 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.rd-rt-24rpx {
|
|||
|
|
border-radius: 0 24rpx 0 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.z-2 {
|
|||
|
|
z-index: 2;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.gold {
|
|||
|
|
color: #DCA658;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.select-name {
|
|||
|
|
max-width: 300rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.font-color {
|
|||
|
|
font-weight: 500 !important;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/deep/ .uni-popup__wrapper {
|
|||
|
|
background: #FFFFFF;
|
|||
|
|
border-radius: 32rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.sh_popup-content {
|
|||
|
|
padding: 40rpx;
|
|||
|
|
|
|||
|
|
.sh_popup_title {
|
|||
|
|
font-weight: 500;
|
|||
|
|
font-size: 32rpx;
|
|||
|
|
color: #333333;
|
|||
|
|
text-align: center;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.sh_popup_text {
|
|||
|
|
font-weight: 400;
|
|||
|
|
font-size: 28rpx;
|
|||
|
|
color: #666666;
|
|||
|
|
text-align: center;
|
|||
|
|
margin-top: 36rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.sh_popup_btn {
|
|||
|
|
display: flex;
|
|||
|
|
margin-top: 60rpx;
|
|||
|
|
justify-content: space-between;
|
|||
|
|
|
|||
|
|
.btn {
|
|||
|
|
width: 244rpx;
|
|||
|
|
height: 72rpx;
|
|||
|
|
border-radius: 50rpx;
|
|||
|
|
text-align: center;
|
|||
|
|
line-height: 72rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.no_btn {
|
|||
|
|
@include coupons_border_color(theme);
|
|||
|
|
color: $theme-color;
|
|||
|
|
margin-right: 32rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.yes_btn {
|
|||
|
|
@include main_bg_color(theme);
|
|||
|
|
color: #FFFFFF;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.pick-gradient-bg {
|
|||
|
|
@include index-gradient(theme);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.pick-up-info-top-box {
|
|||
|
|
background: #FFFFFF;
|
|||
|
|
border-radius: 24rpx;
|
|||
|
|
overflow: hidden;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.wrapper {
|
|||
|
|
& + .wrapper {
|
|||
|
|
margin-top: 20rpx;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.pt-24 {
|
|||
|
|
padding-top: 24rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.pt20 {
|
|||
|
|
padding-top: 20rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.pb-24 {
|
|||
|
|
padding-bottom: 24rpx;
|
|||
|
|
}
|
|||
|
|
</style>
|