vue.js+element-ui的基础表单

news/2024/5/20 1:29:52/文章来源:https://blog.csdn.net/qq_34761385/article/details/136944682

遇到原生的html小型单页应用时,是脱离了vue框架,而我们又想使用vue的语法和element的组件加快我们的开发速度,这个时候就需要引用他们的js了。技术栈即html+vue.js+element-ui。而使用它们的方法也很简单,引入对应的js和css文件即可。下面用一个小例子展示下。

 普普通通的表单页面:

 html代码:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>表单页面</title><!-- 引入样式 --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/element-ui/lib/theme-chalk/index.css"><!-- 引入组件库 --><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><script src="https://cdn.jsdelivr.net/npm/element-ui/lib/index.js"></script>  
</head>
<style>#app {display: flex;justify-content: center;align-items: center;padding: 0 20px;margin-top: 10vh;}html{width: 100%;height: 100%;background: #f0faff;}.el-form {max-width: 600px;width: 100%;box-shadow: 1px 1px 8px #dedede;padding: 30px;border-radius: 10px;background: #fff;}.el-row {margin-bottom: 20px;}/* .el-button {width: 100%;} */
</style>
<body><div id="app"><el-form ref="form" :model="formData" :rules="formRules" label-width="80px"><el-row><h3>业务数据导入终端:</h3></el-row><el-row><el-form-item label="邮箱" prop="email"><el-input placeholder="请输入接收通知的邮箱" v-model="formData.email"></el-input></el-form-item></el-row><el-row><el-col :span="12"><el-form-item label="IP地址" prop="ip"><el-input v-model="formData.ip"></el-input></el-form-item></el-col><el-col :span="12"><el-form-item label="端口" prop="port"><el-input v-model="formData.port"></el-input></el-form-item></el-col></el-row><el-row><el-col :span="12"><el-form-item label="账号" prop="username"><el-input v-model="formData.username"></el-input></el-form-item></el-col><el-col :span="12"><el-form-item label="密码" prop="password"><el-input v-model="formData.password" type="password"></el-input></el-form-item></el-col></el-row><el-row><el-col :span="12"><el-form-item label="数据库" prop="database"><el-input v-model="formData.database"></el-input></el-form-item></el-col><el-col :span="12"><el-form-item label="表名" prop="table"><el-input v-model="formData.table"></el-input></el-form-item></el-col></el-row><el-row><el-col :span="24"><el-form-item label="上传文件"><el-uploadclass="upload-demo"ref="upload":action="uploadUrl":before-upload="beforeUpload"accept=".xlsx,.xls":limit="1":auto-upload="false"><el-button slot="trigger" size="small" type="primary">选取文件</el-button><div slot="tip" class="el-upload__tip">只能上传excel文件</div></el-upload></el-form-item></el-col></el-row><el-row><el-col :span="24" style="text-align: center; margin-top: 20px;"><el-button type="primary" @click="submitForm" :disabled="disabled">{{buttonText }}</el-button><el-button type="danger" @click="clear">清除缓存</el-button></el-col></el-row></el-form></div><script>new Vue({el: '#app',data() {return {timer:0,limitTime: 1 * 60, // 限制时间为10分钟disabled:false,formRules:{email:[{ required: true, message: '请输入联系邮箱', trigger: 'blur' }],ip: [{ required: true, message: '请输入ip', trigger: 'blur' }],port: [{ required: true, message: '请输入端口', trigger: 'blur' }],username: [{ required: true, message: '请输入账号', trigger: 'blur' }],password: [{ required: true, message: '请输入密码', trigger: 'blur' }],database: [{ required: true, message: '请输入数据库', trigger: 'blur' }],table: [{ required: true, message: '请输入表名', trigger: 'blur' }],},formData: {email:'',ip: '',port: '',username: '',password: '',database: '',table: '',},uploadUrl: '/upload'  // 文件上传的接口地址};},mounted(){var obj = localStorage.getItem("formData")||"";var timer = localStorage.getItem("disabled")||"";if(timer){  //定时还没结束,重置this.disabled = true;this.timer = this.limitTime;const countdown = setInterval(() => {this.timer--;if (this.timer <= 0) {localStorage.removeItem("disabled");clearInterval(countdown);this.disabled = false;}}, 1000);}if(obj){this.formData = JSON.parse(obj);}},computed: {buttonText() {if (this.disabled) {const minutes = Math.floor(this.timer / 60);const seconds = this.timer % 60;return `禁用中 (${minutes}:${String(seconds).padStart(2, '0')})`;} else {return '提交';}},},methods: {beforeUpload(file) {// 上传文件之前的钩子函数,可用于校验文件类型等const isExcel = ((file.type === 'application/vnd.ms-excel')||(file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'));return isExcel;},clear(){this.$confirm('该操作会清除本地保存的数据信息, 是否继续?', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {localStorage.clear();this.$message({type: 'success',message: '清除成功'});setTimeout(()=>{window.location.reload();},1000)}).catch(() => {this.$message({type: 'info',message: '已取消删除'});          });},submitForm() {this.$refs.form.validate(valid => {if (valid) {// 提交表单的函数,将表单数据和文件一起发送给后端const formData = new FormData();formData.append('email', this.formData.email);formData.append('ip', this.formData.ip);formData.append('port', this.formData.port);formData.append('access', this.formData.username);formData.append('password', this.formData.password);formData.append('dataName', this.formData.database);formData.append('tableName', this.formData.table);console.log(this.$refs.upload.uploadFiles[0]);if(this.$refs.upload.uploadFiles[0]&&this.beforeUpload(this.$refs.upload.uploadFiles[0].raw)){const file = this.$refs.upload.uploadFiles[0].raw;formData.append('file', file);}else{this.$message.error('请上传excel文件');return;}localStorage.setItem("formData",JSON.stringify(this.formData));this.disabled = true;localStorage.setItem("disabled",this.disabled)this.timer = this.limitTime;const countdown = setInterval(() => {this.timer--;if (this.timer <= 0) {localStorage.removeItem("disabled");clearInterval(countdown);this.disabled = false;}}, 1000);// 发送表单数据和文件给后端fetch('http://localhost/from/uploadExcel', {method: 'POST',body: formData}).then(response => response.json()).then(data => {console.log('提交成功', data);if(data.code==200){this.$message({message: data.msg,type: 'success'});}else{this.$message({message: data.msg,type: 'warning'});}// 处理后端返回的数据}).catch(error => {console.error('提交失败', error);// 处理提交失败的情况});} else {this.$message.error('请将表单补充完整');}});}}});</script>
</body></html>

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

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

相关文章

智慧交通(代码实现案例)

1.项目简介 目标: 了解智慧交通项目的架构知道智慧交通项目中的模块能够完成智慧交通项目的环境搭建 该项目是智慧交通项目&#xff0c;通过该项目掌握计算机视觉的方法在交通领域的相关应用&#xff0c;包括车道线检测的方法&#xff0c;多目标车辆追踪及流量统计方法&#…

C#学习笔记3:Windows窗口计时器

今日继续我的C#学习之路&#xff0c;今日学习自己制作一个Windows窗口计时器程序&#xff1a; 文章提供源码解释、步骤操作、整体项目工程下载 完成后的效果大致如下&#xff1a;&#xff08;可选择秒数&#xff0c;有进度条&#xff0c;开始计时按钮等&#xff09; &#xf…

基于JavaSpringmvc+myabtis+html的鲜花商城系统设计和实现

基于JavaSpringmvcmyabtishtml的鲜花商城系统设计和实现 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末…

Java基于微信小程序的校园请假系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#…

基于单片机的智能花盆设计

摘 要 本文设计了一种智能化的花盆控制系统。该系统采用STC89C51 单片机作为主控制器,通过温湿度传感器对植物生长环境进行检测,将采集的数据信号与系统数值进行比较,从而实现了智能花盆的自动或手动浇水功能。 关键词 智能花盆;STC89C51 单片机;温湿度检测 0 引言 随着…

使用postman调用Vcenter-Api

一、下载postman Postman API Platform 二、Vcenter-APi-文档 Create Session | CIS | vSphere CIS REST APIs 三、如何调用&#xff1f; 一、获取访问凭证 两种方式进行鉴权&#xff0c;这里讲第一种。 二、使用postman调用Api获取凭证 下面就是vmware-api-session-id …

Knowledge Graph Neural Network

利用知识图谱预测药物相互作用&#xff0c;代码&#xff1a;Knowledge Graph Neural Network&#xff0c;原文&#xff1a;KGNN: Knowledge Graph Neural Network for Drug-Drug Interaction Prediction&#xff0c;模型框架如下&#xff1a; 文章目录

2024/03/25(C++·day1)

一、思维导图 二、练习 练习一 定义自己的命名空间&#xff0c;其中有string类型的变量&#xff0c;再定义两个函数&#xff0c;一个函数完成字符串的输入&#xff0c;一个函数完成求字符串长度&#xff0c;再定义一个全局函数完成对该字符串的反转 #include <iostream&g…

【LeetCode热题100】543. 二叉树的直径(二叉树)

一.题目要求 给你一棵二叉树的根节点&#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 二.题目难度 简单 三.输入样例 示例 1&#xff…

数据挖掘与分析学习笔记

一、Numpy NumPy&#xff08;Numerical Python&#xff09;是一种开源的Python库&#xff0c;专注于数值计算和处理多维数组。它是Python数据科学和机器学习生态系统的基础工具包之一&#xff0c;因为它高效地实现了向量化计算&#xff0c;并提供了对大型多维数组和矩阵的支持…

BGP4+简介

定义 BGP是一种用于自治系统AS&#xff08;Autonomous System&#xff09;之间的动态路由协议&#xff0c;常用版本是BGP-4&#xff0c;BGP-4只能传递IPv4路由。针对IPv6的BGP4扩展&#xff0c;通常称为BGP4。 目的 BGP4用于在AS之间传递路由信息&#xff0c;并不是所有情况…

NFTScan | 03.18~03.24 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期&#xff1a;2024.03.18~ 2024.03.24 NFT Hot News 01/ NFT 系列 NodeMonkes 地板价已超越 BAYC 3 月 18 日&#xff0c;据数据显示&#xff0c;NFT 系列 NodeMonkes 地板价已超越 Bored Ape Yacht …

k8s浅聊一下Pod

Pod官网定义文档&#xff1a;https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/ Pod是可以在k8s中创建和管理的、最小可部署的计算单元。 Pod是逻辑意义上的主机&#xff0c;Pod里面可以运行一个或者多个容器&#xff0c;Pod里面运行一个根容器pause&#xff0c;业…

鸿蒙实战开发:【国际化部件】

简介 国际化部件为应用提供了一系列国际化接口&#xff0c;包括&#xff1a;时间日期格式化、数字格式化、月份星期格式化、单复数、度量衡等相关接口。基于这些国际化接口&#xff0c;开发者可以设计并实现具有良好国际化能力的应用&#xff0c;从而可以高效、低成本的实现应…

短视频矩阵系统--技术实际开发打板3年真实开发分享

短视频矩阵系统--技术实际开发打板3年真实开发分享&#xff0c;短视频矩阵系统/矩阵获客系统是一种基于短视频平台的获客游戏。短视频矩阵系统可以通过多账号发布来替代传统的单账号游戏。可以一键发布所有账号&#xff0c;批量制作多个视频AI智能剪辑。过去很多人只能完成的工…

java算法第34天 | 贪心算法 part03 ● 1005.K次取反后最大化的数组和 ● 134. 加油站 ● 135. 分发糖果

1005.K次取反后最大化的数组和 思路&#xff1a; 先将数组元素从小到大排列&#xff0c;从左向右处理&#xff0c;分两种情况讨论 当遇到负数&#xff0c;将负数变为正数&#xff0c;继续处理下一个元素当遇到正数&#xff0c;对数组重排&#xff0c;循环处理当前的最小元素。…

ts js vue 验证文件 MD5 值 spark-md5

ts js vue 验证文件 MD5 值 spark-md5 如何在前端中验证要上传的文件的 md5 值 一、安装 spark-md5 插件 需要用到 spark-md5 这个插件 官方 github&#xff1a;https://github.com/satazor/js-spark-md5/tree/master yarn add spark-md5 // 或 npm i spark-md5使用的时候引…

Linux-网络层IP协议、链路层以太网协议解析

目录 网络层&#xff1a;IP协议地址管理路由选择 链路层 网络层&#xff1a; 网络层&#xff1a;负责地址管理与路由选择 — IP协议&#xff0c;地址管理&#xff0c;路由选择 IP协议 数据格式&#xff1a; 4位协议版本&#xff1a;4-ipv4协议版本 4位首部长度&#xff1a;以…

ginblog博客系统/golang+vue

ginblog博客系统 前台&#xff1a; 后台&#xff1a; Gitee的项目地址&#xff0c;点击进入下载 注意&#xff1a; 数据库文件导入在model里面&#xff0c;直接导入即可。 admin和front前后台系统记住修改https里的地址为自己的IP地址&#xff1a; front同上。

【基于skyent的热更思考】

基于skyent的热更思考 skynet-inject热更原理关键源码分析热更方式拓扑图注意事项 skynet-inject热更原理 inject是一个用于动态加载 Lua 代码文件并执行其中定义的函数的功能。可以在运行时动态加载 Lua 代码文件&#xff0c;然后调用其中定义的函数&#xff0c;通过修改模块…