user.js 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  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. let loginType = window.topU ? window.topU.U.UF.Cookie.get("cocoroboLoginType") : window.top.U.UF.Cookie.get("cocoroboLoginType");
  87. if(loginType != 1){
  88. eduGet()
  89. .then((response) => {
  90. console.log(response);
  91. var _user = response.data[0][0];
  92. // const allowedIds = [
  93. // "0abcb118-9110-11eb-80ad-005056b86db5",
  94. // "b7ccc834-aae5-11ea-a8d4-52540005ab01",
  95. // "a77e9404-efec-11e9-96f9-028edca3b798",
  96. // "0e8d50c3-50b5-2f1c-9f1a-bd346a0bf817",
  97. // "5943e08c-b7d4-11ed-8d51-005056b86db5"
  98. // ];
  99. // if (allowedIds.includes(_user.userid)) {
  100. commit("SET_ID", _user.userid);
  101. commit("SET_TOKEN", _user.userid);
  102. setToken(_user.userid);
  103. resolve(_user.userid);
  104. // } else if(_user.userid){
  105. // loginOut()
  106. // .then(async () => {
  107. // dispatch('user/logout', null, { root: true });
  108. // })
  109. // .catch(err => {
  110. // console.error(err);
  111. // });
  112. // Message({
  113. // message: "该用户ID不允许登录",
  114. // type: "error"
  115. // });
  116. // reject("该用户ID不允许登录");
  117. // }
  118. })
  119. .catch((error) => {
  120. // var _user = { userid: "6c56ec0e-2c74-11ef-bee5-005056b86db5" };
  121. // commit("SET_ID", _user.userid);
  122. // commit("SET_TOKEN", _user.userid);
  123. // setToken(_user.userid);
  124. // resolve(_user.userid);
  125. reject(error);
  126. });
  127. }
  128. });
  129. },
  130. getInfo({ commit, state }) {
  131. return new Promise((resolve, reject) => {
  132. // getToken()
  133. commit("SET_ID", state.token);
  134. getUser({ userid: state.token })
  135. .then((response) => {
  136. console.log(response);
  137. // const { data } = response
  138. const data = response.data[0][0];
  139. if (!data) {
  140. reject("验证失败,请重新登录。");
  141. }
  142. // console.log(response)
  143. commit("SET_USERINFO", data);
  144. resolve(data);
  145. // resolve()
  146. })
  147. .catch((error) => {
  148. reject(error);
  149. });
  150. });
  151. },
  152. async getschPerInfo({ commit,state }) {
  153. let params = [{
  154. functionName: API_CONFIG.ajax_schoolPermission.functionName, // 调用存储过程的名称
  155. org: state.userinfo.org, //组织id
  156. oid: state.userinfo.organizeid, //学校id
  157. }];
  158. console.log('params',params);
  159. // 获取学校权限与组织权限,优先使用学校权限,其次使用组织权限
  160. // 第一步
  161. let res = await axios.post(API_CONFIG.baseUrl, params)
  162. let perData= JSON.parse(res.data[0][0].json)
  163. // 第二步
  164. let params2 = [
  165. {
  166. functionName: "select_desktopToolByPage",
  167. status: "",
  168. page: 1,
  169. lim: 9999999,
  170. },
  171. ];
  172. let res2 = await axios.post(API_CONFIG.baseUrl, params2)
  173. let toolList = res2.data[0];
  174. toolList.forEach((i) => {
  175. i.url = JSON.parse(i.url);
  176. i.json = JSON.parse(i.json);
  177. i.argumentList = JSON.parse(i.argumentList);
  178. });
  179. let params3 = [
  180. {
  181. functionName: "select_schUsuallyApp",
  182. userid: "",
  183. stand: "cn",
  184. },
  185. ];
  186. let res3 = await axios.post(API_CONFIG.baseUrl, params3)
  187. let _list = res3.data[0]
  188. _list.forEach((i) => {
  189. i.json = JSON.parse(i.json);
  190. });
  191. let appList = _list;
  192. // 第三步
  193. perData.desktop.list.forEach((i, index) => {
  194. let _index = toolList.findIndex((i2) => i == i2.id);
  195. if (_index != -1) {
  196. perData.desktop.list[index] = toolList[_index];
  197. } else {
  198. console.log("无工具", i);
  199. }
  200. });
  201. // if (perData.admin.cocoFlow) {
  202. // perData.admin.cocoFlow.forEach((i, index) => {
  203. // let _index = appList.findIndex((i2) => i.id == i2.id);
  204. // if (_index != -1) {
  205. // let _setData = appList[_index];
  206. // _setData.setIcon = i.setIcon;
  207. // perData.admin.cocoFlow[index] = _setData;
  208. // } else {
  209. // console.log("无应用", i);
  210. // }
  211. // });
  212. // }
  213. // if (perData.admin.cocoFlow2) {
  214. // perData.admin.cocoFlow2.forEach((i, index) => {
  215. // let _index = appList.findIndex((i2) => i.id == i2.id);
  216. // if (_index != -1) {
  217. // let _setData = appList[_index];
  218. // _setData.setIcon = i.setIcon;
  219. // perData.admin.cocoFlow2[index] = _setData;
  220. // } else {
  221. // console.log("无应用", i);
  222. // }
  223. // });
  224. // }
  225. if (perData.admin.CampusF && perData.admin.CampusF.appList) {
  226. perData.admin.CampusF.appList.forEach((i, index) => {
  227. let _index = appList.findIndex((i2) => i.id == i2.id);
  228. if (_index != -1) {
  229. let _setData = appList[_index];
  230. _setData.setIcon = i.setIcon;
  231. perData.admin.CampusF.appList[index] = _setData;
  232. } else {
  233. console.log("无应用", i);
  234. }
  235. });
  236. perData.admin.CampusF.appList = perData.admin.CampusF.appList.filter(Boolean);
  237. }
  238. perData.admin.index.list.forEach((i, index) => {
  239. let _index = toolList.findIndex((i2) => i == i2.id);
  240. if (_index != -1) {
  241. perData.admin.index.list[index] = toolList[_index];
  242. perData.admin.index.list[index].hovered = false
  243. } else {
  244. console.log("无工具", i);
  245. }
  246. });
  247. perData.admin.sidebar.list.forEach((i, index) => {
  248. if (i.children) {
  249. i.children.forEach((i2, index2) => {
  250. let _toolList = JSON.parse(JSON.stringify(toolList))
  251. let _index = _toolList.findIndex((i3) => i2 == i3.id);
  252. if (_index != -1) {
  253. perData.admin.sidebar.list[index].children[index2] = _toolList[_index];
  254. perData.admin.sidebar.list[index].children[index2].typeId = perData.admin.sidebar.list[index].typeId + "," +_toolList[_index].id;
  255. } else {
  256. console.log("无工具", i);
  257. }
  258. });
  259. } else {
  260. let _toolList = JSON.parse(JSON.stringify(toolList))
  261. let _index = _toolList.findIndex((i2) => i == i2.id);
  262. if (_index != -1) {
  263. perData.admin.sidebar.list[index] = _toolList[_index];
  264. perData.admin.sidebar.list[index].typeId =
  265. perData.admin.sidebar.list[index].id;
  266. } else {
  267. console.log("无工具", i);
  268. }
  269. }
  270. });
  271. commit('SET_FROM', perData)
  272. console.log('state.fromL',state.fromL);
  273. },
  274. async logout({ commit }) {
  275. return new Promise((resolve) => {
  276. commit("SET_TOKEN", "");
  277. commit("SET_ROLES", []);
  278. commit("SET_USERINFO2", {});
  279. removeToken();
  280. commit("RESET_STATE");
  281. window.topU.US.userInfo = {}
  282. eduLogout().then(() => {
  283. window.topU.location.reload();
  284. resolve();
  285. });
  286. });
  287. },
  288. // remove token
  289. resetToken({ commit }) {
  290. return new Promise((resolve) => {
  291. commit("SET_TOKEN", "");
  292. commit("SET_ROLES", []);
  293. removeToken();
  294. resolve();
  295. });
  296. },
  297. };
  298. export default {
  299. namespaced: true,
  300. state,
  301. mutations,
  302. actions,
  303. };