基于Vue2 + Element 实现任务列表管理功能的详细教程

前言:本文介绍的是如何从0开始搭建Vue2项目到1实现对任务添加、删除和筛选的功能,🔗 相关链接Vue 入门(安装与应用超详细教程)


❤ 【作者主页—📚优质文章、获取更多优质源码】

目录

一 . 项目搭建

1.1 安装node.js

1.2 配置环境变量

1.3 创建Vue项目

二. 打开项目

三. 运行项目

四. 项目展示

五. 更多干货


一 . 项目搭建

1.1 安装node.js

官网:下载 | Node.js 中文网,根据自己的系统进行选择

下载完成之后,将.zip文件进行解压,然后 win+R 输入cmd输出node -v,有版本号即安装成功

 

1.2 配置环境变量

右键此电脑选择属性->高级系统设置->环境变量->系统变量->双击Path->新建->输入解压后的文件夹路径,如D:\env\node-v22.15.0-win-x64\node-v22.15.0-win-x64,最后一定要点击三次确定

1.3 创建Vue项目

使用 Vue CLI 创建项目,右键命令提示符,选择以管理员身份运行,执行以下命令

npm install -g @vue/cli
vue create todo-list # 创建一个名为todo-list的Vue项目

下一步进入项目目录

cd todo-list

安装 Vue 2 

npm install vue@2

在项目目录下安装 Element UI

npm i element-ui -S

执行完以上步骤后,创建Vue项目完成,如下图所示

二. 打开项目

使用vscode、hbuilder等工具打开都可以,目录结构如下

在 main.js 中引入 Element UI,打开src/main.js,添加以下代码

import Vue from 'vue'
import App from './App.vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'Vue.use(ElementUI)Vue.config.productionTip = falsenew Vue({render: h => h(App),
}).$mount('#app')

接着编写App.vue,添加以下<template>部分代码

<template><div id="app"><h3>To Do List</h3><el-form :inline="true" class="add-task-form"><el-form-item><el-select v-model="selectedType" placeholder="请选择类型!"><el-option label="普通任务" value="normal"></el-option><el-option label="重要任务" value="important"></el-option><el-option label="紧急任务" value="urgent"></el-option></el-select></el-form-item><el-form-item><el-input v-model="newTask" placeholder="请输入新的任务!"></el-input></el-form-item><el-form-item><el-button type="primary" @click="addTask">添加任务</el-button></el-form-item></el-form>.....................................
</template>
el-form是 Element UI 的表单组件,:inline="true"使其内联显示,el-form-item是表单项组件,el-select是下拉选择框,v-model="selectedType"将用户选择的值绑定到 Vue 实例的selectedType数据属性上,el-option是下拉选项,el-input是输入框,v-model="newTask"将用户输入的值绑定到newTask数据属性,el-button是按钮,type="primary"设置为主要按钮样式,@click="addTask"绑定了点击事件,点击时调用addTask方法。

接着写以下任务列表表格的实现代码

<template>...........此处代码省略,衔接上个代码块................<el-table :data="filteredTasks" border style="width: 100%"><el-table-column prop="name" label="任务名称"></el-table-column><el-table-column label="任务类型"><template #default="scope"><el-tag :type="getTagType(scope.row.type)">{{scope.row.type}}</el-tag></template></el-table-column><el-table-column label="任务状态"><template #default="scope"><el-tag :type="getTagStatusType(scope.row.status)">{{scope.row.status}}</el-tag></template></el-table-column><el-table-column label="操作"><template #default="scope"><el-button size="mini" icon="el-icon-check" @click="completeTask(scope.row)" v-if="scope.row.status === '未完成'"></el-button><el-button size="mini" type="primary" icon="el-icon-edit" @click="editTask(scope.row)"></el-button><el-button size="mini" type="danger" icon="el-icon-delete" @click="deleteTask(scope.row)"></el-button></template></el-table-column></el-table>................................
</template>

el-table是表格组件,:data="filteredTasks"绑定了要展示的数据,filteredTasks是计算属性,通过el-tag组件展示任务类型和状态,并根据不同类型调用getTagType和getTagStatusType方法设置标签样式。“操作” 列包含三个按钮

接下来添加以下任务统计信息和筛选框的代码

<template>...................................<div class="task-summary">共{{tasks.length}}项任务 已完成{{completedTasks.length}}项任务 未完成{{uncompletedTasks.length}}项任务</div><el-row class="filter-row"><el-col :span="8"><el-select v-model="filterType" placeholder="选择类型!"><el-option label="全部" value="all"></el-option><el-option label="普通任务" value="normal"></el-option><el-option label="重要任务" value="important"></el-option><el-option label="紧急任务" value="urgent"></el-option></el-select></el-col><el-col :span="8"><el-select v-model="filterStatus" placeholder="选择状态!"><el-option label="全部" value="all"></el-option><el-option label="已完成" value="已完成"></el-option><el-option label="未完成" value="未完成"></el-option></el-select></el-col></el-row></div>
</template>

div标签展示任务统计信息,通过插值表达式({{}})展示任务总数、已完成任务数和未完成任务数,el-row和el-col是 Element UI 的栅格布局组件,用于排版。两个el-select下拉框分别用于筛选任务类型和任务状态,v-model绑定对应数据属性,实现筛选功能。 

接下来添加以下script代码,定义了组件的数据、计算属性和方法

<script>
export default {data() {return {newTask: '',selectedType: '',tasks: [{ name: '任务1', type: 'normal', status: '已完成' },{ name: '任务2', type: 'important', status: '未完成' },{ name: '任务3', type: 'urgent', status: '已完成' }],filterType: 'all',filterStatus: 'all'}},computed: {filteredTasks() {return this.tasks.filter(task => {const typeMatch = this.filterType === 'all' || task.type === this.filterType;const statusMatch = this.filterStatus === 'all' || task.status === this.filterStatus;return typeMatch && statusMatch;});},completedTasks() {return this.tasks.filter(task => task.status === '已完成');},uncompletedTasks() {return this.tasks.filter(task => task.status === '未完成');}},methods: {addTask() {if (this.newTask.trim()!== '') {this.tasks.push({name: this.newTask,type: this.selectedType,status: '未完成'});this.newTask = '';this.selectedType = '';}},completeTask(task) {task.status = '已完成';},editTask(task) {console.log('编辑任务', task);},deleteTask(task) {const index = this.tasks.indexOf(task);if (index > -1) {this.tasks.splice(index, 1);}},getTagType(type) {switch (type) {case 'normal':return 'info';case 'important':return 'warning';case 'urgent':return 'danger';default:return 'info';}},getTagStatusType(status) {return status === '已完成'? 'green' : 'default';}}
}
</script>

最后,定义了组件内一些元素的局部样式,给添加任务表单、筛选框所在行和任务统计信息区域设置了外边距等样式

<style scoped>
.add-task-form {margin-bottom: 20px;
}
.filter-row {margin-top: 20px;
}
.task-summary {text-align: right;margin-top: 10px;
}
</style>

三. 运行项目

在项目的根目录下执行以下命令 ,如下图项目启动成功,然后浏览器访问 http://localhost:8080/

npm run serve

四. 项目展示

进入页面后默认显示任务1、2、3 ,以下任务4、5、6是我添加的,如下图所示

下图是以任务类型进行的一级筛选

下图是以任务类型和未完成的任务进行的二级筛选

五. 更多干货

--------------------- - -----✈---------   ---------✈--------------------✈-------
1.如果我的博客对你有帮助或你喜欢我的博客内容,请 “👍点赞” “✍️评论” “★收藏” 一键三连哦!

2.❤️【👇🏻👇🏻👇🏻关注我| 获取更多源码 | 优质文章】 带您学习各种前端插件、3D炫酷效果、图片展示、文字效果、以及整站模板 、HTML模板 、微信小程序模板 、等! 「在这里一起探讨知识,互相学习」!

3.以上内容技术相关问题✉欢迎一起交流学习 ☟   ☟   ☟
————————————————

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/904151.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】1.4 数据库与表的基本操作(DDL/DML语句)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 1.4 数据库与表的基本操作&#xff08;DDL/DML语句&#xff09;1.4.1 数据库生命周期管理&#xff08;DDL核心&#xff09;1.4.1.1 创建数据库&#xff08;CREATE DATABASE&…

Fabrice Bellard(个人网站:‌bellard.org‌)介绍

Fabrice Bellard 是法国人&#xff0c;国际著名程序员。1972年生于法国Grenoble&#xff0c;大学就读于巴黎高等综合理工学院&#xff0c;后在国立巴黎高等电信学院攻读。 Fabrice Bellard&#xff08;个人网站&#xff1a;‌bellard.org‌&#xff09;是计算机领域最具影响力…

USB布局布线

1USB简介 USB是通用串行总线的英文缩写&#xff0c;是连接外部装置的一个串口总线标准&#xff0c;也是一种输入输出接口的技术规范&#xff0c;被广泛地应用于个人电脑和移动设备等信息通迅产品&#xff0c;并扩展到摄影器材&#xff0c;数字电视&#xff08;机顶盒&#xff0…

【数据结构】线性表--链表

【数据结构】线性表--链表 一.前情回顾二.链表的概念三.链表的实现1.链表结点的结构&#xff1a;2.申请新结点函数&#xff1a;3.尾插函数&#xff1a;4.头插函数&#xff1a;5.尾删函数&#xff1a;6.头删函数&#xff1a;7.在指定结点之前插入&#xff1a;8.在指定结点之后插…

Mybatis-plus代码生成器的创建使用与详细解释

Mybatis-plus代码生成器的创建使用与详细解释 一、代码生成器概述 1. 定义(什么是代码生成器) 在软件开发过程中&#xff0c;存在大量重复性的代码编写工作&#xff0c;例如实体类、Mapper 接口、Service 接口及实现类等。代码生成器就是为了解决这类问题而诞生的工具。MyBa…

drawDB:打造高效数据库设计流程

drawDB&#xff1a;打造高效数据库设计流程 drawDB 简介资源链接 核心功能详解1. 直观的实体关系图设计2. SQL 脚本生成3. SQL 导入功能4. 本地化存储与分享功能5. 自定义主题与外观 安装和使用教程本地开发环境搭建构建生产版本Docker 部署基本使用方法 应用场景和实际价值适用…

基于 ESP32 和 GC9D01 0.71寸TFT屏幕的逼真眼睛与写轮眼动态显示

近期&#xff0c;我利用 ESP32 和 GC9D01 0.71’TFT 进行了一次有趣的显示项目开发&#xff0c;成功实现了在该小尺寸屏幕上绘制逼真眼睛和写轮眼的效果。 硬件准备 主控板 &#xff1a;ESP32&#xff0c;具备强大的处理能力和丰富的接口资源&#xff0c;能够高效地处理图像数…

LeetCode58_最后一个单词的长度

LeetCode58_最后一个单词的长度 标签&#xff1a;#字符串Ⅰ. 题目Ⅱ. 示例 0. 个人方法 标签&#xff1a;#字符串 Ⅰ. 题目 给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、…

论文阅读:MAXIM Multi-Axis MLP for Image Processing

这是 2022 CVPR 上的一篇文章&#xff0c;介绍了用 MLP 做 low-level 图像处理的工作 Abstract 近年来&#xff0c;Transformer 和多层感知机&#xff08;MLP&#xff09;模型的发展为计算机视觉任务提供了新的网络架构设计。尽管这些模型在图像识别等许多视觉任务中已被证明…

PostgreSQL初试

文章目录 1 PostgreSQL 简介2 PostgreSQL 与 MySQL 的区别3 PostgreSQL 的安装1_Linux部署2_容器化部署 4 PostgreSQL的配置1_远程连接配置2_配置数据库的日志3_设置数据库密码 5 PostgreSQL 基本操作1_用户操作2_权限操作3_创建一个自己的用户4_差异补充 6 安装图形化界面1_使…

