feat:更新 README.md,修正短路径描述并添加运营商审核临时地址;在 main.js 中添加审核模式和默认好友链接数据;调整样式文件中头像大小和样式。

This commit is contained in:
Jafeng 2026-06-17 11:03:24 +08:00
parent 6ca0770bf6
commit 732e0d7a4a
3 changed files with 59 additions and 11 deletions

View File

@ -1,6 +1,8 @@
# YKT Friend Bridge H5 # YKT Friend Bridge H5
短信好友邀请中转页。发布包名为 `sms.zip`,默认短路径为 `/sms/{recordId}` 短信好友邀请中转页。发布包名为 `sms.zip`,默认短路径为 `/sms/{id}`
正式短信链接由后端生成随机短码,路径形态为 `/sms/{shortCode}`,例如 `/sms/K8q2Z`
## Local Dev ## Local Dev
@ -20,6 +22,14 @@ api_url=http://localhost:8080
http://localhost:5174/sms/{recordId} http://localhost:5174/sms/{recordId}
``` ```
运营商审核临时写死地址:
```text
https://ykt.youcan365.com/sms/7du4g
```
当前 `src/main.js` 开启 `REVIEW_MODE`,页面不请求后端接口,直接使用审核用好友链接数据。
本地服务端默认读取: 本地服务端默认读取:
```text ```text

View File

@ -13,6 +13,26 @@
friendMeta: document.getElementById("friendMeta"), 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 = ""; let scheme = "";
function normalizeText(value) { function normalizeText(value) {
@ -46,15 +66,20 @@
setStatus(""); setStatus("");
} }
function setAvatar(src, friendName, imageEl, fallbackEl) { function setAvatar(src, friendName, imageEl, fallbackEl, options = {}) {
const avatar = normalizeText(src); const avatar = normalizeText(src);
const fallbackAvatar = options.fallbackAvatar === false ? "" : DEFAULT_AVATAR;
if (fallbackEl === elements.primaryAvatarFallback) { if (fallbackEl === elements.primaryAvatarFallback) {
elements.primaryInitial.textContent = friendName.slice(0, 1) || "医"; elements.primaryInitial.textContent = friendName.slice(0, 1) || "医";
} }
fallbackEl.classList.remove("has-image"); fallbackEl.classList.remove("has-image");
imageEl.removeAttribute("src"); imageEl.removeAttribute("src");
fallbackEl.hidden = false;
if (!avatar) return; if (!avatar && !fallbackAvatar) {
fallbackEl.hidden = true;
return;
}
imageEl.onload = function () { imageEl.onload = function () {
fallbackEl.classList.add("has-image"); fallbackEl.classList.add("has-image");
}; };
@ -62,7 +87,7 @@
fallbackEl.classList.remove("has-image"); fallbackEl.classList.remove("has-image");
imageEl.removeAttribute("src"); imageEl.removeAttribute("src");
}; };
imageEl.src = avatar; imageEl.src = avatar || fallbackAvatar;
} }
function fillPage(data) { function fillPage(data) {
@ -83,7 +108,9 @@
elements.hintText.textContent = normalizeText(data.hintText) || "点击下方按钮,添加企业微信好友"; elements.hintText.textContent = normalizeText(data.hintText) || "点击下方按钮,添加企业微信好友";
elements.openButton.textContent = normalizeText(data.actionText) || "去 加 好 友"; elements.openButton.textContent = normalizeText(data.actionText) || "去 加 好 友";
setAvatar(friendAvatar || avatarList[0], friendName, elements.primaryAvatar, elements.primaryAvatarFallback); 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; elements.openButton.disabled = false;
scheme = normalizeText(data.scheme); scheme = normalizeText(data.scheme);
setStatus(""); setStatus("");
@ -96,6 +123,11 @@
return; return;
} }
if (REVIEW_MODE && recordId === REVIEW_RECORD_ID) {
fillPage(REVIEW_FRIEND_LINK_DATA);
return;
}
try { try {
const apiBase = getApiBase(); const apiBase = getApiBase();
if (!apiBase) { if (!apiBase) {

View File

@ -155,20 +155,26 @@ body {
.avatar-large { .avatar-large {
left: 0; left: 0;
top: 0; top: 0;
width: 36px; width: 72px;
height: 36px; height: 72px;
border-radius: 2px; border-radius: 6px;
background: #f4f5f7;
} }
.avatar-small { .avatar-small {
right: 0; right: 0;
bottom: 0; bottom: 0;
width: 36px; width: 28px;
height: 36px; height: 28px;
border-radius: 2px; border: 2px solid #fff;
border-radius: 50%;
background: linear-gradient(160deg, #d5e8ff, #48a0ff); background: linear-gradient(160deg, #d5e8ff, #48a0ff);
} }
.avatar-small[hidden] {
display: none;
}
.doctor-name { .doctor-name {
margin: 20px 0 0; margin: 20px 0 0;
color: #1d2129; color: #1d2129;