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

  1. import ProjectService from '@/services/project.service'
  2. export const state = () => ({
  3. projects: [],
  4. selected: [],
  5. current: null,
  6. loading: false
  7. })
  8. export const getters = {
  9. isProjectSelected(state) {
  10. return state.selected.length > 0
  11. }
  12. }
  13. export const mutations = {
  14. setProjectList(state, payload) {
  15. state.projects = payload
  16. },
  17. createProject(state, project) {
  18. state.projects.unshift(project)
  19. },
  20. updateProject(state, project) {
  21. const item = state.projects.find(item => item.id === project.id)
  22. Object.assign(item, project)
  23. },
  24. deleteProject(state, projectId) {
  25. state.projects = state.projects.filter(item => item.id !== projectId)
  26. },
  27. updateSelected(state, selected) {
  28. state.selected = selected
  29. },
  30. resetSelected(state) {
  31. state.selected = []
  32. },
  33. setLoading(state, payload) {
  34. state.loading = payload
  35. },
  36. setCurrent(state, payload) {
  37. state.current = payload
  38. }
  39. }
  40. export const actions = {
  41. getProjectList({ commit }, config) {
  42. commit('setLoading', true)
  43. ProjectService.getProjectList()
  44. .then((response) => {
  45. commit('setProjectList', response)
  46. })
  47. .catch((error) => {
  48. alert(error)
  49. })
  50. .finally(() => {
  51. commit('setLoading', false)
  52. })
  53. },
  54. createProject({ commit }, project) {
  55. ProjectService.createProject(project)
  56. .then((response) => {
  57. commit('createProject', response)
  58. })
  59. .catch((error) => {
  60. alert(error)
  61. })
  62. },
  63. updateProject({ commit }, data) {
  64. ProjectService.updateProject(data.projectId, data)
  65. .then((response) => {
  66. commit('updateProject', response)
  67. })
  68. .catch((error) => {
  69. alert(error)
  70. })
  71. },
  72. deleteProject({ commit, state }, config) {
  73. for (const project of state.selected) {
  74. ProjectService.deleteProject(project.id)
  75. .then((response) => {
  76. commit('deleteProject', project.id)
  77. })
  78. .catch((error) => {
  79. alert(error)
  80. })
  81. }
  82. commit('resetSelected')
  83. },
  84. setCurrentProject({ commit }, projectId) {
  85. return ProjectService.fetchProjectById(projectId)
  86. .then((response) => {
  87. commit('setCurrent', response)
  88. })
  89. .catch((error) => {
  90. alert(error)
  91. })
  92. },
  93. updateCurrentProject({ commit }, data) {
  94. ProjectService.updateProject(data.projectId, data)
  95. .then((response) => {
  96. commit('setCurrent', response)
  97. })
  98. .catch((error) => {
  99. alert(error)
  100. })
  101. }
  102. }