|
|
@@ -411,7 +411,7 @@
|
|
|
opacity: 0.2;
|
|
|
}
|
|
|
|
|
|
- /* deleteFlag=1:与 shareIndex 关店区一致 — 顶部已删除 + empty.png + 更多推荐 */
|
|
|
+ /* deleteFlag=1:与 shareIndex 关店区一致 — 顶部已删除 + empty.png */
|
|
|
.share-checkin-deleted-root {
|
|
|
min-height: 40vh;
|
|
|
}
|
|
|
@@ -438,122 +438,6 @@
|
|
|
font-weight: 600;
|
|
|
color: #989898;
|
|
|
}
|
|
|
-
|
|
|
- .closed-rec-divider {
|
|
|
- height: 8px;
|
|
|
- background: #F7F7F7;
|
|
|
- margin: 0;
|
|
|
- }
|
|
|
-
|
|
|
- .closed-rec-title {
|
|
|
- padding: 8px 15px 12px;
|
|
|
- font-size: 16px;
|
|
|
- font-weight: 700;
|
|
|
- }
|
|
|
-
|
|
|
- .closed-rec-grid {
|
|
|
- display: grid;
|
|
|
- grid-template-columns: repeat(2, 1fr);
|
|
|
- gap: 10px;
|
|
|
- padding: 0 15px 20px;
|
|
|
- }
|
|
|
-
|
|
|
- #checkInDeletedRecEmpty {
|
|
|
- grid-column: 1 / -1;
|
|
|
- }
|
|
|
-
|
|
|
- .closed-rec-empty {
|
|
|
- padding: 12px;
|
|
|
- color: var(--text-secondary);
|
|
|
- font-size: 14px;
|
|
|
- }
|
|
|
-
|
|
|
- .closed-rec-card {
|
|
|
- min-width: 0;
|
|
|
- background: #fff;
|
|
|
- border-radius: 10px;
|
|
|
- overflow: hidden;
|
|
|
- box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);
|
|
|
- }
|
|
|
-
|
|
|
- .closed-rec-card__img {
|
|
|
- aspect-ratio: 4 / 3;
|
|
|
- background: #eee;
|
|
|
- }
|
|
|
-
|
|
|
- .closed-rec-card__img img {
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
- object-fit: cover;
|
|
|
- display: block;
|
|
|
- border-radius: 0;
|
|
|
- }
|
|
|
-
|
|
|
- .closed-rec-card__body {
|
|
|
- padding: 10px;
|
|
|
- }
|
|
|
-
|
|
|
- .closed-rec-card__top {
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- align-items: baseline;
|
|
|
- gap: 8px;
|
|
|
- margin-bottom: 6px;
|
|
|
- }
|
|
|
-
|
|
|
- .closed-rec-card__name {
|
|
|
- font-size: 15px;
|
|
|
- font-weight: 700;
|
|
|
- flex: 1;
|
|
|
- min-width: 0;
|
|
|
- overflow: hidden;
|
|
|
- text-overflow: ellipsis;
|
|
|
- white-space: nowrap;
|
|
|
- }
|
|
|
-
|
|
|
- .closed-rec-card__dist {
|
|
|
- font-size: 12px;
|
|
|
- color: var(--text-secondary);
|
|
|
- flex-shrink: 0;
|
|
|
- }
|
|
|
-
|
|
|
- .closed-rec-card__rating {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- flex-wrap: wrap;
|
|
|
- gap: 4px 6px;
|
|
|
- }
|
|
|
-
|
|
|
- .closed-rec-card__rating .closed-rec-stars {
|
|
|
- display: inline-flex;
|
|
|
- align-items: center;
|
|
|
- gap: 2px;
|
|
|
- }
|
|
|
-
|
|
|
- .closed-rec-card__rating .closed-rec-star {
|
|
|
- display: block;
|
|
|
- flex-shrink: 0;
|
|
|
- }
|
|
|
-
|
|
|
- .closed-rec-rating-num {
|
|
|
- font-size: 12px;
|
|
|
- font-weight: 600;
|
|
|
- color: var(--orange);
|
|
|
- }
|
|
|
-
|
|
|
- .closed-rec-meta {
|
|
|
- font-size: 12px;
|
|
|
- color: var(--text-secondary);
|
|
|
- }
|
|
|
-
|
|
|
- .closed-rec-card__footer {
|
|
|
- margin-top: 8px;
|
|
|
- font-size: 12px;
|
|
|
- color: var(--text-secondary);
|
|
|
- overflow: hidden;
|
|
|
- text-overflow: ellipsis;
|
|
|
- white-space: nowrap;
|
|
|
- }
|
|
|
</style>
|
|
|
</head>
|
|
|
<body class="page-checkin">
|
|
|
@@ -563,11 +447,6 @@
|
|
|
<img src="images/empty.png" alt="" decoding="async">
|
|
|
<p class="checkin-deleted-top__text">内容已删除</p>
|
|
|
</section>
|
|
|
- <div class="closed-rec-divider"></div>
|
|
|
- <h3 class="closed-rec-title">更多推荐</h3>
|
|
|
- <div class="closed-rec-grid" id="checkInDeletedRecList">
|
|
|
- <p id="checkInDeletedRecEmpty" class="closed-rec-empty" style="display:none;">暂无推荐</p>
|
|
|
- </div>
|
|
|
</div>
|
|
|
|
|
|
<div id="shareCheckInNormalRoot">
|
|
|
@@ -667,7 +546,7 @@
|
|
|
</style>
|
|
|
<button class="wx-open-app-btn" aria-label="APP内打开">
|
|
|
<span class="fab__brand-clip" aria-hidden="true">
|
|
|
- <img class="fab__brand-img" src="https://test.ailien.shop/h5/HBuilderProjects/images/uBtn.svg" alt="" decoding="async">
|
|
|
+ <img class="fab__brand-img" src="https://prod.ailien.shop/h5/HBuilderProjects/images/uBtn.svg" alt="" decoding="async">
|
|
|
</span>
|
|
|
<span class="fab__label">APP内打开</span>
|
|
|
</button>
|
|
|
@@ -691,7 +570,7 @@
|
|
|
var APP_UNI_STORE_PATH = 'pages/checkIn/index';
|
|
|
|
|
|
/** 与 shareUndefined.html 一致 */
|
|
|
- var API_BASE = 'https://test.ailien.shop/alienStore';
|
|
|
+ var API_BASE = 'https://prod.ailien.shop/alienStore';
|
|
|
|
|
|
/**
|
|
|
* 微信 JSSDK — 与 shareIndex.html 一致
|
|
|
@@ -700,9 +579,9 @@
|
|
|
var WECHAT_MP_APP_ID = 'wx412792c77f47babd';
|
|
|
var WECHAT_OPEN_APP_ID = 'wxf5f1efe3a9f5012e';
|
|
|
var WECHAT_GET_WX_CONFIG_PATH = '/wx/getWxConfig';
|
|
|
- var H5_PAGE_BASE_FALLBACK = 'https://test.ailien.shop/h5/HBuilderProjects/';
|
|
|
+ var H5_PAGE_BASE_FALLBACK = 'https://prod.ailien.shop/h5/HBuilderProjects/';
|
|
|
var WX_GET_CONFIG_SIGN_URL = H5_PAGE_BASE_FALLBACK + 'shareCheckIn.html';
|
|
|
- var WECHAT_JS_SAFE_HOSTS = ['uat.ailien.shop', 'test.ailien.shop'];
|
|
|
+ var WECHAT_JS_SAFE_HOSTS = ['uat.ailien.shop', 'prod.ailien.shop'];
|
|
|
var weChatJssdkConfigured = false;
|
|
|
var wxConfigSignRetriedBaseUrl = false;
|
|
|
var wxInitLastError = '';
|
|
|
@@ -1430,7 +1309,7 @@
|
|
|
return v2 == null ? '' : String(v2).trim();
|
|
|
}
|
|
|
|
|
|
- /** getDeleteFlagById:data.deleteFlag 为 1 时本页展示「内容已删除 + 更多推荐」(与 shareIndex 关店态一致) */
|
|
|
+ /** getDeleteFlagById:data.deleteFlag 为 1 时本页展示「内容已删除」(与 shareIndex 关店态一致) */
|
|
|
function isShareCheckInDeletedByDeleteFlag(res) {
|
|
|
if (!res || typeof res !== 'object') return false;
|
|
|
var d = res.data;
|
|
|
@@ -1494,385 +1373,6 @@
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- /** 与 shareIndex.html 关店「更多推荐」:POST 全局店铺推荐 */
|
|
|
- var API_LIFE_AI_BASE = 'http://183.252.196.135:9100';
|
|
|
- var STORE_GLOBAL_RECOMMEND_PATH =
|
|
|
- '/ai/multimodal-services/api/v1/search/global/store-recommend';
|
|
|
- var FALLBACK_REC_USER_LAT = 38.925749;
|
|
|
- var FALLBACK_REC_USER_LNG = 121.662531;
|
|
|
- var FALLBACK_REC_USER_CITY = '大连市';
|
|
|
- var cachedRecUserLoc = null;
|
|
|
- var ensureRecommendLocPromise = null;
|
|
|
-
|
|
|
- function getCityFromReverseGeocodeClient(lat, lng) {
|
|
|
- var u =
|
|
|
- 'https://api.bigdatacloud.net/data/reverse-geocode-client?latitude=' +
|
|
|
- encodeURIComponent(lat) +
|
|
|
- '&longitude=' +
|
|
|
- encodeURIComponent(lng) +
|
|
|
- '&localityLanguage=zh';
|
|
|
- return fetch(u, {
|
|
|
- method: 'GET',
|
|
|
- mode: 'cors',
|
|
|
- credentials: 'omit',
|
|
|
- headers: { Accept: 'application/json' }
|
|
|
- })
|
|
|
- .then(function (res) {
|
|
|
- if (!res.ok) throw new Error('HTTP ' + res.status);
|
|
|
- return res.json();
|
|
|
- })
|
|
|
- .then(function (j) {
|
|
|
- if (!j || typeof j !== 'object') return '';
|
|
|
- return (
|
|
|
- (j.city != null && String(j.city).trim()) ||
|
|
|
- (j.locality != null && String(j.locality).trim()) ||
|
|
|
- (j.principalSubdivision != null && String(j.principalSubdivision).trim()) ||
|
|
|
- ''
|
|
|
- );
|
|
|
- })
|
|
|
- .catch(function () {
|
|
|
- return '';
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- function tryIpApproxLocationThen(finish) {
|
|
|
- fetch('https://get.geojs.io/v1/ip/geo.json', {
|
|
|
- method: 'GET',
|
|
|
- mode: 'cors',
|
|
|
- credentials: 'omit',
|
|
|
- headers: { Accept: 'application/json' }
|
|
|
- })
|
|
|
- .then(function (res) {
|
|
|
- if (!res.ok) throw new Error('HTTP ' + res.status);
|
|
|
- return res.json();
|
|
|
- })
|
|
|
- .then(function (data) {
|
|
|
- var lat = parseFloat(data.latitude);
|
|
|
- var lng = parseFloat(data.longitude);
|
|
|
- var city = data.city != null ? String(data.city).trim() : '';
|
|
|
- if (!isNaN(lat) && !isNaN(lng)) {
|
|
|
- finish({ lat: lat, lng: lng, city: city || FALLBACK_REC_USER_CITY });
|
|
|
- } else {
|
|
|
- finish({
|
|
|
- lat: FALLBACK_REC_USER_LAT,
|
|
|
- lng: FALLBACK_REC_USER_LNG,
|
|
|
- city: FALLBACK_REC_USER_CITY
|
|
|
- });
|
|
|
- }
|
|
|
- })
|
|
|
- .catch(function () {
|
|
|
- finish({
|
|
|
- lat: FALLBACK_REC_USER_LAT,
|
|
|
- lng: FALLBACK_REC_USER_LNG,
|
|
|
- city: FALLBACK_REC_USER_CITY
|
|
|
- });
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- function tryGpsThenIpForRecommendLoc(finish) {
|
|
|
- if (!navigator.geolocation || typeof navigator.geolocation.getCurrentPosition !== 'function') {
|
|
|
- tryIpApproxLocationThen(finish);
|
|
|
- return;
|
|
|
- }
|
|
|
- navigator.geolocation.getCurrentPosition(
|
|
|
- function (pos) {
|
|
|
- var lat = pos.coords.latitude;
|
|
|
- var lng = pos.coords.longitude;
|
|
|
- getCityFromReverseGeocodeClient(lat, lng).then(function (city) {
|
|
|
- finish({ lat: lat, lng: lng, city: city || FALLBACK_REC_USER_CITY });
|
|
|
- });
|
|
|
- },
|
|
|
- function () {
|
|
|
- tryIpApproxLocationThen(finish);
|
|
|
- },
|
|
|
- { enableHighAccuracy: false, timeout: 12000, maximumAge: 600000 }
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
- function ensureRecommendUserLocation() {
|
|
|
- if (cachedRecUserLoc) return Promise.resolve(cachedRecUserLoc);
|
|
|
- if (ensureRecommendLocPromise) return ensureRecommendLocPromise;
|
|
|
- ensureRecommendLocPromise = new Promise(function (resolve) {
|
|
|
- tryGpsThenIpForRecommendLoc(function (loc) {
|
|
|
- cachedRecUserLoc = loc;
|
|
|
- resolve(loc);
|
|
|
- });
|
|
|
- });
|
|
|
- return ensureRecommendLocPromise;
|
|
|
- }
|
|
|
-
|
|
|
- var CLOSED_REC_STAR_PATH =
|
|
|
- 'M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z';
|
|
|
-
|
|
|
- function closedRecEscHtml(s) {
|
|
|
- return String(s == null ? '': s)
|
|
|
- .replace(/&/g, '&')
|
|
|
- .replace(/</g, '<')
|
|
|
- .replace(/>/g, '>')
|
|
|
- .replace(/"/g, '"');
|
|
|
- }
|
|
|
-
|
|
|
- function closedRecStarsHtml(score) {
|
|
|
- var s = Number(score);
|
|
|
- if (isNaN(s)) s = 0;
|
|
|
- s = Math.max(0, Math.min(5, s));
|
|
|
- var rounded = Math.round(s);
|
|
|
- var parts = [];
|
|
|
- for (var i = 1; i <= 5; i++) {
|
|
|
- var fill = i <= rounded ? '#F58220' : '#E5E5E5';
|
|
|
- parts.push(
|
|
|
- '<svg class="closed-rec-star" width="11" height="11" viewBox="0 0 24 24" aria-hidden="true">' +
|
|
|
- '<path fill="' +
|
|
|
- fill +
|
|
|
- '" d="' +
|
|
|
- CLOSED_REC_STAR_PATH +
|
|
|
- '"/></svg>'
|
|
|
- );
|
|
|
- }
|
|
|
- return '<span class="closed-rec-stars">' + parts.join('') + '</span>';
|
|
|
- }
|
|
|
-
|
|
|
- function closedRecFormatDistance(item) {
|
|
|
- if (item.distance != null && item.distance !== '') {
|
|
|
- var km = Number(item.distance);
|
|
|
- if (!isNaN(km) && km >= 0) return Math.round(km * 1000) + '米';
|
|
|
- return String(item.distance).trim();
|
|
|
- }
|
|
|
- if (item.position != null && String(item.position).trim() !== '') {
|
|
|
- return String(item.position).trim();
|
|
|
- }
|
|
|
- if (item.dist != null && item.dist !== '') {
|
|
|
- var dn = Number(item.dist);
|
|
|
- if (!isNaN(dn)) {
|
|
|
- return dn >= 1 ? dn.toFixed(dn % 1 === 0 ? 0 : 1) + 'km' : Math.round(dn * 1000) + '米';
|
|
|
- }
|
|
|
- }
|
|
|
- return '';
|
|
|
- }
|
|
|
-
|
|
|
- function closedRecPickScore(item) {
|
|
|
- var x =
|
|
|
- item.scoreAvg != null
|
|
|
- ? Number(item.scoreAvg)
|
|
|
- : item.score != null
|
|
|
- ? Number(item.score)
|
|
|
- : item.rating != null
|
|
|
- ? Number(item.rating)
|
|
|
- : item.starScore != null
|
|
|
- ? Number(item.starScore)
|
|
|
- : NaN;
|
|
|
- return isNaN(x) ? null : x;
|
|
|
- }
|
|
|
-
|
|
|
- function closedRecPickReviewCount(item) {
|
|
|
- var n =
|
|
|
- item.commitCount != null
|
|
|
- ? Number(item.commitCount)
|
|
|
- : item.commentCount != null
|
|
|
- ? Number(item.commentCount)
|
|
|
- : item.reviewCount != null
|
|
|
- ? Number(item.reviewCount)
|
|
|
- : item.evaluateCount != null
|
|
|
- ? Number(item.evaluateCount)
|
|
|
- : NaN;
|
|
|
- return isNaN(n) ? 0 : Math.max(0, Math.floor(n));
|
|
|
- }
|
|
|
-
|
|
|
- function normalizeClosedStoreRecommendList(res) {
|
|
|
- if (!res || typeof res !== 'object') return [];
|
|
|
- var raw = res.data != null ? res.data : res.result;
|
|
|
- if (Array.isArray(raw)) return raw;
|
|
|
- if (raw && typeof raw === 'object') {
|
|
|
- if (Array.isArray(raw.list)) return raw.list;
|
|
|
- if (Array.isArray(raw.records)) return raw.records;
|
|
|
- if (Array.isArray(raw.rows)) return raw.rows;
|
|
|
- if (Array.isArray(raw.content)) return raw.content;
|
|
|
- if (Array.isArray(raw.stores)) return raw.stores;
|
|
|
- if (Array.isArray(raw.storeList)) return raw.storeList;
|
|
|
- if (Array.isArray(raw.storeVos)) return raw.storeVos;
|
|
|
- if (Array.isArray(raw.items)) return raw.items;
|
|
|
- }
|
|
|
- if (Array.isArray(res.list)) return res.list;
|
|
|
- if (Array.isArray(res.records)) return res.records;
|
|
|
- return [];
|
|
|
- }
|
|
|
-
|
|
|
- /** 逆地理等偶发日文/繁体「連」→ 简体「连」(如 大連市 → 大连市) */
|
|
|
- function normalizeRecommendUserCityToZhCn(city) {
|
|
|
- var s = String(city == null ? '' : city).trim();
|
|
|
- if (!s || s === 'undefined') return '';
|
|
|
- return s.replace(/連/g, '连');
|
|
|
- }
|
|
|
-
|
|
|
- function fetchCheckInDeletedStoreRecommend(storeIdStr) {
|
|
|
- var latRaw = (
|
|
|
- mergedQ('userLat') ||
|
|
|
- mergedQ('latitude') ||
|
|
|
- mergedQ('lat') ||
|
|
|
- mergedQ('weidu')
|
|
|
- ).trim();
|
|
|
- var lngRaw = (
|
|
|
- mergedQ('userLng') ||
|
|
|
- mergedQ('longitude') ||
|
|
|
- mergedQ('lon') ||
|
|
|
- mergedQ('jingdu')
|
|
|
- ).trim();
|
|
|
- var userCityRaw = (mergedQ('userCity') || mergedQ('city')).trim();
|
|
|
- var page = parseInt(mergedQ('page') || q('page') || '1', 10);
|
|
|
- var pageSize = parseInt(mergedQ('pageSize') || q('pageSize') || '10', 10);
|
|
|
- if (isNaN(page) || page < 1) page = 1;
|
|
|
- if (isNaN(pageSize) || pageSize < 1) pageSize = 10;
|
|
|
-
|
|
|
- function postRecommend(userLat, userLng, userCity) {
|
|
|
- var cityZh = normalizeRecommendUserCityToZhCn(userCity);
|
|
|
- if (!cityZh) cityZh = FALLBACK_REC_USER_CITY;
|
|
|
- var body = {
|
|
|
- page: page,
|
|
|
- pageSize: pageSize,
|
|
|
- storeId: String(storeIdStr || ''),
|
|
|
- userCity: cityZh,
|
|
|
- userLat: userLat,
|
|
|
- userLng: userLng
|
|
|
- };
|
|
|
- return fetch(API_LIFE_AI_BASE + STORE_GLOBAL_RECOMMEND_PATH, {
|
|
|
- method: 'POST',
|
|
|
- mode: 'cors',
|
|
|
- credentials: 'omit',
|
|
|
- headers: {
|
|
|
- Accept: 'application/json',
|
|
|
- 'Content-Type': 'application/json;charset=UTF-8'
|
|
|
- },
|
|
|
- body: JSON.stringify(body)
|
|
|
- }).then(function (res) {
|
|
|
- if (!res.ok) throw new Error('HTTP ' + res.status);
|
|
|
- return res.json();
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- var hasUrlCoords =
|
|
|
- latRaw !== '' && !isNaN(Number(latRaw)) && lngRaw !== '' && !isNaN(Number(lngRaw));
|
|
|
- if (hasUrlCoords) {
|
|
|
- var ul = Number(latRaw);
|
|
|
- var ug = Number(lngRaw);
|
|
|
- if (userCityRaw !== '') return postRecommend(ul, ug, userCityRaw);
|
|
|
- return getCityFromReverseGeocodeClient(ul, ug).then(function (city) {
|
|
|
- return postRecommend(ul, ug, city || FALLBACK_REC_USER_CITY);
|
|
|
- });
|
|
|
- }
|
|
|
- return ensureRecommendUserLocation().then(function (loc) {
|
|
|
- var city = userCityRaw !== '' ? userCityRaw : loc.city;
|
|
|
- return postRecommend(loc.lat, loc.lng, city);
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- function renderCheckInDeletedRecommended(list) {
|
|
|
- var wrap = document.getElementById('checkInDeletedRecList');
|
|
|
- var empty = document.getElementById('checkInDeletedRecEmpty');
|
|
|
- if (!wrap || !empty) return;
|
|
|
- wrap.querySelectorAll('.closed-rec-card').forEach(function (n) {
|
|
|
- n.remove();
|
|
|
- });
|
|
|
- if (!list || !list.length) {
|
|
|
- empty.style.display = 'block';
|
|
|
- return;
|
|
|
- }
|
|
|
- empty.style.display = 'none';
|
|
|
- list.forEach(function (item) {
|
|
|
- if (!item || typeof item !== 'object') return;
|
|
|
- var imgUrlField = item.imgUrl != null ? String(item.imgUrl).trim() : '';
|
|
|
- var home = item.homeImage != null ? String(item.homeImage).trim() : '';
|
|
|
- if (home && /\.mp4(\?|#|$)/i.test(home)) {
|
|
|
- var vf = item.videoFirstFrame != null ? String(item.videoFirstFrame).trim() : '';
|
|
|
- if (vf) home = vf;
|
|
|
- }
|
|
|
- var imgUrl =
|
|
|
- imgUrlField ||
|
|
|
- home ||
|
|
|
- (item.coverUrl != null ? String(item.coverUrl).trim() : '') ||
|
|
|
- (item.mainImage != null ? String(item.mainImage).trim() : '') ||
|
|
|
- (item.goodsImage != null ? String(item.goodsImage).trim() : '') ||
|
|
|
- (item.entranceImage != null ? String(item.entranceImage).trim() : '') ||
|
|
|
- (Array.isArray(item.goodsImageList) && item.goodsImageList[0]) ||
|
|
|
- (Array.isArray(item.imageList) && item.imageList[0]) ||
|
|
|
- (Array.isArray(item.storeAlbumUrlList) && item.storeAlbumUrlList[0]) ||
|
|
|
- '';
|
|
|
- var name =
|
|
|
- item.title != null && String(item.title).trim() !== ''
|
|
|
- ? String(item.title).replace(/\r?\n/g, ' ').replace(/\s+/g, ' ').trim()
|
|
|
- : item.storeName ||
|
|
|
- item.goodsName ||
|
|
|
- item.secondGoodsTitle ||
|
|
|
- item.name ||
|
|
|
- '推荐';
|
|
|
- var dist = closedRecFormatDistance(item);
|
|
|
- var scoreVal = closedRecPickScore(item);
|
|
|
- var displayScore = scoreVal != null ? scoreVal.toFixed(1) : '—';
|
|
|
- var starScore = scoreVal != null ? scoreVal : 0;
|
|
|
- var rc = closedRecPickReviewCount(item);
|
|
|
- var reviewLabel = rc > 0 ? rc + '条评价' : '';
|
|
|
- var seller =
|
|
|
- item.userName != null && String(item.userName).trim() !== ''
|
|
|
- ? String(item.userName).trim()
|
|
|
- : item.nickName != null && String(item.nickName).trim() !== ''
|
|
|
- ? String(item.nickName).trim()
|
|
|
- : '';
|
|
|
- var card = document.createElement('article');
|
|
|
- card.className = 'closed-rec-card';
|
|
|
- card.innerHTML =
|
|
|
- '<div class="closed-rec-card__img"><img class="closed-rec-card__cover" src="" alt="" decoding="async"></div>' +
|
|
|
- '<div class="closed-rec-card__body">' +
|
|
|
- '<div class="closed-rec-card__top">' +
|
|
|
- '<span class="closed-rec-card__name">' +
|
|
|
- closedRecEscHtml(name) +
|
|
|
- '</span>' +
|
|
|
- (dist ? '<span class="closed-rec-card__dist">' + closedRecEscHtml(dist) + '</span>' : '') +
|
|
|
- '</div>' +
|
|
|
- '<div class="closed-rec-card__rating">' +
|
|
|
- closedRecStarsHtml(starScore) +
|
|
|
- '<span class="closed-rec-rating-num">' +
|
|
|
- closedRecEscHtml(displayScore) +
|
|
|
- '</span>' +
|
|
|
- (reviewLabel
|
|
|
- ? '<span class="closed-rec-meta">' + closedRecEscHtml(reviewLabel) + '</span>'
|
|
|
- : '') +
|
|
|
- '</div>' +
|
|
|
- (seller ? '<div class="closed-rec-card__footer">' + closedRecEscHtml(seller) + '</div>' : '') +
|
|
|
- '</div>';
|
|
|
- var coverIm = card.querySelector('img.closed-rec-card__cover');
|
|
|
- if (coverIm) {
|
|
|
- coverIm.src = imgUrl;
|
|
|
- coverIm.onerror = function () {
|
|
|
- this.onerror = null;
|
|
|
- this.src = '';
|
|
|
- };
|
|
|
- }
|
|
|
- wrap.appendChild(card);
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- function loadCheckInDeletedRecommendations() {
|
|
|
- var sid =
|
|
|
- mergedQ('storeId') ||
|
|
|
- mergedQ('id') ||
|
|
|
- '';
|
|
|
- if (!sid) {
|
|
|
- renderCheckInDeletedRecommended([]);
|
|
|
- return;
|
|
|
- }
|
|
|
- fetchCheckInDeletedStoreRecommend(sid)
|
|
|
- .then(function (res) {
|
|
|
- var list = normalizeClosedStoreRecommendList(res);
|
|
|
- if (!list.length && res && res.msg) {
|
|
|
- console.warn('[store-recommend]', res.msg);
|
|
|
- }
|
|
|
- renderCheckInDeletedRecommended(list);
|
|
|
- })
|
|
|
- .catch(function (e) {
|
|
|
- console.warn(e);
|
|
|
- renderCheckInDeletedRecommended([]);
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
function applyCheckInDeletedByDeleteFlagUi() {
|
|
|
var delRoot = document.getElementById('shareCheckInDeletedRoot');
|
|
|
var normRoot = document.getElementById('shareCheckInNormalRoot');
|
|
|
@@ -1884,7 +1384,6 @@
|
|
|
normRoot.style.display = 'none';
|
|
|
normRoot.setAttribute('aria-hidden', 'true');
|
|
|
}
|
|
|
- loadCheckInDeletedRecommendations();
|
|
|
}
|
|
|
|
|
|
function tryDecode(s) {
|