user.js 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. // import { user_info, login } from '@/api/user'
  2. import { eduGet, getUser, eduLogout } from "@/api/user";
  3. import { getToken, removeToken, setToken } from "@/utils/auth";
  4. import { API_CONFIG } from "@/common/apiConfig";
  5. import axios from '@/common/axios.config'; // 引入 axios 配置实例
  6. // import { Message } from 'element-ui'
  7. // import { loginOut } from '@/api/user';
  8. const getDefaultState = () => {
  9. return {
  10. token: getToken(),
  11. id: "",
  12. roles: [],
  13. name: "",
  14. username: "",
  15. avatar: "",
  16. is_init: false,
  17. userinfo: {},
  18. userinfo2:{},
  19. // 应用权限
  20. fromL: {
  21. basics: {
  22. title: "",
  23. brief: "",
  24. logo: "",
  25. },
  26. //桌面 管理平台首页 管理平台侧边栏
  27. desktop: {
  28. list: [],
  29. },
  30. admin: {
  31. index: {
  32. list: [],
  33. },
  34. sidebar: {
  35. list: [],
  36. },
  37. },
  38. },
  39. // 应用标识
  40. appSign:''
  41. };
  42. };
  43. const state = getDefaultState();
  44. const mutations = {
  45. RESET_STATE: (state) => {
  46. Object.assign(state, getDefaultState());
  47. },
  48. SET_TOKEN: (state, token) => {
  49. state.token = token;
  50. },
  51. SET_ROLES: (state, roles) => {
  52. state.roles = roles;
  53. },
  54. SET_ID: (state, id) => {
  55. state.id = id;
  56. },
  57. SET_FROM: (state, from) => {
  58. state.fromL = from;
  59. },
  60. SET_AppSIGN: (state, sign) => {
  61. state.appSign = sign;
  62. },
  63. SET_NAME: (state, name) => {
  64. state.name = name;
  65. },
  66. SET_USERNAME: (state, name) => {
  67. state.username = name;
  68. },
  69. SET_IS_INIT: (state, is_init) => {
  70. state.is_init = is_init;
  71. },
  72. SET_AVATAR: (state, avatar) => {
  73. state.avatar = avatar;
  74. },
  75. SET_USERINFO: (state, userinfo) => {
  76. state.userinfo = userinfo;
  77. },
  78. SET_USERINFO2: (state, userinfo2) => {
  79. state.userinfo2 = userinfo2;
  80. window.topU.US.userInfo = state.userinfo2 && Object.keys(state.userinfo2).length ? state.userinfo2 : state.userinfo
  81. },
  82. };
  83. const actions = {
  84. login({ commit }) { //, dispatch
  85. return new Promise((resolve, reject) => {
  86. eduGet()
  87. .then((response) => {
  88. console.log(response);
  89. var _user = response.data[0][0];
  90. // const allowedIds = [
  91. // "0abcb118-9110-11eb-80ad-005056b86db5",
  92. // "b7ccc834-aae5-11ea-a8d4-52540005ab01",
  93. // "a77e9404-efec-11e9-96f9-028edca3b798",
  94. // "0e8d50c3-50b5-2f1c-9f1a-bd346a0bf817",
  95. // "5943e08c-b7d4-11ed-8d51-005056b86db5"
  96. // ];
  97. // if (allowedIds.includes(_user.userid)) {
  98. commit("SET_ID", _user.userid);
  99. commit("SET_TOKEN", _user.userid);
  100. setToken(_user.userid);
  101. resolve(_user.userid);
  102. // } else if(_user.userid){
  103. // loginOut()
  104. // .then(async () => {
  105. // dispatch('user/logout', null, { root: true });
  106. // })
  107. // .catch(err => {
  108. // console.error(err);
  109. // });
  110. // Message({
  111. // message: "该用户ID不允许登录",
  112. // type: "error"
  113. // });
  114. // reject("该用户ID不允许登录");
  115. // }
  116. })
  117. .catch((error) => {
  118. // var _user = { userid: "6c56ec0e-2c74-11ef-bee5-005056b86db5" };
  119. // commit("SET_ID", _user.userid);
  120. // commit("SET_TOKEN", _user.userid);
  121. // setToken(_user.userid);
  122. // resolve(_user.userid);
  123. reject(error);
  124. });
  125. });
  126. },
  127. getInfo({ commit, state }) {
  128. return new Promise((resolve, reject) => {
  129. // getToken()
  130. commit("SET_ID", state.token);
  131. getUser({ userid: state.token })
  132. .then((response) => {
  133. console.log(response);
  134. // const { data } = response
  135. const data = response.data[0][0];
  136. if (!data) {
  137. reject("验证失败,请重新登录。");
  138. }
  139. // console.log(response)
  140. commit("SET_USERINFO", data);
  141. resolve(data);
  142. // resolve()
  143. })
  144. .catch((error) => {
  145. reject(error);
  146. });
  147. });
  148. },
  149. async getschPerInfo({ commit,state }) {
  150. let params = [{
  151. functionName: API_CONFIG.ajax_schoolPermission.functionName, // 调用存储过程的名称
  152. org: state.userinfo.org, //组织id
  153. oid: state.userinfo.organizeid, //学校id
  154. }]
  155. ;
  156. console.log('params',params);
  157. // 获取学校权限与组织权限,优先使用学校权限,其次使用组织权限
  158. // 第一步
  159. let res = await axios.post(API_CONFIG.baseUrl, params)
  160. let perData= JSON.parse(res.data[0][0].json)
  161. // 第二步
  162. let params2 = [
  163. {
  164. functionName: "select_desktopToolByPage",
  165. status: "",
  166. page: 1,
  167. lim: 9999999,
  168. },
  169. ];
  170. let res2 = await axios.post(API_CONFIG.baseUrl, params2)
  171. let toolList = res2.data[0];
  172. toolList.forEach((i) => {
  173. i.url = JSON.parse(i.url);
  174. i.json = JSON.parse(i.json);
  175. i.argumentList = JSON.parse(i.argumentList);
  176. });
  177. // 第三步
  178. perData.admin.index.list.forEach((i, index) => {
  179. let _index = toolList.findIndex((i2) => i == i2.id);
  180. if (_index != -1) {
  181. perData.admin.index.list[index] = toolList[_index];
  182. perData.admin.index.list[index].hovered = false
  183. } else {
  184. console.log("无工具", i);
  185. }
  186. });
  187. perData.admin.sidebar.list.forEach((i, index) => {
  188. if (i.children) {
  189. i.children.forEach((i2, index2) => {
  190. let _toolList = JSON.parse(JSON.stringify(toolList))
  191. let _index = _toolList.findIndex((i3) => i2 == i3.id);
  192. if (_index != -1) {
  193. perData.admin.sidebar.list[index].children[index2] = _toolList[_index];
  194. perData.admin.sidebar.list[index].children[index2].typeId = perData.admin.sidebar.list[index].typeId + "," +_toolList[_index].id;
  195. } else {
  196. console.log("无工具", i);
  197. }
  198. });
  199. } else {
  200. let _toolList = JSON.parse(JSON.stringify(toolList))
  201. let _index = _toolList.findIndex((i2) => i == i2.id);
  202. if (_index != -1) {
  203. perData.admin.sidebar.list[index] = _toolList[_index];
  204. perData.admin.sidebar.list[index].typeId =
  205. perData.admin.sidebar.list[index].id;
  206. } else {
  207. console.log("无工具", i);
  208. }
  209. }
  210. });
  211. commit('SET_FROM', perData)
  212. console.log('state.fromL',state.fromL);
  213. },
  214. async logout({ commit }) {
  215. return new Promise((resolve) => {
  216. commit("SET_TOKEN", "");
  217. commit("SET_ROLES", []);
  218. commit("SET_USERINFO2", {});
  219. removeToken();
  220. commit("RESET_STATE");
  221. window.topU.US.userInfo = {}
  222. eduLogout().then(() => {
  223. resolve();
  224. });
  225. });
  226. },
  227. // remove token
  228. resetToken({ commit }) {
  229. return new Promise((resolve) => {
  230. commit("SET_TOKEN", "");
  231. commit("SET_ROLES", []);
  232. removeToken();
  233. resolve();
  234. });
  235. },
  236. };
  237. export default {
  238. namespaced: true,
  239. state,
  240. mutations,
  241. actions,
  242. };