Browse Source

商家端商品编辑规格变动业务功能修改完善

master
dy-hu 1 year ago
parent
commit
33b0bef631
  1. 182
      src/views/commodity/commoditySystem/addCommodity.vue

182
src/views/commodity/commoditySystem/addCommodity.vue

@ -472,7 +472,9 @@ export default {
creditLimit: [{ required: true, message: this.$t('product.credit_limit_hint'), trigger: 'blur' }]
},
integralList: [],
integralProportion: '' //
integralProportion: '', //
beforeModifySkuIds: '', // sku
beforeModifySkuValueIndexs: [] // skuvalueCode index
}
},
watch: {
@ -505,10 +507,10 @@ export default {
methods: {
handleChangeCascader() {
console.log(this.form.classifyId)
// console.log(this.form.classifyId)
},
handleChangePlatformCascader() {
console.log(this.form.classifyBusinessId)
// console.log(this.form.classifyBusinessId)
},
async getBrandList() {
const { data } = await getBrandList()
@ -799,7 +801,51 @@ export default {
this.initLangInfo(itemData)
this.initSkuLangInfo(itemData)
this.form = { ...itemData, attrStyle: itemData.skus[0].style }
this.handleBeforeSku()
this.beforeModifySkuValueIndexs = this.handleValueCode()
console.log("detail--->skus--->", this.form.skus)
},
handleBeforeSku() {
let beforeModifySkuIdArr = []
if(this.form.names) {
for (let name of this.form.names) {
for (let skuValue of name.values){
if (skuValue.langInfoMap) {
let skuId = ''
if (skuValue.langInfoMap["zh"]) {
skuId = skuValue.langInfoMap["zh"].skuUniId.split('-')[0]
} else if (skuValue.langInfoMap["en"]) {
skuId = skuValue.langInfoMap["en"].skuUniId.split('-')[0]
}
beforeModifySkuIdArr.push(skuId)
}
}
}
}
if (beforeModifySkuIdArr.length > 0) {
this.beforeModifySkuIds = beforeModifySkuIdArr.join(',')
}
},
// skuvalueCode
handleValueCode() {
let skuValueIndexs = []
if (this.form.names && this.form.names.length === 1) {
// valueCode
skuValueIndexs = this.form.names[0].values.map(item => {
const valueCodeArr = item.valueCode.split('_')
const valueCodeIndex = valueCodeArr[valueCodeArr.length - 1]
return valueCodeIndex
})
}
return skuValueIndexs;
},
initSkuLangInfo(itemData){
if(itemData && itemData.names){
itemData.names.forEach(nameItemData => {
@ -869,9 +915,10 @@ export default {
})
return data
},
skuFormat() {
skuFormat(isMultiChange) {
const skuListArray = []
const result = {
skuId: undefined,
productId: '',
isDelete: 0,
skuAttrCodeDTOList: [
@ -898,6 +945,7 @@ export default {
for (var i = 0; i < arr[depth].length; i++) {
map.arr.push(arr[depth][i])
const { code, valueCode, attrId } = arr[depth][i]
result.skuId = arr[depth][i].skuId
result.skuAttrCodeDTOList[depth] = {
code,
valueCode,
@ -915,12 +963,39 @@ export default {
const values = []
//
this.form.names.map((skuItem, index) => {
let difValueCodeIndexs = []
if (this.form.names.length === 1) {
//
const currentValueCodeIndexs = this.handleValueCode()
// valueCode
difValueCodeIndexs = this.beforeModifySkuValueIndexs.filter(x => !currentValueCodeIndexs.includes(x));
//
difValueCodeIndexs.sort((a, b) => a - b)
}
const attrList = []
skuItem.code = skuItem.code || 'attr_code_' + index
const { code } = skuItem
skuItem.values && skuItem.values.map((attrItem, index1) => {
attrItem.valueCode = attrItem.valueCode || code + '_value_' + index1
const skuId = attrItem.skuId
if (!attrItem.valueCode) {
// .
if (difValueCodeIndexs.length > 0) {
// valueCodevalueCode
attrItem.valueCode = code + '_value_' + difValueCodeIndexs[0]
difValueCodeIndexs.splice(0, 1)
} else {
attrItem.valueCode = code + '_value_' + index1
}
}
//attrItem.valueCode = attrItem.valueCode || code + '_value_' + index1
let skuId = undefined
if (attrItem.langInfoMap){
if (attrItem.langInfoMap["zh"]) {
skuId = attrItem.langInfoMap["zh"].skuUniId.split('-')[0]
} else if (attrItem.langInfoMap["en"]) {
skuId = attrItem.langInfoMap["en"].skuUniId.split('-')[0]
}
}
// const skuId = attrItem.skuId
const attrId = attrItem.attrId
if (attrItem.skuValue_EN || attrItem.skuValue_ZH) {
attrList.push({
@ -940,15 +1015,23 @@ export default {
if (values.length) {
doExchange(values, 0)
}
this.form.skus = skuListArray.map(sku1 => {
const findSku = this.form.skus.find(sku2 => {
if (isMultiChange) {
// sku
return false
}
if (!sku2.skuAttrCodeDTOList) {
return false
}
if (sku2.skuAttrCodeDTOList.length != sku1.skuAttrCodeDTOList.length) {
return false
}
if (!sku1.skuId) {
return false
}
const valueCodeList = sku2.skuAttrCodeDTOList.map(item => item.valueCode)
var result = sku1.skuAttrCodeDTOList.every(item => valueCodeList.indexOf(item.valueCode) !== -1)
@ -960,29 +1043,106 @@ export default {
return sku1
}
})
},
showEditSkuAttr(){
this.newSkuAttrList = JSON.parse(JSON.stringify(this.form.names))
this.editSkuAttrDialogVisible = true;
},
editSkuAttrCancel(){
console.log('cancel')
this.editSkuAttrDialogVisible = false;
},
editSkuAttrSure(){
console.log('save')
const currentSkuIds = this.getCurrentSkuIds();
if (this.isEqual(this.beforeModifySkuIds, currentSkuIds)){
//
this.editSkuAttrDialogVisible = false;
this.form.names = JSON.parse(JSON.stringify(this.newSkuAttrList))
console.log(this.form.names)
this.skuFormat()
} else {
//
if (this.form.skus && this.form.skus.length > 0) {
for (const sku of this.form.skus) {
if (sku.stockNumber > 0) {
this.$message.error('之前规格有库存,不允许修改')
return
}
}
}
this.form.names = JSON.parse(JSON.stringify(this.newSkuAttrList))
if (this.form.names.length === 1) {
//
const currentSkuArr = currentSkuIds.split(',')
const beforeModifySkuArr = this.beforeModifySkuIds.split(',')
const differenceArr = beforeModifySkuArr.filter(x => !currentSkuArr.includes(x));
this.form.deletes = differenceArr
this.skuFormat()
} else {
//
this.form.deletes = this.beforeModifySkuIds.split(',')
this.skuFormat(true)
}
this.editSkuAttrDialogVisible = false;
}
},
//
isEqual(a, b) {
let c = a.split(','), d = b.split(',');
if (c.length != d.length) {
return false;
}
for (let i = 0; i < c.length; i++) {
let isMatch = false;
for (let j = 0; j < d.length; j++) {
if (c[i] == d[j]) {
isMatch = true;
break;
}
}
if (!isMatch) {
return false;
}
}
return true;
},
getCurrentSkuIds() {
let currentChangeSkuIds = ''
const currentChangeSkuIdArr = []
if (this.newSkuAttrList) {
for (const skuArrItem of this.newSkuAttrList) {
for (const skuValue of skuArrItem.values){
if (skuValue.langInfoMap) {
let skuId = ''
if (skuValue.langInfoMap["zh"]) {
skuId = skuValue.langInfoMap["zh"].skuUniId.split('-')[0]
} else if (skuValue.langInfoMap["en"]) {
skuId = skuValue.langInfoMap["en"].skuUniId.split('-')[0]
}
currentChangeSkuIdArr.push(skuId)
} else {
currentChangeSkuIdArr.push(0)
}
}
}
}
if (currentChangeSkuIdArr.length > 0) {
currentChangeSkuIds = currentChangeSkuIdArr.join(',')
}
return currentChangeSkuIds
},
showOneSetting() {
this.$refs.oneSetting.showOnSetDialog = true
},
onOnSetting(settingInfo){
console.log('onOnSetting--->', settingInfo)
onOnSetting(settingInfo) {
this.form.skus.forEach(sku => {
sku.price = settingInfo.price
sku.originalPrice = settingInfo.originalPrice

Loading…
Cancel
Save