From e170fd5e5b5b7fbc9a19d7aff4cf0908adeffe10 Mon Sep 17 00:00:00 2001 From: 付延余 <f-yanyu@outlook.com> Date: 星期一, 19 十二月 2022 14:09:12 +0800 Subject: [PATCH] ‘第一次提交’ --- pages/login/login.vue | 288 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 271 insertions(+), 17 deletions(-) diff --git a/pages/login/login.vue b/pages/login/login.vue index 5654590..2b7adac 100644 --- a/pages/login/login.vue +++ b/pages/login/login.vue @@ -1,7 +1,31 @@ -<template> +<!-- <template> <view class="login"> <image src="@/static/login/banner.png" class="background"></image> - <view class="loginBtn"><u-button throttleTime="3000" text="寰俊璐﹀彿蹇嵎鐧诲綍" type="success" shape="circle" icon="weixin-fill" @click="wxLogin"></u-button></view> + <view class="login-container"> + <view class="loginBtn"><u-button text="寰俊璐﹀彿蹇嵎鐧诲綍" type="success" shape="circle" icon="weixin-fill" @click="toGrantAuthorization"></u-button></view> + <view class="utils"><text @click="toBindPage">缁戝畾绯荤粺璐﹀彿</text></view> + </view> + <view class="loginBottom"><text>灏忕▼搴忎粎渚涘凡鎷ユ湁绯荤粺璐﹀彿鐗瑰畾鍐呴儴浜哄憳浣跨敤</text></view> + <u-modal + @confirm="wxLoginConfirm" + @cancel="wxLoginCancel" + @close="wxLoginClose" + :show="wxLoginModal.show" + :title="wxLoginModal.title" + :content="wxLoginModal.content" + :showCancelButton="true" + ></u-modal> + <view class="toGrantAuthorization-container"> + <u-popup :show="popupShow" mode="bottom" @close="closePopup" @open="openPopup" round="10" :safeAreaInsetBottom="true"> + <view class="popup-warp"> + <view class="body"><text>鏈皬绋嬪簭锛屼粎渚涘凡鎷ユ湁绯荤粺璐﹀彿鐗瑰畾鍐呴儴浜哄憳鐧诲綍浣跨敤锛岀偣鍑诲悓鎰忓嵆琛ㄧず鎮ㄥ凡鍚屾剰鐩稿簲淇℃伅鎺堟潈銆�</text></view> + <view class="btn"> + <u-button @click="popupShow = false" type="error" text="涓嶅悓鎰�" shape="circle" :plain="true"></u-button> + <u-button @click="wxLogin" type="error" text="鍚屾剰" throttleTime="3000" shape="circle"></u-button> + </view> + </view> + </u-popup> + </view> </view> </template> @@ -10,7 +34,13 @@ export default { data() { return { - wxcode: '' + wxcode: '', //寰俊code + wxLoginModal: { + show: false, + title: '鎻愮ず', + content: '' + }, + popupShow: false }; }, onShow() { @@ -20,7 +50,11 @@ } }, methods: { + toGrantAuthorization() { + this.popupShow = true; + }, wxLogin() { + this.popupShow = false; uni.showLoading({ title: '鍔犺浇涓�...' }); @@ -32,12 +66,9 @@ this.wxSmallLogin(this.wxcode) .then(res => { if (res.data.data == '鐢ㄦ埛涓嶅瓨鍦�') { - this.$u.toast('鏈粦瀹氱郴缁熻处鍙凤紝鍗冲皢璺宠浆缁戝畾椤甸潰锛�') - setTimeout(()=>{ - uni.navigateTo({ - url: '/pages/register/register' - }); - },1000) + // this.$u.toast('鏈粦瀹氱郴缁熻处鍙凤紝鍗冲皢璺宠浆缁戝畾椤甸潰锛�'); + this.wxLoginModal.content = '鏈粦瀹氱郴缁熻处鍙凤紝鏄惁璺宠浆璐﹀彿缁戝畾椤甸潰锛�'; + this.wxLoginModal.show = true; } else if (res.data.active && res.data.active == true) { const { access_token, refresh_token, token_type, scope } = res.data; try { @@ -66,6 +97,32 @@ } } }); + }, + toBindPage() { + uni.navigateTo({ + url: '/pages/register/register' + }); + }, + // 妯℃�佹 + wxLoginConfirm() { + uni.navigateTo({ + url: '/pages/register/register' + }); + this.wxLoginModal.show = false; + }, + wxLoginCancel() { + this.wxLoginModal.show = false; + }, + wxLoginClose() { + this.wxLoginModal.show = false; + }, + // 寮瑰嚭妗� + openPopup() { + console.log('open'); + }, + closePopup() { + this.popupShow = false; + console.log('close'); } } }; @@ -80,21 +137,218 @@ // height: vww(289); height: vww(246); } - - .loginBtn { + .login-container { margin: vww(60) auto; width: 80%; - .u-button { - .u-icon { - .u-icon__icon { - font-size: vww(30) !important; + .loginBtn { + .u-button { + .u-icon { + .u-icon__icon { + font-size: vww(30) !important; + } } + .u-button__text { + font-size: vww(17) !important; + font-weight: 530; + } + } + + .u-button--success { + border-style: none; + background-color: #3ebc17; } } - .u-button--success { - border-style: none; + .utils { + font-size: vww(14); + margin-top: vww(20); + text-align: center; + color: #346a9d; + } + } + + .loginBottom { + color: #aaaaaa; + margin-top: vww(180); + font-size: vww(14); + text-align: center; + } + + // 寮瑰嚭妗� + .toGrantAuthorization-container { + .u-popup { + .u-transition { + .u-popup__content { + .popup-warp { + height: vww(200); + padding: vww(10) vww(20); + .body { + width: 100%; + height: 70%; + } + .btn { + display: flex; + justify-content: space-between; + .u-button { + width: 40%; + } + } + } + } + } } } } </style> + --> + + <template> + <view class="login"> + <u-overlay :show="show" @click="show = false"></u-overlay> + <image src="@/static/login/banner.png" class="background"></image> + <view class="inputBox"> + <view class="phone"> + <image src="@/static/login/phone.png" mode="鍔犺浇閿欒"></image> + <input type="text" placeholder="璇疯緭鍏ョ敤鎴峰悕/鎵嬫満鍙�" v-model="formData.username" /> + </view> + <view class="password"> + <image src="@/static/login/lock.png" mode="鍔犺浇閿欒" /> + <input type="password" placeholder="璇疯緭鍏ヨ处鍙峰瘑鐮�" v-model="formData.password" /> + </view> + <view class="loginBtn"><button type="default" @click="loginSubmit">鐧诲綍</button></view> + </view> + </view> + </template> + + <script> + import { setAccessToken, setTokenType, setRefreshToken, setClientId, setScope, redirectHome, redirectLogin } from '@/utils/status.js'; + export default { + name: 'login', + data() { + return { + show:false, + formData: { + // username: 'zhangjialiang', + // password: '123456aaa', + // username: 'gequan', + // password: 'gequan!@#$', + username: '', + password: '' + }, + bindData: { + state: 'MINI', + code: '' + } + }; + }, + onShow() { + // 娓呴櫎缂撳瓨 + if (uni.getStorageSync('userInfo') || uni.getStorageSync('access_token') || uni.getStorageSync('refresh_token')) { + uni.clearStorageSync(); + } + }, + methods: { + loginSubmit() { + if(this.formData.username == ''){ + uni.showToast({ + title:'璇疯緭鍏ョ敤鎴峰悕锛�', + icon:'none' + }) + } else if(this.formData.password == ''){ + uni.showToast({ + title:'璇疯緭鍏ュ瘑鐮侊紒', + icon:'none' + }) + } else { + this.show = true; + uni.showLoading({ + title: '鐧诲綍涓�...' + }); + this.apiLogin(this.formData) + .then(this.saveUserInfo) + .catch(this.loginFail); + } + }, + saveUserInfo(response) { + uni.hideLoading(); + this.show = false; + if (response.statusCode === 200) { + const { access_token, refresh_token, token_type, scope } = response.data; + try { + setAccessToken(access_token); + setTokenType(token_type); + setRefreshToken(refresh_token); + setScope(scope); + this.$store.dispatch('menus'); + uni.hideLoading(); + redirectHome(); + } catch (e) { + console.log('妫�娴嬪埌閿欒',e); + } + } else { + uni.showToast({ + title: response.data.msg, + icon:'none', + duration: 2000 + }); + } + }, + loginFail(err) { + this.show = false; + console.log('鐧诲綍鎺ュ彛閿欒', err); + } + } + }; + </script> + + <style lang="scss" scoped> + .login { + .background { + width: 100%; + height: vww(289); + // height: vww(246); + } + .inputBox { + width: vww(280); + margin: vww(40) auto; + input { + width: vww(240); + margin-left: vww(8); + } + .phone { + width: vww(280); + height: vww(36); + display: flex; + align-items: center; + border-bottom: vww(1) solid #cccccc; + image { + width: vww(20); + height: vww(20); + } + } + .password { + width: vww(280); + height: vww(36); + display: flex; + align-items: center; + margin-top: vww(40); + border-bottom: vww(1) solid #cccccc; + image { + width: vww(20); + height: vww(20); + } + } + .loginBtn { + margin-top: vww(80); + + button { + background-color: #007aff; + color: #ffffff; + font-size: vww(16); + border-radius: vww(22); + } + } + } + } + </style> + \ No newline at end of file -- Gitblit v1.9.1