diff --git a/ruoyi-admin/src/main/resources/templates/sales/estimate/add.html b/ruoyi-admin/src/main/resources/templates/sales/estimate/add.html index 25f0d47f..c6247979 100644 --- a/ruoyi-admin/src/main/resources/templates/sales/estimate/add.html +++ b/ruoyi-admin/src/main/resources/templates/sales/estimate/add.html @@ -129,7 +129,8 @@ return obj; }, {}); - + // 设置一个标志来跟踪任何错误 + var hasError = false; // 销售估价物料 var estimateMaterialTable = $('#bootstrap-table').bootstrapTable('getData'); @@ -173,9 +174,43 @@ estimateMaterialDataList[index].materialGearPosition = value; // 更新料号档位 }); + // 遍历主表中的每一项 + estimateMaterialTable.forEach(function(row, index) { + var noTaxShippingCosts = $('#noTaxShippingCosts' + index).val(); + var noTaxServiceCosts = $('#noTaxServiceCosts' + index).val(); + + if (!noTaxShippingCosts && noTaxShippingCosts !== '0') { + $.modal.alertWarning("运输成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的运输成本"); + hasError = true; + return; // 退出循环,阻止进一步处理 + } + if (!noTaxServiceCosts && noTaxServiceCosts !== '0') { + $.modal.alertWarning("服务成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的服务成本"); + hasError = true; + return; // 退出循环,阻止进一步处理 + } + + // 更新 estimateMaterialDataList 中对应的记录 + estimateMaterialDataList[index].noTaxShippingCosts = noTaxShippingCosts; + estimateMaterialDataList[index].noTaxServiceCosts = noTaxServiceCosts; + + // 获取子表数据 + if (row.childTableData) { + // 如果子表数据存在,则合并到 estimateMaterialDataList 中 + estimateMaterialDataList[index].salesEstimateDetailMaterialList = row.childTableData; + } + }); + + if (hasError) { + return; // 存在错误,阻止提交 + } + + + const combinedData = Object.assign({}, estimateData, { salesEstimateDetailList: estimateMaterialDataList, }); + // 合并表单数据和表格数据 console.log(combinedData) // 使用 JSON.stringify() 序列化数据 @@ -222,6 +257,10 @@ showToggle: false, showColumns: false, modalName: "销售估价详情", + detailView: true, + onExpandRow : function(index, row, $detail) { + initChildTable(index, row, $detail); + }, editFiled:"noTaxRmb", columns: [ { @@ -360,6 +399,81 @@ $.table.init(options); }); + + // 存储子表的状态 + var childTableStates = {}; + initChildTable = function(index, row, $detail) { + var parentRow = row; + var childTableId = 'child_table_'+index; + $detail.html('
'); + $('#'+childTableId).bootstrapTable({ + columns: [ + { + title: '销售估价详情ID', + field: 'estimateDetailId', + visible: false + }, + { + title: '销售估价详情物料ID', + field: 'estimateDetailMaterialId', + visible: false + }, + { + title: '物料名称', + field: 'materialName', + }, + { + title: '物料类型', + field: 'materialType', + formatter: function(value, row, index) { + return $.table.selectCategoryLabel(materialTypeDatas, value); + } + }, + { + title: '物料单位', + field: 'materialUnit', + }, + { + title: '物料描述', + field: 'materialDescribe', + }, + { + title: '用量', + field: 'useNum', + }, + { + title: '操作', + align: 'center', + formatter: function (value, row, index) { + return '删除'; + } + } + ], + }).on('load-success.bs.table', function(data) { + // 当子表加载完成后,将子表数据保存到主表行中 + parentRow.childTableData = data.rows; + }); + // 设置子表的初始状态为展开 + childTableStates[index] = true; + // 动态生成 form 表单 + var formHtml = '
'; + formHtml += '

运输、服务

