7093e6517d
token 过期后小程序静默白屏(影响所有用户) - JWT 有效期 7 天,过期后 40100 只 clearToken 不重新登录,而 store.ready 的 promise 已缓存不会重跑,加上 23 处静默 catch, 用户看到的是「什么都没有、也没有任何提示」,只能重启小程序 - request 层加 token 失效钩子:自动重新登录并重试一次(只重试一次, 防止登录接口本身故障时死循环);store 注册钩子重置引导缓存 - 补 15s 请求超时、60s 上传超时,超时给明确文案(原先默认 60s 卡住无反馈) 请求翻倍 - 每个 tab 页同时用 store.subscribe 和 onShow→ready().then() 加载, 而 ready() 内部 loadPets 会 notify 触发 subscriber,首次进入请求翻倍 - subscriber 改为只处理「切换宠物 / 数据变更」,首次加载交给 onShow - 首页 bind:save 与组件实际触发的 saved 事件名不一致,onSheetSave 从未生效;一并修正,并去掉关闭弹层时的全量重载 失败伪装成空态 - 社区请求失败时显示「还没有帖子,来发第一条吧」,把故障说成没数据。 改为区分「加载失败(可点击重试)」「关注 tab 为空」「确实没有帖子」 - 新增 utils/ui.js 统一错误提示(同文案 3 秒内去重,避免并发失败刷屏), 首页与记录页主数据加载失败不再静默 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
57 lines
2.7 KiB
Plaintext
57 lines
2.7 KiB
Plaintext
.page-body{padding:8rpx 40rpx calc(210rpx + env(safe-area-inset-bottom))}
|
|
.pt-h2{font-size:46rpx;letter-spacing:-.6rpx;font-weight:800}
|
|
.pt-p{color:var(--muted);font-size:26rpx;margin-top:10rpx}
|
|
|
|
.feed-tabs{white-space:nowrap;padding:0 0 24rpx}
|
|
.feed-tab{
|
|
display:inline-block;border:1rpx solid var(--line);background:#fff;border-radius:999rpx;
|
|
height:68rpx;line-height:68rpx;padding:0 26rpx;color:var(--muted);font-size:26rpx;font-weight:900;
|
|
box-shadow:0 12rpx 32rpx rgba(70,48,25,.05);margin-right:16rpx;
|
|
}
|
|
.feed-tab.active{color:var(--primary-dark);background:#FFF4E4;border-color:#FFD39A}
|
|
|
|
.compose-card{margin-bottom:28rpx}
|
|
|
|
.post-card{background:#fff;border-radius:48rpx;box-shadow:var(--shadow);padding:30rpx;margin-bottom:28rpx}
|
|
.post-head{display:flex;align-items:center;gap:20rpx;margin-bottom:22rpx}
|
|
.post-avatar{
|
|
width:84rpx;height:84rpx;border-radius:32rpx;background:#FFF0D8;
|
|
display:flex;align-items:center;justify-content:center;font-size:44rpx;flex:none;
|
|
}
|
|
.post-user{flex:1}
|
|
.pu-b{font-size:28rpx;display:block;font-weight:700}
|
|
.ai-tag{display:inline-block;margin-left:10rpx;padding:0 10rpx;border-radius:8rpx;background:#EAF0FF;color:#3B6BE5;font-size:20rpx;font-weight:700;vertical-align:1rpx}
|
|
.pu-s{font-size:24rpx;color:var(--muted)}
|
|
.post-content{font-size:28rpx;line-height:1.62;color:#443D37;margin-bottom:24rpx}
|
|
|
|
.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12rpx;margin-bottom:24rpx}
|
|
.photo-tile{
|
|
aspect-ratio:1;border-radius:32rpx;background:linear-gradient(135deg,#FFE6BA,#FFF8ED);
|
|
display:flex;align-items:center;justify-content:center;font-size:60rpx;
|
|
}
|
|
|
|
.post-actions{display:flex;justify-content:space-around;border-top:1rpx solid var(--line);padding-top:20rpx}
|
|
.pa-btn{color:var(--muted);font-weight:900;font-size:26rpx}
|
|
.pa-btn.liked{color:var(--red)}
|
|
|
|
.empty-hint{text-align:center;color:var(--muted);font-size:26rpx;padding:80rpx 0}
|
|
|
|
/* 页面不自身滚动,改由 page-scroll 承载滚动(隐藏滚动条)*/
|
|
page{height:100vh;overflow:hidden;display:flex;flex-direction:column}
|
|
.page-scroll{flex:1;min-height:0}
|
|
|
|
/* 帖子分享按钮:用微信原生 open-type=share,需抹掉 button 默认外观 */
|
|
.pa-share{
|
|
background:transparent;border:none;padding:0;margin:0;line-height:inherit;
|
|
font-size:26rpx;font-weight:900;color:var(--muted);
|
|
}
|
|
.pa-share::after{border:none}
|
|
|
|
/* 关注按钮 */
|
|
.follow-btn{
|
|
flex:none;font-size:22rpx;font-weight:700;padding:6rpx 18rpx;border-radius:999rpx;
|
|
color:var(--primary-dark);background:#FFF2DC;border:1rpx solid #FFD39A;
|
|
}
|
|
.follow-btn.on{color:var(--muted);background:#F4F1EC;border-color:var(--line)}
|
|
.retry-btn{margin-top:20rpx;display:inline-block;padding:12rpx 36rpx;border-radius:999rpx;background:#FFF2DC;color:var(--primary-dark);font-weight:700;font-size:26rpx}
|