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:{icon:{type:String,value:""},describeText:{type:String,value:""},title:{type:String,value:""},buttonText:{type:String,value:""},buttonType:{type:String,value:"primary"},useDarkTheme:{type:Boolean,value:""},current:{type:Object,value:null},showCountDown:{type:Boolean,value:!1}},data:{visible:!0},lifetimes:{attached:function(){}},observers:{},methods:{onClick:function(){this.triggerEvent("onClick")}}});
@@ -0,0 +1 @@
{"component":true,"usingComponents":{"count-down":"../../image-text-float/count-down/count-down"}}
@@ -0,0 +1,16 @@
<view class="image-text-item-card {{useDarkTheme ? 'image-text-item-card-dark' : ''}}" bindtap="onClick">
<view class="image-text-item-prefix">
<image src="{{icon}}" />
<count-down class="count-down" wx:if="{{showCountDown}}" sendTime="{{current.SendTime}}" deadLine="{{current.Deadline || current.DeadLine}}" deadLineSecond="{{current.DeadlineSecond || current.DeadLineSecond}}" />
</view>
<view class="image-text-item-content">
<view class="image-text-item-content-title">{{title}}</view>
<view wx:if="{{describeText}}" class="image-text-item-content-info">
<view class="image-text-item-content-describe">{{describeText}}</view>
</view>
</view>
<view class="image-text-item-btn">
<!-- CTA 自身和整卡都可点击;这里截断冒泡,避免按钮点击时重复触发 feature.click。 -->
<view class="image-text-item-content-button image-text-item-content-button-{{buttonType || 'primary'}}" catchtap="onClick">{{buttonText}}</view>
</view>
</view>
@@ -0,0 +1 @@
.image-text-item-card{padding:24rpx;display:flex;align-items:center;justify-content:flex-start;border-radius:16rpx;border:2rpx solid rgba(22,24,35,.08);background-color:rgba(255,255,255,.5);width:100%;box-sizing:border-box}.image-text-item-prefix{flex:0 0 72rpx;width:72rpx;height:72rpx;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;border:1rpx solid rgba(22,24,35,.12);border-radius:16rpx;background-color:#fff;box-sizing:border-box}.image-text-item-prefix image{width:100%;height:100%;border-radius:14rpx}.count-down{font-weight:600;font-size:calc(24rpx + .5 * (1rem - 16px));position:absolute;min-width:100%;text-align:center;display:flex;justify-content:center;align-items:center;height:calc(24rpx + .5 * (1rem - 16px));line-height:calc(24rpx + .5 * (1rem - 16px));bottom:0;color:#fff;background:rgba(0,0,0,.5);border-radius:16rpx}.image-text-item-content{flex:1;display:flex;padding-left:24rpx;padding-right:20rpx;flex-direction:column;justify-content:space-between;overflow:hidden}.image-text-item-content-info{display:flex;align-items:center;margin-top:8rpx;color:rgba(22,24,35,.6);overflow:hidden}.image-text-item-content-title{color:#161823;font-size:calc(28rpx + .5 * (1rem - 16px));font-weight:500;line-height:calc(44rpx + .5 * (1rem - 16px));padding:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.image-text-item-content-describe{flex:1;font-size:calc(24rpx + .5 * (1rem - 16px));line-height:calc(34rpx + .5 * (1rem - 16px));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.image-text-item-btn{flex-shrink:0;margin-left:auto;display:flex;white-space:nowrap}.image-text-item-content-button{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;min-height:calc(56rpx + .5 * (1rem - 16px));border-radius:8rpx;padding:0 20rpx;font-size:calc(28rpx + .5 * (1rem - 16px));line-height:calc(40rpx + .5 * (1rem - 16px));white-space:nowrap;box-sizing:border-box}.image-text-item-content-button-primary{color:#fff;background-color:#fe2c55;border:2rpx solid transparent}.image-text-item-content-button-ghost{color:#323b47;background-color:#fff;border:2rpx solid rgba(22,24,35,.34)}.image-text-item-content-button-minor{color:#fe2c55;background-color:rgba(254,44,85,.08);border:2rpx solid transparent}.image-text-item-content-button view{color:inherit!important}.image-text-item-content-button>svg{margin-left:8rpx;width:24rpx;height:24rpx}.image-text-item-card-dark{border-color:rgba(22,24,35,.08);background-color:rgba(255,255,255,.1)}.image-text-item-card-dark .image-text-item-prefix{border-color:rgba(255,255,255,.08);background-color:rgba(22,24,35,.15)}.image-text-item-card-dark .image-text-item-content-title{color:rgba(255,255,255,.9)}.image-text-item-card-dark .image-text-item-content-info{color:rgba(255,255,255,.5)}.image-text-item-card-dark .image-text-item-content-button-primary{color:#fff;background-color:#fe2c55;border-color:transparent}.image-text-item-card-dark .image-text-item-content-button-minor{color:#fe2c55;background-color:rgba(254,44,85,.2);border-color:transparent}.image-text-item-card-dark .image-text-item-content-button-ghost{color:#fff;background-color:rgba(255,255,255,.06);border-color:transparent}.image-text-item-card-dark .image-text-item-content-button view{color:inherit!important}