| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import { ProjectAPI } from '@/api';
- import {
- ActionTree, GetterTree, Module, MutationTree,
- } from 'vuex';
- import {
- WorkspaceState, RootState, ChangeGroupPayload, ChangeProjectPayload,
- } from '../typings';
- const DEFAULT: WorkspaceState = {
- currentProjectId: -1,
- currentGroupId: -1,
- groupList: [],
- projectList: [],
- };
- const actions: ActionTree<WorkspaceState, RootState> = {
- async refreshProjectList({ commit }, userId) {
- const projectList = await ProjectAPI.getProjectListByUserId(userId);
- commit('updateProjectList', projectList);
- },
- changeGroup({ commit }, payload: ChangeGroupPayload) {
- commit('changeGroup', payload);
- },
- changeProject({ commit }, payload: ChangeProjectPayload) {
- commit('changeProject', payload);
- },
- };
- const mutations: MutationTree<WorkspaceState> = {
- updateProjectList(state, payload: Array<Project>) {
- state.projectList = payload;
- },
- changeGroup(state, { groupId }: ChangeGroupPayload) {
- state.currentGroupId = groupId;
- },
- changeProject(state, { projectId }: ChangeProjectPayload) {
- state.currentProjectId = projectId;
- },
- };
- const getters: GetterTree<WorkspaceState, RootState> = {
- projectListOfCurrentGroup(state) {
- return state.projectList.filter((project) => project.groupId === state.currentGroupId);
- },
- currentProjectInfo(state) {
- return Array.prototype.find.call(state.projectList, (project) => project.id === state.currentProjectId)
- || {
- id: -1,
- name: '未选择项目',
- };
- },
- };
- export const workspace: Module<WorkspaceState, RootState> = {
- state: () => DEFAULT,
- actions,
- mutations,
- getters,
- };
|