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 = '';
+
+ // 将 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 = '';
+
+ // 将 form 表单添加到子表下面
+ $detail.append(formHtml);
+ }
});
- // 设置子表的初始状态为展开
- childTableStates[index] = true;
- // 动态生成 form 表单
- var 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: '操作',