星火管控前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.js 4.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. import Vue from "vue";
  2. import Vuex from "vuex";
  3. Vue.use(Vuex);
  4. export default new Vuex.Store({
  5. state: {
  6. userInfo: {},
  7. // 用户权限
  8. userPower: {
  9. // 1平台管理员 2区域管理员 3学校管理员
  10. atype: null,
  11. // 进入的区域层级列表
  12. regionids: [],
  13. // 进入的学校
  14. schoolid: null,
  15. // 所属位置(所属区域、所属学校)
  16. belong: []
  17. }
  18. },
  19. mutations: {
  20. // 登录后设置用户信息
  21. loginSetUserInfo(state, info) {
  22. state.userInfo = info;
  23. state.userPower.atype = info.atype;
  24. if (state.userPower.atype === 1) {
  25. state.userPower.regionids = [];
  26. state.userPower.schoolid = null;
  27. state.userPower.belong = [];
  28. } else if (state.userPower.atype === 2) {
  29. state.userPower.regionids = [info.regionid];
  30. state.userPower.schoolid = null;
  31. state.userPower.belong = [info.regionName];
  32. } else if (state.userPower.atype === 3) {
  33. state.userPower.regionids = [info.regionid];
  34. state.userPower.schoolid = info.schoolid;
  35. state.userPower.belong = [info.regionName, info.schoolName];
  36. }
  37. localStorage.setItem(
  38. "xh_control_userInfo",
  39. JSON.stringify({
  40. content: info,
  41. datetime: new Date().getTime()
  42. })
  43. );
  44. // 登录后设置用户的初始权限
  45. localStorage.setItem(
  46. "xh_control_userPower",
  47. JSON.stringify(state.userPower)
  48. );
  49. },
  50. // 刷新后设置权限
  51. setPowerAfterRefresh(state) {
  52. let _userInfo = localStorage.getItem("xh_control_userInfo");
  53. let _userPower = localStorage.getItem("xh_control_userPower");
  54. if (_userInfo && _userPower) {
  55. _userPower = JSON.parse(_userPower);
  56. state.userPower.atype = _userPower.atype;
  57. state.userPower.regionids = _userPower.regionids;
  58. state.userPower.schoolid = _userPower.schoolid;
  59. state.userPower.belong = _userPower.belong;
  60. } else {
  61. state.userPower.atype = null;
  62. state.userPower.regionids = [];
  63. state.userPower.schoolid = null;
  64. state.userPower.belong = [];
  65. }
  66. },
  67. // 进入区域设置跳转痕迹
  68. setEnterRegionPower(state, { regionid, regionName }) {
  69. if (!state.userPower.regionids.includes(regionid)) {
  70. state.userPower.regionids.push(regionid);
  71. state.userPower.belong.push(regionName);
  72. }
  73. localStorage.setItem(
  74. "xh_control_userPower",
  75. JSON.stringify(state.userPower)
  76. );
  77. },
  78. // 退出当前区域设置跳转痕迹
  79. setQuitRegionPower(state) {
  80. if (state.userPower.atype === 1) {
  81. if (state.userPower.regionids.length > 0) {
  82. state.userPower.regionids.pop();
  83. state.userPower.belong.pop();
  84. }
  85. } else if (state.userPower.atype === 2) {
  86. if (state.userPower.regionids.length > 1) {
  87. state.userPower.regionids.pop();
  88. state.userPower.belong.pop();
  89. }
  90. }
  91. localStorage.setItem(
  92. "xh_control_userPower",
  93. JSON.stringify(state.userPower)
  94. );
  95. },
  96. // 进入学校设置跳转痕迹
  97. setEnterSchoolPower(state, { schoolid, schoolName }) {
  98. state.userPower.schoolid = schoolid;
  99. state.userPower.belong.push(schoolName);
  100. localStorage.setItem(
  101. "xh_control_userPower",
  102. JSON.stringify(state.userPower)
  103. );
  104. },
  105. // 退出当前学校设置跳转痕迹
  106. setQuitSchoolPower(state) {
  107. if (state.userPower.atype === 1 || state.userPower.atype === 2) {
  108. state.userPower.schoolid = null;
  109. state.userPower.belong.pop();
  110. }
  111. localStorage.setItem(
  112. "xh_control_userPower",
  113. JSON.stringify(state.userPower)
  114. );
  115. }
  116. },
  117. getters: {
  118. powerParams(state) {
  119. let _powerParams = {
  120. // 当前所属区域 1平台 2区域 3学校
  121. rtype: null,
  122. // 区域ID/学校ID
  123. objectid: null
  124. };
  125. if (
  126. state.userPower.schoolid &&
  127. (state.userPower.atype === 1 ||
  128. state.userPower.atype === 2 ||
  129. state.userPower.atype === 3)
  130. ) {
  131. _powerParams.rtype = 3;
  132. _powerParams.objectid = state.userPower.schoolid;
  133. } else if (
  134. state.userPower.regionids.length > 0 &&
  135. (state.userPower.atype === 1 || state.userPower.atype === 2)
  136. ) {
  137. _powerParams.rtype = 2;
  138. let _regionids = [...state.userPower.regionids];
  139. _powerParams.objectid = _regionids.pop();
  140. } else if (
  141. state.userPower.regionids.length === 0 &&
  142. state.userPower.atype === 1
  143. ) {
  144. _powerParams.rtype = 1;
  145. _powerParams.objectid = null;
  146. }
  147. return _powerParams;
  148. }
  149. }
  150. });