用vue写一个订单界面
时间: 2024-04-30 22:17:24 浏览: 10
好的,我能为您提供代码示例。
首先,您需要编写一个Vue组件来渲染订单界面。该组件可以包含以下部分:
1. 订单列表 - 用于显示用户的订单信息,例如订单号、订单日期、产品名称、价格等。
2. 订单搜索框 - 允许用户输入搜索词并过滤订单列表。
3. 订单过滤器 - 允许用户根据订单状态、日期等过滤订单列表。
4. 订单详情 - 当用户单击订单列表中的某个订单时,应显示该订单的详细信息,例如产品名称、价格、数量等。
以下是示例代码:
```vue
<template>
<div class="orders">
<div class="search">
<input type="text" placeholder="搜索订单" v-model="searchTerm" />
</div>
<div class="filters">
<select v-model="statusFilter">
<option value="">所有状态</option>
<option value="pending">待处理</option>
<option value="approved">已批准</option>
<option value="shipped">已发货</option>
<option value="delivered">已送达</option>
</select>
<input type="date" v-model="dateFilter" placeholder="选择日期" />
</div>
<table>
<thead>
<tr>
<th>订单号</th>
<th>日期</th>
<th>产品名称</th>
<th>价格</th>
<th>状态</th>
</tr>
</thead>
<tbody>
<tr v-for="order in filteredOrders" :key="order.id" @click="showDetails(order)">
<td>{{ order.id }}</td>
<td>{{ order.date }}</td>
<td>{{ order.product }}</td>
<td>{{ order.price }}</td>
<td>{{ order.status }}</td>
</tr>
</tbody>
</table>
<div v-if="selectedOrder" class="details">
<h2>订单详情</h2>
<p>订单号: {{ selectedOrder.id }}</p>
<p>日期: {{ selectedOrder.date }}</p>
<p>产品名称: {{ selectedOrder.product }}</p>
<p>价格: {{ selectedOrder.price }}</p>
<p>数量: {{ selectedOrder.quantity }}</p>
<p>状态: {{ selectedOrder.status }}</p>
</div>
</div>
</template>
<script>
export default {
data() {
return {
orders: [
{
id: "1001",
date: "2021-01-01",
product: "手机",
price: "1999",
quantity: "1",
status: "approved"
},
{
id: "1002",
date: "2021-01-02",
product: "电脑",
price: "4999",
quantity: "1",
status: "shipped"
},
{
id: "1003",
date: "2021-01-03",
product: "平板",
price: "2999",
quantity: "1",
status: "delivered"
}
],
searchTerm: "",
statusFilter: "",
dateFilter: "",
selectedOrder: null
};
},
computed: {
filteredOrders() {
let filtered = this.orders;
if (this.searchTerm) {
filtered = filtered.filter(order =>
order.product.toLowerCase().includes(this.searchTerm.toLowerCase())
);
}
if (this.statusFilter) {
filtered = filtered.filter(order => order.status === this.statusFilter);
}
if (this.dateFilter) {
filtered = filtered.filter(order => order.date === this.dateFilter);
}
return filtered;
}
},
methods: {
showDetails(order) {
this.selectedOrder = order;
}
}
};
</script>
<style>
table {
width: 100%;
border-collapse: collapse;
}
th,
td {
padding: 10px;
text-align: left;
border-bottom: 1px solid #ddd;
}
tr:hover {
background-color: #f5f5f5;
}
.filters {
margin: 20px 0;
}
.details {
border: 1px solid #ddd;
padding: 20px;
margin-top: 20px;
}
</style>
```
以上代码将生成一个Vue组件,其名称为"orders"。组件将渲染包含订单列表、搜索框、过滤器和订单详情的界面。您可以将此组件包含在您的Vue应用程序中,并对其进行修改以适应您的用例。