Browse Source

2025-11-18

测试申请中材料总金额根据材料信息同步
master
fengyuan_yang 2 months ago
parent
commit
677dce3848
  1. 7
      src/api/test/testInformation.js
  2. 30
      src/views/modules/test/requestForTest.vue
  3. 30
      src/views/modules/test/testSoBom/testTable.vue

7
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)

30
src/views/modules/test/requestForTest.vue

@ -409,7 +409,7 @@
</el-table>
</el-tab-pane>
<el-tab-pane v-if="isAuth('107001:tab3:query')" label="材料信息" :disabled="!activeTabList.includes('product')" name="product">
<test-table v-if="clickTestRow" :disabled="detailFlag" :test-number="modalData.testNumber" height="32vh" ref="dialogSoBom" v-model:data-list="testSoBomList" :test-no="modalData.testNo"></test-table>
<test-table v-if="clickTestRow" :disabled="detailFlag" :test-number="modalData.testNumber" height="32vh" ref="dialogSoBom" v-model:data-list="testSoBomList" :test-no="modalData.testNo" @refresh-test-info="handleRefreshTestInfo"></test-table>
</el-tab-pane>
<el-tab-pane v-if="isAuth('107001:tab4:query')" label="制程信息" :disabled="!activeTabList.includes('process')" name="process">
<test-routing-table v-if="clickTestRow" :disabled="detailFlag" ref="dialogSoRouting" height="32vh" v-model:data-list="testSoRoutingList" :test-no="modalData.testNo"></test-routing-table>
@ -705,7 +705,7 @@
<el-tab-pane v-if="isAuth('107001:tab3:query')" label="材料信息" name="test_so_bom" style="padding: 5px">
<test-table ref="tabSoBom" :test-number="testCurrentRow.testNumber"
:disabled="testCurrentRow.testStatus === '已完成'" :test-no="testCurrentRow.testNo" height="45vh"
v-model:data-list="testSoBomList"></test-table>
v-model:data-list="testSoBomList" @refresh-test-info="handleRefreshTestInfo"></test-table>
</el-tab-pane>
<el-tab-pane v-if="isAuth('107001:tab4:query')" label="制程信息" name="test_so_routing" style="padding: 5px">
<test-routing-table ref="tabSoRouting" :test-no="testCurrentRow.testNo" v-model:data-list="testSoRoutingList"
@ -2866,6 +2866,7 @@ export default {
approvalUsername: row.approvalUsername,
soNumber: row.soNumber,
createBy: row.createBy,
materialTotalAmount: row.materialTotalAmount,
}
this.activeTabList = ['product', 'process', 'attribute', 'partAttribute', 'file']
// this.$refs.dialogSoBom.clearTable();
@ -3988,6 +3989,31 @@ export default {
clearModalData(field) {
this.modalData[field] = ''
},
//
handleRefreshTestInfo() {
// testNotestCurrentRowmodalData
const testNo = (this.testCurrentRow && this.testCurrentRow.testNo) || (this.modalData && this.modalData.testNo)
if (!testNo) {
return
}
// dataList
const currentRow = this.dataList.find(item => item.testNo === testNo)
if (currentRow) {
currentRow.materialTotalAmount = this.materialTotalAmount
}
// modalData
if (this.modalData && this.modalData.testNo === testNo) {
this.modalData.materialTotalAmount = this.materialTotalAmount
}
// testCurrentRowtestDetailData
if (this.testCurrentRow && this.testCurrentRow.testNo === testNo) {
this.testCurrentRow.materialTotalAmount = this.materialTotalAmount
this.testDetailData.materialTotalAmount = this.materialTotalAmount
}
},
partPageSizeChange(val) {
this.partPageSize = val
this.getProjectPartList();

30
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)
})
}
},

Loading…
Cancel
Save