- 首先需要明白登录部分的逻辑(基于已经点击登录按钮的条件下)
- 需要验证账号密码等是否不为空
- 如果为空提示
- 如果不为空那么执行下一阶段
- 需要判断账号密码是否已注册
- 如果未注册提示 并跳转到注册界面
- 如果已注册 执行下一步
- 需要判断账号密码是否正确
- 如果正确那么执行下一阶段
- 需要判断用户是否有权登录
- 如果无权登录提示 并刷新登录界面
- 如果可以登录那么执行下一阶段
- 需要判断本地缓存是否有信息
- 如果没有信息 执行下一阶段
- 如果有信息
- 判断信息是否为现在登录角色信息
- 如果不是 那么清除本地缓存 并执行下一阶段
- 如果是 那么执行6.2
- 需要获取当前信息并记录到本地缓存
- 获取当前时间
- 获取当前位置
- 获取用户权限信息
- 根据用户权限 进行首页渲染 不同权限角色首页不同
- 获取用户首页信息
- 根据用户权限进行分权渲染
- 判断验证码是否正确
- 需要从后端获取验证码图片渲染到登录页面
- 需要根据用户输入的验证码进行判断
- 如果不对 提示 并刷新验证码
- 如果正确 进行页面跳转 执行登录
- 其次需要明白需要跟后端交互的逻辑
- 需要向后端传递什么参数
- 账号
- 密码
- 等等
- 需要从后端获取什么参数
- token
- 首页信息
- 等等
- 需要向后端要接口
- 验证码接口
- 首页信息接口
- 等等
- 下面是部分代码展示
doLogin() {
login(this.userName, this.passWord, this.code, this.uuid).then(res => {
uni.setStorageSync('token', res.token);
setTimeout(function() {
uni.hideLoading();
}, 200);
this.doGetUserInfo();
}).catch(err => {
uni.showToast({
title: err,
duration: 2000
});
});
},
doGetUserInfo() {
getUserInfo().then(res => {
uni.removeStorage("userRole");
uni.removeStorage("userRoleName");
uni.removeStorage("user");
if (res.roles.indexOf("inspector") >= 0) {
uni.setStorageSync("userRole", "inspector");
uni.setStorageSync("userRoleName","管理员");
uni.setStorageSync("user", res.user);
setTimeout(function() {
uni.hideLoading();
}, 200);
uni.reLaunch({
url: './index'
});
uni.showToast({
title: '登陆成功',
duration: 2000
});
} else if (res.roles.indexOf("disposal") >= 0) {
uni.setStorageSync("userRole", "disposal");
uni.setStorageSync("userRoleName", "管理员");
uni.setStorageSync('user', res.user);
setTimeout(function() {
uni.hideLoading();
}, 200);
uni.reLaunch({
url: './index'
});
uni.showToast({
title: '登陆成功',
duration: 2000
});
} else {
uni.showToast({
title: '登陆失败,用户没有权限!',
duration: 2000
});
}
});
}