vue element-ui 车牌号选择组件

news2025/1/21 21:53:03

实现效果

carnumber.vue

<template>
  <div class="car_no_popover">
    <div class="row_div">
      <div class="every_div" v-for="item in area">
        <button @click="selectCarNo(item)">{{ item }}</button>
      </div>
    </div>
    <div class="row_div">
      <div class="every_div" v-for="item in areaLetter">
        <button @click="selectCarNo(item)">{{ item }}</button>
      </div>
    </div>
    <div class="row_div">
      <div class="btn_div">
        <el-button type="primary" size="mini" icon="el-icon-back" @click="backBtnHandle"></el-button>
        <el-button type="primary" size="mini" @click="sureBtnHandle">确认</el-button>
        <el-button type="primary" size="mini" @click="clearBtnHandle">清除</el-button>
      </div>
    </div>
  </div>
</template>
<script>

  export default {
    props: {
      value: Boolean,
      modelValue: String,
    },
    data() {
      return {
        visible: false,
        carNo: '',
        area: [
          "京", "津", "沪", "渝", "冀", "豫", "云", "辽", "黑", "湘", "皖", "鲁", "新", "苏", "浙",
          "赣", "鄂", "桂", "甘", "晋", "蒙", "陕", "吉", "贵", "粤", "青", "藏", "川", "宁", "琼"
        ],
        areaLetter: [
          "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "O",
          "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"
        ],
      }
    },
    methods: {
      selectCarNo(item) {
        this.carNo = this.carNo + item
        this.$emit('update:modelValue', this.carNo)
      },
      backBtnHandle() {
        if (this.carNo.length > 0) {
          this.carNo = this.carNo.substring(0, this.carNo.length - 1)
          this.$emit('update:modelValue', this.carNo)
        }
      },
      sureBtnHandle() {
        this.$emit('fatherMethod');
      },
      clearBtnHandle() {
        this.carNo = ''
        this.$emit('update:modelValue', this.carNo)
      },
      updateValue(item) {
        this.carNo = item;
        this.$emit('update:modelValue', this.carNo)
      }
    }
  }
</script>
<style scoped>
  .car_no_popover {
    margin-top: 18px !important;
  }

  .every_div {
    margin-left: 4px;
    margin-top: 4px;
  }

  .every_div button {
    width: 30px;
    cursor: pointer;
  }

  .row_div {
    display: flex;
    flex-wrap: wrap;
  }

  .row_div .btn_div {
    position: absolute;
    right: 13px;
    bottom: 11px;
  }

  .row_div .btn_div button {
    height: 22px;
    padding: 4px 13px;
  }
</style>

父组件引用

<el-col :span="12">
            <el-form-item label="进土车号" prop="enterCarNo">
              <el-popover
                placement="bottom"
                width="400"
                v-model="carVisible"
                trigger="click">
                <car-number :model-value.sync="form.enterCarNo"  ref="carNumber"  @fatherMethod="carVisibleChange"></car-number>
                <el-input slot="reference" v-model.trim="form.enterCarNo" placeholder="请输入进土车号" :disabled="this.disabled" @input="changeValue(form.enterCarNo)" />
              </el-popover>
            </el-form-item>
          </el-col> 

涉及到的方法 

changeValue(item){
 this.$refs.carNumber.updateValue(item); // 调用子组件的方法
},
carVisibleChange(){
   this.carVisible = false;
},

 附带车牌号验证


data() {
	let validatorCarno = (rule, value, callback) => {
      let flag = false
      let xreg =
          /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/;
      let creg =
          /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;
      if (value.length === 7) {
        flag = creg.test(value);
      } else if (value.length === 8) {
        flag = xreg.test(value);
      }
      if (flag) {
        callback();
      } else {
        return callback(new Error("车牌号格式不正确"));
      }
    };
    return {
	    dataRules: {
	        carno: [
	          {required: true, message: this.$t('validate.required'), trigger: 'change'},
	          {validator: validatorCarno, message: '车牌号格式不正确'}
	        ]
	      }
	}
}

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

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

相关文章

如何编辑扫描的 PDF 文档

