当前位置:首页 > VUE

vue实现填写订单

2026-03-10 12:08:13VUE

Vue 实现填写订单功能

数据绑定与表单结构

使用 Vue 的 v-model 实现表单数据双向绑定,构建订单表单结构:

<template>
  <form @submit.prevent="submitOrder">
    <div>
      <label>收货人姓名</label>
      <input v-model="order.name" type="text" required>
    </div>
    <div>
      <label>联系电话</label>
      <input v-model="order.phone" type="tel" required>
    </div>
    <div>
      <label>收货地址</label>
      <textarea v-model="order.address" required></textarea>
    </div>
    <div>
      <label>商品列表</label>
      <div v-for="(item, index) in order.items" :key="index">
        {{ item.name }} - 单价: {{ item.price }} 数量: 
        <input v-model.number="item.quantity" type="number" min="1">
      </div>
    </div>
    <button type="submit">提交订单</button>
  </form>
</template>

订单数据处理

在 Vue 实例中定义订单数据和提交方法:

<script>
export default {
  data() {
    return {
      order: {
        name: '',
        phone: '',
        address: '',
        items: [
          { id: 1, name: '商品A', price: 100, quantity: 1 },
          { id: 2, name: '商品B', price: 200, quantity: 1 }
        ]
      }
    }
  },
  methods: {
    submitOrder() {
      // 计算总价
      const total = this.order.items.reduce(
        (sum, item) => sum + item.price * item.quantity, 0
      )

      // 组装提交数据
      const orderData = {
        ...this.order,
        total,
        createTime: new Date().toISOString()
      }

      console.log('提交订单:', orderData)
      // 实际项目中这里调用API接口
    }
  }
}
</script>

表单验证增强

使用 Vue 的 computed 属性实现实时验证:

vue实现填写订单

computed: {
  formValid() {
    return (
      this.order.name.trim() &&
      /^1[3-9]\d{9}$/.test(this.order.phone) &&
      this.order.address.trim() &&
      this.order.items.every(item => item.quantity > 0)
    )
  }
}

订单总价实时计算

添加总价显示区域:

<div class="total-price">
  订单总价: {{ totalPrice }}元
</div>

对应计算属性:

vue实现填写订单

computed: {
  totalPrice() {
    return this.order.items.reduce(
      (sum, item) => sum + item.price * item.quantity, 0
    )
  }
}

提交按钮状态控制

根据验证结果控制按钮状态:

<button 
  type="submit" 
  :disabled="!formValid"
  :class="{ 'disabled-btn': !formValid }"
>
  提交订单
</button>

样式优化

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

<style scoped>
input, textarea {
  border: 1px solid #ddd;
  padding: 8px;
  margin: 5px 0;
  width: 100%;
}
button {
  background: #42b983;
  color: white;
  padding: 10px 15px;
  border: none;
  cursor: pointer;
}
button.disabled-btn {
  background: #ccc;
  cursor: not-allowed;
}
.total-price {
  font-weight: bold;
  margin: 15px 0;
  font-size: 18px;
}
</style>

标签: 订单vue
分享给朋友:

相关文章

vue的实现

vue的实现

Vue 的实现原理 Vue 是一个渐进式 JavaScript 框架,其核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是 Vue 实现的主要技术细节。 响应式系统 Vue 的响…

分页实现vue

分页实现vue

分页实现(Vue) 在Vue中实现分页功能通常需要结合前端分页逻辑和后端API支持。以下是两种常见的实现方式: 前端分页实现 适用于数据量较小的情况,直接在客户端完成分页逻辑。 <templ…

vue实现长按

vue实现长按

Vue 实现长按功能的方法 在 Vue 中实现长按功能可以通过原生事件监听或自定义指令完成。以下是几种常见实现方式: 使用原生事件监听 通过 @mousedown 和 @mouseup 或 @tou…

vue 实现树状

vue 实现树状

Vue 实现树状结构的方法 递归组件实现树状结构 递归组件是 Vue 中实现树状结构的常见方法。通过组件自身调用自身,可以轻松构建多层级树状结构。 <template> <ul…

vue实现flvvideo

vue实现flvvideo

vue-flv-player 实现 FLV 视频播放 安装依赖包 npm install flv.js vue-flv-player 基础组件引入 <template> <v…

vue 实现工具

vue 实现工具

Vue 实现工具的方法 使用 Vue 实现工具功能可以通过多种方式完成,具体取决于工具的类型和需求。以下是几种常见的方法: 组件化实现 创建一个独立的 Vue 组件来封装工具功能。例如,实现一个计…