| New file |
| | |
| | | <!-- 扫码支付 --> |
| | | <template> |
| | | <view class="page"> |
| | | <u-alert type="warning" closable description="安全提醒:请谨慎核对商家、订单信息,保护自己资金安全!"></u-alert> |
| | | <view class="pay-box"> |
| | | <view class="u-font-26 color-666">应付金额</view> |
| | | <view class="u-m-t-14"> |
| | | <text class="u-font-36 color-333 u-m-r-8">¥</text> |
| | | <text class="money">{{money.split(".")[0]}}</text> |
| | | <text class="u-font-40">.{{money.split(".")[1]}}</text> |
| | | </view> |
| | | </view> |
| | | |
| | | <view v-if="discountInfo.shopDiscount!=1&&money*(1-discountInfo.shopDiscount)>=0.01" class="bg-fff u-m-h-32 u-m-t-20 u-p-h-32 u-br-10"> |
| | | <view class="u-p-v-32 u-flex u-row-between u-border-bottom u-font-30 color-333"> |
| | | <view>{{discountInfo.memberGradeName}}专属折扣</view> |
| | | <view>-{{ money*(1-discountInfo.shopDiscount).toFixed(2) }}</view> |
| | | </view> |
| | | </view> |
| | | <view v-if="canUseIntegral||canUseCoupon" class="u-p-h-32 bg-fff u-m-h-32 u-br-10"> |
| | | <view class="u-font-28 u-m-t-32">选择优惠方式</view> |
| | | <view v-if="canUseIntegral" class="u-p-v-24 u-border-bottom u-flex u-m-t-10"> |
| | | <image class="item-icon" style="align-self: flex-start;position: relative;top: -3rpx;" src="/static/integral.png" mode=""></image> |
| | | <view class="u-flex-1 u-m-h-16"> |
| | | <view class="u-font-30">积分抵扣</view> |
| | | <view class="u-font-24 color-999 u-m-t-20">可用<text style="color: #D31F28;">{{integral}}</text>积分 |
| | | </view> |
| | | </view> |
| | | <input-number @handleCount="changeInt" :value="canUseInt" :min="0" :max="maxIntegral"> |
| | | </input-number> |
| | | </view> |
| | | <view v-if="canUseCoupon" class="u-flex u-p-v-32"> |
| | | <image class="item-icon" src="/static/coupon-icon.png" mode=""></image> |
| | | <view class="u-font-30 u-flex-1 u-m-h-16">优惠券</view> |
| | | <view @click="showCoupon" class="u-flex"> |
| | | <view v-if="couponInfo.id" class="tag-pain"> |
| | | 满{{parseFloat((couponInfo.thresholdValue/100).toFixed(2))}}元减{{parseFloat((couponInfo.discount/100).toFixed(2))}}元 |
| | | </view> |
| | | <text v-else class="u-font-26">请选择</text> |
| | | <u-icon class="u-m-l-10" name="arrow-right" color="#333" size="13"></u-icon> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="bg-fff u-m-h-32 u-m-t-20 u-p-h-32 u-br-10"> |
| | | <view v-if="discount" class="u-p-v-32 u-flex u-row-between u-border-bottom u-font-30 color-333"> |
| | | <view>实际抵扣</view> |
| | | <view>-{{ discount }}</view> |
| | | </view> |
| | | <view class="u-p-v-32 u-flex u-row-between"> |
| | | <view class="u-font-30 color-333">实付金额</view> |
| | | <view class="color-red"> |
| | | <text class="u-font-26 u-m-r-6">¥</text> |
| | | <text class="u-font-34">{{ price }}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <button class="pay-it" @click="pay">确定支付</button> |
| | | <!-- 优惠券弹窗 --> |
| | | <u-popup mode="bottom" :closeable="true" :show="couponShow" @close="couponShow = false" :round="10"> |
| | | <view class="u-font-32 color-333 u-text-center u-p-t-30">优惠券</view> |
| | | <view v-if="checkCoupon.id" class="choose-coupon"> |
| | | 已选择优惠券1张,共抵扣¥{{parseFloat((checkCoupon.discount/100).toFixed(2))}}</view> |
| | | <!-- <view class="choose-coupon">选择优惠券</view> --> |
| | | <scroll-view scroll-y class="u-p-30 coupon-list"> |
| | | <view @click="clickCoupon(item)" class="u-m-b-24 u-flex coupon" v-for="(item, index) in couponList" :key="index"> |
| | | <view style="color: #D31F28;" class="u-p-h-28"> |
| | | <view class="font-bold"> |
| | | <text class="u-font-36">¥</text> |
| | | <text class="money">{{parseFloat(item.discount/100)}}</text> |
| | | </view> |
| | | <view class="u-font-24 u-m-t-20">满{{parseFloat(item.thresholdValue/100)}}元使用</view> |
| | | </view> |
| | | <view class="butt"></view> |
| | | <view class="u-p-30 u-flex-1 u-flex"> |
| | | <view class="u-flex-1"> |
| | | <view class="u-font-28 color-333 u-line-2">{{item.name}}</view> |
| | | <view class="u-font-22 color-999 u-m-t-20"> |
| | | 有效期至:{{$u.timeFormat(item.outTime, 'yyyy-mm-dd hh:MM')}} |
| | | </view> |
| | | </view> |
| | | <u-icon v-if="item.id==checkCoupon.id" name="checkmark-circle-fill" color="#D31F28" size="20"> |
| | | </u-icon> |
| | | </view> |
| | | |
| | | </view> |
| | | </scroll-view> |
| | | <view @click="getCoupon" class="coupon-btn">确定</view> |
| | | </u-popup> |
| | | <!-- 数字键盘 --> |
| | | <u-popup :show="bordShow" :overlay="false" @close="bordShow = false"> |
| | | <key-bord @changeMoney="changeMoney" :num.sync="money" @close="bordShow = false" @pay="pay"></key-bord> |
| | | </u-popup> |
| | | <!-- 支付验证码 --> |
| | | <u-popup :show="codeShow" closeable mode="center" @close="codeShow = false"> |
| | | <view class="u-p-h-40 u-p-b-40"> |
| | | <view class="u-text-center u-p-t-20 u-m-b-30 u-font-34">请输入手机验证码</view> |
| | | <view class="u-text-center u-m-b-20 color-666">{{ shopInfo.shop_name }}</view> |
| | | <view class="u-flex u-row-center font-bold u-m-b-40"><text class="u-font-42">¥</text><text class="u-font-money">{{ price }}</text> |
| | | </view> |
| | | <u-code-input @finish="bankPay" v-model="smscode" mode="box" :focus="true"></u-code-input> |
| | | </view> |
| | | |
| | | </u-popup> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | ACCESSTOKEN |
| | | } from '@/common/config.js'; |
| | | import { |
| | | queryMyUseSweepPayMaxCoupon, |
| | | queryUseSweepPayCoupon, |
| | | getWechatConfigInfo, |
| | | saveWxOrder, |
| | | tlPay |
| | | } from '@/common/api/index' |
| | | import wx from 'weixin-js-sdk'; // 使用js-sdk |
| | | export default { |
| | | data() { |
| | | return { |
| | | cid: null, |
| | | bordShow: false, // 显示键盘 |
| | | scoreWorth: 0, |
| | | shopInfo: { |
| | | shop_name: '', |
| | | scan_flag: '', |
| | | use_score_flag: 0, //商铺是否可用积分 0否 1是 |
| | | user_coupon_flag: 0, //商铺是否可用优惠券 0否 1是 |
| | | app_pay_use_score_flag: 0, //微信/支付宝是否可用积分 0否 1是 |
| | | app_pay_use_coupon_flag: 0, //微信/支付宝是否可用优惠券 0否 1是 |
| | | bank_pay_use_score_flag: 0, //银行卡支付是否可用积分 0否 1是 |
| | | bank_pay_use_coupon_flag: 0, //银行卡支付是否可用优惠券 0否 1是 |
| | | }, |
| | | money: 0.00, // 金额 |
| | | integral: 0, // 使用积分 |
| | | canUseInt: 0, // 可用积分 |
| | | couponList: [], // 优惠券 |
| | | couponShow: false, // 优惠券弹窗 |
| | | couponInfo: { |
| | | id: '', |
| | | discount: 0, |
| | | thresholdValue: 0 |
| | | }, // 优惠券内容 |
| | | payWay: 3, // 5支付宝 2微信 3银行卡 |
| | | isNew: false, |
| | | codeShow: false, |
| | | smscode: '', |
| | | thpinfo: null, |
| | | canReset: false, |
| | | checkCoupon: { |
| | | id: null, |
| | | discount: 0, |
| | | thresholdValue: 0 |
| | | }, |
| | | discountInfo: { |
| | | memberGradeName: '', |
| | | shopDiscount: 10 |
| | | } |
| | | }; |
| | | }, |
| | | watch: { |
| | | integralDiscount(val) { |
| | | if (this.couponInfo.id && val < this.couponInfo.thresholdValue) { |
| | | this.couponInfo = { |
| | | id: '', |
| | | discount: 0, |
| | | thresholdValue: 0 |
| | | } |
| | | this.checkCoupon = { |
| | | id: '', |
| | | discount: 0, |
| | | thresholdValue: 0 |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | computed: { |
| | | canUseIntegral() { |
| | | if (this.payWay == 3) { //银行卡 |
| | | return this.shopInfo.use_score_flag && this.shopInfo.bank_pay_use_score_flag |
| | | } else { |
| | | return this.shopInfo.use_score_flag && this.shopInfo.app_pay_use_score_flag |
| | | } |
| | | |
| | | }, |
| | | canUseCoupon() { |
| | | if (this.payWay == 3) { //银行卡 |
| | | return this.shopInfo.user_coupon_flag && this.shopInfo.bank_pay_use_coupon_flag |
| | | } else { |
| | | return this.shopInfo.user_coupon_flag && this.shopInfo.app_pay_use_coupon_flag |
| | | } |
| | | }, |
| | | maxIntegral() { |
| | | if (this.couponInfo.id) { |
| | | const num = Math.ceil((this.money * this.discountInfo.shopDiscount - this.couponInfo.thresholdValue / 100) / ( |
| | | this.scoreWorth / 100)) |
| | | if (num < 0) { |
| | | return 0 |
| | | } |
| | | return num |
| | | } else { |
| | | const num = Math.ceil((this.money * this.discountInfo.shopDiscount - this.couponInfo.thresholdValue / 100) / ( |
| | | this.scoreWorth / 100)) |
| | | if (num < 0) { |
| | | return 0 |
| | | } |
| | | return num |
| | | } |
| | | }, |
| | | integralDiscount() { |
| | | let num = 0; |
| | | num = parseInt(parseFloat((this.money * this.discountInfo.shopDiscount * 100).toPrecision(12)) - this.canUseInt * |
| | | this.scoreWorth); |
| | | return num; |
| | | }, |
| | | discount() { |
| | | let num = 0; |
| | | num = ((this.canUseInt * this.scoreWorth + parseFloat(this.couponInfo.discount)) / 100).toFixed(2); |
| | | if (parseFloat(num) > parseFloat(this.money * this.discountInfo.shopDiscount)) { |
| | | return this.money * this.discountInfo.shopDiscount |
| | | } |
| | | return num; |
| | | }, |
| | | price() { |
| | | let num = 0; |
| | | num = parseFloat((this.money * this.discountInfo.shopDiscount * 100).toPrecision(12)) - this.canUseInt * this |
| | | .scoreWorth - this.couponInfo |
| | | .discount; |
| | | num = num > 0 ? (num / 100).toFixed(2) : '0.00'; |
| | | return num; |
| | | } |
| | | }, |
| | | onLoad(opt) { |
| | | this.isNew = uni.getStorageSync('IS_NEW') |
| | | this.cid = uni.getStorageSync('CID') |
| | | this.discountInfo = uni.getStorageSync('DISCOUNT_INFO') || { |
| | | shopDiscount: 1 |
| | | } |
| | | const token = uni.getStorageSync(ACCESSTOKEN) || null |
| | | this.shopInfo = uni.getStorageSync('SHOP_INFO') |
| | | if (opt.scoreWorth) { |
| | | this.scoreWorth = Number(opt.scoreWorth) |
| | | } |
| | | if (opt.integral) { |
| | | this.integral = Number(opt.integral) |
| | | } |
| | | if (opt.money) { |
| | | this.money = parseFloat(opt.money).toFixed(2) |
| | | let ds = parseFloat(this.discountInfo.shopDiscount) |
| | | let dis = this.money * 100 * (1 - ds) |
| | | let money = parseInt((this.money * 100 * ds)) |
| | | if (dis < 1) { |
| | | money = parseInt((this.money * 100)) |
| | | } |
| | | queryMyUseSweepPayMaxCoupon({ |
| | | params: { |
| | | shopId: this.shopInfo.id, |
| | | money: money < 1 ? 1 : money |
| | | } |
| | | }).then(res => { |
| | | if (res && this.canUseCoupon) { |
| | | this.couponInfo = res |
| | | this.checkCoupon = res |
| | | } |
| | | |
| | | }) |
| | | } |
| | | if (opt.payWay) { |
| | | this.payWay = opt.payWay |
| | | } |
| | | if (opt.bankCardId) { |
| | | this.bankCardId = opt.bankCardId |
| | | } |
| | | this.init() |
| | | }, |
| | | methods: { |
| | | // 更新金额 |
| | | changeMoney(str) { |
| | | this.money = str; |
| | | }, |
| | | // 展示键盘 |
| | | showBord() { |
| | | this.bordShow = true; |
| | | }, |
| | | init() { |
| | | uni.showLoading() |
| | | if (this.payWay == 2) { |
| | | const uri = encodeURIComponent(window.location) |
| | | getWechatConfigInfo({ |
| | | url: uri |
| | | }).then(res => { |
| | | uni.hideLoading() |
| | | wx.config({ |
| | | debug: false, // 开启调试模式 |
| | | appId: res.appId, // 必填,公众号的唯一标识 |
| | | timestamp: res.timestamp, // 必填,生成签名的时间戳 |
| | | nonceStr: res.nonceStr, // 必填,生成签名的随机串 |
| | | signature: res.signature, // 必填,签名 |
| | | jsApiList: ['chooseWXPay'], // 必填,需要使用的 JS 接口列表 |
| | | // openTagList: ['wx-open-launch-weapp'] //可选,需要使用的开放标签列表 |
| | | }); |
| | | }).catch(() => { |
| | | uni.hideLoading() |
| | | }) |
| | | } |
| | | }, |
| | | // 更改积分 |
| | | changeInt(num) { |
| | | this.canUseInt = num; |
| | | }, |
| | | pay() { |
| | | this.bordShow = false |
| | | uni.showLoading() |
| | | const params = { |
| | | money: parseFloat((this.money * 100).toPrecision(12)), |
| | | shopId: this.shopInfo.id, |
| | | cid: this.cid, |
| | | payWay: this.payWay, |
| | | score: this.canUseInt, |
| | | couponDetailId: this.couponInfo.id |
| | | } |
| | | if (this.payWay == 3) { |
| | | params.bankCardId = this.bankCardId |
| | | } |
| | | saveWxOrder(params).then(res => { |
| | | uni.hideLoading() |
| | | try { |
| | | this.orderId = res.orderId |
| | | res.youHuiInfo.shopName = this.shopInfo.shop_name |
| | | this.youHuiInfo = res.youHuiInfo |
| | | if (res.isOk == 1) { |
| | | uni.navigateTo({ |
| | | url: `/pages/pay/paySuccess?orderId=${this.orderId}&youHuiInfo=${JSON |
| | | .stringify(this.youHuiInfo)}` |
| | | }) |
| | | } else { |
| | | if (res.toPayMethod == 1) { |
| | | if (this.payWay == 3) { |
| | | this.smscode = '' |
| | | this.codeShow = true |
| | | } |
| | | } else if (res.toPayMethod == 2) { |
| | | if (this.payWay == 2) { |
| | | this.wxPay(res.paymentData) |
| | | } |
| | | if (this.payWay == 5) { |
| | | this.aliPay(res.paymentData) |
| | | } |
| | | } else if (res.toPayMethod == 3) { |
| | | window.location.href = res.paymentUrl |
| | | } |
| | | } |
| | | } catch (e) { |
| | | //TODO handle the exception |
| | | console.error(e); |
| | | } |
| | | |
| | | |
| | | }).catch(() => { |
| | | uni.hideLoading() |
| | | }) |
| | | }, |
| | | // 微信支付 |
| | | wxPay(res) { |
| | | /*setTimeout(() => { |
| | | wx.chooseWXPay({ |
| | | timestamp: res.timeStamp, // 支付签名时间戳 |
| | | nonceStr: res.nonceStr, // 支付签名随机串,不长于 32 位 |
| | | package: res.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*) |
| | | signType: res.signType, // 微信支付V3的传入 RSA ,微信支付V2的传入格式与V2统一下单的签名格式保持一致 |
| | | paySign: res.paySign, // 支付签名 |
| | | success: function(res) { |
| | | // 支付成功后的回调函数 |
| | | uni.navigateTo({ |
| | | url: `/pages/pay/paySuccess?orderId=${this.orderId}&youHuiInfo=${JSON |
| | | .stringify(this.youHuiInfo)}` |
| | | }) |
| | | } |
| | | }); |
| | | }, 200)*/ |
| | | setTimeout(() => { |
| | | WeixinJSBridge.invoke( |
| | | 'getBrandWCPayRequest', { |
| | | "appId": res.appId, //公众号ID,由商户传入 |
| | | "timeStamp": res.timeStamp, //时间戳,自1970年以来的秒数 |
| | | "nonceStr": res.nonceStr, //随机串 |
| | | "package": res.package, |
| | | "signType": res.signType, //微信签名方式: |
| | | "paySign": res.paySign //微信签名 |
| | | }, |
| | | (res) => { |
| | | if (res.err_msg == "get_brand_wcpay_request:ok") { |
| | | // 使用以上方式判断前端返回,微信团队郑重提示: |
| | | //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。 |
| | | /*uni.navigateTo({ |
| | | url: `/pages/pay/paySuccess?orderId=${this.orderId}&youHuiInfo=${JSON |
| | | .stringify(this.youHuiInfo)}` |
| | | })*/ |
| | | } |
| | | }); |
| | | }, 200) |
| | | }, |
| | | //支付宝支付 |
| | | aliPay(res) { |
| | | ap.tradePay({ |
| | | tradeNO: res.tradeNO |
| | | }, (res) => { |
| | | if (res.resultCode == 9000) { |
| | | /*uni.navigateTo({ |
| | | url: `/pages/pay/paySuccess?orderId=${this.orderId}&youHuiInfo=${JSON |
| | | .stringify(this.youHuiInfo)}` |
| | | })*/ |
| | | // 支付成功 |
| | | } else if (res.resultCode == 8000 || res.resultCode == 6001) { |
| | | // 正在处理中 || 取消 |
| | | } else { |
| | | // 支付失败 |
| | | } |
| | | }); |
| | | }, |
| | | //银行卡支付 |
| | | bankPay(e) { |
| | | uni.showLoading() |
| | | tlPay({ |
| | | orderId: this.orderId, |
| | | payWay: 3, |
| | | bankCardId: this.bankCardId, |
| | | smscode: e |
| | | }).then(res => { |
| | | uni.hideLoading() |
| | | uni.hideKeyboard() |
| | | this.codeShow = false |
| | | uni.navigateTo({ |
| | | url: `/pages/pay/paySuccess?orderId=${this.orderId}&youHuiInfo=${JSON |
| | | .stringify(this.youHuiInfo)}` |
| | | }) |
| | | }).catch(() => { |
| | | uni.hideLoading() |
| | | }) |
| | | }, |
| | | //显示优惠券 |
| | | showCoupon() { |
| | | uni.showLoading() |
| | | queryUseSweepPayCoupon({ |
| | | params: { |
| | | cusid: this.shopInfo.cusid, |
| | | c: this.shopInfo.c, |
| | | money: parseFloat((this.money * 100).toPrecision(12)), |
| | | score: this.canUseInt |
| | | } |
| | | }).then(res => { |
| | | uni.hideLoading() |
| | | if (res.length > 0) { |
| | | this.couponList = res |
| | | this.checkCoupon = this.couponInfo |
| | | this.couponShow = true; |
| | | } else { |
| | | uni.showToast({ |
| | | icon: 'none', |
| | | title: '暂无可用优惠券' |
| | | }) |
| | | } |
| | | |
| | | }).catch(() => { |
| | | uni.hideLoading() |
| | | }) |
| | | |
| | | }, |
| | | clickCoupon(item) { |
| | | if (this.checkCoupon.id == item.id) { |
| | | this.checkCoupon = { |
| | | id: '', |
| | | discount: 0, |
| | | thresholdValue: 0 |
| | | } |
| | | } else { |
| | | this.checkCoupon = item |
| | | } |
| | | }, |
| | | getCoupon() { |
| | | // item 为优惠券信息 |
| | | this.couponInfo = this.checkCoupon; |
| | | this.couponShow = false; |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .page { |
| | | height: calc(100vh - 0px); |
| | | display: flex; |
| | | flex-direction: column; |
| | | line-height: 1; |
| | | } |
| | | |
| | | .avg-img { |
| | | width: 80rpx; |
| | | height: 80rpx; |
| | | } |
| | | |
| | | .pay-box { |
| | | text-align: center; |
| | | padding: 65rpx 0 42rpx; |
| | | } |
| | | |
| | | .money { |
| | | font-size: 64rpx; |
| | | } |
| | | |
| | | .tag-pain { |
| | | border: 1px solid #D31F28; |
| | | font-size: 22rpx; |
| | | color: #D31F28; |
| | | border-radius: 4rpx; |
| | | line-height: 1; |
| | | padding: 8rpx 4rpx; |
| | | } |
| | | |
| | | .item-icon { |
| | | width: 38rpx; |
| | | height: 38rpx; |
| | | } |
| | | |
| | | .pay-it { |
| | | position: absolute; |
| | | width: 686rpx; |
| | | height: 98rpx; |
| | | bottom: 0; |
| | | border-radius: 10rpx; |
| | | font-size: 34rpx; |
| | | color: #ffffff; |
| | | background-color: #de2d35; |
| | | margin: 32rpx; |
| | | } |
| | | |
| | | .choose-coupon { |
| | | margin: 32rpx 32rpx 0; |
| | | border-radius: 10rpx; |
| | | background: #fff1f1; |
| | | padding: 26rpx 16rpx; |
| | | color: #D31F28; |
| | | font-size: 28rpx; |
| | | } |
| | | |
| | | .coupon-list { |
| | | box-sizing: border-box; |
| | | height: calc(50vh - 44px); |
| | | } |
| | | |
| | | .coupon { |
| | | background-color: rgba(255, 241, 241, 0.47); |
| | | height: 171rpx; |
| | | border: solid 1rpx #f85d64; |
| | | border-radius: 10rpx; |
| | | position: relative; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .butt { |
| | | width: 1rpx; |
| | | height: 100%; |
| | | position: relative; |
| | | z-index: 9; |
| | | border-left: 1rpx dashed #f85d64; |
| | | } |
| | | |
| | | .butt:before { |
| | | z-index: 10; |
| | | box-sizing: border-box; |
| | | position: absolute; |
| | | content: ""; |
| | | width: 24rpx; |
| | | height: 12rpx; |
| | | border-bottom: 1rpx solid #f85d64; |
| | | border-right: 1rpx solid #f85d64; |
| | | border-left: 1rpx solid #f85d64; |
| | | border-radius: 0 0 24rpx 24rpx; |
| | | left: -12rpx; |
| | | background-color: #ffffff; |
| | | } |
| | | |
| | | .butt:after { |
| | | box-sizing: border-box; |
| | | position: absolute; |
| | | content: ""; |
| | | width: 24rpx; |
| | | height: 12rpx; |
| | | bottom: 0; |
| | | border-bottom: 1rpx solid #ffff; |
| | | border-right: 1rpx solid #f85d64; |
| | | border-left: 1rpx solid #f85d64; |
| | | border-top: 1rpx solid #f85d64; |
| | | border-radius: 24rpx 24rpx 0 0; |
| | | left: -12rpx; |
| | | background-color: #ffffff; |
| | | } |
| | | |
| | | |
| | | .coupon-btn { |
| | | margin: 0 32rpx; |
| | | height: 98rpx; |
| | | border-radius: 10rpx; |
| | | background-color: #D31F28; |
| | | font-size: 34rpx; |
| | | color: #fff; |
| | | line-height: 98rpx; |
| | | text-align: center; |
| | | } |
| | | |
| | | .u-font-money { |
| | | font-size: 60rpx; |
| | | } |
| | | </style> |