diff --git a/src/api/test/testInformation.js b/src/api/test/testInformation.js index 43b4286..d30d634 100644 --- a/src/api/test/testInformation.js +++ b/src/api/test/testInformation.js @@ -116,3 +116,10 @@ export const testInformationEditStatus = data => createAPI(`/plm/testInformation export const testInfoEditEntry = data => createAPI(`/plm/testInformation/testInfoEditEntry`,'post',data) export const getTestRemarkEntry = data => createAPI(`/plm/testInformation/getTestRemarkEntry`,'post',data) + +/** + * 更新测试主信息的材料总金额 + * @param data + * @returns {*} + */ +export const updateMaterialTotalAmount = data => createAPI(`/plm/testInformation/updateMaterialTotalAmount`,'post',data) \ No newline at end of file diff --git a/src/views/modules/test/requestForTest.vue b/src/views/modules/test/requestForTest.vue index cf9a911..6703f7e 100644 --- a/src/views/modules/test/requestForTest.vue +++ b/src/views/modules/test/requestForTest.vue @@ -409,7 +409,7 @@ - + @@ -705,7 +705,7 @@ + v-model:data-list="testSoBomList" @refresh-test-info="handleRefreshTestInfo"> item.testNo === testNo) + if (currentRow) { + currentRow.materialTotalAmount = this.materialTotalAmount + } + + // 如果在对话框模式,更新modalData + if (this.modalData && this.modalData.testNo === testNo) { + this.modalData.materialTotalAmount = this.materialTotalAmount + } + + // 如果在主页面模式,更新testCurrentRow和testDetailData + if (this.testCurrentRow && this.testCurrentRow.testNo === testNo) { + this.testCurrentRow.materialTotalAmount = this.materialTotalAmount + this.testDetailData.materialTotalAmount = this.materialTotalAmount + } + }, partPageSizeChange(val) { this.partPageSize = val this.getProjectPartList(); diff --git a/src/views/modules/test/testSoBom/testTable.vue b/src/views/modules/test/testSoBom/testTable.vue index fd4aad0..cda76ad 100644 --- a/src/views/modules/test/testSoBom/testTable.vue +++ b/src/views/modules/test/testSoBom/testTable.vue @@ -6,6 +6,7 @@ import { updateTestSoBom, removeBatchTestSoBom } from "../../../../api/test/testSoBom"; +import {updateMaterialTotalAmount} from "../../../../api/test/testInformation"; import {searchPart, searchPartList} from '@/api/part/partInformation.js'; import numberInput from "../../common/numberInput.vue"; import {searchAllUmInformationList} from "../../../../api/part/umInformation"; @@ -547,6 +548,10 @@ export default { if (data && data.code === 0 ){ this.$emit("change",data.rows) this.restSoBom(); + // 数据加载完成后,更新材料总金额 + this.$nextTick(() => { + this.updateTestMaterialTotalAmount() + }) }else { this.$message.error(data.msg) } @@ -667,6 +672,31 @@ export default { handleCurrentChange(val){ this.no = val this.initPartList() + }, + // 更新测试主信息的材料总金额 + updateTestMaterialTotalAmount(){ + if (!this.testNo) { + return + } + // 计算当前所有材料的总金额 + const totalAmount = this.dataList.reduce((sum, item) => { + return sum + (Number(item.totalCost) || 0) + }, 0) + + const params = { + testNo: this.testNo, + materialTotalAmount: totalAmount + } + + updateMaterialTotalAmount(params).then(({data}) => { + if (data && data.code === 0) { + // 更新成功,通知父组件刷新主信息 + console.log('材料总金额更新成功:', totalAmount) + this.$emit('refresh-test-info') + } + }).catch((error) => { + console.error('更新材料总金额失败', error) + }) } },