Files
SmartParks_uniapp/pages/sys/login/index.vue
2025-06-19 16:48:26 +08:00

279 lines
7.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="wrap">
<view class="logo">若依移动APP</view>
<div v-if="loginType === 'currentPhone'">
<u-tabs :list="list" :is-scroll="false" :current="current" @change="onClickItem"></u-tabs>
<view v-if="current === 0">
<view class="list">
<view class="list-call">
<view class="iconfont icon-avatar" style="font-size: 22px;color:#5473e8;"></view>
<input class="u-input" type="text" v-model="username" maxlength="32" :placeholder="$t('login.placeholderAccount')" value="admin"/>
</view>
<view class="list-call">
<view class="iconfont icon-key" style="font-size: 22px;color:#5473e8;"></view>
<input class="u-input" type="text" v-model="password" maxlength="32" :placeholder="$t('login.placeholderPassword')" :password="!showPassword" value="admin123" />
<image class="u-icon-right" :src="'/static/aidex/login/eye_' + (showPassword ? 'open' : 'close') + '.png'" @click="showPass()"></image>
</view>
<div style="padding:15rpx 0 0;">
<view class="register">
<navigator class="register-link" url="forget" open-type="navigate">{{$t('login.forget')}}</navigator>
<!-- <navigator class="register-link" url="reg" open-type="navigate">{{$t('login.reg')}}</navigator> -->
</view>
<u-checkbox v-model="remember" active-color="#5473e8">{{$t('login.autoLogin')}}</u-checkbox>
</div>
</view>
<view class="button" @click="submit('1')"><text>登录</text></view>
<view class="login-bottom-box">
<u-divider> 更多登录方式 </u-divider>
<view class="oauth2">
<u-icon class="u-icon" size="100" color="#36c956" name="weixin-circle-fill" @click="wxLogin"></u-icon>
<u-icon class="u-icon" size="100" color="#23a0f0" name="qq-circle-fill" @click="qqLogin"></u-icon>
</view>
<view class="copyright">
登录即代表您已阅读并同意<u-link href="#">用户协议</u-link> <u-link href="#">隐私政策</u-link>
</view>
</view>
</view>
<view v-if="current === 1">
<view class="list">
<view class="list-call" >
<view class="iconfont icon-shouji" style="font-size: 22px;color:#5473e8;"></view>
<u-field
v-model="phoneNo"
label="+86"
placeholder="请填写手机号"
style="width: 100%;"
:border-bottom="false"
>
</u-field>
</view>
<div style="padding:25rpx 0 0;">
还没有账号<navigator class="reg-link" url="reg" open-type="navigate">{{$t('login.reg')}}</navigator>
</div>
</view>
<view class="button" @click="nextStep()"><text>下一步</text></view>
<view class="login-bottom-box">
<u-divider> 更多登录方式 </u-divider>
<view class="oauth2">
<u-icon class="u-icon" size="100" color="#36c956" name="weixin-circle-fill" @click="wxLogin"></u-icon>
<u-icon class="u-icon" size="100" color="#23a0f0" name="qq-circle-fill" @click="qqLogin"></u-icon>
</view>
<view class="copyright">
登录即代表您已阅读并同意<u-link href="#">用户协议</u-link> <u-link href="#">隐私政策</u-link>
</view>
</view>
</view>
</div>
<div v-if="loginType !== 'currentPhone'">
<view class="currentPhone-box">
<view class="number-text">183****1005</view>
<view class="other-text">认证服务由中国移动提供</view>
<u-button type="primary" @click="submit('3')">本机号码一键登录</u-button>
<u-button @click="qiehuanLogin()">其他登录方式</u-button>
</view>
<view class="login-bottom-box">
<view class="copyright">
登录即代表您已阅读并同意<u-link href="#">用户协议</u-link> <u-link href="#">隐私政策</u-link>
</view>
</view>
</div>
</view>
</template>
<script>
/**
* Copyright (c) 2013-Now http://aidex.vip All rights reserved.
*/
import base64 from '@/common/base64.js';
export default {
data() {
return {
phoneNo:'',
username: 'admin',
password: 'admin123',
loginType: 'currentPhone',
showPassword: false,
remember: true,
isValidCodeLogin: false,
validCode: '',
imgValidCodeSrc: null,
list: [{name: '用户名'}, {name: '手机号'}],
current: 0,
activeColor: '#007aff',
};
},
onLoad() {
this.$u.api.index({loginCheck: true}).then(res => {
if (res.code == '200'){
uni.reLaunch({
url: '/pages/sys/msg/index'
});
}
});
},
methods: {
showPass() {
this.showPassword = !this.showPassword;
},
qiehuanLogin(){
this.loginType = 'other'
},
onClickItem(index) {
this.current = index;
},
refreshImgValidCode(e) {
if (this.vuex_token == '') {
this.$u.api.index().then(res => {
this.imgValidCodeSrc = this.vuex_config.baseUrl + '/validCode?__sid='
+ res.sessionid + '&t=' + new Date().getTime();
});
} else {
this.imgValidCodeSrc = this.vuex_config.baseUrl + '/validCode?__sid='
+ this.vuex_token + '&t=' + new Date().getTime();
}
this.validCode = '';
},
nextStep(){
//验证码登录下一步
uni.showLoading({
title: '正在获取验证码',
mask: true
})
this.$u.api.sendCode({
phoneNo: this.phoneNo,
validCodeType:'2'
})
.then(res => {
if (res.code == '200') {
setTimeout(() => {
uni.navigateTo({
url: '/pages/sys/login/code?phoneNo='+this.phoneNo
});
}, 500);
}else{
this.$u.toast(res.msg);
setTimeout(() => {
uni.navigateTo({
url: '/pages/sys/login/code?phoneNo='+this.phoneNo
});
}, 500);
}
});
},
async submit(loginType) {
if (this.username.length == 0) {
this.$u.toast('请输入账号');
return;
}
if (this.password.length == 0) {
this.$u.toast('请输入密码');
return;
}
// this.$u.api.login(
// {
// "tenantId": '000000',
// "username": this.username,
// "password": this.password,
// "grantType": "password",
// "uuid": "7cb3ea4fe2ae4f08bbd561c94ef0191b",
// "clientId": "dab457a1ea14411787c240db05bb0832"
// }
// )
let res=await this.$u.api.login({
"tenantId": "000000", // 把单引号换成双引号
"username": this.username,
"password": this.password,
"grantType": "password",
"uuid": "7cb3ea4fe2ae4f08bbd561c94ef0191b",
"clientId": "dab457a1ea14411787c240db05bb0832"
});
console.log(res)
if (res.code=="200"){
this.$u.toast("登录成功")
this.$u.access_token=res.data.access_token
setTimeout(() => {
uni.reLaunch({
url: '/pages/sys/msg/index'
});
}, 500);
}
},
wxLogin(res) {
this.$u.toast('微信登录');
},
qqLogin() {
this.$u.toast('QQ 登录');
}
}
};
</script>
<style lang="scss">
@import 'index.scss';
.logo {
width: 80%;
font-size:64rpx;
color: #5473e8;
margin: 80rpx auto 80rpx auto;
}
.list-call-icon{
color: #ff0000;
}
.currentPhone-box{
text-align: center;
padding: 40rpx 80rpx;
.number-text{
color: #000000;
font-size: 60rpx;
}
.other-text{
color: #999999;
font-size: 26rpx;
padding: 20rpx 0;
}
.u-btn{
margin: 30rpx auto;
}
.u-hairline-border{
border: 1px solid #fff;
}
}
.register {
display:inline-block;
color: #5473e8;
height: 40rpx;
line-height: 40rpx;
font-size: 28rpx;
float:right;
margin-top: 6rpx;
}
.register-link{
float: right;
padding: 0 16rpx;
}
.reg-link{
display: inline-block;
color: #5473e8;
}
.oauth2 {
display: flex;
flex-direction: row;
justify-content: space-around;
margin: 0rpx 100rpx 30rpx;
image {
height: 80rpx;
width: 80rpx;
}
}
.u-tabs{
padding: 0 70rpx;
}
</style>