import Vue from "vue"; import Vuex from "vuex"; import { queryAllWorkType } from "@/services/workload"; import { queryDep } from "@/services/project"; import { queryProjectList, queryUserList } from "@/services/daily"; Vue.use(Vuex); const store = new Vuex.Store({ state: { showSearch: true, typeList: [], allType: {}, currentProject: {}, depUserTree: [], projectList: [], userList: [], }, mutations: { setType(state, values) { state.typeList = values.typeList; state.allType = values.allType; }, setCurrentProject(state, project) { state.currentProject = project; }, setShowSearch(state, value) { state.showSearch = value; }, setDep(state, dep) { const getDepUserTree = (data) => { let ret = {}; ret.text = data.Name; ret.value = `${data.ID}-0`; if (data.children) { if (!ret.children) ret.children = []; data.children.forEach((item) => { ret.children.push(getDepUserTree(item)); }); } if (data.Users && data.Users.length !== 0) { if (!ret.children) ret.children = []; data.Users.forEach((item) => { let user = {}; user.text = item.CName; user.value = `${data.ID}-${item.ID}`; ret.children.push(user); }); } return ret; }; state.depUserTree = dep.data.list.map((item) => getDepUserTree(item)); }, saveProjectList(state, list) { state.projectList = list; }, saveUserList(state, list) { state.userList = list; }, }, actions: { getType: async function ({ commit, state }, value) { if (state.typeList.length > 0) return; commit("setType", await queryAllWorkType()); }, getDep: async function ({ commit, state }, value) { if (state.depUserTree.length > 0) return; commit("setDep", await queryDep()); }, queryProjectList: async function ({ commit, state }, value) { const res = await queryProjectList(); commit("saveProjectList", res.data); }, queryUserList: async function ({ commit, state }, value) { // 防止多次请求数据 if (state.userList.length != 0) return; const res = await queryUserList(); commit("saveUserList", res.data?.list); }, }, }); export default store;