Browse Source

[fix]销售管理

按照万材调整:修改销售估价业务添加前端页面:运输成本和服务成本由业务添加;修改销售估价工程添加页面:开发成本由工程添加,运输成本和服务成本设置为只读;采购添加前端页面:设置不含税单价和含税单价没有值默认为”empty“
dev
liuxiaoxu 3 weeks ago
parent
commit
3b78a0801c
  1. 118
      ruoyi-admin/src/main/resources/templates/sales/estimate/add.html
  2. 60
      ruoyi-admin/src/main/resources/templates/sales/estimate/engineeringAdd.html
  3. 37
      ruoyi-admin/src/main/resources/templates/sales/estimate/purchaseAdd.html

118
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('<table id="'+childTableId+'"></table>');
$('#'+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 '<a class="btn btn-danger btn-xs" href="javascript:void(0)" onclick="removeDetailMaterialRow(\'' + row.estimateDetailMaterialId + '\')"><i class="fa fa-remove"></i>删除</a>';
}
}
],
}).on('load-success.bs.table', function(data) {
// 当子表加载完成后,将子表数据保存到主表行中
parentRow.childTableData = data.rows;
});
// 设置子表的初始状态为展开
childTableStates[index] = true;
// 动态生成 form 表单
var formHtml = '<form class="form-inline" data-index="' + index + '">';
formHtml += '<h3>运输、服务</h3>';
formHtml += '<div class="form-group">';
formHtml += '<label for="noTaxShippingCosts' + index + '">不含税运输成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxShippingCosts' + index + '" name="noTaxShippingCosts' + index + '" placeholder="请输入运输成本">';
formHtml += '</div>';
formHtml += '<div class="form-group">';
formHtml += '<label for="noTaxServiceCosts' + index + '">不含税服务成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxServiceCosts' + index + '" name="noTaxServiceCosts' + index + '" placeholder="请输入服务成本">';
formHtml += '</div>';
formHtml += '</form>';
// 将 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("不能选择已添加过的相同物料");

60
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;
});
// 设置子表的初始状态为展开
childTableStates[index] = true;
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 class="form-inline" data-index="' + index + '">';
formHtml += '<h3>运输、服务、开发成本</h3>';
formHtml += '<div class="form-group">';
formHtml += '<label for="noTaxDevelopCosts' + index + '">不含税开发成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxDevelopCosts' + index + '" name="noTaxDevelopCosts' + index + '" placeholder="请输入开发成本">';
formHtml += '<input type="text" class="form-control" id="noTaxDevelopCosts' + index + '" name="noTaxDevelopCosts' + index + '" value="' + costs.noTaxDevelopCosts + '" >';
formHtml += '</div>';
formHtml += '<div class="form-group">';
formHtml += '<label for="noTaxShippingCosts' + index + '">不含税运输成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxShippingCosts' + index + '" name="noTaxShippingCosts' + index + '" placeholder="请输入运输成本">';
formHtml += '<input type="text" class="form-control" id="noTaxShippingCosts' + index + '" name="noTaxShippingCosts' + index + '" value="' + costs.noTaxShippingCosts + '" readonly>';
formHtml += '</div>';
formHtml += '<div class="form-group">';
formHtml += '<label for="noTaxServiceCosts' + index + '">不含税服务成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxServiceCosts' + index + '" name="noTaxServiceCosts' + index + '" placeholder="请输入服务成本">';
formHtml += '<input type="text" class="form-control" id="noTaxServiceCosts' + index + '" name="noTaxServiceCosts' + index + '" value="' + costs.noTaxServiceCosts + '" readonly>';
formHtml += '</div>';
formHtml += '</form>';
// 将 form 表单添加到子表下面
$detail.append(formHtml);
}
});
};
function queryParams(params) {

37
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: '操作',

Loading…
Cancel
Save