154 lines
3.0 KiB
JavaScript
154 lines
3.0 KiB
JavaScript
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);
|
||
},
|
||
},
|
||
}
|