当前位置:首页 > uni-app

uniapp结算页面

2026-01-16 16:12:00uni-app

uniapp 结算页面实现

页面布局设计

结算页面通常包含商品列表、价格汇总、收货地址和支付方式选择。使用 uni-list 组件展示商品信息,uni-forms 收集用户收货信息,radio-group 选择支付方式。

<template>
  <view class="checkout-container">
    <uni-list>
      <uni-list-item v-for="item in cartItems" :key="item.id" :title="item.name" :note="`¥${item.price} x ${item.quantity}`"></uni-list-item>
    </uni-list>

    <view class="price-section">
      <text>总金额: ¥{{totalPrice}}</text>
    </view>

    <uni-forms ref="form" :model="formData">
      <uni-forms-item label="收货地址" name="address">
        <uni-easyinput v-model="formData.address" placeholder="请输入详细地址"></uni-easyinput>
      </uni-forms-item>
    </uni-forms>

    <radio-group @change="handlePaymentChange">
      <label v-for="method in paymentMethods" :key="method.value">
        <radio :value="method.value" :checked="method.checked"/> {{method.name}}
      </label>
    </radio-group>

    <button type="primary" @click="submitOrder">提交订单</button>
  </view>
</template>

数据绑定与计算

script 部分定义响应式数据,计算总价逻辑:

<script>
export default {
  data() {
    return {
      cartItems: [
        {id: 1, name: '商品A', price: 99, quantity: 2},
        {id: 2, name: '商品B', price: 199, quantity: 1}
      ],
      formData: {
        address: ''
      },
      paymentMethods: [
        {name: '微信支付', value: 'wechat', checked: true},
        {name: '支付宝', value: 'alipay'}
      ],
      selectedPayment: 'wechat'
    }
  },
  computed: {
    totalPrice() {
      return this.cartItems.reduce((sum, item) => sum + item.price * item.quantity, 0)
    }
  },
  methods: {
    handlePaymentChange(e) {
      this.selectedPayment = e.detail.value
    },
    submitOrder() {
      uni.showLoading({title: '订单处理中'})
      // 调用订单API
      setTimeout(() => {
        uni.hideLoading()
        uni.redirectTo({url: '/pages/order/success'})
      }, 1500)
    }
  }
}
</script>

样式优化

添加基础样式增强用户体验:

<style>
.checkout-container {
  padding: 20rpx;
}
.price-section {
  padding: 30rpx 0;
  text-align: right;
  font-weight: bold;
  border-bottom: 1px solid #eee;
}
radio-group {
  margin: 40rpx 0;
}
radio-group label {
  display: block;
  padding: 20rpx 0;
}
</style>

支付功能集成

根据选择的支付方式调用不同API:

uniapp结算页面

// 在submitOrder方法中扩展支付逻辑
if(this.selectedPayment === 'wechat') {
  uni.requestPayment({
    provider: 'wxpay',
    orderInfo: { /* 从服务器获取的支付参数 */ },
    success: () => { /* 支付成功处理 */ },
    fail: (err) => { /* 失败处理 */ }
  })
} else {
  uni.requestPayment({
    provider: 'alipay',
    orderInfo: { /* 支付宝支付参数 */ }
  })
}

注意事项

  1. 真实项目需对接后端API获取动态订单数据
  2. 支付参数应从服务端获取,避免前端硬编码敏感信息
  3. 添加表单验证确保必填字段完整
  4. 考虑添加优惠券抵扣功能
  5. 移动端需特别注意键盘弹出时的页面布局调整

标签: 页面uniapp
分享给朋友:

相关文章

vue实现页面缓存

vue实现页面缓存

使用 <keep-alive> 组件实现缓存 Vue 内置的 <keep-alive> 组件可以缓存动态组件或路由组件。通过包裹需要缓存的组件,可以保留其状态避免重复渲染。…

Vue实现lagger页面

Vue实现lagger页面

Vue实现懒加载页面的方法 懒加载(Lazy Loading)是一种优化技术,用于延迟加载页面或组件,直到它们真正需要显示时才加载。以下是几种在Vue中实现懒加载页面的常见方法: 使用Vue Rou…

uniapp教程

uniapp教程

uniapp 基础介绍 uniapp 是一个基于 Vue.js 的跨平台开发框架,支持一次开发,多端发布(如微信小程序、H5、App、快应用等)。其核心优势在于代码复用率高,学习成本低,适合快速构建多…

uniapp极光推送

uniapp极光推送

uniapp极光推送集成步骤 准备工作 注册极光推送开发者账号,创建应用获取AppKey。确保uniapp项目已配置好原生插件支持。 安装插件 在uniapp项目manifest.json文件中,选…

uniapp打包

uniapp打包

uniapp打包步骤 H5平台打包 在项目根目录运行以下命令生成H5资源文件: npm run build:h5 打包完成后,文件默认输出到/dist/build/h5目录,可直接部署到Web服务器…

uniapp设置title

uniapp设置title

设置页面标题的方法 在UniApp中设置页面标题可以通过以下几种方式实现,适用于不同场景和需求。 通过pages.json配置 在pages.json文件中,可以为每个页面单独配置导航栏标题。找到对…