uniapp vue2 车牌号输入组件记录

uniapp vue2 车牌号输入案例记录

组件如图
在这里插入图片描述

直接上代码

1.html

<template>
	<view>
		<view class="plate" :class="{'show': show}">
			<view class="itemFirst flex-d">
				<view class="item item1" @click="handleChange(0)">
					{{ plateNumber[0] || '京' }}
				</view>
				<view class="item item1" @click="handleChange(1)">{{ plateNumber[1] }}</view>
			</view>
			<view class="point"></view>
			<view class="item" :class="{'active': index === 2}" @click="handleChange(2)">{{ plateNumber[2] }}</view>
			<view class="item" :class="{'active': index === 3}" @click="handleChange(3)">{{ plateNumber[3] }}</view>
			<view class="item" :class="{'active': index === 4}" @click="handleChange(4)">{{ plateNumber[4] }}</view>
			<view class="item" :class="{'active': index === 5}" @click="handleChange(5)">{{ plateNumber[5] }}</view>
			<view class="item" :class="{'active': index === 6}" @click="handleChange(6)">{{ plateNumber[6] }}</view>
			<view class="item new-energy" :class="{'active': index === 7}" @click="handleChange(7)">
				<view class="newDot flex-c">新能源</view>
				<view class="" v-if="plateNumber[7]">
					<text>{{ plateNumber[7] }}</text>
				</view>
			</view>
		</view>
		<section class="panel" :class="{'show': show}">
			<view class="header">
				<view @click="handleReset">重置</view>
				<view @click="show = false">完成</view>
			</view>
			<view class="panelList">
				<view class="item" v-for="(item, idx) of currentDatas" :key="idx">
					<view :class="{'disabled': (index == 1 && idx < 10) || (index > 1 && index < 6 && idx > 33) }" v-if="item !==''" @click="handleClickKeyBoard(item, idx)">{{ item }}</view>
				</view>
				<view class="item backspace" :class="{'special': index === 0 }" @click="handleDelete">×</view>
			</view>
		</section>
	</view>
</template>

2.js

<script>
	export default {
		name: "plate",
		props: {
			number: {
				type: Array,
				default: []
			}
		},
		watch: {
			number(newVal, oldVal) {
				this.plateNumber = newVal
			}
		},
		data() {
			return {
				show: false,
				plateNumber: this.number,
				index: -1,
				areaDatas: [
					'京', '津', '渝', '沪', '冀', '晋', '辽', '吉', '黑', '苏',
					'浙', '皖', '闽', '赣', '鲁', '豫', '鄂', '湘', '粤', '琼',
					'川', '贵', '云', '陕', '甘', '青', '蒙', '桂', '宁', '新',
					'藏', '使', '领', '', '', '', '', '', ''
				],
				characterDatas: [
					0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
					'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K',
					'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
					'W', 'X', 'Y', 'Z', '挂', '警', '学', '港', '澳',
				]
			}
		},

		computed: {
			currentDatas() {
				return this.index === 0 ? this.areaDatas : this.characterDatas;
			},

		},
		methods: {
			handleChange(index) {
				this.index = index;
				this.show = true;
			},
			handleClickKeyBoard(item, idx) {
				if ((this.index === 1 && idx < 10) || (this.index > 1 && this.index < 6 && idx > 33)) {
					return;
				}
				if (this.index < 8) {
					this.$set(this.plateNumber, this.index, item);
					this.$emit("myPlateChange", this.plateNumber);
				}
				if (this.index < 7) {
					this.index++;
				}
			},
			// 重置
			handleReset() {
				this.index = 0;
				for (let i = 0; i < 8; i++) {
					this.$set(this.plateNumber, i, '');
				}
				this.$emit("myPlateChange", this.plateNumber);
			},
			// 删除
			handleDelete() {
				this.$set(this.plateNumber, this.index, '');
				this.$emit("myPlateChange", this.plateNumber);
				if (this.index > 0) {
					this.index--;
				}
			}
		}
	}
</script>

3.css

