store.js 6.3 KB

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