用css绘制收银键盘

最近需求说需要自己弄个收银键盘,于是乎直接上手搓

主要基于Vue3写的,主要是CSS

<template><view class="container"><view class="info"><image class="img" src="" mode=""></image><text class="name">达达</text></view><view class="inputBox"><view class="concent flex flex_just_sb flex_items_c"><view class="insideBox"><text class="title">付款金额</text><view class="price"><text class="value">¥</text><text class="number">{{payMuch}}</text></view></view></view></view><div class="btn"><view class="btn_box"><view class="line_one"><button @click="_handleKeyPress('1')" type="primary">1</button><button @click="_handleKeyPress('2')" type="primary">2</button><button @click="_handleKeyPress('3')" type="primary">3</button><button @click="_handleKeyPress('D')" type="primary">清除</button></view><view class="btn_bottom"><view class="line_two"><view class="line-left"><view class="line_box"><view class="line_two"><button @click="_handleKeyPress('4')" type="primary">4</button><button @click="_handleKeyPress('5')" type="primary">5</button><button @click="_handleKeyPress('6')" type="primary">6</button></view><view class="line_three"><button @click="_handleKeyPress('7')" type="primary">7</button><button @click="_handleKeyPress('8')" type="primary">8</button><button @click="_handleKeyPress('9')" type="primary">9</button></view><view class="line_four"><button type="primary"></button><button @click="_handleKeyPress('0')" type="primary">0</button><button @click="_handleKeyPress('.')" type="primary">.</button></view></view></view><view class="line-right"><button type="primary" @click="_handleKeyPress('S')">优惠<br />买单</button></view></view></view></view></div></view>
</template><script setup>import {reactive,ref} from 'vue';import {preferentialPay} from '@/api/store'import {onLoad,onShow} from '@dcloudio/uni-app'const payMuch = ref('0')const payPrice = ref(0)const confirmOrderStatus = ref(false)const isdisabled = ref(false)//处理按键function _handleKeyPress(num) {//不同按键处理逻辑// -1 代表无效按键,直接返回if (num == -1) return false;switch (String(num)) {//小数点case ".":_handleDecimalPoint();break;//删除键case "D":_handleDeleteKey();break;//确认键case "S":_handleConfirmKey();break;default:_handleNumberKey(num);break;}}//处理数字function _handleNumberKey(num) {let S = payMuch.value;//如果有小数点且小数点位数不小于2if (S.indexOf(".") > -1 && S.substring(S.indexOf(".") + 1).length < 2) payMuch.value = S + num;//没有小数点if (!(S.indexOf(".") > -1)) {//如果第一位是0,只能输入小数点if (num == 0 && S.length == 0) payMuch.value = "0.";else {if (S.length && Number(S.charAt(0)) === 0) {payMuch.value = num;return;}payMuch.value = S + num;}}}function _handleConfirmKey() {let S = payMuch.value;//未输入if (!S.length || Number(S) === 0) {showTotal("您目前未输入!");return false;}//将 8. 这种转换成 8.00if (S.indexOf(".") > -1 && S.indexOf(".") === S.length - 1) S = Number(S.substring(0, S.length - 1)).toFixed(2);//保留两位S = Number(S).toFixed(2);confirmOrder();}//处理小数点函数function _handleDecimalPoint() {//如果包含小数点,直接返回if (payMuch.value.indexOf(".") > -1) return false;//如果小数点是第一位,补0if (!payMuch.value.length) payMuch.value = "0.";//如果不是,添加一个小数点else payMuch.value = payMuch.value + ".";}//处理删除键function _handleDeleteKey() {let S = payMuch.value;//如果没有输入,直接返回if (S.length <= 1) return (payMuch.value = "0");//否则删除最后一个payMuch.value = S.substring(0, S.length - 1);}async function toPayMethods(){const {data,result,msg} = await preferentialPay({// 处理你需要处理的支付逻辑})}function showTotal(e) {uni.showToast({title: e,icon: 'none',duration: 2000,mask: true})}function confirmOrder() {var val = payMuch.value;if (val && val > 0) {payPrice.value = val;toPayMethods();confirmOrderStatus.value = true;isdisabled.value = true;} else {showTotal('请输入正确的付款金额!')confirmOrderStatus.value = false;isdisabled.value = false;}}
</script><style lang="scss" scoped>.container {.info {display: flex;align-items: center;justify-content: center;padding-top: 40upx;.img {background: greenyellow;width: 80upx;height: 80upx;border-radius: 50%;}.name {font-weight: bold;font-size: 32upx;color: #323233;line-height: 48upx;padding-left: 20upx;}}.inputBox {// margin-top: 20upx;width: 90vw;min-height: 100upx;background: #fff;border: 0.0625upx solid #999;// border-radius: 0.375rem;margin: 40upx auto;padding: 0 12upx;line-height: 100upx;.concent {.insideBox {display: flex;align-items: center;justify-content: space-between;width: 100%;.title {// display: flex;width: 160upx;font-weight: 500;font-size: 40upx;color: #323233;line-height: 36upx;text-align: right;opacity: 0.6;}.price {display: flex;align-items: flex-end;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;.value {font-weight: 500;font-size: 30upx;color: #323233;text-align: left;}.number {font-weight: 500;font-size: 48upx;color: #323233;text-align: left;&:last-child {white-space: nowrap;overflow: hidden;text-overflow: ellipsis;max-width: 450upx;}}}}}}.btn {background: #fff;position: fixed;bottom: 0;.btn_box {border-top: solid 0.0625rem #ccc;.line_one {display: flex;button {width: 5.8125rem;// height: 3.75rem;font-size: 2rem;background: none;color: #333;border-radius: 0;padding: 0;border: none;border-right: solid 0.0625rem #ccc;}button:last-child {border-right: none;}}.btn_bottom {.line_two {display: flex;.line-left {.line_box {.line_two {display: flex;border-top: solid 0.0625rem #ccc;button {width: 5.8rem;// height: 3.75rem;font-size: 2rem;background: none;color: #333;border-radius: 0;padding: 0;border: none;border-right: solid 0.0625rem #ccc;}button:last-child {border-right: none;}}.line_three {border-top: solid 0.0625rem #ccc;display: flex;button {width: 5.8rem;// height: 3.75rem;font-size: 2rem;background: none;color: #333;border-radius: 0;padding: 0;border: none;border-right: solid 0.0625rem #ccc;}button:last-child {border-right: none;}}.line_four {display: flex;border-top: solid 0.0625rem #ccc;button {width: 5.8rem;// height: 3.75rem;font-size: 2rem;background: none;color: #333;border-radius: 0;padding: 0;border: none;border-right: solid 0.0625rem #ccc;}button:last-child {border-right: none;}}}}.line-right {button {width: 6rem;height: 100%;padding: 0;border-radius: 0;font-size: 1.375rem;line-height: 6.375rem;}}}}}}}
</style>

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

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

相关文章

智能车间管理系统(源码+文档+讲解+演示)

引言 在现代制造业中&#xff0c;智能车间管理系统正成为推动工业4.0和智能制造的关键力量。它通过整合先进的信息技术和自动化技术&#xff0c;优化生产流程&#xff0c;提高生产效率&#xff0c;降低成本&#xff0c;并确保产品质量。 系统概述 智能车间管理系统采用前后端…

Model Context Protocol - Prompts

1. 概述 Model Context Protocol (MCP) 提供了一种标准化的方式&#xff0c;使服务器能够向客户端暴露提示模板&#xff08;prompts&#xff09;。Prompts 是服务器提供的结构化消息和指令&#xff0c;用于与语言模型进行交互。客户端可以发现可用的提示、获取其内容&#xff…

办公自动化:使用 Python 生成 Word 文件:自动生成数据库文档 Word 文件

简简单单 Online zuozuo :本心、输入输出、结果 文章目录 办公自动化:使用 Python 生成 Word 文件:自动生成数据库文档 Word 文件前言一、环境准备二、编写代码三、编写 Word 模版文件接收数据四、运行代码,生成文件,大功告成五、说明办公自动化:使用 Python 生成 Word 文…

嵌入式GPRS协议面试题及参考答案

目录 GPRS 的全称是什么?简述其核心设计目标。 GPRS 中 DNS 服务器的核心作用是什么? BTS 在 EDGE 升级时需要哪些硬件调整? GPRS 的时隙分配策略如何影响多用户并发? 解释 PDCH(分组数据信道)的动态分配机制。 如何判断天馈接反或鸳鸯线问题? GPRS 的 RLC/MAC 层…

Docker 内部通信(网络)

1. 创建自定义桥接网络 首先&#xff0c;创建一个自定义的Docker网络。这可以通过docker network create命令完成。例如&#xff0c;我们可以创建一个名为my_custom_network的网络&#xff1a; docker network create --driver bridge my_custom_network2. 启动容器并连接到自…

单片机开发资源分析的实战——以STM32F103C8T6为例子的单片机资源分析

目录 第一点&#xff1a;为什么叫STM32F103C8T6 从资源手册拿到我们的对STM32F103C8T6的资源描述 第二件事情&#xff0c;关心我们的GPIO引脚输出 第三件事情&#xff1a;去找对应外设的说明部分 前言 本文章隶属于项目&#xff1a; Charliechen114514/BetterATK: This is…

贪心算法(9)(java)最优除法

题目&#xff1a; 给定一正整数数组 nums,nums中的相邻整数将进行浮点除法。例如&#xff0c;[2,3.4]->2/3/4. 例如&#xff0c;nums [2,3,4]&#xff0c;我们将求表达式的值“2/3/4"。 但是&#xff0c;你可以在任意位置添加任意数目的括号&#xff0c;来改变算…

腾讯云MySQL数据库架构分析与使用场景

TDSQL-C for MySQL TDSQL-C MySQL 版&#xff08;TDSQL-C for MySQL&#xff09;是腾讯云自研的新一代云原生关系型数据库。融合了传统数据库、云计算与新硬件技术的优势&#xff0c;为用户提供具备高弹性、高性能、海量存储、安全可靠的数据库服务。TDSQL-C MySQL 版100%兼容…

荣耀手机卸载应用商店、快应用中心等系统自带的

1.下载abd ADB Download - Get the latest version of ADB and fastboot 2.手机打开开发者选项 3.手机接电脑打开USB调试 4.下载MT管理器查看系统包名 D:\1.LFD\ADB\platform-tools-latest-windows\platform-tools>adb shell adb.exe: no devices/emulators found 这边是…

星型拓扑网络发生网络风暴

在星型拓扑网络中&#xff0c;所有的设备&#xff08;如计算机、打印机等&#xff09;通过一个中心设备&#xff08;通常是交换机或集线器&#xff09;连接在一起。 星型拓扑网络中发生网络风暴时的情况&#xff1a; 网络风暴的表现 1.广播风暴&#xff1a;在星型拓扑中&…

网络流基本概念及实现算法

基本概念 流网络 对于一个有向图, 抽象成水管里的水的模型, 每根管子有容量限制, 计为 G ( V , E ) G (V, E) G(V,E), 首先不考虑反向边 对于任意无向图, 都可以将反向边转化为上述形式 如果一条边不存在, 定义为容量为 0 0 0, 形式上来说就是 c ( u , v ) 0 c(u, v) 0 c(…

【css酷炫效果】纯CSS实现球形阴影效果

【css酷炫效果】纯CSS实现球形阴影效果 缘创作背景html结构css样式完整代码基础版进阶版(动态版) 效果图 想直接拿走的老板&#xff0c;链接放在这里&#xff1a;上传后更新 缘 创作随缘&#xff0c;不定时更新。 创作背景 刚看到csdn出活动了&#xff0c;赶时间&#xff0…

Linux如何在设备树中表示和引用设备信息

DTS基本知识 dts 硬件的相应信息都会写在.dts为后缀的文件中&#xff0c;每一款硬件可以单独写一份xxxx.dts&#xff0c;一般在Linux源码中存在大量的dts文件&#xff0c;对于arm架构可以在arch/arm/boot/dts找到相应的dts&#xff0c;一个dts文件对应一个ARM的machie。 dtsi 值…

【数学建模】模糊综合评价模型详解、模糊集合论简介

模糊综合评价模型详解 文章目录 模糊综合评价模型详解1. 模糊综合评价模型概述2. 模糊综合评价的基本原理2.1 基本概念2.2 评价步骤 3. 模糊综合评价的数学模型3.1 数学表达3.2 模糊合成运算 4. 模糊综合评价的应用领域5. 模糊综合评价的优缺点5.1 优点5.2 缺点 6. 模糊综合评价…

C++20 中的同步输出流:`std::basic_osyncstream` 深入解析与应用实践

文章目录 一、std::basic_osyncstream 的背景与动机二、std::basic_osyncstream 的基本原理三、std::basic_osyncstream 的使用方法&#xff08;一&#xff09;基本用法&#xff08;二&#xff09;多线程环境下的使用&#xff08;三&#xff09;与文件流的结合 四、std::basic_…

C/C++蓝桥杯算法真题打卡(Day8)

一、P8780 [蓝桥杯 2022 省 B] 刷题统计 - 洛谷 算法代码&#xff1a; #include<bits/stdc.h> // 包含标准库中的所有头文件&#xff0c;方便使用各种数据结构和算法 using namespace std; // 使用标准命名空间&#xff0c;避免每次调用标准库函数时都要加 std::in…

JavaScript 编程:从基础到高级应用的全面探索

引言 JavaScript 作为一种广泛应用于 Web 开发的脚本语言&#xff0c;已经成为现代互联网不可或缺的一部分。它不仅可以为网页增添交互性和动态效果&#xff0c;还能在服务器端&#xff08;如 Node.js&#xff09;进行后端开发。本文将从 JavaScript 的基础语法开始&#xff0…

第十三次CCF-CSP认证(含C++源码)

第十三次CCF-CSP认证 跳一跳满分题解 碰撞的小球满分题解遇到的问题 棋局评估满分题解 跳一跳 题目链接 满分题解 没什么好说的 基本思路就是如何用代码翻译题目所给的一些限制&#xff0c;以及变量应该如何更新&#xff0c;没像往常一样给一个n&#xff0c;怎么读入数据&…

Pytorch使用手册—自定义函数的双重反向传播与自定义函数融合卷积和批归一化(专题五十二)

1. 使用自定义函数的双重反向传播 有时候,在反向计算图中运行两次反向传播是有用的,例如计算高阶梯度。然而,支持双重反向传播需要对自动求导(autograd)有一定的理解,并且需要小心处理。支持单次反向传播的函数不一定能够支持双重反向传播。在本教程中,我们将展示如何编…

MySQL:数据库基础

数据库基础 1.什么是数据库&#xff1f;2.为什么要学习数据库&#xff1f;3.主流的数据库&#xff08;了解&#xff09;4.服务器&#xff0c;数据库&#xff0c;表之间的关系5.数据的逻辑存储6.MYSQL架构7.存储引擎 1.什么是数据库&#xff1f; 数据库(Database,简称DB)&#x…