|
|
<!-- 蓝色简洁登录页面 -->
|
|
|
<template>
|
|
|
<view class="t-login">
|
|
|
<!-- 页面装饰图片 -->
|
|
|
<image class="img-a" src="https://zhoukaiwen.com/img/loginImg/2.png"></image>
|
|
|
<image class="img-b" src="https://zhoukaiwen.com/img/loginImg/3.png"></image>
|
|
|
<!-- 标题 -->
|
|
|
<view class="t-b">{{ title }}</view>
|
|
|
<!-- <view class="t-b2">欢迎使用,前端铺子样式组件</view> -->
|
|
|
<form class="cl">
|
|
|
<view class="t-a">
|
|
|
<image src="https://zhoukaiwen.com/img/loginImg/sj.png"></image>
|
|
|
<view class="line"></view>
|
|
|
<input type="text" name="phone" placeholder="请填写账号" maxlength="11" v-model="tel" />
|
|
|
</view>
|
|
|
<view class="t-a">
|
|
|
<image src="https://zhoukaiwen.com/img/loginImg/yz.png"></image>
|
|
|
<view class="line"></view>
|
|
|
<input name='password' type="password" v-model="password" placeholder="请填写密码" />
|
|
|
<input type="text" name="code" maxlength="6" placeholder="请输入验证码" v-model="yzm" />
|
|
|
<!-- <view v-if="showText" class="t-c" @tap="getCode()">发送短信</view> -->
|
|
|
<view v-if="showText" class="t-c1" @tap="getImgCode()">
|
|
|
<image :src="codeImg" mode="scaleToFill"></image>
|
|
|
</view>
|
|
|
<!-- <view v-else class="t-c" style="background-color: #A7A7A7;">重新发送({{ second }})</view> -->
|
|
|
</view>
|
|
|
<button @tap="onlogin()">登 录</button>
|
|
|
</form>
|
|
|
<!-- <view class="t-f"><text>————— 第三方账号登录 —————</text></view>
|
|
|
<view class="t-e cl">
|
|
|
<view class="t-g" @tap="wxLogin()"><image src="https://zhoukaiwen.com/img/loginImg/wx.png"></image></view>
|
|
|
<view class="t-g" @tap="zfbLogin()"><image src="https://zhoukaiwen.com/img/loginImg/qq.png"></image></view>
|
|
|
</view> -->
|
|
|
</view>
|
|
|
</template>
|
|
|
<script>
|
|
|
import { setUserInfo,setToken, getToken } from "@/utils/auth";
|
|
|
import { getCode, login} from '@/api/index.js'
|
|
|
const app = getApp()
|
|
|
export default {
|
|
|
|
|
|
data() {
|
|
|
return {
|
|
|
title: '能辉在线订货系统', //填写logo或者app名称,也可以用:欢迎回来,看您需求
|
|
|
second: 60, //默认60秒
|
|
|
showText: true, //判断短信是否发送
|
|
|
phone: '', //手机号码
|
|
|
yzm: '', //验证码
|
|
|
password: '',
|
|
|
|
|
|
isCanUse: uni.getStorageSync('isCanUse'),
|
|
|
nickName: '',
|
|
|
avatarUrl: '',
|
|
|
bgImg: ['https://6d61-matchbox-79a395-1302390714.tcb.qcloud.la/matchbox/img_flower_4.jpg', 'https://6d61-matchbox-79a395-1302390714.tcb.qcloud.la/matchbox/img_flower_1.jpg', 'https://6d61-matchbox-79a395-1302390714.tcb.qcloud.la/matchbox/img_flower_3.jpg', 'https://6d61-matchbox-79a395-1302390714.tcb.qcloud.la/matchbox/img_flower_2.jpg'],
|
|
|
imgTime: '',
|
|
|
imgIndex: 0,
|
|
|
codeName: '验证码',
|
|
|
isCode: true,
|
|
|
tel:'',
|
|
|
smscode:'123456',
|
|
|
codeImg: '',
|
|
|
status: '',
|
|
|
currentTime: new Date().getTime()
|
|
|
};
|
|
|
},
|
|
|
/**
|
|
|
* 生命周期函数--监听页面加载
|
|
|
*/
|
|
|
onLoad: function (options) {
|
|
|
this.status = options.status
|
|
|
// #ifdef MP-WEIXIN
|
|
|
this.wxlogin(); //小程序获取用户code
|
|
|
// #endif
|
|
|
|
|
|
},
|
|
|
onShow: function () {
|
|
|
if (getToken()) {
|
|
|
uni.reLaunch({
|
|
|
url: '/pages/views/tabBar/category'
|
|
|
})
|
|
|
return
|
|
|
}
|
|
|
// this.setbImg(); //动态切换背景
|
|
|
this.getImgCode()
|
|
|
},
|
|
|
|
|
|
/**
|
|
|
* 生命周期函数--监听页面隐藏
|
|
|
*/
|
|
|
onHide: function () {
|
|
|
clearInterval(this.imgTime);
|
|
|
},
|
|
|
|
|
|
/**
|
|
|
* 生命周期函数--监听页面卸载
|
|
|
*/
|
|
|
onUnload: function () {
|
|
|
clearInterval(this.imgTime);
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
getImgCode() {
|
|
|
this.currentTime = new Date().getTime()
|
|
|
getCode(this.currentTime).then( res => {
|
|
|
this.codeImg = res.result
|
|
|
})
|
|
|
},
|
|
|
getUserInfo() {
|
|
|
console.log('点了');
|
|
|
let _this = this;
|
|
|
uni.getUserInfo({
|
|
|
provider: 'weixin',
|
|
|
success: function (infoRes) {
|
|
|
console.log(infoRes);
|
|
|
_this.setData({
|
|
|
nickName: infoRes.userInfo.nickName,
|
|
|
//昵称
|
|
|
avatarUrl: infoRes.userInfo.avatarUrl //头像
|
|
|
});
|
|
|
let date = new Date().getTime()
|
|
|
setToken(date) //模拟存储token
|
|
|
setUserInfo(infoRes.userInfo); //模拟存储用户信息
|
|
|
try {
|
|
|
uni.setStorageSync('isCanUse', 1); //记录是否第一次授权 false:表示不是第一次授权
|
|
|
uni.switchTab({
|
|
|
url: '/pages/views/tabBar/home'
|
|
|
});
|
|
|
} catch (e) {
|
|
|
console.log('缓存失败');
|
|
|
}
|
|
|
},
|
|
|
|
|
|
fail(res) {}
|
|
|
|
|
|
});
|
|
|
},
|
|
|
|
|
|
setbImg() {
|
|
|
clearInterval(this.imgTime);
|
|
|
let that = this;
|
|
|
|
|
|
let imgTime = setInterval(() => {
|
|
|
let imgIndex = that.imgIndex + 1;
|
|
|
if (imgIndex >= that.bgImg.length) {
|
|
|
imgIndex = 0;
|
|
|
}
|
|
|
that.setData({
|
|
|
imgIndex: imgIndex
|
|
|
});
|
|
|
}, 15000);
|
|
|
this.setData({
|
|
|
imgTime: imgTime
|
|
|
});
|
|
|
},
|
|
|
onlogin(){ //登录 模拟存储token
|
|
|
|
|
|
if (!this.tel || !this.password || !this.yzm) {
|
|
|
uni.showToast({
|
|
|
icon:'none',
|
|
|
title: '填写信息'
|
|
|
})
|
|
|
return
|
|
|
}
|
|
|
const params = {
|
|
|
"username": this.tel,
|
|
|
"password": this.password,
|
|
|
"captcha": this.yzm,
|
|
|
"checkKey": this.currentTime,
|
|
|
"remember_me": true
|
|
|
}
|
|
|
uni.showLoading({
|
|
|
title:'登录中...'
|
|
|
})
|
|
|
login(params).then(res => {
|
|
|
const result = res.result
|
|
|
if (result) {
|
|
|
setToken(result.token)
|
|
|
setUserInfo(result.userInfo)
|
|
|
uni.showToast({
|
|
|
title:'登陆成功'
|
|
|
})
|
|
|
const paths = getCurrentPages()
|
|
|
uni.reLaunch({
|
|
|
url: '/pages/views/tabBar/category'
|
|
|
})
|
|
|
// if (this.status) {
|
|
|
|
|
|
// }
|
|
|
// uni.navigateBack(-1)
|
|
|
} else {
|
|
|
this.getImgCode()
|
|
|
uni.hideLoading()
|
|
|
uni.showToast({
|
|
|
title:res.message,
|
|
|
icon: 'none'
|
|
|
})
|
|
|
}
|
|
|
|
|
|
}).catch((e) => {
|
|
|
uni.hideLoading()
|
|
|
uni.showToast({
|
|
|
title:e.message,
|
|
|
icon: 'none'
|
|
|
})
|
|
|
})
|
|
|
|
|
|
|
|
|
},
|
|
|
getCode() { //获取用户短信验证码
|
|
|
if(this.isCode == false){
|
|
|
return
|
|
|
}
|
|
|
if (this.tel == '') {
|
|
|
uni.showToast({
|
|
|
title: '请输入手机号',
|
|
|
icon: 'none'
|
|
|
})
|
|
|
return
|
|
|
}
|
|
|
if (!/^1(3|4|5|6|7|8|9)\d{9}$/.test(this.tel)) {
|
|
|
uni.showToast({
|
|
|
title: '请填写正确手机号码',
|
|
|
icon: 'none'
|
|
|
});
|
|
|
return false;
|
|
|
}
|
|
|
this.getPhoneCode()
|
|
|
},
|
|
|
getPhoneCode() {
|
|
|
let timer = ''
|
|
|
let date = 120
|
|
|
let that = this
|
|
|
if (that.isCode == true) {
|
|
|
uni.showToast({
|
|
|
title: '验证码发送成功~',
|
|
|
icon: 'none'
|
|
|
})
|
|
|
clearInterval(timer)
|
|
|
setInterval(() => {
|
|
|
if (date >= 1) {
|
|
|
date--
|
|
|
that.codeName = date + '秒重试'
|
|
|
that.isCode = false
|
|
|
} else {
|
|
|
that.isCode = true
|
|
|
that.codeName = '验证码'
|
|
|
clearInterval(timer)
|
|
|
}
|
|
|
}, 1000)
|
|
|
}
|
|
|
},
|
|
|
wxlogin() {
|
|
|
// 1.wx获取登录用户code
|
|
|
uni.login({
|
|
|
provider: 'weixin',
|
|
|
success: function (loginRes) {
|
|
|
console.log('这是用户的code', loginRes);
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
onAuthorize(){ //微信公众号授权登录
|
|
|
uni.showToast({
|
|
|
title:'对接你的公众号登录方法',
|
|
|
icon:"none"
|
|
|
})
|
|
|
},
|
|
|
|
|
|
|
|
|
//当前登录按钮操作
|
|
|
login() {
|
|
|
|
|
|
|
|
|
let date = new Date().getTime()
|
|
|
setToken(date)
|
|
|
let user = { //模拟存储用户信息
|
|
|
avatarUrl: '/static/images/face.jpg',
|
|
|
nickName: '用户2020'
|
|
|
}
|
|
|
setUserInfo(user)
|
|
|
|
|
|
uni.showLoading({
|
|
|
title:'登录中...'
|
|
|
})
|
|
|
setTimeout(()=>{
|
|
|
uni.hideLoading()
|
|
|
uni.showToast({
|
|
|
title:'登陆成功'
|
|
|
})
|
|
|
}, 500)
|
|
|
setTimeout(()=>{
|
|
|
uni.navigateBack(-1)
|
|
|
},1500)
|
|
|
var that = this;
|
|
|
if (!that.phone) {
|
|
|
uni.showToast({ title: '请输入手机号', icon: 'none' });
|
|
|
return;
|
|
|
}
|
|
|
if (!/^[1][3,4,5,7,8,9][0-9]{9}$/.test(that.phone)) {
|
|
|
uni.showToast({ title: '请输入正确手机号', icon: 'none' });
|
|
|
return;
|
|
|
}
|
|
|
if (!that.yzm) {
|
|
|
uni.showToast({ title: '请输入验证码', icon: 'none' });
|
|
|
return;
|
|
|
}
|
|
|
//....此处省略,这里需要调用后台验证一下验证码是否正确,根据您的需求来
|
|
|
uni.showToast({ title: '登录成功!', icon: 'none' });
|
|
|
},
|
|
|
//获取短信验证码
|
|
|
getCode() {
|
|
|
var that = this;
|
|
|
var interval = setInterval(() => {
|
|
|
that.showText = false;
|
|
|
var times = that.second - 1;
|
|
|
//that.second = times<10?'0'+times:times ;//小于10秒补 0
|
|
|
that.second = times;
|
|
|
console.log(times);
|
|
|
}, 1000);
|
|
|
setTimeout(() => {
|
|
|
clearInterval(interval);
|
|
|
that.second = 60;
|
|
|
that.showText = true;
|
|
|
}, 60000);
|
|
|
//这里请求后台获取短信验证码
|
|
|
uni.request({
|
|
|
//......//此处省略
|
|
|
success: function(res) {
|
|
|
that.showText = false;
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
//等三方微信登录
|
|
|
wxLogin() {
|
|
|
uni.showToast({ title: '微信登录', icon: 'none' });
|
|
|
},
|
|
|
//第三方支付宝登录
|
|
|
zfbLogin() {
|
|
|
uni.showToast({ title: '支付宝登录', icon: 'none' });
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
</script>
|
|
|
<style>
|
|
|
.img-a {
|
|
|
position: absolute;
|
|
|
width: 100%;
|
|
|
top: -150rpx;
|
|
|
right: 0;
|
|
|
}
|
|
|
.img-b {
|
|
|
position: absolute;
|
|
|
width: 50%;
|
|
|
bottom: 0;
|
|
|
left: -50rpx;
|
|
|
/* margin-bottom: -200rpx; */
|
|
|
}
|
|
|
.t-login {
|
|
|
width: 650rpx;
|
|
|
margin: 0 auto;
|
|
|
font-size: 28rpx;
|
|
|
color: #000;
|
|
|
}
|
|
|
|
|
|
.t-login button {
|
|
|
font-size: 28rpx;
|
|
|
background: #5677fc;
|
|
|
color: #fff;
|
|
|
height: 90rpx;
|
|
|
line-height: 90rpx;
|
|
|
border-radius: 50rpx;
|
|
|
box-shadow: 0 5px 7px 0 rgba(86, 119, 252, 0.2);
|
|
|
}
|
|
|
|
|
|
.t-login input {
|
|
|
padding: 0 20rpx 0 120rpx;
|
|
|
height: 90rpx;
|
|
|
line-height: 90rpx;
|
|
|
margin-bottom: 50rpx;
|
|
|
background: #f8f7fc;
|
|
|
border: 1px solid #e9e9e9;
|
|
|
font-size: 28rpx;
|
|
|
border-radius: 50rpx;
|
|
|
}
|
|
|
|
|
|
.t-login .t-a {
|
|
|
position: relative;
|
|
|
}
|
|
|
|
|
|
.t-login .t-a image {
|
|
|
width: 40rpx;
|
|
|
height: 40rpx;
|
|
|
position: absolute;
|
|
|
left: 40rpx;
|
|
|
top: 28rpx;
|
|
|
/* border-right: 2rpx solid #dedede; */
|
|
|
margin-right: 20rpx;
|
|
|
}
|
|
|
.t-login .t-a .line{
|
|
|
width: 2rpx;
|
|
|
height: 40rpx;
|
|
|
background-color: #dedede;
|
|
|
position: absolute;
|
|
|
top: 28rpx;
|
|
|
left: 98rpx;
|
|
|
}
|
|
|
|
|
|
.t-login .t-b {
|
|
|
text-align: left;
|
|
|
font-size: 46rpx;
|
|
|
color: #000;
|
|
|
padding: 300rpx 0 30rpx 0;
|
|
|
font-weight: bold;
|
|
|
}
|
|
|
.t-login .t-b2 {
|
|
|
text-align: left;
|
|
|
font-size: 32rpx;
|
|
|
color: #aaaaaa;
|
|
|
padding: 0rpx 0 120rpx 0;
|
|
|
}
|
|
|
|
|
|
.t-login .t-c {
|
|
|
position: absolute;
|
|
|
right: 22rpx;
|
|
|
top: 160rpx;
|
|
|
background: #5677fc;
|
|
|
color: #fff;
|
|
|
font-size: 24rpx;
|
|
|
border-radius: 50rpx;
|
|
|
height: 50rpx;
|
|
|
line-height: 50rpx;
|
|
|
padding: 0 25rpx;
|
|
|
}
|
|
|
.t-login .t-c1 {
|
|
|
position: absolute;
|
|
|
right: 10rpx;
|
|
|
top: 148rpx;
|
|
|
width: 160rpx;
|
|
|
height: 80rpx;
|
|
|
color: #fff;
|
|
|
font-size: 24rpx;
|
|
|
|
|
|
|
|
|
}
|
|
|
.t-login .t-c1 image {
|
|
|
left: 0;
|
|
|
top: 0;
|
|
|
width: 100%;
|
|
|
height: 100%;
|
|
|
border-radius: 50upx;
|
|
|
}
|
|
|
.t-login .t-d {
|
|
|
text-align: center;
|
|
|
color: #999;
|
|
|
margin: 80rpx 0;
|
|
|
}
|
|
|
|
|
|
.t-login .t-e {
|
|
|
text-align: center;
|
|
|
width: 250rpx;
|
|
|
margin: 80rpx auto 0;
|
|
|
}
|
|
|
|
|
|
.t-login .t-g {
|
|
|
float: left;
|
|
|
width: 50%;
|
|
|
}
|
|
|
|
|
|
.t-login .t-e image {
|
|
|
width: 50rpx;
|
|
|
height: 50rpx;
|
|
|
}
|
|
|
|
|
|
.t-login .t-f {
|
|
|
text-align: center;
|
|
|
margin: 200rpx 0 0 0;
|
|
|
color: #666;
|
|
|
}
|
|
|
|
|
|
.t-login .t-f text {
|
|
|
margin-left: 20rpx;
|
|
|
color: #aaaaaa;
|
|
|
font-size: 27rpx;
|
|
|
}
|
|
|
|
|
|
.t-login .uni-input-placeholder {
|
|
|
color: #000;
|
|
|
}
|
|
|
|
|
|
.cl {
|
|
|
zoom: 1;
|
|
|
}
|
|
|
|
|
|
.cl:after {
|
|
|
clear: both;
|
|
|
display: block;
|
|
|
visibility: hidden;
|
|
|
height: 0;
|
|
|
content: '\20';
|
|
|
}
|
|
|
</style>
|