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

154 lines
3.0 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
},
},
}