首页 > 其他分享 >uniapp+uView安卓与IOS微信与支付宝支付

uniapp+uView安卓与IOS微信与支付宝支付

时间:2024-08-14 13:23:39浏览次数:13  
标签:uniapp false color 微信 安卓 detail font margin size

页面仅供参考,记录支付流程处理方法:

<template>

  <view class="pay-order-page">

    <view class="content-box" style="padding-bottom: 14rpx;">

      <view class="tip-box" v-if="detail.purchaseLimitNum>0">限购{{detail.purchaseLimitNum}}份</view>

      <image :src="detail.coverAddress" mode="" class="img" />

        <text class="text">{{detail.name}}</text>

        <!-- 支付方式【1、人民币 2、弈贝 3、积分 12、人民币+弈贝 13、人民币+积分 】 -->

        <view class="price" v-if="detail.payType == 13">

          <text class="priceText">{{detail.integral}}</text>

          <text class="unit" style="margin-left: 9rpx;">积分</text>

          <text class="discounts-price">+{{detail.price}}元</text>

        </view>

        <view class="price" v-else>

          <text class="unit" v-if="detail.payType == 1 || detail.payType == 12">¥</text>

          <text class="priceText">{{detail.price}}</text>

          <text class="unit" style="margin-left: 9rpx;" v-if="detail.payType == 2">弈贝</text>

          <text class="unit" style="margin-left: 9rpx;" v-if="detail.payType == 3">积分</text>

        </view>

      </view>

    <!-- 实物商品有收货地址 -->

    <view class="content-box" v-if="type==2">

      <image src="@/static/images/adress.png" mode="" class="address-img">

        <view class="address-text" v-if="address">

          {{address.provinceName}}{{address.cityName}}{{address.address}}

        </view>

        <view class="address-text2" v-if="address">{{address.recipientName}} {{address.recipientPhone}}</view>

        <view class="address-text2 mt26 mb20" v-else>请先去新增地址</view>

        <view class="iconfont icon-xiangyou2 icon1"></view>

    </view>

    <!-- 下单数量框 -->

    <view class="countBox">

      <view class="countNumBox">

        <text class="title">数量</text>

        <u-number-box v-model="payNumber" :min="1" integer :max="userLimitNum" buttonSize="24" bgColor="#fff"

          @change="changePayNum" @blur="changePayNum2" class="countNum">

        </u-number-box>

      </view>

    </view>

    <!-- 返利框 -->

    <view class="discountBox">

      <!-- 弈贝加人民币是否抵扣 -->

      <view class="isRebatesBox" v-if="detail.payType == 12">

        <text class="title">弈贝抵现</text>

        <view class="rightBox">

          <text class="discountText">可用<text class="number">{{detail.quota}}</text>弈贝,抵扣<text class="number">{{detail.reductionOfQuota}}</text>元</text>

          <u-switch v-model="isOpenSwitch" size="22" activeColor="#6C8FF8" @change="changeIsUseQuotaOrIntegral" :disabled="disabledSwitch"></u-switch>

        </view>

      </view>

      <!-- isRebates: 是否返利:1、是 2、否 -->

      <view class="isRebatesBox" v-if="detail.isRebates == 1">

        <text class="title">返利弈贝</text>

        <view class="isRebatesText">

          +{{detail.totalRebateRatio}}

        </view>

      </view>

    </view>

    <view class="content-box1">

      <!-- 实物商品有运费 -->

      <view class="list-text" v-if="type==2">

        <view class="text-name">运费</view>

        <view class="price_">

          <text class="unit">¥</text>

          <text class="priceText">{{detail.postage}}</text>

        </view>

      </view>

      <!-- 是否有优惠立减 -->

      <view class="list-text" v-if="detail.reductionOfFunds>0">

        <view class="text-name">立减</view>

        <view class="price_">

          <text class="unit" v-if="detail.payType != 2 && detail.payType != 3">¥</text>

          <text class="priceText">{{detail.reductionOfFunds}}</text>

          <text class="unitText" v-if="detail.payType == 2">弈贝</text>

          <text class="unitText" v-if="detail.payType == 3">积分</text>

        </view>

      </view>

    </view>

    <view class="payWay">

      <view class="topBox">

        <text class="payText">支付方式</text>

      </view>

      <!-- 纯积分支付扣减积分 -->

      <view class="deductionBox" v-if="detail.payType == 13 || detail.payType == 3">

        <text class="title">积分</text>

        <view class="deductionVal">

          -{{detail.totalUseIntegral}}

        </view>

      </view>

      <!-- 纯弈贝支付扣减弈贝 -->

      <view class="deductionBox" v-if="detail.payType == 2">

        <text class="title">弈贝</text>

        <view class="deductionVal">

          -{{detail.orderAmount}}

        </view>

      </view>

      <view class="pay-bottom-box" v-if="(detail.postage !=0) || (detail.payType != 2 && detail.payType != 3)">

        <!-- 支付宝支付方式 -->

        <view class="zhifubaoBox">

          <view class="icon" @click="selectAlipayWay"

            :style="showAlipayIcon ? {'background-color':'#6C8FF8','border-color':'#6C8FF8'} : {}">

            <i class="iconfont icon-gouxuan1" v-if="showAlipayIcon"></i>

          </view>

          <image src="@/static/images/zfb.png" mode="" class="img">

          </image>

          <text class="text">支付宝</text>

        </view>

        <view class="line"></view>

        <!-- 微信支付方式 -->

        <view class="weixinBox">

          <view class="icon" @click="selectWeChatWay"

            :style="showWeChatIcon ? {'background-color':'#6C8FF8','border-color':'#6C8FF8'} : {}">

            <i class="iconfont icon-gouxuan1" v-if="showWeChatIcon"></i>

          </view>

          <image src="@/static/images/wx.png" mode="" class="img">

          </image>

          <text class="text">微信</text>

        </view>

      </view>

    </view>

    <view class="bottom-box">

      <view class="payBtnBox">

        <view class="leftBox">

          <view class="payNum">

            <text>共{{totalPayNumber}}件</text>

            <view class="totalText">总计</view>

          </view>

          <view class="totalBox">

            <view v-if="detail.payType == 13 || detail.payType == 3 || detail.payType == 2">

              <!-- 显示当前积分 -->

              <view class="presentBox" v-if="detail.payType == 13 || detail.payType == 3">

                当前积分{{detail.integralYue}}

              </view>

              <!-- 显示当前弈贝 -->

              <view class="presentBox" v-if="detail.payType == 2">

                当前弈贝{{detail.quotaYue}}

              </view>

            </view>

            <!-- 占位框(防止无当前样式偏位) -->

            <view class="presentBox" style="height:32rpx;" v-else></view>

            <!-- 支付方式【1、人民币 2、弈贝 3、积分 12、人民币+弈贝 13、人民币+积分 】 -->

            <view v-if="detail.payType == 1">

              <view class="totalNum">

                <text class="unit">¥</text>

                <text class="priceText">{{totalPrice}}</text>

              </view>

            </view>

            <view class="totalNum" v-if="detail.payType == 2">

              <text class="priceText">{{detail.orderAmount}}</text>

              <text class="unit" style="margin-left: 9rpx;">弈贝</text>

              <view class="discounts-price" v-if="detail.postage != 0">+{{detail.postage}}元</view>

            </view>

            <view class="totalNum" v-if="detail.payType == 3">

              <text class="priceText">{{detail.totalUseIntegral}}</text>

              <text class="unit" style="margin-left: 9rpx;">积分</text>

              <view class="discounts-price" v-if="detail.postage != 0">+{{detail.postage}}元</view>

            </view>

            <view class="totalNum" v-if="detail.payType == 12">

              <view class="price">

                <text class="unit">¥</text>

                <text class="priceText">{{detail.orderAmount}}</text>

              </view>

            </view>

            <view class="totalNum" v-if="detail.payType == 13">

              <text class="priceText">{{detail.totalUseIntegral}}</text>

              <text class="unit" style="margin-left: 9rpx;">积分</text>

              <view class="discounts-price">+{{detail.orderAmount}}元</view>

            </view>

          </view>

        </view>

        <view class="rightBox">

          <button class="btn-primary1" v-if="(detail.payType == 13 || detail.payType == 3) && (Number(detail.integralYue) < Number(detail.totalUseIntegral))">积分不足</button>

          <button class="btn-primary1" v-else-if="detail.payType == 2 && (Number(detail.quotaYue) < Number(detail.orderAmount))">弈贝不足</button>

          <button class="btn-primary" :disabled="disabledBtn" @click="orderConfirm" v-else>立即支付</button>

        </view>

      </view>

    </view>

  </view>

