From 2d43a1df3f5ba42710e6d21c27d1e13bdb8dfd56 Mon Sep 17 00:00:00 2001
From: zhangwei <1504152376@qq.com>
Date: 星期一, 24 三月 2025 09:23:08 +0800
Subject: [PATCH] -
---
src/uni_modules/uview-plus/components/u-slider/u-slider.vue | 65 +++++++++++++++++++++-----------
1 files changed, 43 insertions(+), 22 deletions(-)
diff --git a/src/uni_modules/uview-plus/components/u-slider/u-slider.vue b/src/uni_modules/uview-plus/components/u-slider/u-slider.vue
index dbc1e01..dbba2c4 100644
--- a/src/uni_modules/uview-plus/components/u-slider/u-slider.vue
+++ b/src/uni_modules/uview-plus/components/u-slider/u-slider.vue
@@ -58,7 +58,7 @@
<view class="u-slider__button-wrap u-slider__button-wrap-0" @touchstart="onTouchStart($event, 0)"
@touchmove="onTouchMove($event, 0)" @touchend="onTouchEnd($event, 0)"
@touchcancel="onTouchEnd($event, 0)" :style="{left: (getPx(barStyle0.width) + getPx(blockSize)/2) + 'px'}">
- <slot v-if="$slots.default || $slots.$default"/>
+ <slot name="min" v-if="$slots.min || $slots.$min"/>
<view v-else class="u-slider__button" :style="[blockStyle, {
height: getPx(blockSize, true),
width: getPx(blockSize, true),
@@ -69,7 +69,8 @@
<view class="u-slider__button-wrap" @touchstart="onTouchStart"
@touchmove="onTouchMove" @touchend="onTouchEnd"
@touchcancel="onTouchEnd" :style="{left: (getPx(barStyle.width) + getPx(blockSize)/2) + 'px'}">
- <slot v-if="$slots.default || $slots.$default"/>
+ <slot name="max" v-if="isRange && ($slots.max || $slots.$max)"/>
+ <slot v-else-if="$slots.default || $slots.$default"/>
<view v-else class="u-slider__button" :style="[blockStyle, {
height: getPx(blockSize, true),
width: getPx(blockSize, true),
@@ -155,8 +156,17 @@
value(n) {
// 鍙湁鍦ㄩ潪婊戝姩鐘舵�佹椂锛屾墠鍙互閫氳繃value鏇存柊婊戝潡鍊硷紝杩欓噷鐩戝惉锛屾槸涓轰簡璁╃敤鎴疯Е鍙�
if(this.status == 'end') this.updateValue(this.value, false);
- }
+ },
// #endif
+ rangeValue:{
+ handler(n){
+ if(this.status == 'end'){
+ this.updateValue(this.rangeValue[0], false, 0);
+ this.updateValue(this.rangeValue[1], false, 1);
+ }
+ },
+ deep:true
+ }
},
created() {
},
@@ -166,6 +176,10 @@
// #ifndef APP-NVUE
this.$uGetRect('.u-slider__base').then(rect => {
this.sliderRect = rect;
+ // console.log('sliderRect', this.sliderRect)
+ if (this.sliderRect.width == 0) {
+ console.info('濡傚湪寮圭獥绛夊厓绱犱腑浣跨敤锛岃浣跨敤v-if鏉ユ樉绀烘粦鍧楋紝鍚﹀垯鏃犳硶璁$畻闀垮害銆�')
+ }
this.init()
});
// #endif
@@ -265,8 +279,8 @@
this.newValue = ((this.distanceX / this.sliderRect.width) * (this.max - this.min)) + parseFloat(this.min);
this.status = 'moving';
// 鍙戝嚭moving浜嬩欢
- this.$emit('changing');
- this.updateValue(this.newValue, true, index);
+ let $crtFmtValue = this.updateValue(this.newValue, true, index);
+ this.$emit('changing', $crtFmtValue);
},
onTouchMove(event, index = 1) {
if (this.disabled) return;
@@ -274,7 +288,7 @@
// 瑙︽懜鍚庣涓�娆$Щ鍔ㄥ凡缁忓皢status璁剧疆涓簃oving鐘舵�侊紝鏁呰Е鎽哥浜屾绉诲姩涓嶄細瑙﹀彂鏈簨浠�
if (this.status == 'start') this.$emit('start');
let touches = event.touches[0];
- console.log('touchs', touches)
+ // console.log('touchs', touches)
// 婊戝潡鐨勫乏杈逛笉涓�瀹氳窡灞忓箷宸﹁竟鎺ュ¥锛屾墍浠ラ渶瑕佸噺鍘绘渶澶栧眰鐖跺厓绱犵殑宸﹁竟鍊�
let clientX = 0;
// #ifndef APP-NVUE
@@ -289,33 +303,34 @@
this.newValue = ((this.distanceX / this.sliderRect.width) * (this.max - this.min)) + parseFloat(this.min);
this.status = 'moving';
// 鍙戝嚭moving浜嬩欢
- this.$emit('changing');
- this.updateValue(this.newValue, true, index);
+ let $crtFmtValue = this.updateValue(this.newValue, true, index);
+ this.$emit('changing', $crtFmtValue);
},
onTouchEnd(event, index = 1) {
if (this.disabled) return;
if (this.status === 'moving') {
- this.updateValue(this.newValue, false, index);
- this.$emit('change');
+ let $crtFmtValue = this.updateValue(this.newValue, false, index);
+ this.$emit('change', $crtFmtValue);
}
this.status = 'end';
},
onTouchStart2(event, index = 1) {
if (!this.isRange) {
- this.onChangeStart(event, index);
+ // this.onChangeStart(event, index);
}
},
onTouchMove2(event, index = 1) {
if (!this.isRange) {
- this.onTouchMove(event, index);
+ // this.onTouchMove(event, index);
}
},
onTouchEnd2(event, index = 1) {
if (!this.isRange) {
- this.onTouchEnd(event, index);
+ // this.onTouchEnd(event, index);
}
},
onClick(event) {
+ // if (this.isRange) return;
if (this.disabled) return;
// 鐩存帴鐐瑰嚮婊戝潡鐨勬儏鍐碉紝璁$畻鏂瑰紡涓巓nTouchMove鏂规硶鐩稿悓
// console.log('click', event)
@@ -368,7 +383,11 @@
default:
break;
}
-
+ if (this.isRange) {
+ return this.rangeValue
+ } else {
+ return valueFormat
+ }
},
format(value, index = 1) {
// 灏嗗皬鏁板彉鎴愭暣鏁帮紝涓轰簡鍑忓皯瀵硅鍥剧殑鏇存柊锛岄�犳垚瑙嗗浘灞備笌閫昏緫灞傜殑闃诲
@@ -376,15 +395,15 @@
switch (index) {
case 0:
return Math.round(
- Math.max(this.min, Math.min(value, this.rangeValue[1] - this.step,this.max))
- / this.step
- ) * this.step;
+ Math.max(this.min, Math.min(value, this.rangeValue[1] - parseInt(this.step),this.max))
+ / parseInt(this.step)
+ ) * parseInt(this.step);
break;
case 1:
return Math.round(
- Math.max(this.min, this.rangeValue[0] + this.step, Math.min(value, this.max))
- / this.step
- ) * this.step;
+ Math.max(this.min, this.rangeValue[0] + parseInt(this.step), Math.min(value, this.max))
+ / parseInt(this.step)
+ ) * parseInt(this.step);
break;
default:
break;
@@ -392,8 +411,8 @@
} else {
return Math.round(
Math.max(this.min, Math.min(value, this.max))
- / this.step
- ) * this.step;
+ / parseInt(this.step)
+ ) * parseInt(this.step);
}
}
}
@@ -414,6 +433,8 @@
&-inner {
flex: 1;
+ display: flex;
+ flex-direction: column;
position: relative;
border-radius: 999px;
padding: 10px 18px;
--
Gitblit v1.9.1