sunshibo 1 هفته پیش
والد
کامیت
ba75f9cf60
1فایلهای تغییر یافته به همراه82 افزوده شده و 58 حذف شده
  1. 82 58
      HBuilderProjects/shareCheckIn.html

+ 82 - 58
HBuilderProjects/shareCheckIn.html

@@ -569,7 +569,7 @@
 		</div>
 		</div>
 	</header>
 	</header>
 
 
-		<!-- 配图轮播:checkInImages;含视频时仅展示封面静图,不播放视频 -->
+		<!-- 配图轮播:仅用 checkInImages;视频显示封面静图。店铺图见下方 #storeThumb(不用 coverUrl) -->
 	<div class="checkin-hero" id="dynHero">
 	<div class="checkin-hero" id="dynHero">
 		<div class="checkin-hero__track" id="dynHeroTrack"></div>
 		<div class="checkin-hero__track" id="dynHeroTrack"></div>
 		<div class="checkin-hero__dots" id="dynHeroDots" aria-hidden="true"></div>
 		<div class="checkin-hero__dots" id="dynHeroDots" aria-hidden="true"></div>
@@ -2017,6 +2017,20 @@
 				: '';
 				: '';
 		}
 		}
 
 
+		function parseCheckInShopItem() {
+			var raw = getMergedParam('checkInShopItem');
+			if (!raw) return null;
+			try {
+				return JSON.parse(tryDecode(String(raw).trim()));
+			} catch (e1) {
+				try {
+					return JSON.parse(String(raw).trim());
+				} catch (e2) {
+					return null;
+				}
+			}
+		}
+
 		/** 与 App checkIn/details isVideoClockUrl 一致 */
 		/** 与 App checkIn/details isVideoClockUrl 一致 */
 		function isCheckInVideoUrl(url) {
 		function isCheckInVideoUrl(url) {
 			var s = normalizeMediaUrl(String(url || ''));
 			var s = normalizeMediaUrl(String(url || ''));
@@ -2062,34 +2076,10 @@
 			);
 			);
 		}
 		}
 
 
