| | |
| | | <template> |
| | | <!-- <template> |
| | | <view class="login"> |
| | | <image src="@/static/login/banner.png" class="background"></image> |
| | | <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" |
| | |
| | | } |
| | | } |
| | | </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> |
| | | |