From fa80f1ae2cda9c23f7cd34065828f9ffc31b2e70 Mon Sep 17 00:00:00 2001 From: yangan <yangan0921@163.com> Date: 星期五, 25 十月 2024 08:32:39 +0800 Subject: [PATCH] feat:微信一键登录bug --- pages/login/userPassword.vue | 155 +++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 136 insertions(+), 19 deletions(-) diff --git a/pages/login/userPassword.vue b/pages/login/userPassword.vue index 73b5cfc..c65d901 100644 --- a/pages/login/userPassword.vue +++ b/pages/login/userPassword.vue @@ -2,6 +2,7 @@ <view> <view class="list"> <view class="list-call"> + <!-- #ifdef MP-WEIXIN --> <u--input v-model="username" clearable maxlength="32" @@ -9,7 +10,20 @@ placeholder="璇疯緭鍏ユ墜鏈哄彿" prefixIcon="account" prefixIconStyle="font-size: 22px;color: #909399"></u--input> + <!-- #endif --> + <!-- #ifdef H5 --> + <customPagination + style="width:100%; height: 60rpx; font-size: 30rpx;" + :options="userList" + :value="username" + v-model="username" + @changeInput="changeInput2" + @input="handleInput2" + :placeholder="'璇疯緭鍏ョ櫥褰曡处鍙�'" + ></customPagination> + <!-- #endif --> </view> + <view class="list-call"> <u--input v-model="password" clearable @@ -20,15 +34,35 @@ prefixIconStyle="font-size: 22px;color: #909399"></u--input> </view> </view> + <!-- 璁颁綇瀵嗙爜 --> + <!-- #ifdef H5 --> + <view class="jizhu"> + <view> + <u-checkbox-group + v-model="isJizhu" + placement="column" + @change="checkboxChange" + > + <u-checkbox + :checked="isChecked" + label="璁颁綇瀵嗙爜" :size='35' :iconSize="35" :labelSize="30" name="1" + placement="row"> + </u-checkbox> + </u-checkbox-group> + </view> + </view> + <!-- #endif --> <view class="loginBtn"><u-button type="primary" :text="btnText == 1 ? '缁戝畾' : '鐧诲綍'" - @click="submit()"></u-button></view> + @click="submit()" + :loading="submitLoading"></u-button></view> </view> </template> <script> import { apiLoginPassword } from '@/api/publicInterface.js'; import { mapMutations } from 'vuex'; + import customPagination from './user.vue' import { setName, setToken, setRefreshToken, setUsernameKey, setCustomerId, redirectHome } from '@/utils/status.js'; export default { name: 'userPassword', @@ -37,7 +71,16 @@ btnText: { type: Number, default: 0 + }, + userList: { + type: Array, + default: () => { + return []; + } } + }, + components: { + customPagination }, data() { return { @@ -45,8 +88,15 @@ // username:'13333333331',//璐т唬 // username: '13333333332',// 鍙告満 password: '', + isChecked:false, remember: true, - baseUrl: '' + isJizhu: uni.getStorageSync('remberPassWord').username ? ['1'] : false, + username: uni.getStorageSync('remberPassWord').username || '',//鎵胯繍鍟� + password: uni.getStorageSync('remberPassWord').password || '', + baseUrl: '', + weXinisLoginFlag:[1,2,3], //寰俊 + H5IsLoginFlag:[5,6], //h5 + submitLoading: false }; }, methods: { @@ -67,6 +117,7 @@ } let grant_type = 'password'; //鐧诲綍鎺ュ彛 + this.submitLoading = true await apiLoginPassword({ username: this.username, password: this.password, @@ -74,9 +125,11 @@ scope: 'server' }) .then(res => { + this.submitLoading = false setToken(res.access_token); setRefreshToken(res.refresh_token); if (this.btnText == 0) { + this.submitLoading = false if (res.code != 1) { // 鐧婚檰鎴愬姛锛屽瓨鍌ㄧ浉鍏充俊鎭� setToken(res.access_token); @@ -85,20 +138,58 @@ //鏌ヨ鐢ㄦ埛璇︾粏淇℃伅骞跺偍瀛� this.$reqGet('getUserEntity') .then(res => { - this.$u.toast('鐧诲綍鎴愬姛'); - this.setUserTabbar(res.data.type); - uni.setStorageSync('roleType', res.data.type); - uni.setStorageSync("userId", res.data.userId) - uni.setStorageSync("carNo", res.data.carNo) - setCustomerId(res.data.customerid); - setName(res.name); - uni.hideLoading(); - //璺宠浆椤甸潰 - this.$nextTick(() => { - redirectHome(); + + // #ifdef H5 + if(this.weXinisLoginFlag.includes(res.data.type)) { + console.log('瑙﹀彂鐧诲綍瑙掕壊') + this.$u.toast('褰撳墠瑙掕壊璇峰墠寰�灏忕▼搴忕櫥褰�') + return ; + + } + //#endif + this.$u.toast('鐧诲綍鎴愬姛'); + // #ifdef H5 + if(this.isJizhu.length){ //璁颁綇瀵嗙爜 + uni.setStorageSync('remberPassWord',{ + username: this.username, + password: this.password, }); + }else{ + uni.setStorageSync('remberPassWord',{ + username: this.username, + password: '', + }); + } + //#endif + this.submitLoading = false + this.getLoginInfo(); // 璁板綍鐧诲綍淇℃伅 + this.setUserTabbar(res.data.type); + uni.setStorageSync('roleType', res.data.type); + uni.setStorageSync("userId", res.data.userId) + uni.setStorageSync("carNo", res.data.carNo) + uni.setStorageSync("userInfo", res.data) + setCustomerId(res.data.customerid); + setName(res.name); + let data=uni.getStorageSync('userList')?JSON.parse(uni.getStorageSync('userList')):[]; + let id = data.length + 1; + if (data.filter(item=> item.username == this.username).length == 0){ + data.push({username: this.username,password: this.password,type:res.data.type}) + } + uni.setStorageSync("userList", JSON.stringify(data)) + uni.hideLoading(); + if(res.data.forcePassword == 1) { + uni.navigateTo({ + url: '/pages/login/resetPassword/resetPassword' + }) + }else { + //璺宠浆椤甸潰 + this.$nextTick(() => { + redirectHome(); + }); + } }) .catch(err => { + this.submitLoading = false this.$u.toast('鐧诲綍寮傚父锛�'); console.log(err); }); @@ -107,14 +198,13 @@ this.$u.toast(res.msg); } } else { + console.log('寰俊缁戝畾锛燂紵锛燂紵锛�') uni.login({ success: res => { if (res.code) { uni.setStorageSync('bindcode', res.code); } - } - }); - if (uni.getStorageSync('bindcode')) { + if (uni.getStorageSync('bindcode')) { this.$reqPost('wxBind', { state: 'MINI', code: uni.getStorageSync('bindcode') }, 'params').then(res => { uni.hideLoading(); @@ -126,22 +216,49 @@ } else { this.$u.toast(res.msg ? res.msg : '缁戝畾澶辫触'); } + }).finally(() => { + this.submitLoading = false; }); } + } + }); + this.submitLoading = false + } - }) - .catch(e => { + }).catch(e => { + this.submitLoading = false this.$u.toast(e); }); + + }, + //璁板綍鐧诲綍淇℃伅 + getLoginInfo(){ + this.$reqPost('setApplogonTime').then((res) => { + + }) + }, + checkboxChange(val){ + console.log(val,'isJz') } } }; </script> <style lang="scss"> + /* #ifdef H5 */ + .loginBtn{ + width: 80%; + margin: 0 auto; + } + /* #endif */ @import 'index.scss'; .dengluBtn { margin-top: 80rpx; } -</style> \ No newline at end of file + .jizhu{ + padding: 40rpx 70rpx 40rpx 70rpx; + display: flex; + justify-content: flex-end; + } +</style> -- Gitblit v1.9.1