| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- // pages/login/login.js
- const app = getApp();
- const api = require('../../utils/api');
- Page({
- data: {
- role: 'parent', // parent 或 child
- loading: false
- },
- onLoad() {
- // 检查是否已登录
- if (app.globalData.token) {
- this.redirectByRole();
- }
- },
- // 选择角色
- onRoleSelect(e) {
- this.setData({ role: e.currentTarget.dataset.role });
- },
- // 微信登录
- async onWechatLogin() {
- if (this.data.loading) return;
-
- this.setData({ loading: true });
-
- try {
- // 获取微信登录code
- const loginRes = await new Promise((resolve, reject) => {
- wx.login({
- success: resolve,
- fail: reject
- });
- });
- // 调用后端登录接口
- const result = await api.login({
- code: loginRes.code,
- role: this.data.role
- });
- // 保存登录信息
- app.globalData.token = result.token;
- app.globalData.role = result.role;
- wx.setStorageSync('token', result.token);
- wx.setStorageSync('role', result.role);
- wx.showToast({
- title: '登录成功',
- icon: 'success'
- });
- // 跳转到对应首页
- setTimeout(() => {
- this.redirectByRole();
- }, 1000);
- } catch (err) {
- console.error('登录失败:', err);
- wx.showToast({
- title: '登录失败',
- icon: 'none'
- });
- } finally {
- this.setData({ loading: false });
- }
- },
- // 根据角色跳转
- redirectByRole() {
- if (this.data.role === 'parent') {
- wx.switchTab({ url: '/pages/parent-home/parent-home' });
- } else {
- wx.switchTab({ url: '/pages/child-home/child-home' });
- }
- }
- })
|