vue.js制作学习计划表案例

news2024/9/22 0:59:40

通俗易懂,完成“学习计划表”用于对学习计划进行管理,包括对学习计划进行添加、删除、修改等操作。

一. 初始页面效果展示

二.添加学习计划页面效果展示

 三.修改学习计划完成状态的页面效果展示

四.删除学习计划 

当学习计划处于“已完成”状态时,学生可以对学习计划进行删除操作,否则不能进行删除操作。

在html案例引入样式:

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.c
	ss" rel="stylesheet"/>

新建 llk.vue文件

在llk.vue文件中写入代码:

<template>
	<div class="card">
		<!-- 标题区域 -->
		<div class="card-header">学习计划表</div>
		<!-- 提交区域 -->
		<div class="card-body">
			<form @submit.prevent="add">
				<div class="row g-4">
					<!-- 学习科目 -->
					<div class="col-auto">
						<div class="input-group mb-3">
							<span class="input-group-text" id="basic-addon1">学习科目</span>
							<input type="text" class="form-control" placeholder="请输入学习科目" v-model.trim="subject" />
						</div>
					</div>
					<!-- 学习任务 -->
					<div class="col-auto">
						<div class="input-group mb-3">
							<span class="input-group-text" id="basic-addon1">学习内容</span>
							<textarea class="form-control" v-model.trim="content" placeholder="请输入学习内容" :style="{ height: '32px' }"></textarea>
						</div>
					</div>
					<!-- 学习地点 -->
					<div class="col-auto">
						<div class="input-group mb-3">
							<span class="input-group-text" id="basic-addon1">学习地点</span>
							<select class="form-select form-select-sm" v-model="selectedOption">
								<option v-for="option in options" :value="option.place" :key="option.placeCode">
									{{ option.place }}
								</option>
							</select>
						</div>
					</div>
					<!-- 添加按钮 -->
					<div class="col-auto">
						<button type="submit" class="btn btn-primary">添加</button>
					</div>
				</div>
			</form>
		</div>
	</div>
	<table class="table table-striped table-hover table-bordered">
		<thead>
			<tr>
				<th scope="col">序号</th>
				<th scope="col">学习科目</th>
				<th scope="col">学习内容</th>
				<th scope="col">学习地点</th>
				<th scope="col">完成状态</th>
				<th scope="col">操作</th>
			</tr>
		</thead>
		<tbody>
			<tr v-for="item in list" :key="item.id">
				<td>{{ item.id }}</td>
				<td>{{ item.subject }}</td>
				<td>{{ item.content }}</td>
				<td>{{ item.place }}</td>
				<td>
					<div class="form-check form-switch">
						<input class="form-check-input" type="checkbox" role="switch" id="'cb' + item.id"
							v-model="item.status" />
						<label class="form-check-label" for="'cb' + item.id" v-if="item.status">已完成</label>
						<label class="form-check-label" for="'cb' + item.id" v-else>未完成</label>
					</div>
				</td>
				<td>
					<a href="javascript:;" @click="remove(item.id)">删除</a>
				</td>
			</tr>
		</tbody>
	</table>
	


</template>

<script setup>
	import {
		ref
	} from 'vue'
	const list = ref([{
		id: '1',
		subject: 'Vue.js 前端实战开发',
		content: '学习指令,例如 v-if、v-for、v-model 等',
		place: '自习室',
		status: false,
	}, ])

	let remove = (id, status) => {
		if (status) {
			list.value = list.value.filter(item => item.id !== id)
		} else {
			alert('请完成该学习计划后再进行删除操作!')
		}
	}

	let subject = ref('')

	let content = ref('')

	let nextId = ref('')

	let selectedOption = ref('自习室')

	let options = ref([

		{
			placeCode: 0,
			place: '自习室',
		},

		{
			placeCode: 1,
			place: '图书馆',
		},

		{
			placeCode: 2,
			place: '宿舍',
		},

	])

	let add = () => {
		if (subject.value === '') {
			alert('学习科目为必填项!')
			return
		}
		nextId.value = Math.max(...list.value.map(item => item.id)) + 1
		const obj = {
			id: nextId.value,
			subject: subject.value,
			content: content.value,
			place: selectedOption.value,
			status: false,
		}
		list.value.push(obj)
		subject.value = ''
		content.value = ''
		selectedOption.value = '自习室'
	}
