index.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import Vue from "vue";
  2. import Vuex from "vuex";
  3. import { queryDep } from "@/services/project";
  4. Vue.use(Vuex);
  5. const store = new Vuex.Store({
  6. state: {
  7. showSearch: true,
  8. allType: {},
  9. currentProject: {},
  10. depUserTree: [],
  11. },
  12. mutations: {
  13. setCurrentProject(state, project) {
  14. state.currentProject = project;
  15. },
  16. setShowSearch(state, value){
  17. state.showSearch = value;
  18. },
  19. setDep(state, dep) {
  20. const getDepUserTree = (data) => {
  21. let ret = {};
  22. ret.text = data.Name;
  23. ret.value = `${data.ID}-0`;
  24. if (data.children) {
  25. if (!ret.children) ret.children = [];
  26. data.children.forEach((item) => {
  27. ret.children.push(getDepUserTree(item));
  28. });
  29. }
  30. if (data.Users && data.Users.length !== 0) {
  31. if (!ret.children) ret.children = [];
  32. data.Users.forEach((item) => {
  33. let user = {};
  34. user.text = item.CName;
  35. user.value = `${data.ID}-${item.ID}`;
  36. ret.children.push(user);
  37. });
  38. }
  39. return ret;
  40. };
  41. state.depUserTree = dep.data.list.map((item) => getDepUserTree(item));
  42. },
  43. },
  44. actions: {
  45. getDep: async function ({ commit, state }, value) {
  46. if (state.depUserTree.length > 0) return;
  47. commit("setDep", await queryDep());
  48. },
  49. },
  50. });
  51. export default store;