From 076face0dd29abf047d56999b6a45d8f718af86b Mon Sep 17 00:00:00 2001
From: Tevin <tingquanren@163.com>
Date: Sun, 14 Nov 2021 13:54:46 +0800
Subject: [PATCH] 优化跨端通讯回调容错

---
 forms/numberValve/CNumberValve.vue |   20 ++++++++++++++++++--
 1 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/forms/numberValve/CNumberValve.vue b/forms/numberValve/CNumberValve.vue
index 394d8c4..98e7af5 100644
--- a/forms/numberValve/CNumberValve.vue
+++ b/forms/numberValve/CNumberValve.vue
@@ -16,12 +16,15 @@
                 :required="itemRes.required"
                 :disabled="itemRes.disabled"
                 :error="itemRes.error"
-                :value="itemRes.formData[itemRes.name]"
+                :value="itemRes.formData[itemRes.name] + unit"
+                :placeholder="placeholder"
             >
                 <view class="at-icon at-icon-chevron-right"></view>
             </AtInput>
         </view>
         <AtFloatLayout
+            :class="placeholder?'on-title':''"
+            :title="placeholder"
             :isOpened="opened"
             :onClose="evt => handleClose()"
         >
@@ -93,6 +96,11 @@
             type: Number,
             default: 1,
         },
+        // 数值单位(仅显示)
+        unit: {
+            type: String,
+            default: '',
+        },
     },
     data() {
         return {
@@ -125,9 +133,17 @@
             const targetValue = clientX - this.rect.left;
             const distance = Math.min(Math.max(targetValue, 0), this.rect.width);
             const sliderLeft = Math.floor((distance / this.rect.width) * 100);
-            const sliderValue =
+            // 实际值
+            let sliderValue =
                 Math.round((sliderLeft / 100) * (this.range[1] - this.range[0])) +
                 this.range[0];
+            if (this.range[0] < sliderValue && sliderValue < this.range[1]) {
+                sliderValue -= sliderValue % this.step;
+            }
+            // 范围限制
+            sliderValue = Math.max(sliderValue, this.range[0]);
+            sliderValue = Math.min(sliderValue, this.range[1]);
+            // 设置
             this.sliderLeft = sliderLeft;
             this.current = sliderValue;
             this.itemRes.onChange(sliderValue);

--
Gitblit v1.9.1