| @ -0,0 +1,188 @@ | |||
| <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="widthFix"></image> | |||
| </view> | |||
| <view class="title"> | |||
| <view>协议与隐私政策</view> | |||
| </view> | |||
| <view class="content_pri"> | |||
| <view class="text"> | |||
| 请您务必审慎阅读、充分理解用户协议和隐私政策各条款,包括但不限于用户注意事项、用户行为规范以及为了向你提供服务而收集、使用、存储你个人信息的情况等。你可阅读<text | |||
| class="blk" @tap="handleOpenPrivacyContract">《工程项目打卡平台用户服务协议》</text>和<text | |||
| class="blk" @tap="handleOpenPrivacyContract">《工程项目打卡平台隐私权政策》</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 @tap="handleOpenPrivacyContract">《工程项目打卡平台用户服务协议》</text> | |||
| </view> | |||
| <view class=""> | |||
| 以及<text @tap="handleOpenPrivacyContract">《工程项目打卡平台隐私权政策》</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() | |||
| }, | |||
| handleOpenPrivacyContract() { | |||
| // 打开隐私协议页面 | |||
| wx.openPrivacyContract({ | |||
| success: () => {}, // 打开成功 | |||
| fail: () => {}, // 打开失败 | |||
| complete: () => {} | |||
| }) | |||
| } | |||
| } | |||
| } | |||
| </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; | |||
| image { | |||
| width: 100rpx; | |||
| } | |||
| } | |||
| .title { | |||
| text-align: center; | |||
| font-size: 36rpx; | |||
| margin: 30rpx 0rpx; | |||
| } | |||
| .content_pri { | |||
| margin-bottom: 30rpx; | |||
| font-size: 28rpx; | |||
| color: #707070; | |||
| .text { | |||
| .blk { | |||
| color: black; | |||
| } | |||
| } | |||
| } | |||
| .config { | |||
| font-size: 28rpx; | |||
| text-align: center; | |||
| line-height: 40rpx; | |||
| margin-bottom: 30rpx; | |||
| text { | |||
| color: #00aaff; | |||
| } | |||
| .content { | |||
| display: flex; | |||
| } | |||
| } | |||
| .pri_btn { | |||
| display: flex; | |||
| justify-content: space-around; | |||
| flex-wrap: wrap; | |||
| button { | |||
| width: 40%; | |||
| padding: 5rpx 0rpx; | |||
| // background: $main-color; | |||
| outline: none; | |||
| color: white; | |||
| font-size: 30rpx; | |||
| &:nth-child(1){ | |||
| background: #F2F2F2; | |||
| color: #707070; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,347 @@ | |||
| <template> | |||
| <view class="refundsOrExchange"> | |||
| <navbar :title="titleList[titleIndex]" leftClick @leftClick="$utils.navigateBack" /> | |||
| <view class="frame"> | |||
| <!-- 登录和注册 --> | |||
| <view class="loginRegister" v-if='titleIndex!=2'> | |||
| <!-- 标题 --> | |||
| <view class="title">{{titleList[titleIndex]}}</view> | |||
| <!-- 头像 --> | |||
| <view class="userIamge"> | |||
| <view> | |||
| <img src="/static/image/center/11.svg" alt="" style="width: 100%;height: 100%;"> | |||
| </view> | |||
| </view> | |||
| <!-- 用户名&密码&隐私条款 --> | |||
| <view class="form"> | |||
| <view> | |||
| <uv-input v-model="form.account" placeholder="请输入账号" border="surround" shape='circle' | |||
| clearable :customStyle="{ backgroundColor: '#f6f6f6'}"></uv-input> | |||
| </view> | |||
| <view> | |||
| <uv-input v-model="form.password" password placeholder="请输入密码" border="surround" shape='circle' | |||
| clearable :customStyle="{ backgroundColor: '#f6f6f6'}"></uv-input> | |||
| </view> | |||
| <view> | |||
| <uv-checkbox-group v-model="checkboxValue" shape="circle"> | |||
| <view class="content"> | |||
| <view style="display: flex;flex-wrap: wrap;"> | |||
| <uv-checkbox size="30rpx" :name="1"></uv-checkbox> | |||
| 请你阅读并同意我们的<span style="color: #fd5100" | |||
| @click="$refs.popup.open('getPrivacyPolicy')">《隐私条款》</span>和<span | |||
| style="color: #fd5100" | |||
| @click="$refs.popup.open('getUserAgreement')">《服务协议》</span> | |||
| </view> | |||
| </view> | |||
| </uv-checkbox-group> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <!-- 忘记密码 --> | |||
| <view class='forgetPassword' v-if='titleIndex==2'> | |||
| <!-- 标题 --> | |||
| <view class="title">{{titleList[titleIndex]}}</view> | |||
| <!-- 表单 --> | |||
| <view class="form1"> | |||
| <view class="userName"> | |||
| <uv-input v-model="form1.userName" placeholder="请输入手机号/用户/邮箱" border="surround" shape='circle' | |||
| clearable :customStyle="{ backgroundColor: '#f6f6f6'}"></uv-input> | |||
| </view> | |||
| <view class="code"> | |||
| <view class="left"> | |||
| <uv-input v-model="form1.code" placeholder="请输入验证码" border="surround" shape='circle' | |||
| clearable :customStyle="{ backgroundColor: '#f6f6f6'}"></uv-input> | |||
| </view> | |||
| <view class="right"> | |||
| <view> | |||
| <uv-toast ref="toast"></uv-toast> | |||
| <uv-code :seconds="seconds" @end="end" @start="start" ref="code" | |||
| @change="codeChange"></uv-code> | |||
| <uv-button @tap="getCode" iconSize='10rpx' color='#fd5100' | |||
| shape='circle'>{{tips}}</uv-button> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <view class="password1"> | |||
| <uv-input v-model="form1.password1" placeholder="设置您的新密码(6到50个字符)" password clearable | |||
| border="surround" shape='circle' :customStyle="{ backgroundColor: '#f6f6f6'}"></uv-input> | |||
| </view> | |||
| <view class="password2"> | |||
| <uv-input v-model="form1.password2" placeholder="重新确认密码" password clearable border="surround" | |||
| shape='circle' :customStyle="{ backgroundColor: '#f6f6f6'}"></uv-input> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <!-- 按钮 --> | |||
| <view class="btn" | |||
| @click="submit"> | |||
| <button class='a'>{{titleList[titleIndex]}}</button> | |||
| </view> | |||
| <!-- tab --> | |||
| <!-- <view class="bottomTab"> | |||
| <span :class="titleIndex==0 ? 'tabbarItemActive' : 'tabbarItemNoActive'" | |||
| @click='changePage(0)'>注册账号</span> | |||
| <span style="color: #9c9fa4">|</span> | |||
| <span :class="titleIndex==1 ? 'tabbarItemActive' : 'tabbarItemNoActive'" | |||
| @click='changePage(1)'>账号登录</span> | |||
| <span style="color: #9c9fa4">|</span> | |||
| <span :class="titleIndex==2 ? 'tabbarItemActive' : 'tabbarItemNoActive'" | |||
| @click='changePage(2)'>忘记密码</span> | |||
| </view> --> | |||
| </view> | |||
| <configPopup ref="popup"></configPopup> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| import configPopup from '@/components/config/configPopup.vue'; | |||
| export default { | |||
| components: { | |||
| configPopup | |||
| }, | |||
| onLoad(option) { | |||
| this.titleIndex = option.index || 1 | |||
| }, | |||
| data() { | |||
| return { | |||
| titleIndex: 0, | |||
| titleList: ['注册', '登录', '重置密码'], | |||
| checkboxValue: [], | |||
| form: { | |||
| account: '13135294009', | |||
| password: 'lzx123456', | |||
| }, | |||
| form1: { | |||
| userName: '', | |||
| code: '', | |||
| password1: '', | |||
| password2: '', | |||
| }, | |||
| tips: '获取验证码', | |||
| seconds: 60, | |||
| } | |||
| }, | |||
| methods: { | |||
| submit(){ | |||
| if(!this.checkboxValue.length){ | |||
| return uni.showToast({ | |||
| title: '请先同意隐私协议', | |||
| icon:'none' | |||
| }) | |||
| } | |||
| if(this.$utils.verificationAll(this.form, { | |||
| account: '请输入账号', | |||
| password: '请输入密码', | |||
| })){ | |||
| return | |||
| } | |||
| this.$store.commit('accountLogin', this.form) | |||
| }, | |||
| // 切换页面 | |||
| changePage(index) { | |||
| this.titleIndex = index | |||
| }, | |||
| confirm() { | |||
| }, | |||
| codeChange(text) { | |||
| this.tips = text; | |||
| }, | |||
| getCode() { | |||
| if (this.$refs.code.canGetCode) { | |||
| // 模拟向后端请求验证码 | |||
| uni.showLoading({ | |||
| title: '正在获取验证码' | |||
| }) | |||
| setTimeout(() => { | |||
| uni.hideLoading(); | |||
| // 这里此提示会被this.start()方法中的提示覆盖 | |||
| uni.$uv.toast('验证码已发送'); | |||
| // 通知验证码组件内部开始倒计时 | |||
| this.$refs.code.start(); | |||
| }, 2000); | |||
| } else { | |||
| uni.$uv.toast('请勿重复发送'); | |||
| } | |||
| }, | |||
| end() { | |||
| // uni.$uv.toast('倒计时结束'); | |||
| }, | |||
| start() { | |||
| // uni.$uv.toast('倒计时开始'); | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| * { | |||
| box-sizing: border-box; | |||
| } | |||
| .refundsOrExchange { | |||
| background-color: #FFF; | |||
| height: 100vh; | |||
| .frame { | |||
| background-color: #FFF; | |||
| .loginRegister { | |||
| display: flex; | |||
| flex-direction: column; | |||
| gap: 40rpx; | |||
| .title { | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: flex-end; | |||
| height: 10vh; | |||
| color: #000; | |||
| font-size: 40rpx; | |||
| font-weight: 700; | |||
| } | |||
| .userIamge { | |||
| display: flex; | |||
| justify-content: center; | |||
| height: 10vh; | |||
| >view:nth-of-type(1) { | |||
| width: 25%; | |||
| height: 100%; | |||
| border-radius: 50%; | |||
| overflow: hidden; | |||
| } | |||
| } | |||
| .form { | |||
| line-height: 50rpx; | |||
| >view:nth-of-type(1) { | |||
| padding: 20rpx 100rpx; | |||
| } | |||
| >view:nth-of-type(2) { | |||
| padding: 0 100rpx; | |||
| } | |||
| >view:nth-of-type(3) { | |||
| display: flex; | |||
| padding: 30rpx 100rpx 0 100rpx; | |||
| font-size: 22rpx | |||
| } | |||
| } | |||
| } | |||
| .btn { | |||
| // height: 5vh; | |||
| display: flex; | |||
| justify-content: center; | |||
| margin: 90rpx 0 0 0; | |||
| .a { | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center; | |||
| width: 70%; | |||
| height: 80rpx; | |||
| color: #FFF; | |||
| background-color: $uni-color; | |||
| border: 1px solid red; | |||
| border-radius: 100rpx; | |||
| font-size: 30rpx; | |||
| } | |||
| } | |||
| .bottomTab { | |||
| display: flex; | |||
| justify-content: space-between; | |||
| height: 10vh; | |||
| padding: 0 80rpx; | |||
| margin-top: 30rpx; | |||
| .tabbarItemActive { | |||
| color: $uni-color; | |||
| } | |||
| .tabbarItemNoActive { | |||
| color: #9c9fa4; | |||
| } | |||
| } | |||
| .forgetPassword { | |||
| padding: 100rpx 40rpx 0 40rpx; | |||
| .title { | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: flex-end; | |||
| height: 10vh; | |||
| color: #000; | |||
| font-size: 40rpx; | |||
| font-weight: 700; | |||
| } | |||
| .form1 { | |||
| display: flex; | |||
| flex-direction: column; | |||
| gap: 30rpx; | |||
| margin-top: 20rpx; | |||
| padding: 20rpx 80rpx; | |||
| .userName { | |||
| // padding: 20rpx 100 rpx; | |||
| } | |||
| .code { | |||
| display: flex; | |||
| width: 100%; | |||
| .left { | |||
| width: 55%; | |||
| } | |||
| .right { | |||
| width: 45%; | |||
| height: 100%; | |||
| >view:nth-of-type(1) { | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center; | |||
| width: 100%; | |||
| } | |||
| } | |||
| } | |||
| .password1 {} | |||
| .password2 {} | |||
| } | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,118 @@ | |||
| <template> | |||
| <div class="login"> | |||
| <!-- logo --> | |||
| <div class="logo"> | |||
| <image src="@/static/image/logo-img.jpg" mode=""></image> | |||
| </div> | |||
| <!-- 标题 --> | |||
| <view class="login-title">vtrip</view> | |||
| <!-- 登录按钮 --> | |||
| <view @click="login" class="login-btn"> | |||
| <uni-icons type="weixin" size="30" color="#fff"></uni-icons> | |||
| <text class="wx">微信登录</text> | |||
| </view> | |||
| <!-- 隐私政策 --> | |||
| <view class="privacy"> | |||
| <uv-radio-group> | |||
| <uv-checkbox-group v-model="consent"> | |||
| <uv-checkbox :size="30" shape="circle" active-color="#05C160" :name="privacy"></uv-checkbox> | |||
| </uv-checkbox-group> | |||
| 已同意<text class="privacy-title">《隐私政策》</text> | |||
| <text class="privacy-title">《服务条款》</text> | |||
| </uv-radio-group> | |||
| </view> | |||
| <!-- 隐私政策弹框 --> | |||
| <PrivacyAgreementPoup></PrivacyAgreementPoup> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import PrivacyAgreementPoup from '@/components/PrivacyAgreementPoup/PrivacyAgreementPoup.vue' | |||
| export default { | |||
| name : "wxLogin", | |||
| components : { PrivacyAgreementPoup }, | |||
| data() { | |||
| return { | |||
| consent : [] | |||
| } | |||
| }, | |||
| methods: { | |||
| login() { | |||
| if(this.consent.length <= 0){ | |||
| return uni.showToast({ | |||
| icon: "none", | |||
| title: "请勾选隐私协议" | |||
| }) | |||
| } | |||
| this.$store.commit('login') | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .login { | |||
| display: flex; | |||
| flex-direction: column; | |||
| justify-content: center; | |||
| align-items: center; | |||
| min-height: 100vh; | |||
| background: white; | |||
| // logo | |||
| .logo { | |||
| display: flex; | |||
| align-items: center; | |||
| justify-content: center; | |||
| image { | |||
| width: 200rpx; | |||
| height: 200rpx; | |||
| border-radius: 20rpx; | |||
| } | |||
| } | |||
| // 标题 | |||
| .login-title { | |||
| font-size: 40rpx; | |||
| font-weight: bold; | |||
| margin: 20rpx 0rpx; | |||
| } | |||
| //登录按钮 | |||
| .login-btn { | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center; | |||
| width: 70%; | |||
| background: #05C160; | |||
| height: 90rpx; | |||
| border-radius: 45rpx; | |||
| color: white; | |||
| margin-top: 200rpx; | |||
| .wx { | |||
| margin-left: 10rpx; | |||
| } | |||
| } | |||
| //隐私政策 | |||
| .privacy { | |||
| display: flex; | |||
| align-items: center; | |||
| margin-top: 20rpx; | |||
| &::v-deep .uv-checkbox-group { | |||
| align-items: center !important; | |||
| justify-content: center !important; | |||
| flex-wrap : nowrap !important; | |||
| } | |||
| .privacy-title { | |||
| color: #05C160; | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,214 @@ | |||
| <template> | |||
| <view class="login"> | |||
| <view class="logo"> | |||
| <image src="@/static/image/logo-img.jpg" mode=""></image> | |||
| </view> | |||
| <view class="title"> | |||
| vtrip | |||
| </view> | |||
| <view class="title"> | |||
| 申请获取你的头像、昵称 | |||
| </view> | |||
| <button class="chooseAvatar" open-type="chooseAvatar" @chooseavatar="onChooseAvatar"> | |||
| <view class="line"> | |||
| <view class=""> | |||
| 头像 | |||
| </view> | |||
| <view class=""> | |||
| <image :src="userInfoForm.headImage" v-if="userInfoForm.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="userInfoForm.nickName" /> | |||
| </view> | |||
| </view> | |||
| <view class="line"> | |||
| <view class=""> | |||
| 手机号 | |||
| </view> | |||
| <view class="" | |||
| v-if="userInfoForm.phone"> | |||
| <input placeholder="请输入手机号" style="text-align: right;" | |||
| disabled | |||
| v-model="userInfoForm.phone" /> | |||
| </view> | |||
| <view class="" | |||
| v-else> | |||
| <button | |||
| class="getPhoneNumber" | |||
| open-type="getPhoneNumber" | |||
| @getphonenumber="getPhone"> | |||
| 获取电话号码 | |||
| </button> | |||
| </view> | |||
| </view> | |||
| <view class="btn" @click="submit"> | |||
| 确认 | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default { | |||
| data() { | |||
| return { | |||
| userInfoForm: { | |||
| headImage: '', | |||
| nickName: '', | |||
| phone : '', | |||
| } | |||
| }; | |||
| }, | |||
| onShow() {}, | |||
| onLoad() { | |||
| this.userInfoForm.phone = this.userInfo.phone || '' | |||
| this.userInfoForm.nickName = this.userInfo.nickName || '' | |||
| this.userInfoForm.headImage = this.userInfo.headImage || '' | |||
| }, | |||
| computed: {}, | |||
| methods: { | |||
| onChooseAvatar(res) { | |||
| let self = this | |||
| self.$Oss.ossUpload(res.target.avatarUrl) | |||
| .then(url => { | |||
| self.userInfoForm.headImage = url | |||
| }) | |||
| }, | |||
| getPhone(e){ | |||
| console.log(e,'e') | |||
| this.$api('bindPhone', { | |||
| phoneCode : e.detail.code | |||
| }, res => { | |||
| if(res.code == 200){ | |||
| let phoneObj = JSON.parse(res.result) | |||
| if(phoneObj.errmsg == 'ok'){ | |||
| this.userInfoForm.phone = phoneObj.phone_info.phoneNumber | |||
| }else{ | |||
| uni.showModal({ | |||
| title: phoneObj.errmsg | |||
| }) | |||
| } | |||
| console.log(phoneObj); | |||
| } | |||
| }) | |||
| }, | |||
| submit() { | |||
| let self = this | |||
| uni.createSelectorQuery().in(this) | |||
| .select("#nickName") | |||
| .fields({ | |||
| properties: ["value"], | |||
| }) | |||
| .exec((res) => { | |||
| const nickName = res?.[0]?.value | |||
| self.userInfoForm.nickName = nickName | |||
| if (self.$utils.verificationAll(self.userInfoForm, { | |||
| headImage: '请选择头像', | |||
| nickName: '请填写昵称', | |||
| phone: '请填写昵称', | |||
| })) { | |||
| return | |||
| } | |||
| self.$api('updateInfo', { | |||
| avatarUrl : self.userInfoForm.headImage, | |||
| nickName : self.userInfoForm.nickName, | |||
| phone : self.userInfoForm.phone, | |||
| }, res => { | |||
| if (res.code == 200) { | |||
| this.$store.commit('getUserInfo') | |||
| uni.reLaunch({ | |||
| url:'/pages/index/index' | |||
| }) | |||
| } | |||
| }) | |||
| }) | |||
| }, | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .login { | |||
| display: flex; | |||
| flex-direction: column; | |||
| justify-content: center; | |||
| align-items: center; | |||
| height: 100vh; | |||
| background-color: #fff; | |||
| .logo{ | |||
| height: 140rpx; | |||
| width: 140rpx; | |||
| image{ | |||
| height: 140rpx; | |||
| width: 140rpx; | |||
| border-radius: 30rpx; | |||
| } | |||
| margin-bottom: 20rpx; | |||
| } | |||
| .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; | |||
| } | |||
| .getPhoneNumber{ | |||
| all: unset; | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center; | |||
| // background: $uni-linear-gradient-btn-color; | |||
| background: $uni-color; | |||
| color: #fff; | |||
| width: 200rpx; | |||
| height: 60rpx; | |||
| border-radius: 30rpx; | |||
| font-size: 24rpx; | |||
| } | |||
| } | |||
| </style> | |||