@ -0,0 +1,169 @@ | |||||
<template> | |||||
<uv-popup ref="popup" z-index="99999" :closeOnClickOverlay="false" :customStyle="{ backgroundColor: 'transparent' }"> | |||||
<view class="privacyPopup"> | |||||
<view class="icon"> | |||||
<image src="/static/image/PrivacyAgreementPoup/icon.png" | |||||
mode=""></image> | |||||
</view> | |||||
<view class="title"> | |||||
<view>协议与隐私政策</view> | |||||
</view> | |||||
<view class="content_pri"> | |||||
<view class="text"> | |||||
欢迎来到酒店布草!我们根据最新的法律法规、监管政策要求,更新了《用户协议》和《隐私政策》,请您认真阅读。 | |||||
</view> | |||||
</view> | |||||
<view class="config"> | |||||
<uv-checkbox-group v-model="checkboxValue" shape="circle"> | |||||
<view class="content"> | |||||
<view style="display: flex;"> | |||||
<!-- <uv-checkbox size="30rpx" :name="1"></uv-checkbox> --> | |||||
同意<text @click="goToPrivacy">《酒店布草隐私政策》</text> | |||||
</view> | |||||
<view class=""> | |||||
以及<text @click="goToPrivacy">《用户协议》</text> | |||||
</view> | |||||
</view> | |||||
</uv-checkbox-group> | |||||
</view> | |||||
<view class="pri_btn"> | |||||
<button class="confuse_btn" @click="confusePrivacy">拒绝</button> | |||||
<button | |||||
class="confirm_btn" id="agree-btn" | |||||
open-type="agreePrivacyAuthorization" | |||||
@agreeprivacyauthorization="handleAgreePrivacyAuthorization">同意</button> | |||||
</view> | |||||
</view> | |||||
</uv-popup> | |||||
</template> | |||||
<script> | |||||
export default { | |||||
name: 'PrivacyAgreementPoup', | |||||
data() { | |||||
return { | |||||
resolvePrivacyAuthorization: {}, | |||||
checkboxValue : false | |||||
} | |||||
}, | |||||
mounted() { | |||||
if(wx.getPrivacySetting){ | |||||
wx.getPrivacySetting({ | |||||
success: res => { | |||||
console.log(res) | |||||
if (res.needAuthorization) { | |||||
// 需要弹出隐私协议 | |||||
this.init() | |||||
} | |||||
}, | |||||
fail: () => {} | |||||
}) | |||||
} | |||||
}, | |||||
methods: { | |||||
//初始化 | |||||
init(resolve) { | |||||
this.$refs.popup.open('center') | |||||
this.resolvePrivacyAuthorization = resolve | |||||
}, | |||||
// 打开隐私协议 | |||||
goToPrivacy() { | |||||
wx.openPrivacyContract({ | |||||
success: () => { | |||||
console.log('打开成功'); | |||||
}, // 打开成功 | |||||
fail: () => { | |||||
uni.showToast({ | |||||
title: '打开失败,稍后重试', | |||||
icon: 'none' | |||||
}) | |||||
} // 打开失败 | |||||
}) | |||||
}, | |||||
// 拒绝 | |||||
confusePrivacy() { | |||||
this.$refs.popup.close() | |||||
// this.resolvePrivacyAuthorization({ | |||||
// event: 'disagree' | |||||
// }) | |||||
}, | |||||
// 同意 | |||||
handleAgreePrivacyAuthorization() { | |||||
// 告知平台用户已经同意,参数传同意按钮的id | |||||
// this.resolvePrivacyAuthorization({ | |||||
// buttonId: 'agree-btn', | |||||
// event: 'agree' | |||||
// }) | |||||
this.$refs.popup.close() | |||||
} | |||||
} | |||||
} | |||||
</script> | |||||
<style lang="scss" scoped> | |||||
.privacyPopup { | |||||
width: 90%; | |||||
margin: 0rpx auto; | |||||
background: white; | |||||
border-radius: 20rpx; | |||||
box-sizing: border-box; | |||||
padding: 40rpx 30rpx; | |||||
.icon{ | |||||
display: flex; | |||||
justify-content: center; | |||||
align-items: center; | |||||
padding-bottom: 30rpx; | |||||
image{ | |||||
width: 90rpx; | |||||
height: 90rpx; | |||||
} | |||||
} | |||||
.title { | |||||
text-align: center; | |||||
font-size: 36rpx; | |||||
} | |||||
.content_pri { | |||||
padding: 30rpx 0rpx; | |||||
font-size: 28rpx; | |||||
} | |||||
.config { | |||||
font-size: 28rpx; | |||||
text-align: center; | |||||
line-height: 40rpx; | |||||
margin-bottom: 30rpx; | |||||
text { | |||||
color: $uni-color; | |||||
} | |||||
.content{ | |||||
display: flex; | |||||
} | |||||
} | |||||
.pri_btn { | |||||
display: flex; | |||||
.confuse_btn{ | |||||
background-color: #F2F2F2; | |||||
color: #BDBDBD; | |||||
} | |||||
button { | |||||
margin: 10rpx; | |||||
flex: 1; | |||||
background: $uni-color; | |||||
outline: none; | |||||
color: white; | |||||
font-size: 30rpx; | |||||
} | |||||
} | |||||
} | |||||
</style> |
@ -0,0 +1,153 @@ | |||||
<template> | |||||
<view class="login"> | |||||
<view class="logo"> | |||||
<!-- <image src="/static/image/login/logo.png" mode=""></image> --> | |||||
</view> | |||||
<view class="title"> | |||||
欢迎使用酒店桌布租赁平台 | |||||
</view> | |||||
<view class="btn mt" | |||||
@click="wxLogin"> | |||||
<view class="icon"> | |||||
<image src="../static/auth/wx.png" mode=""></image> | |||||
</view> | |||||
<view class=""> | |||||
微信授权登录 | |||||
</view> | |||||
</view> | |||||
<!-- <view class="btn b2"> | |||||
使用短信验证登录 | |||||
</view> --> | |||||
<view class="config"> | |||||
<uv-checkbox-group | |||||
v-model="checkboxValue" | |||||
shape="circle"> | |||||
<view class="content"> | |||||
<view | |||||
style="display: flex;"> | |||||
<uv-checkbox | |||||
size="40rpx" | |||||
icon-size="30rpx" | |||||
activeColor="#FD5100" | |||||
:name="1" | |||||
></uv-checkbox> | |||||
阅读并同意我们的<text @click="openConfigDetail('privacyAgreement')">“服务协议与隐私条款”</text> | |||||
</view> | |||||
<view class=""> | |||||
以及<text @click="openConfigDetail('userAgreement')">个人信息保护指引</text> | |||||
</view> | |||||
</view> | |||||
</uv-checkbox-group> | |||||
</view> | |||||
<configPopup ref="popup"></configPopup> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
import configPopup from '@/components/config/configPopup.vue'; | |||||
export default { | |||||
name : 'Login', | |||||
data() { | |||||
return { | |||||
checkboxValue : [] | |||||
} | |||||
}, | |||||
methods: { | |||||
wxLogin(){ | |||||
if(!this.checkboxValue.length){ | |||||
return uni.showToast({ | |||||
title: '请先同意隐私协议', | |||||
icon:'none' | |||||
}) | |||||
} | |||||
this.$store.commit('login') | |||||
}, | |||||
//打开应用配置 | |||||
openConfigDetail(key){ | |||||
this.$refs.popup.open(key) | |||||
} | |||||
} | |||||
} | |||||
</script> | |||||
<style scoped lang="scss"> | |||||
.login{ | |||||
display: flex; | |||||
justify-content: center; | |||||
align-items: center; | |||||
height: 80vh; | |||||
flex-direction: column; | |||||
position: relative; | |||||
.logo{ | |||||
height: 140rpx; | |||||
width: 140rpx; | |||||
background-color: #ddd; | |||||
border-radius: 30rpx; | |||||
image{ | |||||
width: 80rpx; | |||||
height: 80rpx; | |||||
} | |||||
margin-bottom: 20rpx; | |||||
} | |||||
.title{ | |||||
position: relative; | |||||
font-weight: 900; | |||||
font-size: 45rpx; | |||||
&::after{ | |||||
content: ''; | |||||
position: absolute; | |||||
left: 0; | |||||
top: 100%; | |||||
display: block; | |||||
height: 8rpx; | |||||
width: 210rpx; | |||||
background: linear-gradient(to right,$uni-color, #fff); | |||||
} | |||||
} | |||||
.btn{ | |||||
width: 80%; | |||||
height: 100rpx; | |||||
background-color: $uni-color; | |||||
color: #fff; | |||||
display: flex; | |||||
justify-content: center; | |||||
align-items: center; | |||||
margin: 20rpx 0; | |||||
border-radius: 20rpx; | |||||
.icon{ | |||||
margin-right: 10rpx; | |||||
image{ | |||||
width: 40rpx; | |||||
height: 35rpx; | |||||
} | |||||
} | |||||
} | |||||
.b2{ | |||||
background-color: #3c69f122; | |||||
color: #3c69f1; | |||||
} | |||||
.mt{ | |||||
margin-top: 200rpx; | |||||
} | |||||
.config{ | |||||
position: absolute; | |||||
bottom: 0; | |||||
font-size: 22rpx; | |||||
text-align: center; | |||||
line-height: 40rpx; | |||||
text{ | |||||
color: $uni-color; | |||||
} | |||||
} | |||||
} | |||||
</style> |
@ -0,0 +1,133 @@ | |||||
<template> | |||||
<view class="login"> | |||||
<view class="title"> | |||||
酒店桌布租赁平台 | |||||
</view> | |||||
<view class="title"> | |||||
申请获取你的头像、昵称 | |||||
</view> | |||||
<button class="chooseAvatar" open-type="chooseAvatar" @chooseavatar="onChooseAvatar"> | |||||
<view class="line"> | |||||
<view class=""> | |||||
头像 | |||||
</view> | |||||
<view class=""> | |||||
<image :src="userInfo.headImage" v-if="userInfo.headImage" style="width: 60rpx;height: 60rpx;" | |||||
mode=""></image> | |||||
<image src="../static/auth/headImage.png" v-else style="width: 50rpx;height: 50rpx;" mode=""></image> | |||||
</view> | |||||
</view> | |||||
</button> | |||||
<view class="line"> | |||||
<view class=""> | |||||
昵称 | |||||
</view> | |||||
<view class=""> | |||||
<input type="nickname" placeholder="请输入昵称" style="text-align: right;" id="nickName" | |||||
v-model="userInfo.nickName" /> | |||||
</view> | |||||
</view> | |||||
<view class="btn" @click="submit"> | |||||
确认 | |||||
</view> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default { | |||||
data() { | |||||
return { | |||||
userInfo: { | |||||
headImage: '', | |||||
nickName: '', | |||||
} | |||||
}; | |||||
}, | |||||
onShow() {}, | |||||
computed: {}, | |||||
methods: { | |||||
onChooseAvatar(res) { | |||||
let self = this | |||||
self.$Oss.ossUpload(res.target.avatarUrl) | |||||
.then(url => { | |||||
self.userInfo.headImage = url | |||||
}) | |||||
}, | |||||
submit() { | |||||
let self = this | |||||
uni.createSelectorQuery().in(this) | |||||
.select("#nickName") | |||||
.fields({ | |||||
properties: ["value"], | |||||
}) | |||||
.exec((res) => { | |||||
const nickName = res?.[0]?.value | |||||
self.userInfo.nickName = nickName | |||||
if (self.$utils.verificationAll(self.userInfo, { | |||||
headImage: '请选择头像', | |||||
nickName: '请填写昵称', | |||||
})) { | |||||
return | |||||
} | |||||
self.$api('infoUpdateInfo', self.userInfo, res => { | |||||
if (res.code == 200) { | |||||
uni.switchTab({ | |||||
url:'/pages/center/center' | |||||
}) | |||||
} | |||||
}) | |||||
}) | |||||
}, | |||||
} | |||||
} | |||||
</script> | |||||
<style lang="scss" scoped> | |||||
.login { | |||||
display: flex; | |||||
flex-direction: column; | |||||
justify-content: center; | |||||
align-items: center; | |||||
height: 80vh; | |||||
.title { | |||||
line-height: 45rpx; | |||||
font-weight: 900; | |||||
} | |||||
.line { | |||||
display: flex; | |||||
justify-content: space-between; | |||||
align-items: center; | |||||
width: 80%; | |||||
border-bottom: 1px solid #00000023; | |||||
padding: 30rpx 0; | |||||
margin: 0 auto; | |||||
} | |||||
.chooseAvatar { | |||||
width: 100%; | |||||
padding: 0; | |||||
margin: 0; | |||||
margin-top: 10vh; | |||||
border: none; | |||||
} | |||||
.btn { | |||||
// background: $uni-linear-gradient-btn-color; | |||||
background: $uni-color; | |||||
color: #fff; | |||||
width: 80%; | |||||
padding: 20rpx 0; | |||||
text-align: center; | |||||
border-radius: 15rpx; | |||||
margin-top: 10vh; | |||||
} | |||||
} | |||||
</style> |