From 43cf01b22df46db9a944fe613be5cde8dd28622b Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期四, 12 六月 2025 19:58:14 +0800
Subject: [PATCH] 刷视频支持图片

---
 pages/tabbar/index/home1.vue |  144 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 144 insertions(+), 0 deletions(-)

diff --git a/pages/tabbar/index/home1.vue b/pages/tabbar/index/home1.vue
new file mode 100644
index 0000000..1a5edcc
--- /dev/null
+++ b/pages/tabbar/index/home1.vue
@@ -0,0 +1,144 @@
+<template>
+  <!-- 鑷畾涔夋帶鍒舵潯 -->
+  <view 
+  	@touchstart="handleTouchStart"
+  	@touchmove="handleTouchMove"
+  	@touchend="handleTouchEnd"
+  	class="container">
+    <!-- 杩涘害鏉� - 鏁翠釜鍖哄煙鍙嫋鍔� -->
+    <view class="process-warp" :style="{ opacity: showProcess ? 1 : 0 }">
+  	  <!-- 鏄剧ず褰撳墠杩涘害 -->
+  	  <view class="progress-text">{{ hasPlayTime }}/{{formartDuration}}</view>
+  	  <view 
+  	    class="progress-bar" 
+  	    id="progressBar"
+  	  >
+  	  			  
+  	    <!-- 宸插~鍏呴儴鍒� -->
+  	    <view class="progress-fill" :style="{ width: progress + '%' }"></view>
+  	  </view>
+    </view>
+  </view>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      startX: 0,
+      progress: 0, // 瑙嗛杩涘害
+      startProgress : 0, // 寮�濮嬫粦鍔ㄦ椂鐨勮繘搴�
+      barLeft: 0, // 杩涘害鏉″乏杈圭晫浣嶇疆
+      barWidth: 0, // 杩涘害鏉″搴�
+      isDragging: false, // 鏄惁姝e湪鎷栧姩
+      processHidenTimer: null, // 杩涘害鏉¢殣钘忓畾鏃跺櫒
+      showProcess: false, // 鏄惁鏄剧ず杩涘害鏉�
+    };
+  },
+  mounted() {
+    // 鑾峰彇杩涘害鏉$殑灏哄鍜屼綅缃俊鎭�
+    this.getBarRect();
+  },
+  methods: {
+    // 鑾峰彇杩涘害鏉$殑浣嶇疆鍜屽昂瀵�
+    getBarRect() {
+      const query = uni.createSelectorQuery().in(this);
+      query.select('#progressBar').boundingClientRect(rect => {
+        if (rect) {
+          this.barLeft = rect.left;
+          this.barWidth = rect.width;
+        }
+      }).exec();
+    },
+    
+    // 瑙︽懜寮�濮�
+    handleTouchStart(e) {
+      this.isDragging = true;
+      this.showProcess = true;
+      this.startProgress = this.progress; // 璁板綍寮�濮嬫椂鐨勮繘搴�
+      this.startX = e.touches[0].pageX;
+      console.log("璁板綍寮�濮嬫椂鐨勮繘搴�", this.startProgress);
+      this.videoContexts[this.currentIndex].pause()
+      // this.updateProgress(e);
+    },
+    
+    // 瑙︽懜绉诲姩
+    handleTouchMove(e) {
+      if (!this.isDragging || !this.barWidth) return;
+      clearTimeout(this.processHidenTimer)
+      this.videoContexts[this.currentIndex].pause()
+      this.updateProgress(e);
+    },
+    
+    // 瑙︽懜缁撴潫
+    handleTouchEnd() {
+      this.isDragging = false;
+      console.log("婊戝姩缁撴潫", this.duration * this.progress);
+      this.videoContexts[this.currentIndex].seek(this.duration * this.progress / 100)
+      this.videoContexts[this.currentIndex].play()
+      this.processHidenTimer = setTimeout(() => {
+    	  this.showProcess = false;
+    	}, 1000);
+    },
+    
+    // 鏇存柊杩涘害
+    updateProgress(e) {
+    	// 鑾峰彇褰撳墠瑙︽懜鐐筙鍧愭爣
+    	const currentX = e.touches[0].pageX;
+    	
+    	// 璁$畻婊戝姩璺濈(鍍忕礌)
+    	const deltaX = currentX - this.startX;
+    	
+    	// 灏嗗儚绱犺窛绂昏浆鎹负杩涘害澧為噺
+    	const deltaProgress = (deltaX / this.barWidth) * 100;
+    	console.log("杩涘害澧為噺", deltaProgress);
+    	// 璁$畻鏂拌繘搴� = 寮�濮嬫椂鐨勮繘搴� + 婊戝姩澧為噺
+    	let newProgress = this.startProgress + deltaProgress;
+    	
+    	// 闄愬埗鑼冨洿鍦�0-100涔嬮棿
+    	newProgress = Math.max(0, Math.min(100, newProgress));
+    	
+    	this.progress = newProgress;
+    }
+  }
+};
+</script>
+
+<style>
+.container {
+	  display: flex;
+	  flex-direction: column;
+	  align-items: center;
+	  position: absolute;
+	  bottom: 0;
+	  width: 100%;
+	}
+	
+	.progress-bar {
+	  position: relative;
+	  width: 100%;
+	  height: 16px;
+	  background-color: #eee;
+	  overflow: hidden;
+	}
+	
+	.progress-fill {
+	  position: absolute;
+	  left: 0;
+	  top: 0;
+	  height: 100%;
+	  background-color: lightgray;
+	  transition: width 0.1s;
+	}
+	.process-warp {
+		width: 100%;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+	}
+	.progress-text {
+	  margin-top: 10px;
+	  font-size: 14px;
+	  color: #666;
+	}
+</style>
\ No newline at end of file

--
Gitblit v1.8.0