'; + formHtml += '
'; + formHtml += ''; + formHtml += ''; + formHtml += '
'; + formHtml += '
'; + formHtml += ''; + formHtml += ''; + formHtml += '
'; + formHtml += '
'; + + // 将 form 表单添加到子表下面 + $detail.append(formHtml); + }; + + + //逻辑新增一行物料数据 function estimateDoSubmit(index, layero, uniqueId) { console.log(uniqueId); @@ -401,7 +515,7 @@ materialUnit: rowData.unit, materialProcessMethod: rowData.processMethod, materialDeptType: rowData.warehouseDept, - materialNum: 0 + materialNum: "" }); } else { $.modal.alertError("不能选择已添加过的相同物料"); diff --git a/ruoyi-admin/src/main/resources/templates/sales/estimate/engineeringAdd.html b/ruoyi-admin/src/main/resources/templates/sales/estimate/engineeringAdd.html index 054824c5..42a67518 100644 --- a/ruoyi-admin/src/main/resources/templates/sales/estimate/engineeringAdd.html +++ b/ruoyi-admin/src/main/resources/templates/sales/estimate/engineeringAdd.html @@ -330,8 +330,6 @@ $.table.init(options); }); - // 存储子表的状态 - var childTableStates = {}; initChildTable = function(index, row, $detail) { var parentRow = row; var childTableId = 'child_table_'+index; @@ -345,14 +343,29 @@ estimateDetailId:parentRow.estimateDetailId }, columns: [ - { + { + title: '销售估价详情物料ID', + field: 'estimateDetailMaterialId', + visible: false + }, + { title: '销售估价详情ID', field: 'estimateDetailId', visible: false }, { - title: '销售估价详情物料ID', - field: 'estimateDetailMaterialId', + title: '不含税开发成本', + field: 'noTaxDevelopCosts', + visible: false + }, + { + title: '不含税运输成本', + field: 'noTaxShippingCosts', + visible: false + }, + { + title: '不含税服务成本', + field: 'noTaxServiceCosts', visible: false }, { @@ -386,31 +399,52 @@ } } ], - }).on('load-success.bs.table', function(data) { - // 当子表加载完成后,将子表数据保存到主表行中 - parentRow.childTableData = data.rows; + + onLoadSuccess: function(data) { + // 初始化成本数据为一个空对象 + var costs = {}; + + // 如果 data 是一个对象,将其转换为单元素数组 + if (typeof data === 'object' && !Array.isArray(data)) { + data = [data]; + } + + // 检查数据是否有效 + if (data.length > 0 && data[0].rows && data[0].rows.length > 0) { + // 使用第一条数据 + var firstRow = data[0].rows[0]; + costs.noTaxDevelopCosts = firstRow.noTaxDevelopCosts || ''; + costs.noTaxShippingCosts = firstRow.noTaxShippingCosts || ''; + costs.noTaxServiceCosts = firstRow.noTaxServiceCosts || ''; + } else { + // 如果没有数据,设置所有成本字段为空字符串 + costs.noTaxDevelopCosts = ''; + costs.noTaxShippingCosts = ''; + costs.noTaxServiceCosts = ''; + } + + // 动态生成 form 表单 + var formHtml = '
'; + formHtml += '

运输、服务、开发成本

'; + formHtml += '
'; + formHtml += ''; + formHtml += ''; + formHtml += '
'; + formHtml += '
'; + formHtml += ''; + formHtml += ''; + formHtml += '
'; + formHtml += '
'; + formHtml += ''; + formHtml += ''; + formHtml += '
'; + formHtml += '
'; + + // 将 form 表单添加到子表下面 + $detail.append(formHtml); + } }); - // 设置子表的初始状态为展开 - childTableStates[index] = true; - // 动态生成 form 表单 - var formHtml = '
'; - formHtml += '

运输、服务、开发成本

'; - formHtml += '
'; - formHtml += ''; - formHtml += ''; - formHtml += '
'; - formHtml += '
'; - formHtml += ''; - formHtml += ''; - formHtml += '
'; - formHtml += '
'; - formHtml += ''; - formHtml += ''; - formHtml += '
'; - formHtml += '
'; - - // 将 form 表单添加到子表下面 - $detail.append(formHtml); + }; function queryParams(params) { diff --git a/ruoyi-admin/src/main/resources/templates/sales/estimate/purchaseAdd.html b/ruoyi-admin/src/main/resources/templates/sales/estimate/purchaseAdd.html index d5a9021f..3c7ad3de 100644 --- a/ruoyi-admin/src/main/resources/templates/sales/estimate/purchaseAdd.html +++ b/ruoyi-admin/src/main/resources/templates/sales/estimate/purchaseAdd.html @@ -407,6 +407,24 @@ return '不含税采购单价不能为空'; } } + }, + formatter: function (value, row) { + // 检查 row 是否存在 + if (!row) { + return ""; + } + + // 检查 storageLocation 是否存在 + if (row.storageLocation === undefined || row.storageLocation === null) { + return ""; + } + + // 根据 storageLocation 的值决定返回值 + if (row.storageLocation) { + return row.storageLocation; + } else { + return value; + } } }, { @@ -420,7 +438,26 @@ return '含税采购单价不能为空'; } } + }, + formatter: function (value, row) { + // 检查 row 是否存在 + if (!row) { + return ""; + } + + // 检查 storageLocation 是否存在 + if (row.storageLocation === undefined || row.storageLocation === null) { + return ""; + } + + // 根据 storageLocation 的值决定返回值 + if (row.storageLocation) { + return row.storageLocation; + } else { + return value; + } } + }, { title: '操作',