feat: 电子药箱小程序 - 4Tab药品管理

- 电子药箱: 药品库存管理 + 手动录入 + 今日用药打卡
- 药品百科: 搜索 + 分类筛选 + 20种药品静态数据
- 惠教中心: 4条药品使用指南课程
- 我的: 家庭成员信息管理
- 自定义TabBar + navigation-bar组件
- SVG药品分类插图
This commit is contained in:
陈誉午
2026-07-29 11:20:52 +08:00
commit 994b267f5c
683 changed files with 43849 additions and 0 deletions
@@ -0,0 +1 @@
"use strict";Component({properties:{img:{type:String,value:""},isPopup:{type:Boolean,value:!1},text:{type:String,value:""},timeOverText:{type:String,value:""},current:{type:Object,value:null},useLightTheme:{type:Boolean,value:!1}},data:{},lifetimes:{attached:function(){}},observers:{},methods:{onClose:function(){this.triggerEvent("onClose")},onClick:function(){this.triggerEvent("onClick")}}});
@@ -0,0 +1 @@
{"component":true,"usingComponents":{"count-down":"../count-down/count-down","mp-icon":"weui-miniprogram/icon/icon"}}
@@ -0,0 +1,14 @@
<view class="floating-icon {{isPopup ? 'floating-icon-popup' : ''}} {{useLightTheme ? 'floating-icon-light' : ''}}" style="{{style}}">
<view class="top-wrap">
<view class="ad-content" bindtap="onClick">
<image mode="aspectFit" src="{{img}}" />
</view>
<view wx:if="{{!isPopup && current.AllowCloseIcon !== false}}" class="close-icon" bindtap="onClose">
<mp-icon icon="close" color="white" size="{{12}}" class="close" type="field"></mp-icon>
</view>
</view>
<view class="icon-text" bindtap="onClick">
<count-down wx:if="{{ text === 'showCountDown' }}" sendTime="{{current.SendTime}}" deadLine="{{current.Deadline || current.DeadLine}}" deadLineSecond="{{current.DeadlineSecond || current.DeadLineSecond}}" timeOverText="{{timeOverText}}" />
<view wx:else class="status-tip">{{text}}</view>
</view>
</view>
@@ -0,0 +1 @@
.floating-icon{position:relative;height:calc(88rpx + .5 * (1rem - 16px));width:calc(88rpx + .5 * (1rem - 16px));min-height:calc(88rpx + .5 * (1rem - 16px));min-width:calc(88rpx + .5 * (1rem - 16px));transition:width .5s,height .5s;background:rgba(0,0,0,.2);border:1rpx solid rgba(255,255,255,.1);backdrop-filter:blur(4rpx);border-radius:20rpx;display:flex;justify-content:center}.floating-icon-light{background:#fff;border-color:rgba(22,24,35,.08)}.ad-content{width:100%;display:block;cursor:pointer}.ad-content image{width:100%;height:100%;object-fit:contain;border-radius:18rpx;display:block}.close-icon{position:absolute;width:46rpx;height:46rpx;top:-14rpx;right:-12rpx;cursor:pointer;font-size:calc(16rpx + .5 * (1rem - 16px));border-radius:14rpx;background-color:rgba(0,0,0,.4);color:#fff;opacity:.8;display:flex;align-items:center;justify-content:center}.close-icon .close{position:relative;top:7rpx;left:-8rpx;stroke-width:12rpx}.icon-text{font-weight:600;font-size:calc(20rpx + .5 * (1rem - 16px));position:absolute;box-sizing:border-box;min-width:100%;max-width:100%;text-align:center;display:flex;justify-content:center;align-items:center;height:calc(28rpx + .5 * (1rem - 16px));line-height:calc(28rpx + .5 * (1rem - 16px));bottom:0;color:#fff;background:rgba(0,0,0,.5);mix-blend-mode:normal;border-radius:20rpx;padding:0 4rpx;overflow:hidden}.status-tip{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top-wrap{overflow:hidden;position:relative;border-radius:20rpx;width:100%;display:flex;justify-content:center}.floating-icon-popup{height:calc(112rpx + .5 * (1rem - 16px));width:calc(112rpx + .5 * (1rem - 16px))}