From d1448cb0ef10f358bb7bddb4e1ec268515e0b787 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 15 七月 2025 11:46:57 +0800
Subject: [PATCH] 项目初始化

---
 uni_modules/uview-ui/components/u-swipe-action-item/index.wxs |  225 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 225 insertions(+), 0 deletions(-)

diff --git a/uni_modules/uview-ui/components/u-swipe-action-item/index.wxs b/uni_modules/uview-ui/components/u-swipe-action-item/index.wxs
new file mode 100644
index 0000000..728275f
--- /dev/null
+++ b/uni_modules/uview-ui/components/u-swipe-action-item/index.wxs
@@ -0,0 +1,225 @@
+/**
+ * 姝や负wxs妯″潡锛屽彧鏀寔APP-VUE锛屽井淇″拰QQ灏忕▼搴忎互鍙奌5骞冲彴
+ * wxs鍐呴儴涓嶆敮鎸乪s6璇硶锛屽彉閲忓彧鑳戒娇鐢╲ar瀹氫箟锛屾棤娉曚娇鐢ㄨВ鏋勶紝绠ご鍑芥暟绛夌壒鎬�
+ */
+
+// 寮�濮嬭Е鎽�
+function touchstart(event, ownerInstance) {
+	// 瑙﹀彂浜嬩欢鐨勭粍浠剁殑ComponentDescriptor瀹炰緥
+	var instance = event.instance
+	// wxs鍐呯殑灞�閮ㄥ彉閲忓揩鐓э紝姝ゅ揩鐓ф槸灞炰簬鏁翠釜缁勪欢鐨勶紝鍦╰ouchstart鍜宼ouchmove浜嬩欢涓兘鑳借幏鍙栧埌鐩稿悓鐨勭粨鏋�
+	var state = instance.getState()
+	if (state.disabled) return
+	var touches = event.touches
+	// 濡傛灉杩涜鐨勬槸澶氭寚瑙︽帶锛屼笉鍏佽杩涜鎿嶄綔
+	if (touches && touches.length > 1) return
+	// 鏍囪瘑褰撳墠涓烘粦鍔ㄤ腑鐘舵��
+	state.moving = true
+	// 璁板綍瑙︽懜寮�濮嬬偣鐨勫潗鏍囧��
+	state.startX = touches[0].pageX
+	state.startY = touches[0].pageY
+	
+	ownerInstance.callMethod('closeOther')
+}
+
+// 瑙︽懜婊戝姩
+function touchmove(event, ownerInstance) {
+	// 瑙﹀彂浜嬩欢鐨勭粍浠剁殑ComponentDescriptor瀹炰緥
+	var instance = event.instance
+	// wxs鍐呯殑灞�閮ㄥ彉閲忓揩鐓�
+	var state = instance.getState()
+	if (state.disabled || !state.moving) return
+	var touches = event.touches
+	var pageX = touches[0].pageX
+	var pageY = touches[0].pageY
+	var moveX = pageX - state.startX
+	var moveY = pageY - state.startY
+	var buttonsWidth = state.buttonsWidth
+
+	// 绉诲姩鐨刋杞磋窛绂诲ぇ浜嶻杞磋窛绂伙紝涔熷嵆缁堢偣涓庤捣鐐逛綅缃繛绾匡紝涓嶺杞村す瑙掑皬浜�45搴︽椂锛岀姝㈤〉闈㈡粴鍔�
+	if (Math.abs(moveX) > Math.abs(moveY) || Math.abs(moveX) > state.threshold) {
+		event.preventDefault && event.preventDefault()
+		event.stopPropagation && event.stopPropagation()
+	}
+	// 濡傛灉绉诲姩鐨刋杞磋窛绂诲皬浜嶻杞磋窛绂伙紝涔熷嵆缁堢偣浣嶇疆涓庤捣鐐逛綅缃繛绾匡紝涓嶻杞村す瑙掑皬浜�45搴︽椂锛岃涓烘槸椤甸潰涓婁笅婊戝姩锛岃�屼笉鏄乏鍙虫粦鍔ㄥ崟鍏冩牸
+	if (Math.abs(moveX) < Math.abs(moveY)) return
+
+	// 闄愬埗鍙虫粦鐨勮窛绂伙紝涓嶅厑璁稿唴瀹归儴鍒嗗線鍙冲亸绉伙紝鍙虫粦浼氬鑷碭杞村亸绉诲�煎ぇ浜�0锛屼互姝ゅ仛鍒ゆ柇
+	// 姝ゅ涓嶈兘鐩存帴return锛屽洜涓烘粦鍔ㄨ繃绋嬩腑浼氱己澶辨煇浜涘叧閿偣鍧愭爣锛屼細瀵艰嚧閿欎贡锛屾渶濂界殑鍔炴硶灏辨槸
+	// 鍦ㄨ秴鍑哄悗锛岃缃负0
+	if (state.status === 'open') {
+		// 鍦ㄥ紑鍚姸鎬佷笅锛屽悜宸︽粦鍔紝闇�蹇界暐
+		if (moveX < 0) moveX = 0
+		// 鎯宠鏀惰捣鑿滃崟锛屾渶澶ц兘绉诲姩鐨勮窛绂讳负鎸夐挳鐨勬�诲搴�
+		if (moveX > buttonsWidth) moveX = buttonsWidth
+		// 濡傛灉鏄凡缁忔墦寮�浜嗙殑鐘舵�侊紝鍚戝乏婊戝姩鏃讹紝绉诲姩鏀惰捣鑿滃崟
+		moveSwipeAction(-buttonsWidth + moveX, instance, ownerInstance)
+	} else {
+		// 鍏抽棴鐘舵�佷笅锛屽彸婊戝姩闇�蹇界暐
+		if (moveX > 0) moveX = 0
+		// 婊戝姩鐨勮窛绂讳笉鍏佽瓒呰繃鎵�鏈夋寜閽殑鎬诲搴︼紝姝ゆ椂鍙兘鏄乏婊戯紝鏈�缁堣缃寜閽殑鎬诲搴︼紝鍚屾椂涓鸿礋鏁�
+		if (Math.abs(moveX) > buttonsWidth) moveX = -buttonsWidth
+		// 鍙鏄湪婊戣繃绋嬩腑锛屽氨涓嶆柇绉诲姩鍗曞厓鏍煎唴瀹归儴鍒嗭紝浠庤�屼娇闅愯棌鐨勮彍鍗曟樉绀哄嚭鏉�
+		moveSwipeAction(moveX, instance, ownerInstance)
+	}
+}
+
+// 瑙︽懜缁撴潫
+function touchend(event, ownerInstance) {
+	// 瑙﹀彂浜嬩欢鐨勭粍浠剁殑ComponentDescriptor瀹炰緥
+	var instance = event.instance
+	// wxs鍐呯殑灞�閮ㄥ彉閲忓揩鐓�
+	var state = instance.getState()
+	if (!state.moving || state.disabled) return
+	var touches = event.changedTouches ? event.changedTouches[0] : {}
+	var pageX = touches.pageX
+	var pageY = touches.pageY
+	var moveX = pageX - state.startX
+	if (state.status === 'open') {
+		// 鍦ㄥ睍寮�鐨勭姸鎬佷笅锛岀户缁乏婊戯紝鏃犻渶鎿嶄綔
+		if (moveX < 0) return
+		// 鍦ㄥ紑鍚姸鎬佷笅锛岀偣鍑讳竴涓嬪唴瀹瑰尯鍩燂紝moveX涓�0锛屼篃鍗虫病鏈夎繘琛岀Щ鍔紝杩欐椂鎵ц鏀惰捣鑿滃崟閫昏緫
+		if (moveX === 0) {
+			return closeSwipeAction(instance, ownerInstance)
+		}
+		// 鍦ㄥ紑鍚姸鎬佷笅锛屾粦鍔ㄨ窛绂诲皬浜庨槇鍊硷紝鍒欓粯璁や负涓嶅叧闂紝鍚屾椂鎭㈠鍘熸潵鐨勬墦寮�鐘舵��
+		if (Math.abs(moveX) < state.threshold) {
+			openSwipeAction(instance, ownerInstance)
+		} else {
+			// 濡傛灉婊戝姩璺濈澶т簬闃堝�硷紝鍒欐墽琛屾敹璧烽�昏緫
+			closeSwipeAction(instance, ownerInstance)
+		}
+	} else {
+		// 鍦ㄥ叧闂殑鐘舵�佷笅锛屽彸婊戯紝鏃犻渶鎿嶄綔
+		if (moveX > 0) return
+		// 鐞嗙敱鍚屼笂
+		if (Math.abs(moveX) < state.threshold) {
+			closeSwipeAction(instance, ownerInstance)
+		} else {
+			openSwipeAction(instance, ownerInstance)
+		}
+	}
+}
+
+// 鑾峰彇杩囨浮鏃堕棿
+function getDuration(value) {
+	if (value.toString().indexOf('s') >= 0) return value
+	return value > 30 ? value + 'ms' : value + 's'
+}
+
+// 婊戝姩缁撴潫鏃跺垽鏂粦鍔ㄧ殑鏂瑰悜
+function getMoveDirection(instance, ownerInstance) {
+	var state = instance.getState()
+}
+
+// 绉诲姩婊戝姩閫夋嫨鍣ㄥ唴瀹瑰尯鍩燂紝鍚屾椂鏄剧ず鍑哄叾闅愯棌鐨勮彍鍗�
+function moveSwipeAction(moveX, instance, ownerInstance) {
+	var state = instance.getState()
+	// 鑾峰彇鎵�鏈夋寜閽殑瀹炰緥锛岄渶瑕侀�氳繃瀹冨幓璁剧疆鎸夐挳鐨勪綅绉�
+	var buttons = ownerInstance.selectAllComponents('.u-swipe-action-item__right__button')
+
+	// 璁剧疆鑿滃崟鍐呭閮ㄥ垎鐨勫亸绉�
+	instance.requestAnimationFrame(function() {
+		instance.setStyle({
+			// 璁剧疆translateX鐨勫��
+			'transition': 'none',
+			transform: 'translateX(' + moveX + 'px)',
+			'-webkit-transform': 'translateX(' + moveX + 'px)'
+		})
+	})
+}
+
+// 涓�娆℃�у睍寮�婊戝姩鑿滃崟
+function openSwipeAction(instance, ownerInstance) {
+	var state = instance.getState()
+	// 鑾峰彇鎵�鏈夋寜閽殑瀹炰緥锛岄渶瑕侀�氳繃瀹冨幓璁剧疆鎸夐挳鐨勪綅绉�
+	var buttons = ownerInstance.selectAllComponents('.u-swipe-action-item__right__button')
+	// 澶勭悊duration鍗曚綅闂
+	var duration = getDuration(state.duration)
+	// 灞曞紑杩囩▼涓紝鏄悜宸︾Щ鍔紝鎵�浠鐨勫亸绉诲簲璇ヤ负璐熷��
+	var buttonsWidth = -state.buttonsWidth
+	instance.requestAnimationFrame(function() {
+		// 璁剧疆鑿滃崟涓讳綋鍐呭
+		instance.setStyle({
+			'transition': 'transform ' + duration,
+			'transform': 'translateX(' + buttonsWidth + 'px)',
+			'-webkit-transform': 'translateX(' + buttonsWidth + 'px)',
+		})
+	})
+	setStatus('open', instance, ownerInstance)
+}
+
+// 鏍囪鑿滃崟鐨勫綋鍓嶇姸鎬侊紝open-宸茬粡鎵撳紑锛宑lose-宸茬粡鍏抽棴
+function setStatus(status, instance, ownerInstance) {
+	var state = instance.getState()
+	state.status = status
+	ownerInstance.callMethod('setState', status)
+}
+
+// 涓�娆℃�ф敹璧锋粦鍔ㄨ彍鍗�
+function closeSwipeAction(instance, ownerInstance) {
+	var state = instance.getState()
+	// 鑾峰彇鎵�鏈夋寜閽殑瀹炰緥锛岄渶瑕侀�氳繃瀹冨幓璁剧疆鎸夐挳鐨勪綅绉�
+	var buttons = ownerInstance.selectAllComponents('.u-swipe-action-item__right__button')
+	var len = buttons.length
+	// 澶勭悊duration鍗曚綅闂
+	var duration = getDuration(state.duration)
+	instance.requestAnimationFrame(function() {
+		// 璁剧疆鑿滃崟涓讳綋鍐呭
+		instance.setStyle({
+			'transition': 'transform ' + duration,
+			'transform': 'translateX(0px)',
+			'-webkit-transform': 'translateX(0px)'
+		})
+		// 璁剧疆鍚勪釜闅愯棌鐨勬寜閽负鏀惰捣鐨勭姸鎬�
+		for (var i = len - 1; i >= 0; i--) {
+			buttons[i].setStyle({
+				'transition': 'transform ' + duration,
+				'transform': 'translateX(0px)',
+				'-webkit-transform': 'translateX(0px)'
+			})
+		}
+	})
+	setStatus('close', instance, ownerInstance)
+}
+
+// status鐨勭姸鎬佸彂鐢熷彉鍖�
+function statusChange(newValue, oldValue, ownerInstance, instance) {
+	var state = instance.getState()
+	if (state.disabled) return
+	// 鎵撳紑鎴栧叧闂崟鍏冩牸
+	if (newValue === 'close' && state.status === 'open') {
+		closeSwipeAction(instance, ownerInstance)
+	} else if(newValue === 'open' && state.status === 'close') {
+		openSwipeAction(instance, ownerInstance)
+	}
+}
+
+// 鑿滃崟灏哄鍙戠敓鍙樺寲
+function sizeChange(newValue, oldValue, ownerInstance, instance) {
+	// wxs鍐呯殑灞�閮ㄥ彉閲忓揩鐓�
+	var state = instance.getState()
+	state.disabled = newValue.disabled
+	state.duration = newValue.duration
+	state.show = newValue.show
+	state.threshold = newValue.threshold
+	state.buttons = newValue.buttons
+
+	if (state.buttons) {
+		var len = state.buttons.length
+		var buttonsWidth = 0
+		var buttons = newValue.buttons
+		for (var i = 0; i < len; i++) {
+			buttonsWidth += buttons[i].width
+		}
+	}
+	state.buttonsWidth = buttonsWidth
+}
+
+module.exports = {
+	touchstart: touchstart,
+	touchmove: touchmove,
+	touchend: touchend,
+	sizeChange: sizeChange,
+	statusChange: statusChange
+}

--
Gitblit v1.9.3