user.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. import { login, logout, getInfo, getRouter } from "@/api/user";
  2. import {
  3. getToken,
  4. setToken,
  5. removeToken,
  6. getUserid,
  7. setUserid,
  8. removeUserid,
  9. } from "@/utils/auth";
  10. import { resetRouter } from "@/router";
  11. const getDefaultState = () => {
  12. return {
  13. token: getToken(), // token
  14. userid: getUserid(), // 用户id
  15. name: "", // 用户名称
  16. phone: "", // 用户手机
  17. menus: "", // 菜单
  18. customerId: "", //经销商ID
  19. customerName: "", //经销商名称
  20. customerNumber: "", //经销商编码
  21. showMessages: null, //
  22. };
  23. };
  24. const state = getDefaultState();
  25. const mutations = {
  26. RESET_STATE: (state) => {
  27. Object.assign(state, getDefaultState());
  28. },
  29. SET_USERID: (state, userid) => {
  30. state.userid = userid;
  31. },
  32. SET_TOKEN: (state, token) => {
  33. state.token = token;
  34. },
  35. SET_NAME: (state, name) => {
  36. state.name = name;
  37. },
  38. SET_PHONE: (state, phone) => {
  39. state.phone = phone;
  40. },
  41. SET_MENUS: (state, menus) => {
  42. state.menus = menus;
  43. },
  44. SET_CUSTOMERID: (state, customerId) => {
  45. state.customerId = customerId;
  46. },
  47. SET_CUSTOMERNAME: (state, customerName) => {
  48. state.customerName = customerName;
  49. },
  50. SET_CUSTOMERNUMBER: (state, customerNumber) => {
  51. state.customerNumber = customerNumber;
  52. },
  53. showMessage: (state, value) => {
  54. if (value == "yes") {
  55. state.showMessages = true;
  56. } else {
  57. state.showMessages = false;
  58. }
  59. },
  60. };
  61. const actions = {
  62. // user login
  63. login({ commit }, userInfo) {
  64. const { username, password, code, codeValue } = userInfo;
  65. return new Promise((resolve, reject) => {
  66. login({
  67. userName: username.trim(),
  68. password: password,
  69. code: code,
  70. codeValue: codeValue,
  71. })
  72. .then((response) => {
  73. const { data } = response;
  74. commit("SET_TOKEN", data.token);
  75. commit("SET_USERID", data.adminUserId);
  76. setToken(data.token);
  77. setUserid(data.adminUserId);
  78. resolve();
  79. })
  80. .catch((error) => {
  81. reject(error);
  82. });
  83. });
  84. },
  85. // get user info
  86. getInfo({ commit, state }) {
  87. return new Promise((resolve, reject) => {
  88. console.log(state);
  89. getInfo(state.userid)
  90. .then((response) => {
  91. const { data } = response;
  92. console.log(1111111, data);
  93. if (!data) {
  94. return reject("Verification failed, please Login again.");
  95. }
  96. console.log(data);
  97. const {
  98. nickName,
  99. userName,
  100. customerId,
  101. customerName,
  102. customerNumber,
  103. } = data;
  104. // 模拟请求数据
  105. // const menus = [
  106. // {
  107. // 'path': '/example',
  108. // 'component': 'Layout',
  109. // 'redirect': '/example/table',
  110. // 'name': 'Example',
  111. // 'meta': { 'title': 'Example', 'icon': 'el-icon-s-help', 'roles': ['admin'] },
  112. // 'children': [
  113. // {
  114. // 'path': 'table',
  115. // 'name': 'Table',
  116. // 'component': 'table/index',
  117. // 'meta': { 'title': 'Table', 'icon': 'table' }
  118. // },
  119. // {
  120. // 'path': 'tree',
  121. // 'name': 'Tree',
  122. // 'component': 'tree/index',
  123. // 'meta': { 'title': 'Tree', 'icon': 'tree' }
  124. // }
  125. // ]
  126. // },
  127. // ]
  128. // menus.push({ path: '*', redirect: '/404', hidden: true })
  129. commit("SET_CUSTOMERID", customerId);
  130. commit("SET_CUSTOMERNAME", customerName);
  131. commit("SET_CUSTOMERNUMBER", customerNumber);
  132. commit("SET_NAME", nickName);
  133. commit("SET_PHONE", userName);
  134. // commit("SET_MENUS", menus) // 触发vuex SET_MENUS 保存路由表到vuex
  135. localStorage.setItem("supply_user", JSON.stringify(data));
  136. resolve(data);
  137. })
  138. .catch((error) => {
  139. reject(error);
  140. });
  141. });
  142. },
  143. getRouter({ commit, state }) {
  144. return new Promise((resolve, reject) => {
  145. getRouter({ adminUserId: state.userid })
  146. .then((response) => {
  147. const menus = response.data;
  148. // 模拟请求数据
  149. // const menus = [
  150. // {
  151. // 'path': '/example',
  152. // 'component': 'Layout',
  153. // 'redirect': '/example/table',
  154. // 'name': 'Example',
  155. // 'meta': { 'title': 'Example', 'icon': 'el-icon-s-help' },
  156. // 'children': [
  157. // {
  158. // 'path': 'table',
  159. // 'name': 'Table',
  160. // 'component': 'table/index',
  161. // 'meta': { 'title': 'Table', 'icon': 'table' }
  162. // },
  163. // {
  164. // 'path': 'tree',
  165. // 'name': 'Tree',
  166. // 'component': 'tree/index',
  167. // 'meta': { 'title': 'Tree', 'icon': 'tree' }
  168. // }
  169. // ]
  170. // },
  171. // ]
  172. // menus.push({ path: '*', redirect: '/404', hidden: true })
  173. commit("SET_MENUS", menus);
  174. resolve();
  175. })
  176. .catch((error) => {
  177. reject(error);
  178. });
  179. });
  180. },
  181. // user logout
  182. logout({ commit, state }) {
  183. return new Promise((resolve, reject) => {
  184. logout(state.token)
  185. .then(() => {
  186. removeToken(); // must remove token first
  187. removeUserid();
  188. resetRouter();
  189. commit("RESET_STATE");
  190. resolve();
  191. })
  192. .catch((error) => {
  193. reject(error);
  194. });
  195. });
  196. },
  197. // remove token
  198. resetToken({ commit }) {
  199. return new Promise((resolve) => {
  200. removeToken(); // must remove token first
  201. removeUserid();
  202. commit("RESET_STATE");
  203. resolve();
  204. });
  205. },
  206. };
  207. export default {
  208. namespaced: true,
  209. state,
  210. mutations,
  211. actions,
  212. };