user.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. import {
  2. ACCESS_TOKEN,
  3. USER_ID,
  4. USER_INFO
  5. } from '@/store/mutation-types'
  6. import storage from '@/utils/storage'
  7. import {
  8. userLoginWX,
  9. userLloginApp,
  10. userLoginH5,
  11. } from '@/api/login';
  12. import {
  13. navTo
  14. } from '@/core/app';
  15. // 登录成功后执行
  16. const loginSuccess = (commit, {
  17. token,
  18. id,
  19. userInfo
  20. }) => {
  21. // 过期时间30天
  22. const expiryTime = 30 * 86400 * 3
  23. // 保存tokne和userId到缓存
  24. storage.set(USER_ID, id, expiryTime)
  25. storage.set(ACCESS_TOKEN, token, expiryTime)
  26. // 记录到store全局变量
  27. commit('SET_TOKEN', token)
  28. commit('SET_USER_ID', id)
  29. commit('SET_USER_INFO', userInfo)
  30. }
  31. const user = {
  32. state: {
  33. // 用户认证token
  34. token: uni.getStorageSync(ACCESS_TOKEN),
  35. // 用户ID
  36. userId: uni.getStorageSync(USER_ID),
  37. userInfo: uni.getStorageSync(USER_INFO),
  38. parent_id: null,
  39. },
  40. mutations: {
  41. SET_TOKEN: (state, value) => {
  42. state.token = value
  43. },
  44. SET_USER_ID: (state, value) => {
  45. state.userId = value
  46. },
  47. SET_USER_INFO: (state, value) => {
  48. state.userInfo = value
  49. },
  50. M_PARENT_ID: (state, value) => {
  51. state.parent_id = value
  52. },
  53. },
  54. actions: {
  55. // 用户登录(普通登录: 输入手机号和验证码)
  56. async LoginWX({
  57. commit
  58. }, data) {
  59. const result = await userLoginWX(data);
  60. if (result) {
  61. if (result.data.token) {
  62. loginSuccess(commit, {
  63. token: result.data.token,
  64. id: result.data.id,
  65. userInfo: {
  66. }
  67. });
  68. return Promise.resolve(result);
  69. } else {
  70. return Promise.resolve(result);
  71. }
  72. }
  73. },
  74. // 用户登录(普通登录: 输入手机号和验证码)
  75. async LoginApp({
  76. commit
  77. }, data) {
  78. const result = await userLloginApp(data);
  79. if (result) {
  80. loginSuccess(commit, {
  81. token: result.data.token,
  82. id: result.data.id
  83. });
  84. return Promise.resolve(result);
  85. } else {
  86. return Promise.resolve(result);
  87. }
  88. },
  89. // H5登陆
  90. async LoginH5({
  91. commit
  92. }, data) {
  93. const result = await userLoginH5(data);
  94. if (result) {
  95. if (result.data.token) {
  96. loginSuccess(commit, {
  97. token: result.data.token,
  98. id: result.data.id
  99. });
  100. return Promise.resolve(result);
  101. } else {
  102. return Promise.resolve(result);
  103. }
  104. }
  105. },
  106. // 退出登录
  107. async Logout({
  108. commit
  109. }, data) {
  110. const store = this;
  111. if (store.getters.userId > 0) {
  112. storage.remove(USER_ID)
  113. storage.remove(ACCESS_TOKEN)
  114. storage.remove(USER_INFO)
  115. // 记录到store全局变量
  116. commit('SET_TOKEN', '')
  117. commit('SET_USER_ID', null)
  118. commit('SET_USER_INFO', null)
  119. // 回到首页
  120. navTo('pages/home/index', {})
  121. return Promise.resolve({
  122. result: true
  123. });
  124. }
  125. }
  126. }
  127. }
  128. export default user