Product.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <template lang="pug">
  2. .pos-step
  3. .products-selector
  4. searcher(
  5. mode='normal'
  6. :items='products'
  7. :keys="['name', 'ean13', 'defaultCode']"
  8. @onSearch='filterProducts'
  9. )
  10. .products-grid
  11. store-selector(
  12. :items='warehouses'
  13. :selected='selectedWarehouse'
  14. @onSelect='selectWarehouse'
  15. )
  16. card-grid(
  17. @onAdd='showProductForm'
  18. :items='visibleProducts'
  19. :footerKeys="['price:c']"
  20. :currencyOptions='baseCurrency'
  21. :loading='loadingProducts'
  22. @onSelect='selectProduct'
  23. )
  24. product-modal(
  25. :show='showingProductForm'
  26. @onAccept='submitProduct'
  27. @onCancel='hideProductForm'
  28. )
  29. variant-modal
  30. discount-modal(
  31. :item='itemToDiscount'
  32. :options='baseCurrency'
  33. :show='!!itemToDiscount'
  34. @onAccept='applyPrice'
  35. @onCancel='applyPrice'
  36. )
  37. cart(
  38. :items='cartItems'
  39. :currencyOptions='baseCurrency'
  40. @onTotalComputed='changeCartTotal'
  41. @onIncrementQty='addToCart'
  42. @onUndoPrice='undoPrice'
  43. @onChangePrice='changePrice'
  44. @onDecrementQty='decreaseFromCart'
  45. @onDeleteItem='removeFromCart'
  46. )
  47. </template>
  48. <script>
  49. import { mapGetters, mapActions } from 'vuex'
  50. import { Searcher, CardGrid, Cart, StoreSelector } from '../common'
  51. import ProductModal from '../modals/ProductModal'
  52. import VariantModal from '../modals/VariantModal'
  53. import DiscountModal from '../modals/DiscountModal'
  54. export default {
  55. components: {
  56. Searcher,
  57. CardGrid,
  58. Cart,
  59. StoreSelector,
  60. ProductModal,
  61. VariantModal,
  62. DiscountModal
  63. },
  64. computed: {
  65. ...mapGetters([
  66. 'products',
  67. 'visibleProducts',
  68. 'stores',
  69. 'warehouses',
  70. 'showWarehouseSelector',
  71. 'loadingProducts',
  72. 'showingProductForm',
  73. 'cartItems',
  74. 'itemToDiscount',
  75. 'baseCurrency'
  76. ])
  77. },
  78. methods: mapActions([
  79. 'filterProducts',
  80. 'selectProduct',
  81. 'showProductForm',
  82. 'hideProductForm',
  83. 'submitProduct',
  84. 'changeCartTotal',
  85. 'addToCart',
  86. 'decreaseFromCart',
  87. 'undoPrice',
  88. 'changePrice',
  89. 'applyPrice',
  90. 'removeFromCart'
  91. ])
  92. }
  93. </script>
  94. <style lang="sass">
  95. .pos-step
  96. .products-selector
  97. width: calc(100% - 300px)
  98. height: 100%
  99. padding-right: 5px
  100. .products-grid
  101. width: 100%
  102. height: 100%
  103. display: flex
  104. </style>