You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

106 lines
2.5 KiB

import ProjectService from '@/services/project.service'
export const state = () => ({
projects: [],
selected: [],
current: null,
loading: false
})
export const getters = {
isProjectSelected(state) {
return state.selected.length > 0
}
}
export const mutations = {
setProjectList(state, payload) {
state.projects = payload
},
createProject(state, project) {
state.projects.unshift(project)
},
updateProject(state, project) {
const item = state.projects.find(item => item.id === project.id)
Object.assign(item, project)
},
deleteProject(state, projectId) {
state.projects = state.projects.filter(item => item.id !== projectId)
},
updateSelected(state, selected) {
state.selected = selected
},
resetSelected(state) {
state.selected = []
},
setLoading(state, payload) {
state.loading = payload
},
setCurrent(state, payload) {
state.current = payload
}
}
export const actions = {
getProjectList({ commit }, config) {
commit('setLoading', true)
ProjectService.getProjectList()
.then((response) => {
commit('setProjectList', response)
})
.catch((error) => {
alert(error)
})
.finally(() => {
commit('setLoading', false)
})
},
createProject({ commit }, project) {
ProjectService.createProject(project)
.then((response) => {
commit('createProject', response)
})
.catch((error) => {
alert(error)
})
},
updateProject({ commit }, data) {
ProjectService.updateProject(data.projectId, data)
.then((response) => {
commit('updateProject', response)
})
.catch((error) => {
alert(error)
})
},
deleteProject({ commit, state }, config) {
for (const project of state.selected) {
ProjectService.deleteProject(project.id)
.then((response) => {
commit('deleteProject', project.id)
})
.catch((error) => {
alert(error)
})
}
commit('resetSelected')
},
setCurrentProject({ commit }, projectId) {
return ProjectService.fetchProjectById(projectId)
.then((response) => {
commit('setCurrent', response)
})
.catch((error) => {
alert(error)
})
},
updateCurrentProject({ commit }, data) {
ProjectService.updateProject(data.projectId, data)
.then((response) => {
commit('setCurrent', response)
})
.catch((error) => {
alert(error)
})
}
}