sunshibo před 1 týdnem
rodič
revize
96e957a6c7
1 změnil soubory, kde provedl 31 přidání a 8 odebrání
  1. 31 8
      HBuilderProjects/shareCheckIn.html

+ 31 - 8
HBuilderProjects/shareCheckIn.html

@@ -705,13 +705,31 @@
 			return params;
 		}
 
-		function buildAppOpenQueryStringMerged() {
+		/**
+		 * 打卡记录 id(与 getDeleteFlagById、App getStoreClockInList 分享链一致)。
+		 * URL 的 id / checkInId 是打卡记录 id,不能当作 storeId。
+		 */
+		function getCheckInRecordIdFromParams(params) {
+			var p = params || mergeSearchAndHashParams();
+			return (
+				String(p.get('id') || '').trim() ||
+				String(p.get('checkInId') || '').trim()
+			);
+		}
+
+		/** 唤起 App 用的 query:保留原参数,并确保 id、checkInId 为打卡记录 id */
+		function buildCheckInAppOpenParams() {
 			var params = mergeSearchAndHashParams();
-			var sid = params.get('storeId') || params.get('id') || '';
-			if (sid && !params.has('storeId')) {
-				params.set('storeId', sid);
+			var recordId = getCheckInRecordIdFromParams(params);
+			if (recordId) {
+				if (!params.has('id')) params.set('id', recordId);
+				if (!params.has('checkInId')) params.set('checkInId', recordId);
 			}
-			var qsOut = params.toString();
+			return params;
+		}
+
+		function buildAppOpenQueryStringMerged() {
+			var qsOut = buildCheckInAppOpenParams().toString();
 			return qsOut ? ('?' + qsOut) : '';
 		}
 
@@ -754,10 +772,15 @@
 		function buildWeChatLaunchExtinfo() {
 			var uniPage = buildAppUniPageLaunchUrl();
 			if (uniPage.length <= 1024) return uniPage;
-			var params = mergeSearchAndHashParams();
+			var params = buildCheckInAppOpenParams();
 			var mini = new URLSearchParams();
-			var storeId = params.get('storeId') || params.get('id') || '';
-			if (storeId) mini.set('storeId', storeId);
+			var recordId = getCheckInRecordIdFromParams(params);
+			if (recordId) {
+				mini.set('id', recordId);
+				mini.set('checkInId', recordId);
+			}
+			var storeId = params.get('storeId');
+			if (storeId) mini.set('storeId', String(storeId).trim());
 			var square = params.get('isShareCheckInSquare');
 			if (square != null && String(square).trim() !== '') {
 				mini.set('isShareCheckInSquare', String(square).trim());