cart.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import { PUSH_TO_CART, SET_CART_TOTAL } from '@/constants/mutationTypes'
  2. import { ADD_TO_CART, CHANGE_CART_TOTAL } from '@/constants/actionTypes'
  3. const initialState = {
  4. cartItems: [],
  5. cartTotal: 0
  6. }
  7. const state = {
  8. cartItems: initialState.cartItems,
  9. cartTotal: initialState.cartTotal
  10. }
  11. const getters = {
  12. /**
  13. *
  14. * @param {*} state
  15. */
  16. cartItems(state) {
  17. return state.cartItems
  18. },
  19. /**
  20. *
  21. * @param {*} state
  22. */
  23. cartTotal(state) {
  24. return state.cartTotal
  25. }
  26. }
  27. const mutations = {
  28. /**
  29. *
  30. * @param {*} state
  31. * @param {*} payload
  32. */
  33. [PUSH_TO_CART] (state, payload) {
  34. let productFound = state.cartItems.find(item => item.id === payload.id)
  35. console.log(payload)
  36. if (productFound) {
  37. productFound.quantity = productFound.quantity + 1
  38. return
  39. }
  40. state.cartItems = [payload, ...state.cartItems]
  41. },
  42. /**
  43. *
  44. * @param {*} state
  45. * @param {*} payload
  46. */
  47. [SET_CART_TOTAL] (state, payload) {
  48. state.cartTotal = payload
  49. }
  50. }
  51. const actions = {
  52. /**
  53. *
  54. * @param {*} param0
  55. * @param {*} payload
  56. */
  57. [ADD_TO_CART] ({ commit }, payload) {
  58. commit(PUSH_TO_CART, payload)
  59. },
  60. /**
  61. *
  62. * @param {*} param0
  63. * @param {*} payload
  64. */
  65. [CHANGE_CART_TOTAL] ({ commit }, payload) {
  66. commit(SET_CART_TOTAL, payload)
  67. }
  68. }
  69. export default {
  70. state,
  71. getters,
  72. mutations,
  73. actions
  74. }