|
@@ -0,0 +1,2897 @@
|
|
|
+<template>
|
|
|
+ <scroll-view :scroll-top="scrollTop" scroll-y="true" class="scroll-Y">
|
|
|
+ <wx-points-commit ref="wxPointsCommit"></wx-points-commit>
|
|
|
+
|
|
|
+ <view class="warp">
|
|
|
+ <view
|
|
|
+ :class="{
|
|
|
+ warp_index: true,
|
|
|
+ warp_index1: true,
|
|
|
+ 'bgc-blue': custTypeId === 1,
|
|
|
+ 'bgc-green': custTypeId === 2,
|
|
|
+ }"
|
|
|
+ >{{ parkInfo.carno | formatCarno }}</view
|
|
|
+ >
|
|
|
+ <view class="warp_index">
|
|
|
+ <view>停车场</view>
|
|
|
+ <view class="warp_index_color">{{ parkInfo.parkname }}</view>
|
|
|
+ </view>
|
|
|
+ <view class="warp_index">
|
|
|
+ <view>入场时间</view>
|
|
|
+ <view class="warp_index_color">{{ parkInfo.entertime }}</view>
|
|
|
+ </view>
|
|
|
+ <view class="warp_index">
|
|
|
+ <view>已停车时长</view>
|
|
|
+ <view class="warp_index_color">{{ parkingTime }}</view>
|
|
|
+ </view>
|
|
|
+ <view class="warp_index">
|
|
|
+ <view>应缴</view>
|
|
|
+ <view class="warp_index_color">{{
|
|
|
+ (parkInfo.servicefee / 100) | currency
|
|
|
+ }}</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="warp">
|
|
|
+ <view
|
|
|
+ class="warp_index warp_index_da"
|
|
|
+ v-if="
|
|
|
+ parkFee.parkInfoEntity.consumeReduce ||
|
|
|
+ parkFee.parkInfoEntity.memberLevelReduce
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <view>停车优惠</view>
|
|
|
+ <view class="warp_index_color" @click="discounts">
|
|
|
+ <view
|
|
|
+ style="margin-right: 10rpx"
|
|
|
+ :class="hasDiscount ? 'text-red' : ''"
|
|
|
+ >{{ discountDesc }}</view
|
|
|
+ >
|
|
|
+ <image
|
|
|
+ style="width: 26rpx; height: 26rpx"
|
|
|
+ src="static/images/arrows.png"
|
|
|
+ />
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view
|
|
|
+ class="warp_index warp_index_da"
|
|
|
+ v-if="
|
|
|
+ parkFee.parkInfoEntity.isuseintegral === 1 &&
|
|
|
+ parkFee.discountKind === 7
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <view>新会员积分优惠</view>
|
|
|
+ <view class="warp_index_color" @click="newToggle('bottom')">
|
|
|
+ <view
|
|
|
+ style="margin-right: 10rpx"
|
|
|
+ :class="bonusCopy >= integralNew || durationNew ? 'text-red' : ''"
|
|
|
+ >{{ integralDescNew }}</view
|
|
|
+ >
|
|
|
+ <image
|
|
|
+ style="width: 26rpx; height: 26rpx"
|
|
|
+ src="static/images/arrows.png"
|
|
|
+ />
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view
|
|
|
+ class="warp_index warp_index_da"
|
|
|
+ v-if="parkFee.parkInfoEntity.isuseintegral === 1"
|
|
|
+ >
|
|
|
+ <view>积分减免</view>
|
|
|
+ <view class="warp_index_color" @click="toggle('bottom')">
|
|
|
+ <view
|
|
|
+ style="margin-right: 10rpx"
|
|
|
+ :class="bonusCopy >= integral || duration ? 'text-red' : ''"
|
|
|
+ >{{ integralDesc }}</view
|
|
|
+ >
|
|
|
+ <image
|
|
|
+ style="width: 26rpx; height: 26rpx"
|
|
|
+ src="static/images/arrows.png"
|
|
|
+ />
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view
|
|
|
+ class="warp_index warp_index_da"
|
|
|
+ v-if="parkFee.parkInfoEntity.isuseticket === 1"
|
|
|
+ >
|
|
|
+ <view>优惠劵</view>
|
|
|
+ <view class="warp_index_color" @click="coupon">
|
|
|
+ <view
|
|
|
+ style="margin-right: 10rpx"
|
|
|
+ :class="couponCount > 0 ? 'text-red' : ''"
|
|
|
+ >{{ couponDesc }}</view
|
|
|
+ >
|
|
|
+ <image
|
|
|
+ style="width: 26rpx; height: 26rpx"
|
|
|
+ src="static/images/arrows.png"
|
|
|
+ />
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <!-- 纸质券 -->
|
|
|
+ <view
|
|
|
+ class="warp_index warp_index_da"
|
|
|
+ v-if="parkFee.parkInfoEntity.papercoupons === 1 || isShowPapercoupons"
|
|
|
+ >
|
|
|
+ <view>纸质优惠劵</view>
|
|
|
+ <view class="warp_index_color" @click="paperCoupon">
|
|
|
+ <view style="margin-right: 10rpx" class="text-red"
|
|
|
+ >扫描纸质优惠劵二维码</view
|
|
|
+ >
|
|
|
+ <image
|
|
|
+ style="width: 26rpx; height: 26rpx"
|
|
|
+ src="static/images/arrows.png"
|
|
|
+ />
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view
|
|
|
+ :class="{
|
|
|
+ warp_index: true,
|
|
|
+ color_warp_index: custTypeId !== 0,
|
|
|
+ warp_index_da: true,
|
|
|
+ }"
|
|
|
+ >
|
|
|
+ <view>优惠金额:</view>
|
|
|
+ <view class="warp_index_color" style="color: #ff0000"
|
|
|
+ >-{{ discountTotalFee | currency }}</view
|
|
|
+ >
|
|
|
+ </view>
|
|
|
+ <view :class="{ warp_index: true, color_warp_index: custTypeId !== 0 }">
|
|
|
+ <view>应付金额:</view>
|
|
|
+ <view class="warp_index_color" style="color: #ff0000">{{
|
|
|
+ actualFee | currency
|
|
|
+ }}</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="top_content" v-if="parkFee.parkInfoEntity.payinstruction">
|
|
|
+ <view class="title_box">
|
|
|
+ <text class="btn">缴费说明</text>
|
|
|
+ </view>
|
|
|
+ <view class="info" :class="!isShow ? 'is-show' : ''">
|
|
|
+ <text>{{ parkFee.parkInfoEntity.payinstruction }}</text>
|
|
|
+ </view>
|
|
|
+ <view
|
|
|
+ class="top-down"
|
|
|
+ @click="togglePayinstruction"
|
|
|
+ v-if="!isShow && parkFee.parkInfoEntity.payinstruction.length > 60"
|
|
|
+ >︾</view
|
|
|
+ >
|
|
|
+ <view
|
|
|
+ class="top-down"
|
|
|
+ @click="togglePayinstruction"
|
|
|
+ v-if="isShow && parkFee.parkInfoEntity.payinstruction.length > 60"
|
|
|
+ >︽</view
|
|
|
+ >
|
|
|
+ </view>
|
|
|
+ <view class="flewx">
|
|
|
+ <view class="flewx-content"
|
|
|
+ >应付<text
|
|
|
+ style="color: #ff0000; font-size: 32rpx; padding-left: 20rpx"
|
|
|
+ >{{ actualFee | currency }}</text
|
|
|
+ >
|
|
|
+ 元
|
|
|
+ <text style="color: #8d8d8d; padding-left: 30rpx; font-size: 28rpx"
|
|
|
+ >已优惠{{ discountTotalFee | currency }}元</text
|
|
|
+ >
|
|
|
+ <uni-countdown
|
|
|
+ v-if="payCarno"
|
|
|
+ splitorColor="#FF0000"
|
|
|
+ color="#FF0000"
|
|
|
+ :show-day="false"
|
|
|
+ :show-hour="false"
|
|
|
+ :second="refreshTime"
|
|
|
+ @timeup="resetCountDown()"
|
|
|
+ >
|
|
|
+ <text style="align-self: center; font-size: 26rpx; color: #ff0000"
|
|
|
+ >后同步最新费用</text
|
|
|
+ >
|
|
|
+ </uni-countdown>
|
|
|
+ </view>
|
|
|
+ <view
|
|
|
+ :class="{
|
|
|
+ flewx_index3: true,
|
|
|
+ blue_flewx_index3: custTypeId === 1,
|
|
|
+ green_flewx_index3: custTypeId === 2,
|
|
|
+ 'btn-disabled': payBtnDisabled,
|
|
|
+ }"
|
|
|
+ @click="toPay"
|
|
|
+ >支付</view
|
|
|
+ >
|
|
|
+ </view>
|
|
|
+ <uni-popup ref="popup" type="bottom" :animation="false" :maskClick="false">
|
|
|
+ <view class="popue_box">
|
|
|
+ <view class="popue_box_index1">积分减免</view>
|
|
|
+ <view class="popue_box_index">
|
|
|
+ <view>减免规则</view>
|
|
|
+ <view style="color: #989898"
|
|
|
+ >{{ integral }}积分抵扣{{
|
|
|
+ parkMallCode === 5 ? integralToValue + '元' : '1小时'
|
|
|
+ }}</view
|
|
|
+ >
|
|
|
+ </view>
|
|
|
+ <view class="popue_box_index">
|
|
|
+ <view style="font-weight: 700">可用积分</view>
|
|
|
+ <view style="color: #ed1c24">{{ bonus }}分</view>
|
|
|
+ </view>
|
|
|
+ <view class="popue_box_index">
|
|
|
+ <view>抵扣{{ parkMallCode === 5 ? '金额' : '时长' }}</view>
|
|
|
+ <view class="popue_box_index" style="width: 325rpx">
|
|
|
+ <view class="popue_box_index4_xs">
|
|
|
+ <view class="popue_box_index4_xs_index1" @click="durationMinus"
|
|
|
+ >-</view
|
|
|
+ >
|
|
|
+ <view class="popue_box_index4_xs_index2">{{ duration }}</view>
|
|
|
+ <view class="popue_box_index4_xs_index3" @click="durationAdd"
|
|
|
+ >+</view
|
|
|
+ >
|
|
|
+ </view>
|
|
|
+ <view style="color: #808080">{{
|
|
|
+ parkMallCode === 5 ? '元' : '小时'
|
|
|
+ }}</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="popue_box_index5">
|
|
|
+ <view
|
|
|
+ :class="{
|
|
|
+ popue_box_index4_by: true,
|
|
|
+ blue_popue_box_index4_by: custTypeId === 1,
|
|
|
+ green_popue_box_index4_by: custTypeId === 2,
|
|
|
+ }"
|
|
|
+ @click="cancel(1)"
|
|
|
+ >取消</view
|
|
|
+ >
|
|
|
+ <view
|
|
|
+ :class="{
|
|
|
+ popue_box_index4_by1: true,
|
|
|
+ blue_popue_box_index4_by1: custTypeId === 1,
|
|
|
+ green_popue_box_index4_by1: custTypeId === 2,
|
|
|
+ }"
|
|
|
+ @click="confirm(1)"
|
|
|
+ >确定</view
|
|
|
+ >
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </uni-popup>
|
|
|
+ <uni-popup
|
|
|
+ ref="newpopup"
|
|
|
+ type="bottom"
|
|
|
+ :animation="false"
|
|
|
+ :maskClick="false"
|
|
|
+ >
|
|
|
+ <view class="popue_box">
|
|
|
+ <view class="popue_box_index1">积分优惠减免</view>
|
|
|
+ <view class="popue_box_index">
|
|
|
+ <view>减免规则</view>
|
|
|
+ <view style="color: #989898">{{ integralNew }}积分抵扣1小时</view>
|
|
|
+ </view>
|
|
|
+ <view class="popue_box_index">
|
|
|
+ <view style="font-weight: 700">可用积分</view>
|
|
|
+ <view style="color: #ed1c24">{{ bonus }}分</view>
|
|
|
+ </view>
|
|
|
+ <view class="popue_box_index">
|
|
|
+ <view>抵扣{{ parkMallCode === 5 ? '金额' : '时长' }}</view>
|
|
|
+ <view class="popue_box_index" style="width: 325rpx">
|
|
|
+ <view class="popue_box_index4_xs">
|
|
|
+ <view class="popue_box_index4_xs_index1" @click="durationMinusNew"
|
|
|
+ >-</view
|
|
|
+ >
|
|
|
+ <view class="popue_box_index4_xs_index2">{{ durationNew }}</view>
|
|
|
+ <view class="popue_box_index4_xs_index3" @click="durationAddNew"
|
|
|
+ >+</view
|
|
|
+ >
|
|
|
+ </view>
|
|
|
+ <view style="color: #808080">{{
|
|
|
+ parkMallCode === 5 ? '元' : '小时'
|
|
|
+ }}</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="popue_box_index5">
|
|
|
+ <view
|
|
|
+ :class="{
|
|
|
+ popue_box_index4_by: true,
|
|
|
+ blue_popue_box_index4_by: custTypeId === 1,
|
|
|
+ green_popue_box_index4_by: custTypeId === 2,
|
|
|
+ }"
|
|
|
+ @click="cancel(2)"
|
|
|
+ >取消</view
|
|
|
+ >
|
|
|
+ <view
|
|
|
+ :class="{
|
|
|
+ popue_box_index4_by1: true,
|
|
|
+ blue_popue_box_index4_by1: custTypeId === 1,
|
|
|
+ green_popue_box_index4_by1: custTypeId === 2,
|
|
|
+ }"
|
|
|
+ @click="confirm(2)"
|
|
|
+ >确定</view
|
|
|
+ >
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </uni-popup>
|
|
|
+ </scroll-view>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+const app = getApp();
|
|
|
+import moment from '@/common/js/moment.min.js';
|
|
|
+import { mapState } from 'vuex';
|
|
|
+import MemberCacheTool from '@/utils/member-cache-tool.js';
|
|
|
+import log from '@/utils/log.js';
|
|
|
+import { compare } from '@/utils/location.js';
|
|
|
+export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ bindflag: '',
|
|
|
+ initFlag: true, // 用作应缴费用为0时的提示弹框标记
|
|
|
+ animationChilc: false,
|
|
|
+ duration: 0, // 积分兑换时长
|
|
|
+ durationNew: 0, // 北京新会员积分兑换时长
|
|
|
+ durationCopy: 0, // 积分兑换时长备份
|
|
|
+ durationNewCopy: 0, // 积分兑换时长备份
|
|
|
+ orderno: '',
|
|
|
+ params: {},
|
|
|
+ integral: 0, // 积分
|
|
|
+ integralNew: 0, // 北京新会员积分
|
|
|
+ bonus: 0, // 当前积分
|
|
|
+ bonusCopy: 0, // 积分备份
|
|
|
+ bonusfee: 0, // 积分减免金额
|
|
|
+ newBonusfee: 0, // 新会员减免金额
|
|
|
+ hourMoney: 15,
|
|
|
+ payCarno: '',
|
|
|
+ picUrl: '',
|
|
|
+ parkInfo: {},
|
|
|
+ parkFee: {},
|
|
|
+ checkedTotal: 0, // 已选择优惠项目数
|
|
|
+ discountTotal: {}, // 已选择优惠项目统计(时间、费用)
|
|
|
+ couponCount: 0, // 可选优惠券数量
|
|
|
+ checkedCouponCount: 0, // 已选优惠券数量
|
|
|
+ couponInfo: {}, // 已选择电子券信息
|
|
|
+ paperCouponInfo: {}, // 已选择纸质优惠券信息
|
|
|
+ isShowPapercoupons: false, // 未登录时显示纸质优惠券
|
|
|
+ // dimension: 1, // 计算维度 浦东0.5小时 其它停车场1小时
|
|
|
+ maxonetimediscountFee: 0, // 每次优惠上限金额
|
|
|
+ maxonedaydiscountFee: 0, // 每天优惠上限金额
|
|
|
+ discountTotalFeeCopy: 0, // 用于超限判断
|
|
|
+ parkMallCode: 0, // 0静安 1浦东 2杭州 3北京 4沈阳 5深圳
|
|
|
+ hasDiscount: false, // 是否有会员减免、消费减免
|
|
|
+ isShow: true, // 缴费说明true:显示全部 false:显示部分
|
|
|
+ orderCreateTime: '', // 订单创建时间
|
|
|
+ refreshTime: 180, // 停车场重置费用倒计时3分钟
|
|
|
+ isPageHide: false, // 用于其它有人吗倒计时重置时不再弹出优惠框
|
|
|
+ isShowPopup: false, // 优惠提示是否显示
|
|
|
+ preUrl: '',
|
|
|
+ integralToValue: 0, // 深圳前海停车500积分兑换5元
|
|
|
+ integralMaxMoney: 0, // 深圳前海停车积分上限
|
|
|
+ integralNewToValue: 0, // 北京新会员积分
|
|
|
+ integralNewMaxMoney: 0, // 北京新会员积分
|
|
|
+ discountKind: null,
|
|
|
+ parkingTrack: null,
|
|
|
+ reFresh: '',
|
|
|
+ };
|
|
|
+ },
|
|
|
+ onBackPress(event) {
|
|
|
+ return true;
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ // 支付按钮状态
|
|
|
+ payBtnDisabled() {
|
|
|
+ return (
|
|
|
+ !this.parkInfo.servicefee ||
|
|
|
+ (app.globalData.member && !this.parkFee.parkInfoEntity)
|
|
|
+ );
|
|
|
+ },
|
|
|
+
|
|
|
+ // 已停车时长
|
|
|
+ parkingTime() {
|
|
|
+ const time = this.parkInfo.serviceMin;
|
|
|
+ const days = parseInt(time / 60 / 24);
|
|
|
+ const hours = parseInt((time / 60) % 24);
|
|
|
+ const minutes = parseInt(time % 60);
|
|
|
+ if (days > 0) {
|
|
|
+ return `${days}天 ${hours}小时 ${minutes}分钟`;
|
|
|
+ }
|
|
|
+ if (hours > 0) {
|
|
|
+ return `${hours}小时 ${minutes}分钟`;
|
|
|
+ }
|
|
|
+ return `${minutes}分钟`;
|
|
|
+ },
|
|
|
+
|
|
|
+ // 停车优惠(首停、会员减免、消费减免)
|
|
|
+ discountDesc() {
|
|
|
+ if (this.hasDiscount) {
|
|
|
+ if (this.checkedTotal > 0) {
|
|
|
+ return `已选择${this.checkedTotal}项优惠`;
|
|
|
+ }
|
|
|
+ return '立即使用';
|
|
|
+ } else {
|
|
|
+ return '暂无可用优惠';
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 积分减免
|
|
|
+ integralDesc() {
|
|
|
+ if (this.duration > 0) {
|
|
|
+ // 深圳特殊处理(单位:金额)
|
|
|
+ if (this.parkMallCode === 5) {
|
|
|
+ return `已选择兑换${this.duration}元`;
|
|
|
+ }
|
|
|
+ return `已选择兑换${this.duration}小时`;
|
|
|
+ }
|
|
|
+ if (this.bonusCopy < this.integral) {
|
|
|
+ return `${this.integral}积分可停车1小时`;
|
|
|
+ }
|
|
|
+ if (
|
|
|
+ this.parkMallCode === 3 &&
|
|
|
+ app.globalData.member?.currnentintegral >= this.integral &&
|
|
|
+ !this.bonus
|
|
|
+ ) {
|
|
|
+ return `今日已达上限`;
|
|
|
+ }
|
|
|
+ return `${this.bonus}积分可减免`;
|
|
|
+ },
|
|
|
+ // 北京新会员积分减免
|
|
|
+ integralDescNew() {
|
|
|
+ if (this.durationNew > 0) {
|
|
|
+ return `已选择兑换${this.durationNew}小时`;
|
|
|
+ }
|
|
|
+ if (this.bonusCopy < this.integralNew) {
|
|
|
+ return `${this.integralNew}积分可停车1小时`;
|
|
|
+ }
|
|
|
+ if (
|
|
|
+ this.parkMallCode === 3 &&
|
|
|
+ app.globalData.member?.currnentintegral >= this.integralNew &&
|
|
|
+ !this.bonus
|
|
|
+ ) {
|
|
|
+ return `今日已达上限`;
|
|
|
+ }
|
|
|
+ return `${this.bonus}积分可减免`;
|
|
|
+ },
|
|
|
+ // 电子券
|
|
|
+ couponDesc() {
|
|
|
+ if (this.checkedCouponCount > 0) {
|
|
|
+ return `已选择${this.checkedCouponCount}张优惠劵`;
|
|
|
+ } else {
|
|
|
+ if (this.couponCount > 0) {
|
|
|
+ return `您有${this.couponCount}张可用优惠劵`;
|
|
|
+ }
|
|
|
+ return `暂无可用优惠券`;
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 实际支付金额
|
|
|
+ actualFee() {
|
|
|
+ const fee = this.parkInfo.servicefee / 100 - this.discountTotalFee;
|
|
|
+ return fee > 0 ? fee : 0;
|
|
|
+ },
|
|
|
+
|
|
|
+ // 优惠金额
|
|
|
+ discountTotalFee() {
|
|
|
+ let total = 0;
|
|
|
+ if (this.discountTotal.fee > 0) {
|
|
|
+ total += this.discountTotal.fee; // 首停、会员、消费减免
|
|
|
+ }
|
|
|
+ if (this.bonusfee > 0) {
|
|
|
+ total += this.bonusfee; // 积分减免
|
|
|
+ }
|
|
|
+ if (this.newBonusfee > 0) {
|
|
|
+ total += this.newBonusfee; // 积分减免
|
|
|
+ }
|
|
|
+ if (this.couponInfo.couponfee > 0) {
|
|
|
+ total += this.couponInfo.couponfee; // 电子券减免
|
|
|
+ }
|
|
|
+ this.discountTotalFeeCopy = total;
|
|
|
+ // 超出上限按上限计算(parkMallCode: 0静安 1浦东 2杭州 3北京 4沈阳 5深圳)
|
|
|
+ if (this.parkMallCode === 1) {
|
|
|
+ if (total > this.maxonetimediscountFee) {
|
|
|
+ total = this.maxonetimediscountFee;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (this.parkMallCode === 5) {
|
|
|
+ if (total > this.maxonedaydiscountFee) {
|
|
|
+ total = this.maxonedaydiscountFee;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 沈阳超限处理(maxonedaydiscountFee 会员、消费、电子券减免)
|
|
|
+ if (this.parkMallCode === 4) {
|
|
|
+ if (total - this.bonusfee > this.maxonedaydiscountFee) {
|
|
|
+ total = this.maxonedaydiscountFee + this.bonusfee;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (this.paperCouponInfo.paperDiscountFee > 0) {
|
|
|
+ total += this.paperCouponInfo.paperDiscountFee; // 纸质券减免
|
|
|
+ this.discountTotalFeeCopy += this.paperCouponInfo.paperDiscountFee;
|
|
|
+ }
|
|
|
+ uni.setStorageSync('parkingTotal', {
|
|
|
+ time: total / this.hourMoney,
|
|
|
+ fee: total,
|
|
|
+ feeCopy: this.discountTotalFeeCopy,
|
|
|
+ bonusfee: this.bonusfee || 0,
|
|
|
+ newBonusfee: this.newBonusfee || 0,
|
|
|
+ });
|
|
|
+ return total;
|
|
|
+ },
|
|
|
+
|
|
|
+ ...mapState({
|
|
|
+ custTypeId: (state) => state.custTypeId,
|
|
|
+ }),
|
|
|
+ },
|
|
|
+ // 分享好友
|
|
|
+ onShareAppMessage: function (res) {
|
|
|
+ return {
|
|
|
+ title: '缴费详情', // 分享标题
|
|
|
+ // desc: this.params.shareDescribe, // 分享描述
|
|
|
+ imageUrl: '', // 分享图标
|
|
|
+ path: `/pages/parkingFee/parkingFeeDetail?orderno=${this.orderno}&id=${this.id}&mallid=${app.globalData.mallid}`,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ // 分享朋友圈
|
|
|
+ onShareTimeline: function (res) {
|
|
|
+ return {
|
|
|
+ title: '缴费详情', // 分享标题
|
|
|
+ // desc: this.params.shareDescribe, // 分享描述
|
|
|
+ imageUrl: '', // 分享图标
|
|
|
+ path: `/pages/parkingFee/parkingFeeDetail?orderno=${this.orderno}&id=${this.id}&mallid=${app.globalData.mallid}`,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ onLoad(option) {
|
|
|
+ this.picUrl = this.$picUrl;
|
|
|
+ this.payCarno = option.carno;
|
|
|
+ this.orderno = option.orderno;
|
|
|
+ this.id = option.id;
|
|
|
+ // 埋点初始化
|
|
|
+ this.parkingTrack = new this.$trackFactory('parking_pay_order', {});
|
|
|
+ this.parkingTrack.track(1);
|
|
|
+ // 场景二维码记录(是否扫码进入)
|
|
|
+ app.globalData.paramsScene = {};
|
|
|
+ this.$saveSceneQrcodeDetail(
|
|
|
+ 'page',
|
|
|
+ 'parkingFeeDetail:' + option.id,
|
|
|
+ '缴费详情',
|
|
|
+ '',
|
|
|
+ '',
|
|
|
+ '',
|
|
|
+ ''
|
|
|
+ );
|
|
|
+ this.init();
|
|
|
+ // if (JSON.stringify(app.globalData.userInfo) !== "{}" && JSON.stringify(app.globalData.member) !== "{}") {
|
|
|
+ this.createParkOrder();
|
|
|
+ // } else {
|
|
|
+ // this.$refs.authorize.login("/pages/parkingFee/parkingFeeDetail", () => {
|
|
|
+ // this.createParkOrder();
|
|
|
+ // });
|
|
|
+ // }
|
|
|
+ // 埋点本地化
|
|
|
+ this.preUrl = uni.getStorageSync('previousUrl');
|
|
|
+ uni.setStorageSync('previousUrl', '/pages/parkingFee/parkingFeeDetail.vue');
|
|
|
+ },
|
|
|
+ onBackPress(event) {
|
|
|
+ uni.redirectTo({
|
|
|
+ url: './parkingFee.vue',
|
|
|
+ });
|
|
|
+ return true;
|
|
|
+ },
|
|
|
+ onShow() {
|
|
|
+ log.info('订单时间:' + this.orderCreateTime);
|
|
|
+ this.isPageHide = false;
|
|
|
+ // 如果订单时间+3分钟-当前时间<=0 刷新订单
|
|
|
+ if (this.orderCreateTime) {
|
|
|
+ const countDownTime = moment(this.orderCreateTime)
|
|
|
+ .add(180, 's')
|
|
|
+ .diff(moment(), 's');
|
|
|
+ log.info('剩余时间:' + countDownTime);
|
|
|
+ if (countDownTime <= 0) {
|
|
|
+ this.createParkOrder();
|
|
|
+ } else {
|
|
|
+ this.refreshTime = countDownTime;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 优惠减免(首停、会员、消费)
|
|
|
+ this.checkedTotal = uni.getStorageSync('checkedTotal');
|
|
|
+ this.discountTotal = uni.getStorageSync('discountTotal');
|
|
|
+
|
|
|
+ // 电子券减免(停车券)
|
|
|
+ this.couponInfo = uni.getStorageSync('couponInfo');
|
|
|
+ this.checkedCouponCount = uni.getStorageSync('checkedCouponList').length;
|
|
|
+
|
|
|
+ // 纸质优惠券
|
|
|
+ this.paperCouponInfo = uni.getStorageSync('paperCouponInfo');
|
|
|
+ },
|
|
|
+ onHide() {
|
|
|
+ this.isPageHide = true;
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ reFresh: function () {
|
|
|
+ this.getList();
|
|
|
+ console.log('页面已重新加载');
|
|
|
+ },
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ // 触发返回按钮
|
|
|
+ getList() {
|
|
|
+ var pages = getCurrentPages(); //当前页面栈
|
|
|
+ let beforePage = pages[pages.length - 2]; //获取上一个页面实例对象
|
|
|
+ beforePage.$vm.reFresh = Math.random(); //触发上一页监听器
|
|
|
+ uni.navigateBack();
|
|
|
+ },
|
|
|
+ // 页面初始清空缓存
|
|
|
+ init() {
|
|
|
+ // 优惠减免(首停、会员、消费)
|
|
|
+ uni.removeStorageSync('checkedList'); // 选中list
|
|
|
+ uni.removeStorageSync('checkedTotal'); // 选中count数
|
|
|
+ uni.removeStorageSync('discountTotal'); // 减免信息(时长、费用)
|
|
|
+
|
|
|
+ // 停车减免(优惠、积分、停车券)
|
|
|
+ uni.removeStorageSync('parkFee');
|
|
|
+
|
|
|
+ // 电子券优惠信息
|
|
|
+ uni.removeStorageSync('checkedCouponList'); // 选中list
|
|
|
+ uni.removeStorageSync('couponInfo'); // 减免信息(时长、费用)
|
|
|
+ uni.removeStorageSync('list'); // 电子券list
|
|
|
+
|
|
|
+ // 总停车优惠信息(时长、费用)
|
|
|
+ uni.removeStorageSync('parkingTotal');
|
|
|
+
|
|
|
+ // 应缴金额
|
|
|
+ uni.removeStorageSync('servicefee');
|
|
|
+
|
|
|
+ // 订单号
|
|
|
+ uni.removeStorageSync('orderno');
|
|
|
+
|
|
|
+ // 纸质优惠券
|
|
|
+ uni.removeStorageSync('paperCouponInfo');
|
|
|
+ },
|
|
|
+
|
|
|
+ // 重置倒计时
|
|
|
+ resetCountDown() {
|
|
|
+ this.refreshTime = 0;
|
|
|
+ this.createParkOrder();
|
|
|
+ },
|
|
|
+
|
|
|
+ // 创建订单
|
|
|
+ createParkOrder() {
|
|
|
+ uni.showLoading({
|
|
|
+ title: '加载中',
|
|
|
+ });
|
|
|
+ const openId = MemberCacheTool.getOpenId(app);
|
|
|
+ const member = uni.getStorageSync('member');
|
|
|
+ const params = {
|
|
|
+ carno: this.payCarno,
|
|
|
+ mallid: app.globalData.mallid,
|
|
|
+ openId: openId,
|
|
|
+ vipcode:
|
|
|
+ app.globalData.member?.vipcode ||
|
|
|
+ uni.getStorageSync('member')?.vipcode,
|
|
|
+ mobile:
|
|
|
+ app.globalData.member?.mobile || uni.getStorageSync('member')?.mobile,
|
|
|
+ groupId: app.globalData.groupId,
|
|
|
+ kipUserId: app.globalData.member?.kipUserId || member.kipUserId || '',
|
|
|
+ createuser: 'sys_miniprogram',
|
|
|
+ };
|
|
|
+ this.$md(params);
|
|
|
+ if (this.$store.state.radiusType === null) {
|
|
|
+ this.payUrl = 'api/1.0/park/createParkOrderAndCarFee';
|
|
|
+ } else if (this.$store.state.radiusType === 0) {
|
|
|
+ this.payUrl = 'api/1.0/park/createParkOrder';
|
|
|
+ }
|
|
|
+ this.$request({
|
|
|
+ // url: this.$baseURL + 'api/1.0/park/createParkOrder',
|
|
|
+ url: this.$baseURL + this.payUrl,
|
|
|
+
|
|
|
+ // url: 'http://172.21.202.252:8083/xcrm-api/api/1.0/park/createParkOrderAndCarFee',
|
|
|
+ data: params,
|
|
|
+ method: 'POST',
|
|
|
+ header: JSON.parse(uni.getStorageSync('handleUser')),
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ uni.hideLoading();
|
|
|
+ if (res.data.code === 0) {
|
|
|
+ this.bindflag = res.data.data.bind;
|
|
|
+ this.parkInfo = res.data.data;
|
|
|
+ this.parkMallCode = this.parkInfo.parkMallCode;
|
|
|
+ this.orderCreateTime = this.parkInfo.createDate;
|
|
|
+ uni.setStorageSync('servicefee', this.parkInfo.servicefee / 100);
|
|
|
+ uni.setStorageSync('orderno', this.parkInfo.orderno);
|
|
|
+
|
|
|
+ if (!this.parkInfo.servicefee && this.initFlag) {
|
|
|
+ this.initFlag = false;
|
|
|
+ return uni.showModal({
|
|
|
+ showCancel: false,
|
|
|
+ title: '提示',
|
|
|
+ content: '当前无需缴费',
|
|
|
+ complete: () => {
|
|
|
+ // this.createParkOrder();
|
|
|
+ uni.navigateBack();
|
|
|
+ },
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (app.globalData.member) {
|
|
|
+ this.getDiscount();
|
|
|
+ } else {
|
|
|
+ // 未登录状态显示纸质券
|
|
|
+ this.isShowPapercoupons = true;
|
|
|
+ }
|
|
|
+ this.refreshTime = 180;
|
|
|
+ } else {
|
|
|
+ uni.showModal({
|
|
|
+ showCancel: false,
|
|
|
+ title: '提示',
|
|
|
+ content: res.data.msg,
|
|
|
+ complete(r) {
|
|
|
+ uni.navigateBack();
|
|
|
+ },
|
|
|
+ });
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ console.log(err);
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ // 获取优惠、停车场相关配置
|
|
|
+ getDiscount() {
|
|
|
+ uni.showLoading({
|
|
|
+ title: '加载中',
|
|
|
+ });
|
|
|
+ let _this = this;
|
|
|
+ const params = {
|
|
|
+ carno: this.payCarno,
|
|
|
+ mallid: app.globalData.mallid,
|
|
|
+ vipcode: app.globalData.member.vipcode,
|
|
|
+ groupId: app.globalData.groupId,
|
|
|
+ };
|
|
|
+ this.$md(params);
|
|
|
+ this.$request({
|
|
|
+ // url: 'http://172.21.202.252:8083/xcrm-api/api/1.0/park/discount',
|
|
|
+ url: this.$baseURL + 'api/1.0/park/discount',
|
|
|
+ data: params,
|
|
|
+ method: 'POST',
|
|
|
+ header: JSON.parse(uni.getStorageSync('handleUser')),
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ uni.hideLoading();
|
|
|
+ if (res.data.code === 0) {
|
|
|
+ this.parkFee = res.data.data;
|
|
|
+ if (this.parkFee.parkIntegraltomoneyList) {
|
|
|
+ this.integral = this.parkFee.parkIntegraltomoneyList[0].integral;
|
|
|
+ this.integralToValue =
|
|
|
+ this.parkFee.parkIntegraltomoneyList[0].value || 0;
|
|
|
+ this.integralMaxMoney =
|
|
|
+ this.parkFee.parkIntegraltomoneyList[0].integralMaxHour || 0;
|
|
|
+ this.bonus = this.parkFee.parkIntegraltomoneyList[0].bonus;
|
|
|
+ // this.bonus = 600
|
|
|
+ // this.bonus = this.parkFee.parkIntegraltomoneyList[0].bonus;
|
|
|
+ this.discountKind = this.parkFee.discountKind;
|
|
|
+ if (this.parkFee.discountKind === 7) {
|
|
|
+ // console.log('this.parkFee.parkIntegraltomoneyList[1]::::::', res.data.data.parkIntegraltomoneyList)
|
|
|
+ this.integralNew =
|
|
|
+ _this.parkFee.parkIntegraltomoneyList[1].integral;
|
|
|
+ this.integralNewToValue =
|
|
|
+ this.parkFee.parkIntegraltomoneyList[1].value || 0;
|
|
|
+ this.integralNewMaxMoney =
|
|
|
+ this.parkFee.parkIntegraltomoneyList[1].integralMaxHour || 0;
|
|
|
+ }
|
|
|
+ // 深圳特殊处理(单位:金额)
|
|
|
+ if (this.parkMallCode === 5) {
|
|
|
+ if (this.duration) {
|
|
|
+ this.bonus -=
|
|
|
+ (this.duration * this.integral) / this.integralToValue;
|
|
|
+ this.bonusfee = this.duration;
|
|
|
+ this.durationCopy = this.duration;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (this.duration) {
|
|
|
+ this.bonus -= this.duration * this.integral;
|
|
|
+ this.bonusfee = this.duration * this.hourMoney;
|
|
|
+ this.durationCopy = this.duration;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.bonusCopy = this.bonus;
|
|
|
+ }
|
|
|
+ if (!this.parkFee.parkInfoEntity) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const reg = /[;;]/g;
|
|
|
+ this.parkFee.parkInfoEntity.payinstruction =
|
|
|
+ this.parkFee.parkInfoEntity.payinstruction.replace(reg, '\r\n');
|
|
|
+ this.hourMoney = this.parkFee.parkInfoEntity.needmoney;
|
|
|
+ this.parkMallCode = this.parkFee.parkInfoEntity.parkMallCode;
|
|
|
+ if (this.parkFee.memberTicketList) {
|
|
|
+ this.couponCount = this.parkFee.memberTicketList.length;
|
|
|
+ }
|
|
|
+ // 上限金额
|
|
|
+ this.maxonetimediscountFee =
|
|
|
+ this.parkFee.parkInfoEntity.maxonetimediscount * this.hourMoney;
|
|
|
+ // 深圳特殊处理(单位:金额)
|
|
|
+ if (this.parkMallCode === 5) {
|
|
|
+ this.maxonedaydiscountFee =
|
|
|
+ this.parkFee.parkInfoEntity.maxOneDayHour -
|
|
|
+ this.parkFee.parkInfoEntity
|
|
|
+ .ticketandMemeberGradeAndConsumeUseHour || 0;
|
|
|
+ } else {
|
|
|
+ this.maxonedaydiscountFee =
|
|
|
+ (this.parkFee.parkInfoEntity.maxOneDayHour -
|
|
|
+ this.parkFee.parkInfoEntity
|
|
|
+ .ticketandMemeberGradeAndConsumeUseHour) *
|
|
|
+ this.hourMoney || 0;
|
|
|
+ }
|
|
|
+ if (this.maxonedaydiscountFee < 0) {
|
|
|
+ this.maxonedaydiscountFee = 0;
|
|
|
+ }
|
|
|
+ uni.setStorageSync('parkFee', JSON.stringify(this.parkFee));
|
|
|
+ // 如果有可使用会员减免、消费减免,追加弹框提示
|
|
|
+ if (
|
|
|
+ this.parkFee.parkInfoEntity.consumeReduce ||
|
|
|
+ this.parkFee.parkInfoEntity.memberLevelReduce
|
|
|
+ ) {
|
|
|
+ if (
|
|
|
+ (this.parkFee.parkMemberOrderReducesEntityList &&
|
|
|
+ this.parkFee.parkMemberOrderReducesEntityList[0]) ||
|
|
|
+ (this.parkFee.parkConsumeReducesEntityList &&
|
|
|
+ this.parkFee.parkConsumeReducesEntityList[0])
|
|
|
+ ) {
|
|
|
+ this.hasDiscount = true;
|
|
|
+ // if (!this.parkInfo.servicefee) {
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // let confirmColor = '#703a98';
|
|
|
+ // if (this.custTypeId === 1) {
|
|
|
+ // confirmColor = '#023694';
|
|
|
+ // }
|
|
|
+ // if (this.custTypeId === 2) {
|
|
|
+ // confirmColor = '#0B683A';
|
|
|
+ // }
|
|
|
+ // if (this.checkedTotal || this.isPageHide || this.isShowPopup) {
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // this.isShowPopup = true;
|
|
|
+ // uni.showModal({
|
|
|
+ // title: '停车优惠',
|
|
|
+ // content: '您有停车优惠可使用, 前往使用!',
|
|
|
+ // cancelText: '返回',
|
|
|
+ // confirmText: '点击查看',
|
|
|
+ // confirmColor: confirmColor,
|
|
|
+ // success: res => {
|
|
|
+ // if (res.confirm) {
|
|
|
+ // this.discounts();
|
|
|
+ // }
|
|
|
+ // this.isShowPopup = false;
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 自动勾选优惠
|
|
|
+ if (
|
|
|
+ !this.discountTotalFee &&
|
|
|
+ (this.hasDiscount ||
|
|
|
+ this.bonusCopy >= this.integral ||
|
|
|
+ this.bonusCopy >= this.integralNew ||
|
|
|
+ this.couponCount)
|
|
|
+ ) {
|
|
|
+ this.autoCheckDiscounts();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ uni.showModal({
|
|
|
+ showCancel: false,
|
|
|
+ title: '提示',
|
|
|
+ content: res.data.msg,
|
|
|
+ complete(r) {
|
|
|
+ // uni.navigateBack();
|
|
|
+ },
|
|
|
+ });
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ console.log(err);
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ // 积分取消
|
|
|
+ cancel(flag) {
|
|
|
+ if (flag === 1) {
|
|
|
+ this.duration = this.durationCopy;
|
|
|
+ this.bonus = this.bonusCopy;
|
|
|
+ // 深圳特殊处理(单位:金额)
|
|
|
+ if (this.parkMallCode === 5) {
|
|
|
+ this.bonusfee = this.duration;
|
|
|
+ } else {
|
|
|
+ this.bonusfee = this.duration * this.hourMoney;
|
|
|
+ }
|
|
|
+ this.$refs.popup.close();
|
|
|
+ } else if (flag === 2) {
|
|
|
+ // 北京新会员积分减免操作后取消
|
|
|
+ this.durationNew = this.durationCopy2;
|
|
|
+ this.bonus = this.bonusCopy;
|
|
|
+ this.newBonusfee = this.durationNew * this.hourMoney;
|
|
|
+ this.$refs.newpopup.close();
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 积分确认
|
|
|
+ confirm(type) {
|
|
|
+ if (type === 1) {
|
|
|
+ this.bonusCopy = this.bonus;
|
|
|
+ this.durationCopy = this.duration;
|
|
|
+ this.$refs.popup.close();
|
|
|
+ } else if (type === 2) {
|
|
|
+ this.bonusCopy = this.bonus;
|
|
|
+ this.durationCopy2 = this.durationNew;
|
|
|
+ this.$refs.newpopup.close();
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 减积分
|
|
|
+ durationMinus() {
|
|
|
+ if (this.duration > 0) {
|
|
|
+ // 深圳特殊处理(单位:金额)
|
|
|
+ if (this.parkMallCode === 5) {
|
|
|
+ this.duration -= this.integralToValue;
|
|
|
+ } else {
|
|
|
+ this.duration--;
|
|
|
+ }
|
|
|
+ this.bonus += this.integral;
|
|
|
+ }
|
|
|
+ // 深圳特殊处理(单位:金额)
|
|
|
+ if (this.parkMallCode === 5) {
|
|
|
+ this.bonusfee = this.duration;
|
|
|
+ } else {
|
|
|
+ this.bonusfee = this.duration * this.hourMoney;
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 加积分
|
|
|
+ durationAdd() {
|
|
|
+ // 浦东每次缴费超限控制
|
|
|
+ if (
|
|
|
+ this.parkMallCode === 1 &&
|
|
|
+ this.discountTotalFee >= this.maxonetimediscountFee
|
|
|
+ ) {
|
|
|
+ return uni.showToast({
|
|
|
+ title: `超出抵扣上限,每次最高可抵扣${this.parkFee.parkInfoEntity.maxonetimediscount}小时`,
|
|
|
+ icon: 'none',
|
|
|
+ });
|
|
|
+ }
|
|
|
+ // 北京积分上限控制
|
|
|
+ if (this.parkMallCode === 3) {
|
|
|
+ const bonusMax =
|
|
|
+ this.parkFee.parkInfoEntity.integralMaxHour -
|
|
|
+ this.parkFee.parkInfoEntity.integralUseHour || 0;
|
|
|
+ if (this.duration >= bonusMax) {
|
|
|
+ return uni.showToast({
|
|
|
+ title: `超出抵扣上限,每日最高可抵扣${this.parkFee.parkInfoEntity.integralMaxHour}小时`,
|
|
|
+ icon: 'none',
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 深圳积分上限控制
|
|
|
+ if (this.parkMallCode === 5) {
|
|
|
+ if (this.discountTotalFee >= this.maxonedaydiscountFee) {
|
|
|
+ return uni.showToast({
|
|
|
+ title: `超出抵扣上限,每日最高可抵扣${this.parkFee.parkInfoEntity.maxOneDayHour}元`,
|
|
|
+ icon: 'none',
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (this.duration >= this.integralMaxMoney) {
|
|
|
+ return uni.showToast({
|
|
|
+ title: `超出抵扣上限,每次最高可抵扣${this.integralMaxMoney}元`,
|
|
|
+ icon: 'none',
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.bonus - this.integral >= 0) {
|
|
|
+ this.bonus -= this.integral;
|
|
|
+ // 深圳特殊处理(单位:金额)
|
|
|
+ if (this.parkMallCode === 5) {
|
|
|
+ this.duration += this.integralToValue;
|
|
|
+ } else {
|
|
|
+ this.duration++;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ uni.showToast({
|
|
|
+ title: '积分不足',
|
|
|
+ icon: 'none',
|
|
|
+ });
|
|
|
+ }
|
|
|
+ // 深圳特殊处理(单位:金额)
|
|
|
+ if (this.parkMallCode === 5) {
|
|
|
+ this.bonusfee = this.duration;
|
|
|
+ } else {
|
|
|
+ this.bonusfee = this.duration * this.hourMoney;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 北京新会员加积分
|
|
|
+ durationAddNew() {
|
|
|
+ const bonusMaxNew =
|
|
|
+ this.parkFee.parkIntegraltomoneyList[1].integralMaxHour -
|
|
|
+ this.parkFee.parkIntegraltomoneyList[1].integralUseHour || 0;
|
|
|
+ if (this.durationNew >= bonusMaxNew) {
|
|
|
+ return uni.showToast({
|
|
|
+ title: `超出抵扣上限,每日最高可抵扣${this.parkFee.parkIntegraltomoneyList[1].integralMaxHour}小时`,
|
|
|
+ icon: 'none',
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (this.bonus - this.integralNew >= 0) {
|
|
|
+ this.bonus -= this.integralNew;
|
|
|
+ this.durationNew++;
|
|
|
+ this.newBonusfee = this.durationNew * this.hourMoney;
|
|
|
+ } else {
|
|
|
+ uni.showToast({
|
|
|
+ title: '积分不足',
|
|
|
+ icon: 'none',
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 北京新会员减积分
|
|
|
+ durationMinusNew() {
|
|
|
+ if (this.durationNew > 0) {
|
|
|
+ this.bonus += this.integralNew;
|
|
|
+ this.durationNew--;
|
|
|
+ this.newBonusfee = this.durationNew * this.hourMoney;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 积分减免弹出
|
|
|
+ toggle(type) {
|
|
|
+ if (
|
|
|
+ this.parkFee.parkIntegraltomoneyList &&
|
|
|
+ this.parkFee.parkIntegraltomoneyList.length
|
|
|
+ ) {
|
|
|
+ this.$refs['popup'].open();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 积分减免弹出
|
|
|
+ newToggle(type) {
|
|
|
+ if (
|
|
|
+ this.parkFee.parkIntegraltomoneyList &&
|
|
|
+ this.parkFee.parkIntegraltomoneyList.length
|
|
|
+ ) {
|
|
|
+ this.$refs['newpopup'].open();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 跳转纸质优惠
|
|
|
+ paperCoupon() {
|
|
|
+ uni.navigateTo({
|
|
|
+ url: './parkingFeePaperCoupon',
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ // 电子优惠劵
|
|
|
+ coupon() {
|
|
|
+ if (!this.couponCount) {
|
|
|
+ return uni.showToast({
|
|
|
+ title: '暂无可使用的优惠券,请前往积分商城兑换优惠券',
|
|
|
+ icon: 'none',
|
|
|
+ });
|
|
|
+ }
|
|
|
+ uni.navigateTo({
|
|
|
+ url: './parkingFeeCoupon',
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ // 跳转首停、会员、消费减免页面
|
|
|
+ discounts() {
|
|
|
+ if (!this.hasDiscount && this.parkMallCode !== 2) {
|
|
|
+ return uni.showToast({
|
|
|
+ title: '暂无可用优惠',
|
|
|
+ icon: 'none',
|
|
|
+ });
|
|
|
+ }
|
|
|
+ uni.navigateTo({
|
|
|
+ url: '/pages/parkingFee/parkingFeeDiscounts',
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ // 自动勾选优惠 优先级:会员/消费->电子券->积分
|
|
|
+ autoCheckDiscounts() {
|
|
|
+ // console.log('if外1',this.bonusCopy, this.integral)
|
|
|
+ if (!this.parkFee || !this.parkInfo.servicefee) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const serviceFee = this.parkInfo.servicefee / 100; // 应缴费用
|
|
|
+
|
|
|
+ // 自动选取消费减免
|
|
|
+ if (
|
|
|
+ this.parkFee.parkConsumeReducesEntityList &&
|
|
|
+ this.parkFee.parkConsumeReducesEntityList[0] &&
|
|
|
+ this.parkFee.parkConsumeReducesEntityList[0].recuceContent
|
|
|
+ ) {
|
|
|
+ this.autoConsume(serviceFee);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 自动选取会员等级减免
|
|
|
+ if (
|
|
|
+ this.parkFee.parkMemberOrderReducesEntityList &&
|
|
|
+ this.parkFee.parkMemberOrderReducesEntityList[0] &&
|
|
|
+ this.parkFee.parkMemberOrderReducesEntityList[0].reduceContent &&
|
|
|
+ Number.parseInt(
|
|
|
+ this.parkFee.parkMemberOrderReducesEntityList[0].reduceContent
|
|
|
+ ) > 0
|
|
|
+ ) {
|
|
|
+ this.autoMember();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 自动选取电子券减免
|
|
|
+ if (this.couponCount) {
|
|
|
+ this.autoCoupon(serviceFee);
|
|
|
+ }
|
|
|
+ // 自动选取北京新会员积分减免
|
|
|
+ if (this.discountKind === 7) {
|
|
|
+ // console.log('this.bonusCopy::::::',this.bonusCopy, this.integral)
|
|
|
+ if (this.bonusCopy >= this.integralNew) {
|
|
|
+ this.newMemberautoBonus(serviceFee);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // console.log('this.bonusCopy::::::',this.bonusCopy, this.integral)
|
|
|
+ // 自动选取积分减免
|
|
|
+ if (this.bonusCopy >= this.integral) {
|
|
|
+ // this.newMemberautoBonus(serviceFee);
|
|
|
+ this.autoBonus(serviceFee);
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 自动选取消费减免
|
|
|
+ autoConsume(serviceFee) {
|
|
|
+ let consumeTime =
|
|
|
+ +this.parkFee.parkConsumeReducesEntityList[0].recuceContent || 0; // 消费减免时长
|
|
|
+ let consumeFee = 0; // 消费减免费用
|
|
|
+ const isSplit = this.parkFee.parkInfoEntity.isSplit === 0 ? 0 : 1; // 是否拆分 0: 可拆 1: 不可拆
|
|
|
+ const serviceTime = Math.ceil(serviceFee / this.hourMoney); // 停车时长(防止有小数情况向上取整)
|
|
|
+
|
|
|
+ /*************************************************** 静安 ***************************************************/
|
|
|
+ if (this.parkMallCode === 0) {
|
|
|
+ // 超过上限取上限
|
|
|
+ if (consumeTime > this.parkFee.parkInfoEntity.remainReduceTime) {
|
|
|
+ consumeTime = this.parkFee.parkInfoEntity.remainReduceTime;
|
|
|
+ }
|
|
|
+ // 拆分消费减免
|
|
|
+ if (isSplit === 0) {
|
|
|
+ // 减免时长超出停车时长取停车时长
|
|
|
+ if (consumeTime > serviceTime) {
|
|
|
+ consumeTime = serviceTime;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 消费减免费用
|
|
|
+ consumeFee = consumeTime * this.hourMoney;
|
|
|
+ }
|
|
|
+
|
|
|
+ /*************************************************** 浦东 ***************************************************/
|
|
|
+ if (this.parkMallCode === 1) {
|
|
|
+ // 可用消费减免时长上限
|
|
|
+ let remainReduceTime = this.parkFee.parkInfoEntity.remainReduceTime;
|
|
|
+ if (remainReduceTime > this.parkFee.parkInfoEntity.maxonetimediscount) {
|
|
|
+ remainReduceTime = this.parkFee.parkInfoEntity.maxonetimediscount;
|
|
|
+ }
|
|
|
+ // 超过上限取上限
|
|
|
+ if (consumeTime > remainReduceTime) {
|
|
|
+ consumeTime = remainReduceTime;
|
|
|
+ }
|
|
|
+ // 拆分消费减免
|
|
|
+ if (isSplit === 0) {
|
|
|
+ // 减免时长超出停车时长取停车时长
|
|
|
+ if (consumeTime > serviceTime) {
|
|
|
+ consumeTime = serviceTime;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 消费减免费用
|
|
|
+ consumeFee = consumeTime * this.hourMoney;
|
|
|
+ }
|
|
|
+
|
|
|
+ /*************************************************** 杭州 ***************************************************/
|
|
|
+ if (this.parkMallCode === 2) {
|
|
|
+ // 超过上限取上限
|
|
|
+ if (consumeTime > this.parkFee.parkInfoEntity.remainReduceTime) {
|
|
|
+ consumeTime = this.parkFee.parkInfoEntity.remainReduceTime;
|
|
|
+ }
|
|
|
+ // 消费减免费用
|
|
|
+ consumeFee = consumeTime * this.hourMoney;
|
|
|
+ }
|
|
|
+
|
|
|
+ /*************************************************** 沈阳 ***************************************************/
|
|
|
+ if (this.parkMallCode === 4) {
|
|
|
+ // 超过上限取上限
|
|
|
+ if (
|
|
|
+ consumeTime >
|
|
|
+ this.parkFee.parkInfoEntity.maxOneDayHour -
|
|
|
+ this.parkFee.parkInfoEntity.ticketandMemeberGradeAndConsumeUseHour
|
|
|
+ ) {
|
|
|
+ consumeTime =
|
|
|
+ this.parkFee.parkInfoEntity.maxOneDayHour -
|
|
|
+ this.parkFee.parkInfoEntity.ticketandMemeberGradeAndConsumeUseHour;
|
|
|
+ }
|
|
|
+ // 消费减免费用
|
|
|
+ consumeFee = consumeTime * this.hourMoney;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 实时显示
|
|
|
+ this.checkedTotal++;
|
|
|
+ this.discountTotal = {
|
|
|
+ memberGradeFee: 0,
|
|
|
+ consumeFee: consumeFee,
|
|
|
+ useConsumeFee:
|
|
|
+ this.parkFee.parkConsumeReducesEntityList[0].consumerLimit,
|
|
|
+ time: consumeTime,
|
|
|
+ fee: consumeFee,
|
|
|
+ };
|
|
|
+
|
|
|
+ // 存入缓存(用于子页面停车优惠画面显示)
|
|
|
+ uni.setStorageSync('checkedList', ['reduces']);
|
|
|
+ uni.setStorageSync('checkedTotal', this.checkedTotal);
|
|
|
+ uni.setStorageSync('discountTotal', this.discountTotal);
|
|
|
+ },
|
|
|
+
|
|
|
+ // 自动选取会员等级减免
|
|
|
+ autoMember() {
|
|
|
+ // 支付金额0 则无需后续减免
|
|
|
+ if (!this.actualFee) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ const memberGradeTime =
|
|
|
+ +this.parkFee.parkMemberOrderReducesEntityList[0].reduceContent || 0; // 会员等级减免时长
|
|
|
+ const memberGradeFee = memberGradeTime * this.hourMoney; // 会员等级减免费用
|
|
|
+
|
|
|
+ // 浦东每次超限
|
|
|
+ if (this.parkMallCode === 1) {
|
|
|
+ // 超出每次减免上限 则无需后续
|
|
|
+ if (this.discountTotalFee >= this.maxonetimediscountFee) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 沈阳(会员等级+消费+电子券)、深圳每日超限
|
|
|
+ if (this.parkMallCode === 4 || this.parkMallCode === 5) {
|
|
|
+ // 超出每日减免上限 则无需后续
|
|
|
+ if (this.discountTotalFee >= this.maxonedaydiscountFee) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 实时显示
|
|
|
+ let checkedList = [];
|
|
|
+ if (uni.getStorageSync('discountTotal')) {
|
|
|
+ this.discountTotal.memberGradeFee = memberGradeFee;
|
|
|
+ this.discountTotal.time += memberGradeTime;
|
|
|
+ this.discountTotal.fee += memberGradeFee;
|
|
|
+ checkedList = ['reduces', 'member'];
|
|
|
+ } else {
|
|
|
+ this.discountTotal = {
|
|
|
+ memberGradeFee: memberGradeFee,
|
|
|
+ consumeFee: 0,
|
|
|
+ useConsumeFee: 0,
|
|
|
+ time: memberGradeTime,
|
|
|
+ fee: memberGradeFee,
|
|
|
+ };
|
|
|
+ checkedList = ['member'];
|
|
|
+ }
|
|
|
+ this.checkedTotal++;
|
|
|
+
|
|
|
+ // 存入缓存(用于子页面停车优惠画面显示)
|
|
|
+ uni.setStorageSync('checkedList', checkedList);
|
|
|
+ uni.setStorageSync('checkedTotal', this.checkedTotal);
|
|
|
+ uni.setStorageSync('discountTotal', this.discountTotal);
|
|
|
+ },
|
|
|
+
|
|
|
+ // 自动选取电子券减免
|
|
|
+ autoCoupon(serviceFee) {
|
|
|
+ // 支付金额0 则无需后续减免
|
|
|
+ if (!this.actualFee) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 浦东 超出每次减免上限 则无需后续
|
|
|
+ if (
|
|
|
+ this.parkMallCode === 1 &&
|
|
|
+ this.discountTotalFee >= this.maxonetimediscountFee
|
|
|
+ ) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 沈阳(会员等级+消费+电子券)、深圳 超出每日减免上限 则无需后续
|
|
|
+ if (
|
|
|
+ (this.parkMallCode === 4 || this.parkMallCode === 5) &&
|
|
|
+ this.discountTotalFee >= this.maxonedaydiscountFee
|
|
|
+ ) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 杭州 超出电子券使用数量上限 则无需后续
|
|
|
+ if (
|
|
|
+ this.parkMallCode === 2 &&
|
|
|
+ this.parkFee.parkInfoEntity.useTicketNum ===
|
|
|
+ this.parkFee.parkInfoEntity.couponcodeNum
|
|
|
+ ) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ const checkedCouponList = []; // 所选电子券
|
|
|
+ let couponList = this.parkFee.memberTicketList; // 所有电子券
|
|
|
+ let couponFee = 0;
|
|
|
+ let couponCode = '';
|
|
|
+
|
|
|
+ // 电子券价值统一转换金额方便后续排序 type 1: 金额 2: 时长
|
|
|
+ couponList.forEach((e) => {
|
|
|
+ e.disabled = true;
|
|
|
+ e.checked = false;
|
|
|
+ if (e.carType == '2') {
|
|
|
+ e.value = e.parktime * this.hourMoney;
|
|
|
+ } else if (e.carType == '1') {
|
|
|
+ e.value = e.ticketValue;
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // 电子券按叠加规则分组
|
|
|
+ const couponListRule1 = couponList.filter(
|
|
|
+ (e) => e.superpositionrule == '1'
|
|
|
+ ); // 不可叠加
|
|
|
+ const couponListRule2 = couponList.filter(
|
|
|
+ (e) => e.superpositionrule == '2'
|
|
|
+ ); // 同类型可叠加
|
|
|
+
|
|
|
+ // 电子券按价值排序
|
|
|
+ if (couponListRule1 && couponListRule1.length > 1) {
|
|
|
+ couponListRule1.sort(compare('value'));
|
|
|
+ }
|
|
|
+ if (couponListRule2 && couponListRule2.length > 1) {
|
|
|
+ couponListRule2.sort(compare('value'));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 排序后的全部电子券
|
|
|
+ couponList = [...couponListRule1, ...couponListRule2];
|
|
|
+
|
|
|
+ // 如果不可叠加电子券价值大于可叠加总和则使用不可叠加电子券
|
|
|
+ let couponListRule1Max = 0;
|
|
|
+ if (couponListRule1 && couponListRule1.length) {
|
|
|
+ couponListRule1Max = couponListRule1[couponListRule1.length - 1].value;
|
|
|
+ }
|
|
|
+ let couponListRule2Sum = 0;
|
|
|
+ if (couponListRule2 && couponListRule2.length) {
|
|
|
+ couponListRule2.forEach((e) => {
|
|
|
+ couponListRule2Sum += e.value;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ let isCheckedRule1 = false;
|
|
|
+ if (
|
|
|
+ couponListRule1Max >= couponListRule2Sum &&
|
|
|
+ couponListRule2Sum < serviceFee - this.discountTotalFee
|
|
|
+ ) {
|
|
|
+ isCheckedRule1 = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 使用不可叠加电子券
|
|
|
+ if (isCheckedRule1 && couponListRule1 && couponListRule1.length) {
|
|
|
+ for (let i = 0; i < couponListRule1.length; i++) {
|
|
|
+ const coupon = couponListRule1[i];
|
|
|
+ const checkedIndex = couponList.findIndex(
|
|
|
+ (e) => e.couponCode === coupon.couponCode
|
|
|
+ );
|
|
|
+
|
|
|
+ // 浦东每次上限处理
|
|
|
+ if (this.parkMallCode === 1) {
|
|
|
+ if (
|
|
|
+ this.discountTotalFee + coupon.value >
|
|
|
+ this.maxonetimediscountFee
|
|
|
+ ) {
|
|
|
+ couponList[checkedIndex - 1].checked = true;
|
|
|
+ couponList[checkedIndex - 1].disabled = false;
|
|
|
+ checkedCouponList.push(checkedIndex - 1);
|
|
|
+ couponFee += coupon.value;
|
|
|
+ couponCode += coupon.couponCode + '#';
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 沈阳(会员等级+消费+电子券)、深圳 超出每日减免上限处理
|
|
|
+ if (this.parkMallCode === 4 || this.parkMallCode === 5) {
|
|
|
+ if (
|
|
|
+ this.discountTotalFee + coupon.value >
|
|
|
+ this.maxonedaydiscountFee
|
|
|
+ ) {
|
|
|
+ couponList[checkedIndex - 1].checked = true;
|
|
|
+ couponList[checkedIndex - 1].disabled = false;
|
|
|
+ checkedCouponList.push(checkedIndex - 1);
|
|
|
+ couponFee += coupon.value;
|
|
|
+ couponCode += coupon.couponCode + '#';
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 若当前减免已经使费用减免为0则跳出循环
|
|
|
+ if (coupon.value >= serviceFee - this.discountTotalFee) {
|
|
|
+ couponList[checkedIndex].checked = true;
|
|
|
+ couponList[checkedIndex].disabled = false;
|
|
|
+ checkedCouponList.push(checkedIndex);
|
|
|
+ couponFee += coupon.value;
|
|
|
+ couponCode += coupon.couponCode + '#';
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 循环到最后一张券
|
|
|
+ if (i === couponListRule1.length - 1) {
|
|
|
+ couponList[checkedIndex].checked = true;
|
|
|
+ couponList[checkedIndex].disabled = false;
|
|
|
+ checkedCouponList.push(checkedIndex);
|
|
|
+ couponFee += coupon.value;
|
|
|
+ couponCode += coupon.couponCode + '#';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 未使用规则1的电子券则继续
|
|
|
+ if (!isCheckedRule1 && couponListRule2 && couponListRule2.length) {
|
|
|
+ // 使用同类型可叠加电子券
|
|
|
+ let sum = 0; // 电子券价值累加
|
|
|
+ for (const coupon of couponListRule2) {
|
|
|
+ sum += coupon.value;
|
|
|
+ // 浦东每次上限处理
|
|
|
+ if (
|
|
|
+ this.parkMallCode === 1 &&
|
|
|
+ this.discountTotalFee + sum > this.maxonetimediscountFee
|
|
|
+ ) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ // 沈阳(会员等级+消费+电子券)、深圳每日上限处理
|
|
|
+ if (
|
|
|
+ (this.parkMallCode === 4 || this.parkMallCode === 5) &&
|
|
|
+ this.discountTotalFee + sum > this.maxonedaydiscountFee
|
|
|
+ ) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ const checkedIndex = couponList.findIndex(
|
|
|
+ (e) => e.couponCode === coupon.couponCode
|
|
|
+ );
|
|
|
+ couponList[checkedIndex].checked = true;
|
|
|
+ couponList[checkedIndex].disabled = false;
|
|
|
+ checkedCouponList.push(checkedIndex);
|
|
|
+ couponFee = sum;
|
|
|
+ couponCode += coupon.couponCode + '#';
|
|
|
+
|
|
|
+ // 杭州电子券使用数量上限处理
|
|
|
+ if (
|
|
|
+ this.parkMallCode === 2 &&
|
|
|
+ checkedCouponList.length ===
|
|
|
+ this.parkFee.parkInfoEntity.useTicketNum -
|
|
|
+ this.parkFee.parkInfoEntity.couponcodeNum
|
|
|
+ ) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 若当前减免已经使费用减免为0则跳出循环
|
|
|
+ if (sum >= serviceFee - this.discountTotalFee) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 实时显示
|
|
|
+ if (couponCode.lastIndexOf('#') === couponCode.length - 1) {
|
|
|
+ couponCode = couponCode.slice(0, couponCode.length - 1);
|
|
|
+ }
|
|
|
+ this.couponInfo = {
|
|
|
+ couponfee: couponFee,
|
|
|
+ couponcode: couponCode,
|
|
|
+ };
|
|
|
+ this.checkedCouponCount = checkedCouponList.length;
|
|
|
+
|
|
|
+ // 存入缓存(用于子页面停车优惠画面显示)
|
|
|
+ uni.setStorageSync('checkedCouponList', checkedCouponList);
|
|
|
+ uni.setStorageSync('list', couponList);
|
|
|
+ uni.setStorageSync('couponInfo', this.couponInfo);
|
|
|
+ },
|
|
|
+
|
|
|
+ // 自动选取积分减免
|
|
|
+ autoBonus(serviceFee) {
|
|
|
+ // 支付金额0 则无需后续减免
|
|
|
+ if (!this.actualFee) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 浦东 超出每次减免上限 则无需后续
|
|
|
+ if (
|
|
|
+ this.parkMallCode === 1 &&
|
|
|
+ this.discountTotalFee >= this.maxonetimediscountFee
|
|
|
+ ) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 深圳积分特殊处理(金额计算) 其它停车场小时计算
|
|
|
+ if (this.parkMallCode === 5) {
|
|
|
+ if (this.discountTotalFee >= this.maxonedaydiscountFee) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let bonus = this.bonus;
|
|
|
+ // 剩余可减免金额
|
|
|
+ const remainDiscountFee =
|
|
|
+ this.maxonedaydiscountFee - this.discountTotalFee;
|
|
|
+ // 剩余停车金额
|
|
|
+ let remainFee = serviceFee - this.discountTotalFee;
|
|
|
+ if (remainFee > remainDiscountFee) {
|
|
|
+ remainFee = remainDiscountFee;
|
|
|
+ }
|
|
|
+ let bonusAll = (remainFee * this.integral) / this.integralToValue; // 全部减免所需积分
|
|
|
+ if (bonusAll < this.integral) {
|
|
|
+ bonusAll = this.integral;
|
|
|
+ }
|
|
|
+ // 取余
|
|
|
+ const remainBonus = bonusAll % this.integral;
|
|
|
+ const remainMyBonus = this.bonus % this.integral;
|
|
|
+ // 如果有余数 做倍数处理
|
|
|
+ if (remainBonus) {
|
|
|
+ bonusAll = bonusAll - remainBonus + this.integral;
|
|
|
+ }
|
|
|
+ if (remainMyBonus) {
|
|
|
+ bonus = this.bonus - remainMyBonus;
|
|
|
+ }
|
|
|
+ if (bonus <= bonusAll) {
|
|
|
+ // 积分可兑换多少金额 小数向下取整
|
|
|
+ this.duration = Math.floor(
|
|
|
+ (bonus * this.integralToValue) / this.integral
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ this.duration = (bonusAll * this.integralToValue) / this.integral;
|
|
|
+ }
|
|
|
+ if (this.duration > this.integralMaxMoney) {
|
|
|
+ this.duration = this.integralMaxMoney;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 剩余停车时长(有小数情况因此向上取整)
|
|
|
+ const serviceTime = Math.ceil(
|
|
|
+ (serviceFee - this.discountTotalFee) / this.hourMoney
|
|
|
+ );
|
|
|
+ // if (this.parkFee.discountKind === 6) {
|
|
|
+ // const newMemberBonusAll = serviceTime * this.integralNew; // 全部新会员积分减免所需积分
|
|
|
+ // if (this.bonus <= newMemberBonusAll) {
|
|
|
+ // // 积分不够兑换整小时 向下取整
|
|
|
+ // this.durationNew = Math.floor(this.bonus / this.integralNew);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ const bonusAll = serviceTime * this.integral; // 全部减免所需积分
|
|
|
+ // console.log('this.bonusAll::::::::::', this.bonusAll, this.bonus)
|
|
|
+ if (this.bonus <= bonusAll) {
|
|
|
+ // 积分不够兑换整小时 向下取整
|
|
|
+ // console.log('1111111this.duration::::::::::', this.duration,)
|
|
|
+ this.duration = Math.floor(this.bonus / this.integral);
|
|
|
+ // console.log('this.duration::::::::::', this.duration, )
|
|
|
+ } else {
|
|
|
+ this.duration = serviceTime;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 浦东每次减免上限处理
|
|
|
+ if (this.parkMallCode === 1) {
|
|
|
+ const bonusMax = Math.floor(
|
|
|
+ (this.maxonetimediscountFee - this.discountTotalFee) / this.hourMoney
|
|
|
+ );
|
|
|
+ if (this.duration > bonusMax) {
|
|
|
+ this.duration = bonusMax;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 北京积分减免每日上限处理
|
|
|
+ if (this.parkMallCode === 3) {
|
|
|
+ const bonusMax =
|
|
|
+ this.parkFee.parkInfoEntity.integralMaxHour -
|
|
|
+ this.parkFee.parkInfoEntity.integralUseHour || 0;
|
|
|
+ if (this.duration > bonusMax) {
|
|
|
+ this.duration = bonusMax;
|
|
|
+ // console.log('this.duration::', this.duration)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 深圳特殊处理(单位:金额)
|
|
|
+ if (this.parkMallCode === 5) {
|
|
|
+ this.bonus -= (this.duration * this.integral) / this.integralToValue;
|
|
|
+ this.bonusfee = this.duration;
|
|
|
+ } else {
|
|
|
+ this.bonus -= this.duration * this.integral;
|
|
|
+
|
|
|
+ this.bonusfee = this.duration * this.hourMoney;
|
|
|
+ }
|
|
|
+ this.durationCopy = this.duration;
|
|
|
+ this.bonusCopy = this.bonus;
|
|
|
+ },
|
|
|
+ //北京新会员自动选取积分减免
|
|
|
+ newMemberautoBonus(serviceFee) {
|
|
|
+ const serviceTime = Math.ceil(
|
|
|
+ (serviceFee - this.discountTotalFee) / this.hourMoney
|
|
|
+ );
|
|
|
+ const bonusAll = serviceTime * this.integralNew; // 全部减免所需积分
|
|
|
+ if (this.bonus <= bonusAll) {
|
|
|
+ // 积分不够兑换整小时 向下取整
|
|
|
+ this.durationNew = Math.floor(this.bonus / this.integralNew);
|
|
|
+ } else {
|
|
|
+ this.durationNew = serviceTime;
|
|
|
+ }
|
|
|
+
|
|
|
+ const bonusMaxNew =
|
|
|
+ this.parkFee.parkIntegraltomoneyList[1].integralMaxHour -
|
|
|
+ this.parkFee.parkIntegraltomoneyList[1].integralUseHour || 0;
|
|
|
+ if (this.durationNew > bonusMaxNew) {
|
|
|
+ this.durationNew = bonusMaxNew;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.bonus -= this.integralNew * this.durationNew;
|
|
|
+ this.durationCopy2 = this.durationNew;
|
|
|
+ this.newBonusfee = this.durationNew * this.hourMoney;
|
|
|
+ this.bonusCopy = this.bonus;
|
|
|
+ },
|
|
|
+ // 节流函数
|
|
|
+ throttle(fc, waitTime = 1500, imme = true) {
|
|
|
+ if (imme) {
|
|
|
+ if (!this.flag) {
|
|
|
+ this.flag = true;
|
|
|
+ typeof fc === 'function' && fc();
|
|
|
+ this.timer = setTimeout(() => {
|
|
|
+ this.flag = false;
|
|
|
+ }, waitTime);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (!this.flag) {
|
|
|
+ this.flag = true;
|
|
|
+ this.timer = setTimeout(() => {
|
|
|
+ this.flag = false;
|
|
|
+ typeof fc === 'function' && fc();
|
|
|
+ }, waitTime);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 支付前
|
|
|
+ toPay() {
|
|
|
+ this.throttle(() => {
|
|
|
+ // 北京特殊处理
|
|
|
+ if (this.parkMallCode === 3 && this.discountTotalFee) {
|
|
|
+ return uni.showModal({
|
|
|
+ title: '提示',
|
|
|
+ content: '请确认是否使用优惠,确认后无法返还!',
|
|
|
+ success: (res) => {
|
|
|
+ if (res.confirm) {
|
|
|
+ this.goPay();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ });
|
|
|
+ }
|
|
|
+ this.goPay();
|
|
|
+ }, 3000);
|
|
|
+ },
|
|
|
+
|
|
|
+ // 支付
|
|
|
+ goPay() {
|
|
|
+ if (
|
|
|
+ !this.parkInfo.servicefee ||
|
|
|
+ (app.globalData.member && !this.parkFee.parkInfoEntity)
|
|
|
+ ) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ uni.showLoading({
|
|
|
+ title: '加载中',
|
|
|
+ });
|
|
|
+ let bonus = this.duration * this.integral;
|
|
|
+ let newMemberBonus = this.durationNew * this.integralNew;
|
|
|
+ // 深圳特殊处理(单位:金额)
|
|
|
+ if (this.parkMallCode === 5) {
|
|
|
+ bonus = (this.duration * this.integral) / this.integralToValue;
|
|
|
+ }
|
|
|
+
|
|
|
+ const openId = MemberCacheTool.getOpenId(app);
|
|
|
+ // 埋点-点击 提交支付
|
|
|
+ // console.log(this.parkingTrack, '数据埋点')
|
|
|
+
|
|
|
+ const params = {
|
|
|
+ carno: this.parkInfo.carno,
|
|
|
+ mallid: app.globalData.mallid,
|
|
|
+ groupId: app.globalData.groupId,
|
|
|
+ openId: openId,
|
|
|
+ vipcode:
|
|
|
+ app.globalData.member?.vipcode ||
|
|
|
+ uni.getStorageSync('member')?.vipcode,
|
|
|
+ createuser: 'sys_miniprogram',
|
|
|
+ orderno: this.parkInfo.orderno,
|
|
|
+ bonusfee: this.bonusfee * 100,
|
|
|
+ newMemeberBonusFee: this.newBonusfee * 100 || 0,
|
|
|
+ bonus: bonus,
|
|
|
+ couponfee: this.couponInfo.couponfee * 100 || 0,
|
|
|
+ couponfeeMin: (this.couponInfo.couponfee / this.hourMoney) * 60 || 0,
|
|
|
+ couponcode: this.couponInfo.couponcode,
|
|
|
+ paperCoupons: JSON.stringify(this.paperCouponInfo.paperCouponList), // 纸质优惠券券码 多个以#分割
|
|
|
+ paperCouponCode: this.paperCouponInfo.paperCouponcode, // 纸质优惠券券码 多个以#分割
|
|
|
+ paperCouponFee: this.paperCouponInfo.paperDiscountFee * 100 || 0, // 纸质优惠券优惠金额,单位:分
|
|
|
+ paperCouponFeeMin:
|
|
|
+ parseInt(this.paperCouponInfo.paperDiscountTime * 60) || 0, // 纸质优惠券优惠时长,单位:分钟
|
|
|
+ bonusFeeMin: this.duration * 60, // 积分抵扣时长,单位:分钟
|
|
|
+ newMemberBonusMin: this.durationNew * 60, // 新会员积分抵扣时间, 单位:分钟
|
|
|
+ consumeFeeMin:
|
|
|
+ (this.discountTotal.consumeFee / this.hourMoney) * 60 || 0, // 消费减免时长,单位:分钟
|
|
|
+ firstParkFeeMin:
|
|
|
+ (this.discountTotal.firstParkFee / this.hourMoney) * 60 || 0, // 首停减免时长 单位 分钟
|
|
|
+ memberGradeFeeMin:
|
|
|
+ (this.discountTotal.memberGradeFee / this.hourMoney) * 60 || 0, // 会员等级减免时长,单位:分钟
|
|
|
+ consumeFee: this.discountTotal.consumeFee * 100 || 0,
|
|
|
+ consumeFeeHour: this.discountTotal.consumeFee / this.hourMoney || 0,
|
|
|
+ useConsumeFee:
|
|
|
+ this.parkMallCode === 3 ? '0.0' : this.discountTotal.useConsumeFee,
|
|
|
+ memberGradeFee: this.discountTotal.memberGradeFee * 100 || 0,
|
|
|
+ memberGradeFeeHour:
|
|
|
+ this.discountTotal.memberGradeFee / this.hourMoney || 0,
|
|
|
+ firstParkFee: this.discountTotal.firstParkFee * 100 || 0,
|
|
|
+ usetotalfee:
|
|
|
+ ((this.discountTotal.memberGradeFee || 0) +
|
|
|
+ (this.discountTotal.consumeFee || 0) +
|
|
|
+ this.bonusfee +
|
|
|
+ (this.newBonusfee || 0) +
|
|
|
+ (this.couponInfo.couponfee || 0) +
|
|
|
+ (this.paperCouponInfo.paperDiscountFee || 0)) *
|
|
|
+ 100,
|
|
|
+ payfee: parseFloat((this.actualFee * 100).toFixed(2)),
|
|
|
+ // payfee: 1,
|
|
|
+ totalfee:
|
|
|
+ this.discountTotalFee * 100 < this.parkInfo.servicefee
|
|
|
+ ? this.discountTotalFee * 100
|
|
|
+ : this.parkInfo.servicefee,
|
|
|
+ paytype: this.actualFee > 0 ? 3 : 1,
|
|
|
+ projectId: app.globalData.curMarket.projectId,
|
|
|
+ newMemberBonus: newMemberBonus,
|
|
|
+ };
|
|
|
+ // 北京新会员积分兑换
|
|
|
+ // if (this.parkMallCode === 3 || this.discountKind === 6) {
|
|
|
+ // console.log('params.newMemberBonus::::::', params.newMemberBonus)
|
|
|
+ // params.newMemberBonus = this.newBonusfee * 100
|
|
|
+ // }
|
|
|
+ let url =
|
|
|
+ this.actualFee > 0
|
|
|
+ ? 'api/1.0/park/weixinPay'
|
|
|
+ : 'api/1.0/park/notWeixinPay';
|
|
|
+ // 北京特殊处理
|
|
|
+ if (this.parkMallCode === 3) {
|
|
|
+ url = 'api/1.0/park/dealParkOrderBj';
|
|
|
+ }
|
|
|
+ this.$md(params);
|
|
|
+ this.$request({
|
|
|
+ url: this.$baseURL + url,
|
|
|
+ // url: 'http://172.21.202.252:8083/xcrm-api/' + url,
|
|
|
+
|
|
|
+ data: params,
|
|
|
+ method: 'POST',
|
|
|
+ header: JSON.parse(uni.getStorageSync('handleUser')),
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ uni.hideLoading();
|
|
|
+ if (res.data.code === 0) {
|
|
|
+ this.parkingTrack.track(100, {
|
|
|
+ order_id: this.parkInfo.orderno,
|
|
|
+ plate_type: 1,
|
|
|
+ plate_num: this.parkInfo.carno,
|
|
|
+ area: this.parkInfo.parkname,
|
|
|
+ parking_duration: this.parkInfo.servicehour * 3600,
|
|
|
+ start_time: this.parkInfo.createDate,
|
|
|
+ total_amount: (this.parkInfo.servicefee / 100).toFixed(2),
|
|
|
+ pay_amount: this.actualFee,
|
|
|
+ // total_point: this.parkInfo.parkname,
|
|
|
+ pay_point: this.integral * this.duration,
|
|
|
+ coupon_type: this.parkInfo.paykind || '',
|
|
|
+ coupon_id: this.parkInfo.couponcode || '',
|
|
|
+ // coupon_name: this.parkInfo.parkname,
|
|
|
+ coupon_value: this.parkInfo.bonusfee || 0,
|
|
|
+ pay_type: this.parkInfo.paytype || '',
|
|
|
+ pay_time: this.parkInfo.createDate || '',
|
|
|
+ });
|
|
|
+ uni.setStorageSync('actualFee', this.actualFee);
|
|
|
+ uni.setStorageSync('bonus', this.bonusfee);
|
|
|
+ // 北京特殊处理
|
|
|
+ if (this.parkMallCode === 3) {
|
|
|
+ if (!res.data.data.syncId) {
|
|
|
+ uni.showToast({
|
|
|
+ title: '缴费成功',
|
|
|
+ icon: 'none',
|
|
|
+ });
|
|
|
+ uni.navigateBack();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // console.log(this.bindflag, 'bindflag')
|
|
|
+ // const accountInfo = uni.getAccountInfoSync();
|
|
|
+ // const { miniProgram: { envVersion }} = accountInfo;
|
|
|
+
|
|
|
+ // if (this.bindflag === 0) {
|
|
|
+ // uni.navigateToMiniProgram({
|
|
|
+ // appId: this.$etcpAppId,
|
|
|
+ // path: this.$etcpAppPath,
|
|
|
+ // extraData: {
|
|
|
+ // params : {
|
|
|
+ // token: res.data.data.token,
|
|
|
+ // syncId: res.data.data.syncId,
|
|
|
+ // payType: 6,
|
|
|
+ // CarNumber: res.data.data.CarNumber,
|
|
|
+ // actionId: 1,
|
|
|
+ // payAcType: 2
|
|
|
+ // }
|
|
|
+ // },
|
|
|
+ // envVersion: 'release',
|
|
|
+ // success: res => {
|
|
|
+ // console.log(res);
|
|
|
+ // uni.navigateBack();
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ // } else if (this.bindflag === 1) {
|
|
|
+ // uni.navigateToMiniProgram({
|
|
|
+ // appId: this.$etcpAppId,
|
|
|
+ // path: this.$etcpAppPath,
|
|
|
+ // extraData: {
|
|
|
+ // params : {
|
|
|
+ // token: res.data.data.token,
|
|
|
+ // syncId: res.data.data.syncId,
|
|
|
+ // payType: 6,
|
|
|
+ // CarNumber: res.data.data.CarNumber,
|
|
|
+ // actionId: 1
|
|
|
+ // }
|
|
|
+ // },
|
|
|
+ // envVersion: 'release',
|
|
|
+ // success: res => {
|
|
|
+ // console.log(res);
|
|
|
+ // uni.navigateBack();
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ // }
|
|
|
+ if (this.bindflag === 0) {
|
|
|
+ uni.navigateToMiniProgram({
|
|
|
+ appId: this.$etcpAppId,
|
|
|
+ path: this.$etcpAppPath,
|
|
|
+ extraData: {
|
|
|
+ params: {
|
|
|
+ token: res.data.data.token,
|
|
|
+ syncId: res.data.data.syncId,
|
|
|
+ payType: 6,
|
|
|
+ CarNumber: res.data.data.CarNumber,
|
|
|
+ actionId: 1,
|
|
|
+ payAcType: 2,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ // envVersion: 'trial',
|
|
|
+ envVersion: this.$etcpEnv_Version,
|
|
|
+ success: (res) => {
|
|
|
+ console.log(res);
|
|
|
+ uni.navigateBack();
|
|
|
+ },
|
|
|
+ });
|
|
|
+ } else if (this.bindflag === 1) {
|
|
|
+ uni.navigateToMiniProgram({
|
|
|
+ appId: this.$etcpAppId,
|
|
|
+ path: this.$etcpAppPath,
|
|
|
+ extraData: {
|
|
|
+ params: {
|
|
|
+ token: res.data.data.token,
|
|
|
+ syncId: res.data.data.syncId,
|
|
|
+ payType: 6,
|
|
|
+ CarNumber: res.data.data.CarNumber,
|
|
|
+ actionId: 1,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ // envVersion: 'trial',
|
|
|
+ envVersion: this.$etcpEnv_Version,
|
|
|
+ success: (res) => {
|
|
|
+ uni.navigateBack();
|
|
|
+ },
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (this.actualFee > 0) {
|
|
|
+ this.kerryPayment(res.data.data, params);
|
|
|
+ } else {
|
|
|
+ uni.redirectTo({
|
|
|
+ url: './parkingFeeSuccess?carno=' + this.parkInfo.carno,
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ uni.showModal({
|
|
|
+ showCancel: false,
|
|
|
+ title: '提示',
|
|
|
+ content: res.data.msg,
|
|
|
+ complete: (r) => {
|
|
|
+ // uni.navigateBack({})
|
|
|
+ this.createParkOrder();
|
|
|
+ },
|
|
|
+ });
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ console.log(err);
|
|
|
+ uni.hideLoading();
|
|
|
+ uni.showToast({
|
|
|
+ title: JSON.stringify(err),
|
|
|
+ icon: 'none',
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 嘉里第三方支付接口
|
|
|
+ kerryPayment(session, payParams) {
|
|
|
+ const openId = MemberCacheTool.getOpenId(app);
|
|
|
+ const appId = uni.getAccountInfoSync().miniProgram.appId;
|
|
|
+ const params = {
|
|
|
+ region: 'cn',
|
|
|
+ payChannel: 'MINI_PROGRAM',
|
|
|
+ payOption: 'WECHATPAY',
|
|
|
+ appId: appId,
|
|
|
+ openId: openId,
|
|
|
+ };
|
|
|
+ this.$md(params);
|
|
|
+ let url =
|
|
|
+ this.$kipPaymentUrl + '/services/session/' + session + '/transactions';
|
|
|
+ this.$request({
|
|
|
+ url: url,
|
|
|
+ data: params,
|
|
|
+ method: 'POST',
|
|
|
+ header: JSON.parse(uni.getStorageSync('handleUser')),
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ if (res.data?.code == '000000') {
|
|
|
+ const prepayJson = res.data.data.params;
|
|
|
+ // 微信支付接口
|
|
|
+ uni.requestPayment({
|
|
|
+ provider: 'wxpay',
|
|
|
+ timeStamp: prepayJson.timeStamp,
|
|
|
+ nonceStr: prepayJson.nonceStr,
|
|
|
+ package: prepayJson.package,
|
|
|
+ signType: prepayJson.signType,
|
|
|
+ paySign: prepayJson.paySign,
|
|
|
+ success: () => {
|
|
|
+ uni.showModal({
|
|
|
+ showCancel: false,
|
|
|
+ title: '提示',
|
|
|
+ content: '支付成功',
|
|
|
+ complete: () => {
|
|
|
+ uni.redirectTo({
|
|
|
+ url: './parkingFeeSuccess?carno=' + this.parkInfo.carno,
|
|
|
+ });
|
|
|
+ },
|
|
|
+ });
|
|
|
+ },
|
|
|
+ fail: () => {
|
|
|
+ this.failedParkOrder();
|
|
|
+ },
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ this.failedParkOrder();
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ console.log(err);
|
|
|
+ this.failedParkOrder();
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ // 支付失败弹框 重新创建订单
|
|
|
+ reCreateParkOrder() {
|
|
|
+ uni.showModal({
|
|
|
+ showCancel: false,
|
|
|
+ title: '提示',
|
|
|
+ content: '支付失败',
|
|
|
+ complete: (r) => {
|
|
|
+ this.createParkOrder();
|
|
|
+ },
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ // 支付失败后返还优惠券
|
|
|
+ failedParkOrder() {
|
|
|
+ const param = {
|
|
|
+ orderno: this.parkInfo.orderno,
|
|
|
+ };
|
|
|
+ this.$md(param);
|
|
|
+ this.$request({
|
|
|
+ url: this.$baseURL + 'api/1.0/park/failedParkOrder',
|
|
|
+ data: param,
|
|
|
+ method: 'POST',
|
|
|
+ header: JSON.parse(uni.getStorageSync('handleUser')),
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ this.reCreateParkOrder();
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ this.reCreateParkOrder();
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ //缴费说明隐藏显示
|
|
|
+ togglePayinstruction() {
|
|
|
+ this.isShow = !this.isShow;
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="less" scoped>
|
|
|
+@import '../../styles/common.less';
|
|
|
+.scroll-Y {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ height: 100vh;
|
|
|
+ background: #f2f2f2;
|
|
|
+ padding-bottom: 20rpx;
|
|
|
+}
|
|
|
+
|
|
|
+.wrap {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ width: 100%;
|
|
|
+
|
|
|
+ .parkingFee {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+
|
|
|
+ .parkingFee-top {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ background: #c69c6d;
|
|
|
+
|
|
|
+ .top_content {
|
|
|
+ padding: 35rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+
|
|
|
+ text {
|
|
|
+ font-size: 24rpx;
|
|
|
+ color: #fff;
|
|
|
+ text-align: left;
|
|
|
+ }
|
|
|
+
|
|
|
+ .title_box {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ margin-bottom: 30rpx;
|
|
|
+
|
|
|
+ .btn {
|
|
|
+ padding: 8rpx 14rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+ color: #c69c6d;
|
|
|
+ background: #fff;
|
|
|
+ border-radius: 20rpx;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .top_menu {
|
|
|
+ background: #fff;
|
|
|
+ padding: 30rpx 0;
|
|
|
+ box-sizing: border-box;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ border-radius: 15rpx 15rpx 0 0;
|
|
|
+
|
|
|
+ .menu_item {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ align-items: center;
|
|
|
+ width: 33.3%;
|
|
|
+
|
|
|
+ image {
|
|
|
+ width: 102rpx;
|
|
|
+ height: 102rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ text {
|
|
|
+ font-size: 24rpx;
|
|
|
+ margin-top: 24rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .parkingFee-bottom {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ padding: 14rpx 25rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+
|
|
|
+ // 车牌号查询
|
|
|
+ .parkingFee-search {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ background: #fff;
|
|
|
+ border-radius: 24rpx;
|
|
|
+ padding: 26rpx 25rpx 20rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+
|
|
|
+ .search_tip {
|
|
|
+ color: #999;
|
|
|
+ font-size: 24rpx;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+
|
|
|
+ .searchPrice {
|
|
|
+ margin: 0 auto;
|
|
|
+ width: 40%;
|
|
|
+ height: 60rpx;
|
|
|
+ line-height: 60rpx;
|
|
|
+ border-radius: 20rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .search-list {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ background: #fff;
|
|
|
+ padding: 0 30rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+ margin-top: 20rpx;
|
|
|
+ border-radius: 24rpx;
|
|
|
+ width: 100%;
|
|
|
+
|
|
|
+ .list_item {
|
|
|
+ padding: 38rpx 0;
|
|
|
+ box-sizing: border-box;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ border-bottom: 1px solid #f2f2f2;
|
|
|
+
|
|
|
+ text {
|
|
|
+ font-size: 28rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ button {
|
|
|
+ height: 60rpx;
|
|
|
+ line-height: 60rpx;
|
|
|
+ margin: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 缴费说明
|
|
|
+.payInstruct_wrap {
|
|
|
+ width: 300px;
|
|
|
+ margin: 0 auto;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ background: #fff;
|
|
|
+ border-radius: 20rpx;
|
|
|
+
|
|
|
+ .scroll {
|
|
|
+ height: 600rpx;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ padding: 20rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+
|
|
|
+ .payInstruct_title {
|
|
|
+ font-size: 30rpx;
|
|
|
+ text-align: center;
|
|
|
+ padding: 20rpx 0;
|
|
|
+ box-sizing: border-box;
|
|
|
+ border-bottom: 1px solid #f2f2f2;
|
|
|
+ }
|
|
|
+
|
|
|
+ .payInstruct_con {
|
|
|
+ display: flex;
|
|
|
+ width: 100%;
|
|
|
+ padding: 20rpx 10rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+
|
|
|
+ text {
|
|
|
+ font-size: 28rpx;
|
|
|
+ color: #999;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 车牌号 & 虚拟键盘
|
|
|
+.input-box {
|
|
|
+ width: 100%;
|
|
|
+ height: 70rpx;
|
|
|
+ margin: auto;
|
|
|
+ background: rgba(255, 255, 255, 1);
|
|
|
+ box-shadow: 0px 6px 8px 0px rgba(96, 100, 112, 0.1);
|
|
|
+ border-radius: 0.4rem;
|
|
|
+ margin: 1rem auto;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+
|
|
|
+ .li {
|
|
|
+ flex: 1;
|
|
|
+ border: 1px solid rgba(206, 208, 210, 1);
|
|
|
+ box-sizing: border-box;
|
|
|
+ margin: 0 2px;
|
|
|
+ font-size: 30rpx;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ color: #323233;
|
|
|
+
|
|
|
+ image {
|
|
|
+ width: 80%;
|
|
|
+ height: 100%;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.active {
|
|
|
+ border-color: #3e67ff;
|
|
|
+ }
|
|
|
+
|
|
|
+ &:nth-child(2) {
|
|
|
+ margin-right: 26rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.class-van-button-small {
|
|
|
+ min-width: 0;
|
|
|
+ border-radius: 10rpx;
|
|
|
+ margin: 10rpx 3rpx;
|
|
|
+ box-shadow: 10rpx 10rpx 10rpx #aaa;
|
|
|
+}
|
|
|
+
|
|
|
+.class-plate-box {
|
|
|
+ width: 100%;
|
|
|
+ padding: 24rpx 0;
|
|
|
+ box-sizing: border-box;
|
|
|
+ position: relative;
|
|
|
+}
|
|
|
+
|
|
|
+.plate_number {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+
|
|
|
+ .plate_number_wrap {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ background: #eaf1f9;
|
|
|
+ padding: 0 0 10rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+
|
|
|
+ .close-box {
|
|
|
+ width: 100%;
|
|
|
+ font-size: 24rpx;
|
|
|
+ color: #3e67ff;
|
|
|
+ text-align: right;
|
|
|
+ margin-right: 1.25rem;
|
|
|
+
|
|
|
+ view {
|
|
|
+ padding: 10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .plate_chinese_box {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ justify-content: center;
|
|
|
+
|
|
|
+ button {
|
|
|
+ width: 9%;
|
|
|
+ height: 2.5rem;
|
|
|
+ line-height: 2.5rem;
|
|
|
+ text-align: center;
|
|
|
+ padding: 0;
|
|
|
+ font-size: 28rpx;
|
|
|
+ .class-van-button-small;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.allBoard {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+
|
|
|
+ .allBoard_wrap {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ background: #eaf1f9;
|
|
|
+ padding: 0 0 10rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+ }
|
|
|
+
|
|
|
+ .close-box {
|
|
|
+ padding-top: 22rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+ font-size: 24rpx;
|
|
|
+ color: #3e67ff;
|
|
|
+ text-align: right;
|
|
|
+ margin-right: 1.25rem;
|
|
|
+ }
|
|
|
+
|
|
|
+ .plate_number_box {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ justify-content: center;
|
|
|
+
|
|
|
+ button {
|
|
|
+ width: 9%;
|
|
|
+ height: 2.5rem;
|
|
|
+ line-height: 2.5rem;
|
|
|
+ text-align: center;
|
|
|
+ padding: 0;
|
|
|
+ font-size: 28rpx;
|
|
|
+ .class-van-button-small;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.vehicleMgt-list {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ margin-bottom: 35rpx;
|
|
|
+
|
|
|
+ .vehicleMgt-title {
|
|
|
+ display: flex;
|
|
|
+ padding: 30rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+ border-bottom: 1px solid #f2f2f2;
|
|
|
+
|
|
|
+ text {
|
|
|
+ font-size: 28rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .vehicleMgt-content {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ background: #fff;
|
|
|
+
|
|
|
+ .item {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ padding: 15rpx 36rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+ border-bottom: 1px solid #f2f2f2;
|
|
|
+
|
|
|
+ text {
|
|
|
+ font-size: 28rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.delBtn {
|
|
|
+ color: #c69c6d;
|
|
|
+ height: 38rpx;
|
|
|
+ line-height: 38rpx;
|
|
|
+ font-size: 20rpx;
|
|
|
+ width: 124rpx;
|
|
|
+ border: 1px solid #c69c6d;
|
|
|
+ border-radius: 19rpx;
|
|
|
+ text-align: center;
|
|
|
+}
|
|
|
+
|
|
|
+.payThe {
|
|
|
+ width: 100%;
|
|
|
+
|
|
|
+ .pay_index {
|
|
|
+ text-align: center;
|
|
|
+ padding: 20rpx 0;
|
|
|
+ font-size: 20px;
|
|
|
+ margin-bottom: 5px;
|
|
|
+ background-color: #fff;
|
|
|
+ font-weight: 600;
|
|
|
+ }
|
|
|
+
|
|
|
+ .pay_title {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ background-color: #fff;
|
|
|
+ border-bottom: 1px solid #eee;
|
|
|
+ padding: 15px 30rpx;
|
|
|
+ .title {
|
|
|
+ font-size: 16px;
|
|
|
+ }
|
|
|
+ .dk_desc {
|
|
|
+ font-size: 12px;
|
|
|
+ color: #999;
|
|
|
+ margin-top: 3px;
|
|
|
+ }
|
|
|
+ .value {
|
|
|
+ font-size: 14px;
|
|
|
+ color: #999;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .payjf {
|
|
|
+ font-size: 12px;
|
|
|
+ color: #999;
|
|
|
+ margin-right: 18rpx;
|
|
|
+ margin-top: 12px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .paySelect {
|
|
|
+ color: rgba(16, 16, 16, 100);
|
|
|
+ font-size: 20rpx;
|
|
|
+ font-family: Arial;
|
|
|
+ border: 1px solid rgba(187, 187, 187, 100);
|
|
|
+ border-radius: 10rpx;
|
|
|
+ margin-left: 80rpx;
|
|
|
+ width: 260rpx;
|
|
|
+ height: 80rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ .paySelect1 {
|
|
|
+ color: rgba(16, 16, 16, 100);
|
|
|
+ font-size: 20rpx;
|
|
|
+ font-family: Arial;
|
|
|
+ border: 1px solid rgba(187, 187, 187, 100);
|
|
|
+ width: 200rpx;
|
|
|
+ height: 50rpx;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ background-color: #f2f2f2;
|
|
|
+ margin-top: 5px;
|
|
|
+
|
|
|
+ .pay-se-l {
|
|
|
+ height: 50rpx;
|
|
|
+ width: 50rpx;
|
|
|
+ line-height: 50rpx;
|
|
|
+ text-align: center;
|
|
|
+ font-size: 50rpx;
|
|
|
+ background-color: #fff;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .payjfzk {
|
|
|
+ font-size: 20rpx;
|
|
|
+ color: #8b8c8b;
|
|
|
+ margin-top: 10rpx;
|
|
|
+ margin-left: 210rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ .pay_time {
|
|
|
+ font-size: 28rpx;
|
|
|
+ margin-left: 180rpx;
|
|
|
+ padding-bottom: 40rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ .pay_time1 {
|
|
|
+ margin-top: 26rpx;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.pay_jiaof {
|
|
|
+ width: 80%;
|
|
|
+ height: 70rpx;
|
|
|
+ line-height: 70rpx;
|
|
|
+ background-color: #c69c6d;
|
|
|
+ text-align: center;
|
|
|
+ color: rgba(255, 255, 255, 100);
|
|
|
+ font-size: 28rpx;
|
|
|
+ font-family: Microsoft Yahei;
|
|
|
+ border-radius: 10rpx;
|
|
|
+ margin: 20rpx auto;
|
|
|
+}
|
|
|
+
|
|
|
+// 停车券弹窗
|
|
|
+.ticketPopup {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ background: #fff;
|
|
|
+ border-radius: 20rpx 20rpx 0 0;
|
|
|
+ z-index: 999;
|
|
|
+
|
|
|
+ .popup-title {
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ padding: 30rpx 42rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+ border-bottom: 1px solid #f2f2f2;
|
|
|
+ position: relative;
|
|
|
+
|
|
|
+ text {
|
|
|
+ color: #999;
|
|
|
+ font-size: 28rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ .useRule-text {
|
|
|
+ position: absolute;
|
|
|
+ right: 42rpx;
|
|
|
+ color: rgb(58, 130, 248);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .popup_scroll {
|
|
|
+ height: 70vh;
|
|
|
+ background: #f2f2f2;
|
|
|
+ }
|
|
|
+
|
|
|
+ .popup_content {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ padding: 10rpx 20rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+
|
|
|
+ .item {
|
|
|
+ display: flex;
|
|
|
+ margin-bottom: 16rpx;
|
|
|
+
|
|
|
+ .item-image {
|
|
|
+ border: 2rpx solid #f2f2f2;
|
|
|
+ border-right: 2rpx dashed #f2f2f2;
|
|
|
+ padding: 16rpx;
|
|
|
+ border-radius: 16rpx 0 0 16rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ background: #fff;
|
|
|
+
|
|
|
+ &.cro {
|
|
|
+ position: relative;
|
|
|
+ }
|
|
|
+
|
|
|
+ .img {
|
|
|
+ width: 130rpx;
|
|
|
+ height: 130rpx;
|
|
|
+ border-radius: 8rpx;
|
|
|
+
|
|
|
+ image {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .item-content {
|
|
|
+ flex: 1;
|
|
|
+ border: 2rpx solid #f2f2f2;
|
|
|
+ border-radius: 0 8rpx 8rpx 0;
|
|
|
+ padding: 16rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+ background: #fff;
|
|
|
+ display: flex;
|
|
|
+ position: relative;
|
|
|
+
|
|
|
+ &.cro_ {
|
|
|
+ position: relative;
|
|
|
+ }
|
|
|
+
|
|
|
+ .content {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: center;
|
|
|
+ flex: 1;
|
|
|
+
|
|
|
+ .h3 {
|
|
|
+ font-size: 28rpx;
|
|
|
+ line-height: 48rpx;
|
|
|
+ font-weight: 600;
|
|
|
+ }
|
|
|
+ .h3.color_disabled {
|
|
|
+ color: #838181;
|
|
|
+ font-weight: 400;
|
|
|
+ }
|
|
|
+
|
|
|
+ .span {
|
|
|
+ font-size: 24rpx;
|
|
|
+ color: #838181;
|
|
|
+ line-height: 40rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .erwm_box {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ align-items: flex-end;
|
|
|
+ justify-content: space-between;
|
|
|
+
|
|
|
+ image {
|
|
|
+ width: 52rpx;
|
|
|
+ height: 52rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ .tag {
|
|
|
+ position: absolute;
|
|
|
+ bottom: 0;
|
|
|
+ right: 0;
|
|
|
+ border-radius: 16rpx;
|
|
|
+ padding: 5rpx 10rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+ background: #f7931e;
|
|
|
+ text-align: center;
|
|
|
+ color: #fff;
|
|
|
+ width: 122rpx;
|
|
|
+ font-size: 24rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 对勾
|
|
|
+ .dot {
|
|
|
+ position: absolute;
|
|
|
+ top: 0;
|
|
|
+ right: 0;
|
|
|
+ width: 2.25rem;
|
|
|
+ height: 2.375rem;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 弹窗按钮
|
|
|
+.popup_button {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ padding: 10rpx 20rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+
|
|
|
+ .desc .num {
|
|
|
+ color: #c69c6d;
|
|
|
+ font-size: 18px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .ok_btn {
|
|
|
+ height: 110rpx;
|
|
|
+ line-height: 110rpx;
|
|
|
+ text-align: center;
|
|
|
+ background: #c69c6d;
|
|
|
+ color: #fff !important;
|
|
|
+ width: 120px;
|
|
|
+ height: 40px;
|
|
|
+ line-height: 40px;
|
|
|
+ border-radius: 40px;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.warp {
|
|
|
+ width: 94%;
|
|
|
+ margin-left: 3%;
|
|
|
+ margin-top: 20rpx;
|
|
|
+ background-color: #fff;
|
|
|
+ border-radius: 10rpx;
|
|
|
+ padding-bottom: 10rpx;
|
|
|
+ .warp_index {
|
|
|
+ width: 650rpx;
|
|
|
+ margin-left: 27.5rpx;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ padding: 20rpx 0;
|
|
|
+ font-size: 28rpx;
|
|
|
+ }
|
|
|
+ .warp_index1 {
|
|
|
+ justify-content: center;
|
|
|
+ font-size: 40rpx;
|
|
|
+ padding: 30rpx 0;
|
|
|
+ border-bottom: 1rpx solid #f2f2f2;
|
|
|
+ }
|
|
|
+ .color_warp_index {
|
|
|
+ color: #000000;
|
|
|
+ }
|
|
|
+ .bgc-blue {
|
|
|
+ .bgc-color('blue');
|
|
|
+ }
|
|
|
+ .bgc-green {
|
|
|
+ .bgc-color('green');
|
|
|
+ }
|
|
|
+ .bgc-color(@value) {
|
|
|
+ @color: 'color-@{value}';
|
|
|
+ color: #fff;
|
|
|
+ background-color: @@color;
|
|
|
+ margin: 0;
|
|
|
+ width: 100%;
|
|
|
+ border-radius: 10rpx 10rpx 0 0;
|
|
|
+ }
|
|
|
+ .warp_index_da {
|
|
|
+ padding: 30rpx 0;
|
|
|
+ border-bottom: 1rpx solid #f2f2f2;
|
|
|
+ }
|
|
|
+ .warp_index_color {
|
|
|
+ color: #999999;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.flewx {
|
|
|
+ width: 100%;
|
|
|
+ height: 130rpx;
|
|
|
+ background-color: #fff;
|
|
|
+ position: fixed;
|
|
|
+ bottom: 0;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-around;
|
|
|
+ // padding-bottom: constant(safe-area-inset-bottom);
|
|
|
+ // padding-bottom: env(safe-area-inset-bottom);
|
|
|
+ padding-bottom: 20rpx;
|
|
|
+ .flewx-content {
|
|
|
+ position: absolute;
|
|
|
+ left: 16px;
|
|
|
+ }
|
|
|
+ .flewx_index3 {
|
|
|
+ width: 150rpx;
|
|
|
+ height: 70rpx;
|
|
|
+ border-radius: 50rpx;
|
|
|
+ text-align: center;
|
|
|
+ font-size: 28rpx;
|
|
|
+ line-height: 70rpx;
|
|
|
+ color: #fff;
|
|
|
+ background-image: linear-gradient(to right, #7e4fa1, #433c7f);
|
|
|
+ box-shadow: 2px 3px 5px #888888;
|
|
|
+ position: absolute;
|
|
|
+ right: 16px;
|
|
|
+ }
|
|
|
+ .blue_flewx_index3 {
|
|
|
+ .color_flewx_index3('blue');
|
|
|
+ }
|
|
|
+ .green_flewx_index3 {
|
|
|
+ .color_flewx_index3('green');
|
|
|
+ }
|
|
|
+ .color_flewx_index3(@value) {
|
|
|
+ @color: 'color-@{value}';
|
|
|
+ background-image: none;
|
|
|
+ background-color: @@color;
|
|
|
+ }
|
|
|
+ .btn-disabled {
|
|
|
+ color: hsla(0, 0%, 100%, 0.6);
|
|
|
+ cursor: not-allowed;
|
|
|
+ background-color: rgb(128, 128, 128);
|
|
|
+ background-image: none;
|
|
|
+ }
|
|
|
+}
|
|
|
+.popue_box {
|
|
|
+ height: 530rpx;
|
|
|
+ background-color: #fff;
|
|
|
+ position: fixed;
|
|
|
+ bottom: 0;
|
|
|
+ left: 0;
|
|
|
+ right: 0;
|
|
|
+ .popue_box_index {
|
|
|
+ width: 92%;
|
|
|
+ margin-left: 4%;
|
|
|
+ font-size: 30rpx;
|
|
|
+ height: 90rpx;
|
|
|
+ border-bottom: 1px solid #f5f5f5;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ }
|
|
|
+ .popue_box_index1 {
|
|
|
+ font-size: 32rpx;
|
|
|
+ width: 92%;
|
|
|
+ margin-left: 4%;
|
|
|
+ font-weight: 700;
|
|
|
+ height: 90rpx;
|
|
|
+ line-height: 90rpx;
|
|
|
+ border-bottom: 1px solid #f5f5f5;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+ .popue_box_index4_xs {
|
|
|
+ width: 250rpx;
|
|
|
+ height: 55rpx;
|
|
|
+ border: 2rpx solid #e5e6ec;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ border-radius: 10rpx;
|
|
|
+ .popue_box_index4_xs_index1 {
|
|
|
+ width: 54rpx;
|
|
|
+ height: 54rpx;
|
|
|
+ background-color: #f5f8fb;
|
|
|
+ text-align: center;
|
|
|
+ line-height: 54rpx;
|
|
|
+ border-right: 1rpx solid #e5e6ec;
|
|
|
+ }
|
|
|
+ .popue_box_index4_xs_index3 {
|
|
|
+ width: 54rpx;
|
|
|
+ height: 54rpx;
|
|
|
+ background-color: #f5f8fb;
|
|
|
+ text-align: center;
|
|
|
+ line-height: 54rpx;
|
|
|
+ border-left: 1rpx solid #e5e6ec;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .popue_box_index5 {
|
|
|
+ font-size: 30rpx;
|
|
|
+ width: 92%;
|
|
|
+ margin-left: 4%;
|
|
|
+ font-weight: 700;
|
|
|
+ height: 140rpx;
|
|
|
+ line-height: 90rpx;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ }
|
|
|
+ .popue_box_index4_by {
|
|
|
+ width: 320rpx;
|
|
|
+ height: 90rpx;
|
|
|
+ line-height: 90rpx;
|
|
|
+ color: #fff;
|
|
|
+ border-radius: 60rpx;
|
|
|
+ text-align: center;
|
|
|
+ color: #7e4fa1;
|
|
|
+ font-weight: 700;
|
|
|
+ border: 1rpx solid #7e4fa1;
|
|
|
+ }
|
|
|
+ .blue_popue_box_index4_by {
|
|
|
+ .color_popue_box_index4_by('blue');
|
|
|
+ }
|
|
|
+ .green_popue_box_index4_by {
|
|
|
+ .color_popue_box_index4_by('green');
|
|
|
+ }
|
|
|
+ .color_popue_box_index4_by(@value) {
|
|
|
+ @color: 'color-@{value}';
|
|
|
+ color: @@color;
|
|
|
+ border: 1rpx solid @@color;
|
|
|
+ }
|
|
|
+ .popue_box_index4_by1 {
|
|
|
+ width: 320rpx;
|
|
|
+ height: 90rpx;
|
|
|
+ line-height: 90rpx;
|
|
|
+ color: #fff;
|
|
|
+ border-radius: 60rpx;
|
|
|
+ text-align: center;
|
|
|
+ background-image: linear-gradient(to right, #7e4fa1, #433c7f);
|
|
|
+ border: 1rpx solid #7e4fa1;
|
|
|
+ }
|
|
|
+ .blue_popue_box_index4_by1 {
|
|
|
+ .color-background-color('blue');
|
|
|
+ }
|
|
|
+ .green_popue_box_index4_by1 {
|
|
|
+ .color-background-color('green');
|
|
|
+ }
|
|
|
+}
|
|
|
+.text-purple {
|
|
|
+ color: #703a98;
|
|
|
+}
|
|
|
+.text-red {
|
|
|
+ color: #ff0000;
|
|
|
+}
|
|
|
+.top_content {
|
|
|
+ padding: 25rpx 35rpx 120rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+
|
|
|
+ text {
|
|
|
+ font-size: 24rpx;
|
|
|
+ color: #898989;
|
|
|
+ text-align: left;
|
|
|
+ }
|
|
|
+
|
|
|
+ .title_box {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ margin-bottom: 20rpx;
|
|
|
+
|
|
|
+ .btn {
|
|
|
+ padding: 0rpx 14rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+ border-radius: 20rpx;
|
|
|
+ font-size: 30rpx;
|
|
|
+ color: #000;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .info {
|
|
|
+ padding-left: 18rpx;
|
|
|
+ font-size: 27rpx;
|
|
|
+ width: 95%;
|
|
|
+ color: #666;
|
|
|
+ line-height: 45rpx;
|
|
|
+ }
|
|
|
+ .is-show {
|
|
|
+ word-break: break-all;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ overflow: hidden;
|
|
|
+ display: -webkit-box;
|
|
|
+ -webkit-line-clamp: 2;
|
|
|
+ -webkit-box-orient: vertical;
|
|
|
+ }
|
|
|
+ .top-down {
|
|
|
+ text-align: center;
|
|
|
+ color: #d6d2d2;
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|