<style scoped lang='scss'>
	.new-energy {
		box-sizing: border-box;
		border: 2rpx dashed #03BE9F;
		font-weight: bold;
		height: 84rpx;
		background: red;
		width: 100%;
		position: relative;

		.newDot {
			width: 55rpx;
			height: 30rpx;
			border-radius: 50rpx;
			background: #03BE9F;
			font-size: 16rpx;
			color: #fff;
			position: absolute;
			top: -20rpx;
			left: 7rpx;
		}
	}

	.plate {
		display: flex;
		justify-content: space-between;

		.item {
			width: 70rpx;
			height: 84rpx;
			background-color: #F3F4F7;
			border-radius: 8rpx;
			text-align: center;
			line-height: 84rpx;
			font-size: 32rpx;
			color: rgba(0, 0, 0, 0.90);
			font-weight: bold;
			position: relative;

			/* margin 18rpx 0 .active {
				background-color: #bbbbbb;
			} */
		}

		.itemFirst {
			border-radius: 8rpx;
			padding: 18rpx 0;
			height: 84rpx;
			box-sizing: border-box;
			background-color: #F3F4F7;

			.item1 {
				height: 48rpx;
				line-height: 48rpx;
				border-radius: 0;
			}

			.item:nth-child(1) {
				border-right: 2rpx solid #DFDFDF;
			}
		}

		.emptyNew {
			height: 54px;
			line-height: 30rpx;

			text {
				color: #03BE9F;
				font-size: 18rpx;
			}
		}

		.point {
			height: 80rpx;
			text-align: center;
			line-height: 80rpx;
			color: #BDC4CC;
			font-size: 18rpx;
		}

		.triangle {
			width: 0;
			height: 0;
			border: 6rpx solid transparent;
			border-right-color: #00C69D;
			border-bottom-color: #00C69D;
			border-radius: 1rpx 2rpx 1rpx;
			position: absolute;
			right: 6rpx;
			bottom: 6rpx;
		}
	}

	.panel {
		position: fixed;
		left: 0;
		width: 100%;
		bottom: 0;
		z-index: 999;
		box-sizing: border-box;
		background-color: #F5F5F5;
		transition: all 0.3s ease;
		transform: translateY(100%);

		&.show {
			transform: translateX(0);
		}

		.header {
			display: flex;
			align-items: center;
			justify-content: space-between;
			padding: 0 24rpx;
			height: 96rpx;
			color: #2080F7;
			font-size: 34rpx;
		}

		.panelList {
			padding: 0 19rpx 20rpx;

			.item {
				display: inline-block;
				width: 80rpx;
				height: 84rpx;
				margin-right: 8rpx;
				margin-bottom: 8rpx;
				vertical-align: top;
				border-radius: 8rpx;

				view {
					width: 100%;
					height: 84rpx;
					line-height: 84rpx;
					border-radius: 6rpx;
					background: #FEFFFE;
					font-size: 32rpx;
					color: rgba(0, 0, 0, 0.90);
					font-weight: bold;
					text-align: center;

					&.disabled {
						background-color: rgba(254, 255, 254, 0.6);
						color: rgba(0, 0, 0, 0.23);
					}
				}

				:nth-of-type(10n) {
					margin-right: 0;
				}
			}

			.backspace {
				vertical-align: top;
				font-size: 48rpx;
				font-weight: bold;
				text-align: center;
				height: 84rpx;
				line-height: 84rpx;
				border-radius: 6rpx;
				background: #FEFFFE;
				color: rgba(0, 0, 0, 0.90);
			}
		}
	}
</style>

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

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

相关文章

自定义标记

章节目录&#xff1a; 一、概述二、使用自定义标记三、注册自定义标记3.1 创建文件3.2 修改文本编码格式 四、执行测试五、结束语 一、概述 pytest 可以支持自定义标记&#xff0c;自定义标记可以把一个 web 项目划分多个模块&#xff0c;然后指定模块名称执行。譬如我可以标明…

Java基本语法

第一章 Java基本语法 1. Java程序剖析1.1 Java代码的基本格式1.2 包、import1.3 类1.4 main()方法1.5 方法1.6 标识符1.7 关键字1.8 修饰符1.9 程序块1.10 语句1.11 Java代码的注释 2. 常量与变量2.1 常量2.2 变量2.2 变量的分类2.2.1 成员变量2.2.2 局部变…

中国文化文物和旅游统计年鉴,数据含pdf、excel等格式,文本形式呈现,可预览数据

基本信息. 数据名称: 中国旅游统计年鉴 数据格式: pdf、xls不定 数据时间: 2012-2020年 数据几何类型: 文本 数据坐标系: —— 数据来源&#xff1a;文化和旅游部、网络公开数据 原名为《中国旅游统计年鉴》2020年后更名为《中国文化文物和旅游统计年鉴》&#xff…

实验笔记之——基于COLMAP的Instant-NGP与3D Gaussian Splatting的对比

之前博客进行了COLMAP在服务器下的测试 实验笔记之——Linux实现COLMAP-CSDN博客文章浏览阅读794次&#xff0c;点赞24次&#xff0c;收藏6次。学习笔记之——NeRF SLAM&#xff08;基于神经辐射场的SLAM&#xff09;-CSDN博客NeRF 所做的任务是 Novel View Synthesis&#xf…

史上最牛逼的fiddler抓包操作,【工具】Fiddler使用教程

eb调试工具之一&#xff0c; 它能记录所有客户端和服务器的http和https请求。允许你监视、设置断点、甚至修改输入输出数据。Fiddler包含了一个强大的基于事件脚本的子系统&#xff0c;并且能使用.net语言进行扩展。换言之&#xff0c;你对HTTP 协议越了解&#xff0c;你就能越…

【DevOps-07-2】Sonarqube基本使用

一、简要说明 Sonar Qube的使用方式很多&#xff0c;Maven可以整合&#xff0c;也可以采用sonar-scanner的方式&#xff0c;再查看Sonar Qube的检测效果 Sonarqube集成在Maven实现代码检测使用sonar-scanner客户端的方式 二、Sonarqube管理后台安装中文插件 1、登录Sonarqube管…

案例253:基于微信小程序的懂球短视频管理系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SpringBoot JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder …

无人机发动机,预计到2025年将保持相对稳定

