label-print-design
Version:
操作简单,组件丰富的一站式打印解决方案打印设计器
1 lines • 6.02 kB
Source Map (JSON)
{"version":3,"file":"my-input-number.vue2.mjs","sources":["../../../../../../src/components/my/input/my-input-number.vue"],"sourcesContent":["<template>\n <my-input :model-value=\"innerValue\"\n @keydown.up.prevent=\"onUp\"\n @keydown.down.prevent=\"onDown\"\n :disabled=\"disabled\"\n @input=\"onInput\"\n @change=\"onChange\"\n autocomplete=\"off\" />\n</template>\n\n<script setup lang=\"ts\">\n\nimport MyInput from '@myprint/design/components/my/input/my-input.vue';\nimport { computed, ref, watch } from 'vue-demi';\nimport numberUtil from '@myprint/design/utils/numberUtil';\nimport { isEmpty } from 'lodash';\n\nconst emit = defineEmits(['update:modelValue', 'change']);\n\nconst props = withDefaults(defineProps<{\n modelValue?: number | null | undefined,\n min?: number // 最小值\n max?: number,\n step?: number, // 每次改变步数,可以为小数\n formatter?: Function // 指定展示值的格式\n precision?: number // 数值精度\n disabled?: boolean // 是否禁用\n}>(), {\n modelValue: undefined,\n min: -Infinity,\n max: Infinity,\n formatter: (value: string) => value,\n step: 1,\n precision: 0,\n disabled: false // 是否禁用\n});\n\nconst innerValue = ref(props.modelValue);\nwatch(() => props.modelValue, (_newVal, _oldVal) => {\n innerValue.value = props.modelValue;\n});\n\n\nconst precision = computed(() => {\n // 数值精度取步长和精度中较大者\n const stepPrecision = String(props.step).split('.')[1]?.length || 0;\n return Math.max(props.precision, stepPrecision);\n});\n\nfunction emitValue(value: number | null) {\n if (value == props.modelValue) {\n return;\n }\n emit('update:modelValue', value);\n emit('change', value);\n}\n\n// const numValue = ref(props.formatter(props.modelValue?.toFixed(precision.value)));\n\n// watch(\n// () => props.modelValue,\n// (to) => {\n// numValue.value = to === null ? null : props.formatter(Number(to).toFixed(precision.value));\n// }\n// );\n//\n// watch(numValue, (to) => {\n// if (!to) {\n// emitValue(null);\n// }\n// });\n\nfunction onInput(value: any) {\n \n if (isEmpty(value)) {\n emitValue(value);\n return;\n }\n \n value = value.replace(/,/g, '');\n // console.log('onInput', value, parseFloat(value));\n if (!Number.isNaN(parseFloat(value))) {\n // emitValue(value);\n innerValue.value = value;\n }\n}\n\nfunction onChange(value: any) {\n value = value.replace(/,/g, '');\n if (!Number.isNaN(parseFloat(value))) {\n // Number.isNaN() 判断传递的值是否为NaN,并检测器类型是否为 Number\n if (parseFloat(value) > props.max) {\n emitValue(props.max);\n return;\n }\n if (parseFloat(value) < props.min) {\n emitValue(props.min);\n return;\n }\n if (parseFloat(value) !== props.modelValue) {\n emitValue(parseFloat(value));\n } else {\n // value = props.modelValue?.toFixed(precision.value);\n emitValue(parseFloat(value));\n }\n } else {\n // numValue.value = props.modelValue?.toFixed(precision.value);\n emitValue(parseFloat(value));\n }\n \n}\n\nfunction onUp() {\n const res = parseFloat(Math.min(props.max, numberUtil.sum(props.modelValue || 0, +props.step)).toFixed(precision.value));\n emitValue(res);\n}\n\nfunction onDown() {\n const res = parseFloat(Math.max(props.min, numberUtil.sum(props.modelValue || 0, -props.step)).toFixed(precision.value));\n emitValue(res);\n}\n</script>\n"],"names":["numberUtil"],"mappings":"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"}