|
|
@@ -29,10 +29,7 @@ |
|
|
|
<el-checkbox |
|
|
|
v-for="eq in bomList" |
|
|
|
:key="eq.id" |
|
|
|
:label="`${eq.name} (${ |
|
|
|
selectedMBom[currentEquipment].length + |
|
|
|
selectedPBom[currentEquipment].length |
|
|
|
} / 2)`" |
|
|
|
:label="eq.name" |
|
|
|
@change="(e) => handleEquipmentChange(eq, e)" |
|
|
|
class="sl__body-item"></el-checkbox> |
|
|
|
</el-checkbox-group> |
|
|
@@ -43,20 +40,12 @@ |
|
|
|
<div class="sl__header" style="background: #f3f4fb; padding: 12px"> |
|
|
|
<span style="">物料BOM</span> |
|
|
|
</div> |
|
|
|
<el-checkbox-group |
|
|
|
v-model="selectedMBom[currentEquipment]" |
|
|
|
class="sl__body"> |
|
|
|
<el-checkbox |
|
|
|
v-for="mb in materialsBomList" |
|
|
|
:key="mb.id" |
|
|
|
:label="mb.name" |
|
|
|
:disabled="mb.disabled || false" |
|
|
|
@change=" |
|
|
|
(e) => |
|
|
|
handleMaterialBomChange(mb, materialsBomList.equipmentId, e) |
|
|
|
" |
|
|
|
class="sl__body-item"></el-checkbox> |
|
|
|
</el-checkbox-group> |
|
|
|
|
|
|
|
<BomSelection |
|
|
|
key="materialsBomList" |
|
|
|
:list="materialsBomList" |
|
|
|
:equipment-id="materialsBomList.equipmentId" |
|
|
|
@change="handleMaterialBomChange" /> |
|
|
|
</div> |
|
|
|
</el-col> |
|
|
|
<el-col :span="8" style="border-left: 1px solid #ccc"> |
|
|
@@ -64,19 +53,12 @@ |
|
|
|
<div class="sl__header" style="background: #f3f4fb; padding: 12px"> |
|
|
|
<span style="">参数BOM</span> |
|
|
|
</div> |
|
|
|
<el-checkbox-group |
|
|
|
v-model="selectedPBom[currentEquipment]" |
|
|
|
class="sl__body"> |
|
|
|
<el-checkbox |
|
|
|
v-for="vb in valuesBomList" |
|
|
|
:key="vb.id" |
|
|
|
:label="vb.name" |
|
|
|
:disabled="vb.disabled || false" |
|
|
|
@change=" |
|
|
|
(e) => handleValueBomChange(vb, valuesBomList.equipmentId, e) |
|
|
|
" |
|
|
|
class="sl__body-item"></el-checkbox> |
|
|
|
</el-checkbox-group> |
|
|
|
|
|
|
|
<BomSelection |
|
|
|
key="valuesBomList" |
|
|
|
:list="valuesBomList" |
|
|
|
:equipment-id="valuesBomList.equipmentId" |
|
|
|
@change="handleValueBomChange" /> |
|
|
|
</div> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
@@ -84,9 +66,10 @@ |
|
|
|
</template> |
|
|
|
; |
|
|
|
<script> |
|
|
|
import BomSelection from './BomSelection.vue'; |
|
|
|
export default { |
|
|
|
name: 'BomSelector', |
|
|
|
components: {}, |
|
|
|
components: { BomSelection }, |
|
|
|
props: { |
|
|
|
bomList: { |
|
|
|
type: Array, |
|
|
@@ -97,56 +80,17 @@ export default { |
|
|
|
return { |
|
|
|
searchText: '', |
|
|
|
selectedEquipments: [], |
|
|
|
selectedMBom: { default: [] }, |
|
|
|
selectedPBom: { default: [] }, |
|
|
|
selected: [], |
|
|
|
materialsBomList: [], |
|
|
|
valuesBomList: [], |
|
|
|
currentEquipment: 'default', |
|
|
|
}; |
|
|
|
}, |
|
|
|
watch: { |
|
|
|
selected: { |
|
|
|
handler(val) { |
|
|
|
console.log(val); |
|
|
|
}, |
|
|
|
deep: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
computed: {}, |
|
|
|
created() {}, |
|
|
|
mounted() { |
|
|
|
// 准备v-model |
|
|
|
this.bomList.forEach((item) => { |
|
|
|
this.$set(this.selectedMBom, item.id, []); |
|
|
|
this.$set(this.selectedPBom, item.id, []); |
|
|
|
}); |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
handleEquipmentChange(eq, selected) { |
|
|
|
this.currentEquipment = eq.id; |
|
|
|
this.materialsBomList = |
|
|
|
// [ |
|
|
|
// { |
|
|
|
// id: 1, |
|
|
|
// name: 'mb-1', |
|
|
|
// }, |
|
|
|
// { |
|
|
|
// id: 2, |
|
|
|
// name: 'mb-2', |
|
|
|
// }, |
|
|
|
// { |
|
|
|
// id: 3, |
|
|
|
// name: 'mb-3', |
|
|
|
// }, |
|
|
|
// ] || |
|
|
|
eq.materialsBom || []; |
|
|
|
this.valuesBomList = eq.valuesBom || []; |
|
|
|
// 重新确保equipmentId已经被加载上去了 |
|
|
|
this.materialsBomList.equipmentId = eq.id; |
|
|
|
this.valuesBomList.equipmentId = eq.id; |
|
|
|
this.materialsBomList = eq.materialsBom; |
|
|
|
this.valuesBomList = eq.valuesBom; |
|
|
|
|
|
|
|
console.log('eq', selected, eq, this.selectedEquipments); |
|
|
|
if (selected) { |
|
|
|
this.selected.push({ |
|
|
|
equipmentId: eq.id, |
|
|
@@ -158,28 +102,21 @@ export default { |
|
|
|
this.selected = this.selected.filter( |
|
|
|
(item) => item.equipmentId !== eq.id |
|
|
|
); |
|
|
|
this.selectedMBom[eq.id] = []; |
|
|
|
this.selectedPBom[eq.id] = []; |
|
|
|
} |
|
|
|
}, |
|
|
|
handleValueBomChange(vb, equipmentId, selected) { |
|
|
|
|
|
|
|
handleMaterialBomChange(equipmentId, bomId, selected) { |
|
|
|
const selectedItem = this.selected.find( |
|
|
|
(item) => item.equipmentId == equipmentId |
|
|
|
); |
|
|
|
selectedItem.equValueBomId = selected ? vb.id : null; |
|
|
|
this.valuesBomList.forEach((item) => { |
|
|
|
item.disabled = selected ? item.id !== vb.id : false; |
|
|
|
}); |
|
|
|
selectedItem.equMaterialBomId = selected ? bomId : null; |
|
|
|
}, |
|
|
|
handleMaterialBomChange(mb, equipmentId, selected) { |
|
|
|
debugger; |
|
|
|
|
|
|
|
handleValueBomChange(equipmentId, bomId, selected) { |
|
|
|
const selectedItem = this.selected.find( |
|
|
|
(item) => item.equipmentId == equipmentId |
|
|
|
); |
|
|
|
selectedItem.equMaterialBomId = selected ? mb.id : null; |
|
|
|
this.materialsBomList.forEach((item) => { |
|
|
|
item.disabled = selected ? item.id !== mb.id : false; |
|
|
|
}); |
|
|
|
selectedItem.equValueBomId = selected ? bomId : null; |
|
|
|
}, |
|
|
|
}, |
|
|
|
}; |
|
|
|