index.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. typeList: [],
  9. allType: {},
  10. currentProject: {},
  11. depUserTree: [],
  12. },
  13. mutations: {
  14. setType(state, values) {
  15. state.typeList = values.typeList;
  16. state.allType = values.allType;
  17. },
  18. setCurrentProject(state, project) {
  19. state.currentProject = project;
  20. },
  21. setDep(state, dep) {
  22. const getDepUserTree = (data) => {
  23. let ret = {};
  24. ret.text = data.Name;
  25. ret.value = `${data.ID}-0`;
  26. if (data.children) {
  27. if (!ret.children) ret.children = [];
  28. data.children.forEach((item) => {
  29. ret.children.push(getDepUserTree(item));
  30. });
  31. }
  32. if (data.Users && data.Users.length !== 0) {
  33. if (!ret.children) ret.children = [];
  34. data.Users.forEach((item) => {
  35. let user = {};
  36. user.text = item.CName;
  37. user.value = `${data.ID}-${item.ID}`;
  38. ret.children.push(user);
  39. });
  40. }
  41. return ret;
  42. };
  43. state.depUserTree = dep.data.list.map((item) => getDepUserTree(item));
  44. },
  45. },
  46. actions: {
  47. getType: async function ({ commit, state }, value) {
  48. if (state.typeList.length > 0) return;
  49. commit("setType", await queryAllWorkType());
  50. },
  51. getDep: async function ({ commit, state }, value) {
  52. if (state.depUserTree.length > 0) return;
  53. commit("setDep", await queryDep());
  54. },
  55. },
  56. });
  57. export default store;