当前位置:首页 > VUE

vue实现订单列表

2026-02-24 04:29:35VUE

Vue 实现订单列表功能

1. 创建订单列表组件 新建一个 Vue 组件文件 OrderList.vue,用于展示订单列表。组件包含模板、脚本和样式三部分。

<template>
  <div class="order-list">
    <h3>订单列表</h3>
    <table>
      <thead>
        <tr>
          <th>订单编号</th>
          <th>商品名称</th>
          <th>数量</th>
          <th>金额</th>
          <th>状态</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="order in orders" :key="order.id">
          <td>{{ order.id }}</td>
          <td>{{ order.name }}</td>
          <td>{{ order.quantity }}</td>
          <td>{{ order.price }}</td>
          <td>{{ order.status }}</td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      orders: [
        { id: 1, name: '商品A', quantity: 2, price: 100, status: '已支付' },
        { id: 2, name: '商品B', quantity: 1, price: 200, status: '待发货' },
        { id: 3, name: '商品C', quantity: 3, price: 150, status: '已完成' }
      ]
    }
  }
}
</script>

<style scoped>
.order-list {
  margin: 20px;
}
table {
  width: 100%;
  border-collapse: collapse;
}
th, td {
  border: 1px solid #ddd;
  padding: 8px;
  text-align: left;
}
th {
  background-color: #f2f2f2;
}
</style>

2. 从后端获取订单数据 实际项目中,订单数据通常从后端 API 获取。使用 axios 发送 HTTP 请求获取数据。

vue实现订单列表

<script>
import axios from 'axios';

export default {
  data() {
    return {
      orders: []
    }
  },
  created() {
    this.fetchOrders();
  },
  methods: {
    fetchOrders() {
      axios.get('/api/orders')
        .then(response => {
          this.orders = response.data;
        })
        .catch(error => {
          console.error('获取订单失败:', error);
        });
    }
  }
}
</script>

3. 添加分页功能 对于大量订单数据,实现分页功能提升用户体验。

<template>
  <div class="order-list">
    <!-- 表格部分同上 -->
    <div class="pagination">
      <button @click="prevPage" :disabled="currentPage === 1">上一页</button>
      <span>第 {{ currentPage }} 页</span>
      <button @click="nextPage" :disabled="currentPage === totalPages">下一页</button>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      orders: [],
      currentPage: 1,
      pageSize: 10,
      totalOrders: 0
    }
  },
  computed: {
    totalPages() {
      return Math.ceil(this.totalOrders / this.pageSize);
    }
  },
  methods: {
    fetchOrders() {
      axios.get('/api/orders', {
        params: {
          page: this.currentPage,
          size: this.pageSize
        }
      })
      .then(response => {
        this.orders = response.data.orders;
        this.totalOrders = response.data.total;
      });
    },
    prevPage() {
      this.currentPage--;
      this.fetchOrders();
    },
    nextPage() {
      this.currentPage++;
      this.fetchOrders();
    }
  }
}
</script>

4. 实现订单筛选和排序 添加筛选和排序功能,方便用户查找特定订单。

vue实现订单列表

<template>
  <div class="order-list">
    <div class="filters">
      <select v-model="filterStatus">
        <option value="">所有状态</option>
        <option value="paid">已支付</option>
        <option value="shipped">已发货</option>
        <option value="completed">已完成</option>
      </select>
      <select v-model="sortField">
        <option value="id">按订单号</option>
        <option value="price">按金额</option>
      </select>
    </div>
    <!-- 表格和分页部分 -->
  </div>
</template>

<script>
export default {
  data() {
    return {
      filterStatus: '',
      sortField: 'id'
    }
  },
  methods: {
    fetchOrders() {
      axios.get('/api/orders', {
        params: {
          page: this.currentPage,
          size: this.pageSize,
          status: this.filterStatus,
          sort: this.sortField
        }
      })
      .then(response => {
        this.orders = response.data.orders;
      });
    }
  },
  watch: {
    filterStatus() {
      this.currentPage = 1;
      this.fetchOrders();
    },
    sortField() {
      this.fetchOrders();
    }
  }
}
</script>

5. 添加订单详情查看功能 为每个订单添加详情查看功能,使用 Vue Router 实现页面跳转。

<template>
  <tr v-for="order in orders" :key="order.id">
    <!-- 其他单元格 -->
    <td>
      <router-link :to="`/orders/${order.id}`">查看详情</router-link>
    </td>
  </tr>
</template>

在 router.js 中配置订单详情路由:

const routes = [
  {
    path: '/orders/:id',
    component: () => import('./views/OrderDetail.vue')
  }
];

以上实现涵盖了订单列表的基本功能,包括数据展示、分页、筛选排序和详情查看。根据实际项目需求,可以进一步扩展功能,如订单状态修改、批量操作等。

标签: 订单列表
分享给朋友:

相关文章

jquery 列表

jquery 列表

jQuery 列表操作 jQuery 提供了多种方法来操作 HTML 列表(如 <ul> 或 <ol>)。以下是一些常见的操作方式: 动态添加列表项 使用 append()…

vue实现搜索列表

vue实现搜索列表

Vue 实现搜索列表功能 在 Vue 中实现搜索列表功能通常需要以下几个关键步骤: 数据绑定与列表渲染 使用 v-model 绑定搜索输入框,监听用户输入。通过 v-for 指令渲染过滤后的列表数据…

vue实现列表页

vue实现列表页

Vue 实现列表页的方法 数据绑定与渲染 使用 v-for 指令动态渲染列表数据,结合 :key 确保渲染性能。示例代码: <template> <ul> <…

vue实现列表分页

vue实现列表分页

Vue 列表分页实现方法 基础分页实现 安装依赖(如使用第三方库) npm install vue-paginate 模板部分示例 <template> <div>…

vue实现列表过渡

vue实现列表过渡

vue实现列表过渡的方法 在Vue中,可以使用内置的<transition-group>组件来实现列表项的过渡效果。该组件专门为动态列表设计,能够处理元素的添加、删除和顺序变化。 基本…

vue列表展开实现

vue列表展开实现

Vue 列表展开实现方法 使用 v-for 和 v-show 控制展开状态 通过 v-for 渲染列表项,配合 v-show 控制子内容的显示隐藏。需要为每个列表项维护一个展开状态。 <te…