@aspire-ui/element-component-pro 1.0.8 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/element-component-pro.es.js +391 -381
- package/dist/element-component-pro.es.js.map +1 -1
- package/dist/element-component-pro.umd.js +2 -2
- package/dist/element-component-pro.umd.js.map +1 -1
- package/dist/utils/formattedNumber.d.ts +4 -0
- package/package.json +1 -1
- package/src/ProForm/FormattedNumberInput.vue +8 -2
- package/src/utils/formattedNumber.ts +8 -0
|
@@ -10,6 +10,10 @@ export declare function roundToDecimals(value: number, decimalPlaces: number, ro
|
|
|
10
10
|
* 解析 → 按整数位夹紧 → 按小数位与进位方式舍入 → 再夹紧(防止舍入后越界)
|
|
11
11
|
*/
|
|
12
12
|
export declare function normalizeNumericValue(value: number, integerDigits: number, decimalPlaces: number, rounding: FormattedNumberRounding): number;
|
|
13
|
+
/**
|
|
14
|
+
* 固定小数位数字符串(无千分位),用于表单存值以保留配置的小数位数(number 无法保留尾随 0)。
|
|
15
|
+
*/
|
|
16
|
+
export declare function toFixedDecimalString(value: number, decimalPlaces: number): string;
|
|
13
17
|
/** 千分位格式化展示(整数部分),小数部分固定 m 位 */
|
|
14
18
|
export declare function formatWithThousands(value: number, decimalPlaces: number): string;
|
|
15
19
|
/** 编辑态:无千分位,去掉多余尾部 0(在 m 位精度内) */
|
package/package.json
CHANGED
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
numberToEditString,
|
|
20
20
|
sanitizeNumericInput,
|
|
21
21
|
stripNumberGrouping,
|
|
22
|
+
toFixedDecimalString,
|
|
22
23
|
} from '../utils/formattedNumber'
|
|
23
24
|
|
|
24
25
|
const props = withDefaults(
|
|
@@ -78,13 +79,18 @@ watch(
|
|
|
78
79
|
{ immediate: true, deep: true }
|
|
79
80
|
)
|
|
80
81
|
|
|
82
|
+
function emitStoredValue(normalized: number) {
|
|
83
|
+
emit('input', toFixedDecimalString(normalized, decM()))
|
|
84
|
+
}
|
|
85
|
+
|
|
81
86
|
function onInput(val: string) {
|
|
82
87
|
const clean = sanitizeNumericInput(val)
|
|
83
88
|
displayText.value = clean
|
|
84
89
|
if (clean === '' || clean === '-') return
|
|
85
90
|
const num = Number(clean)
|
|
86
91
|
if (!Number.isFinite(num)) return
|
|
87
|
-
|
|
92
|
+
const normalized = normalizeNumericValue(num, intN(), decM(), props.rounding)
|
|
93
|
+
emitStoredValue(normalized)
|
|
88
94
|
}
|
|
89
95
|
|
|
90
96
|
function onFocus() {
|
|
@@ -117,6 +123,6 @@ function onBlur() {
|
|
|
117
123
|
}
|
|
118
124
|
const final = normalizeNumericValue(parsed, intN(), decM(), props.rounding)
|
|
119
125
|
displayText.value = formatWithThousands(final, decM())
|
|
120
|
-
|
|
126
|
+
emitStoredValue(final)
|
|
121
127
|
}
|
|
122
128
|
</script>
|
|
@@ -96,6 +96,14 @@ export function normalizeNumericValue(
|
|
|
96
96
|
return v
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
+
/**
|
|
100
|
+
* 固定小数位数字符串(无千分位),用于表单存值以保留配置的小数位数(number 无法保留尾随 0)。
|
|
101
|
+
*/
|
|
102
|
+
export function toFixedDecimalString(value: number, decimalPlaces: number): string {
|
|
103
|
+
if (Number.isNaN(value) || !Number.isFinite(value)) return ''
|
|
104
|
+
return value.toFixed(Math.max(0, decimalPlaces))
|
|
105
|
+
}
|
|
106
|
+
|
|
99
107
|
/** 千分位格式化展示(整数部分),小数部分固定 m 位 */
|
|
100
108
|
export function formatWithThousands(value: number, decimalPlaces: number): string {
|
|
101
109
|
if (Number.isNaN(value) || !Number.isFinite(value)) return ''
|