|
|
|
@ -57,8 +57,12 @@ |
|
|
|
<text>{{ phoneLoading ? '正在绑定手机号' : '绑定手机号,解锁完整半径' }}</text> |
|
|
|
</button> |
|
|
|
|
|
|
|
<button class="skip-login-btn" hover-class="skip-login-btn-hover" @tap="skipLogin"> |
|
|
|
暂不登录 |
|
|
|
</button> |
|
|
|
|
|
|
|
<view class="login-tip"> |
|
|
|
{{ needPhoneAuth ? '最后一步,绑定后即可进入主页' : '使用微信身份轻松进入校园生活世界' }} |
|
|
|
{{ needPhoneAuth ? '最后一步,绑定后即可进入主页' : '轻松进入校园生活世界' }} |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="tui-protocol" hover-class="opcity" :hover-stay-time="150"> |
|
|
|
@ -72,6 +76,19 @@ |
|
|
|
<text class="tui-protocol-red" @tap.stop="protocol('2')">《隐私政策》</text> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
<view v-if="skipConfirmVisible" class="skip-confirm-mask" @tap="closeSkipConfirm"> |
|
|
|
<view class="skip-confirm-card" @tap.stop> |
|
|
|
<view class="skip-confirm-glow"></view> |
|
|
|
<view class="skip-confirm-icon">!</view> |
|
|
|
<view class="skip-confirm-title">确认暂不登录吗?</view> |
|
|
|
<view class="skip-confirm-desc">不登录将无法完整体验半径里的拼团、跑腿、抽奖等相关功能,你仍可先进入首页逛逛。</view> |
|
|
|
<view class="skip-confirm-actions"> |
|
|
|
<view class="skip-confirm-cancel" @tap="closeSkipConfirm">继续登录</view> |
|
|
|
<view class="skip-confirm-ok" @tap="confirmSkipLogin">先去逛逛</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
|
|
|
|
@ -84,6 +101,7 @@ |
|
|
|
loginLoading: false, |
|
|
|
phoneLoading: false, |
|
|
|
needPhoneAuth: false, |
|
|
|
skipConfirmVisible: false, |
|
|
|
customId: '', |
|
|
|
saleId: '', |
|
|
|
redirectKey: '' |
|
|
|
@ -247,6 +265,25 @@ |
|
|
|
this.goAfterLogin(true) |
|
|
|
}, 200) |
|
|
|
}, |
|
|
|
skipLogin() { |
|
|
|
this.skipConfirmVisible = true |
|
|
|
}, |
|
|
|
closeSkipConfirm() { |
|
|
|
this.skipConfirmVisible = false |
|
|
|
}, |
|
|
|
confirmSkipLogin() { |
|
|
|
this.skipConfirmVisible = false |
|
|
|
uni.removeStorageSync('authPendingTargetPath') |
|
|
|
uni.removeStorageSync('pendingShareTargetPath') |
|
|
|
uni.reLaunch({ |
|
|
|
url: '/pages/index/index', |
|
|
|
fail: () => { |
|
|
|
uni.switchTab({ |
|
|
|
url: '/pages/index/index' |
|
|
|
}) |
|
|
|
} |
|
|
|
}) |
|
|
|
}, |
|
|
|
goAfterLogin(clearRedirect) { |
|
|
|
const pendingPath = this.redirectKey ? uni.getStorageSync(this.redirectKey) : '' |
|
|
|
const fallbackTargetPath = uni.getStorageSync('authPendingTargetPath') || uni.getStorageSync('pendingShareTargetPath') || getEnterShareTarget() || '' |
|
|
|
@ -676,6 +713,35 @@ |
|
|
|
background: linear-gradient(90deg, rgba(227, 255, 150, 0.98), rgba(166, 255, 234, 0.98)); |
|
|
|
} |
|
|
|
|
|
|
|
.skip-login-btn { |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
justify-content: center; |
|
|
|
position: absolute; |
|
|
|
top: 24rpx; |
|
|
|
right: 24rpx; |
|
|
|
width: 152rpx; |
|
|
|
height: 50rpx; |
|
|
|
margin: 0; |
|
|
|
padding: 0; |
|
|
|
border: 1rpx solid rgba(44, 175, 121, 0.34); |
|
|
|
border-radius: 999rpx; |
|
|
|
background: rgba(255, 255, 255, 0.72); |
|
|
|
color: #2caf79; |
|
|
|
font-size: 22rpx; |
|
|
|
font-weight: 700; |
|
|
|
line-height: 50rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.skip-login-btn::after { |
|
|
|
border: 0; |
|
|
|
} |
|
|
|
|
|
|
|
.skip-login-btn-hover { |
|
|
|
transform: scale(0.985); |
|
|
|
opacity: 0.86; |
|
|
|
} |
|
|
|
|
|
|
|
.login-tip { |
|
|
|
margin-top: 22rpx; |
|
|
|
color: rgba(43, 83, 70, 0.52); |
|
|
|
@ -704,6 +770,112 @@ |
|
|
|
font-weight: 600; |
|
|
|
} |
|
|
|
|
|
|
|
.skip-confirm-mask { |
|
|
|
position: fixed; |
|
|
|
left: 0; |
|
|
|
right: 0; |
|
|
|
top: 0; |
|
|
|
bottom: 0; |
|
|
|
z-index: 99; |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
justify-content: center; |
|
|
|
padding: 48rpx; |
|
|
|
background: rgba(20, 48, 39, 0.38); |
|
|
|
backdrop-filter: blur(12rpx); |
|
|
|
} |
|
|
|
|
|
|
|
.skip-confirm-card { |
|
|
|
position: relative; |
|
|
|
width: 100%; |
|
|
|
padding: 54rpx 42rpx 38rpx; |
|
|
|
box-sizing: border-box; |
|
|
|
overflow: hidden; |
|
|
|
border: 1rpx solid rgba(255, 255, 255, 0.82); |
|
|
|
border-radius: 42rpx; |
|
|
|
background: |
|
|
|
radial-gradient(circle at 88% 0, rgba(166, 255, 234, 0.56), rgba(255, 255, 255, 0) 260rpx), |
|
|
|
linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(246, 255, 249, 0.94)); |
|
|
|
box-shadow: 0 36rpx 90rpx rgba(18, 81, 59, 0.24); |
|
|
|
} |
|
|
|
|
|
|
|
.skip-confirm-glow { |
|
|
|
position: absolute; |
|
|
|
right: -50rpx; |
|
|
|
top: -70rpx; |
|
|
|
width: 220rpx; |
|
|
|
height: 220rpx; |
|
|
|
border-radius: 50%; |
|
|
|
background: rgba(166, 255, 234, 0.56); |
|
|
|
filter: blur(12rpx); |
|
|
|
} |
|
|
|
|
|
|
|
.skip-confirm-icon { |
|
|
|
position: relative; |
|
|
|
z-index: 1; |
|
|
|
width: 78rpx; |
|
|
|
height: 78rpx; |
|
|
|
margin: 0 auto 24rpx; |
|
|
|
border-radius: 28rpx; |
|
|
|
background: linear-gradient(135deg, #dcff8d, #8fffe7); |
|
|
|
color: #0b5b47; |
|
|
|
font-size: 42rpx; |
|
|
|
font-weight: 900; |
|
|
|
line-height: 78rpx; |
|
|
|
text-align: center; |
|
|
|
box-shadow: 0 18rpx 42rpx rgba(44, 175, 121, 0.24); |
|
|
|
} |
|
|
|
|
|
|
|
.skip-confirm-title { |
|
|
|
position: relative; |
|
|
|
z-index: 1; |
|
|
|
color: #17372d; |
|
|
|
font-size: 34rpx; |
|
|
|
font-weight: 800; |
|
|
|
text-align: center; |
|
|
|
} |
|
|
|
|
|
|
|
.skip-confirm-desc { |
|
|
|
position: relative; |
|
|
|
z-index: 1; |
|
|
|
margin-top: 20rpx; |
|
|
|
color: rgba(43, 83, 70, 0.68); |
|
|
|
font-size: 25rpx; |
|
|
|
line-height: 1.7; |
|
|
|
text-align: center; |
|
|
|
} |
|
|
|
|
|
|
|
.skip-confirm-actions { |
|
|
|
position: relative; |
|
|
|
z-index: 1; |
|
|
|
display: flex; |
|
|
|
gap: 20rpx; |
|
|
|
margin-top: 38rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.skip-confirm-cancel, |
|
|
|
.skip-confirm-ok { |
|
|
|
flex: 1; |
|
|
|
height: 82rpx; |
|
|
|
border-radius: 999rpx; |
|
|
|
font-size: 27rpx; |
|
|
|
font-weight: 800; |
|
|
|
line-height: 82rpx; |
|
|
|
text-align: center; |
|
|
|
} |
|
|
|
|
|
|
|
.skip-confirm-cancel { |
|
|
|
background: rgba(255, 255, 255, 0.76); |
|
|
|
color: rgba(43, 83, 70, 0.72); |
|
|
|
border: 1rpx solid rgba(44, 175, 121, 0.18); |
|
|
|
} |
|
|
|
|
|
|
|
.skip-confirm-ok { |
|
|
|
background: linear-gradient(90deg, #dcff8d, #8fffe7); |
|
|
|
color: #0b5b47; |
|
|
|
box-shadow: 0 16rpx 36rpx rgba(44, 175, 121, 0.2); |
|
|
|
} |
|
|
|
|
|
|
|
@keyframes ipBreath { |
|
|
|
0%, |
|
|
|
100% { |
|
|
|
|