任务管理卡片是一种常见的 UI 元素,广泛应用于项目管理、待办事项列表和任务跟踪等场景。它提供了一种直观且高效的方式来管理和跟踪任务,并支持各种操作,例如创建、编辑、删除和重新排序。
本代码演示了一个基于 Vue.js 的任务管理卡片,具有以下基本功能:
1. 创建任务列表
<template>
<div class="task-list">
<task-item v-for="task in tasks" :key="task.id" :task="task" />
</div>
</template>
2. 定义任务项组件
<template>
<div class="task-item">
<div class="task-title">{{ task.title }}</div>
<div class="task-description">{{ task.description }}</div>
<div class="task-status {{ task.status.toLowerCase() }}">{{ task.status }}</div>
</div>
</template>
3. 实现拖拽排序
<template>
<draggable v-model="tasks" @update="onSortUpdate">
<task-list :tasks="tasks" />
</draggable>
</template>
<script>
import { Draggable } from 'sortablejs/vue';
export default {
components: { Draggable },
methods: {
onSortUpdate(evt) {
// 更新任务顺序
}
}
}
</script>
4. 数据持久化
<script>
import { ref, onMounted, onBeforeUnmount } from 'vue';
export default {
setup() {
const tasks = ref(JSON.parse(localStorage.getItem('tasks') || '[]'));
onMounted(() => {
// 监听任务变化并更新本地存储
});
onBeforeUnmount(() => {
// 在组件销毁前将任务数据存储到本地存储
});
return { tasks };
}
}
</script>
5. 搜索过滤
<template>
<input v-model="searchQuery" placeholder="Search..." />
</template>
<script>
export default {
data() {
return { searchQuery: '' };
},
computed: {
filteredTasks() {
return this.tasks.filter(task => {
return task.title.includes(this.searchQuery) || task.description.includes(this.searchQuery);
});
}
}
}
</script>
通过这段代码的开发,我收获了以下经验:
未来,该任务管理卡片功能可以进一步拓展和优化,例如: