index.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import Vue from 'vue'
  2. import Vuex from 'vuex'
  3. import layout from './modules/layout'
  4. import uploadFile from './modules/uploadFile'
  5. Vue.use(Vuex)
  6. export default new Vuex.Store({
  7. state: {
  8. //左侧导航菜单
  9. menus: [],
  10. /**
  11. * 用户信息 {id:'',name:''}
  12. */
  13. user: {},
  14. //记录上一次访问的页面
  15. fromPath: '',
  16. //面包屑{label:'',to:''}
  17. breadcrumbs: [],
  18. //项目信息{id:'',name:'',groupCode:''}
  19. projects: [],
  20. //选择的项目信息
  21. selectProject: {},
  22. // token
  23. ssoToken: ''
  24. },
  25. getters: {},
  26. mutations: {
  27. updateMenus(state, menus) {
  28. state.menus = menus;
  29. },
  30. updateUser(state, user) {
  31. state.user = user;
  32. },
  33. updateFromPath(state, fromPath) {
  34. state.fromPath = fromPath;
  35. },
  36. /**
  37. * 更新面包屑数据
  38. * @param {*} state
  39. * @param {*} breadcrumb {label:'',to:'/a'}
  40. */
  41. updateBreadcrumbs(state, breadcrumb) {
  42. var newBreadcrumbs = [];
  43. find(state.menus);
  44. //如果从菜单里找到了,说明是从菜单上点击的导航
  45. if (newBreadcrumbs.length > 0) {
  46. newBreadcrumbs.reverse();
  47. state.breadcrumbs = newBreadcrumbs;
  48. return;
  49. }
  50. //找不到时,说明是自定义面包屑,比如在页面内的跳转
  51. newBreadcrumbs = state.breadcrumbs;
  52. newBreadcrumbs.push(breadcrumb);
  53. state.breadcrumbs = newBreadcrumbs;
  54. //从菜单里找和breadcrumb对应的
  55. function find(menus) {
  56. for (let i = 0; i < menus.length; i++) {
  57. let currMenu = menus[i];
  58. if (currMenu.url == breadcrumb.to) {
  59. return currMenu;
  60. }
  61. if (currMenu.child && currMenu.child.length > 0) {
  62. let findMenu = find(currMenu.child);
  63. if (findMenu) {
  64. newBreadcrumbs.push({
  65. label: findMenu.name,
  66. to: findMenu.url
  67. });
  68. return currMenu;
  69. }
  70. }
  71. }
  72. return null;
  73. };
  74. },
  75. updateProjects(state, projects) {
  76. state.projects = projects;
  77. },
  78. updateSelectProject(state, selectProject) {
  79. state.selectProject = selectProject;
  80. },
  81. //注销
  82. loginOut(state) {
  83. state.menus = [];
  84. state.user = {};
  85. state.fromPath = '';
  86. state.breadcrumbs = [];
  87. state.projects = [];
  88. state.selectProject = {};
  89. }
  90. },
  91. actions: {},
  92. modules: {
  93. layout,
  94. uploadFile
  95. }
  96. })