Browse Source

2024-12-06

master
qiezi 1 year ago
parent
commit
5166e68b35
  1. 2
      src/api/quote/quoteDetailRouting.js
  2. 40
      src/views/modules/quote/detail/primary/quoteDetailBom.vue
  3. 131
      src/views/modules/quote/detail/primary/quoteDetailRouting.vue
  4. 20
      src/views/modules/quote/detail/primary/quoteDetailTool.vue

2
src/api/quote/quoteDetailRouting.js

@ -8,3 +8,5 @@ export const queryQuoteDetailRoutingVersion = (data) => createAPI(`/quote/detail
export const queryQuoteDetailRoutingAlternative = (data) => createAPI(`/quote/detail/routing/alternative`,'post',data)
export const changeQuoteDetailRoutingChange = (data) => createAPI(`/quote/detail/routing/change`,'post',data)
export const updateQuoteDetailRouting = (data) => createAPI(`/quote/detail/routing/update`,'post',data)

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

@ -286,7 +286,6 @@ export default {
})
},
handleCheckedVersion() {
this.handleQueryQuoteDetailBomTreeVersion();
let node = this.$refs.tree.getCurrentNode();
if (node) {
this.bomEngChgLevel = {
@ -298,26 +297,19 @@ export default {
alternativeNo: node.alternativeNo,
}
}
this.handleQueryQuoteDetailBomTreeVersion();
this.versionVisible = true
},
handleQueryQuoteDetailBomTreeVersion() {
let node = this.$refs.tree.getCurrentNode();
let params = {
site: this.quoteDetail.site,
partNo: this.quoteDetail.partNo,
buNo: this.quoteDetail.buNo,
}
if (node) {
params = {
site: node.site,
partNo: node.partNo,
bomType: node.bomType,
buNo: node.buNo,
}
...this.bomEngChgLevel,
engChgLevel: '',
alternativeNo: '',
}
queryQuoteDetailBomTreeLevel(params).then(({data}) => {
if (data && data.code === 0) {
this.versionList = data.rows;
this.handleQueryQuoteDetailBomAlternative();
} else {
this.$message.warning(data.msg);
}
@ -331,7 +323,6 @@ export default {
}
},
alternativeRowStyle({row}) {
let node = this.$refs.tree.getCurrentNode();
if (row.engChgLevel === this.bomEngChgLevel.engChgLevel && row.alternativeNo === this.bomEngChgLevel.alternativeNo) {
return {'background-color': '#E8F7F6'};
}
@ -342,6 +333,9 @@ export default {
this.bomEngChgLevel.site = row.site;
this.bomEngChgLevel.engChgLevel = row.engChgLevel;
this.bomEngChgLevel.bomType = row.bomType;
this.handleQueryQuoteDetailBomAlternative();
},
handleQueryQuoteDetailBomAlternative() {
let params = {
...this.bomEngChgLevel
}
@ -422,24 +416,6 @@ export default {
isAllBom(newVal, oldVal) {
this.handleQueryQuoteDetailBom();
},
'bomEngChgLevel.engChgLevel'(newVal, oldVal) {
if (newVal) {
let node = this.$refs.tree.getCurrentNode();
let row = {
partNo: this.quoteDetail.partNo,
buNo: this.quoteDetail.buNo,
site: this.quoteDetail.site,
engChgLevel: newVal,
}
if (node) {
row.partNo = node.partNo;
row.bomType = node.bomType;
row.buNo = node.buNo;
row.site = node.site;
}
this.levelRowClick(row)
}
}
}
}
</script>

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

@ -5,6 +5,7 @@ import {
queryQuoteDetailRoutingAlternative, changeQuoteDetailRoutingChange,
queryQuoteDetailRoutingVersion
} from "@/api/quote/quoteDetailRouting";
import {updateQuoteDetailRouting} from "../../../../../api/quote/quoteDetailRouting";
export default {
name: "quoteDetailRouting",
@ -498,7 +499,25 @@ export default {
alternativeList:[],
routing:{
}
},
quoteDetailRouting:{
},
quoteDetailRoutingVisible:false,
rules:{
workCenterCost:[
{ required: true, message: '请输入加工中心成本', trigger: ['blur','change'] },
],
setupLaborClassCost:[
{ required: true, message: '请输入人工成本-调机', trigger: ['blur','change'] },
],
laborClassCost:[
{ required: true, message: '请输入人工成本-生产', trigger: ['blur','change'] },
],
},
}
},
methods:{
@ -550,26 +569,18 @@ export default {
},
handleChangeVersion(){
let node = this.$refs.tree.getCurrentNode();
let row = {
routingRevision:null,
alternativeNo: '',
routingType: null,
}
if (this.treeData.length === 0){
this.$message.warning("未维护BOM结构")
return;
}
if (this.dataList.length > 0){
row = this.dataList[0];
}
if (node){
this.routing = {
partNo: node.partNo,
buNo: node.buNo,
site: node.site,
routingType: row.routingType,
routingRevision: row.routingRevision,
alternativeNo: row.alternativeNo,
routingType: node.bomType,
routingRevision: node.engChgLevel,
alternativeNo: node.alternativeNo,
}
}
this.handleQueryVersionList();
@ -588,9 +599,7 @@ export default {
queryQuoteDetailRoutingVersion(params).then(({data})=>{
if (data && data.code === 0){
this.versionList = data.rows;
if (this.versionList.length > 0){
this.handleQueryAlternativeList();
}
this.handleQueryAlternativeList();
}else {
this.$message.warning(data.msg);
}
@ -619,7 +628,7 @@ export default {
},
alternativeRowStyle({row}){
if (this.dataList.length > 0){
if (this.dataList[0].alternativeNo === row.alternativeNo && this.dataList[0].routingRevision === row.routingRevision && this.dataList[0].routingType === row.routingType){
if (this.routing.alternativeNo === row.alternativeNo && this.routing.routingRevision === row.routingRevision && this.routing.routingType === row.routingType){
return { 'background-color': '#E8F7F6' };
}
}
@ -670,6 +679,39 @@ export default {
}
this.$router.push(params)
}
},
handleUpdateQuoteDetailRouting(row){
this.quoteDetailRouting = {...row}
this.quoteDetailRoutingVisible = true;
},
saveQuoteDetailRouting(){
this.$refs.quoteDetailRoutingForm.validate((valid,obj) => {
if (valid){
let params = {
...this.quoteDetailRouting,
}
updateQuoteDetailRouting(params).then(({data})=>{
if (data && data.code === 0){
this.$message.success(data.msg);
this.handleQueryDetailRouting();
this.quoteDetailRoutingVisible = false;
}else {
this.$message.warning(data.msg);
}
}).catch((error)=>{
this.$message.error(error);
})
}else {
let i = 1;
for (let item in obj){
this.$message.error(obj[item][0].message);
if (i === 1){
return
}
i++;
}
}
})
}
},
created() {
@ -709,6 +751,11 @@ export default {
</el-aside>
<el-main style="padding: 0">
<el-table :data="dataList" v-loading="queryLoading" border style="width: 100%" :height="420">
<el-table-column label="操作" fixed="left" align="center" width="80px">
<template slot-scope="scope">
<a @click="handleUpdateQuoteDetailRouting(scope.row)">编辑</a>
</template>
</el-table-column>
<el-table-column
v-for="(item,index) in columns" :key="index"
:sortable="item.columnSortable"
@ -754,6 +801,58 @@ export default {
</el-table-column>
</el-table>
</el-dialog>
<el-dialog title="工序金额信息" top="23vh" v-drag :visible.sync="quoteDetailRoutingVisible" width="500px" append-to-body :close-on-click-modal="false">
<el-form label-position="top" ref="quoteDetailRoutingForm" :model="quoteDetailRouting" :rules="rules" label-width="100px">
<el-row :gutter="10">
<el-col :span="12">
<el-form-item label="物料编码">
<el-input v-model="quoteDetailRouting.partNo" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="物料描述">
<el-input v-model="quoteDetailRouting.partDesc" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="工序编码">
<el-input v-model="quoteDetailRouting.operationNo" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="工序名称">
<el-input v-model="quoteDetailRouting.operationName" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label=" "></el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单位机器成本" prop="workCenterCost" :show-message="false">
<el-input-number :min="0" :controls="false" :step="0" v-model="quoteDetailRouting.workCenterCost"></el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="12">
<el-form-item label="单位人工成本-调机" prop="setupLaborClassCost" :show-message="false">
<el-input-number :min="0" :controls="false" :step="0" v-model="quoteDetailRouting.setupLaborClassCost"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单位人工成本-生产" prop="laborClassCost" :show-message="false">
<el-input-number :min="0" :controls="false" :step="0" v-model="quoteDetailRouting.laborClassCost"></el-input-number>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-footer style="text-align: center;line-height: 1.5;height: 30px">
<el-button type="primary" @click="saveQuoteDetailRouting"> </el-button>
<el-button type="primary" @click="quoteDetailRoutingVisible = false"> </el-button>
</el-footer>
</el-dialog>
</div>
</template>

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

@ -45,16 +45,16 @@ export default {
{ required: true, message: '请输入工具描述', trigger: ['blur','change'] }
],
toolQty: [
{ required: true, message: '请输入工具数量', trigger: ['blur','change'] }
{ required: true, message: '请输入分摊数量', trigger: ['blur','change'] }
],
unitCost: [
{ required: true, message: '请输入单位成本', trigger: ['blur','change'] }
{ required: true, message: '请输入模具费金额', trigger: ['blur','change'] }
],
expectedServiceLife: [
{ required: true, message: '请输入预计使用寿命', trigger: ['blur','change'] }
{ required: true, message: '请输入Mark up%', trigger: ['blur','change'] }
],
quoteUnitCost: [
{ required: true, message: '请输入单位报价成本', trigger: ['blur','change'] }
{ required: true, message: '请输入单片分摊成本', trigger: ['blur','change'] }
]
},
toolList:[],
@ -284,29 +284,29 @@ export default {
</el-col>
<el-col :span="16">
<el-form-item label="工具描述" prop="toolDesc" :show-message="false">
<el-input v-model="saveTool.toolDesc" disabled></el-input>
<el-input v-model="saveTool.toolDesc" :disabled="saveTool.toolNo !== '*'"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<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-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="预计使用寿命" prop="expectedServiceLife" :show-message="false">
<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-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="8">
<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-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="单位报价成本" prop="quoteUnitCost" :show-message="false">
<el-input-number style="width: 100%" :controls="false" disabled :step="0" :precision="4" v-model="saveTool.quoteUnitCost"></el-input-number>
<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-form-item>
</el-col>
<el-col :span="24">

Loading…
Cancel
Save