uniapp vue2 车牌号输入组件记录

news2024/9/24 19:18:28

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>

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

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

相关文章

ubuntu 22 virt-manger(kvm)安装winxp

安装 、启动 virt-manager sudo apt install virt-manager sudo systemctl start libvirtdsudo virt-manager安装windowsXP 安装过程截图如下 要点1 启用 “包括寿终正寝的操作系统” win_xp.iso 安装过程 &#xff1a; 从winXp.iso启动, 执行完自己重启从硬盘重启&#xff0c…

八个LOGO素材网站推荐分享

即时设计资源广场 在UI界面设计中&#xff0c;为了找到合适的图标icon&#xff0c;你有没有尝试过翻遍整个网络&#xff0c;找到自己想要的&#xff0c;却无法下载或收费使用&#xff1f;最后&#xff0c;只收集图标icon材料需要半天时间。专业设计师使用的图标icon设计材料“…

Local server not started, start with 报错python -m weditor

一、python -m weditor 如图报错 Local server not started, start with 报错 二、解决方案 右上角选择新的无痕窗口下&#xff0c;然后打开 http://localhost:17310/ 即可

【案例】HOOPS Web Platform助力Eurostep简化全球制造流程!

行业&#xff1a;制造业 公司&#xff1a;Eurostep 软件&#xff1a;ShareAspace软件开发包&#xff1a;Hoops Web Platform 挑战&#xff1a; 为制造商打造协同设计产品的云服务平台。结合本地3D功能以增加现有的2D数据功能。在供应链日益全球化的情况下&#xff0c;保证数…

Android studio报错误提示 Some Kotlin libraries attached to this project 问题解决方案

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。 &#x1f449;点击跳转到教程 Android新建项目后&#xff0c;报以下错误 错误提示内容为&#xff1a; 这个项目附带的一…

C# OpenCvSharp DNN FreeYOLO 目标检测

目录 效果 模型信息 项目 代码 下载 C# OpenCvSharp DNN FreeYOLO 目标检测 效果 模型信息 Inputs ------------------------- name&#xff1a;input tensor&#xff1a;Float[1, 3, 192, 320] --------------------------------------------------------------- Outp…

Prompt提示工程上手指南:基础原理及实践(一)

想象一下&#xff0c;你在装饰房间。你可以选择一套标准的家具&#xff0c;这是快捷且方便的方式&#xff0c;但可能无法完全符合你的个人风格或需求。另一方面&#xff0c;你也可以选择定制家具&#xff0c;选择特定的颜色、材料和设计&#xff0c;以确保每件家具都符合你的喜…

跨国制造业组网方案解析,如何实现总部-分支稳定互联?

既要控制成本&#xff0c;又要稳定高效&#xff0c;可能吗&#xff1f; 在制造企业积极向“智造”发展、数字化转型的当下&#xff0c;物联网、人工智能、机器人等新型设备加入到生产、管理环节&#xff0c;为企业内部数据传输提出了更高的要求。而当企业规模扩大&#xff0c;数…

DevOps搭建(十四)-基于Jenkins流水线方式部署详细步骤

1、新建一个流水线项目 进入配置最下方的流水线&#xff0c;可以选择Hello World最简单的demo体验。 2、编写流水线脚本 2.1、编写整体的流水线脚本 整体他脚本格式如下&#xff0c;我们只要在对应的 //所有的脚本命令都放在pipeline中 pipeline {//指定任务在哪个集群节点中…

test mutation-00-变异测试概览

拓展阅读 test 系统学习-04-test converate 测试覆盖率 jacoco 原理介绍 test 系统学习-05-test jacoco 测试覆盖率与 idea 插件 test 系统学习-06-test jacoco SonarQube Docker learn-29-docker 安装 sonarQube with mysql Ubuntu Sonar 突变测试是什么&#xff1f; …

C语言编译器(C语言编程软件)完全攻略(第十八部分:VC6.0(VC++6.0)下载地址和安装教程(图解))

