当前位置:首页 > VUE

vue组件实现员工列表

2026-02-21 13:00:13VUE

实现员工列表的Vue组件

组件结构设计

创建一个名为EmployeeList.vue的单文件组件,包含模板、脚本和样式三部分。模板部分使用<table><ul>标签展示列表数据,脚本部分处理数据逻辑。

<template>
  <div class="employee-list">
    <table>
      <thead>
        <tr>
          <th>ID</th>
          <th>姓名</th>
          <th>部门</th>
          <th>职位</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="employee in employees" :key="employee.id">
          <td>{{ employee.id }}</td>
          <td>{{ employee.name }}</td>
          <td>{{ employee.department }}</td>
          <td>{{ employee.position }}</td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

数据定义与获取

<script>部分定义员工数据,可通过API获取或本地静态数据。使用data()函数返回响应式数据对象。

<script>
export default {
  data() {
    return {
      employees: [
        { id: 1, name: '张三', department: '技术部', position: '前端工程师' },
        { id: 2, name: '李四', department: '产品部', position: '产品经理' }
      ]
    }
  },
  methods: {
    async fetchEmployees() {
      try {
        const response = await axios.get('/api/employees');
        this.employees = response.data;
      } catch (error) {
        console.error('获取员工列表失败:', error);
      }
    }
  },
  mounted() {
    this.fetchEmployees();
  }
}
</script>

样式优化

添加CSS样式美化表格,使用Scoped样式确保样式只作用于当前组件。

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

组件交互功能

增加排序、筛选或分页功能提升用户体验。使用计算属性实现客户端排序或筛选。

<script>
export default {
  data() {
    return {
      employees: [],
      sortField: 'id',
      sortDirection: 'asc'
    }
  },
  computed: {
    sortedEmployees() {
      return [...this.employees].sort((a, b) => {
        let modifier = this.sortDirection === 'asc' ? 1 : -1;
        return a[this.sortField] > b[this.sortField] ? modifier : -modifier;
      });
    }
  },
  methods: {
    sortBy(field) {
      if (this.sortField === field) {
        this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';
      } else {
        this.sortField = field;
        this.sortDirection = 'asc';
      }
    }
  }
}
</script>

组件复用与Props

通过props接收外部传入的员工数据,使组件更通用。

<script>
export default {
  props: {
    initialEmployees: {
      type: Array,
      default: () => []
    }
  },
  data() {
    return {
      employees: this.initialEmployees
    }
  }
}
</script>

使用示例

在父组件中引入并使用EmployeeList组件,可传入初始数据或依赖组件内部获取数据。

<template>
  <div>
    <employee-list :initial-employees="preloadedEmployees" />
  </div>
</template>

<script>
import EmployeeList from './EmployeeList.vue';

export default {
  components: { EmployeeList },
  data() {
    return {
      preloadedEmployees: [
        { id: 3, name: '王五', department: '市场部', position: '市场专员' }
      ]
    }
  }
}
</script>

vue组件实现员工列表

标签: 组件员工
分享给朋友:

相关文章

vue实现组件拖放

vue实现组件拖放

Vue 实现组件拖放的方法 使用 HTML5 原生拖放 API HTML5 提供了原生的拖放 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 dr…

vue radio组件实现

vue radio组件实现

Vue Radio 组件实现 在 Vue 中实现 Radio 组件可以通过原生 HTML 的 <input type="radio"> 结合 Vue 的响应式特性,或者使用第三方 UI 库…

vue实现穿梭框树组件

vue实现穿梭框树组件

Vue 穿梭框树组件实现 穿梭框树组件通常结合了树形结构和穿梭框功能,允许用户在左右两栏之间移动树节点数据。以下是基于 Vue 的实现方案: 核心功能设计 数据结构 树形数据通常采用嵌套结构,例如…

vue实现组件

vue实现组件

Vue 实现组件的方法 Vue 中实现组件可以通过多种方式,包括全局注册、局部注册、单文件组件(SFC)等。以下是常见的实现方法。 全局注册组件 全局注册的组件可以在任何 Vue 实例或组件中使用…

vue实现拖拽实现组件嵌套

vue实现拖拽实现组件嵌套

实现拖拽组件嵌套的核心思路 Vue中实现拖拽组件嵌套需要结合拖拽库(如vuedraggable)和组件递归渲染。核心在于动态管理嵌套数据结构,并通过事件传递实现层级更新。 安装必要依赖 推荐使用v…

uniapp 滑动组件

uniapp 滑动组件

uniapp 滑动组件实现方法 使用swiper组件 uniapp内置的swiper组件可以实现滑动效果,适用于轮播图或页面切换场景。 示例代码: <swiper :indicator-…