商品SKU功能优化

This commit is contained in:
macro 2020-02-29 16:28:37 +08:00
parent 766947c751
commit 9dcf9e6142
3 changed files with 88 additions and 50 deletions

View File

@ -100,6 +100,11 @@
style="margin-top: 20px" style="margin-top: 20px"
@click="handleSyncProductSkuPrice">同步价格 @click="handleSyncProductSkuPrice">同步价格
</el-button> </el-button>
<el-button
type="primary"
style="margin-top: 20px"
@click="handleSyncProductSkuStock">同步库存
</el-button>
</el-form-item> </el-form-item>
<el-form-item label="属性图片:" v-if="hasAttrPic"> <el-form-item label="属性图片:" v-if="hasAttrPic">
<el-card shadow="never" class="cardBg"> <el-card shadow="never" class="cardBg">
@ -325,30 +330,33 @@
}, },
// //
getEditAttrValues(index) { getEditAttrValues(index) {
let values = []; let values = new Set();
if (index === 0) { if (index === 0) {
for (let i = 0; i < this.value.skuStockList.length; i++) { for (let i = 0; i < this.value.skuStockList.length; i++) {
let sku = this.value.skuStockList[i]; let sku = this.value.skuStockList[i];
if (sku.sp1 != null && values.indexOf(sku.sp1) === -1) { let spData = JSON.parse(sku.spData);
values.push(sku.sp1); if (spData!= null && spData.length>=1) {
values.add(spData[0].value);
} }
} }
} else if (index === 1) { } else if (index === 1) {
for (let i = 0; i < this.value.skuStockList.length; i++) { for (let i = 0; i < this.value.skuStockList.length; i++) {
let sku = this.value.skuStockList[i]; let sku = this.value.skuStockList[i];
if (sku.sp2 != null && values.indexOf(sku.sp2) === -1) { let spData = JSON.parse(sku.spData);
values.push(sku.sp2); if (spData!= null && spData.length>=2) {
values.add(spData[1].value);
} }
} }
} else { } else {
for (let i = 0; i < this.value.skuStockList.length; i++) { for (let i = 0; i < this.value.skuStockList.length; i++) {
let sku = this.value.skuStockList[i]; let sku = this.value.skuStockList[i];
if (sku.sp3 != null && values.indexOf(sku.sp3) === -1) { let spData = JSON.parse(sku.spData);
values.push(sku.sp3); if (spData!= null && spData.length>=3) {
values.add(spData[2].value);
} }
} }
} }
return values; return Array.from(values);
}, },
// //
getEditParamValue(id){ getEditParamValue(id){
@ -390,12 +398,11 @@
this.selectProductAttr[idx].options.splice(index, 1); this.selectProductAttr[idx].options.splice(index, 1);
}, },
getProductSkuSp(row, index) { getProductSkuSp(row, index) {
if (index === 0) { let spData = JSON.parse(row.spData);
return row.sp1; if(spData!=null&&index<spData.length){
} else if (index === 1) { return spData[index].value;
return row.sp2; }else{
} else { return null;
return row.sp3;
} }
}, },
handleRefreshProductSkuList() { handleRefreshProductSkuList() {
@ -415,10 +422,34 @@
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
if(this.value.skuStockList!==null&&this.value.skuStockList.length>0){ 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; let price=this.value.skuStockList[0].price;
for(let i=0;i<this.value.skuStockList.length;i++){ for(let i=0;i<tempSkuList.length;i++){
this.value.skuStockList[i].price=price; 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; let skuList = this.value.skuStockList;
// //
if (this.selectProductAttr.length === 1) { if (this.selectProductAttr.length === 1) {
let values = this.selectProductAttr[0].values; let attr = this.selectProductAttr[0];
for (let i = 0; i < values.length; i++) { for (let i = 0; i < attr.values.length; i++) {
skuList.push({ skuList.push({
sp1: values[i] spData: JSON.stringify([{key:attr.name,value:attr.values[i]}])
}); });
} }
} else if (this.selectProductAttr.length === 2) { } else if (this.selectProductAttr.length === 2) {
let values0 = this.selectProductAttr[0].values; let attr0 = this.selectProductAttr[0];
let values1 = this.selectProductAttr[1].values; let attr1 = this.selectProductAttr[1];
for (let i = 0; i < values0.length; i++) { for (let i = 0; i < attr0.values.length; i++) {
if (values1.length === 0) { if (attr1.values.length === 0) {
skuList.push({ skuList.push({
sp1: values0[i] spData: JSON.stringify([{key:attr0.name,value:attr0.values[i]}])
}); });
continue; 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({ skuList.push({
sp1: values0[i], spData: JSON.stringify(spData)
sp2: values1[j]
}); });
} }
} }
} else { } else {
let values0 = this.selectProductAttr[0].values; let attr0 = this.selectProductAttr[0];
let values1 = this.selectProductAttr[1].values; let attr1 = this.selectProductAttr[1];
let values2 = this.selectProductAttr[2].values; let attr2 = this.selectProductAttr[2];
for (let i = 0; i < values0.length; i++) { for (let i = 0; i < attr0.values.length; i++) {
if (values1.length === 0) { if (attr1.values.length === 0) {
skuList.push({ skuList.push({
sp1: values0[i] spData: JSON.stringify([{key:attr0.name,value:attr0.values[i]}])
}); });
continue; continue;
} }
for (let j = 0; j < values1.length; j++) { for (let j = 0; j < attr1.values.length; j++) {
if (values2.length === 0) { 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({ skuList.push({
sp1: values0[i], spData: JSON.stringify(spData)
sp2: values1[j]
}); });
continue; 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({ skuList.push({
sp1: values0[i], spData: JSON.stringify(spData)
sp2: values1[j],
sp3: values2[k]
}); });
} }
} }
@ -497,7 +534,8 @@
// //
getProductSkuPic(name){ getProductSkuPic(name){
for(let i=0;i<this.value.skuStockList.length;i++){ 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; return this.value.skuStockList[i].pic;
} }
} }
@ -527,7 +565,8 @@
mergeProductAttrPics() { mergeProductAttrPics() {
for (let i = 0; i < this.selectProductAttrPics.length; i++) { for (let i = 0; i < this.selectProductAttrPics.length; i++) {
for (let j = 0; j < this.value.skuStockList.length; j++) { 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; this.value.skuStockList[j].pic = this.selectProductAttrPics[i].pic;
} }
} }

View File

@ -77,7 +77,7 @@
productAttributeCategoryId: null, productAttributeCategoryId: null,
//{productAttributeId: 0, value: ''} //{productAttributeId: 0, value: ''}
productAttributeValueList: [], 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: [], skuStockList: [],
//{subjectId: 0} //{subjectId: 0}
subjectProductRelationList: [], subjectProductRelationList: [],

View File

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