|
|
@ -16,47 +16,63 @@ |
|
|
|
> |
|
|
|
<!-- 展开状态 --> |
|
|
|
<view v-if="!actualCompactState" class="expanded-content"> |
|
|
|
<!-- <view style="display: flex;align-items: center;justify-content: center;color: white;" v-if="!(userInfo&&userInfo.token)"> |
|
|
|
去登录 |
|
|
|
</view> --> |
|
|
|
<template> |
|
|
|
<template v-if="styleType != 'timeShop'"> |
|
|
|
<view class="top-section"> |
|
|
|
<text class="welcome-text" v-if="userInfo && userInfo.token">{{ |
|
|
|
title |
|
|
|
}}</text> |
|
|
|
<text class="welcome-text" v-else @click="toLogin" |
|
|
|
>hi 快去登录 ></text |
|
|
|
> |
|
|
|
<view class="qr-code"> |
|
|
|
<image |
|
|
|
style="width: 39rpx; height: 39rpx" |
|
|
|
src="https://epic.js-dyyj.com/uploads/20250728/88e0991e58e692c86c25e42537edc6ca.png" |
|
|
|
></image> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
<view class="bottom-section"> |
|
|
|
<view class="stats-section"> |
|
|
|
<view class="stat-item"> |
|
|
|
<text class="stat-number">{{ getStatNumber("权益") }}</text> |
|
|
|
<text class="stat-label">权益</text> |
|
|
|
<!-- 三栏布局 --> |
|
|
|
<view class="three-column-layout"> |
|
|
|
<!-- 左侧:欢迎信息 --> |
|
|
|
<view class="left-section"> |
|
|
|
<view class="welcome-message"> |
|
|
|
<text class="welcome-text" |
|
|
|
>Hi!{{ |
|
|
|
userInfo && userInfo.token ? userInfo.nickname : "用户" |
|
|
|
}}</text |
|
|
|
> |
|
|
|
<text class="welcome-subtitle">欢迎回来~</text> |
|
|
|
</view> |
|
|
|
<view class="stat-item"> |
|
|
|
<text class="stat-number">{{ |
|
|
|
getStatNumber("时间银行") |
|
|
|
}}</text> |
|
|
|
<text class="stat-label">时间银行</text> |
|
|
|
<view class="stats-info"> |
|
|
|
<text class="stats-number">2</text> |
|
|
|
<text class="stats-unit">个</text> |
|
|
|
</view> |
|
|
|
<view class="stats-label">文旅权益</view> |
|
|
|
</view> |
|
|
|
<view class="divider"></view> |
|
|
|
<view class="action-section"> |
|
|
|
<text class="action-text">{{ actionText }}</text> |
|
|
|
<image |
|
|
|
@click="toWebView" |
|
|
|
class="avatar" |
|
|
|
src="https://epic.js-dyyj.com/uploads/20250728/7d9ba1fe109643681396cb03f60f3218.png" |
|
|
|
mode="aspectFill" |
|
|
|
></image> |
|
|
|
|
|
|
|
<!-- 左侧分隔线 --> |
|
|
|
<view class="column-divider"></view> |
|
|
|
|
|
|
|
<!-- 中间:时间奖励 --> |
|
|
|
<view class="middle-section"> |
|
|
|
<view class="time-reward-container"> |
|
|
|
<text class="time-reward-title">时间奖励</text> |
|
|
|
<view class="time-reward-stats"> |
|
|
|
<text class="time-reward-number">120</text> |
|
|
|
<text class="time-reward-unit">点</text> |
|
|
|
</view> |
|
|
|
<text class="time-reward-label">文旅时间银行</text> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 右侧分隔线 --> |
|
|
|
<view class="column-divider"></view> |
|
|
|
|
|
|
|
<!-- 右侧:头像和链接 --> |
|
|
|
<view class="right-section"> |
|
|
|
<view class="avatar-container"> |
|
|
|
<image |
|
|
|
class="avatar" |
|
|
|
src="https://epic.js-dyyj.com/uploads/20250728/7d9ba1fe109643681396cb03f60f3218.png" |
|
|
|
mode="aspectFill" |
|
|
|
></image> |
|
|
|
</view> |
|
|
|
<view class=""> |
|
|
|
<view class="profile-info"> |
|
|
|
<text class="profile-title">文化工厂主理人</text> |
|
|
|
<text class="profile-name">EVITA</text> |
|
|
|
</view> |
|
|
|
<view class="platform-link" @click="toWebView"> |
|
|
|
<text class="link-text">平台简介 >></text> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</template> |
|
|
@ -169,6 +185,7 @@ export default { |
|
|
|
currentAvatar: "https://picsum.photos/80/80", |
|
|
|
currentAction: "激活你的Agent", |
|
|
|
userInfo: {}, |
|
|
|
JDSU_IMG_URL: "https://epic.js-dyyj.com", |
|
|
|
}; |
|
|
|
}, |
|
|
|
computed: { |
|
|
@ -332,6 +349,16 @@ export default { |
|
|
|
"https://des.js-dyyj.com/dist/#/", |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
// 图片显示方法 |
|
|
|
showImg(img) { |
|
|
|
if (!img) return; |
|
|
|
if (img.indexOf("https://") != -1 || img.indexOf("http://") != -1) { |
|
|
|
return img; |
|
|
|
} else { |
|
|
|
return this.JDSU_IMG_URL + img; |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
}; |
|
|
|
</script> |
|
|
@ -344,7 +371,7 @@ export default { |
|
|
|
position: relative; |
|
|
|
opacity: 1; |
|
|
|
transition: opacity 0.3s ease; |
|
|
|
padding:24rpx 0 |
|
|
|
padding: 24rpx 0; |
|
|
|
} |
|
|
|
|
|
|
|
.dynamic-island-placeholder.visible { |
|
|
@ -362,13 +389,12 @@ export default { |
|
|
|
margin: 0 auto; |
|
|
|
z-index: 100; |
|
|
|
|
|
|
|
background: rgba(0, 0, 0, 0.75); |
|
|
|
background: linear-gradient(180deg, #fffdb7 0%, #97fffa 100%); |
|
|
|
backdrop-filter: blur(20rpx); |
|
|
|
-webkit-backdrop-filter: blur(20rpx); |
|
|
|
border: 1rpx solid rgba(255, 255, 255, 0.1); |
|
|
|
border-radius: 40rpx; |
|
|
|
box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.3), |
|
|
|
0 0 0 1rpx rgba(255, 255, 255, 0.05) inset; |
|
|
|
box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.1), |
|
|
|
0 0 0 1rpx rgba(255, 255, 255, 0.2) inset; |
|
|
|
|
|
|
|
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); |
|
|
|
overflow: hidden; |
|
|
@ -414,54 +440,182 @@ export default { |
|
|
|
display: flex; |
|
|
|
flex-direction: column; |
|
|
|
height: 100%; |
|
|
|
padding: 24rpx 32rpx; |
|
|
|
padding: 24rpx 20rpx; |
|
|
|
opacity: 1; |
|
|
|
visibility: visible; |
|
|
|
transition: opacity 0.2s ease-in 0.1s, visibility 0s linear 0s; |
|
|
|
} |
|
|
|
|
|
|
|
.top-section { |
|
|
|
/* 三栏布局样式 */ |
|
|
|
.three-column-layout { |
|
|
|
display: flex; |
|
|
|
align-items: flex-end; |
|
|
|
justify-content: space-between; |
|
|
|
align-items: center; |
|
|
|
height: 100%; |
|
|
|
width: 100%; |
|
|
|
} |
|
|
|
|
|
|
|
/* 列分隔线 */ |
|
|
|
.column-divider { |
|
|
|
width: 2rpx; |
|
|
|
height: 60rpx; |
|
|
|
background: rgba(0, 0, 0, 0.1); |
|
|
|
margin: 35rpx 16rpx; |
|
|
|
flex-shrink: 0; |
|
|
|
} |
|
|
|
|
|
|
|
/* 左侧区域 */ |
|
|
|
.left-section { |
|
|
|
display: flex; |
|
|
|
flex-direction: column; |
|
|
|
align-items: flex-start; |
|
|
|
color: #333; |
|
|
|
width: 140rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.welcome-message { |
|
|
|
display: flex; |
|
|
|
flex-direction: column; |
|
|
|
margin-bottom: 16rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.welcome-text { |
|
|
|
font-size: 28rpx; |
|
|
|
color: #ffffff; |
|
|
|
font-weight: 500; |
|
|
|
font-size: 24rpx; |
|
|
|
color: #000000; |
|
|
|
font-weight: bold; |
|
|
|
line-height: 1.2; |
|
|
|
} |
|
|
|
|
|
|
|
.welcome-subtitle { |
|
|
|
font-size: 24rpx; |
|
|
|
color: #000000; |
|
|
|
margin-top: 4rpx; |
|
|
|
font-weight: bold; |
|
|
|
} |
|
|
|
|
|
|
|
.stats-info { |
|
|
|
display: flex; |
|
|
|
align-items: baseline; |
|
|
|
margin-bottom: 8rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.stats-number { |
|
|
|
font-size: 40rpx; |
|
|
|
color: #333; |
|
|
|
font-weight: bold; |
|
|
|
line-height: 1; |
|
|
|
} |
|
|
|
|
|
|
|
.stats-unit { |
|
|
|
font-size: 24rpx; |
|
|
|
color: #000000; |
|
|
|
margin-left: 4rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.stats-label { |
|
|
|
font-size: 22rpx; |
|
|
|
color: #000000; |
|
|
|
} |
|
|
|
|
|
|
|
/* 中间区域 */ |
|
|
|
.middle-section { |
|
|
|
display: flex; |
|
|
|
justify-content: flex-start; |
|
|
|
align-items: center; |
|
|
|
flex: 1; |
|
|
|
white-space: nowrap; |
|
|
|
overflow: hidden; |
|
|
|
text-overflow: ellipsis; |
|
|
|
} |
|
|
|
|
|
|
|
.time-reward-container { |
|
|
|
display: flex; |
|
|
|
flex-direction: column; |
|
|
|
justify-content: flex-end; |
|
|
|
align-items: flex-start; |
|
|
|
padding: 0 10rpx; |
|
|
|
width: 160rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.time-reward-title { |
|
|
|
font-size: 22rpx; |
|
|
|
color: #000000; |
|
|
|
font-weight: 500; |
|
|
|
margin-bottom: 12rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.time-reward-stats { |
|
|
|
display: flex; |
|
|
|
align-items: baseline; |
|
|
|
margin-bottom: 8rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.time-reward-number { |
|
|
|
font-size: 40rpx; |
|
|
|
color: #000000; |
|
|
|
font-weight: bold; |
|
|
|
line-height: 1; |
|
|
|
} |
|
|
|
|
|
|
|
.qr-code { |
|
|
|
width: 32rpx; |
|
|
|
height: 32rpx; |
|
|
|
.time-reward-unit { |
|
|
|
font-size: 24rpx; |
|
|
|
color: #000000; |
|
|
|
margin-left: 4rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.qr-icon { |
|
|
|
width: 24rpx; |
|
|
|
height: 24rpx; |
|
|
|
background: rgba(255, 255, 255, 0.8); |
|
|
|
border-radius: 4rpx; |
|
|
|
.time-reward-label { |
|
|
|
font-size: 22rpx; |
|
|
|
color: #000000; |
|
|
|
} |
|
|
|
|
|
|
|
/* 右侧区域 */ |
|
|
|
.right-section { |
|
|
|
display: flex; |
|
|
|
align-items: flex-end; |
|
|
|
width: 375rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.avatar-container { |
|
|
|
position: relative; |
|
|
|
margin-right: 10rpx; |
|
|
|
width: 140rpx; |
|
|
|
height: 140rpx; |
|
|
|
} |
|
|
|
|
|
|
|
&::before { |
|
|
|
content: ""; |
|
|
|
position: absolute; |
|
|
|
top: 2rpx; |
|
|
|
left: 2rpx; |
|
|
|
right: 2rpx; |
|
|
|
bottom: 2rpx; |
|
|
|
background: rgba(0, 0, 0, 0.6); |
|
|
|
border-radius: 2rpx; |
|
|
|
} |
|
|
|
.avatar { |
|
|
|
width: 140rpx; |
|
|
|
height: 140rpx; |
|
|
|
border-radius: 50%; |
|
|
|
} |
|
|
|
|
|
|
|
.profile-info { |
|
|
|
display: flex; |
|
|
|
flex-direction: column; |
|
|
|
align-items: flex-start; |
|
|
|
justify-content: flex-start; |
|
|
|
} |
|
|
|
|
|
|
|
.profile-title { |
|
|
|
font-size: 24rpx; |
|
|
|
color: #000000; |
|
|
|
margin-bottom: 4rpx; |
|
|
|
font-weight: bold; |
|
|
|
} |
|
|
|
|
|
|
|
.profile-name { |
|
|
|
font-size: 24rpx; |
|
|
|
color: #000000; |
|
|
|
font-weight: bold; |
|
|
|
} |
|
|
|
|
|
|
|
.platform-link { |
|
|
|
cursor: pointer; |
|
|
|
} |
|
|
|
|
|
|
|
.link-text { |
|
|
|
font-size: 22rpx; |
|
|
|
color: #000000; |
|
|
|
text-decoration: underline; |
|
|
|
} |
|
|
|
|
|
|
|
/* 保留原有的底部区域样式用于timeShop模式 */ |
|
|
|
.bottom-section { |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
@ -521,12 +675,6 @@ export default { |
|
|
|
max-width: 200rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.avatar { |
|
|
|
width: 113rpx; |
|
|
|
height: 113rpx; |
|
|
|
border-radius: 50%; |
|
|
|
} |
|
|
|
|
|
|
|
// 添加点击反馈动画 |
|
|
|
.dynamic-island:active { |
|
|
|
transform: scale(0.98); |
|
|
@ -561,7 +709,7 @@ export default { |
|
|
|
|
|
|
|
.compact-name { |
|
|
|
font-size: 27rpx; |
|
|
|
color: #ffffff; |
|
|
|
color: #333; |
|
|
|
font-weight: bold; |
|
|
|
flex: 1; |
|
|
|
text-align: left; |
|
|
@ -575,7 +723,7 @@ export default { |
|
|
|
width: 48rpx; |
|
|
|
height: 48rpx; |
|
|
|
border-radius: 50%; |
|
|
|
border: 2rpx solid rgba(255, 255, 255, 0.3); |
|
|
|
border: 2rpx solid rgba(0, 0, 0, 0.2); |
|
|
|
flex-shrink: 0; |
|
|
|
} |
|
|
|
|
|
|
|