...
|
...
|
@@ -45,10 +45,15 @@ |
|
|
<span class="create-group-sub-title">(颜色名称只能填写中文,最多5个汉字。款型编码和条码只能填写英文和数字,不区分大小写)</span>
|
|
|
</div>
|
|
|
<Form-item label="颜色">
|
|
|
<CheckboxColor :select-colors="table.defaultSelectedColors" @on-change="selectColor"></CheckboxColor>
|
|
|
<CheckboxColor v-model="colors"
|
|
|
:select-colors="table.defaultSelectedColors" @on-add="addColor" @on-remove="removeColor">
|
|
|
</CheckboxColor>
|
|
|
</Form-item>
|
|
|
<Form-item label="尺寸">
|
|
|
<CheckboxSize :sort-id="this.product.smallSortId" :select-sizes="table.defaultSelectedSizes" @on-change="selectSize"></CheckboxSize>
|
|
|
<CheckboxSize v-model="sizes"
|
|
|
:sort-id="this.product.smallSortId" :select-sizes="table.defaultSelectedSizes"
|
|
|
@on-add="addSize" @on-remove="removeSize">
|
|
|
</CheckboxSize>
|
|
|
</Form-item>
|
|
|
<Form-item>
|
|
|
<TableGoodSize ref="tableGood" v-model="table.data"
|
...
|
...
|
@@ -148,7 +153,9 @@ export default { |
|
|
phrase: [
|
|
|
{ required: true, message: '商品卖点不能为空', trigger: 'blur' }
|
|
|
],
|
|
|
}
|
|
|
},
|
|
|
colors: [],
|
|
|
sizes: []
|
|
|
};
|
|
|
},
|
|
|
created() {
|
...
|
...
|
@@ -166,74 +173,75 @@ export default { |
|
|
});
|
|
|
},
|
|
|
methods: {
|
|
|
selectColor(selectColors) {
|
|
|
this.table.defaultSelectedColors = selectColors;
|
|
|
this.refreshGoods();
|
|
|
},
|
|
|
selectSize(selcetSize) {
|
|
|
this.table.defaultSelectedSizes = selcetSize;
|
|
|
this.refreshGoods();
|
|
|
removeColor(color) {
|
|
|
this.$refs.tableGood.syncData();
|
|
|
|
|
|
let index = this.table.data.findIndex((c) => c.colorId === color.id);
|
|
|
let colorIndex = this.table.defaultSelectedColors.findIndex((c) => c.id === color.id);
|
|
|
|
|
|
if (index !== -1 && colorIndex !== -1) {
|
|
|
this.table.defaultSelectedColors.splice(colorIndex, 1);
|
|
|
this.table.data.splice(index, 1);
|
|
|
this.product.goods.splice(index, 1);
|
|
|
}
|
|
|
},
|
|
|
refreshGoods() {
|
|
|
addColor(color) {
|
|
|
this.$refs.tableGood.syncData();
|
|
|
|
|
|
let rmCidIndex = _.map(this.table.data, (goodColor, index) => {
|
|
|
if (_.some(this.table.defaultSelectedColors, color => color.id === goodColor.colorId)) {
|
|
|
return -1;
|
|
|
}
|
|
|
return index;
|
|
|
}).filter(inx => inx >= 0);
|
|
|
|
|
|
_.remove(this.table.data, (good, index) => _.some(rmCidIndex, inx => inx === index));
|
|
|
_.remove(this.product.goods, (good, index) => _.some(rmCidIndex, inx => inx === index));
|
|
|
_.each(this.table.defaultSelectedColors, color => {
|
|
|
let colorGood = _.find(this.table.data, good => good.colorId === color.id);
|
|
|
|
|
|
if (colorGood) {
|
|
|
let rmSidIndexs = _.map(colorGood.sizeId, (goodSize, index) => {
|
|
|
if (_.some(this.table.defaultSelectedSizes, size => size.id === goodSize.id)) {
|
|
|
return -1;
|
|
|
}
|
|
|
return index;
|
|
|
}).filter(inx => inx >= 0);
|
|
|
this.table.defaultSelectedColors.push(color);
|
|
|
|
|
|
let newGood = {
|
|
|
goodsName: {
|
|
|
name: color.colorName,
|
|
|
isDefault: false,
|
|
|
},
|
|
|
factoryGoodsName: '',
|
|
|
goodsColorImage: {
|
|
|
value: '',
|
|
|
showValidate: false,
|
|
|
validate: false
|
|
|
},
|
|
|
factoryCode: '',
|
|
|
colorId: color.id,
|
|
|
sizeId: [],
|
|
|
sizeCode: [],
|
|
|
operator: []
|
|
|
};
|
|
|
|
|
|
_.each(this.table.defaultSelectedSizes, size => this.addSizeItem(newGood, size));
|
|
|
this.table.data.push(newGood);
|
|
|
this.product.goods.push(service.handleGoods({
|
|
|
goodsName: color.colorName,
|
|
|
productSkn: this.product.productSkn,
|
|
|
factoryGoodsName: ''
|
|
|
}));
|
|
|
},
|
|
|
removeSize(size) {
|
|
|
this.$refs.tableGood.syncData();
|
|
|
|
|
|
_.remove(colorGood.sizeId, (sid, index) => _.some(rmSidIndexs, inx => inx === index));
|
|
|
_.remove(colorGood.sizeCode, (code, index) => _.some(rmSidIndexs, inx => inx === index));
|
|
|
_.remove(colorGood.operator, (op, index) => _.some(rmSidIndexs, inx => inx === index));
|
|
|
let index = this.table.defaultSelectedSizes.findIndex((s) => s.id === size[0].id);
|
|
|
let tableIndex = (this.table.data[0] ? this.table.data[0].sizeId : [])
|
|
|
.findIndex((s) => s.id === size[0].id);
|
|
|
|
|
|
let addSizeList = this.table.defaultSelectedSizes
|
|
|
.filter(size => !_.some(colorGood.sizeId, goodSize => size.id === goodSize.id));
|
|
|
if (index !== -1 && tableIndex !== -1) {
|
|
|
this.table.defaultSelectedSizes.splice(index, 1);
|
|
|
this.table.data.forEach((c) => {
|
|
|
c.sizeId.splice(tableIndex, 1);
|
|
|
c.operator.splice(tableIndex, 1);
|
|
|
c.sizeCode.splice(tableIndex, 1);
|
|
|
});
|
|
|
}
|
|
|
},
|
|
|
addSize(size) {
|
|
|
this.$refs.tableGood.syncData();
|
|
|
|
|
|
_.each(addSizeList, size => this.addSizeItem(colorGood, size));
|
|
|
} else {
|
|
|
let newGood = {
|
|
|
goodsName: {
|
|
|
name: color.colorName,
|
|
|
isDefault: false,
|
|
|
},
|
|
|
factoryGoodsName: '',
|
|
|
goodsColorImage: {
|
|
|
value: '',
|
|
|
showValidate: false,
|
|
|
validate: false
|
|
|
},
|
|
|
factoryCode: '',
|
|
|
colorId: color.id,
|
|
|
sizeId: [],
|
|
|
sizeCode: [],
|
|
|
operator: []
|
|
|
};
|
|
|
this.table.defaultSelectedSizes.push(size[0]);
|
|
|
|
|
|
_.each(this.table.defaultSelectedSizes, size => this.addSizeItem(newGood, size));
|
|
|
this.table.data.push(newGood);
|
|
|
this.product.goods.push(service.handleGoods({
|
|
|
goodsName: color.colorName,
|
|
|
productSkn: this.product.productSkn,
|
|
|
factoryGoodsName: ''
|
|
|
}));
|
|
|
}
|
|
|
this.table.data.forEach((c) => {
|
|
|
this.addSizeItem(c, size[0]);
|
|
|
});
|
|
|
},
|
|
|
|
|
|
addSizeItem(colorGood, size) {
|
|
|
colorGood.sizeId.push({
|
|
|
id: size.id,
|
...
|
...
|
@@ -245,7 +253,7 @@ export default { |
|
|
validate: false
|
|
|
});
|
|
|
colorGood.operator.push({
|
|
|
value: true
|
|
|
value: false
|
|
|
});
|
|
|
},
|
|
|
onChangeFactoryCode(index, code) {
|
...
|
...
|
@@ -409,7 +417,10 @@ export default { |
|
|
let errors = [];
|
|
|
|
|
|
this.table.data.forEach((color) => {
|
|
|
if (!color.goodsColorImage.value) {
|
|
|
// 如果有一个尺码生效,则必须上传封面
|
|
|
let enableCoverOperator = _.some(color.operator, o => o.value);
|
|
|
|
|
|
if (enableCoverOperator && !color.goodsColorImage.value) {
|
|
|
color.goodsColorImage.showValidate = true;
|
|
|
color.goodsColorImage.validate = true;
|
|
|
errors.push({ message: '没有上传封面' });
|
...
|
...
|
|