feat(circle): 添加酒友圈社交模块
- 新增酒友圈、圈子详情、发布动态、好友列表、活动创建等页面配置 - 添加酒友圈相关API接口,包括动态、评论、好友、活动等功能 - 实现模拟数据用于前端开发和测试 - 创建评论项、空状态、活动卡片、动态卡片、好友项等组件 - 编写酒友圈模块详细的接口文档,定义数据结构和业务规则
This commit is contained in:
+64
-18
@@ -5,6 +5,7 @@
|
||||
<view class="hero-bg">
|
||||
<view class="hero-orb hero-orb-1"></view>
|
||||
<view class="hero-orb hero-orb-2"></view>
|
||||
<text class="hero-deco">🥃</text>
|
||||
</view>
|
||||
<!-- 右上角分享按钮(避让胶囊) -->
|
||||
<button class="hero-share-btn" open-type="share" :style="shareBtnStyle">
|
||||
@@ -17,11 +18,16 @@
|
||||
<text class="hero-avatar-icon">👤</text>
|
||||
</view>
|
||||
</view>
|
||||
<text class="hero-name">{{ user.nickname || '酒友' }}</text>
|
||||
<view class="hero-level-tag">
|
||||
<text class="hero-level-text">{{ drinkLevel }}</text>
|
||||
<view class="hero-info">
|
||||
<text class="hero-greeting">{{ greeting }}</text>
|
||||
<view class="hero-name-row">
|
||||
<text class="hero-name">{{ user.nickname || '酒友' }}</text>
|
||||
<view class="hero-level-tag">
|
||||
<text class="hero-level-text">{{ drinkLevel }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<text class="hero-joined">{{ joinedDate }} 加入 · 干杯日记</text>
|
||||
</view>
|
||||
<text class="hero-joined">{{ joinedDate }} 加入</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -219,6 +225,14 @@ export default {
|
||||
const map = { baijiu: '白酒之魂', beer: '啤酒达人', wine: '红酒雅士', whisky: '威士忌行家', huangjiu: '黄酒知音', sake: '清酒爱好者', fruit: '果酒小清新', cocktail: '调酒师' }
|
||||
return map[fav] || '多元品鉴师'
|
||||
},
|
||||
greeting() {
|
||||
const h = new Date().getHours()
|
||||
if (h < 6) return '🌙 夜深了,微醺正好'
|
||||
if (h < 11) return '☀️ 早上好,新的一天'
|
||||
if (h < 14) return '🌤 中午好,小酌怡情'
|
||||
if (h < 18) return '🌇 下午好,来一杯?'
|
||||
return '🌙 晚上好,今晚喝点?'
|
||||
},
|
||||
personaDesc() {
|
||||
const days = this.stats.totalDays || 0
|
||||
if (days === 0) return '开始记录你的第一杯吧'
|
||||
@@ -335,7 +349,7 @@ export default {
|
||||
return ACHIEVEMENTS[index % ACHIEVEMENTS.length].icon
|
||||
},
|
||||
goCircle() {
|
||||
uni.showToast({ title: '酒友圈即将上线,敬请期待 🍻', icon: 'none', duration: 2000 })
|
||||
uni.switchTab({ url: '/pages/circle/circle' })
|
||||
},
|
||||
goHome() {
|
||||
uni.switchTab({ url: '/pages/index/index' })
|
||||
@@ -390,7 +404,7 @@ export default {
|
||||
/* === 沉浸式头部 === */
|
||||
.hero-header {
|
||||
position: relative;
|
||||
padding: 0 $sp-lg 80rpx;
|
||||
padding: 0 $sp-lg 64rpx;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
@@ -447,22 +461,32 @@ export default {
|
||||
background: rgba(139,133,184,0.06);
|
||||
}
|
||||
|
||||
.hero-deco {
|
||||
position: absolute;
|
||||
right: -20rpx;
|
||||
bottom: -30rpx;
|
||||
font-size: 200rpx;
|
||||
opacity: 0.06;
|
||||
transform: rotate(-15deg);
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.hero-content {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
padding-top: $sp-lg;
|
||||
padding-top: $sp-xl;
|
||||
}
|
||||
|
||||
.avatar-ring {
|
||||
width: 168rpx; height: 168rpx;
|
||||
width: 128rpx; height: 128rpx;
|
||||
border-radius: 50%;
|
||||
padding: 4rpx;
|
||||
flex-shrink: 0;
|
||||
background: linear-gradient(160deg, rgba(232,168,56,0.7), rgba(232,168,56,0.2), rgba(139,133,184,0.3));
|
||||
margin-bottom: $sp-xl;
|
||||
box-shadow: 0 0 48rpx rgba(232,168,56,0.15);
|
||||
box-shadow: 0 0 40rpx rgba(232,168,56,0.12);
|
||||
}
|
||||
|
||||
.hero-avatar {
|
||||
@@ -478,28 +502,49 @@ export default {
|
||||
}
|
||||
|
||||
.hero-avatar-icon {
|
||||
font-size: 72rpx;
|
||||
font-size: 56rpx;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.hero-info {
|
||||
flex: 1;
|
||||
margin-left: $sp-xl;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.hero-greeting {
|
||||
font-size: $fs-xs;
|
||||
color: $text-tertiary;
|
||||
margin-bottom: 14rpx;
|
||||
letter-spacing: 1rpx;
|
||||
}
|
||||
|
||||
.hero-name-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 14rpx;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
|
||||
.hero-name {
|
||||
font-size: $fs-2xl;
|
||||
font-weight: $fw-black;
|
||||
color: $text-primary;
|
||||
margin-bottom: $sp-md;
|
||||
letter-spacing: -1rpx;
|
||||
}
|
||||
|
||||
.hero-level-tag {
|
||||
padding: 8rpx 24rpx;
|
||||
background: rgba(232,168,56,0.08);
|
||||
border: 1rpx solid rgba(232,168,56,0.18);
|
||||
padding: 6rpx 18rpx;
|
||||
background: rgba(232,168,56,0.10);
|
||||
border: 1rpx solid rgba(232,168,56,0.20);
|
||||
border-radius: $radius-full;
|
||||
margin-bottom: $sp-md;
|
||||
}
|
||||
|
||||
.hero-level-text {
|
||||
font-size: $fs-xs;
|
||||
font-size: 20rpx;
|
||||
color: $amber;
|
||||
font-weight: $fw-medium;
|
||||
}
|
||||
@@ -508,6 +553,7 @@ export default {
|
||||
font-size: $fs-xs;
|
||||
color: $text-tertiary;
|
||||
opacity: 0.7;
|
||||
line-height: $lh-normal;
|
||||
}
|
||||
|
||||
/* === 悬浮数据卡片 === */
|
||||
|
||||
Reference in New Issue
Block a user