From 15eb26dd7ea289e837f34186d829b99fbc48ff93 Mon Sep 17 00:00:00 2001 From: qiezi <15576055375@163.com> Date: Mon, 6 Jan 2025 10:35:43 +0800 Subject: [PATCH] 20241220 --- src/api/quote/quoteGroupDetail.js | 12 + src/main.js | 1 + .../detail/primary/quoteDetailRouting.vue | 4 + .../modules/quote/detail/quoteDetail.vue | 122 ++- .../modules/quote/detail/quoteGroupDetail.vue | 803 ++++++++++++++++++ src/views/modules/quote/index.vue | 15 +- .../modules/quote/primary/quoteTable.vue | 17 +- 7 files changed, 954 insertions(+), 20 deletions(-) create mode 100644 src/api/quote/quoteGroupDetail.js create mode 100644 src/views/modules/quote/detail/quoteGroupDetail.vue diff --git a/src/api/quote/quoteGroupDetail.js b/src/api/quote/quoteGroupDetail.js new file mode 100644 index 0000000..982162f --- /dev/null +++ b/src/api/quote/quoteGroupDetail.js @@ -0,0 +1,12 @@ +import {createAPI} from "../../utils/httpRequest"; + + +export const queryQuoteGroupDetail = (data) => createAPI('/quote/group/detail','post',data) + +export const saveQuoteGroupDetail = (data) => createAPI('/quote/group/detail/save','post',data) + +export const removeQuoteGroupDetail = (data) => createAPI(`/quote/group/detail/remove/${data.id}`,'post',data) + +export const updateCurrentQuoteGroupDetailItemNo = (data) => createAPI('/quote/group/detail/current','post',data) + + diff --git a/src/main.js b/src/main.js index 561c8fc..88a22d9 100644 --- a/src/main.js +++ b/src/main.js @@ -22,6 +22,7 @@ import getLodop from '@/utils/LodopFuncs.js' import { debounce,throttle} from '@/utils/common.js' import 'element-ui/lib/theme-chalk/drawer.css'; import 'element-ui/lib/theme-chalk/descriptions.css'; +import 'element-ui/lib/theme-chalk/popover.css'; import Viewer from 'v-viewer' import 'viewerjs/dist/viewer.css' diff --git a/src/views/modules/quote/detail/primary/quoteDetailRouting.vue b/src/views/modules/quote/detail/primary/quoteDetailRouting.vue index 9f52214..79812e0 100644 --- a/src/views/modules/quote/detail/primary/quoteDetailRouting.vue +++ b/src/views/modules/quote/detail/primary/quoteDetailRouting.vue @@ -726,6 +726,10 @@ export default { }, created() { if (this.quoteDetail && this.quoteDetail.id){ + // routing 如果报价单是2020的版本 则不显示单个工艺的成本信息 + if (this.quoteDetail.costModel && this.quoteDetail.costModel === '2020'){ + this.columns = this.columns.filter(item => item.columnProp !== 'totalMachCost' && item.columnProp !== 'totalLaborCost' && item.columnProp !== 'totalManCost' && item.columnProp !== 'totalCost'); + } this.handleQueryQuoteDetailBomTree(); } }, diff --git a/src/views/modules/quote/detail/quoteDetail.vue b/src/views/modules/quote/detail/quoteDetail.vue index 991017d..a5b740d 100644 --- a/src/views/modules/quote/detail/quoteDetail.vue +++ b/src/views/modules/quote/detail/quoteDetail.vue @@ -34,7 +34,14 @@ export default { authFlag:{ type:Boolean, default:false - } + }, + quoteGroupDetail:{ + type:Object, + }, + saveAuth:{ + type:Boolean, + default:true + }, }, data(){ return{ @@ -84,6 +91,7 @@ export default { quoteCurrencyTotalCost2:0, moq:'Standard 250K', type:'Standard TP', + costModel:'UFIDA', remark:'', }, saveQuoteDetail:{ @@ -98,8 +106,27 @@ export default { partDesc: [{required: true, message: '请输入物料名称', trigger: ['blur','change']}], qty: [{required: true, message: '请输入数量', trigger: ['blur','change']}], type: [{required: true, message: '请选择TP类型', trigger: ['blur','change']}], + costModel: [{required: true, message: '请选择Cost Model', trigger: ['blur','change']}], }, columns: [ + { + userId: this.$store.state.user.name, + functionId: 5011, + serialNumber: '5011Table2CostModel', + tableId: '5011Table2', + tableName: '报价详情信息表', + columnProp: 'costModel', + headerAlign: 'center', + align: 'left', + columnLabel: 'Cost Model', + columnHidden: false, + columnImage: false, + columnSortable: false, + sortLv: 0, + status: true, + fixed: '', + columnWidth: 120 + }, { userId: this.$store.state.user.name, functionId: 5011, @@ -386,6 +413,11 @@ export default { qty:1, isDetail:false, } + if (this.quoteGroupDetail){ + this.saveQuoteDetail.partId = this.quoteGroupDetail.partId + this.saveQuoteDetail.partNo = this.quoteGroupDetail.partNo + this.saveQuoteDetail.partDesc = this.quoteGroupDetail.partDesc + } this.$nextTick(()=>{ this.saveQuoteDetail.projectNo = this.quote.projectNo }) @@ -454,6 +486,9 @@ export default { let params = { quoteId: this.quote.id, } + if (this.quoteGroupDetail){ + params.quoteGroupDetailId=this.quoteGroupDetail.id; + } this.queryLoading = true; queryQuoteDetail(params).then(({data})=>{ if (data && data.code === 0){ @@ -501,6 +536,9 @@ export default { status:'草稿', internalInquiryNo:this.quote.insideInquiryNo, } + if (this.quoteGroupDetail){ + params.quoteGroupDetailId=this.quoteGroupDetail.id; + } this.saveLoading = true; saveQuoteDetail(params).then(({data})=>{ if (data && data.code === 0){ @@ -573,7 +611,11 @@ export default { }).catch((error)=>{ this.$message.error(error); }) - } + }, + handleClose(){ + this.$emit('close'); + this.saveVisible = false + }, }, watch:{ quote(newVal,oldVal){ @@ -585,15 +627,49 @@ export default { this.dataList = []; } }, + "saveQuoteDetail.partNo"(newVal,oldVal){ + if (newVal){ + this.saveQuoteDetail.partNo = newVal.toUpperCase(); + } + }, + quoteGroupDetail(newVal,oldVal){ + if (newVal){ + this.quoteDetail.profitRate = this.quote.markup + this.quoteDetail.quoteProfitRate = this.quote.markup + this.handleQueryQuoteDetail(); + } + }, + 'quoteGroupDetail.currentQuoteDetailItemNo'(newVal,oldVal){ + // console.log(this.quoteGroupDetail) + // emit事件触发修改 + if (this.quoteGroupDetail && newVal){ + this.$emit('currentQuoteDetailItemNo',oldVal); + } + } + }, + created() { + this.quoteDetail.profitRate = this.quote.markup + this.quoteDetail.quoteProfitRate = this.quote.markup + this.handleQueryQuoteDetail(); } }