53 lines
1012 B
Vue
53 lines
1012 B
Vue
<template>
|
|
<u-input type="number"
|
|
v-model="value"
|
|
:placeholder="placeholder"
|
|
:border="border"
|
|
:readonly="readonly"
|
|
:disabled="disabled"
|
|
clearable
|
|
@blur="handleBlur"
|
|
@change="handleChange"
|
|
@focus="handleFocus" />
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
props: {
|
|
border: String,
|
|
placeholder: String,
|
|
readonly: Boolean,
|
|
disabled: Boolean,
|
|
val: [Number, String],
|
|
},
|
|
data () {
|
|
return {
|
|
value: null,
|
|
};
|
|
},
|
|
watch: {
|
|
val () {
|
|
this.value = this.val;
|
|
},
|
|
},
|
|
methods: {
|
|
handleBlur (e) {
|
|
this.$emit("triggerInputBlue", e);
|
|
},
|
|
handleFocus (e) {
|
|
this.$emit("triggerInputFocus", e);
|
|
},
|
|
handleChange (e) {
|
|
if (Number(e)) {
|
|
let val = parseInt(e);
|
|
this.$emit("triggerInputChange", val);
|
|
return;
|
|
}
|
|
this.$emit("triggerInputChange", e);
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style lang="scss" scoped></style>
|