zhuli 1 долоо хоног өмнө
parent
commit
5e3b0559c7

+ 55 - 24
HBuilderProjects/shareIndex.html

@@ -1138,8 +1138,14 @@
 			}
 		}
 
-		/** 详情页 onLoad 使用 storeId;分享链常为 id,补全 storeId 避免 App 内参数为空 */
-		function buildAppOpenQueryString() {
+		/** getClientStoreDetail 回填后用于补全 storeType / storeTypeName 等唤起参数 */
+		var appLaunchDetailCache = null;
+
+		/**
+		 * 与 App 详情 onLoad 一致,例如:
+		 * pages/ieisureEntertainment/eightTypeList/delicacyDetails?storeId=378&storeType=3&storeTypeName=特色美食&businessSection=1
+		 */
+		function buildAppLaunchQueryParams() {
 			var raw = (location.search && location.search.charAt(0) === '?') ? location.search.slice(1) : (location.search || '');
 			var params = new URLSearchParams(raw);
 			var sid = params.get('storeId') || params.get('id') || '';
@@ -1149,11 +1155,40 @@
 				var lonVal = params.get('lon') || params.get('lng');
 				if (lonVal) params.set('jingdu', lonVal);
 			}
-			if (!params.has('fromShareIndex')) params.set('fromShareIndex', '1');
-			var qs = params.toString();
+			var d = appLaunchDetailCache;
+			if (d && typeof d === 'object') {
+				if (!params.has('storeType') && d.storeType != null && String(d.storeType).trim() !== '') {
+					params.set('storeType', String(d.storeType).trim());
+				}
+				if (!params.has('storeTypeName')) {
+					var tn = d.storeTypeName != null ? d.storeTypeName : d.typeName;
+					if (tn != null && String(tn).trim() !== '') params.set('storeTypeName', String(tn).trim());
+				}
+				if (!params.has('businessSection') && d.businessSection != null && String(d.businessSection).trim() !== '') {
+					params.set('businessSection', String(d.businessSection).trim());
+				}
+			}
+			if (!params.has('businessSection')) {
+				var pathHint = getAppUniPathForBusinessSection();
+				if (pathHint.indexOf('barDetails') >= 0) params.set('businessSection', '2');
+				else if (pathHint.indexOf('lifeDetails') >= 0) params.set('businessSection', '3');
+				else if (pathHint.indexOf('delicacyDetails') >= 0) params.set('businessSection', '1');
+			}
+			return params;
+		}
+
+		function buildAppOpenQueryString() {
+			var qs = buildAppLaunchQueryParams().toString();
 			return qs ? ('?' + qs) : '';
 		}
 
+		/** Uni 路由串(无 shopro://),供 wx-open-launch-app extinfo 与 App plus.runtime.arguments 解析 */
+		function buildAppUniPageLaunchUrl() {
+			var path = getAppUniPathForBusinessSection().replace(/^\//, '');
+			var qs = buildAppLaunchQueryParams().toString();
+			return qs ? path + '?' + qs : path;
+		}
+
 		/**
 		 * 按 URL 参数 businessSection 打开对应 App 页:
 		 * 1 → delicacyDetails,2 → barDetails,3 → lifeDetails
@@ -1353,33 +1388,27 @@
 		}
 
 		/**
-		 * wx-open-launch-app 的 extinfo:须为 App 可解析的 Uni 路径/深链,不能传 H5 页 URL
-		 * 优先 JSON { path, query },其次 shopro://…/delicacyDetails?storeId=…(与 buildAppDeepLink 一致)。
+		 * wx-open-launch-app extinfo:U店在哪 App 按 Uni 页面路径解析(与详情页路由一致)
+		 * 例:pages/ieisureEntertainment/eightTypeList/delicacyDetails?storeId=378&storeType=3&storeTypeName=特色美食&businessSection=1
 		 */
 		function buildWeChatLaunchExtinfo() {
-			var path = getAppUniPathForBusinessSection().replace(/^\//, '');
-			var qs = buildAppOpenQueryString().replace(/^\?/, '');
-			try {
-				var pack = JSON.stringify({ path: path, query: qs });
-				if (pack.length <= 1024) return pack;
-			} catch (eJ) {}
-			var deep = buildAppDeepLink();
-			if (deep.length <= 1024) return deep;
-			var params = new URLSearchParams(qs);
+			var uniPage = buildAppUniPageLaunchUrl();
+			if (uniPage.length <= 1024) return uniPage;
+			var params = buildAppLaunchQueryParams();
 			var mini = new URLSearchParams();
 			var storeId = params.get('storeId') || params.get('id') || '';
 			if (storeId) mini.set('storeId', storeId);
-			var uid = params.get('userId');
-			if (uid) mini.set('userId', uid);
+			var st = params.get('storeType');
+			if (st) mini.set('storeType', st);
+			var stn = params.get('storeTypeName');
+			if (stn) mini.set('storeTypeName', stn);
 			var bs = params.get('businessSection');
 			if (bs) mini.set('businessSection', bs);
-			mini.set('fromShareIndex', '1');
-			var miniQs = mini.toString();
-			try {
-				var miniPack = JSON.stringify({ path: path, query: miniQs });
-				if (miniPack.length <= 1024) return miniPack;
-			} catch (eJ2) {}
-			return deep.slice(0, 1024);
+			var path = getAppUniPathForBusinessSection().replace(/^\//, '');
+			var shortPage = path + '?' + mini.toString();
+			if (shortPage.length <= 1024) return shortPage;
+			var deep = buildAppDeepLink();
+			return deep.length <= 1024 ? deep : shortPage.slice(0, 1024);
 		}
 
 		function setWxInitError(msg) {
@@ -2682,6 +2711,8 @@
 
 		function renderDetail(d) {
 			if (!d) return;
+			appLaunchDetailCache = d;
+			if (weChatJssdkConfigured) refreshWxLaunchTagAttrs();
 			document.getElementById('storeName').textContent = d.storeName || '—';
 			var score = d.scoreAvg != null ? Number(d.scoreAvg) : NaN;
 			document.getElementById('scoreAvg').textContent = !isNaN(score) ? score.toFixed(1) : '—';