Browse Source

2025-04-10

master
qiezi 11 months ago
parent
commit
8c12286563
  1. 2
      src/api/quote/quoteDetailBomTree.js
  2. 54
      src/views/modules/quote/detail/primary/quoteDetailBom.vue

2
src/api/quote/quoteDetailBomTree.js

@ -9,3 +9,5 @@ export const queryQuoteDetailBomTreeLevel = (data) => createAPI(`/quote/detail/b
export const queryQuoteDetailBomTreeAlternative = (data) => createAPI("/quote/detail/bom/tree/alternative", "post", data); export const queryQuoteDetailBomTreeAlternative = (data) => createAPI("/quote/detail/bom/tree/alternative", "post", data);
export const changeQuoteDetailBomTree = (data) => createAPI(`quote/detail/bom/tree/change`, "post", data) export const changeQuoteDetailBomTree = (data) => createAPI(`quote/detail/bom/tree/change`, "post", data)
export const queryPlmPart = (data) => createAPI(`/quote/detail/bom/tree/part`,'post',data)

54
src/views/modules/quote/detail/primary/quoteDetailBom.vue

@ -5,7 +5,7 @@ import {
queryQuoteDetailBomTreeAlternative queryQuoteDetailBomTreeAlternative
} from "@/api/quote/quoteDetailBomTree"; } from "@/api/quote/quoteDetailBomTree";
import {queryQuoteDetailBom} from "@/api/quote/quoteDetailBom"; import {queryQuoteDetailBom} from "@/api/quote/quoteDetailBom";
import {changeQuoteDetailBomTree} from "../../../../../api/quote/quoteDetailBomTree";
import {changeQuoteDetailBomTree, queryPlmPart} from "../../../../../api/quote/quoteDetailBomTree";
export default { export default {
name: "quoteDetailBom", name: "quoteDetailBom",
@ -248,6 +248,10 @@ export default {
versionVisible: false, versionVisible: false,
versionList: [], versionList: [],
alternativeList: [], alternativeList: [],
part:{
status:'N',
ifsPartNo:'',
},
bomEngChgLevel: { bomEngChgLevel: {
partNo: '', partNo: '',
bomType: '', bomType: '',
@ -304,7 +308,7 @@ export default {
this.queryLoading = false; this.queryLoading = false;
}) })
}, },
handleCheckedVersion() {
async handleCheckedVersion(flag) {
let node = this.$refs.tree.getCurrentNode(); let node = this.$refs.tree.getCurrentNode();
if (node) { if (node) {
this.bomEngChgLevel = { this.bomEngChgLevel = {
@ -316,21 +320,46 @@ export default {
alternativeNo: node.alternativeNo, alternativeNo: node.alternativeNo,
} }
} }
this.handleQueryQuoteDetailBomTreeVersion();
//
// BomDetailPartNO,
await this.handleQueryPart();
this.versionVisible = true this.versionVisible = true
}, },
async handleQueryPart(){
let node = this.$refs.tree.getCurrentNode();
let params = {
partNo: node.partNo,
site: node.site,
}
queryPlmPart(params).then(({data})=>{
if (data && data.code === 0) {
this.part.ifsPartNo = data.partNo
if (this.part.ifsPartNo){
this.part.status = "Y"
}
this.handleQueryQuoteDetailBomTreeVersion();
}else {
this.$message.warning(data.msg);
}
}).catch((error)=>{
this.$message.error(error);
})
},
handleQueryQuoteDetailBomTreeVersion() { handleQueryQuoteDetailBomTreeVersion() {
let params = { let params = {
...this.bomEngChgLevel, ...this.bomEngChgLevel,
bomType:'', bomType:'',
engChgLevel: '', engChgLevel: '',
alternativeNo: '', alternativeNo: '',
partStatus:this.part.status,
plmPartNo:this.part.ifsPartNo,
} }
queryQuoteDetailBomTreeLevel(params).then(({data}) => { queryQuoteDetailBomTreeLevel(params).then(({data}) => {
if (data && data.code === 0) { if (data && data.code === 0) {
this.versionList = data.rows; this.versionList = data.rows;
this.handleQueryQuoteDetailBomAlternative(); this.handleQueryQuoteDetailBomAlternative();
} else { } else {
this.part.status = 'N'
this.$message.warning(data.msg); this.$message.warning(data.msg);
} }
}).catch((error) => { }).catch((error) => {
@ -338,12 +367,12 @@ export default {
}) })
}, },
levelRowStyle({row}) { levelRowStyle({row}) {
if (row.engChgLevel === this.bomEngChgLevel.engChgLevel && row.bomType === this.bomEngChgLevel.bomType) {
if (row.engChgLevel === this.bomEngChgLevel.engChgLevel && row.bomType === this.bomEngChgLevel.bomType && row.partNo === this.bomEngChgLevel.partNo) {
return {'background-color': '#E8F7F6'}; return {'background-color': '#E8F7F6'};
} }
}, },
alternativeRowStyle({row}) { alternativeRowStyle({row}) {
if (row.engChgLevel === this.bomEngChgLevel.engChgLevel && row.bomType === this.bomEngChgLevel.bomType && row.alternativeNo === this.bomEngChgLevel.alternativeNo) {
if (row.engChgLevel === this.bomEngChgLevel.engChgLevel && row.bomType === this.bomEngChgLevel.bomType && row.alternativeNo === this.bomEngChgLevel.alternativeNo && row.partNo === this.bomEngChgLevel.partNo) {
return {'background-color': '#E8F7F6'}; return {'background-color': '#E8F7F6'};
} }
}, },
@ -370,7 +399,6 @@ export default {
}) })
}, },
handleChangeVersion(row) { handleChangeVersion(row) {
console.log(row)
this.$confirm('确认切换BOM版本吗,切换后将重新覆盖工具信息,请确认!','提示',{ this.$confirm('确认切换BOM版本吗,切换后将重新覆盖工具信息,请确认!','提示',{
type: 'warning', type: 'warning',
confirmButtonText: '确定', confirmButtonText: '确定',
@ -395,7 +423,7 @@ export default {
} }
if (node) { if (node) {
params.id = node.id params.id = node.id
params.partNo = node.partNo
params.partNo = row.partNo
params.buNo = node.buNo params.buNo = node.buNo
params.site = node.site params.site = node.site
} }
@ -445,7 +473,7 @@ export default {
}, },
isAllBom(newVal, oldVal) { isAllBom(newVal, oldVal) {
this.handleQueryQuoteDetailBom(); this.handleQueryQuoteDetailBom();
},
}
} }
} }
</script> </script>
@ -454,7 +482,7 @@ export default {
<div> <div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<template v-if="isAuth('5011:detail:tab1:check')"> <template v-if="isAuth('5011:detail:tab1:check')">
<el-link style="margin-right: 20px;cursor: pointer" @click="handleCheckedVersion" v-if="quoteDetail.status === '草稿'">切换版本</el-link>
<el-link style="margin-right: 20px;cursor: pointer" @click="handleCheckedVersion()" v-if="quoteDetail.status === '草稿'">切换版本</el-link>
</template> </template>
<el-checkbox v-model="isAllBom">全级BOM结构</el-checkbox> <el-checkbox v-model="isAllBom">全级BOM结构</el-checkbox>
</div> </div>
@ -499,6 +527,14 @@ export default {
<el-dialog title="BOM版本切换" :visible.sync="versionVisible" append-to-body :close-on-click-modal="false" v-drag <el-dialog title="BOM版本切换" :visible.sync="versionVisible" append-to-body :close-on-click-modal="false" v-drag
width="900px"> width="900px">
<el-form label-position="top" :model="part">
<el-form-item label="料号类型">
<el-select v-model="part.status" style="width: 120px" @change="handleCheckedVersion(true)">
<el-option value="N" label="临时物料" :disabled="!!part.ifsPartNo"></el-option>
<el-option value="Y" label="正式物料"></el-option>
</el-select>
</el-form-item>
</el-form>
<el-table v-loading="changeLoading" :data="versionList" :row-style="levelRowStyle" @row-click="levelRowClick" ref="versionTable" <el-table v-loading="changeLoading" :data="versionList" :row-style="levelRowStyle" @row-click="levelRowClick" ref="versionTable"
style="width: 100%" border :height="240"> style="width: 100%" border :height="240">
<el-table-column label="物料编码" prop="partNo" header-align="center" align="center" show-overflow-tooltip <el-table-column label="物料编码" prop="partNo" header-align="center" align="center" show-overflow-tooltip

Loading…
Cancel
Save