介绍常用C语言编译器的安装、配置和使用。 十八、VC6.0&#xff08;VC6.0&#xff09;下载地址和安装教程&#xff08;图解&#xff09; 截止到2016年07月06日&#xff0c;C语言中文网提供的VC6.0安装包&#xff0c;下载量已超过150万次&#xff0c;收到反馈超过300条。 微软…

HTML5大作业-精致版个人博客空间模板源码

文章目录 1.设计来源1.1 博客主页界面1.2 博主信息界面1.3 我的文章界面1.4 我的相册界面1.5 我的工具界面1.6 我的源码界面1.7 我的日记界面1.8 我的留言板界面1.9 联系博主界面 2.演示效果和结构及源码2.1 效果演示2.2 目录结构2.3 源代码 源码下载 作者&#xff1a;xcLeigh …

【网络安全】【密码学】常见数据加(解)密算法及Python实现(二)、椭圆曲线密码ECC

本文介绍椭圆曲线密码及其Python实现。 一、实验目的 1、 掌握椭圆曲线上的点间四则运算和常见的椭圆曲线密码算法&#xff1b; 2、 了解基于ECC的伪随机数生成算法和基于椭圆曲线的商用密码算法。 二、算法原理 1、算法简介 椭圆曲线密码学&#xff08;Elliptic Curve Cr…

web学习笔记(九)

目录 1.初识JS(JavaScript) 1.1什么是JavaScript&#xff1f; 1.2HTML5 CSS3 javaScript三者的关系 1.3 JAVAScript的作用 1.4JAVAScript的组成部分 1.5JS注释 1.6补充知识 2.JS的引入方法 2.1行内式 2.2嵌入式&#xff08;内嵌式&#xff09; 2.3外链式 3.输入和…

使用docker build构建image

文章目录 环境步骤准备例1&#xff1a;基本用法例2&#xff1a;缓存layer例3&#xff1a;Multi-stage例4&#xff1a;Mountcache mountbind mount 例5&#xff1a;参数例6&#xff1a;Export文件例7&#xff1a;测试 参考 环境 RHEL 9.3Docker Community 24.0.7 步骤 在Dock…

Protobuf 安装与使用

Protobuf 安装与使用 1 环境2 安装 [apt安装]2 安装 [源码安装]1 依赖2 下载 protobuf3 解压4 编译安装5 配置环境 2 命令查看版本卸载 3 使用书写 .proto 文件编译 .proto 文件生成 cpp 文件编写 cpp 文件编译运行 参考 1 环境 ubuntn 20.04 protobuf v3.6.1 2 安装 [apt安装…

如何在 Ubuntu 20.04 上安装和使用 Docker

前些天发现了一个人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;最重要的屌图甚多&#xff0c;忍不住分享一下给大家。点击跳转到网站。 如何在 Ubuntu 20.04 上安装和使用 Docker 介绍 Docker是一个可以简化容器中应用程序进程管理过程的应用程序。…

uniapp中的导入zzx-calendar日历的使用

需求&#xff1a; 一周的日历&#xff0c;并且可以查看当月的 &#xff0c;下个月的&#xff0c;以及可以一周一周的切换日期 借助&#xff1a;hbuilder插件市场中的zzx-calendar插件库 在父组件中引入 并注册为子组件 <template><zzx-calendar selected-change&qu…

设计模式③ :生成实例

文章目录 一、前言二、Singleton 模式1. 介绍2. 应用3. 总结 三、Prototype 模式1. 介绍2. 应用3. 总结 四、Builder 模式1. 介绍2. 应用3. 总结 五、Abstract Factory 模式1. 介绍2. 应用3. 总结 参考内容 一、前言 有时候不想动脑子&#xff0c;就懒得看源码又不像浪费时间所…

LiveGBS流媒体平台GB/T28181常见问题-国标编号是什么设备编号和通道国标编号标记唯一的摄像头|视频|镜头通道

LiveGBS国标GB28181中国标编号是什么设备编号和通道国标编号标记唯一的摄像头|视频|镜头通道 1、什么是国标编号&#xff1f;2、国标设备ID和通道ID3、ID 统一编码规则4、搭建GB28181视频直播平台 1、什么是国标编号&#xff1f; 国标GB28181对接过程中&#xff0c;可能有的小…