Browse Source

2024-12-06

master
qiezi 1 year ago
parent
commit
bc57f8457c
  1. 73
      src/views/modules/quote/detail/primary/quoteDetailBom.vue
  2. 34
      src/views/modules/quote/detail/primary/quoteDetailRouting.vue
  3. 77
      src/views/modules/quote/detail/primary/quoteDetailTool.vue
  4. 13
      src/views/modules/quote/detail/quoteDetail.vue

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

@ -350,40 +350,47 @@ export default {
}) })
}, },
handleChangeVersion(row) { handleChangeVersion(row) {
let node = this.$refs.tree.getCurrentNode();
let params = {
partNo: row.partNo,
bomType: row.bomType,
buNo: row.buNo,
site: row.site,
engChgLevel: row.engChgLevel,
alternativeNo: row.alternativeNo,
createBy: this.$store.state.user.name,
quoteId: this.quoteDetail.quoteId,
quoteDetailId: this.quoteDetail.id,
quoteNo: this.quoteDetail.quoteNo,
quoteDetailItemNo: this.quoteDetail.itemNo,
versionNo:this.quoteDetail.versionNo,
}
if (node) {
params.id = node.id
params.partNo = node.partNo
params.bomType = node.bomType
params.buNo = node.buNo
params.site = node.site
}
changeQuoteDetailBomTree(params).then(({data}) => {
if (data && data.code === 0) {
this.$message.success(data.msg);
this.versionVisible = false;
this.handleQueryQuoteDetailBomTree();
} else {
this.$message.warning(data.msg);
}
}).catch((error) => {
this.$message.error(error);
this.$confirm('确认切换BOM版本吗,切换后将重新覆盖工具信息,请确认!','提示',{
type: 'warning',
confirmButtonText: '确定',
cancelButtonText: '取消',
}) })
.then(()=>{
let node = this.$refs.tree.getCurrentNode();
let params = {
partNo: row.partNo,
bomType: row.bomType,
buNo: row.buNo,
site: row.site,
engChgLevel: row.engChgLevel,
alternativeNo: row.alternativeNo,
createBy: this.$store.state.user.name,
quoteId: this.quoteDetail.quoteId,
quoteDetailId: this.quoteDetail.id,
quoteNo: this.quoteDetail.quoteNo,
quoteDetailItemNo: this.quoteDetail.itemNo,
versionNo:this.quoteDetail.versionNo,
}
if (node) {
params.id = node.id
params.partNo = node.partNo
params.bomType = node.bomType
params.buNo = node.buNo
params.site = node.site
}
changeQuoteDetailBomTree(params).then(({data}) => {
if (data && data.code === 0) {
this.$message.success(data.msg);
this.versionVisible = false;
this.handleQueryQuoteDetailBomTree();
} else {
this.$message.warning(data.msg);
}
}).catch((error) => {
this.$message.error(error);
})
}).catch((error) => {})
}, },
handleJumpToBom(row){ handleJumpToBom(row){
if (this.$router.resolve('part-bomManagement').resolved.name === '404') { if (this.$router.resolve('part-bomManagement').resolved.name === '404') {

34
src/views/modules/quote/detail/primary/quoteDetailRouting.vue

@ -361,24 +361,6 @@ export default {
fixed: '', fixed: '',
columnWidth: 100, columnWidth: 100,
}, },
{
userId: this.$store.state.user.name,
functionId: 5011,
serialNumber: '5011Table5ResourceNum',
tableId: "5011Table5",
tableName: "报价工艺信息",
columnProp: 'resourceNum',
headerAlign: "center",
align: "right",
columnLabel: '机台数量',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100,
},
{ {
userId: this.$store.state.user.name, userId: this.$store.state.user.name,
functionId: 5011, functionId: 5011,
@ -634,6 +616,19 @@ export default {
} }
}, },
changeRouting(row){ changeRouting(row){
if (this.$refs.tree.getCurrentNode().parentId === 0 || this.$refs.tree.getCurrentNode().parentId === null || this.$refs.tree.getCurrentNode().parentId === undefined){
this.$confirm('确认切换Routing版本吗,切换后将重新覆盖工具信息,请确认!','提示',{
type: 'warning',
confirmButtonText: '确定',
cancelButtonText: '取消',
}).then(()=>{
this.handleChangeRouting(row);
})
}else {
this.handleChangeRouting(row);
}
},
handleChangeRouting(row){
let params = { let params = {
quoteId: this.quoteDetail.quoteId, quoteId: this.quoteDetail.quoteId,
quoteDetailId: this.quoteDetail.id, quoteDetailId: this.quoteDetail.id,
@ -660,7 +655,6 @@ export default {
}).catch((error)=>{ }).catch((error)=>{
this.$message.error(error) this.$message.error(error)
}) })
}, },
handleJumpToRouting(row){ handleJumpToRouting(row){
if (this.$router.resolve('part-routingManagement').resolved.name === '404') { if (this.$router.resolve('part-routingManagement').resolved.name === '404') {
@ -751,7 +745,7 @@ export default {
</el-aside> </el-aside>
<el-main style="padding: 0"> <el-main style="padding: 0">
<el-table :data="dataList" v-loading="queryLoading" border style="width: 100%" :height="420"> <el-table :data="dataList" v-loading="queryLoading" border style="width: 100%" :height="420">
<el-table-column label="操作" fixed="left" align="center" width="80px">
<el-table-column label="操作" fixed="left" align="center" width="80px" v-if="quoteDetail.status === '草稿'">
<template slot-scope="scope"> <template slot-scope="scope">
<a @click="handleUpdateQuoteDetailRouting(scope.row)">编辑</a> <a @click="handleUpdateQuoteDetailRouting(scope.row)">编辑</a>
</template> </template>

77
src/views/modules/quote/detail/primary/quoteDetailTool.vue

@ -69,6 +69,7 @@ export default {
let params = { let params = {
quoteDetailId: this.quoteDetail.id quoteDetailId: this.quoteDetail.id
} }
this.dataList = [];
this.queryLoading = true this.queryLoading = true
queryQuoteDetailTool(params).then(({data})=>{ queryQuoteDetailTool(params).then(({data})=>{
if (data && data.code === 0){ if (data && data.code === 0){
@ -84,7 +85,9 @@ export default {
}, },
handleSave(row){ handleSave(row){
if (row){ if (row){
this.saveTool = {...row};
this.saveTool = {
...row
};
}else { }else {
this.saveTool = {...this.tool}; this.saveTool = {...this.tool};
} }
@ -112,12 +115,15 @@ export default {
}).catch(() => {}); }).catch(() => {});
}, },
computedQuoteUnitCost(){ computedQuoteUnitCost(){
let quoteUnitCost = this.saveTool.unitCost * this.saveTool.toolQty;
if (isNaN(quoteUnitCost)){
if (this.saveTool.toolNo === '*'){
return;
}
// = / (1-Mark up%)/
if ((1-this.saveTool.expectedServiceLife/100) === 0){
this.saveTool.quoteUnitCost = 0; this.saveTool.quoteUnitCost = 0;
return
return;
} }
this.saveTool.quoteUnitCost = quoteUnitCost/this.saveTool.expectedServiceLife;
this.saveTool.quoteUnitCost = this.saveTool.unitCost / (1-this.saveTool.expectedServiceLife/100) / this.saveTool.toolQty;
}, },
handleQueryToolList(flag){ handleQueryToolList(flag){
let params = { let params = {
@ -141,7 +147,7 @@ export default {
}) })
}, },
handleToolDblClick(row){ handleToolDblClick(row){
this.saveTool.toolNo = row.toolNo;
// this.saveTool.toolNo = row.toolNo;
this.saveTool.toolDesc = row.toolDesc; this.saveTool.toolDesc = row.toolDesc;
this.saveTool.unitCost = row.unitCost; this.saveTool.unitCost = row.unitCost;
this.toolVisible = false this.toolVisible = false
@ -241,9 +247,13 @@ export default {
}, },
'toolVisible'(newVal,oldVal){ 'toolVisible'(newVal,oldVal){
if (newVal){ if (newVal){
let toolDesc = this.saveTool.toolDesc;
if (this.saveTool.toolNo === '*' && this.saveTool.toolNo === '#'){
toolDesc = '';
}
this.queryTool={ this.queryTool={
toolNo: this.saveTool.toolNo,
toolDesc: "",
toolNo: '',
toolDesc: toolDesc,
} }
this.handleQueryToolList(); this.handleQueryToolList();
} }
@ -256,57 +266,56 @@ export default {
<div> <div>
<el-button type="primary" @click="handleSave(null)" :disabled="quoteDetail.status === '下达'">新增</el-button> <el-button type="primary" @click="handleSave(null)" :disabled="quoteDetail.status === '下达'">新增</el-button>
<el-table :data="dataList" v-loading="queryLoading" :height="420" border style="width: 100%;margin-top: 5px" > <el-table :data="dataList" v-loading="queryLoading" :height="420" border style="width: 100%;margin-top: 5px" >
<el-table-column label="工具编码" align="left" header-align="center" width="120" prop="toolNo"></el-table-column>
<el-table-column label="工具描述" align="left" header-align="center" width="180" prop="toolDesc"></el-table-column> <el-table-column label="工具描述" align="left" header-align="center" width="180" prop="toolDesc"></el-table-column>
<el-table-column label="工具数量" align="right" header-align="center" width="100" prop="toolQty"></el-table-column>
<el-table-column label="单位成本" align="right" header-align="center" prop="unitCost"></el-table-column>
<el-table-column label="预计使用寿命" align="right" header-align="center" prop="expectedServiceLife"></el-table-column>
<el-table-column label="单位报价成本" align="right" header-align="center" prop="quoteUnitCost"></el-table-column>
<el-table-column label="模具费金额" align="right" header-align="center" prop="unitCost"></el-table-column>
<el-table-column label="Mark up%" align="right" header-align="center" prop="expectedServiceLife"></el-table-column>
<el-table-column label="分摊数量" align="right" header-align="center" width="120" prop="toolQty"></el-table-column>
<el-table-column label="单片分摊成本" align="right" header-align="center" prop="quoteUnitCost"></el-table-column>
<el-table-column label="备注" align="left" header-align="center" prop="remark"></el-table-column> <el-table-column label="备注" align="left" header-align="center" prop="remark"></el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-table-column label="操作" align="center" v-if="quoteDetail.status === '草稿'">
<template slot-scope="scope" >
<a @click="handleSave(scope.row)">编辑</a> <a @click="handleSave(scope.row)">编辑</a>
<a @click="handleRemove(scope.row)">删除</a>
<a v-if="scope.row.toolNo !== '*'" @click="handleRemove(scope.row)">删除</a>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-dialog title="工具信息" :visible.sync="saveVisible" v-drag width="600px" append-to-body :close-on-click-modal="false">
<el-dialog title="工具信息" :visible.sync="saveVisible" v-drag width="450px" append-to-body :close-on-click-modal="false">
<el-form :model="saveTool" label-position="top" :rules="toolRules" ref="saveToolForm"> <el-form :model="saveTool" label-position="top" :rules="toolRules" ref="saveToolForm">
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="8"> <el-col :span="8">
<el-form-item label="工具编码" prop="toolNo" :show-message="false">
<span slot="label">
<a @click="toolVisible = true">工具编码</a>
</span>
<el-input v-model="saveTool.toolNo" @blur="handleToolNoBlur"></el-input>
</el-form-item>
<!-- <el-form-item label="工具编码" prop="toolNo" :show-message="false">-->
<!-- <el-input v-model="saveTool.toolNo" @blur="handleToolNoBlur"></el-input>-->
<!-- </el-form-item>-->
</el-col> </el-col>
<el-col :span="16">
<el-col :span="24">
<el-form-item label="工具描述" prop="toolDesc" :show-message="false"> <el-form-item label="工具描述" prop="toolDesc" :show-message="false">
<el-input v-model="saveTool.toolDesc" :disabled="saveTool.toolNo !== '*'"></el-input>
<span slot="label" v-if="saveTool.toolNo !== '*'">
<a @click="toolVisible = true">工具描述</a>
</span>
<el-input v-model="saveTool.toolDesc" :disabled="saveTool.toolNo === '*'"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8">
<el-col :span="12">
<el-form-item label="分摊数量" prop="toolQty" :show-message="false"> <el-form-item label="分摊数量" prop="toolQty" :show-message="false">
<el-input-number style="width: 100%" :controls="false" :step="0" :precision="0" v-model="saveTool.toolQty"></el-input-number>
<el-input-number style="width: 100%" :controls="false" :disabled="saveTool.toolNo ==='*'" :step="0" :precision="0" v-model="saveTool.toolQty"></el-input-number>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8">
<el-form-item label="Mark up" prop="expectedServiceLife" :show-message="false">
<el-input-number style="width: 100%" :controls="false" :step="0" :precision="0" v-model="saveTool.expectedServiceLife"></el-input-number>
<el-col :span="12">
<el-form-item label="Mark up%" prop="expectedServiceLife" :show-message="false">
<el-input-number style="width: 100%" :controls="false" :disabled="saveTool.toolNo ==='*'" :step="0" :precision="0" v-model="saveTool.expectedServiceLife"></el-input-number>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="8">
<el-col :span="12">
<el-form-item label="模具费金额" prop="unitCost" :show-message="false"> <el-form-item label="模具费金额" prop="unitCost" :show-message="false">
<el-input-number style="width: 100%" :controls="false" :step="0" :precision="4" v-model="saveTool.unitCost"></el-input-number>
<el-input-number style="width: 100%" :controls="false" :disabled="saveTool.toolNo ==='*'" :step="0" :precision="4" v-model="saveTool.unitCost"></el-input-number>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8">
<el-col :span="12">
<el-form-item label="单片分摊成本" prop="quoteUnitCost" :show-message="false"> <el-form-item label="单片分摊成本" prop="quoteUnitCost" :show-message="false">
<el-input-number style="width: 100%" :controls="false" :disabled="saveTool.toolNo !==' '" :step="0" :precision="4" v-model="saveTool.quoteUnitCost"></el-input-number>
<el-input-number style="width: 100%" :controls="false" :disabled="saveTool.toolNo !=='*'" :step="0" :precision="4" v-model="saveTool.quoteUnitCost"></el-input-number>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">

13
src/views/modules/quote/detail/quoteDetail.vue

@ -489,7 +489,14 @@ export default {
this.handleSave(); this.handleSave();
} }
}else { }else {
let i = 1;
for (let key in obj) {
this.$message.error(obj[key][0].message);
if (i === 1){
return
}
i++;
}
} }
}) })
}, },
@ -547,6 +554,8 @@ export default {
handleClickTab(tab){ handleClickTab(tab){
if (this.activeName === 'routing'){ if (this.activeName === 'routing'){
this.$refs.routing.handleQueryQuoteDetailBomTree() this.$refs.routing.handleQueryQuoteDetailBomTree()
}else if (this.activeName === 'tool'){
this.$refs.tool.handleQueryQuoteDetailTool();
} }
}, },
againQuoteDetail(row){ againQuoteDetail(row){
@ -739,7 +748,7 @@ export default {
<quote-detail-routing ref="routing" v-if="saveVisible" @close="()=>{this.saveVisible = false}" v-model:quoteDetail="saveQuoteDetail"></quote-detail-routing> <quote-detail-routing ref="routing" v-if="saveVisible" @close="()=>{this.saveVisible = false}" v-model:quoteDetail="saveQuoteDetail"></quote-detail-routing>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="工具" name="tool"> <el-tab-pane label="工具" name="tool">
<quote-detail-tool v-if="saveVisible" v-model:quoteDetail="saveQuoteDetail"></quote-detail-tool>
<quote-detail-tool ref="tool" v-if="saveVisible" v-model:quoteDetail="saveQuoteDetail"></quote-detail-tool>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="其他成本" name="other"> <el-tab-pane label="其他成本" name="other">
<quote-detail-other v-if="saveVisible" v-model:quoteDetail="saveQuoteDetail"></quote-detail-other> <quote-detail-other v-if="saveVisible" v-model:quoteDetail="saveQuoteDetail"></quote-detail-other>

Loading…
Cancel
Save