index.js 2.0 KB

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