| | |
| | | <!-- 扫码支付 --> |
| | | <template> |
| | | <view class="page"> |
| | | <u-loading-page :loading="loading"></u-loading-page> |
| | | <block v-if="shopInfo.scanFlag==1"> |
| | | <view class="shop u-flex u-row-between"> |
| | | <view class="u-m-r-30"> |
| | | <view class="u-font-26 color-666 u-m-b-10">付款给</view> |
| | | <view class="u-font-34 color-333">{{ shopInfo.shopName }}</view> |
| | | </view> |
| | | <u-image width="88rpx" height="88rpx" shape="circle" errorIcon="/static/store-logo.png" loadingIcon="/static/store-logo.png" :src="shopInfo.logoImage||'/static/store-logo.png'" bgColor="#fff"></u-image> |
| | | </view> |
| | | <view class="u-p-24 bg-fff u-m-32 u-br-10"> |
| | | <view class="u-flex u-row-between"> |
| | | <view class="u-font-28 color-666">金额</view> |
| | | <view @click="showRemark=true" class="remark">添加备注</view> |
| | | </view> |
| | | <view class="u-p-v-20 u-flex u-col-bottom u-border-bottom u-relative money-box"> |
| | | <view class="money-icon color-333 lh-1">¥</view> |
| | | <view class="u-flex-1 u-flex u-col-bottom u-m-l-10" style="height: 80rpx;"> |
| | | <view v-if="money" class="money-num lh-1">{{ money }}</view> |
| | | <view :class="['cursor',{'cursor-act':!money&&bordShow}]"></view> |
| | | <view v-if="!money" class="u-font-50 color-999 lh-1">请输入金额</view> |
| | | <view :class="['cursor',{'cursor-act':money&&bordShow}]"></view> |
| | | </view> |
| | | <view class="mask" @click="showBord"></view> |
| | | </view> |
| | | <!-- <image v-if="isNew&&(this.payWay == 2&&!UNIONID)" @click="toRegister" class="reg-btn" src="/static/register-btn.png" mode=""></image>--> |
| | | <view v-if="shopInfo.userCouponFlag==0" class="u-font-26 u-tips-color u-p-t-24">微信搜索或直接点击打开 |
| | | <text style="color: #1E8BE0">【冀优邮】</text> |
| | | 小程序,享受更多优惠 |
| | | </view> |
| | | </view> |
| | | <block v-if="shopInfo.userCouponFlag==1"> |
| | | <view class="bg-fff u-m-32 u-br-10"> |
| | | <view class="u-flex u-p-24 u-border-bottom"> |
| | | <!-- <u-icon name="coupon-fill" size="60rpx" color="#D31F28"></u-icon>--> |
| | | <view class="u-font-32 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> |
| | | <view v-else class="u-font-28 lh-1 u-tips-color">请选择</view> |
| | | <u-icon class="u-m-l-10" name="arrow-right" color="#999" size="16"></u-icon> |
| | | </view> |
| | | </view> |
| | | <view class="u-font-26 u-tips-color u-p-24">微信搜索或直接点击打开 |
| | | <view class="page"> |
| | | <u-loading-page :loading="loading"></u-loading-page> |
| | | <block v-if="shopInfo.scanFlag==1"> |
| | | <view class="shop u-flex u-row-between"> |
| | | <view class="u-m-r-30"> |
| | | <view class="u-font-26 color-666 u-m-b-10">付款给</view> |
| | | <view class="u-font-34 color-333">{{ shopInfo.shopName }}</view> |
| | | </view> |
| | | <u-image width="88rpx" height="88rpx" shape="circle" errorIcon="/static/store-logo.png" loadingIcon="/static/store-logo.png" :src="shopInfo.logoImage||'/static/store-logo.png'" bgColor="#fff"></u-image> |
| | | </view> |
| | | <view class="u-p-24 bg-fff u-m-32 u-br-10"> |
| | | <view class="u-flex u-row-between"> |
| | | <view class="u-font-28 color-666">金额</view> |
| | | <view @click="showRemark=true" class="remark">添加备注</view> |
| | | </view> |
| | | <view v-if="smoney" class="u-p-v-20 u-flex u-col-bottom u-border-bottom u-relative money-box"> |
| | | <view class="money-icon color-333 lh-1">¥</view> |
| | | <view class="u-flex-1 u-flex u-col-bottom u-m-l-10" style="height: 80rpx;"> |
| | | <view class="money-num lh-1">{{ smoney }}</view> |
| | | </view> |
| | | </view> |
| | | <view v-else class="u-p-v-20 u-flex u-col-bottom u-border-bottom u-relative money-box"> |
| | | <view class="money-icon color-333 lh-1">¥</view> |
| | | <view class="u-flex-1 u-flex u-col-bottom u-m-l-10" style="height: 80rpx;"> |
| | | <view v-if="money" class="money-num lh-1">{{ money }}</view> |
| | | <view :class="['cursor',{'cursor-act':!money&&bordShow}]"></view> |
| | | <view v-if="!money" class="u-font-50 color-999 lh-1">请输入金额</view> |
| | | <view :class="['cursor',{'cursor-act':money&&bordShow}]"></view> |
| | | </view> |
| | | <view class="mask" @click="showBord"></view> |
| | | </view> |
| | | <!-- <image v-if="isNew&&(this.payWay == 2&&!UNIONID)" @click="toRegister" class="reg-btn" src="/static/register-btn.png" mode=""></image>--> |
| | | <block v-if="shopInfo.userCouponFlag==0"> |
| | | <view class="u-font-26 u-tips-color u-p-t-24">微信搜索或直接点击打开 |
| | | <text style="color: #1E8BE0">【冀优邮】</text> |
| | | 小程序,享受更多优惠 |
| | | </view> |
| | | </view> |
| | | </block> |
| | | <block v-if="shopInfo.userCouponFlag==1&&discount"> |
| | | <view class="u-m-32 u-br-10 bg-fff"> |
| | | <view class="u-p-24 u-flex u-row-between u-border-bottom"> |
| | | <view class="u-font-32 color-333">抵扣金额</view> |
| | | <view class="color-green">- {{ discount }}</view> |
| | | </block> |
| | | |
| | | </view> |
| | | <block v-if="shopInfo.userCouponFlag==1"> |
| | | <view class="bg-fff u-m-32 u-br-10"> |
| | | <view class="u-flex u-p-24 u-border-bottom"> |
| | | <!-- <u-icon name="coupon-fill" size="60rpx" color="#D31F28"></u-icon> --> |
| | | <view class="u-font-32 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> |
| | | <view v-else class="u-font-28 lh-1 u-tips-color">请选择</view> |
| | | <u-icon class="u-m-l-10" name="arrow-right" color="#999" size="16"></u-icon> |
| | | </view> |
| | | </view> |
| | | <view> |
| | | |
| | | <wx-open-launch-weapp |
| | | id="launch-btn" |
| | | appid="wx47b3b5ca64bc7d5d" |
| | | path="pages/index/index" |
| | | > |
| | | <script type="text/wxtag-template"> |
| | | <style>.btn { padding: 12px }</style> |
| | | <button class="btn">打开小程序</button> |
| | | </script> |
| | | </wx-open-launch-weapp> |
| | | </view> |
| | | <view class="u-p-24 u-flex u-row-between u-br-10 bg-fff"> |
| | | <view class="u-font-32 color-333">实付金额</view> |
| | | <view class="color-red"> |
| | | <text class="u-font-26 u-m-r-6">¥</text> |
| | | <text class="u-font-34">{{ payMoney }}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </block> |
| | | <button class="pay-it" @click="pay">付款</button> |
| | | <!-- 数字键盘 --> |
| | | <u-popup zIndex="500" :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 zIndex="800" 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> |
| | | <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-modal showCancelButton :show="showRemark" title="备注" confirmColor="#D31F28" @close="showRemark = false" @cancel="showRemark = false" @confirm="showRemark = false"> |
| | | <u--textarea v-model="buyerNote" placeholder="请输入备注内容" count></u--textarea> |
| | | </u-modal> |
| | | </block> |
| | | <view v-if="shopInfo.scanFlag==0" class="empty-box"> |
| | | <image src="/static/empty.png" class="empty"></image> |
| | | <view class="tips">{{tips}}</view> |
| | | <view @click="clickDone" class="clickDone">关闭</view> |
| | | </view> |
| | | </view> |
| | | <view class="u-font-26 u-tips-color u-p-24">微信搜索或直接点击打开 |
| | | <text style="color: #1E8BE0">【冀优邮】</text> |
| | | 小程序,享受更多优惠 |
| | | </view> |
| | | </view> |
| | | </block> |
| | | <block v-if="shopInfo.userCouponFlag==1&&discount"> |
| | | <view class="u-m-32 u-br-10 bg-fff"> |
| | | <view class="u-p-24 u-flex u-row-between u-border-bottom"> |
| | | <view class="u-font-32 color-333">抵扣金额</view> |
| | | <view class="color-green">- {{ discount }}</view> |
| | | </view> |
| | | <view class="u-p-24 u-flex u-row-between u-br-10 bg-fff"> |
| | | <view class="u-font-32 color-333">实付金额</view> |
| | | <view class="color-red"> |
| | | <text class="u-font-26 u-m-r-6">¥</text> |
| | | <text class="u-font-34">{{ payMoney }}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </block> |
| | | <button class="pay-it" @click="pay">付款</button> |
| | | <!-- 数字键盘 --> |
| | | <u-popup zIndex="500" :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 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> |
| | | <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-modal showCancelButton :show="showRemark" title="备注" confirmColor="#D31F28" @close="showRemark = false" @cancel="showRemark = false" @confirm="showRemark = false"> |
| | | <u--textarea v-model="buyerNote" placeholder="请输入备注内容" count></u--textarea> |
| | | </u-modal> |
| | | </block> |
| | | <view v-if="shopInfo.scanFlag==0" class="empty-box"> |
| | | <image src="/static/empty.png" class="empty"></image> |
| | | <view class="tips">{{tips}}</view> |
| | | <view @click="clickDone" class="clickDone">关闭</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | config, |
| | | ACCESSTOKEN |
| | | } from 'common/config.js'; |
| | | import { |
| | | queryShop, |
| | | userLogin, |
| | | queryUseSweepPayCoupon, |
| | | closeOrder, |
| | | saveOrder, |
| | | } from 'common/api/index' |
| | | import { |
| | | config, |
| | | ACCESSTOKEN |
| | | } from 'common/config.js'; |
| | | import { |
| | | queryShop, |
| | | userLogin, |
| | | queryUseSweepPayCoupon, |
| | | getWechatConfigInfo, |
| | | closeOrder, |
| | | saveOrder, |
| | | } from 'common/api/index' |
| | | |
| | | export default { |
| | | data() { |
| | | return { |
| | | tips: '该商户暂未开通支付功能', |
| | | loading: true, |
| | | remark: '', |
| | | buyerNote: '', |
| | | showRemark: false, |
| | | UNIONID: null, |
| | | payWay: this.$utils.getPlat(), |
| | | cid: '', |
| | | bordShow: true, // 显示键盘 |
| | | shopInfo: { |
| | | cusid: '', |
| | | shopName: '', |
| | | logoImage: '', |
| | | scanFlag: -1, |
| | | useScoreFlag: -1, //商铺是否可用积分 0否 1是 |
| | | userCouponFlag: -1, //商铺是否可用优惠券 0否 1是 |
| | | }, |
| | | money: '', // 金额 |
| | | token: null, |
| | | isNew: false, // 是否新用户,新用户查询不到积分和银行卡 |
| | | canReset: false, |
| | | couponShow: false, // 优惠券弹窗 |
| | | couponList: [], // 优惠券 |
| | | couponInfo: { |
| | | id: '', |
| | | discount: 0, |
| | | thresholdValue: 0 |
| | | }, // 优惠券内容 |
| | | checkCoupon: { |
| | | import wx from 'weixin-js-sdk'; // 使用js-sdk |
| | | |
| | | export default { |
| | | data() { |
| | | return { |
| | | smoney: '', |
| | | tips: '该商户暂未开通支付功能', |
| | | loading: false, |
| | | remark: '', |
| | | buyerNote: '', |
| | | showRemark: false, |
| | | UNIONID: null, |
| | | payWay: this.$utils.getPlat(), |
| | | cid: '', |
| | | bordShow: false, // 显示键盘 |
| | | shopInfo: { |
| | | cusid: '', |
| | | shopName: '', |
| | | logoImage: '', |
| | | scanFlag: -1, |
| | | useScoreFlag: -1, //商铺是否可用积分 0否 1是 |
| | | userCouponFlag: -1, //商铺是否可用优惠券 0否 1是 |
| | | }, |
| | | money: '', // 金额 |
| | | token: null, |
| | | isNew: false, // 是否新用户,新用户查询不到积分和银行卡 |
| | | canReset: false, |
| | | couponShow: false, // 优惠券弹窗 |
| | | couponList: [], // 优惠券 |
| | | couponInfo: { |
| | | id: '', |
| | | discount: 0, |
| | | thresholdValue: 0 |
| | | }, // 优惠券内容 |
| | | checkCoupon: { |
| | | id: null, |
| | | discount: 0, |
| | | thresholdValue: 0 |
| | | }, |
| | | }; |
| | | }, |
| | | computed: { |
| | | discount() { |
| | | let num = 0; |
| | | num = (this.couponInfo.discount / 100).toFixed(2); |
| | | return parseFloat(num); |
| | | }, |
| | | payMoney() { |
| | | let num = 0; |
| | | num = Number((this.money || 0) * 100) - this.couponInfo.discount; |
| | | num = num > 0 ? (num / 100).toFixed(2) : '0.00'; |
| | | return parseFloat(num); |
| | | } |
| | | }, |
| | | onLoad(opt) { |
| | | this.isNew = uni.getStorageSync('IS_NEW') |
| | | if (opt.cid) { |
| | | this.cid = opt.cid |
| | | this.init() |
| | | } |
| | | if (opt.code || opt.auth_code) { |
| | | let code = opt.code |
| | | if (this.payWay == 5) { |
| | | code = opt.auth_code |
| | | }; |
| | | }, |
| | | computed: { |
| | | discount() { |
| | | let num = 0; |
| | | num = (this.couponInfo.discount / 100).toFixed(2); |
| | | return parseFloat(num); |
| | | }, |
| | | payMoney() { |
| | | let num = 0; |
| | | num = Number((this.money || 0) * 100) - this.couponInfo.discount; |
| | | num = num > 0 ? (num / 100).toFixed(2) : '0.00'; |
| | | return parseFloat(num); |
| | | } |
| | | }, |
| | | onLoad(opt) { |
| | | this.isNew = uni.getStorageSync('IS_NEW') |
| | | if (opt.smoney) { |
| | | this.smoney = opt.smoney |
| | | this.money = opt.smoney |
| | | }else{ |
| | | this.bordShow = true |
| | | } |
| | | userLogin({ |
| | | platform: this.payWay, |
| | | params: { |
| | | code |
| | | if (opt.cid) { |
| | | this.cid = opt.cid |
| | | this.init() |
| | | } |
| | | if (opt.code || opt.auth_code) { |
| | | let code = opt.code |
| | | if (this.payWay == 5) { |
| | | code = opt.auth_code |
| | | } |
| | | const cd = uni.getStorageSync('cd') |
| | | if(code===cd){ |
| | | return |
| | | } |
| | | }).then(res => { |
| | | this.getToken(res) |
| | | }) |
| | | } |
| | | uni.setStorageSync('cd',code) |
| | | userLogin({ |
| | | platform: this.payWay, |
| | | params: { |
| | | code |
| | | } |
| | | }).then(res => { |
| | | this.getToken(res) |
| | | }) |
| | | } |
| | | |
| | | }, |
| | | methods: { |
| | | clickDone() { |
| | | let browser = navigator.userAgent.toLowerCase(); |
| | | if (browser.match(/Alipay/i) == "alipay") { |
| | | //这个可以关闭安卓系统的手机 |
| | | document.addEventListener("AlipayJSBridgeReady", function () { |
| | | AlipayJSBridge.call("closeWindow"); |
| | | }, |
| | | false |
| | | ); |
| | | //这个可以关闭ios系统的手机 |
| | | AlipayJSBridge.call('closeWebview'); //支付宝 |
| | | } else if (browser.match(/MicroMessenger/i) == "micromessenger") { |
| | | //这个可以关闭安卓系统的手机 |
| | | document.addEventListener("WeixinJSBridgeReady", function () { |
| | | WeixinJSBridge.call("closeWindow"); |
| | | }, |
| | | false |
| | | ); |
| | | //这个可以关闭ios系统的手机 |
| | | WeixinJSBridge.call("closeWindow"); |
| | | } else { |
| | | window.opener = null; //如果没有这行和下面的一行则会出现上面的第二个询问框。 |
| | | window.open(' ', '_self', ' '); |
| | | window.close() |
| | | } |
| | | }, |
| | | getToken(res) { |
| | | this.token = res.token |
| | | if (res.openid) { |
| | | uni.setStorageSync('OPENID' + this.payWay, res.token) |
| | | } |
| | | if (res.unionid) { |
| | | uni.setStorageSync('UNIONID' + this.payWay, res.token) |
| | | } |
| | | uni.setStorageSync(ACCESSTOKEN, res.token) |
| | | uni.setStorageSync('IS_NEW', res.isNew) |
| | | this.isNew = res.isNew |
| | | if (!res.isNew) { |
| | | this.showCoupon() |
| | | } |
| | | }, |
| | | toRegister() { |
| | | if (this.UNIONID) { |
| | | uni.navigateTo({ |
| | | url: '/pay/register?cid=' + this.cid |
| | | }) |
| | | } |
| | | if (this.payWay == 2) { |
| | | const redirect_uri = encodeURIComponent(`${config.webURL}/pay/scanpay?cid=${opt.query.cid}`) |
| | | window.location.href = |
| | | `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${config.wx_appid}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect` |
| | | } |
| | | }, |
| | | methods: { |
| | | clickDone() { |
| | | let browser = navigator.userAgent.toLowerCase(); |
| | | if (browser.match(/Alipay/i) == "alipay") { |
| | | //这个可以关闭安卓系统的手机 |
| | | document.addEventListener("AlipayJSBridgeReady", function() { |
| | | AlipayJSBridge.call("closeWindow"); |
| | | }, |
| | | false |
| | | ); |
| | | //这个可以关闭ios系统的手机 |
| | | AlipayJSBridge.call('closeWebview'); //支付宝 |
| | | } else if (browser.match(/MicroMessenger/i) == "micromessenger") { |
| | | //这个可以关闭安卓系统的手机 |
| | | document.addEventListener("WeixinJSBridgeReady", function() { |
| | | WeixinJSBridge.call("closeWindow"); |
| | | }, |
| | | false |
| | | ); |
| | | //这个可以关闭ios系统的手机 |
| | | WeixinJSBridge.call("closeWindow"); |
| | | } else { |
| | | window.opener = null; //如果没有这行和下面的一行则会出现上面的第二个询问框。 |
| | | window.open(' ', '_self', ' '); |
| | | window.close() |
| | | } |
| | | }, |
| | | getToken(res) { |
| | | this.token = res.token |
| | | if (res.openid) { |
| | | uni.setStorageSync('OPENID' + this.payWay, res.token) |
| | | } |
| | | if (res.unionid) { |
| | | uni.setStorageSync('UNIONID' + this.payWay, res.token) |
| | | } |
| | | uni.setStorageSync(ACCESSTOKEN, res.token) |
| | | uni.setStorageSync('IS_NEW', res.isNew) |
| | | this.isNew = res.isNew |
| | | if (!res.isNew) { |
| | | this.showCoupon() |
| | | } |
| | | }, |
| | | toRegister() { |
| | | if (this.UNIONID) { |
| | | uni.navigateTo({ |
| | | url: '/pay/register?cid=' + this.cid |
| | | }) |
| | | } |
| | | if (this.payWay == 2) { |
| | | const redirect_uri = encodeURIComponent(`${config.webURL}/pay/scanpay?cid=${opt.query.cid}`) |
| | | window.location.href = |
| | | `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${config.wx_appid}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect` |
| | | } |
| | | |
| | | }, |
| | | // 更新金额 |
| | | changeMoney(str) { |
| | | this.money = str; |
| | | }, |
| | | // 展示键盘 |
| | | showBord() { |
| | | this.bordShow = true; |
| | | }, |
| | | init() { |
| | | let timer = setTimeout(() => { |
| | | this.shopInfo.scanFlag = 0 |
| | | this.tips = '当前用户过多,请稍后重试~_~' |
| | | this.loading = false |
| | | }, 2000) |
| | | //获取商铺信息 |
| | | queryShop({ |
| | | params: { |
| | | cid: this.cid |
| | | } |
| | | }).then(res => { |
| | | clearTimeout(timer) |
| | | this.loading = false |
| | | if (!uni.$u.test.isEmpty(res.logoImage)) { |
| | | res.logoImage = config.baseURL + res.logoImage |
| | | } |
| | | this.shopInfo = res |
| | | }).catch(()=>{ |
| | | clearTimeout(timer) |
| | | this.shopInfo.scanFlag = 0 |
| | | this.tips = '当前用户过多,请稍后重试~_~' |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | // 获取会员相关信息 |
| | | showCoupon() { |
| | | //获取用户优惠券 |
| | | queryUseSweepPayCoupon({ |
| | | params: { |
| | | cusid: this.shopInfo.cusid, |
| | | cid: this.cid, |
| | | money: Number(this.money * 100), |
| | | } |
| | | }).then(res => { |
| | | this.couponList = res |
| | | this.couponShow = true |
| | | }) |
| | | }, |
| | | //选择优惠券 |
| | | 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; |
| | | }, |
| | | //确认支付 |
| | | pay() { |
| | | if (uni.$u.test.isEmpty(this.money)) { |
| | | uni.$u.toast('请输入金额!') |
| | | return |
| | | } |
| | | this.bordShow = false |
| | | // 金额 this.money |
| | | uni.showLoading() |
| | | const params = { |
| | | money: Number(this.money * 100), |
| | | shopId: this.shopInfo.id, |
| | | cid: this.cid, |
| | | payWay: this.payWay, |
| | | buyerNote: this.buyerNote, |
| | | score: 0, |
| | | couponDetailId: this.couponInfo.id |
| | | } |
| | | //生成订单 |
| | | saveOrder(params).then(res => { |
| | | uni.hideLoading() |
| | | try { |
| | | this.orderId = res.orderId |
| | | res.youHuiInfo.shopName = this.shopInfo.shopName |
| | | this.youHuiInfo = res.youHuiInfo |
| | | if (this.payWay == 2) { |
| | | this.wxPay(res.paymentData) |
| | | } |
| | | if (this.payWay == 5) { |
| | | this.aliPay(res.paymentData) |
| | | } |
| | | } catch (e) { |
| | | //TODO handle the exception |
| | | console.error(e); |
| | | } |
| | | }).catch(() => { |
| | | uni.hideLoading() |
| | | }) |
| | | }, |
| | | // 微信支付 |
| | | wxPay(res) { |
| | | 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: `/pay/paySuccess?orderId=${this.orderId}&youHuiInfo=${JSON.stringify(this.youHuiInfo)}` |
| | | })*/ |
| | | } else { |
| | | this.closeOrder() |
| | | } |
| | | }, |
| | | // 更新金额 |
| | | changeMoney(str) { |
| | | this.money = str; |
| | | }, |
| | | // 展示键盘 |
| | | showBord() { |
| | | this.bordShow = true; |
| | | }, |
| | | init() { |
| | | this.loading = true |
| | | let timer = setTimeout(() => { |
| | | this.shopInfo.scanFlag = 0 |
| | | this.tips = '当前用户过多,请稍后重试~_~' |
| | | this.loading = false |
| | | }, 2000) |
| | | //获取商铺信息 |
| | | queryShop({ |
| | | params: { |
| | | cid: this.cid |
| | | } |
| | | }).then(res => { |
| | | clearTimeout(timer) |
| | | this.loading = false |
| | | if (!uni.$u.test.isEmpty(res.logoImage)) { |
| | | res.logoImage = config.baseURL + res.logoImage |
| | | } |
| | | this.shopInfo = res |
| | | }).catch(() => { |
| | | clearTimeout(timer) |
| | | this.shopInfo.scanFlag = 0 |
| | | this.tips = '当前用户过多,请稍后重试~_~' |
| | | this.loading = false |
| | | }) |
| | | |
| | | if (this.payWay == 2) { |
| | | const uri = encodeURIComponent(window.location) |
| | | getWechatConfigInfo({ |
| | | url: uri |
| | | }).then(res => { |
| | | wx.config({ |
| | | debug: false, // 开启调试模式 |
| | | appId: res.appId, // 必填,公众号的唯一标识 |
| | | timestamp: res.timestamp, // 必填,生成签名的时间戳 |
| | | nonceStr: res.nonceStr, // 必填,生成签名的随机串 |
| | | signature: res.signature, // 必填,签名 |
| | | openTagList: ['wx-open-launch-weapp'] //可选,需要使用的开放标签列表 |
| | | }); |
| | | }, 200) |
| | | }, |
| | | //支付宝支付 |
| | | aliPay(res) { |
| | | ap.tradePay({ |
| | | tradeNO: res.tradeNO |
| | | }, (res) => { |
| | | if (res.resultCode == 9000) { |
| | | uni.navigateTo({ |
| | | url: `/pay/paySuccess?orderId=${this.orderId}&youHuiInfo=${JSON |
| | | .stringify(this.youHuiInfo)}` |
| | | wx.ready(function () { |
| | | wx.hideAllNonBaseMenuItem(); |
| | | }) |
| | | }) |
| | | // 支付成功 |
| | | } else if (res.resultCode == 8000) { |
| | | // 正在处理中 || 取消 |
| | | } else if (res.resultCode == 6001) { |
| | | // 取消 |
| | | this.closeOrder() |
| | | } else { |
| | | this.closeOrder() |
| | | // 支付失败 |
| | | } |
| | | }); |
| | | }, |
| | | closeOrder() { |
| | | closeOrder({ |
| | | id: this.orderId, |
| | | }).then(res => { |
| | | }, |
| | | // 获取会员相关信息 |
| | | showCoupon() { |
| | | //获取用户优惠券 |
| | | queryUseSweepPayCoupon({ |
| | | params: { |
| | | cusid: this.shopInfo.cusid, |
| | | cid: this.cid, |
| | | money: Number(this.money * 100), |
| | | } |
| | | }).then(res => { |
| | | this.couponList = res |
| | | this.couponShow = true |
| | | }) |
| | | } |
| | | } |
| | | }; |
| | | }, |
| | | //选择优惠券 |
| | | 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; |
| | | }, |
| | | //确认支付 |
| | | pay() { |
| | | if (uni.$u.test.isEmpty(this.money)) { |
| | | uni.$u.toast('请输入金额!') |
| | | return |
| | | } |
| | | this.bordShow = false |
| | | // 金额 this.money |
| | | uni.showLoading() |
| | | const params = { |
| | | money: Number(this.money * 100), |
| | | shopId: this.shopInfo.id, |
| | | cid: this.cid, |
| | | payWay: this.payWay, |
| | | buyerNote: this.buyerNote, |
| | | score: 0, |
| | | couponDetailId: this.couponInfo.id |
| | | } |
| | | //生成订单 |
| | | saveOrder(params).then(res => { |
| | | uni.hideLoading() |
| | | try { |
| | | this.orderId = res.orderId |
| | | res.youHuiInfo.shopName = this.shopInfo.shopName |
| | | this.youHuiInfo = res.youHuiInfo |
| | | if (this.payWay == 2) { |
| | | this.wxPay(res.paymentData) |
| | | } |
| | | if (this.payWay == 5) { |
| | | this.aliPay(res.paymentData) |
| | | } |
| | | } catch (e) { |
| | | //TODO handle the exception |
| | | console.error(e); |
| | | } |
| | | }).catch(() => { |
| | | uni.hideLoading() |
| | | }) |
| | | }, |
| | | // 微信支付 |
| | | wxPay(res) { |
| | | 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: `/pay/paySuccess?orderId=${this.orderId}&youHuiInfo=${JSON.stringify(this.youHuiInfo)}` |
| | | })*/ |
| | | } else { |
| | | this.closeOrder() |
| | | } |
| | | }); |
| | | }, 200) |
| | | }, |
| | | //支付宝支付 |
| | | aliPay(res) { |
| | | ap.tradePay({ |
| | | tradeNO: res.tradeNO |
| | | }, (res) => { |
| | | if (res.resultCode == 9000) { |
| | | uni.navigateTo({ |
| | | url: `/pay/paySuccess?orderId=${this.orderId}&youHuiInfo=${JSON |
| | | .stringify(this.youHuiInfo)}` |
| | | }) |
| | | // 支付成功 |
| | | } else if (res.resultCode == 8000) { |
| | | // 正在处理中 || 取消 |
| | | } else if (res.resultCode == 6001) { |
| | | // 取消 |
| | | this.closeOrder() |
| | | } else { |
| | | this.closeOrder() |
| | | // 支付失败 |
| | | } |
| | | }); |
| | | }, |
| | | closeOrder() { |
| | | closeOrder({ |
| | | id: this.orderId, |
| | | }).then(res => {}) |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .page { |
| | | height: calc(100vh - 0px); |
| | | } |
| | | .page { |
| | | height: calc(100vh - 0px); |
| | | background-color: #EDEDED; |
| | | border-top: 1px solid #EDEDED; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .shop { |
| | | padding: 50rpx 32rpx 10px; |
| | | } |
| | | .shop { |
| | | padding: 50rpx 32rpx 10px; |
| | | } |
| | | |
| | | .avg-img { |
| | | width: 88rpx; |
| | | height: 88rpx; |
| | | border-radius: 44rpx; |
| | | background-color: #ffffff; |
| | | } |
| | | .avg-img { |
| | | width: 88rpx; |
| | | height: 88rpx; |
| | | border-radius: 44rpx; |
| | | background-color: #ffffff; |
| | | } |
| | | |
| | | |
| | | .money { |
| | | font-size: 40rpx; |
| | | color: #333; |
| | | } |
| | | .money { |
| | | font-size: 40rpx; |
| | | color: #333; |
| | | } |
| | | |
| | | |
| | | .money-icon { |
| | | position: relative; |
| | | bottom: 6rpx; |
| | | font-size: 42rpx; |
| | | color: #666; |
| | | margin-right: 10rpx; |
| | | } |
| | | .money-icon { |
| | | position: relative; |
| | | bottom: 6rpx; |
| | | font-size: 42rpx; |
| | | color: #666; |
| | | margin-right: 10rpx; |
| | | } |
| | | |
| | | .money-num { |
| | | font-size: 72rpx; |
| | | } |
| | | .money-num { |
| | | font-size: 72rpx; |
| | | } |
| | | |
| | | .pay-it { |
| | | position: absolute; |
| | | width: 686rpx; |
| | | height: 98rpx; |
| | | bottom: 0; |
| | | border-radius: 10rpx; |
| | | font-size: 34rpx; |
| | | color: #ffffff; |
| | | background-color: #de2d35; |
| | | margin: 32rpx; |
| | | } |
| | | .pay-it { |
| | | position: absolute; |
| | | width: 686rpx; |
| | | height: 98rpx; |
| | | bottom: 0; |
| | | border-radius: 10rpx; |
| | | font-size: 34rpx; |
| | | color: #ffffff; |
| | | background-color: #de2d35; |
| | | margin: 32rpx; |
| | | } |
| | | |
| | | .item-icon { |
| | | width: 38rpx; |
| | | height: 38rpx; |
| | | } |
| | | .item-icon { |
| | | width: 38rpx; |
| | | height: 38rpx; |
| | | } |
| | | |
| | | .pay-icon { |
| | | align-self: flex-start; |
| | | width: 48rpx; |
| | | height: 48rpx; |
| | | margin-right: 20rpx; |
| | | } |
| | | .pay-icon { |
| | | align-self: flex-start; |
| | | width: 48rpx; |
| | | height: 48rpx; |
| | | margin-right: 20rpx; |
| | | } |
| | | |
| | | .tag { |
| | | background-color: #F35656; |
| | | font-size: 20rpx; |
| | | color: #fff; |
| | | border-radius: 4rpx; |
| | | line-height: 1; |
| | | padding: 4rpx; |
| | | } |
| | | .tag { |
| | | background-color: #F35656; |
| | | font-size: 20rpx; |
| | | color: #fff; |
| | | border-radius: 4rpx; |
| | | line-height: 1; |
| | | padding: 4rpx; |
| | | } |
| | | |
| | | .tag-pain { |
| | | border: 1px solid #D31F28; |
| | | font-size: 22rpx; |
| | | color: #D31F28; |
| | | border-radius: 4rpx; |
| | | line-height: 1; |
| | | padding: 8rpx 4rpx; |
| | | } |
| | | .tag-pain { |
| | | border: 1px solid #D31F28; |
| | | font-size: 22rpx; |
| | | color: #D31F28; |
| | | border-radius: 4rpx; |
| | | line-height: 1; |
| | | padding: 8rpx 4rpx; |
| | | } |
| | | |
| | | .mask { |
| | | position: absolute; |
| | | width: 100%; |
| | | height: 100%; |
| | | left: 0; |
| | | bottom: 0; |
| | | z-index: 101; |
| | | background-color: rgba(0, 0, 0, 0); |
| | | } |
| | | .mask { |
| | | position: absolute; |
| | | width: 100%; |
| | | height: 100%; |
| | | left: 0; |
| | | bottom: 0; |
| | | z-index: 101; |
| | | background-color: rgba(0, 0, 0, 0); |
| | | } |
| | | |
| | | @keyframes cursor-blinks { |
| | | 0% { |
| | | opacity: 1; |
| | | display: block; |
| | | } |
| | | @keyframes cursor-blinks { |
| | | 0% { |
| | | opacity: 1; |
| | | display: block; |
| | | } |
| | | |
| | | 50% { |
| | | opacity: 0; |
| | | display: block; |
| | | } |
| | | 50% { |
| | | opacity: 0; |
| | | display: block; |
| | | } |
| | | |
| | | 100% { |
| | | opacity: 1; |
| | | display: block; |
| | | } |
| | | } |
| | | 100% { |
| | | opacity: 1; |
| | | display: block; |
| | | } |
| | | } |
| | | |
| | | .cursor { |
| | | width: 1px; |
| | | height: 70rpx; |
| | | } |
| | | .cursor { |
| | | width: 1px; |
| | | height: 70rpx; |
| | | } |
| | | |
| | | .cursor-act { |
| | | width: 1px; |
| | | background-color: #999; |
| | | animation: cursor-blinks 1s infinite steps(1, start); |
| | | } |
| | | .cursor-act { |
| | | width: 1px; |
| | | background-color: #999; |
| | | animation: cursor-blinks 1s infinite steps(1, start); |
| | | } |
| | | |
| | | .reg-btn { |
| | | display: block; |
| | | margin-top: 30rpx; |
| | | width: 654rpx; |
| | | height: 198rpx; |
| | | .reg-btn { |
| | | display: block; |
| | | margin-top: 30rpx; |
| | | width: 654rpx; |
| | | height: 198rpx; |
| | | |
| | | image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | } |
| | | image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | } |
| | | |
| | | .u-font-money { |
| | | font-size: 60rpx; |
| | | } |
| | | .u-font-money { |
| | | font-size: 60rpx; |
| | | } |
| | | |
| | | .bankCard-list { |
| | | height: 50vh; |
| | | width: 750rpx; |
| | | box-sizing: border-box; |
| | | .bankCard-list { |
| | | height: 50vh; |
| | | width: 750rpx; |
| | | box-sizing: border-box; |
| | | |
| | | .pay-icon { |
| | | align-self: center; |
| | | } |
| | | } |
| | | .pay-icon { |
| | | align-self: center; |
| | | } |
| | | } |
| | | |
| | | .add-icon { |
| | | width: 50rpx; |
| | | height: 50rpx; |
| | | border-radius: 25rpx; |
| | | background: #ffc0c38f; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | .add-icon { |
| | | width: 50rpx; |
| | | height: 50rpx; |
| | | border-radius: 25rpx; |
| | | background: #ffc0c38f; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | .shuka { |
| | | width: 678rpx; |
| | | height: 45rpx; |
| | | position: relative; |
| | | left: -10rpx; |
| | | .shuka { |
| | | width: 678rpx; |
| | | height: 45rpx; |
| | | position: relative; |
| | | left: -10rpx; |
| | | |
| | | image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | } |
| | | image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | } |
| | | |
| | | .btn { |
| | | margin: 120rpx auto 0; |
| | | position: relative; |
| | | width: 680rpx; |
| | | height: 100rpx; |
| | | } |
| | | .btn { |
| | | margin: 120rpx auto 0; |
| | | position: relative; |
| | | width: 680rpx; |
| | | height: 100rpx; |
| | | } |
| | | |
| | | .wx-app { |
| | | position: absolute; |
| | | width: 680rpx; |
| | | height: 100rpx; |
| | | } |
| | | .wx-app { |
| | | position: absolute; |
| | | width: 680rpx; |
| | | height: 100rpx; |
| | | } |
| | | |
| | | .coupon { |
| | | background-color: rgba(255, 241, 241, 0.47); |
| | | height: 171rpx; |
| | | border: solid 1rpx #f85d64; |
| | | border-radius: 10rpx; |
| | | position: relative; |
| | | overflow: hidden; |
| | | } |
| | | .coupon { |
| | | background-color: rgba(255, 241, 241, 0.47); |
| | | height: 171rpx; |
| | | border: solid 1rpx #f85d64; |
| | | border-radius: 10rpx; |
| | | position: relative; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .choose-coupon { |
| | | margin: 32rpx 32rpx 0; |
| | | border-radius: 10rpx; |
| | | background: #fff1f1; |
| | | padding: 26rpx 16rpx; |
| | | color: #D31F28; |
| | | font-size: 28rpx; |
| | | } |
| | | .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-list { |
| | | box-sizing: border-box; |
| | | height: calc(50vh - 44px); |
| | | } |
| | | |
| | | |
| | | .butt { |
| | | width: 1rpx; |
| | | height: 100%; |
| | | position: relative; |
| | | z-index: 9; |
| | | border-left: 1rpx dashed #f85d64; |
| | | } |
| | | .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: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; |
| | | } |
| | | .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; |
| | | } |
| | | |
| | | .remark { |
| | | color: #1E8BE0 |
| | | } |
| | | .remark { |
| | | color: #1E8BE0 |
| | | } |
| | | |
| | | .lh-1 { |
| | | line-height: 1; |
| | | } |
| | | .lh-1 { |
| | | line-height: 1; |
| | | } |
| | | |
| | | .coupon-btn { |
| | | margin: 0 30rpx 30rpx; |
| | | height: 98rpx; |
| | | border-radius: 10rpx; |
| | | background-color: #D31F28; |
| | | font-size: 34rpx; |
| | | color: #fff; |
| | | line-height: 98rpx; |
| | | text-align: center; |
| | | } |
| | | .coupon-btn { |
| | | margin: 0 30rpx 30rpx; |
| | | height: 98rpx; |
| | | border-radius: 10rpx; |
| | | background-color: #D31F28; |
| | | font-size: 34rpx; |
| | | color: #fff; |
| | | line-height: 98rpx; |
| | | text-align: center; |
| | | } |
| | | |
| | | .empty-box { |
| | | height: calc(80vh - 64rpx); |
| | | margin: 32rpx; |
| | | background-color: #fff; |
| | | border-radius: 10rpx; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | .empty-box { |
| | | height: calc(80vh - 64rpx); |
| | | margin: 32rpx; |
| | | background-color: #fff; |
| | | border-radius: 10rpx; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | |
| | | .tips { |
| | | font-size: 28rpx; |
| | | color: #999; |
| | | margin: 60rpx 0; |
| | | } |
| | | .tips { |
| | | font-size: 28rpx; |
| | | color: #999; |
| | | margin: 60rpx 0; |
| | | } |
| | | |
| | | .empty { |
| | | width: 291rpx; |
| | | height: 302rpx; |
| | | } |
| | | .empty { |
| | | width: 291rpx; |
| | | height: 302rpx; |
| | | } |
| | | |
| | | .clickDone { |
| | | font-size: 34rpx; |
| | | color: #fff; |
| | | width: 331rpx; |
| | | height: 88rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | border-radius: 61rpx; |
| | | background: linear-gradient(0deg, #D31F28 0%, #D31F28 100%), linear-gradient(270deg, #F62B20 13.24%, #FC4E0B 111.68%), #D9D9D9; |
| | | } |
| | | } |
| | | .clickDone { |
| | | font-size: 34rpx; |
| | | color: #fff; |
| | | width: 331rpx; |
| | | height: 88rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | border-radius: 61rpx; |
| | | background: linear-gradient(0deg, #D31F28 0%, #D31F28 100%), linear-gradient(270deg, #F62B20 13.24%, #FC4E0B 111.68%), #D9D9D9; |
| | | } |
| | | } |
| | | </style> |