</template>

<script>

import {

  orderCalculate,

  getDefault,

  addOrder,

  queryOrderState

} from "@/api/api.js"; // 后端接口

export default {

  data() {

    return {

      productId: "", // 产品ID

      payNumber: 1, //下单数量

      detail: {}, //详情

      totalPayNumber: 1, // 总计购买数量

      totalPrice: 0, // 总计价格

      address: {}, //默认地址

      showAlipayIcon: true, // 是否显示支付宝勾选图标

      showWeChatIcon: false, // 是否显示微信勾选图标

      disabledBtn: false, // 设置禁止点击,防止重复支付

      userLimitNum: 999, //允许下单最大值

      type: 2, //商品类型【1、虚拟商品 2、实物商品】

      addressId: "", //下单地址id

      payWay: "0", // 支付方式 0支付宝,1微信

      orderId: "", // 订单id

      isopentax: false, //是否开发票

      taxInfo: {}, //发票信息

      isFirstEnter: true, //标记安卓支付宝返回,标记第一次

      selectAddres: 0,

      isOpenSwitch: false, // 是否打开抵扣开关

      isUseQuotaOrIntegral: 0, // 是否使用弈贝或积分【0不使用,1使用,默认不使用】

      quotaPassword: "", // 弈贝支付密码

      disabledSwitch: false, // 是否禁止点击开关

      isCalculate: false, // 是否执行开关判断

      isFirstEnterPage: 2, // 是否第一次进入页面

    };

  },

  onl oad(option) {

    // 安卓,iOS回调获取弈贝支付密码

    window.yibeiPayCallback = (data) => {

      this.quotaPassword = data;

      this.orderConfirm(this.quotaPassword);

    };

    // 获取商品id

    if (option.id) {

      this.productId = option.id;

    }

    this.isFirstEnterPage = 1 // 设置非第一次进入页面

    this.getOrderNumber(1); //下单价格计算

  },

  onShow() {

    let that = this;

    that.isCalculate = false; // 防止手机息屏不执行开关按钮判断

    if (!that.isFirstEnter) {

      //安卓支付宝支付成功后,不请求,第二次进去页面再请求更新订单情况

      that.isFirstEnter = true;

      return;

    }

    if (that.orderId != "") {

      //订单详情打开状态返回,为支付返回

      uni.showLoading({

        title: "正在更新订单状态",

      });

      //调用回调前就关闭,回调内关闭的话,用户5s内操作再次打开弹窗,会造成额外关闭情况。。

      queryOrderState(that.orderId)

        .then((res) => {

          uni.hideLoading();

          uni.showToast({

            title: res.message,

            icon: "none",

          });

          that.getOrderNumber(); //下单价格计算

          that.orderId = "";

          that.disabledBtn = false;

          that.isFirstEnter = true;

          that.isCalculate = false;

          this.disabledSwitch = false;

          if (res.code == 200) {

            //支付成功返回商品首页

            setTimeout(() => {

              uni.redirectTo({

                url: "/pages/index/index",

              });

            }, 1500);

          }

        })

        .catch(() => {

          uni.hideLoading();

        });

    } else {

      if (this.isFirstEnterPage === 2) {

        that.getOrderNumber(); //下单价格计算

      }

    }

  },

  methods: {

    //获取默认地址

    getAddress() {

      this.disabledBtn = true;

      getDefault().then((res) => {

        if (res.code == 200) {

          this.address = res.data;

          this.addressId = this.address.id;

          this.disabledBtn = false;

        } else {

          this.address = "";

          this.addressId = "";

          this.disabledBtn = false;

        }

      });

    },

    // 是否使用弈贝抵扣

    changeIsUseQuotaOrIntegral(e) {

      this.isOpenSwitch = e;

      if (this.isOpenSwitch) {

        this.isUseQuotaOrIntegral = 1;

      } else {

        this.isUseQuotaOrIntegral = 0;

      }

      this.isCalculate = true;

      this.getOrderNumber("", this.isUseQuotaOrIntegral);

    },

    //购买一件的显示数据

    getOrderNumber(num, isUseQuotaOrIntegral) {

      if (this.orderId == "") {

        uni.showLoading({

          title: "加载中",

        });

      }

      let params = {

        isUseQuotaOrIntegral: isUseQuotaOrIntegral,

      };

      this.disabledBtn = true;

      orderCalculate(this.productId, this.payNumber, params).then((res) => {

        if (res.code == 200) {

          if (this.orderId == "") {

            uni.hideLoading();

          }

          this.disabledBtn = false;

          this.detail = res.data;

          if (this.isFirstEnterPage === 1) {

            // 埋点

            let obj = {

              action: `进入订单确认页面-${this.detail.name}`, //事件

              serviceName: '商城', //模块名称

            }

            this.onEventClick(obj)

          }

          this.totalPrice = res.data.orderAmount;

          this.type = res.data.type;

          if (!this.isCalculate) {

            this.isUseQuotaOrIntegral = this.detail.isUseQuotaOrIntegral;

            if (this.detail.isUseQuotaOrIntegral == 0) {

              this.disabledSwitch = true;

              this.isOpenSwitch = false;

            } else {

              this.disabledSwitch = false;

              this.isOpenSwitch = true;

            }

          }

          if (this.type == 2 && num == 1) {

            //第一次请求和是实物商品,请求默认地址

            this.getAddress(); //获取默认地址

          }

          this.userLimitNum = res.data.userLimitNum; //用户允许下单的数量(不管限不限购都是取这个参数)

        } else {

          if (this.orderId == "") {

            uni.hideLoading();

          }

          uni.showToast({

            title: res.message,

            icon: "none",

          });

          this.disabledBtn = false;

          if (res.data.isCallBackIndex == 1) {

            //无库存时候返回商品首页

            let timer = null;

            clearTimeout(timer);

            timer = setTimeout(() => {

              uni.redirectTo({

                url: "/pages/index/index",

              });

            }, 3000);

          }

        }

      });

    },

    // 改变购买数量

    changePayNum(e) {

      this.payNumber = e.value;

      this.totalPayNumber = this.payNumber;

      this.isCalculate = false;

      this.getOrderNumber(); //实时计算总价

    },

    // 输入框失去焦点改变购买数量

    changePayNum2(value) {

      if (value.value == "") {

        this.$nextTick(() => {

          value.value = "1";

          this.payNumber = value.value;

          // this.totalPrice = this.listData.price

          this.totalPayNumber = this.payNumber;

        });

      }

    },

    // 支付方式切换支付宝

    selectAlipayWay() {

      this.showAlipayIcon = true;

      this.showWeChatIcon = false;

      this.payWay = "0";

      this.disabledBtn = false;

    },

    // 支付方式切换微信

    selectWeChatWay() {

      this.showAlipayIcon = false;

      this.showWeChatIcon = true;

      this.payWay = "1";

      this.disabledBtn = false;

    },

    // 购买

    orderConfirm(password) {

      // 埋点

      let obj = {

        action: `立即支付按钮点击-${this.detail.name}`, //事件

        serviceName: '商城', //模块名称

      }

      this.onEventClick(obj)

      if (this.addressId == "" && this.type == 2) {

        //实物商品要选择地址

        uni.showToast({

          title: "请先去新增地址",

          icon: "none",

        });

        return;

      }

      this.disabledBtn = true;

      let param = {

        orderAmount: this.totalPrice, // 订单金额

        payMethod: this.payWay, // 支付方式:0支付宝,1微信

        payType: this.detail.payType, // 支付方式【1、人民币 2、弈贝 3、积分 12、人民币+弈贝 13、人民币+积分 】

        placeNum: Number(this.payNumber), // 下单数量

        productId: this.productId, // 产品id

        addressId: this.addressId, // 地址

        isUseQuotaOrIntegral: this.isUseQuotaOrIntegral, // 是否使用弈贝或积分【0不使用,1使用,默认不使用】

        postage: this.detail.postage, // 邮费,为0时说明包邮

        quota: this.detail.quota, // 使用的弈贝数量

        reductionOfFunds: this.detail.reductionOfFunds, // 立减金额

        reductionOfQuota: this.detail.reductionOfQuota, // 弈贝立减金额

        totalRebateRatio: this.detail.totalRebateRatio, // 返利总弈贝

        totalUseIntegral: this.detail.totalUseIntegral, // 总花费积分

      };

      if (this.isopentax) {

        //开发票

        param.taxInfo = this.taxInfo;

      }

      if (

        this.quotaPassword != "" &&

        this.detail.payType == 2 &&

        this.detail.postage == 0

      ) {

        // 有弈贝密码赋值

        param.csmarCoinPass = password;

      }

      if (

        this.quotaPassword == "" &&

        this.detail.payType == 2 &&

        this.detail.postage == 0

      ) {

        // 没有弈贝密码停止下单

        let obj = {

          // 纯弈贝无邮费时,购买时输入的弈贝钱包账户密码

          name: "商品购买",

          yibei: this.detail.orderAmount,

        };

        this.disabledBtn = false;

        let isIOS = sessionStorage.getItem("isIOS");

        let isAndroid = sessionStorage.getItem("isAndroid");

        if (isAndroid) {

          window.ytyJsApi.onYibeiPay(JSON.stringify(obj));

        }

        if (isIOS) {

          window.webkit.messageHandlers.onYibeiPay.postMessage(

            JSON.stringify(obj)

          );

        }

        return;

      } else {

        addOrder(param).then((res) => {

          if (res.code == 200) {

            if (

              (this.detail.payType == 3 || this.detail.payType == 2) &&

              this.detail.postage == 0

            ) {

              // 纯弈贝或纯积分且无邮费直接更新订单状态

              this.orderId = res.data.orderId;

              uni.showLoading({

                title: "正在更新订单状态",

              });

              //调用回调前就关闭,回调内关闭的话,用户5s内操作再次打开弹窗,会造成额外关闭情况。。

              queryOrderState(this.orderId)

                .then((res) => {

                  uni.hideLoading();

                  uni.showToast({

                    title: res.message,

                    icon: "none",

                  });

                  this.orderId = "";

                  this.disabledBtn = false;

                  this.isFirstEnter = true;

                  if (res.code == 200) {

                    //支付成功返回商品首页

                    setTimeout(() => {

                      uni.redirectTo({

                        url: "/pages/index/index",

                      });

                    }, 1500);

                  }

                })

                .catch(() => {

                  uni.hideLoading();

                });

            } else {

              this.callApp(res.data);

            }

          } else {

            uni.showToast({

              title: res.message,

              icon: "none",

            });

            this.disabledBtn = false;

            if (res.data.isCallBackIndex == 1) {

              //无库存时候返回商品首页

              let timer = null;

              clearTimeout(timer);

              timer = setTimeout(() => {

                uni.redirectTo({

                  url: "/pages/index/index",

                });

              }, 3000);

            }

          }

        });

      }

    },

    //调起支付

    callApp(payParams) {

      this.orderId = payParams.orderId;

      this.disabledSwitch = true;

      if (this.payWay === "1") {

        let params = {

          package: payParams.package, // 固定值

          partnerId: "1557236512", // 微信支付商户号

          orderId: payParams.orderId, // 订单id

          nonceStr: payParams.nonceStr, // 签名

          timeStamp: payParams.timeStamp, // 时间戳

          out_trade_no: payParams.out_trade_no, // 订单号

          paySign: payParams.paySign,

          code_url: payParams.code_url,

          appid: payParams.appid,

          signType: payParams.signType,

          prepayid: payParams.prepayid,

        };

        this.text = params;

        params = JSON.stringify(params);

        if (sessionStorage.getItem("isIOS")) {

          window.webkit.messageHandlers.goBuyWx.postMessage(params);

        } else {

          if (window.ytyJsApi) {

            window.ytyJsApi.goBuyWx(params);

          } else {

            uni.showToast({

              title: "window.ytyJsApi.goBuyWx() is null",

              icon: "none",

            });

            this.disabledBtn = false;

          }

        }

      } else {

        let params2 = {

          orderId: payParams.orderId,

          body: payParams.body,

          out_trade_no: payParams.out_trade_no,

          appid: payParams.appid,

        };

        this.text = params2;

        params2 = JSON.stringify(params2);

        if (sessionStorage.getItem("isIOS")) {

          window.webkit.messageHandlers.goBuyAlipay.postMessage(params2);

        } else {

          if (window.ytyJsApi) {

            this.isFirstEnter = false;

            window.ytyJsApi.goBuyAlipay(params2);

          } else {

            uni.showToast({

              title: "window.ytyJsApi.goBuyAlipay() is null",

              icon: "none",

            });

            this.disabledBtn = false;

          }

        }

      }

    },

  },

};

