Browse Source

[ADD] price undo feature

Gogs 7 years ago
parent
commit
2bf20fad39

+ 4 - 1
src/components/common/Cart.vue

@@ -4,7 +4,7 @@
             h2.currency-cart-total {{ total | currency(...defaultOptions.currency) }}
         .cart-items-wrapper
             transition-group(name='list' tag='ul' class='cart-items')
-                cart-item(v-for='(item, index) in items' :key='index' :index='index' :item='item' @onChange='onItemChanged' @onClickIncrement='onIncrementQty' @onClickDecrement='onDecrementQty' @onClickMoney='onChangePrice' @onClickDelete='onDeleteItem' :options='defaultOptions.currency')
+                cart-item(v-for='(item, index) in items' :key='index' :index='index' :item='item' @onChange='onItemChanged' @onClickIncrement='onIncrementQty' @onClickDecrement='onDecrementQty' @onClickMoney='onChangePrice' @onClickUndo='onUndoPrice' @onClickDelete='onDeleteItem' :options='defaultOptions.currency')
 </template>
 
 <script>
@@ -62,6 +62,9 @@
             onChangePrice(item) {
                 this.$emit('onChangePrice', item)
             },
+            onUndoPrice(item) {
+                this.$emit('onUndoPrice', item)
+            },
             onDeleteItem(item) {
                 this.$emit('onDeleteItem', item)
             }

+ 6 - 2
src/components/common/CartItem.vue

@@ -10,7 +10,8 @@
             .cart-item-options
                 .cart-item-option(class='fa fa-plus' @click='onClickIncrement')
                 .cart-item-option(class='fa fa-minus' @click='onClickDecrement')
-                .cart-item-option(class="fa fa-money" @click='onClickMoney')
+                .cart-item-option(class='fa fa-money' @click='onClickMoney')
+                .cart-item-option(class='fa fa-undo' @click='onClickUndo')
                 .cart-item-option(class='fa fa-trash' @click='onClickDelete')
 </template>
 
@@ -59,6 +60,9 @@
             onClickMoney() {
                 this.$emit('onClickMoney', this.item)
             },
+            onClickUndo() {
+                this.$emit('onClickUndo', this.item)
+            },
             onClickDelete() {
                 this.$emit('onClickDelete', this.item)
             },
@@ -135,7 +139,7 @@
             display: flex
             justify-content: center
             .cart-item-options
-                width: 100px
+                width: 120px
                 height: 20px
                 border: 1px solid #d3d3d3
                 border-bottom: none

+ 2 - 1
src/components/steps/Product.vue

@@ -5,7 +5,7 @@
             card-grid(:items='visibleProducts' :loading='loadingProducts' :details="['price:c']" @onSelect='selectProduct')
             variant-modal(:items='productWithVariant && productWithVariant.variants' :show='!!productWithVariant' @onSelect='selectProduct' @onClose='selectProduct')
             price-modal(:item='itemPriced' :options='selectedCurrency' :show='!!itemPriced' @onAccept='changePrice' @onCancel='changePrice')
-        cart(:items='cartItems' @onIncrementQty='addToCart' @onChangePrice='changePrice' @onDecrementQty='decreaseFromCart' @onDeleteItem='removeFromCart' @onTotalComputed='updateCartTotal' :options='selectedCurrency')
+        cart(:items='cartItems' @onIncrementQty='addToCart' @onChangePrice='changePrice' @onUndoPrice='undoPrice' @onDecrementQty='decreaseFromCart' @onDeleteItem='removeFromCart' @onTotalComputed='updateCartTotal' :options='selectedCurrency')
 </template>
 
 <script>
@@ -38,6 +38,7 @@
             'addToCart',
             'decreaseFromCart',
             'changePrice',
+            'undoPrice',
             'removeFromCart',
             'updateCartTotal'
         ])

+ 17 - 0
src/store/modules/cart.js

@@ -94,6 +94,15 @@ const mutations = {
     applyPrice(state, payload) {
         let foundProduct = state.cartItems.find(item => item.id === state.itemPriced.id)
         foundProduct.price = payload
+    },
+    /**
+     * 
+     * @param {*} state 
+     * @param {*} payload 
+     */
+    undoPrice(state, payload) {
+        let foundProduct = state.cartItems.find(item => item.id === payload.id)
+        foundProduct.price = foundProduct.standardPrice
     }
 }
 
@@ -146,6 +155,14 @@ const actions = {
         commit('setItemPriced', null)
 
     },
+    /**
+     * 
+     * @param {*} param0 
+     * @param {*} payload 
+     */
+    undoPrice({ commit }, payload) {
+        commit('undoPrice', payload)
+    },
     /**
      * 
      * @param {*} param0