本项目小程序端已完成核心业务流程的开发与联调,主要覆盖了用户管理、健康监测、日程提醒、即时通讯及紧急预警五大模块。目前项目处于功能验收与细节优化阶段,核心功能闭环已打通,UI/UX 还原度达到设计稿 95% 以上,关键路径(如登录、WebSocket 连接、摔倒报警)稳定性经过多轮测试。
-
自定义 TabBar 架构:
- 功能:实现了全局统一的底部导航栏,支持动态选中态切换。
- 技术实现:采用微信小程序
custom-tab-bar组件机制,在app.json中声明全局组件。通过getTabBar().setData在各页面onShow生命周期中更新选中状态,解决了原生 TabBar 灵活性不足的问题。 - 亮点:将全局级组件(如摔倒预警弹窗)集成在 TabBar 中,确保在任意主页面均能响应紧急事件,非Tab页收到信息后也能强制转回首页进行弹窗,无需在每个页面重复引入组件。
-
WebSocket 全局通信机制:
- 功能:维持长连接,实时接收服务器推送(对话消息、摔倒报警)。
- 技术实现:在
app.js中封装connectWebSocketWithAutoRetry方法,实现了无感自动重连与心跳保活机制。 - 状态管理:使用
globalData维护ws实例,通过回调函数分发消息类型(msgType)。
- 功能:当后端检测到设备端上报摔倒事件时,小程序端强制弹出全屏红色警报,提供一键呼救功能。
- 技术实现:
- 组件化:开发
fall-warning组件,利用z-index: 10000和position: fixed实现最高层级遮罩,覆盖 Navbar 和 TabBar。 - 全局触发:在
app.js的 WebSocketonMessage中监听msgType == 1。 - 路由穿透:若用户处于非 Tab 页面(如二级详情页),逻辑强制跳转至首页 (
wx.switchTab),随后触发 TabBar 中的弹窗实例,确保警报必达。 - 计时器逻辑:组件内部维护独立的计时器状态,记录事故发生时长。
- 组件化:开发
- 功能:展示每日服药、运动等任务,支持打卡与状态流转。
- 技术实现:
- UI 交互:首页采用半屏弹窗 (PageContainer) 与 居中模态框 结合的形式,分别用于展示列表和添加/编辑任务。
- 逻辑处理:前端根据
nextExecuteTime和status字段,动态计算任务状态(未开始、已完成、已过期),并处理跨天任务的逻辑判断。
- 功能:用户可增删改查慢性病、手术史等信息。
- 技术实现:
- 动态表单:基于
currentHistoryType动态渲染不同的表单项(如手术史需要填写时间/医院,而过敏史仅需填写名称)。 - 数据清洗:针对后端返回的混合数据结构(部分字段为 JSON 字符串,部分为普通字符串),在
onShow阶段进行JSON.parse预处理,确保 WXML 渲染无误。 - CRUD 闭环:实现了完整的 RESTful API 对接(
GET /list,POST /add,POST /update,DELETE /delete)。
- 动态表单:基于
- 功能:与 AI 助手进行语音/文字交互。
- 技术实现:
- 即时通讯:复用全局 WebSocket 通道发送文本消息。
- 语音合成 (TTS):集成微信同声传译插件或后端 TTS 接口(根据具体实现调整),实现消息的语音播报。
- API 规范对接:
- 严格遵循 RESTful 风格,统一处理 HTTP 400/401/500 错误码。例如在病史编辑中,针对
/add和/update接口参数差异(diseaseTypevsid)进行了严格的参数校验适配。
- 严格遵循 RESTful 风格,统一处理 HTTP 400/401/500 错误码。例如在病史编辑中,针对
- 实时信令交互:
- 通过 WebSocket 协议定义了明确的消息类型(
msgType),实现了后端主动推送(摔倒报警)到前端被动响应的毫秒级联动。
- 通过 WebSocket 协议定义了明确的消息类型(
- 数据可视化展示:
- 小程序端通过 ECharts 组件(
ec-canvas)接收并渲染由硬件端上报的情绪数据,实现了硬件采集 -> 后端存储 -> 小程序展示的数据链路。
- 小程序端通过 ECharts 组件(
- 紧急事件响应:
- 硬件端检测到摔倒 -> 上报服务器 -> 服务器推送 WebSocket -> 小程序端弹出警报。这一链路打通了物理世界与数字终端的交互闭环。