无论您从事哪个行业&#xff08;医疗保健、房地产、现场服务管理或金融服务&#xff09;&#xff0c;您都很有可能使用在线表格和调查来培训员工、收集客户反馈、授权付款和注册活动参与者。使用合适的软件&#xff0c;这些表格很容易创建、编辑和填写。此外&#xff0c;您还可…

【文献阅读】Partially Adaptive Array Techniques

Abstract 文章研究了在多窄带干扰环境下&#xff0c;辅助阵元的选择&#xff0c;为部分自适应天线阵&#xff0c;以达到性能优化的目的。推导了双干扰问题的显式解。这个案例足以说明多个干扰的相互作用&#xff0c;同时也为更复杂的问题提供了一定程度的理解。本文还提出并讨…

如何为自己的项目生成changelog

背景 在github上看到人家的更新日志感觉很cool&#xff0c;怎么能给自己项目来一套呢 环境信息 tdstdsdeMacBook-Pro demo-doc % node -v v14.18.1 tdstdsdeMacBook-Pro demo-doc % npm -v 6.14.15硬件信息 型号名称&#xff1a;MacBook Pro版本&#xff1a; 12.6.9芯片&…

nginx反向代理动静分离和负载均衡

一.nginx 反向代理简要介绍 1.什么是反向代理 反向代理是一种服务器&#xff0c;在这种设置中&#xff0c;代理服务器接收客户端的请求&#xff0c;并将这些请求转发给一个或多个后端服务器&#xff08;例如应用服务器、数据库服务器等&#xff09;。然后&#xff0c;后端服务…

Transformer预测 | 基于Transformer+LSTM股票价格预测时间序列预测(Pytorch)

效果一览 基本介绍 股票行情是引导交易市场变化的一大重要因素,若能够掌握股票行情的走势,则对于个人和企业的投资都有巨大的帮助。然而,股票走势会受到多方因素的影响,因此难以从影响因素入手定量地进行衡量。但如今,借助于机器学习,可以通过搭建网络,学习一定规模的股…

Unity URP下通过相机让部分Render不受后处理渲染

我们有时候不想某些对象受到后处理影响&#xff0c;找到了这样一个决绝办法&#xff0c;通过增加一个Overlay相机只照射这个模型来实现&#xff0c;下面看看如何实现。 第一步 首先我们拖一个测试场景&#xff0c;有如下一些元素 一个盒子&#xff0c;以后后处理&#xff0c…

海思SS928/SD3403开发笔记1——使用串口调试开发板

该板子使用串口可以调试&#xff0c;下面是win11 调试 该板子步骤 1、给板子接入鼠标、键盘、usb转串口 2、下载SecureCRT&#xff0c;并科学使用 下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/11dIkZVstvHQUhE8uS1YO0Q 提取码&#xff1a;vinv 3、安装c…

计算机毕业设计Python+Flask弹幕情感分析 B站视频数据可视化 B站爬虫 机器学习 深度学习 人工智能 NLP文本分类 数据可视化 大数据毕业设计

首先安装需要的python库&#xff0c; 安装完之后利用navicat导入数据库文件bili100.sql到mysql中&#xff0c; 再在pycharm编译器中连接mysql数据库&#xff0c;并在设置文件中将密码修改成你的数据库密码。最后运行app.py&#xff0c;打开链接&#xff0c;即可运行。 B站爬虫数…

Springboot整合Kafka消息队列服务实例

一、Kafka相关概念 1、关于Kafka的描述 Kafka是由Apache开源&#xff0c;具有分布式、分区的、多副本的、多订阅者&#xff0c;基于Zookeeper协调的分布式处理平台&#xff0c;由Scala和Java语言编写。通常用来搜集用户在应用服务中产生的动作日志数据&#xff0c;并高速的处…

创建Docker容器与外部机通信(独立IP的方式)

需求&#xff1a;希望外部可以直接通过不同IP地址访问宿主机上的Docker容器&#xff0c;而不需要端口映射&#xff08;同一个IP不同的端口与外部通讯&#xff09;&#xff0c;这通常涉及到在宿主机的网络层面进行更高级的配置&#xff0c;比如使用IP伪装&#xff08;IP masquer…

