store.js 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. import Vue from 'vue';
  2. import Vuex from 'vuex';
  3. import http from '@utils/http.js';
  4. Vue.use(Vuex);
  5. const store = new Vuex.Store({
  6. state: {
  7. token: '',
  8. collapse: false, //控制面板是否显示
  9. tagsList: [], //标签页所显示的内容
  10. // 新弹窗
  11. modalParams: {},
  12. // 权限列表
  13. permissionList: [],
  14. //菜单列表
  15. menuList: [],
  16. // 当前登录用户信息
  17. cruUserInfo: {},
  18. thisDetai: {},
  19. //查询是否有未读消息
  20. messageNumber: false,
  21. //最近消息列表集合
  22. messageList: [],
  23. //记录消息的状态
  24. messageStatus: 2,
  25. // 弹窗集合
  26. popups: '',
  27. theme: 'light', //控制界面的颜色,
  28. // 查询的点的坐标
  29. searchPointInfo: {},
  30. //所有社区下拉
  31. areaSelect: [],
  32. //所有民族
  33. nationArray: [],
  34. //所有籍贯
  35. nativeArray: [],
  36. //公司部门
  37. companyArray: [],
  38. departmentArray: [],
  39. communityArray: []
  40. },
  41. getters: {
  42. getTheme(state) {
  43. return state.theme;
  44. },
  45. getPopups(state) {
  46. return state.popups || [];
  47. },
  48. getToken(state) {
  49. return state.token;
  50. },
  51. getSearchPointInfo(state) {
  52. return state.searchPointInfo;
  53. },
  54. getCollapse(state) {
  55. return state.collapse;
  56. },
  57. getTagsList(state) {
  58. return state.tagsList;
  59. },
  60. getModalParams(state) {
  61. return state.modalParams;
  62. },
  63. // 判断按钮是否有权限
  64. hasPermission: (state) => (role) => {
  65. if (state.permissionList.size) {
  66. return state.permissionList.has(role);
  67. } else {
  68. return false;
  69. }
  70. },
  71. //获取菜单列表
  72. getMenuList(state) {
  73. return state.menuList;
  74. },
  75. // 获取当前登录用户信息
  76. getCruUserInfo(state) {
  77. return state.cruUserInfo;
  78. },
  79. getThisDetai(state) {
  80. return state.thisDetai;
  81. },
  82. getAreaSelect(state) {
  83. return state.areaSelect;
  84. },
  85. getNationArray(state) {
  86. return state.nationArray;
  87. },
  88. getNativeArray(state) {
  89. return state.nativeArray;
  90. },
  91. getCompanyArray(state) {
  92. return state.companyArray;
  93. },
  94. getDepartmentArray(state) {
  95. return state.departmentArray;
  96. },
  97. getCommunityArray(state) {
  98. return state.communityArray;
  99. }
  100. },
  101. mutations: {
  102. setSearchPointInfo(state, data) {
  103. state.searchPointInfo = data;
  104. },
  105. setPopups(state, data) {
  106. state.popups = data;
  107. },
  108. setToken(state, data) {
  109. state.token = data;
  110. },
  111. setCollapse(state, data) {
  112. state.collapse = data;
  113. },
  114. setTagList(state, data) {
  115. state.tagsList = data;
  116. },
  117. setModalParams(state, data) {
  118. state.modalParams = data;
  119. },
  120. setPermissionList(state, data) {
  121. state.permissionList = data;
  122. },
  123. setMenuList(state, data) {
  124. state.menuList = data;
  125. },
  126. setcCruUserInfo(state, data) {
  127. state.cruUserInfo = data;
  128. },
  129. setThisDetai(state, data) {
  130. state.thisDetai = data;
  131. },
  132. setmessageNumber(state, data) {
  133. state.messageNumber = data;
  134. },
  135. setmessageList(state, data) {
  136. state.messageList = data;
  137. },
  138. setmessageStatus(state, data) {
  139. state.messageStatus = data;
  140. },
  141. setTheme(state, data) {
  142. state.theme = data;
  143. },
  144. setAreaSelect(state, data) {
  145. state.areaSelect = data;
  146. },
  147. setNationArray(state, data) {
  148. state.nationArray = data;
  149. },
  150. setNativeArray(state, data) {
  151. state.nativeArray = data;
  152. },
  153. setCompanyArray(state, data) {
  154. state.companyArray = data;
  155. },
  156. setDepartmentArray(state, data) {
  157. state.departmentArray = data;
  158. },
  159. setCommunityArray(state, data) {
  160. state.communityArray = data;
  161. }
  162. },
  163. actions: {
  164. tags(ctx, data) {
  165. ctx.commit('setTagList', data);
  166. },
  167. /**
  168. * @description: 打开弹窗
  169. * @param {type} ctx vuex的上下文
  170. * @param {object} args {
  171. * id: 唯一标识,必须
  172. * url: 打开的组件url地址,必须
  173. * params: 传递给弹出组件的参数,
  174. * notip: 是否显示*为填项必内容,为true时不显示
  175. * backgroud: 是否强制显示底部透明背景色,默认第二个弹出层时不显示透明底色,为true时一定显示
  176. * full: 是否为全屏展示,true为全屏
  177. * }
  178. * @return {null} null:
  179. */
  180. addPopup(ctx, args) {
  181. const params = { ...args };
  182. const list = ctx.getters.getPopups;
  183. params.id = 'modal_' + +new Date();
  184. import(/* webpackChunkName: "[request]" */ `@/views${params.url}`)
  185. .then((res) => {
  186. params.component = res.default;
  187. params.show = true;
  188. list.push(params);
  189. ctx.commit('setPopups', list);
  190. // ctx.commit('setalertModalParams', params);
  191. })
  192. .catch((err) => {
  193. if (err.message.indexOf('Loading chunk') == 0) {
  194. ELEMENT.Message.info('版本已更新,请刷新页面重试');
  195. } else {
  196. ELEMENT.Message.info(err.message);
  197. }
  198. });
  199. },
  200. delPopup(ctx, id) {
  201. // let id=id;
  202. // ctx.commit('setalertModalParams', { show: false});
  203. const list = ctx.getters.getPopups;
  204. list.every((item, index) => {
  205. if (item.id === id) {
  206. list.splice(index, 1);
  207. ctx.commit('setPopups', list);
  208. // 解决弹窗关闭,滚动条没有关闭的情况
  209. // const $bar = document.querySelector('.dmp-scroll-bar')
  210. // if ($bar) {
  211. // document.body.removeChild(document.querySelector('.dmp-scroll-bar'))
  212. // }
  213. return false;
  214. }
  215. return true;
  216. });
  217. },
  218. collapse(ctx, data) {
  219. ctx.commit('setCollapse', data);
  220. },
  221. openModal(ctx, args) {
  222. const params = { ...args };
  223. params.id = 'modal_' + +new Date();
  224. import(/* webpackChunkName: "[request]" */ `@/views${params.url}`)
  225. .then((res) => {
  226. params.component = res.default;
  227. params.show = true;
  228. ctx.commit('setModalParams', params);
  229. })
  230. .catch((err) => {
  231. ELEMENT.Message.error(`${err.message},请刷新页面重试`);
  232. });
  233. },
  234. closeModal(ctx) {
  235. ctx.commit('setModalParams', { show: false });
  236. },
  237. SET_MENU_LIST(ctx) {
  238. let value = ctx.getters['getMenuList'] || [];
  239. if (!value.length) {
  240. http.get('/sc-user-center/user/findUserMenu', { appId: '1002' }).then(({ status, data, msg }) => {
  241. if (0 === status) {
  242. ctx.commit('setMenuList', data[0].children);
  243. ctx.commit('setThisDetai', data[0]);
  244. window.localStorage.setItem('SC_listMuen', JSON.stringify(data[0].children))
  245. window.sessionStorage.setItem('setThisDetai', JSON.stringify(data[0]))
  246. } else {
  247. this.$message.error(msg)
  248. }
  249. });
  250. }
  251. }
  252. }
  253. });
  254. export default store;