❤Element的使用element

news2024/7/6 18:00:07

❤Element的使用

1、input输入框

禁止自动补全和下拉提示

input 输入框在输入后浏览器会记录用户输入的值,在下次输入的时候会将记录的值提示在输入框的下面,当输入框是密码的时候,这样可以看见上次输入的密码,这样用户体验不好,input标签有个属性可以禁止这种操作:

<input type="number" autocomplete="off" >

这样用户的输入的值就不会被浏览器记录,可以达到较好的效果
———————————————————————————————————————————

文本类型输入框

类型type="textarea"

  • 设置 autosize 属性可以使得文本域的高度能够根据文本内容自动进行调整,并且 autosize 还可以设定为一个对象,指定最小行数和最大行数。

  • 通过 size 属性指定输入框的尺寸,除了默认的大小外,还提供了 medium、small 和 mini 三种尺寸

  • maxlengthminlength 是原生属性,用来限制输入框的字符长度,其中字符长度是用 Javascript 的字符串长度统计的。对于类型为 texttextarea 的输入框,在使用 maxlength 属性限制最大输入长度的同时,可通过设置 show-word-limit 属性来展示字数统计

  • 想要统计字数:利用show-word-limit 达到限制文字的效果

<el-input placeholder="请选择日期" suffix-icon="el-icon-date" v-model="input1"> </el-input>

3、下拉框

change事件取key和value值
结构部分:

<el-form-item label="类型" prop="groupCode">
    <el-select v-model="form.groupCode" value-key="value" placeholder="请选择班组" 	@change="groupChanged" size="small">
                <el-option v-for="item in groupTypeList" :key="item.id" :label="item.name" :value="item.id">
                </el-option>
	</el-select>
	<el-input v-model="form.groupName" v-show="false"></el-input>
</el-form-item>

1、普通写法,写进提交

let arr=[];
      if(this.form.groupCode!=null){
        this.groupTypeList.map((item)=>{
          if(item.id==this.form.groupCode){ 
          // arr.push(item)
          this.form.groupName=item.name;
          }
        });
      }
    

2、ES6 find()函数

  • ES6 find()函数

在ES6中,可以使用数组的find()函数来查找符合条件的第一个元素。该函数接受一个回调函数作为参数,该回调函数会被传入数组中的每一个元素,当回调函数返回true时,find()函数会返回该元素,否则继续查找直到数组结束。如果数组中没有符合条件的元素,则返回undefined。

举个例子,假设我们有一个数组arr,我们想要查找其中第一个大于10的元素,可以使用以下代码:

const arr = [5, 8, 12, 15, 20];

const result = arr.find((element) => {
  return element > 10;
});
console.log(result); // 输出12

使用数组的find函数来查找第一个大于10的元素。

  • 回调函数 传 element参数代表数组中的每一个元素,大于10时,回调函数返回true,find函数返回该元素。

  • find函数返回了数组中第一个大于10的元素12

所以find()我们可以写成:

let obj = {};
obj = this.groupTypeList.find(item => {
    return item.id === e;
});
this.form.groupName = obj.name;

4、Table表格

1、表格基础属性

(1) 表格赋值数据
data

<el-table v-loading="loading" :data="dataList" border></el-table>
dataList: [{
            date: '2016-05-02',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1518 弄'
          }, {
            date: '2016-05-04',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1517 弄'
          }, {
            date: '2016-05-01',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1519 弄'
          }, {
            date: '2016-05-03',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1516 弄'
          }]

增加边框样式

border:  仅仅是侧边栏的边框

<el-table v-loading="loading" :data="dataList" border>

2、表头样式处理

① 表头居中
align="center"

// 添加地方
<el-table-column label="序号" align="center" prop="id"/>

在这里插入图片描述
在这里插入图片描述

② 显示缩略文字
width="50" :show-overflow-tooltip="true"

// 添加地方
<el-table-column label="序号" width="50" align="center" prop="id" :show-overflow-tooltip="true"/>

在这里插入图片描述

方式一:使用方式一

<el-table 
 :header-cell-style="{backgroundColor:'#eee'}"></el-table>

方式二:使用方式二

3、表格每一行显示居于顶部

.el-table--border /deep/ .el-table__cell {
    font-size: 12px;
    vertical-align: top;
    
}

4、鼠标滑动效果

🍓鼠标滑动效果

.el-table  ::v-deep .el-table__body tr:hover > td {
     background-color: #fff !important;
 } 

5、表格高度

