login.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // pages/login/login.js
  2. const app = getApp();
  3. const api = require('../../utils/api');
  4. Page({
  5. data: {
  6. role: 'parent', // parent 或 child
  7. loading: false
  8. },
  9. onLoad() {
  10. // 检查是否已登录
  11. if (app.globalData.token) {
  12. this.redirectByRole();
  13. }
  14. },
  15. // 选择角色
  16. onRoleSelect(e) {
  17. this.setData({ role: e.currentTarget.dataset.role });
  18. },
  19. // 微信登录
  20. async onWechatLogin() {
  21. if (this.data.loading) return;
  22. this.setData({ loading: true });
  23. try {
  24. // 获取微信登录code
  25. const loginRes = await new Promise((resolve, reject) => {
  26. wx.login({
  27. success: resolve,
  28. fail: reject
  29. });
  30. });
  31. // 调用后端登录接口
  32. const result = await api.login({
  33. code: loginRes.code,
  34. role: this.data.role
  35. });
  36. // 保存登录信息
  37. app.globalData.token = result.token;
  38. app.globalData.role = result.role;
  39. wx.setStorageSync('token', result.token);
  40. wx.setStorageSync('role', result.role);
  41. wx.showToast({
  42. title: '登录成功',
  43. icon: 'success'
  44. });
  45. // 跳转到对应首页
  46. setTimeout(() => {
  47. this.redirectByRole();
  48. }, 1000);
  49. } catch (err) {
  50. console.error('登录失败:', err);
  51. wx.showToast({
  52. title: '登录失败',
  53. icon: 'none'
  54. });
  55. } finally {
  56. this.setData({ loading: false });
  57. }
  58. },
  59. // 根据角色跳转
  60. redirectByRole() {
  61. if (this.data.role === 'parent') {
  62. wx.switchTab({ url: '/pages/parent-home/parent-home' });
  63. } else {
  64. wx.switchTab({ url: '/pages/child-home/child-home' });
  65. }
  66. }
  67. })