前端网站(二)-- 菜单页面【附源码直接可用】

菜单页面 开篇&#xff08;请大家看完&#xff09;&#xff1a;此网站写给挚爱&#xff0c;后续页面还会慢慢更新&#xff0c;大家敬请期待~ ~ ~ 轻舟所编写这个前端框架的设计初衷&#xff0c;纯粹是为了哄对象开心。除此之外&#xff0c;并无其它任何用途或目的。 此前端框…

《系统架构设计师教程(第2版)》第11章-未来信息综合技术-04-边缘计算

文章目录 1. 概述1.1 简介1.2 三类落地形态1.2.1 云边缘1.2.2 边缘云1.2.3 云化网关 2. 边缘计算的特点2.1 联接性2.2 数据第一入口2.3 约束性2.4 分布性 3. 边云协同3.1 概述3.2 六种协同3.2.1 资源协同3.2.2 数据协同3.2.3 智能协同3.2.4 应用管理协同3.2.5 业务管理协同3.2.…

STM32单片机USART串口详解

文章目录 1. 通信接口概述 2. 串口通信 3. 硬件电路 4. 电平标准 5. 串口参数及时序 5.1 数据帧的组成 5.2 起始位 5.3 数据位 5.4 校验位 5.5 停止位 5.6 波特率 5.7 数据帧传输过程示例 6. 串口时序 7. USART概述 8. USART框图 9. USART基本结构 10. 数据帧…

Java | Leetcode Java题解之第146题LRU缓存

题目&#xff1a; 题解&#xff1a; public class LRUCache {class DLinkedNode {int key;int value;DLinkedNode prev;DLinkedNode next;public DLinkedNode() {}public DLinkedNode(int _key, int _value) {key _key; value _value;}}private Map<Integer, DLinkedNode…

UE4_材质_雨滴涟漪效果ripple effect_ben教程

学习笔记&#xff0c;不喜勿喷&#xff01;侵权立删&#xff0c;祝愿生活越来越好&#xff01; 雨水落下时会产生这些非常漂亮的同心环波纹&#xff0c;我们要做的第一件事是创建一个单个的圆环遮罩动画&#xff0c;我们希望环在开始的时候在中心很小&#xff0c;然后放大&…

45岁TVB女星惊爆与大15岁老公离婚

45岁的姚嘉妮今日被传媒爆出与结婚18年老公林祖辉离婚&#xff0c;她接受其他传媒访问时&#xff0c;指两人分开不涉及第三者&#xff0c;而一对子女亦会共同抚养&#xff0c;而更令人惊讶的是&#xff0c;两人已经离婚多年&#xff0c;女方形容大家现在关系为家人。 不过9年前…

MBR40100CT-ASEMI无人机专用MBR40100CT

编辑&#xff1a;ll MBR40100CT-ASEMI无人机专用MBR40100CT 型号&#xff1a;MBR40100CT 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;40A 最大循环峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;100V…

深入Node.js:实现网易云音乐数据自动化抓取

随着互联网技术的飞速发展&#xff0c;数据已成为企业和个人获取信息、洞察市场趋势的重要资源。音频数据&#xff0c;尤其是来自流行音乐平台如网易云音乐的数据&#xff0c;因其丰富的用户交互和内容多样性&#xff0c;成为研究用户行为和市场动态的宝贵资料。本文将深入探讨…

maven安装、配置与plugins报红的解决方法

maven安装与配置 1.在官网中下载maven 官网地址&#xff1a;https://maven.apache.org/ 2.解压maven压缩包 将maven解压到一个没有中文的文件夹中&#xff1a; 3.配置环境变量并验证 1、在设置中找到 “高级系统设置”&#xff0c;点击后再点击环境变量&#xff1a; 2、在 “系…

Arcgis导入excel出现的问题

我手动添加了object-id字段也没有用&#xff0c;然后再excel里面又添加了一行&#xff0c;关闭后打开还是不行&#xff0c;额案后在网上看到了一种方法&#xff0c;很有效&#xff0c;予以记录。 1、我的文件是csv格式&#xff0c; 先在excel里面另存为xlsx格式 2、转换工具里…