user.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. import { setToken, getToken, removeToken } from '@/utils/auth';
  2. import { user } from '@/store/mutation-types';
  3. import { resetRouter } from '@/router';
  4. import { login, updateLanguageType, GetLoginInfoByAccessCode } from '@/api/user';
  5. const getDefaultSate = () => {
  6. const { token, isHas } = getToken();
  7. return {
  8. session_id: isHas ? token.session_id : '',
  9. user_code: isHas ? token.user_code : '',
  10. user_real_name: isHas ? token.user_real_name : '',
  11. user_type: isHas ? token.user_type : '',
  12. user_name: isHas ? token.user_name : '',
  13. image_url: isHas ? token.image_url : '',
  14. language_type: isHas ? (token.language_type ? token.language_type : 'ZH') : 'ZH'
  15. };
  16. };
  17. const state = getDefaultSate();
  18. const mutations = {
  19. [user.RESET_STATE]: state => {
  20. Object.assign(state, getDefaultSate());
  21. },
  22. [user.SET_USER_INFO]: (
  23. state,
  24. { user_code, user_real_name, user_type, language_type, session_id, image_url }
  25. ) => {
  26. state.user_code = user_code;
  27. state.user_real_name = user_real_name;
  28. state.user_type = user_type;
  29. state.language_type = language_type;
  30. state.session_id = session_id;
  31. state.image_url = image_url;
  32. state.language_type = language_type || 'ZH';
  33. },
  34. [user.UPDATE_LANGUAGE_TYPE]: (state, language_type) => {
  35. localStorage.setItem('language_type', language_type);
  36. state.language_type = language_type;
  37. }
  38. };
  39. const actions = {
  40. // 登录
  41. login({ commit }, userInfo) {
  42. const { loginForm } = userInfo;
  43. return new Promise((reslove, reject) => {
  44. login(loginForm)
  45. .then(response => {
  46. setToken(response);
  47. commit(user.SET_USER_INFO, response);
  48. reslove();
  49. })
  50. .catch(error => {
  51. reject(error);
  52. });
  53. });
  54. },
  55. // 根据身份通行码得到用户登录信息
  56. enterSys({ commit }, access_code) {
  57. return new Promise((reslove, reject) => {
  58. GetLoginInfoByAccessCode(access_code)
  59. .then(response => {
  60. setToken(response);
  61. commit(user.SET_USER_INFO, response);
  62. reslove();
  63. })
  64. .catch(error => {
  65. reject(error);
  66. });
  67. });
  68. },
  69. // 用户退出
  70. signOut({ commit }) {
  71. return new Promise(resolve => {
  72. removeToken();
  73. resetRouter();
  74. commit(user.RESET_STATE);
  75. resolve();
  76. });
  77. },
  78. // 用户更换语言类型
  79. updateLanguageType({ commit }, language_type) {
  80. return new Promise((reslove, reject) => {
  81. updateLanguageType({ language_type })
  82. .then(() => {
  83. commit(user.UPDATE_LANGUAGE_TYPE, language_type);
  84. reslove();
  85. })
  86. .catch(error => {
  87. reject(error);
  88. });
  89. });
  90. },
  91. resetSessionID({ commit }) {
  92. return new Promise(reslove => {
  93. removeToken();
  94. commit(user.RESET_STATE);
  95. reslove();
  96. });
  97. },
  98. resetState({ commit }) {
  99. return new Promise(reslove => {
  100. commit(user.RESET_STATE);
  101. reslove();
  102. });
  103. }
  104. };
  105. export default {
  106. namespaced: true,
  107. state,
  108. mutations,
  109. actions
  110. };