</script>

<style lang="scss" scoped>

page {

        background-color: #F1F2F4;

        overflow: scroll;

    }

    .pay-order-page {

        padding-bottom: 240rpx;

        .content-box1 {

            background: #FFFFFF;

            border-radius: 14rpx;

            padding: 0 25rpx;

            margin: 16rpx 15rpx 0 15rpx;

            position: relative;

            .list-text {

                width: 100%;

                height: 76rpx;

                line-height: 76rpx;

                clear: both;

                &:first-child {

                    padding-top: 25rpx;

                }

                &:last-child {

                    padding-bottom: 25rpx;

                }

                .text-name {

                    font-size: 28rpx;

                    font-family: PingFang SC;

                    font-weight: 500;

                    color: #333333;

                    display: inline-block;

                }

                .price_ {

                    font-family: PingFang SC;

                    font-weight: bold;

                    color: #E93A40;

                    display: inline-block;

                    float: right;

                    .priceText {

                        font-size: 28rpx;

                    }

                    .unit {

                        font-size: 20rpx;

                    }

                    .unitText {

                        font-size: 24rpx;

                        font-family: PingFang SC;

                        font-weight: bold;

                        color: #E93A40;

                        margin-left: 8rpx;

                    }

                }

                .bill-name {

                    font-size: 28rpx;

                    color: #999999;

                    display: inline-block;

                    float: right;

                    margin-top: 10rpx;

                    margin-right: -8rpx;

                    .icon2 {

                        display: inline-block;

                    }

                }

            }

        }

        .content-box {

            background: #FFFFFF;

            border-radius: 14rpx;

            padding: 25rpx;

            margin: 16rpx 15rpx 0 15rpx;

            position: relative;

            .img {

                width: 170rpx;

                height: 150rpx;

                border-radius: 10rpx;

            }

            .text {

                width: 480rpx;

                font-size: 32rpx;

                font-family: PingFang SC;

                font-weight: bold;

                color: #333333;

                position: absolute;

                left: 220rpx;

                top: 50rpx;

                text-overflow: -o-ellipsis-lastline;

                overflow: hidden;

                text-overflow: ellipsis;

                -webkit-line-clamp: 1;

                line-clamp: 1;

                -webkit-box-orient: vertical;

                white-space:nowrap;

            }

            .price {

                font-family: PingFang SC;

                font-weight: bold;

                color: #E93A40;

                display: inline-block;

                position: absolute;

                left: 220rpx;

                top: 110rpx;

                .priceText {

                    font-size: 40rpx;

                }

                .unit {

                    font-size: 24rpx;

                }

                .discounts-price {

                    font-size: 24rpx;

                    font-family: PingFang SC;

                    font-weight: bold;

                    color: #E93A40;

                    margin-left: 6rpx;

                }

            }

            .tip-box {

                height: 34rpx;

                font-size: 20rpx;

                font-family: PingFang SC;

                font-weight: 500;

                color: #FFFFFF;

                background: linear-gradient(0deg, #F05F4B, #FD945E);

                border-radius: 0rpx 14rpx 0rpx 14rpx;

                text-align: center;

                padding: 0 13rpx;

                position: absolute;

                right: 0;

                top: 0;

            }

            .address-img {

                width: 60rpx;

                height: 60rpx;

                display: inline-block;

                position: absolute;

                top: calc(50% - 30rpx);

            }

            .address-text {

                width: calc(100% - 150rpx);

                font-size: 30rpx;

                font-family: PingFang SC;

                font-weight: bold;

                color: #333333;

                display: inline-block;

                margin-left: 80rpx;

                word-wrap: break-word;

            }

            .address-text2 {

                width: calc(100% - 150rpx);

                font-size: 26rpx;

                font-family: PingFang SC;

                font-weight: 500;

                color: #999999;

                margin-left: 80rpx;

                word-wrap: break-word;

            }

            .icon1 {

                color: #BEC0C7;

                position: absolute;

                right: 30rpx;

                top: calc(50% - 16rpx);

            }

        }

        .countBox {

            background: #FFFFFF;

            border-radius: 14rpx;

            padding: 24rpx 30rpx 24rpx 23rpx;

            margin: 16rpx 15rpx;

            .uForm {

                /deep/ .u-form-item__body__left__content__label {

                    font-size: 28rpx;

                    font-family: PingFang SC;

                    font-weight: 500;

                    color: #333333;

                }

                /deep/ .u-form-item__body {

                    height: 76rpx;

                }

            }

            .accountBox {

                margin-bottom: 24rpx;

            }

            .countNumBox,

            .accountBox {

                display: flex;

                justify-content: space-between;

                align-items: center;

                height: 76rpx;

                .title {

                    font-size: 28rpx;

                    font-family: PingFang SC;

                    font-weight: 500;

                    color: #333333;

                }

                .ipt {

                    margin-left: 34rpx;

                }

            }

        }

        .discountBox {

            background: #FFFFFF;

            border-radius: 14rpx;

            padding: 0 30rpx 0 23rpx;

            margin: 16rpx 15rpx;

            .isRebatesBox {

                height: 110rpx;

                display: flex;

                justify-content: space-between;

                align-items: center;

                .title {

                    font-size: 28rpx;

                    font-family: PingFang SC;

                    font-weight: 500;

                    color: #333333;

                }

                .rightBox {

                    display: flex;

                    align-items: center;

                    .discountText {

                        font-size: 24rpx;

                        font-family: PingFang SC;

                        font-weight: 500;

                        color: #999999;

                        margin-right: 30rpx;

                    }

                    .number {

                        font-size: 24rpx;

                        font-family: PingFang SC;

                        font-weight: 500;

                        color: #E93A40;

                    }

                }

                .isRebatesText {

                    font-size: 28rpx;

                    font-family: PingFang SC;

                    font-weight: bold;

                    color: #E93A40;

                }

            }

        }

        .payWay {

            background: #FFFFFF;

            border-radius: 14rpx;

            padding: 0 24rpx;

            margin: 16rpx 15rpx 0 15rpx;

            .topBox {

                height: 110rpx;

                display: flex;

                align-items: center;

                border-bottom: 2rpx solid #EDEEF1;

                .payText {

                    font-size: 28rpx;

                    font-family: PingFang SC;

                    font-weight: bold;

                    color: #333;

                }

            }

            .deductionBox {

                height: 110rpx;

                display: flex;

                align-items: center;

                justify-content: space-between;

                border-bottom: 2rpx solid #EDEEF1;

                font-size: 28rpx;

                font-family: PingFang SC;

                .title {

                    color: #333333;

                    font-weight: 500;

                }

                .deductionVal {

                    font-weight: bold;

                    color: #E93A40;

                }

            }

            .pay-bottom-box {

                height: 130rpx;

                display: flex;

                align-items: center;

                justify-content: center;

                .zhifubaoBox {

                    width: 50%;

                    display: flex;

                    align-items: center;

                    justify-content: center;

                    .icon {

                        width: 36rpx;

                        height: 36rpx;

                        border: 2rpx solid #DFDFDF;

                        border-radius: 50%;

                        display: flex;

                        justify-content: center;

                        align-items: center;

                        .icon-gouxuan1 {

                            font-size: 36rpx;

                            color: #fff;

                        }

                    }

                    .img {

                        width: 48rpx;

                        height: 48rpx;

                        display: inline-block;

                        margin-left: 40rpx;

                        margin-right: 18rpx;

                    }

                    .text {

                        font-size: 26rpx;

                        font-family: PingFang SC;

                        font-weight: 500;

                        color: #666666;

                    }

                }

                .line {

                    width: 2rpx;

                    height: 60rpx;

                    background: #EDEEF1;

                }

                .weixinBox {

                    width: 50%;

                    display: flex;

                    align-items: center;

                    justify-content: center;

                    .icon {

                        width: 36rpx;

                        height: 36rpx;

                        border-radius: 50%;

                        border: 2rpx solid #DFDFDF;

                        display: flex;

                        justify-content: center;

                        align-items: center;

                        .icon-gouxuan1 {

                            font-size: 36rpx;

                            color: #fff;

                        }

                    }

                    .img {

                        width: 48rpx;

                        height: 48rpx;

                        display: inline-block;

                        margin-left: 40rpx;

                        margin-right: 18rpx;

                    }

                    .text {

                        font-size: 26rpx;

                        font-family: PingFang SC;

                        font-weight: 500;

                        color: #666666;

                    }

                }

            }

        }

        .bottom-box {

            width: 100%;

            height: 180rpx;

            background-color: #fff;

            position: fixed;

            bottom: 0;

            .payBtnBox {

                width: 100%;

                background: #FFFFFF;

                box-shadow: 0rpx -2rpx 26rpx 0rpx rgba(99, 106, 113, 0.1);

                display: flex;

                align-items: center;

                justify-content: space-between;

                padding-bottom:80rpx;

                .leftBox {

                    margin-top: 30rpx;

                    margin-left: 39rpx;

                    display: flex;

                    .payNum {

                        font-size: 24rpx;

                        font-family: PingFang SC;

                        font-weight: 500;

                        color: #999999;

                        display: flex;

                        flex-direction: column;

                        .totalText {

                            font-size: 26rpx;

                            font-family: PingFang SC;

                            font-weight: bold;

                            color: #333333;

                            margin-top: 20rpx;

                        }

                    }

                    .totalBox {

                        font-family: PingFang SC;

                        font-weight: bold;

                        color: #E93A40;

                        display: flex;

                        flex-direction: column;

                        .presentBox {

                            background: #FFFFFF;

                            border-radius: 8rpx;

                            font-size: 24rpx;

                            font-family: PingFang SC;

                            font-weight: 500;

                            color: #999999;

                            margin-left: 14rpx;

                        }

                        .totalNum {

                            margin-top: 10rpx;

                            margin-left: 14rpx;

                            .priceText {

                                font-size: 40rpx;

                            }

                            .unit {

                                font-size: 24rpx;

                            }

                        }

                        .discounts-price {

                            font-size: 24rpx;

                            font-family: PingFang SC;

                            font-weight: bold;

                            color: #E93A40;

                            margin-top: -8rpx;

                        }

                    }

                }

                .rightBox {

                    .btn-primary {

                        width: 260rpx;

                        height: 80rpx;

                        background: linear-gradient(0deg, #6C8FF8, #BBCBFD);

                        border-radius: 40rpx;

                        font-size: 30rpx;

                        font-family: PingFang SC;

                        font-weight: bold;

                        color: #FFFFFF;

                        margin-top: 22rpx;

                        margin-right: 30rpx;

                        line-height: 80rpx;

                        text-align: center;

                    }

                    .btn-primary1 {

                        width: 260rpx;

                        height: 80rpx;

                        background: linear-gradient(0deg, #D8DAE0, #E6E7ED);

                        border-radius: 40rpx;

                        font-size: 30rpx;

                        font-family: PingFang SC;

                        font-weight: bold;

                        color: #FFFEFE;

                        margin-top: 22rpx;

                        margin-right: 30rpx;

                        line-height: 80rpx;

                        text-align: center;

                    }

                    /deep/ uni-button:after {

                        border: none;

                    }

                }

            }

        }

    }

    // 步进器样式

    .countNum {

        width: 180rpx;

        // height: 52rpx;

        background: #FFFFFF !important;

        border: 2rpx solid #DFDFDF;

        display: flex;

        border-radius: 6rpx;

   

        /deep/ .u-number-box__minus {

            width: 52rpx;

            background: #FFFFFF !important;

            display: flex;

            justify-content: center;

            align-items: center;

            border-right: 2rpx solid #DFDFDF;

        }

   

        /deep/ .u-number-box__input {

            width: 76rpx !important;

            margin: 0;

        }

   

        /deep/ .u-number-box__plus {

            width: 52rpx;

            background: #FFFFFF !important;

            display: flex;

            justify-content: center;

            align-items: center;

            border-left: 2rpx solid #DFDFDF;

        }

   

        /deep/.u-icon__icon {

            font-size: 24rpx !important;

        }

    }

</style>

页面用到的图片:

标签:uniapp,false,color,微信,安卓,detail,font,margin,size
From: https://blog.csdn.net/Mirs_Zhu/article/details/141188513

相关文章

  • 微信小程序 网络请求使用封装好的mina-request
    1、安装、安装不了的时候使用手机热点npminstallmina-request2、构建npm3、使用 importWxRequestfrom'mina-request'import {getStorage,clearStorage,setStorage}  from './storage'import {ApiPathConst,DESKeyConst} from './constVar'//对WxRe......
  • 安卓笔记—binder
    binder的c实现代码我没有读,下面的笔记都是从文章中学习的https://elinux.org/Android_Binderbinder有哪些功能?跨进程传输数据,跨进程传递时机。进程是分配内存的最小单位,因此进程间不共享内存。但是内核与进程之间是一对多的关系,也就是一个内核对应多个进程,因此binder......
  • 【微信小程序开发】——高校就业招聘系统小程序的制作(文末附源码——源码+万字文档+PP
    ......
  • 小白学习微信小程序的图片处理和预览技巧
    微信小程序的图片处理和预览技巧可以通过使用微信提供的API和组件来实现。在本文中,我们将详细介绍以下几个方面的内容:图片的上传和下载:包括用户上传图片和从服务器上下载图片的方法。图片的编辑和处理:包括图片的裁剪、旋转、缩放等操作。图片的预览和查看:包括在小程序中展示图......
  • uniapp 三级联动地区
    <!--本示例未包含完整css,获取外链css请参考上文,在hellouni-app项目中查看--><template><view><picker-view:indicator-style="indicatorStyle"@pickend="pickend":value="value"@change="bindChange"class=&q......
  • 陪玩系统app如何配置推送设置,手把手教你uniapp 如何打通消息推送
    进入uniapp开发者中心,开发者中心包名:每个app都有自己的一个身份证,叫做包名,很多地方会用到。包名去HBuilderX获取,点击发行app云打包可获取app包名说明:推送采用uniapp的官方推送,实际uniapp也是和个推合作,走的是个推的sdk。我们采用uniapp的推送1.0版本,不使用2.0,因为2.0必......
  • uniapp中如何使用uni.canvasToTempFilePath方法上传Canvas内容为图片,并理解其工作原理
    1.主函数uni.canvasToTempFilePath({ canvasId:'canvasid', fileType:'png', quality:1,//图片质量 success(res){ uni.uploadFile({ url:that.baseUrl+'/file/upload',//后端接口地址 name:'file&......
  • 安卓开发中的AppCompat框架
    在安卓开发中,AppCompat框架是一个极为重要的组件,它起源于AndroidSupportLibrary中的v7兼容包,现已迁移到AndroidX架构体系下的androidx.appcompat模块。AppCompat框架的主要目的是为了解决Android设备多样化和系统版本碎片化带来的问题,确保应用在不同版本的Android系统上提供......
  • 基于Dango+微信小程序的广西东盟旅游资源信息管理系统+80003(免费领源码)可做计算机毕业
    django广西-东盟旅游资源信息管理系统小程序摘 要在社会快速发展和人们生活水平提高的影响下,旅游产业蓬勃发展,旅游形式也变得多样化,使旅游资源信息的管理变得比过去更加困难。依照这一现实为基础,设计一个快捷而又方便的基于小程序的旅游资源信息管理系统是一项十分重要并且......
  • 微信小程序备案和认证踩的坑
    个人账号的名字要求:小程序名称涉及企业/单位/商城等非个人性质,请修改为与实际小程序业务有关的名称。比如:xx平台、xx材料、材料信息、查询等字眼都是通用词汇,个人性质的账号不会过审。个人建议:因为小程序名字一年只能修改两次,所以起名字就要慎重!建议进入驳回页面,点击右上角的联系......