feat: 会员管理、在线复诊优化、新增配送仓库

This commit is contained in:
李琦
2026-07-20 13:50:03 +08:00
parent cb290f3e95
commit b0e9dfe2a3
11 changed files with 1293 additions and 57 deletions

29
App.vue
View File

@@ -100,6 +100,9 @@
if (uni.getStorageSync('token') && !isWebSocketConnected()) {
this.initWebSocketConnection();
}
// 检测拨号返回:详情页 onCallbackCall 调用 makePhoneCall 前写入了 pendingCallback
// 回到小程序时广播给当前详情页/抽屉组件,由其自动弹回访表单
this.checkPendingCallback();
},
onHide: function() {
// 应用隐藏时不断开WebSocket保持连接以便接收消息
@@ -120,6 +123,32 @@
initWebSocket();
}
},
/**
* 检测从拨号返回小程序的场景
* 就诊人详情点击"回访"时写入 pendingCallbackupId/phone/ts
* 用户回到小程序时若 5 分钟内有效,则广播事件触发回访表单抽屉,
* 之后立即清除 storage 标记,避免下次 onShow 重复弹窗
*/
checkPendingCallback() {
let payload = null;
try {
payload = uni.getStorageSync('pendingCallback');
} catch (e) {
payload = null;
}
if (!payload || typeof payload !== 'object') return;
const now = Date.now();
const ts = Number(payload.ts) || 0;
// 时间窗 5 分钟:避免误判;超时直接丢弃
if (ts && now - ts > 5 * 60 * 1000) {
try { uni.removeStorageSync('pendingCallback'); } catch (e) { /* ignore */ }
return;
}
// 广播后清理,由当前可见的详情页/抽屉组件接收处理
try { uni.removeStorageSync('pendingCallback'); } catch (e) { /* ignore */ }
uni.$emit('patient:callbackReturned', payload);
},
async getInfo() {