vue实现填写订单
Vue 实现填写订单功能
数据绑定与表单验证
使用 Vue 的 v-model 实现表单数据双向绑定,结合计算属性动态计算总价。表单验证可采用 Vue 自带的验证或第三方库如 VeeValidate。
<template>
<form @submit.prevent="submitOrder">
<input v-model="order.name" placeholder="姓名" required>
<input v-model="order.phone" placeholder="电话" pattern="[0-9]{11}">
<select v-model="order.product">
<option v-for="item in products" :value="item.id">{{ item.name }}</option>
</select>
<button type="submit">提交订单</button>
</form>
</template>
<script>
export default {
data() {
return {
order: {
name: '',
phone: '',
product: ''
},
products: [
{ id: 1, name: '商品A', price: 100 },
{ id: 2, name: '商品B', price: 200 }
]
}
},
methods: {
submitOrder() {
// 提交逻辑
}
}
}
</script>
动态价格计算
通过计算属性实现实时价格计算,包括商品单价、数量折扣等。

computed: {
totalPrice() {
const product = this.products.find(p => p.id === this.order.product)
return product ? product.price * this.order.quantity : 0
}
}
订单提交与API交互
使用 axios 或 fetch 与后端 API 交互,处理订单提交。

methods: {
async submitOrder() {
try {
const response = await axios.post('/api/orders', this.order)
console.log('订单创建成功', response.data)
} catch (error) {
console.error('订单提交失败', error)
}
}
}
订单状态管理
对于复杂应用,建议使用 Vuex 管理订单状态,保持数据一致性。
// store/modules/order.js
export default {
state: {
currentOrder: null,
orders: []
},
mutations: {
SET_ORDER(state, order) {
state.currentOrder = order
}
},
actions: {
async createOrder({ commit }, orderData) {
const response = await api.createOrder(orderData)
commit('SET_ORDER', response.data)
}
}
}
用户交互优化
添加加载状态、成功提示和错误处理,提升用户体验。
<template>
<button :disabled="isSubmitting">
{{ isSubmitting ? '提交中...' : '提交订单' }}
</button>
</template>
这些方法涵盖了 Vue 实现订单填写功能的主要方面,可根据实际需求进行调整和扩展。






