2f5dd6eefc
后端
- 主键改雪花字符串 ID(pkg/idgen + Base.BeforeCreate),全表外键/JWT/中间件随之调整
- 新增 files 表:/api/upload 按 MD5 去重,返回 {id,url,md5},服务端只收图片
- 头像/记录附图/帖子图改 file_id 关联,读取解析为 URL
- 养护模板(物种×阶段)后台可配 + AI 生成草稿;建档按模板生成任务/计划/提醒
- 社区 AI 运营:虚拟账号池 + 每日定时/手动生成,帖子带 AI 标
- 计划路线图节点带真实日期;首页周历与计划日历同源;新增 day-plan 当日安排
- 体重趋势接口带备注;记录列表分页
小程序
- 公共图片上传 utils/upload.js(仅图片);记录拍照/我的头像/社区发图三处接入
- 首页日历点选查当日任务;记录页体重趋势可点看备注 + 时间轴分页折叠
- 计划页日历点选查当日计划;自定义 tabBar 高度调整
后台(React)
- 新增「养护模板」「社区运营」页;用户管理加机器人筛选
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
38 lines
2.0 KiB
Plaintext
38 lines
2.0 KiB
Plaintext
<nav-bar title="我的" show-back="{{true}}"></nav-bar>
|
||
|
||
<scroll-view class="page-scroll" scroll-y="{{true}}" enhanced="{{true}}" show-scrollbar="{{false}}">
|
||
<view class="page-body">
|
||
<view class="profile-header">
|
||
<view class="avatar ph-avatar" bindtap="onPickAvatar">
|
||
<image wx:if="{{user.avatar_url}}" class="ph-avatar-img" src="{{user.avatar_url}}" mode="aspectFill"></image>
|
||
<block wx:else>{{pet.emoji}}</block>
|
||
<view class="ph-avatar-cam">📷</view>
|
||
</view>
|
||
<view class="ph-name">{{pet.name}}</view>
|
||
<view class="muted ph-meta">{{pet.age}}|{{pet.weight}}|{{pet.stage}}</view>
|
||
<view wx:if="{{pet.breed || pet.color}}" class="muted ph-meta">{{pet.breed}}{{pet.breed && pet.color ? ' · ' : ''}}{{pet.color}}</view>
|
||
</view>
|
||
|
||
<button class="btn btn-ghost btn-block" style="margin-bottom:28rpx" bindtap="onAddPet">+ 添加毛孩子</button>
|
||
|
||
<view class="profile-list">
|
||
<view class="profile-row" bindtap="onEditPet">宠物档案(编辑)<text class="pr-val">已完善 {{profilePct}}% ›</text></view>
|
||
<view class="profile-row">提醒设置 <text class="pr-val">{{summary.reminders}} 条</text></view>
|
||
<view class="profile-row">健康记录 <text class="pr-val">{{summary.records}} 条</text></view>
|
||
<view class="profile-row">多宠物管理 <text class="pr-val">{{summary.pets}} 只</text></view>
|
||
</view>
|
||
|
||
<view class="profile-list">
|
||
<view class="profile-row">会员权益 <text class="pr-val">{{summary.pro_status === 'active' ? '已开通' : '未开通'}}</text></view>
|
||
<view class="profile-row">数据导出 <text class="pr-val">PDF</text></view>
|
||
<view class="profile-row">意见反馈 <text class="pr-val">去填写</text></view>
|
||
<view class="profile-row">关于我们 <text class="pr-val">v0.2</text></view>
|
||
</view>
|
||
|
||
<button class="btn btn-primary btn-block" data-type="pro" bindtap="openSheet">开通 Pro</button>
|
||
</view>
|
||
</scroll-view>
|
||
|
||
<fab bind:tap="onFab"></fab>
|
||
<bottom-sheet show="{{sheetShow}}" type="{{sheetType}}" bind:close="closeSheet"></bottom-sheet>
|