index.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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, queryUserList } 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. userList: [],
  16. },
  17. mutations: {
  18. setType(state, values) {
  19. state.typeList = values.typeList;
  20. state.allType = values.allType;
  21. },
  22. setCurrentProject(state, project) {
  23. state.currentProject = project;
  24. },
  25. setShowSearch(state, value) {
  26. state.showSearch = value;
  27. },
  28. setDep(state, dep) {
  29. const getDepUserTree = (data) => {
  30. let ret = {};
  31. ret.text = data.Name;
  32. ret.value = `${data.ID}-0`;
  33. if (data.children) {
  34. if (!ret.children) ret.children = [];
  35. data.children.forEach((item) => {
  36. ret.children.push(getDepUserTree(item));
  37. });
  38. }
  39. if (data.Users && data.Users.length !== 0) {
  40. if (!ret.children) ret.children = [];
  41. data.Users.forEach((item) => {
  42. let user = {};
  43. user.text = item.CName;
  44. user.value = `${data.ID}-${item.ID}`;
  45. ret.children.push(user);
  46. });
  47. }
  48. return ret;
  49. };
  50. state.depUserTree = dep.data.list.map((item) => getDepUserTree(item));
  51. },
  52. saveProjectList(state, list) {
  53. state.projectList = list;
  54. },
  55. saveUserList(state, list) {
  56. state.userList = list;
  57. },
  58. },
  59. actions: {
  60. getType: async function ({ commit, state }, value) {
  61. if (state.typeList.length > 0) return;
  62. commit("setType", await queryAllWorkType());
  63. },
  64. getDep: async function ({ commit, state }, value) {
  65. if (state.depUserTree.length > 0) return;
  66. commit("setDep", await queryDep());
  67. },
  68. queryProjectList: async function ({ commit, state }, value) {
  69. const res = await queryProjectList();
  70. commit("saveProjectList", res.data);
  71. },
  72. queryUserList: async function ({ commit, state }, value) {
  73. // 防止多次请求数据
  74. if (state.userList.length != 0) return;
  75. const res = await queryUserList();
  76. commit("saveUserList", res.data?.list);
  77. },
  78. },
  79. });
  80. export default store;