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