123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- <template>
- <view>
- <view class="flex-col flex-center py-80">
- <baseMoney :money="payPriceShow" symbolSize="48" integerSize="64" decimalSize="48" color="#333" weight></baseMoney>
- <view class="flex-y-center mt-20">
- <text class="fs-24 text--w111-333 lh-36rpx pr-10">支付剩余时间</text>
- <countDown
- :is-day="false"
- tip-text=" "
- day-text=" "
- hour-text=":"
- minute-text=":"
- second-text=" "
- bgColor="#FFFFFF"
- colors="#FF7E00"
- dotColor="#FF7E00"
- :datatime="invalidTime"></countDown>
- </view>
- </view>
- <view class="px-20">
- <view class="bg--w111-fff rd-24rpx px-24">
- <view class="pt-60 flex-center fs-30 lh-42rpx fw-500">
- <text>方式一:</text>
- <view class="flex-y-center pl-30" @tap="checkType('weixin')">
- <text class="iconfont" :class="paytype == 'weixin' ? 'icon-ic_Selected' : 'icon-ic_unselect'"></text>
- <text class="pl-10">微信扫码</text>
- </view>
- <view class="flex-y-center ml-50" @tap="checkType('alipay')">
- <text class="iconfont" :class="paytype == 'alipay' ? 'icon-ic_Selected' : 'icon-ic_unselect'"></text>
- <text class="pl-10">支付宝扫码</text>
- </view>
- </view>
- <view class="flex-center mt-40 pb-50 border-b" v-show="config.code">
- <w-qrcode :options="config"></w-qrcode>
- </view>
- <view class="pt-50 flex-center fs-30 lh-42rpx fw-500">方式二:用户进入商城支付订单</view>
- <view class="py-60 flex-center">
- <image class="guide" :src="imgHost + '/statics/images/pay_guide.png'"></image>
- </view>
- </view>
- </view>
- <view class="h-200"></view>
- <view class="fixed-lb w-full pb-safe">
- <view class="w-full h-128 flex-center">
- <view class="w-710 h-80 flex-center rd-40rpx fs-28 bg-primary text--w111-fff" @tap="backPage">返回</view>
- </view>
- </view>
- </view>
- </template>
- <script>
- import countDown from '@/components/countDown';
- import { getCashierApi, getPayStatusApi } from "@/api/admin.js";
- import {HTTP_REQUEST_URL} from '@/config/app';
- export default {
- data() {
- return {
- imgHost:HTTP_REQUEST_URL,
- payPriceShow:0,
- invalidTime:0,
- orderId: '',
- paytype:'weixin',
- userId:0,
- qrcode:'',
- config: {
- code: '',
- size: 280, // 二维码大小
- level: 3, //等级 0~4
- bgColor: '#FFFFFF',
- color: ['#333', '#333'], //边框颜色支持渐变色
- },
- timer: null
- }
- },
- components: {
- countDown,
- },
- onLoad(options) {
- this.userId = options.uid || 0;
- if (options.order_id) {
- this.orderId = options.order_id;
- this.getCashierOrder();
- }
-
- },
- onUnload() {
- this.stopSetInterval();
- },
- methods: {
- getCashierOrder(){
- let data = {
- uni: this.orderId,
- paytype: this.paytype,
- quitUrl: '/pages/behalf/cashier/index'
- };
- getCashierApi(this.userId,data).then(res=>{
- if(res.data.status == 'SUCCESS'){
- return this.$util.Tips({
- title: '支付成功'
- }, {
- tab: 5,
- url: '/pages/behalf/record/index'
- });
- }
- this.payPriceShow = res.data.result.pay_price;
- this.invalidTime = res.data.result.jsConfig.invalid;
- this.config.code = this.paytype == 'weixin' ? res.data.result.jsConfig.code_url : res.data.result.jsConfig.qrCode;
- this.createSetInterval(res.data.result.order_id);
- }).catch(err=>{
- return this.$util.Tips({
- title: err
- })
- })
- },
- checkType(val){
- this.paytype = val;
- this.getCashierOrder();
- },
- createSetInterval(order_id) {
- this.stopSetInterval();
- this.timer = setInterval(() => {
- this.getOrderResult(order_id);
- }, 2000);
- },
- stopSetInterval() {
- if (this.timer) {
- clearInterval(this.timer);
- this.timer = null;
- }
- },
- getOrderResult(id){
- //接口响应成功以后销毁定时器
- getPayStatusApi({
- order_id:id,
- end_time:this.invalidTime
- }).then(res=>{
- if(res.data.time == 0){
- this.stopSetInterval();
- this.getCashierOrder();
- }
- if(res.data.status || res.data.time == 0){
- this.stopSetInterval();
- uni.reLaunch({
- url:'/pages/behalf/record/index'
- })
- }
- }).catch(err=>{
- return this.$util.Tips({
- title: err
- })
- })
- },
- backPage(){
- uni.reLaunch({
- url:'/pages/admin/work/index'
- })
- }
- }
- }
- </script>
- <style lang="scss">
- /deep/ .styleAll{
- padding: 0 6rpx;
- border: 1rpx solid #DDDDDD;
- border-radius: 8rpx;
- font-family: Regular;
- line-height: 40rpx;
- }
- .border-b{
- border-bottom: 1px dashed #ccc;
- }
- .icon-ic_Selected{
- color: $primary-admin;
- }
- .bg-primary{
- background-color: $primary-admin;
- }
- .guide{
- width: 570rpx;
- height: 214rpx;
- }
- </style>
|