Fortran语言,do-end do循环,相互包含测试,自动性能优化

1&#xff09;上代码 !$omp parallel private(n, j, dx, dy, dz, r, a)do n 1, nsteps!$omp dodo i 0, nparticles - 1x_tmp(i) x(i) vx(i) * dty_tmp(i) y(i) vy(i) * dtz_tmp(i) z(i) vz(i) * dtdo j 0, nparticles - 1dx x(j) - x(i)dy y(j) - y(i)dz z(j) - z(…

Cona编译问题

问题描述 Clion 使用conan插件配置了C工程&#xff0c;然后想通过命令行进行编译执行。 出现以下错误 CMake Error at /usr/local/Cellar/cmake/3.30.1/share/cmake/Modules/CMakeDetermineSystem.cmake:152 (message):Could not find toolchain file: conan_toolchain.cmake…

Qt实现 hello world + 内存泄漏(5)

文章目录 实现hello world的两种方式通过图形化的方式通过纯代码的方式1. 新老头文件的说明2.堆或栈上创建对象的选择3.QString的说明 内存泄漏问题 实现hello world的两种方式 通过图形化的方式 通过图形化的方式&#xff0c;在界面上创建出一个控件&#xff0c;显示出hello …

【翻译、转载】【译文】模型上下文协议(Model Context Protocol, MCP)简介

原文地址&#xff1a; https://michaelwapp.medium.com/model-context-protocol-mcp-an-introduction-guide-25736f3dd672 在人工智能和 AI 驱动应用日新月异的格局中&#xff0c;一种与大型语言模型&#xff08;LLM&#xff09;交互的新方式正在兴起。随着 AI 智能体&#x…

[方法论]软件工程中的软件架构设计:从理论到实践的深度解析

文章目录 软件架构设计&#xff1a;从理论到实践的深度解析引言一、软件架构设计的核心目标体系1.1 质量属性矩阵1.2 架构权衡艺术 二、架构设计方法论演进2.1 传统设计范式2.2 现代架构方法论2.3 设计模式演化路径 三、主流架构风格全景图3.1 单体架构&#xff08;Monolithic&…

【win11 】win11 键盘测试

我的键盘是支持mac和win的&#xff0c;fn tab 就能切换&#xff0c;有可能是用错了模式&#xff0c;导致 我alt a 就会弹出 win11的 wifi 等菜单控制 键盘测试网站 https://keyboard.bmcx.com/ 识别到我按下的是alt

Linux环境部署iview-admin项目

环境&#xff1a;阿里云服务 系统&#xff1a;CentOS7.X系统 1、下载源码安装包 wget https://nodejs.org/dist/v14.17.3/node-v14.17.3-linux-x64.tar.xz2、解压并放入指定目录 tar -xf node-v14.17.3-linux-x64.tar.xz && mv node-v14.17.3-linux-x64 /usr/local/no…

VSCode常用插件推荐

文章目录 VSCode常用插件推荐1 Git相关插件2 代码格式3 AI工具4 语言插件通用工具参考 VSCode常用插件推荐 1 Git相关插件 2 代码格式 3 AI工具 4 语言插件 通用工具 参考 50 个 VSCode 必装插件推荐 https://mp.weixin.qq.com/s/b_OKvg3hdavtnv7pbWcKWg

【Unity】使用XLua进行热修复

准备工作&#xff1a; &#xff08;1&#xff09;将XLua的Tool拖入Asset &#xff08;2&#xff09;配置热修复 &#xff08;3&#xff09;运行Genrate Code &#xff08;4&#xff09;运行Hotfix Inject In Editor 编写脚本&#xff08;注意类上带有[Hotfix]&#xff09; [Hot…

javaEE——单例模式

目录 前言1.概念2. 实现3. 比较和改进总结 前言 本篇文章来介绍单例模式&#xff0c;并讲述在保证线程安全的前提下&#xff0c;单例模式的写法。 1.概念 单例模式是一种设计模式&#xff0c;可以说是写代码的一种模板&#xff0c;如果在一些固定的场景下按照设计模式进行写…