优化商品多sku的选择页面逻辑

This commit is contained in:
季圣华
2022-11-05 16:47:31 +08:00
parent e7fb8ff04d
commit 90f1afc1f6

View File

@@ -133,31 +133,24 @@
</a-col> </a-col>
</a-row> </a-row>
<a-row class="form-row" :gutter="24"> <a-row class="form-row" :gutter="24">
<a-col :md="6" :sm="24" v-if="manySkuSelected>=1"> <a-col :md="12" :sm="24" v-if="manySkuSelected>=1">
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="skuOneTitle"> <a-form-item :labelCol="{xs: { span: 24 },sm: { span: 4 }}" :wrapperCol="{xs: { span: 24 },sm: { span: 20 }}" :label="skuOneTitle">
<a-tooltip title="选择之后请点击生成条码"> <a-select mode="multiple" v-decorator="[ 'skuOne' ]" showSearch optionFilterProp="children"
<a-select mode="multiple" v-decorator="[ 'skuOne' ]" showSearch optionFilterProp="children" placeholder="请选择可多选" > placeholder="请选择可多选" @select="onSkuChange" @deselect="onSkuOneDeSelect">
<a-select-option v-for="(item,index) in skuOneList" :key="index" :value="item.value"> <a-select-option v-for="(item,index) in skuOneList" :key="index" :value="item.value">
{{ item.name }} {{ item.name }}
</a-select-option> </a-select-option>
</a-select> </a-select>
</a-tooltip>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :md="6" :sm="24" v-if="manySkuSelected>=2"> <a-col :md="12" :sm="24" v-if="manySkuSelected>=2">
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="skuTwoTitle"> <a-form-item :labelCol="{xs: { span: 24 },sm: { span: 4 }}" :wrapperCol="{xs: { span: 24 },sm: { span: 20 }}" :label="skuTwoTitle">
<a-tooltip title="选择之后请点击生成条码"> <a-select mode="multiple" v-decorator="[ 'skuTwo' ]" showSearch optionFilterProp="children"
<a-select mode="multiple" v-decorator="[ 'skuTwo' ]" showSearch optionFilterProp="children" placeholder="请选择可多选" > placeholder="请选择可多选" @select="onSkuChange" @deselect="onSkuTwoDeSelect">
<a-select-option v-for="(item,index) in skuTwoList" :key="index" :value="item.value"> <a-select-option v-for="(item,index) in skuTwoList" :key="index" :value="item.value">
{{ item.name }} {{ item.name }}
</a-select-option> </a-select-option>
</a-select> </a-select>
</a-tooltip>
</a-form-item>
</a-col>
<a-col :md="6" :sm="24" v-if="manySkuSelected>=1">
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="生成条码">
<a-switch v-model="barCodeSwitch" @change="onBarCodeChange"></a-switch>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
@@ -277,7 +270,7 @@
import { FormTypes, getRefPromise, VALIDATE_NO_PASSED, validateFormAndTables } from '@/utils/JEditableTableUtil' import { FormTypes, getRefPromise, VALIDATE_NO_PASSED, validateFormAndTables } from '@/utils/JEditableTableUtil'
import { checkMaterial, checkMaterialBarCode, getMaterialAttributeNameList, import { checkMaterial, checkMaterialBarCode, getMaterialAttributeNameList,
getMaterialAttributeValueListById, getMaxBarCode, queryMaterialCategoryTreeList } from '@/api/api' getMaterialAttributeValueListById, getMaxBarCode, queryMaterialCategoryTreeList } from '@/api/api'
import { autoJumpNextInput, handleIntroJs } from '@/utils/util' import { removeByVal, autoJumpNextInput, handleIntroJs } from '@/utils/util'
import { getAction, httpAction } from '@/api/manage' import { getAction, httpAction } from '@/api/manage'
import JImageUpload from '@/components/jeecg/JImageUpload' import JImageUpload from '@/components/jeecg/JImageUpload'
import JDate from '@/components/jeecg/JDate' import JDate from '@/components/jeecg/JDate'
@@ -778,52 +771,66 @@
this.barCodeSwitch = false; this.barCodeSwitch = false;
this.meTable.dataSource = [] this.meTable.dataSource = []
}, },
onBarCodeChange(checked) { onSkuChange() {
let skuOneData = this.form.getFieldValue('skuOne')
let skuTwoData = this.form.getFieldValue('skuTwo')
this.autoSkuList(skuOneData, skuTwoData)
},
onSkuOneDeSelect(value) {
let skuOneData = this.form.getFieldValue('skuOne')
let skuTwoData = this.form.getFieldValue('skuTwo')
removeByVal(skuOneData, value)
this.autoSkuList(skuOneData, skuTwoData)
},
onSkuTwoDeSelect(value) {
let skuOneData = this.form.getFieldValue('skuOne')
let skuTwoData = this.form.getFieldValue('skuTwo')
removeByVal(skuTwoData, value)
this.autoSkuList(skuOneData, skuTwoData)
},
autoSkuList(skuOneData, skuTwoData) {
let unit = this.form.getFieldValue('unit') let unit = this.form.getFieldValue('unit')
if(unit) { if(unit) {
if(checked){ //计算多属性已经选择了几个
//计算多属性已经选择了几个 let count = this.getNumByField('skuOne') + this.getNumByField('skuTwo')
let count = this.getNumByField('skuOne') + this.getNumByField('skuTwo') let barCodeSku = []
let barCodeSku = [] if(count === 1) {
if(count === 1) { let skuArrOnly = []
let skuArr = [] if(this.getNumByField('skuOne')) {
if(this.getNumByField('skuOne')) { skuArrOnly = skuOneData
skuArr.push(this.form.getFieldValue('skuOne')) } else if(this.getNumByField('skuTwo')) {
} skuArrOnly = skuTwoData
let skuArrOne = skuArr[0] }
for (let i = 0; i < skuArrOne.length; i++) { for (let i = 0; i < skuArrOnly.length; i++) {
barCodeSku.push(skuArrOne[i]) barCodeSku.push(skuArrOnly[i])
} }
} else if(count === 2) { } else if(count === 2) {
let skuArr = [] let skuArr = []
if(this.getNumByField('skuOne')) { if(this.getNumByField('skuOne')) {
skuArr.push(this.form.getFieldValue('skuOne')) skuArr.push(skuOneData)
} }
if(this.getNumByField('skuTwo')) { if(this.getNumByField('skuTwo')) {
skuArr.push(this.form.getFieldValue('skuTwo')) skuArr.push(skuTwoData)
} }
let skuArrOne = skuArr[0] let skuArrOne = skuArr[0]
let skuArrTwo = skuArr[1] let skuArrTwo = skuArr[1]
for (let i = 0; i < skuArrOne.length; i++) { for (let i = 0; i < skuArrOne.length; i++) {
for (let j = 0; j < skuArrTwo.length; j++) { for (let j = 0; j < skuArrTwo.length; j++) {
barCodeSku.push(skuArrOne[i] + ',' + skuArrTwo[j]) barCodeSku.push(skuArrOne[i] + ',' + skuArrTwo[j])
}
} }
} }
let meTableData = []
getMaxBarCode({}).then((res)=>{
if(res && res.code===200) {
let maxBarCode = res.data.barCode-0
for (let i = 0; i < barCodeSku.length; i++) {
let currentBarCode = maxBarCode + i + 1
meTableData.push({barCode: currentBarCode, commodityUnit: unit, sku: barCodeSku[i]})
}
this.meTable.dataSource = meTableData
}
})
} else {
this.meTable.dataSource = []
} }
let meTableData = []
getMaxBarCode({}).then((res)=>{
if(res && res.code===200) {
let maxBarCode = res.data.barCode-0
for (let i = 0; i < barCodeSku.length; i++) {
let currentBarCode = maxBarCode + i + 1
meTableData.push({barCode: currentBarCode, commodityUnit: unit, sku: barCodeSku[i]})
}
this.meTable.dataSource = meTableData
}
})
} else { } else {
this.$message.warning('请填写单位(注意不要勾选多单位)'); this.$message.warning('请填写单位(注意不要勾选多单位)');
this.barCodeSwitch = false; this.barCodeSwitch = false;