</script>

<style>
</style>

找到main.js文件修改 成自己新建的名字

 

运行结果:

输入科目学习内容,选择学习地点进行添加

 

今天就分享到这里,感谢预览~ 

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

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

相关文章

栈——数据结构——day4

栈的定义 栈是限定仅在一段进行插入和删除操作的线性表。 我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出(Last In First Out)的线性表&#xff0c;简称LIFO结构。 栈的插入操作&#xff0c;叫作进栈&#…

开源项目ChatGPT-Next-Web的容器化部署(三)-- k8s deployment.yaml部署

一、说在前面的话 有了docker镜像&#xff0c;要把一个项目部署到K8S里&#xff0c;主要就是编写deployment.yaml。 你需要考虑的是&#xff1a; 环境变量服务的健康检测持久化启动命令程序使用的数据源程序使用的配置文件 因为本前端项目比较简单&#xff0c;这里只做一个…

重学SpringBoot3-Profiles介绍

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-Profiles介绍 Profiles简介如何在Spring Boot中使用Profiles定义Profiles激活ProfilesIDEA设置active profile使用Profile-specific配置文件 条件化Bean…

Python爬虫案例-爬取主题图片(可以选择自己喜欢的主题)

2024年了&#xff0c;你需要网络资源不能还自己再慢慢找吧&#xff1f; 跟着博主一块学习如何利用爬虫获取资源&#xff0c;从茫茫大海中寻找那个她到再妹子群中找妹子&#xff0c;闭着眼睛都可以找到合适的那种。文章有完整示例代码&#xff0c;拿过来就可以用&#xff0c;欢迎…

就业班 第二阶段 2401--3.18 day1 初识mysql

初识&#xff1a; 1、关系型数据库mysql、mariadb、sqlite 二维关系模型 2、非关系型数据库 redis、memcached sql 四个部分 DDL 数据库定义语言 创建数据库&#xff0c;创建用户&#xff0c;创建表 DML 数据库操作语言 增删改 DQL 数据库查询语言 查 DCL 数据库控制语言 授权 …

Pake一键打包,轻松构建桌面级应用!

Pake&#xff1a;顷刻之间&#xff0c;智能封装——WEB到桌面瞬间联通&#xff0c;让网站应用像搭积木般部署 - 精选真开源&#xff0c;释放新价值。 概览 Pake&#xff0c;作为一款新颖且极具创新性的桌面应用开发框架&#xff0c;凭借其独特的技术路径和高效的实现方式&…

时代教育期刊投稿发表

《时代教育》是由成都传媒集团主管主办&#xff0c;中华人民共和国新闻出版总署批准国内公开出版发行的专业教育类期刊&#xff0c;主要刊登各类高等院校、职业技术学校、中小学教师及研究生、教育科研工作者的教育实践研究成果&#xff1b;教育教学行业的最新动态&#xff1b;…

基于SSM+Jsp+Mysql的KTV点歌系统

基于SSMJspMysql的KTV点歌系统 基于SSMJspMysql的KTV点歌系统的设计与实现 开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工…

jvm提供的远程调试 简单使用

JVM自带远程调试功能 JVM远程调试&#xff0c;其实是两个虚拟机之间&#xff0c;通过socket通信&#xff0c;达到远程调试的目的&#xff1b; 前提 确保本地和远程的网络是开通的&#xff1b; 本地操作 远程操作 在启动命令参数中 把上面的内容复制进去

第 6 章 ROS-URDF练习(自学二刷笔记)

重要参考&#xff1a; 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 6.3.4 URDF练习 需求描述: 创建一个四轮圆柱状机器人模型&#xff0c;机器人参数如下&#xff0c;底盘为圆柱…

