user.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import { rsaEncrypt } from '@/utils/jsencrypt';
  2. import { login, byPhone } from '@/api/user/login';
  3. import { info } from '@/api/user/my';
  4. import { logout } from '@/api/user/my.js';
  5. const user = {
  6. namespaced: true,
  7. state: {
  8. userInfo: uni.getStorageSync('userInfo') || {},
  9. token: uni.getStorageSync('token'),
  10. },
  11. mutations: {
  12. SET_USER_INFO: (state, data) => {
  13. state.userInfo = data;
  14. uni.setStorageSync('userInfo', data); // 存储userInfo
  15. },
  16. SET_TOKEN: (state, token) => {
  17. state.token = token;
  18. uni.setStorageSync('token', token); // 存储token
  19. },
  20. },
  21. actions: {
  22. // 密码登录/验证码登录
  23. async Login({ commit }, userData) {
  24. try {
  25. uni.$c.loading('登录中');
  26. const userName = rsaEncrypt(userData.userName);
  27. const { password, code } = userData;
  28. const params = {
  29. userName,
  30. };
  31. if (password) {
  32. params.password = rsaEncrypt(password);
  33. }
  34. if (code) {
  35. params.code = code;
  36. }
  37. const loginMode = userData.loginMode;
  38. const requestFn = loginMode === '0' ? login : byPhone;
  39. const res = await requestFn(params);
  40. uni.hideLoading();
  41. const token = res.data.token;
  42. commit('SET_TOKEN', token); // 存储用户信息
  43. await uni.$c.toast({
  44. title: '登录成功',
  45. icon: 'success',
  46. mask: true,
  47. duration: 1000,
  48. });
  49. uni.switchTab({ url: '/pages/home/index' }); // 去首页
  50. return res;
  51. } catch (e) {
  52. uni.hideLoading();
  53. console.error(e);
  54. }
  55. },
  56. // 获取用户信息
  57. async GetInfo({ commit }) {
  58. try {
  59. uni.$c.loading();
  60. const res = await info();
  61. uni.hideLoading();
  62. commit('SET_USER_INFO', res.data);
  63. return res;
  64. } catch (e) {
  65. console.error(e);
  66. }
  67. },
  68. // 退出系统
  69. async LogOut({ dispatch }) {
  70. await logout();
  71. dispatch('ClearUserInfo');
  72. },
  73. ClearUserInfo({ commit }) {
  74. commit('SET_USER_INFO', ''); // 清空用户信息
  75. commit('SET_TOKEN', ''); // 清空token
  76. uni.reLaunch({
  77. // 跳回登录页
  78. url: '/pages/user/login/index',
  79. });
  80. },
  81. },
  82. };
  83. export default user;