<template>
<div>
<h2>任务列表h2>
<div>
<input
v-model="newTask"
@keyup.enter="addTask"
placeholder="输入新任务"
>
<button @click="addTask">添加button>
div>
<ul>
<li
v-for="task in filteredTasks"
:key="task.id"
:class="{ 'completed': task.completed }"
>
<input
type="checkbox"
v-model="task.completed"
>
<span v-if="!task.completed">{{ task.text }}span>
<span v-else style="text-decoration: line-through;">
{{ task.text }}
span>
<button @click="removeTask(task.id)">删除button>
li>
ul>
<div>
<button @click="filter = 'all'">全部button>
<button @click="filter = 'active'">进行中button>
<button @click="filter = 'completed'">已完成button>
div>
<p v-show="tasks.length === 0">暂无任务p>
div>
template>
<script setup>
import { ref, computed } from 'vue'
const tasks = ref([])
const newTask = ref('')
const filter = ref('all')
const filteredTasks = computed(() => {
switch (filter.value) {
case 'active':
return tasks.value.filter(task => !task.completed)
case 'completed':
return tasks.value.filter(task => task.completed)
default:
return tasks.value
}
})
const addTask = () => {
if (newTask.value.trim()) {
tasks.value.push({
id: Date.now(),
text: newTask.value,
completed: false
})
newTask.value = ''
}
}
const removeTask = (id) => {
const index = tasks.value.findIndex(task => task.id === id)
if (index > -1) {
tasks.value.splice(index, 1)
}
}
script>