index.js 1.7 KB

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