diff --git a/README.md b/README.md index 79dd69e..d68002b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # YKT Friend Bridge H5 -短信好友邀请中转页。发布包名为 `sms.zip`,默认短路径为 `/sms/{recordId}`。 +短信好友邀请中转页。发布包名为 `sms.zip`,默认短路径为 `/sms/{id}`。 + +正式短信链接由后端生成随机短码,路径形态为 `/sms/{shortCode}`,例如 `/sms/K8q2Z`。 ## Local Dev @@ -20,6 +22,14 @@ api_url=http://localhost:8080 http://localhost:5174/sms/{recordId} ``` +运营商审核临时写死地址: + +```text +https://ykt.youcan365.com/sms/7du4g +``` + +当前 `src/main.js` 开启 `REVIEW_MODE`,页面不请求后端接口,直接使用审核用好友链接数据。 + 本地服务端默认读取: ```text diff --git a/src/main.js b/src/main.js index 9511bbb..033167a 100644 --- a/src/main.js +++ b/src/main.js @@ -13,6 +13,26 @@ friendMeta: document.getElementById("friendMeta"), }; + const DEFAULT_AVATAR = "/sms/assets/default-avatar.png"; + const REVIEW_MODE = true; + const REVIEW_RECORD_ID = "7du4g"; + const REVIEW_FRIEND_LINK_DATA = { + id: REVIEW_RECORD_ID, + corpId: "wwe3fb2faa52cf9dfb", + friendUserId: "huangjiafeng", + friendName: "黄医生", + corpName: "患者精益管理服务平台", + title: "添加好友", + actionText: "去 加 好 友", + hintText: "点击下方按钮,添加企业微信好友", + path: "pages/team/friend", + query: "corpId=wwe3fb2faa52cf9dfb&userid=huangjiafeng", + scheme: "weixin://dl/business/?t=IwNKzYOXnRo", + status: "success", + createTime: 1780540926600, + updateTime: 1780540927442, + }; + let scheme = ""; function normalizeText(value) { @@ -46,15 +66,20 @@ setStatus(""); } - function setAvatar(src, friendName, imageEl, fallbackEl) { + function setAvatar(src, friendName, imageEl, fallbackEl, options = {}) { const avatar = normalizeText(src); + const fallbackAvatar = options.fallbackAvatar === false ? "" : DEFAULT_AVATAR; if (fallbackEl === elements.primaryAvatarFallback) { elements.primaryInitial.textContent = friendName.slice(0, 1) || "医"; } fallbackEl.classList.remove("has-image"); imageEl.removeAttribute("src"); + fallbackEl.hidden = false; - if (!avatar) return; + if (!avatar && !fallbackAvatar) { + fallbackEl.hidden = true; + return; + } imageEl.onload = function () { fallbackEl.classList.add("has-image"); }; @@ -62,7 +87,7 @@ fallbackEl.classList.remove("has-image"); imageEl.removeAttribute("src"); }; - imageEl.src = avatar; + imageEl.src = avatar || fallbackAvatar; } function fillPage(data) { @@ -83,7 +108,9 @@ elements.hintText.textContent = normalizeText(data.hintText) || "点击下方按钮,添加企业微信好友"; elements.openButton.textContent = normalizeText(data.actionText) || "去 加 好 友"; setAvatar(friendAvatar || avatarList[0], friendName, elements.primaryAvatar, elements.primaryAvatarFallback); - setAvatar(secondaryAvatar, "患", elements.secondaryAvatar, elements.secondaryAvatarFallback); + setAvatar(secondaryAvatar, "患", elements.secondaryAvatar, elements.secondaryAvatarFallback, { + fallbackAvatar: false, + }); elements.openButton.disabled = false; scheme = normalizeText(data.scheme); setStatus(""); @@ -96,6 +123,11 @@ return; } + if (REVIEW_MODE && recordId === REVIEW_RECORD_ID) { + fillPage(REVIEW_FRIEND_LINK_DATA); + return; + } + try { const apiBase = getApiBase(); if (!apiBase) { diff --git a/src/styles.css b/src/styles.css index 868b7c5..0606f97 100644 --- a/src/styles.css +++ b/src/styles.css @@ -155,20 +155,26 @@ body { .avatar-large { left: 0; top: 0; - width: 36px; - height: 36px; - border-radius: 2px; + width: 72px; + height: 72px; + border-radius: 6px; + background: #f4f5f7; } .avatar-small { right: 0; bottom: 0; - width: 36px; - height: 36px; - border-radius: 2px; + width: 28px; + height: 28px; + border: 2px solid #fff; + border-radius: 50%; background: linear-gradient(160deg, #d5e8ff, #48a0ff); } +.avatar-small[hidden] { + display: none; +} + .doctor-name { margin: 20px 0 0; color: #1d2129;