customer.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. import {
  2. ADD_CUSTOMER,
  3. SET_CUSTOMERS,
  4. SET_LOADING_CUSTOMERS,
  5. SET_SELECTED_CUSTOMER,
  6. SET_SHOW_CUSTOMER_FORM
  7. } from '@/constants/mutationTypes'
  8. import {
  9. INIT_CUSTOMERS,
  10. SHOW_CUSTOMER_FORM,
  11. HIDE_CUSTOMER_FORM,
  12. SUBMIT_CUSTOMER,
  13. CREATE_CUSTOMER,
  14. RECEIVE_CUSTOMER,
  15. SELECT_CUSTOMER,
  16. RESET_CUSTOMER
  17. } from '@/constants/actionTypes'
  18. const initialState = {
  19. customers: [],
  20. loadingCustomers: false,
  21. showingCustomerForm: false,
  22. selectedCustomer: null
  23. }
  24. const state = {
  25. customers: initialState.customers,
  26. loadingCustomers: !initialState.loadingCustomers,
  27. showingCustomerForm: initialState.showingCustomerForm,
  28. selectedCustomer: initialState.selectedCustomer
  29. }
  30. const getters = {
  31. /**
  32. *
  33. * @param {*} state
  34. */
  35. customers(state) {
  36. return state.customers
  37. },
  38. /**
  39. *
  40. * @param {*} state
  41. */
  42. loadingCustomers(state) {
  43. return state.loadingCustomers
  44. },
  45. /**
  46. *
  47. * @param {*} state
  48. */
  49. showingCustomerForm(state) {
  50. return state.showingCustomerForm
  51. },
  52. /**
  53. *
  54. * @param {*} state
  55. */
  56. selectedCustomer(state) {
  57. return state.selectedCustomer
  58. },
  59. /**
  60. *
  61. * @param {*} state
  62. */
  63. customerCredit(state) {
  64. return state.selectedCustomer && state.selectedCustomer.creditLimit >= state.selectedCustomer.credit ? state.selectedCustomer.creditLimit - state.credit : 0
  65. }
  66. }
  67. const mutations = {
  68. /**
  69. *
  70. * @param {*} state
  71. * @param {*} payload
  72. */
  73. [SET_CUSTOMERS] (state, payload) {
  74. state.customers = payload
  75. },
  76. /**
  77. *
  78. * @param {*} state
  79. * @param {*} payload
  80. */
  81. [SET_LOADING_CUSTOMERS] (state, payload) {
  82. state.loadingCustomers = !!payload
  83. },
  84. /**
  85. *
  86. * @param {*} state
  87. * @param {*} payload
  88. */
  89. [SET_SHOW_CUSTOMER_FORM] (state, payload) {
  90. state.showingCustomerForm = !!payload
  91. },
  92. /**
  93. *
  94. * @param {*} state
  95. * @param {*} payload
  96. */
  97. [ADD_CUSTOMER] (state, payload) {
  98. state.customers = [payload, ...state.customers]
  99. },
  100. /**
  101. *
  102. * @param {*} state
  103. * @param {*} payload
  104. */
  105. [SET_SELECTED_CUSTOMER] (state, payload) {
  106. state.selectedCustomer = payload
  107. }
  108. }
  109. const actions = {
  110. /**
  111. *
  112. * @param {*} param0
  113. * @param {*} payload
  114. */
  115. [INIT_CUSTOMERS] ({ commit }, payload) {
  116. commit(SET_CUSTOMERS, payload)
  117. commit(SET_LOADING_CUSTOMERS)
  118. },
  119. /**
  120. *
  121. * @param {*} param0
  122. * @param {*} payload
  123. */
  124. [SHOW_CUSTOMER_FORM] ({ commit }) {
  125. commit(SET_SHOW_CUSTOMER_FORM, true)
  126. },
  127. /**
  128. *
  129. * @param {*} param0
  130. */
  131. [HIDE_CUSTOMER_FORM] ({ commit }) {
  132. commit(SET_SHOW_CUSTOMER_FORM, false)
  133. },
  134. /**
  135. *
  136. * @param {*} param0
  137. */
  138. [SUBMIT_CUSTOMER] ({ commit, dispatch }, payload) {
  139. commit(SET_LOADING_CUSTOMERS, true)
  140. dispatch(CREATE_CUSTOMER, payload)
  141. dispatch(HIDE_CUSTOMER_FORM)
  142. },
  143. /**
  144. *
  145. * @param {*} param0
  146. * @param {*} payload
  147. */
  148. [RECEIVE_CUSTOMER] ({ commit }, payload) {
  149. commit(ADD_CUSTOMER, payload)
  150. commit(SET_LOADING_CUSTOMERS, false)
  151. },
  152. /**
  153. *
  154. * @param {*} param0
  155. */
  156. [SELECT_CUSTOMER] ({ commit }, payload) {
  157. commit(SET_SELECTED_CUSTOMER, payload)
  158. },
  159. /**
  160. *
  161. * @param {*} param0
  162. */
  163. [RESET_CUSTOMER] ({ commit }) {
  164. commit(SET_LOADING_CUSTOMERS, true)
  165. commit(SET_CUSTOMERS, [])
  166. commit(SET_SELECTED_CUSTOMER, null)
  167. }
  168. }
  169. export default {
  170. state,
  171. getters,
  172. mutations,
  173. actions
  174. }