Ver código fonte

商品SKU功能优化

macro 5 anos atrás
pai
commit
9dcf9e6142

+ 82 - 43
src/views/pms/product/components/ProductAttrDetail.vue

@@ -100,6 +100,11 @@
           style="margin-top: 20px"
           @click="handleSyncProductSkuPrice">同步价格
         </el-button>
+        <el-button
+          type="primary"
+          style="margin-top: 20px"
+          @click="handleSyncProductSkuStock">同步库存
+        </el-button>
       </el-form-item>
       <el-form-item label="属性图片:" v-if="hasAttrPic">
         <el-card shadow="never" class="cardBg">
@@ -325,30 +330,33 @@
       },
       //获取选中的属性值
       getEditAttrValues(index) {
-        let values = [];
+        let values = new Set();
         if (index === 0) {
           for (let i = 0; i < this.value.skuStockList.length; i++) {
             let sku = this.value.skuStockList[i];
-            if (sku.sp1 != null && values.indexOf(sku.sp1) === -1) {
-              values.push(sku.sp1);
+            let spData = JSON.parse(sku.spData);
+            if (spData!= null && spData.length>=1) {
+              values.add(spData[0].value);
             }
           }
         } else if (index === 1) {
           for (let i = 0; i < this.value.skuStockList.length; i++) {
             let sku = this.value.skuStockList[i];
-            if (sku.sp2 != null && values.indexOf(sku.sp2) === -1) {
-              values.push(sku.sp2);
+            let spData = JSON.parse(sku.spData);
+            if (spData!= null && spData.length>=2) {
+              values.add(spData[1].value);
             }
           }
         } else {
           for (let i = 0; i < this.value.skuStockList.length; i++) {
             let sku = this.value.skuStockList[i];
-            if (sku.sp3 != null && values.indexOf(sku.sp3) === -1) {
-              values.push(sku.sp3);
+            let spData = JSON.parse(sku.spData);
+            if (spData!= null && spData.length>=3) {
+              values.add(spData[2].value);
             }
           }
         }
-        return values;
+        return Array.from(values);
       },
       //获取属性的值
       getEditParamValue(id){
@@ -390,12 +398,11 @@
         this.selectProductAttr[idx].options.splice(index, 1);
       },
       getProductSkuSp(row, index) {
-        if (index === 0) {
-          return row.sp1;
-        } else if (index === 1) {
-          return row.sp2;
-        } else {
-          return row.sp3;
+        let spData = JSON.parse(row.spData);
+        if(spData!=null&&index<spData.length){
+          return spData[index].value;
+        }else{
+          return null;
         }
       },
       handleRefreshProductSkuList() {
@@ -415,10 +422,34 @@
           type: 'warning'
         }).then(() => {
           if(this.value.skuStockList!==null&&this.value.skuStockList.length>0){
+            let tempSkuList = [];
+            tempSkuList = tempSkuList.concat(tempSkuList,this.value.skuStockList);
             let price=this.value.skuStockList[0].price;
-            for(let i=0;i<this.value.skuStockList.length;i++){
-              this.value.skuStockList[i].price=price;
+            for(let i=0;i<tempSkuList.length;i++){
+              tempSkuList[i].price=price;
+            }
+            this.value.skuStockList=[];
+            this.value.skuStockList=this.value.skuStockList.concat(this.value.skuStockList,tempSkuList);
+          }
+        });
+      },
+      handleSyncProductSkuStock(){
+        this.$confirm('将同步第一个sku的库存到所有sku,是否继续', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          if(this.value.skuStockList!==null&&this.value.skuStockList.length>0){
+            let tempSkuList = [];
+            tempSkuList = tempSkuList.concat(tempSkuList,this.value.skuStockList);
+            let stock=this.value.skuStockList[0].stock;
+            let lowStock=this.value.skuStockList[0].lowStock;
+            for(let i=0;i<tempSkuList.length;i++){
+              tempSkuList[i].stock=stock;
+              tempSkuList[i].lowStock=lowStock;
             }
+            this.value.skuStockList=[];
+            this.value.skuStockList=this.value.skuStockList.concat(this.value.skuStockList,tempSkuList);
           }
         });
       },
@@ -427,53 +458,59 @@
         let skuList = this.value.skuStockList;
         //只有一个属性时
         if (this.selectProductAttr.length === 1) {
-          let values = this.selectProductAttr[0].values;
-          for (let i = 0; i < values.length; i++) {
+          let attr = this.selectProductAttr[0];
+          for (let i = 0; i < attr.values.length; i++) {
             skuList.push({
-              sp1: values[i]
+              spData: JSON.stringify([{key:attr.name,value:attr.values[i]}])
             });
           }
         } else if (this.selectProductAttr.length === 2) {
-          let values0 = this.selectProductAttr[0].values;
-          let values1 = this.selectProductAttr[1].values;
-          for (let i = 0; i < values0.length; i++) {
-            if (values1.length === 0) {
+          let attr0 = this.selectProductAttr[0];
+          let attr1 = this.selectProductAttr[1];
+          for (let i = 0; i < attr0.values.length; i++) {
+            if (attr1.values.length === 0) {
               skuList.push({
-                sp1: values0[i]
+                spData: JSON.stringify([{key:attr0.name,value:attr0.values[i]}])
               });
               continue;
             }
-            for (let j = 0; j < values1.length; j++) {
+            for (let j = 0; j < attr1.values.length; j++) {
+              let spData = [];
+              spData.push({key:attr0.name,value:attr0.values[i]});
+              spData.push({key:attr1.name,value:attr1.values[j]});
               skuList.push({
-                sp1: values0[i],
-                sp2: values1[j]
+                spData: JSON.stringify(spData)
               });
             }
           }
         } else {
-          let values0 = this.selectProductAttr[0].values;
-          let values1 = this.selectProductAttr[1].values;
-          let values2 = this.selectProductAttr[2].values;
-          for (let i = 0; i < values0.length; i++) {
-            if (values1.length === 0) {
+          let attr0 = this.selectProductAttr[0];
+          let attr1 = this.selectProductAttr[1];
+          let attr2 = this.selectProductAttr[2];
+          for (let i = 0; i < attr0.values.length; i++) {
+            if (attr1.values.length === 0) {
               skuList.push({
-                sp1: values0[i]
+                spData: JSON.stringify([{key:attr0.name,value:attr0.values[i]}])
               });
               continue;
             }
-            for (let j = 0; j < values1.length; j++) {
-              if (values2.length === 0) {
+            for (let j = 0; j < attr1.values.length; j++) {
+              if (attr2.values.length === 0) {
+                let spData = [];
+                spData.push({key:attr0.name,value:attr0.values[i]});
+                spData.push({key:attr1.name,value:attr1.values[j]});
                 skuList.push({
-                  sp1: values0[i],
-                  sp2: values1[j]
+                  spData: JSON.stringify(spData)
                 });
                 continue;
               }
-              for (let k = 0; k < values2.length; k++) {
+              for (let k = 0; k < attr2.values.length; k++) {
+                let spData = [];
+                spData.push({key:attr0.name,value:attr0.values[i]});
+                spData.push({key:attr1.name,value:attr1.values[j]});
+                spData.push({key:attr2.name,value:attr2.values[k]});
                 skuList.push({
-                  sp1: values0[i],
-                  sp2: values1[j],
-                  sp3: values2[k]
+                  spData: JSON.stringify(spData)
                 });
               }
             }
@@ -497,7 +534,8 @@
       //获取商品相关属性的图片
       getProductSkuPic(name){
         for(let i=0;i<this.value.skuStockList.length;i++){
-          if(name===this.value.skuStockList[i].sp1){
+          let spData = JSON.parse(this.value.skuStockList[i].spData);
+          if(name===spData[0].value){
             return this.value.skuStockList[i].pic;
           }
         }
@@ -527,7 +565,8 @@
       mergeProductAttrPics() {
         for (let i = 0; i < this.selectProductAttrPics.length; i++) {
           for (let j = 0; j < this.value.skuStockList.length; j++) {
-            if (this.value.skuStockList[j].sp1 === this.selectProductAttrPics[i].name) {
+            let spData = JSON.parse(this.value.skuStockList[j].spData);
+            if (spData[0].value === this.selectProductAttrPics[i].name) {
               this.value.skuStockList[j].pic = this.selectProductAttrPics[i].pic;
             }
           }

+ 1 - 1
src/views/pms/product/components/ProductDetail.vue

@@ -77,7 +77,7 @@
     productAttributeCategoryId: null,
     //商品属性相关{productAttributeId: 0, value: ''}
     productAttributeValueList: [],
-    //商品sku库存信息{lowStock: 0, pic: '', price: 0, sale: 0, skuCode: '', sp1: '', sp2: '', sp3: '', stock: 0}
+    //商品sku库存信息{lowStock: 0, pic: '', price: 0, sale: 0, skuCode: '', spData: '', stock: 0}
     skuStockList: [],
     //商品相关专题{subjectId: 0}
     subjectProductRelationList: [],

+ 5 - 6
src/views/pms/product/index.vue

@@ -392,12 +392,11 @@
     },
     methods: {
       getProductSkuSp(row, index) {
-        if (index === 0) {
-          return row.sp1;
-        } else if (index === 1) {
-          return row.sp2;
-        } else {
-          return row.sp3;
+        let spData = JSON.parse(row.spData);
+        if(spData!=null&&index<spData.length){
+          return spData[index].value;
+        }else{
+          return null;
         }
       },
       getList() {