From 0a24ffeb3eff074c8f11e9f94fdf2c2cb4929799 Mon Sep 17 00:00:00 2001
From: quanyawei <401863037@qq.com>
Date: Fri, 10 Nov 2023 13:08:29 +0800
Subject: [PATCH] fix:小程序详情修改
---
uni_modules/uview-ui/components/u-slider/mpother.js | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 113 insertions(+), 0 deletions(-)
diff --git a/uni_modules/uview-ui/components/u-slider/mpother.js b/uni_modules/uview-ui/components/u-slider/mpother.js
new file mode 100644
index 0000000..040c848
--- /dev/null
+++ b/uni_modules/uview-ui/components/u-slider/mpother.js
@@ -0,0 +1,113 @@
+/**
+ * ���������������js������������slider
+ */
+export default {
+ watch: {
+ value(n) {
+ // ���������������������������������������������value���������������������������������������������������������
+ if (this.status === 'end') {
+ this.updateSliderPlacement(n, true)
+ }
+ }
+ },
+ mounted() {
+ this.init()
+ },
+ methods: {
+ init() {
+ this.getSliderRect()
+ },
+ // ������slider������
+ getSliderRect() {
+ // ������������������������������
+ setTimeout(() => {
+ this.$uGetRect('.u-slider').then((rect) => {
+ this.sliderRect = rect
+ this.updateSliderPlacement(this.value, true)
+ })
+ }, 10)
+ },
+ // ������������������
+ canNotDo() {
+ return this.disabled
+ },
+ // ������������������������X������������
+ getTouchX(e) {
+ return e.touches[0].clientX
+ },
+ formatStep(value) {
+ // ���������������������������������
+ return Math.round(Math.max(this.min, Math.min(value, this.max)) / this.step) * this.step
+ },
+ // ������������
+ emitEvent(event, value) {
+ this.$emit(event, value || this.value)
+ },
+ // ���������������������������
+ setTouchStatus(status) {
+ this.status = status
+ },
+ onTouchStart(e) {
+ if (this.canNotDo()) {
+ return
+ }
+ // ������������������������������������������
+ this.emitEvent('start')
+ this.setTouchStatus('start')
+ },
+ onTouchMove(e) {
+ if (this.canNotDo()) {
+ return
+ }
+ // ������������������������������������������������������������������������������������������������
+ const x = this.getTouchX(e)
+ const { left, width } = this.sliderRect
+ const distanceX = x - left
+ // ������������������������������������������������������������������������������������������������������������
+ // ������������������������������������������������step������������������������
+ const percent = (distanceX / width) * 100
+ this.setTouchStatus('moving')
+ this.updateSliderPlacement(percent, true, 'moving')
+ },
+ onTouchEnd() {
+ if (this.canNotDo()) {
+ return
+ }
+ this.emitEvent('end')
+ this.setTouchStatus('end')
+ },
+ // ���������������������
+ updateSliderPlacement(value, drag, event) {
+ // ������������������������������������step���������������
+ const { width } = this.sliderRect
+ const percent = this.formatStep(value)
+ // ������������������
+ const barStyle = {
+ width: `${percent / 100 * width}px`
+ }
+ // ������������������������������
+ if (drag === true) {
+ barStyle.transition = 'none'
+ } else {
+ // ������������������������������������������������������css������������������
+ delete barStyle.transition
+ }
+ // ������value���
+ this.$emit('input', percent)
+ // ���������������
+ if (event) {
+ this.emitEvent(event, percent)
+ }
+ this.barStyle = barStyle
+ },
+ onClick(e) {
+ if (this.canNotDo()) {
+ return
+ }
+ // ���������������������������������������������onTouchMove������������
+ const { left, width } = this.sliderRect
+ const value = ((e.detail.x - left) / width) * 100
+ this.updateSliderPlacement(value, false, 'click')
+ }
+ }
+}
--
Gitblit v1.8.0