Преглед изворни кода

单品促销-优惠价活动,前端标签展示逻辑优化

yuwenjun1997 пре 2 година
родитељ
комит
9107f2b508

+ 28 - 3
src/main/resources/static/js/product/mixins/productMixins.js

@@ -1,3 +1,19 @@
+function isObject(obj){
+    return Object.prototype.toString.call(obj) === '[object Object]';
+}
+
+// 递归赋值
+function recursiveAssign(target, source){
+    if(!isObject(target) || !isObject(source)) return;
+    for (const key in target) {
+        if(source.hasOwnProperty(key)){
+            target[key] = source[key];
+        }else{
+            recursiveAssign(target[key], source);
+        }
+    }
+}
+
 // 商品详情
 var productMixins = function () {
     return {
@@ -26,6 +42,17 @@ var productMixins = function () {
             }
         },
         methods: {
+            // 切换sku
+            switchSkuRef(product, skuId){
+                if(product.skus && product.skus.length > 0){
+                    const sku = product.skus.find(function(item){
+                         return item.skuId === skuId;
+                    });
+                    if(!sku) return;
+                    recursiveAssign(product, sku);
+                }
+            },
+
             handleAddShopCart(){ //加入购物车
                 if(this.isDetailsBtnDisable){ return }
                 if(this.addStatus){
@@ -82,14 +109,12 @@ var productMixins = function () {
             },
             handleChoisSku(sku,index){
                 this.skuIndex = index;
-                this.priceObj.originalPrice = sku.originalPrice;
-                this.priceObj.normalPrice = sku.normalPrice;
-                this.priceObj.price = sku.price;
                 this.addParams.skuId = sku.skuId;
                 this.number = this.priceObj.minBuyNumber = sku.minBuyNumber;
                 this.productStock = sku.stock;
                 this.ladderList = sku.ladderPriceList ? sku.ladderPriceList : [];
                 this.isDetailsBtnDisable = sku.stock === 0;
+                this.switchSkuRef(this.priceObj, sku.skuId)
                 $('#prosductStock').text(sku.stock);
                 $('#proMinBuyNumber').text(sku.minBuyNumber);
             },

+ 4 - 3
src/main/resources/static/js/product/mixins/supportMixins.js

@@ -26,9 +26,10 @@ var supportMixins = function () {
             },
             handleSkuConfirm(pros,index){// 确认选择Sku
                 if(this.isbtnDisable){ return; }
-                pros.unit = this.handldSku.unit;
-                pros.price = this.handldSku.price;
-                pros.skuId = this.handldSku.skuId;
+                // pros.unit = this.handldSku.unit;
+                // pros.price = this.handldSku.price;
+                // pros.skuId = this.handldSku.skuId;
+                this.switchSkuRef(pros, this.handldSku.skuId)
                 pros.isSkuPopup = false;
             },
             handleSupportingChoisSku(pros,sku,index){// 配套商品选择规格