users/components/cwx-keyboard/cwx-keyboard.js

154 lines
3.0 KiB
JavaScript
Raw Permalink Normal View History

2024-11-08 14:43:06 +08:00
let money = '';
export default {
name: "keyBoard",
props: {
title: {
default: "确认",
type: String,
},
hideInputNumber: {
default: false,
type: Boolean,
},
btnColor: {
default: "green",
},
},
data() {
return {
money: "",
Cdel: "",
Time: "",
};
},
watch: {
money(val) {
this.$emit("update:money", val)
},
},
methods: {
touchstart() {
this.Time = setInterval(() => {
if (money == "") {
clearInterval();
}
money = money.substring(0, money.length - 1);
}, 200);
},
touchend() {
clearInterval(this.Time);
},
//处理按键
_handleKeyPress(e) {
let num = 0
// #ifdef MP-ALIPAY
num = e.target.targetDataset.num;
// #endif
// #ifdef MP-WEIXIN || H5
num = e.target.dataset.num;
// #endif
//不同按键处理逻辑
// -1 代表无效按键,直接返回
if (num == -1) return false;
switch (String(num)) {
//小数点
case ".":
this._handleDecimalPoint();
break;
//删除键
case "D":
this._handleDeleteKey();
break;
//清空键
case "C":
this._handleClearKey();
break;
//确认键
case "S":
this._handleConfirmKey(num);
break;
default:
this._handleNumberKey(num);
break;
}
if (String(num) != "S") {
this.$emit("oninputBind", money); //提交参数
}
},
//处理小数点函数
_handleDecimalPoint() {
//如果包含小数点,直接返回
if (money.indexOf(".") > -1) return false;
//如果小数点是第一位补0
if (!money.length) money = "0.";
//如果不是,添加一个小数点
else money = money + ".";
},
//处理删除键
_handleDeleteKey() {
let S = money;
//如果没有输入,直接返回
if (!S.length) return false;
//否则删除最后一个
money = S.substring(0, S.length - 1);
},
//处理清空键
_handleClearKey() {
money = "";
},
//处理数字
_handleNumberKey(num) {
if (money && money.length == 6) {
uni.showToast({
title: '最多6位数字',
icon: 'none'
});
return;
}
if (num == undefined || num == 'undefined' || num < 0) {
return;
}
let S = money;
//如果有小数点且小数点位数不小于2
if (S.indexOf(".") > -1 && S.substring(S.indexOf(".") + 1).length < 2)
money = S + num;
//没有小数点
if (!(S.indexOf(".") > -1)) {
//如果第一位是0只能输入小数点
if (num == 0 && S.length == 0) money = "0.";
else {
if (S.length && Number(S.charAt(0)) === 0) return;
money = S + num;
}
}
},
//提交正确的金额
_handleConfirmKey(S) {
//未输入
if (!S.length || S == 0) {
uni.showToast({
title: "请输入正确的数值",
icon: "none",
duration: 1000,
});
return false;
}
//将 8. 这种转换成 8.00
if (S.indexOf(".") > -1 && S.indexOf(".") == S.length - 1)
S = Number(S.substring(0, S.length - 1)).toFixed(2);
//保留两位
S = Number(S).toFixed(2);
//提交参数
this.$emit("confirmEvent", S);
},
},
}