From e88c67ddf91ce593785f565912837c9a3ffe3930 Mon Sep 17 00:00:00 2001
From: jhzh <1628036192@qq.com>
Date: Tue, 12 Aug 2025 15:17:50 +0800
Subject: [PATCH] 1

---
 src/components/Transform/perpetual-open/amountSlider.vue |   48 ++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 44 insertions(+), 4 deletions(-)

diff --git a/src/components/Transform/perpetual-open/amountSlider.vue b/src/components/Transform/perpetual-open/amountSlider.vue
index 0fc8d48..a6d9526 100644
--- a/src/components/Transform/perpetual-open/amountSlider.vue
+++ b/src/components/Transform/perpetual-open/amountSlider.vue
@@ -6,15 +6,16 @@
                 <vue-slider @change="sliderAmountChange" class="mainBox" :marks="marks" v-model="sliderAmount"
                     :hide-label="true" width="92%" tooltip="hover" :tooltip-formatter="'{value}%'"
                     :railStyle="{ background: '#404040', height: '2px' }"
-                    :processStyle="{ background: '#266BFF', height: '2px' }">
+                    :processStyle="{ background: '#266BFF', height: '2px' }" @drag-end="onDragEnd">
                     <template v-slot:step="{ active }">
                         <div :class="['custom-step', { active }]"></div>
                     </template>
                 </vue-slider>
             </div>
             <div class="poecs">
-                <span>0%</span>
+                <span></span>
                 <span class="lins">25%</span>
+				<!-- <span >25%</span> -->
                 <span class="lins">50%</span>
                 <span class="lins">75%</span>
                 <span class="lins">100%</span>
@@ -46,6 +47,7 @@
             amount: undefined, //用户输入的张数
             sliderAmount: "", //滑块的数量
             marks: (val) => val % 25 === 0,
+			// marks: { 25: '25%', 50: '50%', 75: '75%', 100: '100%' }, //去掉0%的标记
         };
     },
     computed: {
@@ -60,6 +62,27 @@
         },
     },
     methods: {
+		// 事件处理:当拖动结束时,判断滑块值并调整为最近的档位
+		        onDragEnd() {
+		            const closestMark = this.getClosestMark(this.sliderAmount);
+		            this.sliderAmount = closestMark;
+		        },
+		        // 获取离当前值最近的档位
+		        getClosestMark(value) {
+		            const marksArray = [0, 25, 50, 75, 100];
+		            let closest = marksArray[0];
+		            let minDiff = Math.abs(value - closest);
+		
+		            marksArray.forEach((mark) => {
+		                const diff = Math.abs(value - mark);
+		                if (diff < minDiff) {
+		                    minDiff = diff;
+		                    closest = mark;
+		                }
+		            });
+		
+		            return closest;
+		        },
         //输入框事件
         inputChange(val) {
             this.$emit("getAmount", val);
@@ -70,13 +93,30 @@
         },
         //滑块事件
         sliderAmountChange(val) {
-            // console.log("滑块的值", val, this.maxAmount);
+			const closestMark = this.getClosestMark(val);
+			this.sliderAmount = closestMark;
+			// const marksArray = [0, 25, 50, 75, 100];
+			//     let closest = marksArray[0];
+			//     let minDiff = Math.abs(val - closest);
+			
+			//     marksArray.forEach((mark) => {
+			//         const diff = Math.abs(val - mark);
+			//         if (diff < minDiff) {
+			//             minDiff = diff;
+			//             closest = mark;
+			//         }
+			//     });
+			// 	console.log('closest',closest);
+			//     // return closest;
+			// 	val = closest;
+   //          console.log("滑块的值", val, this.maxAmount);
+			
             let data;
             if (this.maxAmount) {
                 if (val == 0) {
                     this.amount = undefined;
                 } else {
-                    const rate = val / 100; //如0.25
+                    const rate = this.sliderAmount / 100; //如0.25
                     data = this.maxAmount * rate;
                     this.amount = parseInt(data);
                 }

--
Gitblit v1.9.3