NIVision-相机图像采集

应用场景 上位机与工业相机通讯&#xff0c;控制相机抓取图像。 工业相机的通讯接口大多为USB口或网口。 USB口则直接将通讯线缆插入上位机USB端口&#xff0c;打开MAX中设备与接口一栏可以看到电脑给相机分配的资源名称&#xff1b;网口则需要将网线连接相机和上位机&#xf…

【数据库】SQL Server 2008 R2 安装过程

启动安装程序&#xff0c;点击setup&#xff0c;进入【SQLServer安装中心】 点击界面左侧的【安装】&#xff0c;然后点击右侧的【全新SQLServer独立安装或向现有安装添加功能】&#xff0c;进入【SQLServer2008R2安装程序】界面&#xff0c;如下图所示&#xff1a; 进入【安装…

浅谈Postman与Jmeter的区别、用法

前阶段做了一个小调查&#xff0c;发现软件测试行业做功能测试和接口测试的人相对比较多。在测试工作中&#xff0c;有高手&#xff0c;自然也会有小白&#xff0c;但有一点我们无法否认&#xff0c;就是每一个高手都是从小白开始的&#xff0c;所以今天我们就来谈谈一大部分人…

师徒互电,眼冒金星,采集系统变电刺激系统!

原文来自微信公众号&#xff1a;工程师看海&#xff0c;很高兴分享我的原创文章&#xff0c;喜欢和支持我的工程师&#xff0c;一定记得给我点赞、收藏、分享哟。 加微信[chunhou0820]与作者进群沟通交流 电的我眼冒金星&#xff0c;以为自己被三体召唤&#xff0c;整个世界为我…

预测一下,GPT-5 会在什么时候发布,又会有哪些更新?

发布预期&#xff1a;GPT-5预计将于11月发布&#xff0c;可能与ChatGPT发布两周年同期。竞争态势&#xff1a;谷歌的Gemini与GPT-4 turbo已展开竞争。逐步发布&#xff1a;GPT-5可能通过模型训练过程中的中间检查点逐步发布。训练与安全测试&#xff1a;实际训练可能需3个月&am…

【Java前端技术栈】Vue2、Vue Cli、Axio入门

一、基本介绍 1.Vue 是什么? Vue (读音 /vjuː/&#xff0c;类似于 view) 是一个前端框架, 易于构建用户界面 2. Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或项目整合 3. 支持和其它类库结合使用 4. 开发复杂的单页应用非常方便 5.…

【隐私计算实训营003详解隐私计算框架及技术要点】

1. 隐语架构一览 1.1 隐语架构 隐语架构通常指的是一种面向隐私保护计算的软件框架或解决方案&#xff0c;它采用了密码学、可信执行环境&#xff08;TEE&#xff09;、多方安全计算&#xff08;MPC&#xff09;等多种隐私保护技术来实现在数据加密状态下进行计算&#xff0c;…

咖啡饮品抖音品牌打造流量运营规划方案PPT

【干货资料持续更新&#xff0c;以防走丢】 咖啡饮品抖音品牌打造流量运营规划方案PPT 部分资料预览 资料部分是网络整理&#xff0c;仅供学习参考。 PPT可编辑共50页&#xff08;完整资料包含以下内容&#xff09; 目录 抖音品牌打造方案 社交话题引领&#xff0c;内容共创…

一、SpringBoot3 介绍

本章概要 SpringBoot3 简介系统要求快速入门入门总结 1.1 SpringBoot3 简介 此处使用 SpringBoot 版本&#xff1a;3.0.5 https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html 无论使用XML、注解、Java配置类还是他们的混合用法&#xff0…

unity3d——沙盒路径

文章目录 Unity3D中不同平台的沙盒路径&#xff1a; 示例 在Unity3D中&#xff0c;尤其是在移动平台如Android和iOS上&#xff0c;由于系统安全机制&#xff0c;应用程序不能直接访问操作系统的所有文件和目录&#xff0c;而是被限制在一个特定的“沙盒”环境中。这个沙盒是一个…