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";var _constant=require("../../utils/constant"),_singleLogin=require("../../utils/singleLogin"),NORMAL_ICON="../../assets/banTips.png",ERROR_ICON="../../assets/banTipsRed.png";Component({properties:{sdkInstance:{type:Object,value:null}},data:{isBanned:!1,banType:_constant.BAN_TYPE.NONE,banTips:"",isSoftBan:!1,canContinue:!1,displayTips:"",normalIcon:NORMAL_ICON,errorIcon:ERROR_ICON},observers:{sdkInstance:function(n){if(n){var s=n.store,t=this;console.log("[BanPage] sdkInstance initialized"),"function"==typeof this._unsubscribe&&this._unsubscribe(),this._unsubscribe=null,this._unsubscribe=s.get({banStatus:function(n){if(console.log("[BanPage] banStatus changed:",n),n){var s=n.isBanned,e=void 0!==s&&s,i=n.banType,a=void 0===i?_constant.BAN_TYPE.NONE:i,o=n.banTips,c=void 0===o?"":o,u=n.isSoftBan,r=void 0!==u&&u,l=a===_constant.BAN_TYPE.CHECK_IN||r,b=c||(0,_singleLogin.getBanTipsText)(a);t.setData({isBanned:e,banType:a,banTips:c,isSoftBan:r,canContinue:l,displayTips:b})}}})}else console.log("[BanPage] sdkInstance is null")}},lifetimes:{detached:function(){"function"==typeof this._unsubscribe&&this._unsubscribe(),this._unsubscribe=null}},methods:{onContinueWatch:function(){var n=this.properties.sdkInstance,s={banType:this.data.banType,isSoftBan:this.data.isSoftBan};n&&n.store?(console.log("[BanPage] User clicked continue watch"),(0,_singleLogin.updateBanStatus)(n.store,{isBanned:!1,banType:_constant.BAN_TYPE.NONE,banTips:"",isSoftBan:!1}),this.triggerEvent("continue",s)):console.warn("[BanPage] sdkInstance or store is null")}}});
@@ -0,0 +1 @@
{"component":true,"usingComponents":{}}
@@ -0,0 +1,10 @@
<!-- BAN 页面组件 -->
<view class="ban-page" wx:if="{{isBanned}}">
<view class="ban-modal">
<image class="ban-icon" src="{{canContinue ? normalIcon : errorIcon}}" mode="aspectFit" />
<view class="ban-text">{{displayTips}}</view>
<view class="ban-actions" wx:if="{{canContinue}}">
<button class="continue-button" bindtap="onContinueWatch">继续观看</button>
</view>
</view>
</view>
@@ -0,0 +1 @@
.ban-page{position:fixed;top:0;left:0;right:0;bottom:0;width:100%;height:100%;background-image:url("https://p1-live.byteimg.com/tos-cn-i-gjr78lqtd0/123342ac439a4ef587c3ca584078a5dc~tplv-gjr78lqtd0-z75.image");background-size:cover;background-position:center;z-index:30000;display:flex;align-items:center;justify-content:center}.ban-modal{display:flex;flex-direction:column;align-items:center;width:280px;min-height:168px;background-color:#fff;border-radius:16px;padding:20px;padding-bottom:25px;box-shadow:0 4px 16px rgba(0,0,0,.1);box-sizing:border-box}.ban-icon{width:80px;height:80px;margin-bottom:12px}.ban-text{font-size:calc(17px + .5 * (1rem - 16px));color:#161823;line-height:1.5;text-align:center;font-weight:500;word-break:break-all}.ban-actions{margin-top:12px;width:100%;display:flex;justify-content:center}.continue-button{width:240px;height:calc(44px + .5 * (1rem - 16px));line-height:calc(44px + .5 * (1rem - 16px));background-color:#ff4050;color:#fff;border-radius:8px;font-size:calc(15px + .5 * (1rem - 16px));font-weight:500;border:none;padding:0;text-align:center}.continue-button::after{border:none}.continue-button:active{opacity:.6}