prevention/pages/login/login.js

147 lines
4.3 KiB
JavaScript

// pages/login/login.js
import {userLogin, getUser} from '../../api/login.js'
import baseURL from '../../environments.js'
Page({
/**
* 页面的初始数据
*/
data: {
form: {
username: '',
password: ''
},
remember: false,
formRules: {
username: {
validator: function(value) {
return value.trim() != ''
},
tips: '请输入用户名',
placeholder: '请输入用户名',
isPassword: false
},
password: {
validator: function(value) {
return value.trim() != ''
},
tips: '请输入密码',
placeholder: '请输入密码',
isPassword: true
}
}
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
// 隐藏返回图标
wx.hideHomeButton();
// 判断是否有记住密码
if(wx.getStorageSync('remember')) {
this.setData({
rememberChecked: true
})
this.setData({
form: wx.getStorageSync('loginForm')
})
}
},
checkboxChange(e) {
let checked = this.data.remember
this.setData({remember: !checked})
},
bindValue(e) {
let name = e.currentTarget.dataset.name;
let form = this.data.form;
form[name] = e.detail.value;
this.setData({
form,
})
this.validate(name, e.detail.value)
},
validate(name) {
let formRules = this.data.formRules;
let validator = this.data.formRules[name].validator
let result = validator ? !validator(this.data.form[name]) : false;
formRules[name].warning = result
this.setData({
formRules
})
return result
},
validateForm() {
return new Promise((resolve, reject) => {
try {
let formRules = this.data.formRules;
let result = false;
for (let key in formRules) {
let temp = this.validate(key)
if (temp) {
result = temp
}
}
resolve(!result)
} catch (e) {
reject(e)
}
})
},
submitForm() {
this.validateForm().then(res => {
if (res) {
wx.showLoading({title: "登录中", mask:true});
// 判断是否有记住密码
if(this.data.remember) {
wx.setStorageSync('remember', true)
wx.setStorageSync('loginForm', this.data.form)
} else {
wx.removeStorageSync('remember')
wx.removeStorageSync('loginForm')
}
// 登录
userLogin(this.data.form).then(res=> {
wx.hideLoading()
if (res?.code === 0) {
// 以token获取用户信息
let token = res.data.token
wx.setStorageSync('token', token) // token存入storage
// 获取用户信息
getUser().then(response=> {
if(response.code === 0) {
wx.setStorageSync('userInfo', response.data)
// 跳转至tabBar
wx.switchTab({
url: '/pages/task/task'
})
}
}).catch(e=> {
console.log(e);
})
} else{
wx.showToast({
title: res?.msg || '用户名密码错误',
icon: 'none',
duration: 2000,
});
}
})
}
})
}
})