当前位置:首页 > uni-app

uniapp结算页面

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

uniapp 结算页面实现

页面布局设计

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

uniapp结算页面

<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 部分定义响应式数据,计算总价逻辑:

uniapp结算页面

<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:

// 在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实现转页面

Vue 实现页面跳转的方法 在 Vue 中实现页面跳转通常可以通过以下几种方式完成,具体取决于项目结构和需求。 使用 router-link 组件 router-link 是 Vue Router…

vue实现页面切换

vue实现页面切换

Vue 实现页面切换的方法 在 Vue 中实现页面切换通常可以通过以下几种方式完成,具体选择取决于项目需求和架构设计。 使用 Vue Router Vue Router 是 Vue.js 官方推荐…

js实现页面跳转

js实现页面跳转

使用 window.location.href 通过修改 window.location.href 实现页面跳转,直接赋值目标 URL 即可。 window.location.href = 'h…

实现vue页面回退

实现vue页面回退

监听浏览器返回事件 在Vue组件中使用beforeRouteLeave导航守卫,可以监听路由变化。该方法在离开当前路由前触发,适用于需要确认或保存数据的场景。 beforeRouteLeave(…

vue实现页面缓存

vue实现页面缓存

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

css制作音乐盒页面

css制作音乐盒页面

音乐盒页面设计思路 音乐盒页面通常需要结合音频播放功能与视觉设计。以下是实现一个基础音乐盒页面的关键步骤。 HTML结构搭建 基础HTML需包含音频播放器控件和播放列表: <!DOCTY…