f417962453
- 删除页面:community(社区)、comments(评论)、user(他人主页)、relations(关注/粉丝) - app.json 去掉四个页面注册与社区 tab;tabBar 只剩 首页/报告/我的 - bottom-sheet 移除发帖(createPost)与评论(comments)整块 UI 及对应 JS/数据/常量 - profile-head 移除帖子/关注/粉丝社交数与关注按钮 - mine 去掉「我的帖子」「别人眼里的我」及关注/粉丝跳转 - api.js 移除 posts/comments/follow/relations 等社区接口(保留 userCard 供我的页头部) 说明:后端社区接口未动(微信审核只看小程序包,前端已无任何引用); 完整社区代码保留在 feat/dev 分支与 git 历史。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
173 lines
10 KiB
Plaintext
173 lines
10 KiB
Plaintext
<wxs module="u">
|
||
module.exports.sel = function (map, key, index, def) {
|
||
var v = map[key];
|
||
if (v === undefined || v === null) v = def;
|
||
return v === index;
|
||
};
|
||
</wxs>
|
||
|
||
<view class="overlay {{show ? 'show' : ''}}" bindtap="onMaskTap">
|
||
<view class="sheet" catchtap="noop">
|
||
<view class="sheetbar"></view>
|
||
|
||
<scroll-view class="sheet-scroll" scroll-y="{{true}}" enhanced="{{true}}" show-scrollbar="{{false}}">
|
||
<!-- 那 9 种记录表单(体重/排便/饮食/异常/给药/记账/疫苗/驱虫/照片)已经整体
|
||
搬到 pages/addrecord —— 字段由后端 record_types.fields 驱动,一个页面吃掉
|
||
全部 24 种,不再每种一个 wx:elif。弹层现在只管「不是记一笔」的那些事:
|
||
提醒、海报、档案、发帖、评论…… -->
|
||
<!-- 就医前摘要。这是链上第一支,必须是 wx:if -->
|
||
<block wx:if="{{innerType === 'vetSummary'}}">
|
||
<view class="sheet-h3">就医前摘要</view>
|
||
<view class="sheet-p pre">宠物:{{pet.name}}
|
||
阶段:{{pet.stage}}
|
||
当前体重:{{pet.weight}}
|
||
近期重点:疫苗期、换粮观察、排便记录
|
||
建议携带:排便/呕吐照片、饮食变化、疫苗驱虫记录。</view>
|
||
<button class="btn btn-primary btn-block" bindtap="onSave">保存摘要</button>
|
||
</block>
|
||
|
||
<!-- 记录用药 -->
|
||
<!-- 提醒中心 -->
|
||
<block wx:elif="{{innerType === 'reminders'}}">
|
||
<view class="sheet-h3">提醒中心</view>
|
||
<view class="sheet-p">疫苗、驱虫这些别靠记,设好日期到时候提醒你。</view>
|
||
|
||
<view wx:for="{{reminders}}" wx:key="id" class="mtask-row">
|
||
<view class="mtask-body">
|
||
<text class="mtask-b">{{item.title}}</text>
|
||
<view class="mtask-p">{{item.when}}</view>
|
||
</view>
|
||
<view class="mtask-op" catchtap="onEditReminder" data-index="{{index}}">改</view>
|
||
<view class="mtask-op del" catchtap="onDeleteReminder" data-index="{{index}}">删</view>
|
||
</view>
|
||
<view wx:if="{{!reminders.length}}" class="sheet-p">还没有提醒,下面加一条吧。</view>
|
||
|
||
<view class="field" style="margin-top:12rpx"><label>{{remForm.id ? '修改提醒' : '新增提醒'}}</label>
|
||
<input class="input" placeholder="提醒名,例如:第 3 针疫苗" placeholder-class="placeholder" value="{{remForm.title}}" bindinput="onRemTitle"/></view>
|
||
<view class="field"><label>类型 / 到期日</label>
|
||
<view class="mtask-form-row">
|
||
<picker mode="selector" range="{{remTypeLabels}}" value="{{remForm.typeIdx}}" bindchange="onRemType">
|
||
<view class="picker-box">{{remTypeLabels[remForm.typeIdx]}}</view>
|
||
</picker>
|
||
<picker mode="date" value="{{remForm.date}}" bindchange="onRemDate">
|
||
<view class="picker-box">{{remForm.date || '选择到期日'}}</view>
|
||
</picker>
|
||
</view>
|
||
</view>
|
||
<view class="field"><label>重复频率(可选)</label>
|
||
<input class="input" placeholder="例如:每月一次;填了可不选到期日" placeholder-class="placeholder" value="{{remForm.freq}}" bindinput="onRemFreq"/></view>
|
||
<button class="btn btn-primary btn-block" bindtap="onSaveReminder">{{remForm.id ? '保存修改' : '添加提醒'}}</button>
|
||
</block>
|
||
|
||
<!-- 任务详情 -->
|
||
|
||
<!-- 成长海报 -->
|
||
<block wx:elif="{{innerType === 'poster'}}">
|
||
<view class="poster">
|
||
<view class="poster-h3">{{pet.name}} 的成长报告</view>
|
||
<view class="poster-avatar">
|
||
<image wx:if="{{poster.pet_avatar_url || pet.avatar_url}}" class="poster-avatar-img" src="{{poster.pet_avatar_url || pet.avatar_url}}" mode="aspectFill"></image>
|
||
<block wx:else>{{pet.emoji}}</block>
|
||
</view>
|
||
<view class="poster-meta">{{pet.age}}|{{pet.weight}}|{{pet.stage}}</view>
|
||
<view wx:if="{{poster.period}}" class="poster-period">近 7 天 · {{poster.period}}</view>
|
||
<view class="poster-list">
|
||
<view class="poster-row"><view class="poster-tick"><pt-icon name="check" size="{{22}}"></pt-icon></view><text class="poster-rt">完成任务</text><text class="poster-rn">{{poster ? poster.tasks_completed : 0}} 项</text></view>
|
||
<view class="poster-row"><view class="poster-tick"><pt-icon name="check" size="{{22}}"></pt-icon></view><text class="poster-rt">体重记录</text><text class="poster-rn">{{poster ? poster.weight_records : 0}} 次</text></view>
|
||
<view class="poster-row"><view class="poster-tick"><pt-icon name="check" size="{{22}}"></pt-icon></view><text class="poster-rt">疫苗记录</text><text class="poster-rn">{{poster ? poster.vaccine_records : 0}} 次</text></view>
|
||
<view class="poster-row"><view class="poster-tick"><pt-icon name="check" size="{{22}}"></pt-icon></view><text class="poster-rt">高风险异常</text><text class="poster-rn">{{poster ? poster.high_risk_count : 0}} 次</text></view>
|
||
</view>
|
||
<view class="poster-status">健康状态<text class="poster-badge">{{poster ? poster.headline : '稳定成长'}}</text></view>
|
||
<view class="poster-from">生成自 · 肉垫计划</view>
|
||
</view>
|
||
<view class="sheet-actions" style="margin-top:28rpx">
|
||
<button class="btn btn-ghost" open-type="share">分享给朋友</button>
|
||
<button class="btn btn-primary" bindtap="onSavePoster" disabled="{{posterSaving}}">
|
||
{{posterSaving ? '生成中…' : '保存到相册'}}
|
||
</button>
|
||
</view>
|
||
<!-- 离屏画布:海报要存成图片才能进相册。不能用 display:none,否则取不到节点 -->
|
||
<canvas type="2d" id="posterCanvas" class="poster-canvas"></canvas>
|
||
</block>
|
||
|
||
<!-- 报告详情 -->
|
||
<block wx:elif="{{innerType === 'reportDetail'}}">
|
||
<view class="sheet-h3">本周成长报告</view>
|
||
<view class="sheet-p">{{reportDetail ? reportDetail.summary : '正在汇总本周数据…'}}</view>
|
||
<view wx:if="{{reportDetail}}" class="sheet-p"><text class="bold">下周重点:</text>{{reportDetail.next_week_focus}}</view>
|
||
<button class="btn btn-primary btn-block" data-type="poster" bindtap="goSheet">生成分享卡片</button>
|
||
</block>
|
||
|
||
<!-- Pro 会员 -->
|
||
<block wx:elif="{{innerType === 'pro'}}">
|
||
<view class="sheet-h3">肉垫计划 Pro</view>
|
||
<view class="sheet-p">解锁 365 天计划、PDF 健康档案、月度报告、多宠物管理与年度账单。</view>
|
||
<view class="check-list">
|
||
<view wx:for="{{proInfo.features}}" wx:key="*this" class="check selected"><view class="box"><pt-icon name="check" size="{{26}}"></pt-icon></view>{{item}}</view>
|
||
</view>
|
||
<button wx:if="{{proInfo.status === 'active'}}" class="btn btn-soft btn-block" bindtap="close"><pt-icon name="check" size="{{30}}"></pt-icon>已开通 Pro</button>
|
||
<button wx:else class="btn btn-soft btn-block" disabled="true">即将开放</button>
|
||
<view wx:if="{{proInfo.status !== 'active'}}" class="sheet-p" style="text-align:center;margin-top:16rpx;font-size:24rpx">
|
||
会员功能还在准备中,暂未开放购买。
|
||
</view>
|
||
</block>
|
||
|
||
<!-- 任务管理那一支删了:它管的是 DailyTask,而「今日任务」已经并进计划节点,
|
||
增删改都在计划页做。留着会出现「这里加的任务」和「计划页加的节点」进不同的表 -->
|
||
<block wx:elif="{{innerType === 'managePets'}}">
|
||
<view class="sheet-h3">多宠物管理</view>
|
||
<view class="sheet-p">点一只切换为当前宠物,或编辑它的档案。</view>
|
||
<view wx:for="{{myPets}}" wx:key="id" class="mtask-row">
|
||
<view class="mtask-body" catchtap="onSwitchPet" data-id="{{item.id}}">
|
||
<text class="mtask-b">{{item.emoji}} {{item.name}}<text wx:if="{{item.current}}" class="mtask-pri">当前</text></text>
|
||
<view class="mtask-p">{{item.meta}}</view>
|
||
</view>
|
||
<view class="mtask-op" catchtap="onEditPetFromList" data-id="{{item.id}}">编辑</view>
|
||
</view>
|
||
<view wx:if="{{!myPets.length}}" class="sheet-p">还没有毛孩子。</view>
|
||
<button class="btn btn-primary btn-block" style="margin-top:16rpx" data-type="addPet" bindtap="goSheet">+ 添加毛孩子</button>
|
||
</block>
|
||
|
||
<!-- 导出健康档案 -->
|
||
<block wx:elif="{{innerType === 'exportData'}}">
|
||
<view class="sheet-h3">导出健康档案</view>
|
||
<view class="sheet-p">整理成一段文字,可复制后发给医生或存到备忘录。</view>
|
||
<view class="export-box">{{exportText || '正在整理…'}}</view>
|
||
<button class="btn btn-primary btn-block" bindtap="onCopyExport">复制全部内容</button>
|
||
</block>
|
||
|
||
<!-- 意见反馈 -->
|
||
<block wx:elif="{{innerType === 'feedback'}}">
|
||
<view class="sheet-h3">意见反馈</view>
|
||
<block wx:if="{{!fbDone}}">
|
||
<view class="sheet-p">用着哪儿别扭、想要什么功能,都可以告诉我们。</view>
|
||
<view class="field"><label>你的反馈</label>
|
||
<textarea class="textarea" placeholder="例如:希望能记录洗澡时间" placeholder-class="placeholder" value="{{fbContent}}" bindinput="onFbContent"></textarea></view>
|
||
<view class="field"><label>联系方式(可选)</label>
|
||
<input class="input" placeholder="微信号或邮箱,方便回复你" placeholder-class="placeholder" value="{{fbContact}}" bindinput="onFbContact"/></view>
|
||
<button class="btn btn-primary btn-block" bindtap="onSubmitFeedback" disabled="{{saving}}">{{saving ? '提交中…' : '提交反馈'}}</button>
|
||
</block>
|
||
<block wx:else>
|
||
<view class="sheet-p">已收到,谢谢你的反馈 🐾</view>
|
||
<button class="btn btn-primary btn-block" bindtap="close">好的</button>
|
||
</block>
|
||
</block>
|
||
|
||
<!-- 关于我们 -->
|
||
<block wx:elif="{{innerType === 'about'}}">
|
||
<view class="sheet-h3">关于肉垫计划</view>
|
||
<view class="sheet-p pre">肉垫计划是给新手养宠人做的照护记录工具。
|
||
|
||
按猫狗的品类和成长阶段生成每日照护任务和养护计划,随手记录体重、饮食、排便、用药、疫苗和开支,疫苗驱虫到期前提醒你,并把这些整理成成长报告。
|
||
|
||
版本:v0.2
|
||
反馈:我的 → 意见反馈</view>
|
||
<view class="sheet-p" style="color:var(--muted);font-size:24rpx">本小程序提供的是记录与观察建议,不能替代医生诊断。宠物出现持续异常请及时就医。</view>
|
||
<button class="btn btn-primary btn-block" bindtap="close">知道了</button>
|
||
</block>
|
||
|
||
</scroll-view>
|
||
|
||
</view>
|
||
</view>
|