-		function getCheckInPosterFallbacks() {
-			var list = [];
-			function pushStill(u) {
-				u = normalizeMediaUrl(String(u || '').trim());
-				if (!u || isCheckInVideoUrl(u)) return;
-				if (list.indexOf(u) < 0) list.push(u);
-			}
-			pushStill(getMergedParam('coverUrl') || q('coverUrl'));
-			var item = parseOptionsItem();
-			if (item) {
-				['videoFirstFrame', 'coverImage', 'cover', 'coverUrl', 'poster', 'entranceImage'].forEach(
-					function (k) {
-						if (item[k] != null) pushStill(item[k]);
-					}
-				);
-			}
-			return list;
-		}
-
-		/** 视频地址 → 封面静图 URL(不渲染 video 标签) */
-		function resolveCheckInHeroDisplayUrl(rawUrl, posterFallbacks) {
-			var url = normalizeMediaUrl(rawUrl);
-			if (!url) return '';
-			if (!isCheckInVideoUrl(url)) return url;
-			var fallbacks = posterFallbacks || getCheckInPosterFallbacks();
-			for (var i = 0; i < fallbacks.length; i++) {
-				if (fallbacks[i]) return fallbacks[i];
-			}
+		/** 中间轮播:仅把打卡视频换成封面静图(不用店铺 entranceImage / coverUrl) */
+		function resolveCheckInVideoPosterUrl(videoUrl) {
+			var url = normalizeMediaUrl(videoUrl);
+			if (!url || !isCheckInVideoUrl(url)) return '';
 			var playUrl = getMp4PlaybackUrl(url);
 			var playUrl = getMp4PlaybackUrl(url);
 			if (playUrl) {
 			if (playUrl) {
 				var jpg = mp4UrlToJpgUrl(playUrl);
 				var jpg = mp4UrlToJpgUrl(playUrl);
@@ -2099,16 +2089,13 @@
 			return CHECKIN_HERO_DEFAULT_MAP_SRC;
 			return CHECKIN_HERO_DEFAULT_MAP_SRC;
 		}
 		}
 
 
-		/** 轮播:checkInImages;视频项替换为封面图 */
-		function collectImageUrlsFromUrl() {
+		/** 原始打卡配图列表(checkInImages),不含店铺头图 */
+		function collectRawCheckInImageUrls() {
 			var merged = getMergedQueryString();
 			var merged = getMergedQueryString();
 			var urls = [];
 			var urls = [];
-			var posterFallbacks = getCheckInPosterFallbacks();
-
 			getAllParamValuesCI(merged, 'checkinimages').forEach(function (val) {
 			getAllParamValuesCI(merged, 'checkinimages').forEach(function (val) {
 				pushUrlsFromRawParam(urls, val);
 				pushUrlsFromRawParam(urls, val);
 			});
 			});
-
 			var item = parseOptionsItem();
 			var item = parseOptionsItem();
 			if (item && item.checkInImages != null && item.checkInImages !== '') {
 			if (item && item.checkInImages != null && item.checkInImages !== '') {
 				if (Array.isArray(item.checkInImages)) {
 				if (Array.isArray(item.checkInImages)) {
@@ -2119,23 +2106,72 @@
 					pushUrlsFromRawParam(urls, String(item.checkInImages));
 					pushUrlsFromRawParam(urls, String(item.checkInImages));
 				}
 				}
 			}
 			}
+			return urls;
+		}
 
 
+		/** 中间 #dynHero:checkInImages;视频项 → 封面静图 */
+		function collectImageUrlsFromUrl() {
+			var urls = collectRawCheckInImageUrls();
 			var displayUrls = [];
 			var displayUrls = [];
 			urls.forEach(function (u) {
 			urls.forEach(function (u) {
-				var display = resolveCheckInHeroDisplayUrl(u, posterFallbacks);
+				var display = isCheckInVideoUrl(u)
+					? resolveCheckInVideoPosterUrl(u)
+					: normalizeMediaUrl(u);
 				if (display) pushUniqueUrl(displayUrls, display);
 				if (display) pushUniqueUrl(displayUrls, display);
 			});
 			});
-
 			if (!displayUrls.length) {
 			if (!displayUrls.length) {
-				if (posterFallbacks.length) {
-					pushUniqueUrl(displayUrls, posterFallbacks[0]);
-				} else {
-					pushUniqueUrl(displayUrls, CHECKIN_HERO_DEFAULT_MAP_SRC);
-				}
+				pushUniqueUrl(displayUrls, CHECKIN_HERO_DEFAULT_MAP_SRC);
 			}
 			}
 			return displayUrls;
 			return displayUrls;
 		}
 		}
 
 
+		/** 下方店铺缩略图 #storeThumb:用门店 entranceImage,不用打卡视频 coverUrl */
+		function resolveStoreThumbUrl(item) {
+			var shop = parseCheckInShopItem();
+			if (shop && shop.entranceImage != null && String(shop.entranceImage).trim() !== '') {
+				var ent = normalizeMediaUrl(String(shop.entranceImage).trim());
+				if (ent && !isCheckInVideoUrl(ent)) return ent;
+			}
+			if (
+				shop &&
+				Array.isArray(shop.storeAlbumUrlList) &&
+				shop.storeAlbumUrlList[0]
+			) {
+				var alb = normalizeMediaUrl(String(shop.storeAlbumUrlList[0]).trim());
+				if (alb && !isCheckInVideoUrl(alb)) return alb;
+			}
+			var cardCover = getMergedParam('cardCover') || q('cardCover');
+			if (cardCover && !isCheckInVideoUrl(cardCover)) {
+				return normalizeMediaUrl(cardCover);
+			}
+			if (item && item.entranceImage != null && String(item.entranceImage).trim() !== '') {
+				var ie = normalizeMediaUrl(String(item.entranceImage).trim());
+				if (ie && !isCheckInVideoUrl(ie)) return ie;
+			}
+			if (item && Array.isArray(item.storeAlbumUrlList) && item.storeAlbumUrlList[0]) {
+				var ia = normalizeMediaUrl(String(item.storeAlbumUrlList[0]).trim());
+				if (ia && !isCheckInVideoUrl(ia)) return ia;
+			}
+			var coverUrl = getMergedParam('coverUrl') || q('coverUrl');
+			if (coverUrl && !isCheckInVideoUrl(coverUrl)) {
+				var coverNorm = normalizeMediaUrl(coverUrl);
+				var checkInUrls = collectRawCheckInImageUrls();
+				var isCheckInMedia = false;
+				for (var i = 0; i < checkInUrls.length; i++) {
+					if (normalizeMediaUrl(checkInUrls[i]) === coverNorm) {
+						isCheckInMedia = true;
+						break;
+					}
+				}
+				if (!isCheckInMedia) return coverNorm;
+			}
+			if (shop && shop.imgUrl != null && String(shop.imgUrl).trim() !== '') {
+				var si = normalizeMediaUrl(String(shop.imgUrl).trim());
+				if (si && !isCheckInVideoUrl(si)) return si;
+			}
+			return '';
+		}
+
 		var heroI = 0;
 		var heroI = 0;
 		var heroTimer = null;
 		var heroTimer = null;
 		var dynHeroSwipeInited = false;
 		var dynHeroSwipeInited = false;
@@ -2211,14 +2247,9 @@
 				im.decoding = 'async';
 				im.decoding = 'async';
 				im.src = url;
 				im.src = url;
 				im.onerror = function () {
 				im.onerror = function () {
-					if (this.dataset.fallbackApplied === '1') {
-						this.src = CHECKIN_HERO_DEFAULT_MAP_SRC;
-						return;
-					}
+					if (this.dataset.fallbackApplied === '1') return;
 					this.dataset.fallbackApplied = '1';
 					this.dataset.fallbackApplied = '1';
-					var fb = getCheckInPosterFallbacks();
-					if (fb.length) this.src = fb[0];
-					else this.src = CHECKIN_HERO_DEFAULT_MAP_SRC;
+					this.src = CHECKIN_HERO_DEFAULT_MAP_SRC;
 				};
 				};
 				s.appendChild(im);
 				s.appendChild(im);
 				track.appendChild(s);
 				track.appendChild(s);
@@ -2388,17 +2419,10 @@
 			var elTag = document.getElementById('storeTagline');
 			var elTag = document.getElementById('storeTagline');
 			if (elTag) elTag.textContent = tryDecode(tag);
 			if (elTag) elTag.textContent = tryDecode(tag);
 
 
-			var thumb = getMergedParam('coverUrl') || q('coverUrl');
-			if (!thumb && item && item.coverUrl != null && String(item.coverUrl).trim() !== '') {
-				thumb = String(item.coverUrl);
-			}
-			if (!thumb) thumb = getMergedParam('cardCover') || q('cardCover');
-			if (!thumb && item) {
-				if (item.entranceImage) thumb = String(item.entranceImage);
-				else if (Array.isArray(item.storeAlbumUrlList) && item.storeAlbumUrlList[0]) thumb = item.storeAlbumUrlList[0];
-				else if (Array.isArray(item.imageList) && item.imageList[0]) thumb = item.imageList[0];
+			var thumb = resolveStoreThumbUrl(item);
+			if (thumb) {
+				document.getElementById('storeThumb').src = thumb;
 			}
 			}
-			if (thumb) document.getElementById('storeThumb').src = normalizeMediaUrl(thumb) || thumb;
 		}
 		}
 
 
 		function boot() {
 		function boot() {