.el-table .cell.el-tooltip{
white-space: nowrap;
    min-width: 50px;
    height: 100px;
}

6、Table表格跨页多选回显清除选中数据问题

1、❤ 实现
表格组件:

<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange1" ref="multipleTable"  row-key='id'>
</el-table>

❤ 方法1

  • 利用 reserve-selection与row-key结合

    ① 在表格加上属性 row-key='id'或者加上 :row-key="(row) => { return row.id }" row-key绑定每行数据的唯一标识

    ② 在多选的column标签加上 :reserve-selection=“true” 开启

    ③ 表格的多选函数上写上方法toggleRowSelection(row,true)

    sedata.forEach(key => {
        tabledata.forEach(row => {
            if (row.id == key) {
             setTimeout(() => {
               _this.$refs.multipleTable.toggleRowSelection(row,true)}, 300);
              }
          })
    });
    

❤ 方法2 自己手写一个循环判断

2、可能遇到的问题
❤无法清空table多选框的选中状态
当前页面清空
this.$refs.multipleTable.clearSelection();
在父组件清空:
this.$refs.issueList.$refs.multipleTable.clearSelection();

[Vue warn]: Error in nextTick: “TypeError: Cannot read properties of undefined (reading ‘toggleRowSelection

  • 原因:【由于DOM并没有更新完引起的】

  • 解决方法:

    [1]
    this.$nextTick(() => {}) ;
    
    [2]定时器【我用的这个】
    setTimeout(() => {},300); 
    
    
遇到表格无法跨页回显【特殊】

找了几遍没发现错误,最后怀疑是table并非一次全部选中

❤解决方法:
这个时候检查一下,在分页时候是否将分页选中放到了我们每次点击分页以后查询表格的接口之中

3、进一步衍生

4、总结

🍓

5、上传图片功能

element上传文档

https://element.eleme.cn/#/zh-CN/component/upload

// 结构部分

<el-form-item label="用户照片" prop="picImg">
    <el-upload class="avatar-uploader" 
    	:action="imgAction" 
    	:show-file-list="false"
       :http-request="uploadPicImg" name="img" 
       :on-success="handleSuccess" 
       :before-upload="beforeUpload">
       <img v-if="picImg" :src="picImg" class="avatar">
       <i v-else class="el-icon-plus avatar-uploader-icon"></i>
       <!--   <img v-if="form.picImg" :src="form.picImg" class="avatar">
       <i v-else class="el-icon-plus avatar-uploader-icon"></i> -->
     </el-upload>
</el-form-item>


//数据

imgAction: null, // 图片上传地址

:show-file-list="false" //不显示长传的那个进度



//上传前监测图片格式和参数方法
//参数是上传的文件,若返回false,或返回Primary且被reject,则停止上传
    beforeUpload(file) {
      const isJPG = file.type === 'image/jpeg';
      const isGIF = file.type === 'image/gif';
      const isPNG = file.type === 'image/png';
      const isBMP = file.type === 'image/bmp';
      const isLt2M = file.size / 1024 / 1024 < 2;

      if (!isJPG && !isGIF && !isPNG && !isBMP) {
        this.$message.error('上传图片必须是JPG/GIF/PNG/BMP 格式!');
      }
      if (!isLt2M) {
        this.$message.error('上传图片大小不能超过 2MB!');
      }
      return (isJPG || isBMP || isGIF || isPNG) && isLt2M;
    },

  // 上传方法 ---调用咋们的接口
    uploadPicImg(query) {
      let _this = this;
      let param = new FormData();
      param.append('img', query.file);
      uploadImg(param).then(response => {
        if (response.code == 200) {
          // this.dialogImageUrl= response.data;
          _this.picImg = response.data;
          _this.form.picImg = response.data; //将返回的文件储存路径赋值picture字段
          // this.form.$forceUpdate();
          console.log(_this.form.picImg);
          Notification({
            title: response.msg,
            type: 'success'
          });
        }
      })
},



 //上传图片成功时候使用的方法--进行赋值
handleSuccess(res, file) {
      let _this = this;
      console.log(res, file, '上传部分');
      _this.picImg = URL.createObjectURL(file.raw);
      _this.form.picImg = URL.createObjectURL(file.raw);
      // console.log(this.imageUrl);
      _this.$forceUpdate();
      _this.$message({
        type: 'info',
        message: '图片上传成功',
        duration: 6000
      });
},

6、表单验证

(1)使用

(1) form表单绑定必须有这三个 : 表单绑定数据、规则、要验证规则的 prop属性
在这里插入图片描述
(2)规则
在这里插入图片描述
两种规则:【注意属性名对应上】 (上面prop是name,下面rules里面也是name)

① 静态的 类似输入

② 动态的 类似下拉

rules: {
		//静态的 类似输入
          name: [
            { required: true, message: '请输入活动名称', trigger: 'blur' },
          ],
          //动态的 类似下拉
          region: [
            { required: true, message: '请选择活动区域', trigger: 'change' }
          ],
        }

(2)验证方式

普通验证

① input输入验证
  • 表单
 <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
     <el-form-item label="活动名称" prop="name">
        <el-input v-model="ruleForm.name"></el-input>
     </el-form-item>
</el-form>
  • 验证规则

可以添加验证长度的 最大最小值以及长度提示

放置位置

image.png

验证规则rules

rules: {
     name: [
          { required: true, message: '请输入活动名称', trigger: 'blur' },
          { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
         ],
    }
② 普通选择类型验证
// 表单里面
<el-form-item label="活动区域" prop="region">
      <el-select v-model="ruleForm.region" placeholder="请选择活动区域">
         <el-option label="区域一" value="shanghai"></el-option>
         <el-option label="区域二" value="beijing"></el-option>
     </el-select>
</el-form-item>

// 验证规则rules
rules: {
          region: [
            { required: true, message: '请选择活动区域', trigger: 'change' }
          ],
    }
③ 普通时间类型验证
// 表单里面
<el-form-item label="活动时间" required>
              <el-col :span="11">
                <el-form-item prop="date1">
                  <el-date-picker type="date" placeholder="选择日期" v-model="ruleForm.date1" style="width: 100%;"></el-date-picker>
                </el-form-item>
              </el-col>
              <el-col class="line" :span="2">-</el-col>
              <el-col :span="11">
                <el-form-item prop="date2">
                  <el-time-picker placeholder="选择时间" v-model="ruleForm.date2" style="width: 100%;"></el-time-picker>
                </el-form-item>
              </el-col>
            </el-form-item>

// 验证规则rules
rules: {
          date1: [
            { type: 'date', required: true, message: '请选择日期', trigger: 'change' }
          ],
    }
④ 普通单选多选类型验证
// 表单里面
<el-form-item label="活动性质" prop="type">
              <el-checkbox-group v-model="ruleForm.type">
                <el-checkbox label="美食/餐厅线上活动" name="type"></el-checkbox>
                <el-checkbox label="地推活动" name="type"></el-checkbox>
                <el-checkbox label="线下主题活动" name="type"></el-checkbox>
                <el-checkbox label="单纯品牌曝光" name="type"></el-checkbox>
              </el-checkbox-group>
            </el-form-item>

            <el-form-item label="特殊资源" prop="resource">
              <el-radio-group v-model="ruleForm.resource">
                <el-radio label="线上品牌商赞助"></el-radio>
                <el-radio label="线下场地免费"></el-radio>
              </el-radio-group>
</el-form-item>

// 验证规则rules
rules: {
type: [{ type: 'array', required: true, message: '请至少选择一个活动性质', trigger: 'change' }],
resource: [{ required: true, message: '请选择活动资源', trigger: 'change' }],
 }
⑤ 验证手机号
```js

  phone: [
          { required: true, message: '电话不能为空', trigger: 'blur' },
          { validator: validatePhone, trigger: 'blur'}
        ],

data下:
var validatePhone= (rule, value, callback) =>{
        if (value === '') {
          callback(new Error('手机号不能为空'));
        } else {
          const reg = /^1[3456789]\d{9}$/
          if (reg.test(value)) {
            callback();
          } else {
            return callback(new Error('请输入正确的手机号'));
          }
        }
};

静态和动态验证

- 静态校验直接写组件上时:
 <el-form-item label="活动形式" prop="desc">
       <el-input type="input" v-model="ruleForm.desc"
        :rules="{required: true, message: '活动形式不能为空', trigger: 'blur' }">
       </el-input>
</el-form-item>
- 动态校验直接写组件上时:
 <el-form-item label="活动区域" prop="region">
              <el-select v-model="ruleForm.region" placeholder="请选择活动区域" 
              :rules="{required: true, message: '活动形式不能为空', trigger: 'change' }">
                <el-option label="区域一" value="shanghai"></el-option>
                <el-option label="区域二" value="beijing"></el-option>
              </el-select>
 </el-form-item>

动态校验字段是否required必需

image.png

image.png

清除表单验证

① 表单在进入的时候重置

_this.$refs['form'].resetFields();

② 表单验证在进入的时候重置

清空表单验证:
this.$refs[formName].clearValidate(); // 仅清除验证

③ 定向清除表单某个属性的单个验证

应用场景
对表单项进行操作的时候,可能会有联动的两个或则多个表单项,定向清除表单某个属性的验证

<el-form-item ref="picImgValidate" prop="picImg"></el-form-item>

 if (this.form.picImg != undefined) {
    this.$refs.form.clearValidate(['bbb']);  //清除单个
    this.$refs.form.clearValidate(['deptId','name']) //清除多个
 }

隐藏必填字段的标签旁边的红色星号

hide-required-asterisk 是否隐藏必填字段的标签旁边的红色星号

使用:hide-required-asterisk=‘true’

 let numin = 0;
          for(var key in  obj){
            if(numin==0){
           _this.$message.error(obj[key][0].message);
              return false
            }
            numin++
 }

❤ 表单使用遇到问题

1、报错:[Vue warn]: Injection “select“ not found

在这里插入图片描述

原因分析:
el-select要包裹el-option

解决方法:
el-option外面包裹一层el-select

在这里插入图片描述

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

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

相关文章

融资融券大揭秘:两融入门操作最新指南!

#引言# 随着中国资本市场日新月异的发展进程&#xff0c;融资融券交易已崭露头角&#xff0c;成为投资者们瞩目的焦点。作为一种颇具影响力的投资方式&#xff0c;它正逐渐吸引越来越多的投资者关注。本文旨在为大家深入剖析融资融券交易的核心概念、详尽的操作步骤以及必须留意…

数据清洗(ETL)案例实操

文章目录 数据清洗&#xff08;ETL&#xff09;概述案例需求和分析代码实现和结果分析 数据清洗&#xff08;ETL&#xff09;概述 “ETL&#xff0c;是英文Extract-Transform-Load的缩写&#xff0c;用来描述将数据从来源端经过抽取&#xff08;Extract&#xff09;、转换&…

医院挂号就诊系统的设计与实现

前端使用Vue.js 后端使用SpiringBoot MyBatis 数据使用MySQL 需要项目和论文加企鹅&#xff1a;2583550535 医院挂号就诊系统的设计与实现_哔哩哔哩_bilibili 随着社会的发展&#xff0c;医疗资源分布不均&#xff0c;患者就诊难、排队时间长等问题日益突出&#xff0c;传统的…

ABAP Json解析案例

ABAP解析返回的JSON 案例 DATA:LTOKEN TYPE STRING.DATA: LL_LINES(10),"行数LL_TABIX(10),"循环标号LL_PECNT TYPE P LENGTH 6 DECIMALS 2, "百分比LL_PECET(6),"百分数LL_TEXT(40)."消息CLEAR: LL_LINES,LL_TABIX,LL_PECNT,LL_PECET,LL_TEXT.* …

文心智能体【焦虑粉碎机】——帮你赶走“坏”情绪

目录&#xff1a; 引言1.登录 文心智能体平台2.创建智能体3.配置智能体&#x1f337; 头像设置&#x1f337; 名称设置&#x1f337; 简介设置&#x1f337;指令设置&#x1f337; 开场白设置&#x1f337; 引导示例设置 4.使用智能体 引言 随着ChatGPT的爆火&#xff0c;人工智…

32.5k star!!替换 postman?【送源码】

在软件开发过程中&#xff0c;API&#xff08;应用程序接口&#xff09;扮演着至关重要的角色。为了确保 API 的可靠性和性能&#xff0c;开发人员需要一种高效的方式来测试和调试它们。这方面的工具&#xff0c;大家经常用到的应该就是 postman 了。不过&#xff0c;今天了不起…

文章解读与仿真程序复现思路——电力系统保护与控制EI\CSCD\北大核心《基于改进粒子滤波的锂离子电池剩余寿命预测 》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

网络编程 一

一、UDP socket api的使用 Java 把系统原生的封装了. 核心的类有两个: 1 -> DatagramSocket 操作系统中,有一类文件,就叫socket文件. socket文件,抽象表示了 " 网卡"这样的硬件设备. 进行网络通信最核心的硬件设备网卡 通过网卡发送数据,就是写…

基于STM32F103和HC-SR04的12路RS485与Modbus通信方案

基于STM32F103和HC-SR04的12路RS485与Modbus通信方案 引言&#xff1a; 随着科技的快速发展&#xff0c;智能汽车技术已成为汽车工业的一个重要发展方向。在智能汽车的众多技术中&#xff0c;环境感知系统扮演着至关重要的角色。超声波雷达作为环境感知系统中的一种低成本、高可…

macOS Monterey 12.7.5 (21H1222) Boot ISO 原版可引导镜像下载

macOS Monterey 12.7.5 (21H1222) Boot ISO 原版可引导镜像下载 5 月 13 日凌晨&#xff0c;macOS Sonoma 14.5 发布&#xff0c;同时带来了 macOS Ventru 13.6.7 和 macOS Monterey 12.7.5 安全更新。 本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#x…

蓝海卓越计费管理系统 agent_setstate.php SQL注入漏洞复现

0x01 产品简介 蓝海卓越计费管理系统是一套以实现网络运营为基础,增强全局安全为中心,提高管理效率为目的的网络安全运营管理系统,提供“高安全、可运营、易管理”的运营管理体验,基于标准的RADIUS协议开发,它不仅支持PPPOE和WEB认证计费,还支持802.1X接入控制技术,与其…

BeanFactoryPostProcessor作用

介绍 BeanFactoryPostProcessor是spring中一个很重要的接口&#xff0c;位于spring流程中的获取BeanDefinition之后&#xff0c;实例化之前(点击spring流程)&#xff0c;我们可以实现该接口并注入spring容器中进行拓展&#xff08;对BeanDefinition进行自定义修改&#xff09;…

springboot实现多开发环境匹配置(超级简洁没废话)

首先logbok-spring.xml里面的内容 <?xml version"1.0" encoding"UTF-8"?> <configuration><!-- 开发、测试环境 --><springProfile name"dev,test"><include resource"org/springframework/boot/logging/log…

深度神经网络教程(个人总结版)

深度神经网络&#xff08;Deep Neural Networks, DNN&#xff09;是机器学习和人工智能的核心技术之一&#xff0c;已经广泛应用于图像识别、自然语言处理、语音识别、自动驾驶等领域。本文将详细介绍深度神经网络的背景、基本原理、架构、训练方法、优化技巧以及常见应用。 一…

Nodejs+Websocket+uniapp完成聊天

前言 最近想做一个聊天&#xff0c;但是网上的很多都是不能实现的&#xff0c;要么就是缺少代码片段很难实现websocket的链接&#xff0c;更别说聊天了。自己研究了一番之后实现了这个功能。值得注意的是&#xff0c;我想在小程序中使用socket.io&#xff0c;不好使&#xff0…

每日一题(3)——统计合格率(不会哦)

我们来看一个案例&#xff1a; 如何理解 pass【j】 ? 为什么pass[0]3,pass[1]4? 我一直没有想通&#xff0c;自己重新测试了一些数据&#xff0c;还是没有想明白&#xff0c;希望大家能够集思广益&#xff0c;点拨点拨&#xff1a; 下面的数组我随便使用的数据&#xff0c; …

.NET 一款兼容Exchange获取密钥的工具

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

识别剪贴板的内容并且添加磁力头

有时候复制的磁力链接并没有磁力头&#xff0c;而只有后面的内容&#xff0c;这个时候就必须给磁力链接添加开头magnet:xturn:btih:下载软件才能识别&#xff0c;如果经常需要这么做比较麻烦&#xff0c;于是我写了一个自动添加磁力头的小软件&#xff0c;运行即可自动添加&…

齐护K210系列教程(三十二)_在线模型训练

在线模型训练 概念理解准备工作1 采集图像1.1 图像要求1.2 使用K210采集图片 2 标注图像3 打包数据集4 上传数据4.1创建项目4.1.1图像分类创建项目4.1.2图像检测创建项目 4.2上传数据4.2.1分类检测上传数据4.2.2图像检测上传数据 5 训练模型6 部署模型以及测试7 测试效果7.1图像…

详细分析crontab定时执行任务(附Demo | 定时清空Tomcat的实战)

目录 前言1. 基本知识2. Demo3. 实战3.1 错误版本3.2 正确版本 前言 由于用户量大&#xff0c;且导出的日志以及缓存特别多&#xff0c;急需定期删除文件 1. 基本知识 crontab 是一个用于定时执行任务的命令行工具&#xff0c;通常在 Unix 和类 Unix 系统中可用&#xff0c;表…