随着无人机技术的不断发展&#xff0c;无人机应用领域越来越广泛&#xff0c;市场需求也不断扩大。而无人机发动机是无人机的核心部件之一&#xff0c;市场前景也十分广阔。全球市场分析&#xff1a; 目前&#xff0c;全球无人机发动机市场主要分为四类&#xff1a;燃气涡轮发动…

【自学笔记】01Java基础-09Java关键字详解

介绍java&#xff08;基于java11&#xff09;中所有关键字&#xff0c;以及主要重要的关键字详解。 1 Java 11中的关键字&#xff1a; 1.1 类型声明与变量定义 boolean&#xff1a;声明布尔类型变量&#xff0c;只有两个可能值 true 或 false。byte&#xff1a;声明一个8位有…

公共用例库计划--个人版(二)主体界面设计

1、任务概述 计划内容&#xff1a;完成公共用例库的开发实施工作&#xff0c;包括需求分析、系统设计、开发、测试、打包、运行维护等工作。 1.1、 已完成&#xff1a; 需求分析、数据库表的设计&#xff1a;公共用例库计划–个人版&#xff08;一&#xff09; 1.2、 本次待…

vmware安装centos 7.6 操作系统

vmware安装centos 7.6 操作系统 1、下载centos 7.6 操作系统镜像文件2、安装centos 7.6操作系统3、配置centos 7.6 操作系统3.1、配置静态IP地址 和 dns3.2、查看磁盘分区3.3、查看系统版本 1、下载centos 7.6 操作系统镜像文件 这里选择 2018年10月发布的 7.6 版本 官方下载链…

33--反射

1、反射(Reflection)的概念 1.1 反射的出现背景 Java程序中&#xff0c;所有的对象都有两种类型&#xff1a;编译时类型和运行时类型&#xff0c;而很多时候对象的编译时类型和运行时类型不一致。 Object obj new String("hello"); obj.getClass(); 例如&#xf…

互联网广告行业发展历程

在20年的历程中&#xff0c;广告主与媒体方持续面对着一些问题&#xff0c;一些核心问题推动了行业的迭代。 互联网广告经过了20年左右的高速发展&#xff0c;已愈发成熟&#xff0c;其历程是有趣的。 对互联网广告发展的理解&#xff0c;网上的文章并不多&#xff0c;已有的…

力扣1944.队列中可以看到的人数--单调栈

思路&#xff1a; 由题知一个人能 看到 他右边另一个人的条件是这两人之间的所有人都比他们两人 矮 &#xff0c;也就是说&#xff0c;在自己右边第一个比自己高的人后面的人就肯定看不到了那么只需要找到右边第一个比自己高的人与自己之间的所有满足要求的人就行了&#xff0…

大数据毕业设计:python房源数据爬虫分析预测系统+可视化 +商品房数据(源码+讲解视频)✅

毕业设计&#xff1a;2023-2024年计算机专业毕业设计选题汇总&#xff08;建议收藏&#xff09; 毕业设计&#xff1a;2023-2024年最新最全计算机专业毕设选题推荐汇总 &#x1f345;感兴趣的可以先收藏起来&#xff0c;点赞、关注不迷路&#xff0c;大家在毕设选题&#xff…

15|检索增强生成:通过RAG助力鲜花运营

15&#xff5c;检索增强生成&#xff1a;通过RAG助力鲜花运营 什么是 RAG&#xff1f;其全称为 Retrieval-Augmented Generation&#xff0c;即检索增强生成&#xff0c;它结合了检索和生成的能力&#xff0c;为文本序列生成任务引入外部知识。RAG 将传统的语言生成模型与大规…

Pygame和Cocos2d

Pygame和Cocos2d都是 Python 中常用的游戏引擎&#xff0c;但它们的设计目标、特点和使用场景略有不同。 Pygame与Cocos2d&#xff0c;目前是使用人数最多的两个Python游戏库。根据某知名产品点评网站的数据显示&#xff0c;排名前五的Python 2D游戏库如下图所示。其中&#x…

聚观早报 |小米汽车SU7官图发布;优酷上线“AI搜片”功能

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 12月29日消息 小米汽车SU7官图发布 优酷上线“AI搜片”功能 小米汽车智能驾驶技术公布 百度投资AIGC公司必优科技…

硬链接和软链接以及inode的简述【Linux】

硬链接和软链接 inode是什么&#xff1f;面试题 硬链接软链接 inode是什么&#xff1f; 认识inode之前&#xff0c;先来看一下一个文件在磁盘里面是怎么存储的。   首先一个物理的圆盘形状且多层的一个磁盘会被逻辑化成为一个数组&#xff0c;找到一个文件在这个数组里面叫做…

JavaScript新加入的**运算符,哪里有些不一样呢?

JavaScript语法(四)&#xff1a;新加入的**运算符&#xff0c;哪里有些不一样呢&#xff1f; 上一节课我们已经给你介绍了表达式的一些结构&#xff0c;其中关于赋值表达式&#xff0c;我们讲完了它的左边部分&#xff0c;而留下了它右边部分&#xff0c;那么&#xff0c;我们…