hookehuyr

fix(plan): 修复 AmountKeyboard 组件取消操作显示异常并优化输入体验

Bug 修复:
- 修复点击遮罩关闭后显示 "123." 等不完整值的问题
- 在 watch(showKeyboard) 中添加逻辑,键盘关闭时清除临时输入值
- 优化 displayValue 计算属性,确保始终显示格式化后的金额

用户体验优化:
- 添加输入限制的震动反馈(Taro.vibrateShort)
- 添加 Toast 轻提示提示用户输入限制
- 重复输入小数点时提示"只能输入一个小数点"
- 超过2位小数时提示"最多只能输入2位小数"

影响文件:
- src/components/PlanFields/AmountKeyboard.vue

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
...@@ -401,8 +401,13 @@ const openKeyboard = () => { ...@@ -401,8 +401,13 @@ const openKeyboard = () => {
401 const onInput = (val) => { 401 const onInput = (val) => {
402 // 如果输入的是小数点,检查是否已经有小数点 402 // 如果输入的是小数点,检查是否已经有小数点
403 if (val === '.' && inputValue.value.includes('.')) { 403 if (val === '.' && inputValue.value.includes('.')) {
404 - // 震动反馈提示 404 + // 震动反馈 + Toast 提示
405 Taro.vibrateShort({ type: 'light' }) 405 Taro.vibrateShort({ type: 'light' })
406 + Taro.showToast({
407 + title: '只能输入一个小数点',
408 + icon: 'none',
409 + duration: 1500
410 + })
406 return 411 return
407 } 412 }
408 413
...@@ -411,8 +416,13 @@ const onInput = (val) => { ...@@ -411,8 +416,13 @@ const onInput = (val) => {
411 const parts = inputValue.value.split('.') 416 const parts = inputValue.value.split('.')
412 // 如果已经有小数点,并且小数点后有2位,则忽略输入并震动提示 417 // 如果已经有小数点,并且小数点后有2位,则忽略输入并震动提示
413 if (parts.length === 2 && parts[1]?.length >= 2) { 418 if (parts.length === 2 && parts[1]?.length >= 2) {
414 - // 震动反馈提示已达到最大位数 419 + // 震动反馈 + Toast 提示已达到最大位数
415 Taro.vibrateShort({ type: 'light' }) 420 Taro.vibrateShort({ type: 'light' })
421 + Taro.showToast({
422 + title: '最多只能输入2位小数',
423 + icon: 'none',
424 + duration: 1500
425 + })
416 return 426 return
417 } 427 }
418 } 428 }
......