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.

63 lines
1.4 KiB

  1. import ProjectService from '@/services/project.service'
  2. export const state = () => ({
  3. projects: [],
  4. selected: []
  5. })
  6. export const getters = {
  7. isProjectSelected(state) {
  8. return state.selected.length > 0
  9. }
  10. }
  11. export const mutations = {
  12. setProjectList(state, payload) {
  13. state.projects = payload
  14. },
  15. createProject(state, project) {
  16. state.projects.unshift(project)
  17. },
  18. deleteProject(state, projectId) {
  19. state.projects = state.projects.filter(item => item.id !== projectId)
  20. },
  21. updateSelected(state, selected) {
  22. state.selected = selected
  23. },
  24. resetSelected(state) {
  25. state.selected = []
  26. }
  27. }
  28. export const actions = {
  29. getProjectList(context, config) {
  30. return ProjectService.getProjectList()
  31. .then((response) => {
  32. context.commit('setProjectList', response)
  33. })
  34. .catch((error) => {
  35. alert(error)
  36. })
  37. },
  38. createProject({ commit }, project) {
  39. ProjectService.createProject(project)
  40. .then((response) => {
  41. commit('createProject', response)
  42. })
  43. .catch((error) => {
  44. alert(error)
  45. })
  46. },
  47. deleteProject({ commit, state }, config) {
  48. for (const project of state.selected) {
  49. ProjectService.deleteProject(project.id)
  50. .then((response) => {
  51. commit('deleteProject', project.id)
  52. })
  53. .catch((error) => {
  54. alert(error)
  55. })
  56. }
  57. commit('resetSelected')
  58. }
  59. }