Showing
2 changed files
with
23 additions
and
4 deletions
| ... | @@ -286,8 +286,13 @@ const showAmountModal = ref(false) | ... | @@ -286,8 +286,13 @@ const showAmountModal = ref(false) |
| 286 | * @type {ComputedRef<string>} | 286 | * @type {ComputedRef<string>} |
| 287 | */ | 287 | */ |
| 288 | const displayValue = computed(() => { | 288 | const displayValue = computed(() => { |
| 289 | - // 优先显示输入过程中的值 | 289 | + // 优先显示输入过程中的值(格式化) |
| 290 | if (inputValue.value) { | 290 | if (inputValue.value) { |
| 291 | + // 尝试解析为数字并格式化,如果解析失败则返回原值 | ||
| 292 | + const num = parseFloat(inputValue.value) | ||
| 293 | + if (!Number.isNaN(num)) { | ||
| 294 | + return num.toFixed(2) | ||
| 295 | + } | ||
| 291 | return inputValue.value | 296 | return inputValue.value |
| 292 | } | 297 | } |
| 293 | // 如果没有输入值,显示表单的原始值 | 298 | // 如果没有输入值,显示表单的原始值 |
| ... | @@ -350,7 +355,7 @@ onUnmounted(() => { | ... | @@ -350,7 +355,7 @@ onUnmounted(() => { |
| 350 | /** | 355 | /** |
| 351 | * 监听键盘显示状态 | 356 | * 监听键盘显示状态 |
| 352 | */ | 357 | */ |
| 353 | -watch(showKeyboard, (newValue) => { | 358 | +watch(showKeyboard, (newValue, oldValue) => { |
| 354 | if (!keyboardPopupId.value) { | 359 | if (!keyboardPopupId.value) { |
| 355 | return | 360 | return |
| 356 | } | 361 | } |
| ... | @@ -365,6 +370,12 @@ watch(showKeyboard, (newValue) => { | ... | @@ -365,6 +370,12 @@ watch(showKeyboard, (newValue) => { |
| 365 | deactivatePopup(keyboardPopupId.value) | 370 | deactivatePopup(keyboardPopupId.value) |
| 366 | // 同步关闭金额弹窗 | 371 | // 同步关闭金额弹窗 |
| 367 | showAmountModal.value = false | 372 | showAmountModal.value = false |
| 373 | + | ||
| 374 | + // 【修复】如果是从打开状态关闭(用户点击遮罩或关闭按钮),清除临时输入值 | ||
| 375 | + // 这样可以避免显示 "123." 这种不完整的值 | ||
| 376 | + if (oldValue === true) { | ||
| 377 | + inputValue.value = '' | ||
| 378 | + } | ||
| 368 | } | 379 | } |
| 369 | }) | 380 | }) |
| 370 | 381 | ||
| ... | @@ -390,14 +401,18 @@ const openKeyboard = () => { | ... | @@ -390,14 +401,18 @@ const openKeyboard = () => { |
| 390 | const onInput = (val) => { | 401 | const onInput = (val) => { |
| 391 | // 如果输入的是小数点,检查是否已经有小数点 | 402 | // 如果输入的是小数点,检查是否已经有小数点 |
| 392 | if (val === '.' && inputValue.value.includes('.')) { | 403 | if (val === '.' && inputValue.value.includes('.')) { |
| 404 | + // 震动反馈提示 | ||
| 405 | + Taro.vibrateShort({ type: 'light' }) | ||
| 393 | return | 406 | return |
| 394 | } | 407 | } |
| 395 | 408 | ||
| 396 | // 如果输入的是数字,检查小数点后的位数 | 409 | // 如果输入的是数字,检查小数点后的位数 |
| 397 | if (val >= '0' && val <= '9') { | 410 | if (val >= '0' && val <= '9') { |
| 398 | const parts = inputValue.value.split('.') | 411 | const parts = inputValue.value.split('.') |
| 399 | - // 如果已经有小数点,并且小数点后有2位,则忽略输入 | 412 | + // 如果已经有小数点,并且小数点后有2位,则忽略输入并震动提示 |
| 400 | if (parts.length === 2 && parts[1]?.length >= 2) { | 413 | if (parts.length === 2 && parts[1]?.length >= 2) { |
| 414 | + // 震动反馈提示已达到最大位数 | ||
| 415 | + Taro.vibrateShort({ type: 'light' }) | ||
| 401 | return | 416 | return |
| 402 | } | 417 | } |
| 403 | } | 418 | } |
| ... | @@ -445,6 +460,8 @@ const onConfirm = () => { | ... | @@ -445,6 +460,8 @@ const onConfirm = () => { |
| 445 | * 关闭键盘认处 | 460 | * 关闭键盘认处 |
| 446 | */ | 461 | */ |
| 447 | const onClose = () => { | 462 | const onClose = () => { |
| 463 | + // 清除临时输入值,让它回退到原始值(避免显示 "123." 这种不完整的值) | ||
| 464 | + inputValue.value = '' | ||
| 448 | // 只关闭金额弹窗,让 showKeyboard 自然变化触发 watch 处理 GlobalPopupManager | 465 | // 只关闭金额弹窗,让 showKeyboard 自然变化触发 watch 处理 GlobalPopupManager |
| 449 | showAmountModal.value = false | 466 | showAmountModal.value = false |
| 450 | } | 467 | } | ... | ... |
| ... | @@ -203,7 +203,9 @@ const fetchHomeIcons = async () => { | ... | @@ -203,7 +203,9 @@ const fetchHomeIcons = async () => { |
| 203 | 203 | ||
| 204 | if (res.code === 1 && res.data) { | 204 | if (res.code === 1 && res.data) { |
| 205 | // 将 API 数据映射为 loopNav 格式 | 205 | // 将 API 数据映射为 loopNav 格式 |
| 206 | - loopNav.value = res.data.map(item => { | 206 | + loopNav.value = res.data |
| 207 | + .filter(item => item.link) // 过滤掉 link 为空的项 | ||
| 208 | + .map(item => { | ||
| 207 | // 解析 link 字段,格式: "/pages/category-list/index?cid=3129684" | 209 | // 解析 link 字段,格式: "/pages/category-list/index?cid=3129684" |
| 208 | const [route, queryStr] = item.link.split('?'); | 210 | const [route, queryStr] = item.link.split('?'); |
| 209 | const params = {}; | 211 | const params = {}; | ... | ... |
-
Please register or login to post a comment