Browse Source

[fix] 工程管理

客户报价修改页面新增:最新报价(RMB)、最新报价(美元)、和最新报价历史按钮;新增添加物料为批量添加;查找最新的报价数据的js方法;新增循环新增的时候加上异步处理的方式,获取最新报价RMB和USD的值,并进行赋值
修改客户报价详情页面:去掉table列表中可编辑选项。去掉详情页面的添加物料按钮;增最新报价(RMB)、最新报价(美元)、和最新报价历史按钮;
修改客户报价驳回调整页面:去掉table列表中可编辑选项。去掉详情页面的添加物料按钮;新增最新报价(RMB)、最新报价(美元)、和最新报价历史按钮;
修改客户报价业务经理审批页面:去掉table列表中可编辑选项。去掉详情页面的添加物料按钮;新增最新报价(RMB)、最新报价(美元)、和最新报价历史按钮;
修改客户报价业务主管审批页面:去掉table列表中可编辑选项。去掉详情页面的添加物料按钮;新增最新报价(RMB)、最新报价(美元)、和最新报价历史按钮;
修改客户报价总经理总助审批页面:去掉table列表中可编辑选项。去掉详情页面的添加物料按钮;新增最新报价(RMB)、最新报价(美元)、和最新报价历史按钮;
修改 客户报价历史页面:去掉table上多余的组件
dev
liuxiaoxu 2 months ago
parent
commit
e94d3ede9a
  1. 92
      ruoyi-admin/src/main/resources/templates/system/customerQuote/detail.html
  2. 190
      ruoyi-admin/src/main/resources/templates/system/customerQuote/edit.html
  3. 3
      ruoyi-admin/src/main/resources/templates/system/customerQuote/recentQuotationHistory.html
  4. 171
      ruoyi-admin/src/main/resources/templates/system/customerQuote/taskModifyApply.html
  5. 102
      ruoyi-admin/src/main/resources/templates/system/customerQuote/taskYwjlVerify.html
  6. 101
      ruoyi-admin/src/main/resources/templates/system/customerQuote/taskYwzgVerify.html
  7. 102
      ruoyi-admin/src/main/resources/templates/system/customerQuote/taskZozjVerify.html

92
ruoyi-admin/src/main/resources/templates/system/customerQuote/detail.html

@ -196,92 +196,28 @@
} }
}, },
{ title: '对外售价',field: 'materialSole', { title: '对外售价',field: 'materialSole',
editable: { },
type: 'number', { title: '最新报价(RMB)',field: 'recentQuotationRMB',align: 'center',},
mode: 'inline', { title: '最新报价(美元)',field: 'recentQuotationUSD',align: 'center',},
title: '对外售价', { title: '最新报价历史',align: 'center',
validate: function (value) {
if (!value) { formatter: function (value, row, index) {
return '对外售价不能为空'; var actions = [];
} actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="recentQuotationHistory(\'' + row.materialCode + '\')"><i class="fa fa-edit"></i>最新报价历史</a> ');
if (isNaN(value)) { return actions.join('');
return '对外售价必须为数字';
}
}
} }
}, },
{title: '国内税率',field: 'countTax',align: 'center',}, {title: '国内税率',field: 'countTax',align: 'center',},
{ title: '美元汇率',field: 'usdTax', align: 'center',}, { title: '美元汇率',field: 'usdTax', align: 'center',},
{field: 'materialNum',align: 'center',title: '物料的数量', {field: 'materialNum',align: 'center',title: '物料的数量',
editable:{
type : 'text',
mode: 'inline',
title : '物料的数量',
validate : function(value) {
if (!value) {
return '用量不能为空';
}
if (isNaN(value)) {
return '用量必须为数字';
}
}
},
}, },
{ title: '物料的不含税单价(RMB)', { title: '物料的不含税单价(RMB)',
field: 'materialNoRmb', field: 'materialNoRmb',
align: 'center', align: 'center',
editable:{
type: 'text', // 使用'text'类型,因为我们需自定义验证小数
mode: 'inline',
enabled: function() {
return ($("#commonCurrency_add").val() === '1'); // 当货币类型为2时启用
},
title: '物料的不含税单价(RMB)',
validate: function(value) {
// 验证是否为空
if (!value) {
return '金额不能为空';
}
// 尝试转换为浮点数并检查是否成功
var num = parseFloat(value);
if (isNaN(num)) {
return '请输入有效的数字';
}
// 检查小数点后是否有超过两位的数字
var decimalPart = num.toString().split('.')[1]; // 获取小数部分
if (decimalPart && decimalPart.length > 2) {
return '请输入精确到小数点后两位的数字';
}
}
}
}, },
{title: '物料的不含税单价(美元)', {title: '物料的不含税单价(美元)',
field: 'materialNoUsd', field: 'materialNoUsd',
align: 'center', align: 'center',
editable: {
type: 'text', // 使用'text'类型,因为我们需自定义验证小数
mode: 'inline',
enabled: function() {
return ($("#commonCurrency_add").val() === '2'); // 当货币类型为2时启用
},
title: '物料的不含税单价(美元)',
validate: function(value) {
// 验证是否为空
if (!value) {
return '金额不能为空';
}
// 尝试转换为浮点数并检查是否成功
var num = parseFloat(value);
if (isNaN(num)) {
return '请输入有效的数字';
}
// 检查小数点后是否有超过两位的数字
var decimalPart = num.toString().split('.')[1]; // 获取小数部分
if (decimalPart && decimalPart.length > 2) {
return '请输入精确到小数点后两位的数字';
}
}
}
}, },
{title: '物料的含税单价(RMB)',field: 'materialRmb',align: 'center'}, {title: '物料的含税单价(RMB)',field: 'materialRmb',align: 'center'},
{title: '物料的含税总价(RMB)',field: 'materialNoRmbSum',align: 'center'}, {title: '物料的含税总价(RMB)',field: 'materialNoRmbSum',align: 'center'},
@ -373,6 +309,16 @@
$("#noUsdSum_detail").val(noUsdSum); $("#noUsdSum_detail").val(noUsdSum);
$("#usdSum_detail").val(usdSum); $("#usdSum_detail").val(usdSum);
} }
function recentQuotationHistory(materialCode){
var customerCode = $("#customerCode").val();
var queryParams = new URLSearchParams();
queryParams.append("materialCode", materialCode);
queryParams.append("customerCode", encodeURIComponent(customerCode));
var url = prefix + '/recentQuotationHistory?'+queryParams.toString();
$.modal.open("最新报价历史", url);
}
</script> </script>
</body> </body>
</html> </html>

190
ruoyi-admin/src/main/resources/templates/system/customerQuote/edit.html

@ -251,6 +251,16 @@
} }
} }
}, },
{ title: '最新报价(RMB)',field: 'recentQuotationRMB',align: 'center',},
{ title: '最新报价(美元)',field: 'recentQuotationUSD',align: 'center',},
{ title: '最新报价历史',align: 'center',
formatter: function (value, row, index) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="recentQuotationHistory(\'' + row.materialCode + '\')"><i class="fa fa-edit"></i>最新报价历史</a> ');
return actions.join('');
}
},
{title: '国内税率',field: 'countTax',align: 'center',}, {title: '国内税率',field: 'countTax',align: 'center',},
{ title: '美元汇率',field: 'usdTax', align: 'center',}, { title: '美元汇率',field: 'usdTax', align: 'center',},
{field: 'materialNum',align: 'center',title: '物料的数量', {field: 'materialNum',align: 'center',title: '物料的数量',
@ -404,46 +414,139 @@
} }
} }
} }
function doSubmit(index, layero,uniqueId){ function doSubmit(index, layero, uniqueId) {
console.log(uniqueId); console.log(uniqueId);
var iframeWin = window[layero.find('iframe')[0]['name']]; var iframeWin = window[layero.find('iframe')[0]['name']];
var rowData = iframeWin.$('#bootstrap-select-table').bootstrapTable('getSelections')[0]; var selectedRows = iframeWin.$('#bootstrap-select-table').bootstrapTable('getSelections');
console.log("rowData: "+rowData);
let enterpriseSum = $("#enterpriseSum").val(); if (selectedRows.length === 0) {
$("#enterpriseSum").val((enterpriseSum==''?0:enterpriseSum) + 1); $.modal.alertError("请选择至少一条物料信息");
var timestamp = new Date().getTime(); return;
var totalNum = $("#bootstrap-table-Quote-child-edit1").bootstrapTable('getData').length; }
$("#bootstrap-table-Quote-child-edit1").bootstrapTable('insertRow', {
index: totalNum, var existingData = $("#bootstrap-sub-table-quoteChild").bootstrapTable('getData');
row: { var promises = [];
id:'',
quoteId:$("#supplierCode").val(), // 存储要插入的新行
materialId:rowData.id, var newRows = [];
materialCode: rowData.materialNo,
materialName: rowData.materialName, // 遍历选中的每一行物料信息
materialType: rowData.materialType, for (var i = 0; i < selectedRows.length; i++) {
describe: rowData.describe, var rowData = selectedRows[i];
brand: rowData.brand,
photoUrl: rowData.photoUrl, // 检查是否已经存在相同的物料
unit: rowData.unit, var isDuplicate = false;
processMethod: rowData.processMethod, for (var j = 0; j < existingData.length; j++) {
countTax: '', if (existingData[j].materialCode === rowData.materialNo) {
usdTax: '', isDuplicate = true;
materialSole: "", break;
materialRmb: "", }
materialNum: "", }
materialNoRmb: "",
materialNoUsd: "", if (!isDuplicate) {
materialRmb: "", // 如果不存在,则准备插入新行,并发起查询请求
materialNoRmbSum: "", promises.push(queryRecentQuotation(rowData.materialNo).then(function (quotationData) {
materialRmbSum: "", // 将查询结果赋值给 newRows 中的相应字段
materialUsd: "", return {
materialUsdSum: "", materialId: rowData.id,
materialNoUsdSum: "", materialCode: rowData.materialNo,
remark: "", materialName: rowData.materialName,
materialType: rowData.materialType,
describe: rowData.describe,
brand: rowData.brand,
unit: rowData.unit,
processMethod: rowData.processMethod,
photoUrl: rowData.photoUrl,
countTax: '',
usdTax: '',
materialNum: "",
materialSole: "",
recentQuotationRMB: quotationData.data.materialRmb || '',
recentQuotationUSD: quotationData.data.materialUsd || '',
materialRmb: "",
materialNoRmb: "",
materialNoUsd: "",
materialUsd: "",
materialUsdSum: "",
materialNoUsdSum: "",
materialNoRmbSum: "",
materialRmbSum: "",
createBy: "",
createTime: "",
updateBy: "",
updateTime: "",
remark: "",
};
}).catch(function (error) {
// 返回一个默认对象以保证数据结构一致
return {
materialId: rowData.id,
materialCode: rowData.materialNo,
materialName: rowData.materialName,
materialType: rowData.materialType,
describe: rowData.describe,
brand: rowData.brand,
unit: rowData.unit,
processMethod: rowData.processMethod,
photoUrl: rowData.photoUrl,
countTax: '',
usdTax: '',
materialNum: "",
materialSole: "",
recentQuotationRMB: '',
recentQuotationUSD: '',
materialRmb: "",
materialNoRmb: "",
materialNoUsd: "",
materialUsd: "",
materialUsdSum: "",
materialNoUsdSum: "",
materialNoRmbSum: "",
materialRmbSum: "",
createBy: "",
createTime: "",
updateBy: "",
updateTime: "",
remark: "",
};
}));
} else {
$.modal.alertError("不能选择已添加过的相同料号");
} }
}) }
layer.close(index);
// 使用Promise.all等待所有查询完成
Promise.all(promises).then(function (rows) {
newRows = rows.filter(row => !!row); // 清除可能的null或undefined
if (newRows.length > 0) {
// 批量插入新行
for (var k = 0; k < newRows.length; k++) {
$("#bootstrap-sub-table-quoteChild").bootstrapTable('insertRow', { index: 1, row: newRows[k] });
}
}
layer.close(index);
}).catch(function (error) {
console.error('Some requests failed:', error);
layer.close(index);
});
}
// 查找最新的报价数据
function queryRecentQuotation(materialNo) {
return new Promise((resolve, reject) => {
// 使用AJAX请求从服务器获取最近的报价信息
$.ajax({
url: prefix + '/queryLatestRecentQuotation', // 假设这是你的API路径
type: 'GET',
data: { materialNo: materialNo, customerCode: $("#customerCode").val() },
success: function (data) {
resolve(data); // 成功时解析数据
},
error: function (jqXHR, textStatus, errorThrown) {
reject(new Error('查找最新报价数据失败')); // 失败时抛出错误
}
});
});
} }
function insertRow() { function insertRow() {
var url = ctx + "erp/material/select"; var url = ctx + "erp/material/select";
@ -502,6 +605,19 @@
function toPercentage(numerator, denominator) { function toPercentage(numerator, denominator) {
return (numerator / denominator) * 100 + '%'; return (numerator / denominator) * 100 + '%';
} }
//最新报价历史
function recentQuotationHistory(materialCode){
var customerCode = $("#customerCode").val();
var queryParams = new URLSearchParams();
queryParams.append("materialCode", materialCode);
queryParams.append("customerCode", encodeURIComponent(customerCode));
var url = prefix + '/recentQuotationHistory?'+queryParams.toString();
$.modal.open("最新报价历史", url);
}
</script> </script>
</body> </body>
</html> </html>

3
ruoyi-admin/src/main/resources/templates/system/customerQuote/recentQuotationHistory.html

@ -24,6 +24,9 @@
var options = { var options = {
url: prefix + "/recentQuotationHistoryList", url: prefix + "/recentQuotationHistoryList",
modalName: "客户报价历史", modalName: "客户报价历史",
showSearch: false,
showRefresh: false,
showToggle: false,
queryParams: { queryParams: {
materialCode: materialCode, materialCode: materialCode,
customerCode: customerCode customerCode: customerCode

171
ruoyi-admin/src/main/resources/templates/system/customerQuote/taskModifyApply.html

@ -269,6 +269,8 @@
} }
} }
}, },
{ title: '最新报价(RMB)',field: 'recentQuotationRMB',align: 'center',},
{ title: '最新报价(美元)',field: 'recentQuotationUSD',align: 'center',},
{title: '国内税率',field: 'countTax',align: 'center',}, {title: '国内税率',field: 'countTax',align: 'center',},
{ title: '美元汇率',field: 'usdTax', align: 'center',}, { title: '美元汇率',field: 'usdTax', align: 'center',},
{field: 'materialNum',align: 'center',title: '物料的数量', {field: 'materialNum',align: 'center',title: '物料的数量',
@ -439,46 +441,143 @@
} }
} }
function doSubmit(index, layero,uniqueId){ function doSubmit(index, layero, uniqueId) {
console.log(uniqueId); console.log(uniqueId);
var iframeWin = window[layero.find('iframe')[0]['name']]; var iframeWin = window[layero.find('iframe')[0]['name']];
var rowData = iframeWin.$('#bootstrap-select-table').bootstrapTable('getSelections')[0]; var selectedRows = iframeWin.$('#bootstrap-select-table').bootstrapTable('getSelections');
console.log("rowData: "+rowData);
let enterpriseSum = $("#enterpriseSum").val(); if (selectedRows.length === 0) {
$("#enterpriseSum").val((enterpriseSum==''?0:enterpriseSum) + 1); $.modal.alertError("请选择至少一条物料信息");
var timestamp = new Date().getTime(); return;
var totalNum = $("#bootstrap-table-Quote-child2").bootstrapTable('getData').length; }
$("#bootstrap-table-Quote-child2").bootstrapTable('insertRow', {
index: totalNum, var existingData = $("#bootstrap-sub-table-quoteChild").bootstrapTable('getData');
row: { var promises = [];
id:'',
quoteId:$("#supplierCode").val(), // 存储要插入的新行
materialId:rowData.id, var newRows = [];
materialCode: rowData.materialNo,
materialName: rowData.materialName, // 遍历选中的每一行物料信息
materialType: rowData.materialType, for (var i = 0; i < selectedRows.length; i++) {
describe: rowData.describe, var rowData = selectedRows[i];
brand: rowData.brand,
photoUrl: rowData.photoUrl, // 检查是否已经存在相同的物料
unit: rowData.unit, var isDuplicate = false;
processMethod: rowData.processMethod, for (var j = 0; j < existingData.length; j++) {
countTax: '', if (existingData[j].materialCode === rowData.materialNo) {
usdTax: '', isDuplicate = true;
materialSole: "", break;
materialNum: "", }
materialNoRmb: "", }
materialNoUsd: "",
materialRmb: "", if (!isDuplicate) {
materialNoRmbSum: "", // 如果不存在,则准备插入新行,并发起查询请求
materialRmbSum: "", promises.push(queryRecentQuotation(rowData.materialNo).then(function (quotationData) {
materialUsd: "", // 将查询结果赋值给 newRows 中的相应字段
materialUsdSum: "", return {
materialNoUsdSum: "", materialId: rowData.id,
remark: "", materialCode: rowData.materialNo,
materialName: rowData.materialName,
materialType: rowData.materialType,
describe: rowData.describe,
brand: rowData.brand,
unit: rowData.unit,
processMethod: rowData.processMethod,
photoUrl: rowData.photoUrl,
countTax: '',
usdTax: '',
materialNum: "",
materialSole: "",
recentQuotationRMB: quotationData.data.materialRmb || '',
recentQuotationUSD: quotationData.data.materialUsd || '',
materialRmb: "",
materialNoRmb: "",
materialNoUsd: "",
materialUsd: "",
materialUsdSum: "",
materialNoUsdSum: "",
materialNoRmbSum: "",
materialRmbSum: "",
createBy: "",
createTime: "",
updateBy: "",
updateTime: "",
remark: "",
};
}).catch(function (error) {
// 返回一个默认对象以保证数据结构一致
return {
materialId: rowData.id,
materialCode: rowData.materialNo,
materialName: rowData.materialName,
materialType: rowData.materialType,
describe: rowData.describe,
brand: rowData.brand,
unit: rowData.unit,
processMethod: rowData.processMethod,
photoUrl: rowData.photoUrl,
countTax: '',
usdTax: '',
materialNum: "",
materialSole: "",
recentQuotationRMB: '',
recentQuotationUSD: '',
materialRmb: "",
materialNoRmb: "",
materialNoUsd: "",
materialUsd: "",
materialUsdSum: "",
materialNoUsdSum: "",
materialNoRmbSum: "",
materialRmbSum: "",
createBy: "",
createTime: "",
updateBy: "",
updateTime: "",
remark: "",
};
}));
} else {
$.modal.alertError("不能选择已添加过的相同料号");
}
}
// 使用Promise.all等待所有查询完成
Promise.all(promises).then(function (rows) {
newRows = rows.filter(row => !!row); // 清除可能的null或undefined
if (newRows.length > 0) {
// 批量插入新行
for (var k = 0; k < newRows.length; k++) {
$("#bootstrap-sub-table-quoteChild").bootstrapTable('insertRow', { index: 1, row: newRows[k] });
}
} }
}) layer.close(index);
layer.close(index); }).catch(function (error) {
console.error('Some requests failed:', error);
layer.close(index);
});
} }
// 查找最新的报价数据
function queryRecentQuotation(materialNo) {
return new Promise((resolve, reject) => {
// 使用AJAX请求从服务器获取最近的报价信息
$.ajax({
url: prefix + '/queryLatestRecentQuotation', // 假设这是你的API路径
type: 'GET',
data: { materialNo: materialNo, customerCode: $("#customerCode").val() },
success: function (data) {
resolve(data); // 成功时解析数据
},
error: function (jqXHR, textStatus, errorThrown) {
reject(new Error('查找最新报价数据失败')); // 失败时抛出错误
}
});
});
}
function insertRow() { function insertRow() {
var url = ctx + "erp/material/select"; var url = ctx + "erp/material/select";
var options = { var options = {

102
ruoyi-admin/src/main/resources/templates/system/customerQuote/taskYwjlVerify.html

@ -164,14 +164,6 @@
</div> </div>
</form> </form>
<div class="other container"> <div class="other container">
<div class="form-row">
<div class="btn-group-sm" id="toolbar" role="group">
<span>选择报价信息</span>
<a class="btn btn-success" onclick="insertRow()">
<i class="fa fa-plus"></i> 添加物料
</a>
</div>
</div>
<div class="row"> <div class="row">
<div class="col-sm-12 select-table table-striped"> <div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table-Quote-child4"></table> <table id="bootstrap-table-Quote-child4"></table>
@ -247,92 +239,28 @@
} }
}, },
{ title: '对外售价',field: 'materialSole', { title: '对外售价',field: 'materialSole',
editable: { },
type: 'number', { title: '最新报价(RMB)',field: 'recentQuotationRMB',align: 'center',},
mode: 'inline', { title: '最新报价(美元)',field: 'recentQuotationUSD',align: 'center',},
title: '对外售价', { title: '最新报价历史',align: 'center',
validate: function (value) {
if (!value) { formatter: function (value, row, index) {
return '对外售价不能为空'; var actions = [];
} actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="recentQuotationHistory(\'' + row.materialCode + '\')"><i class="fa fa-edit"></i>最新报价历史</a> ');
if (isNaN(value)) { return actions.join('');
return '对外售价必须为数字';
}
}
} }
}, },
{title: '国内税率',field: 'countTax',align: 'center',}, {title: '国内税率',field: 'countTax',align: 'center',},
{ title: '美元汇率',field: 'usdTax', align: 'center',}, { title: '美元汇率',field: 'usdTax', align: 'center',},
{title: '物料的数量',field: 'materialNum',align: 'center', {title: '物料的数量',field: 'materialNum',align: 'center',
editable:{
type : 'text',
mode: 'inline',
title : '物料的数量',
validate : function(value) {
if (!value) {
return '用量不能为空';
}
if (isNaN(value)) {
return '用量必须为数字';
}
}
},
}, },
{ title: '物料的不含税单价(RMB)', { title: '物料的不含税单价(RMB)',
field: 'materialNoRmb', field: 'materialNoRmb',
align: 'center', align: 'center',
editable:{
type: 'text', // 使用'text'类型,因为我们需自定义验证小数
mode: 'inline',
enabled: function() {
return ($("#commonCurrency_add").val() === '1'); // 当货币类型为2时启用
},
title: '物料的不含税单价(RMB)',
validate: function(value) {
// 验证是否为空
if (!value) {
return '金额不能为空';
}
// 尝试转换为浮点数并检查是否成功
var num = parseFloat(value);
if (isNaN(num)) {
return '请输入有效的数字';
}
// 检查小数点后是否有超过两位的数字
var decimalPart = num.toString().split('.')[1]; // 获取小数部分
if (decimalPart && decimalPart.length > 2) {
return '请输入精确到小数点后两位的数字';
}
}
}
}, },
{title: '物料的不含税单价(美元)', {title: '物料的不含税单价(美元)',
field: 'materialNoUsd', field: 'materialNoUsd',
align: 'center', align: 'center',
editable: {
type: 'text', // 使用'text'类型,因为我们需自定义验证小数
mode: 'inline',
enabled: function() {
return ($("#commonCurrency_add").val() === '2'); // 当货币类型为2时启用
},
title: '物料的不含税单价(美元)',
validate: function(value) {
// 验证是否为空
if (!value) {
return '金额不能为空';
}
// 尝试转换为浮点数并检查是否成功
var num = parseFloat(value);
if (isNaN(num)) {
return '请输入有效的数字';
}
// 检查小数点后是否有超过两位的数字
var decimalPart = num.toString().split('.')[1]; // 获取小数部分
if (decimalPart && decimalPart.length > 2) {
return '请输入精确到小数点后两位的数字';
}
}
}
}, },
{title: '物料的含税单价(RMB)',field: 'materialRmb',align: 'center'}, {title: '物料的含税单价(RMB)',field: 'materialRmb',align: 'center'},
{title: '物料的含税总价(RMB)',field: 'materialNoRmbSum',align: 'center'}, {title: '物料的含税总价(RMB)',field: 'materialNoRmbSum',align: 'center'},
@ -523,6 +451,18 @@
} }
} }
//最新报价历史
function recentQuotationHistory(materialCode){
var customerCode = $("#customerCode").val();
var queryParams = new URLSearchParams();
queryParams.append("materialCode", materialCode);
queryParams.append("customerCode", encodeURIComponent(customerCode));
var url = prefix + '/recentQuotationHistory?'+queryParams.toString();
$.modal.open("最新报价历史", url);
}
</script> </script>
</body> </body>
</html> </html>

101
ruoyi-admin/src/main/resources/templates/system/customerQuote/taskYwzgVerify.html

@ -166,14 +166,6 @@
<hr/> <hr/>
</form> </form>
<div class="other container"> <div class="other container">
<div class="form-row">
<div class="btn-group-sm" id="toolbar" role="group">
<span>选择报价信息</span>
<a class="btn btn-success" onclick="insertRow()">
<i class="fa fa-plus"></i> 添加物料
</a>
</div>
</div>
<div class="row"> <div class="row">
<div class="col-sm-12 select-table table-striped"> <div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table-Quote-child3"></table> <table id="bootstrap-table-Quote-child3"></table>
@ -269,92 +261,28 @@
} }
}, },
{ title: '对外售价',field: 'materialSole', { title: '对外售价',field: 'materialSole',
editable: { },
type: 'number', { title: '最新报价(RMB)',field: 'recentQuotationRMB',align: 'center',},
mode: 'inline', { title: '最新报价(美元)',field: 'recentQuotationUSD',align: 'center',},
title: '对外售价', { title: '最新报价历史',align: 'center',
validate: function (value) {
if (!value) { formatter: function (value, row, index) {
return '对外售价不能为空'; var actions = [];
} actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="recentQuotationHistory(\'' + row.materialCode + '\')"><i class="fa fa-edit"></i>最新报价历史</a> ');
if (isNaN(value)) { return actions.join('');
return '对外售价必须为数字';
}
}
} }
}, },
{title: '国内税率',field: 'countTax',align: 'center',}, {title: '国内税率',field: 'countTax',align: 'center',},
{ title: '美元汇率',field: 'usdTax', align: 'center',}, { title: '美元汇率',field: 'usdTax', align: 'center',},
{title: '物料的数量',field: 'materialNum',align: 'center', {title: '物料的数量',field: 'materialNum',align: 'center',
editable:{
type : 'text',
mode: 'inline',
title : '物料的数量',
validate : function(value) {
if (!value) {
return '用量不能为空';
}
if (isNaN(value)) {
return '用量必须为数字';
}
}
},
}, },
{ title: '物料的不含税单价(RMB)', { title: '物料的不含税单价(RMB)',
field: 'materialNoRmb', field: 'materialNoRmb',
align: 'center', align: 'center',
editable:{
type: 'text', // 使用'text'类型,因为我们需自定义验证小数
mode: 'inline',
enabled: function() {
return ($("#commonCurrency_add").val() === '1'); // 当货币类型为2时启用
},
title: '物料的不含税单价(RMB)',
validate: function(value) {
// 验证是否为空
if (!value) {
return '金额不能为空';
}
// 尝试转换为浮点数并检查是否成功
var num = parseFloat(value);
if (isNaN(num)) {
return '请输入有效的数字';
}
// 检查小数点后是否有超过两位的数字
var decimalPart = num.toString().split('.')[1]; // 获取小数部分
if (decimalPart && decimalPart.length > 2) {
return '请输入精确到小数点后两位的数字';
}
}
}
}, },
{title: '物料的不含税单价(美元)', {title: '物料的不含税单价(美元)',
field: 'materialNoUsd', field: 'materialNoUsd',
align: 'center', align: 'center',
editable: {
type: 'text', // 使用'text'类型,因为我们需自定义验证小数
mode: 'inline',
enabled: function() {
return ($("#commonCurrency_add").val() === '2'); // 当货币类型为2时启用
},
title: '物料的不含税单价(美元)',
validate: function(value) {
// 验证是否为空
if (!value) {
return '金额不能为空';
}
// 尝试转换为浮点数并检查是否成功
var num = parseFloat(value);
if (isNaN(num)) {
return '请输入有效的数字';
}
// 检查小数点后是否有超过两位的数字
var decimalPart = num.toString().split('.')[1]; // 获取小数部分
if (decimalPart && decimalPart.length > 2) {
return '请输入精确到小数点后两位的数字';
}
}
}
}, },
{title: '物料的含税单价(RMB)',field: 'materialRmb',align: 'center'}, {title: '物料的含税单价(RMB)',field: 'materialRmb',align: 'center'},
{title: '物料的含税总价(RMB)',field: 'materialNoRmbSum',align: 'center'}, {title: '物料的含税总价(RMB)',field: 'materialNoRmbSum',align: 'center'},
@ -482,6 +410,17 @@
} }
} }
//最新报价历史
function recentQuotationHistory(materialCode){
var customerCode = $("#customerCode").val();
var queryParams = new URLSearchParams();
queryParams.append("materialCode", materialCode);
queryParams.append("customerCode", encodeURIComponent(customerCode));
var url = prefix + '/recentQuotationHistory?'+queryParams.toString();
$.modal.open("最新报价历史", url);
}
</script> </script>
</body> </body>
</html> </html>

102
ruoyi-admin/src/main/resources/templates/system/customerQuote/taskZozjVerify.html

@ -168,14 +168,6 @@
<hr/> <hr/>
</form> </form>
<div class="other container"> <div class="other container">
<div class="form-row">
<div class="btn-group-sm" id="toolbar" role="group">
<span>选择报价信息</span>
<a class="btn btn-success" onclick="insertRow()">
<i class="fa fa-plus"></i> 添加物料
</a>
</div>
</div>
<div class="row"> <div class="row">
<div class="col-sm-12 select-table table-striped"> <div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table-Quote-child5"></table> <table id="bootstrap-table-Quote-child5"></table>
@ -250,92 +242,28 @@
} }
}, },
{ title: '对外售价',field: 'materialSole', { title: '对外售价',field: 'materialSole',
editable: { },
type: 'number', { title: '最新报价(RMB)',field: 'recentQuotationRMB',align: 'center',},
mode: 'inline', { title: '最新报价(美元)',field: 'recentQuotationUSD',align: 'center',},
title: '对外售价', { title: '最新报价历史',align: 'center',
validate: function (value) {
if (!value) { formatter: function (value, row, index) {
return '对外售价不能为空'; var actions = [];
} actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="recentQuotationHistory(\'' + row.materialCode + '\')"><i class="fa fa-edit"></i>最新报价历史</a> ');
if (isNaN(value)) { return actions.join('');
return '对外售价必须为数字';
}
}
} }
}, },
{title: '国内税率',field: 'countTax',align: 'center',}, {title: '国内税率',field: 'countTax',align: 'center',},
{ title: '美元汇率',field: 'usdTax', align: 'center',}, { title: '美元汇率',field: 'usdTax', align: 'center',},
{field: 'materialNum',align: 'center',title: '物料的数量', {field: 'materialNum',align: 'center',title: '物料的数量',
editable:{
type : 'text',
mode: 'inline',
title : '物料的数量',
validate : function(value) {
if (!value) {
return '用量不能为空';
}
if (isNaN(value)) {
return '用量必须为数字';
}
}
},
}, },
{ title: '物料的不含税单价(RMB)', { title: '物料的不含税单价(RMB)',
field: 'materialNoRmb', field: 'materialNoRmb',
align: 'center', align: 'center',
editable:{
type: 'text', // 使用'text'类型,因为我们需自定义验证小数
mode: 'inline',
enabled: function() {
return ($("#commonCurrency_add").val() === '1'); // 当货币类型为2时启用
},
title: '物料的不含税单价(RMB)',
validate: function(value) {
// 验证是否为空
if (!value) {
return '金额不能为空';
}
// 尝试转换为浮点数并检查是否成功
var num = parseFloat(value);
if (isNaN(num)) {
return '请输入有效的数字';
}
// 检查小数点后是否有超过两位的数字
var decimalPart = num.toString().split('.')[1]; // 获取小数部分
if (decimalPart && decimalPart.length > 2) {
return '请输入精确到小数点后两位的数字';
}
}
}
}, },
{title: '物料的不含税单价(美元)', {title: '物料的不含税单价(美元)',
field: 'materialNoUsd', field: 'materialNoUsd',
align: 'center', align: 'center',
editable: {
type: 'text', // 使用'text'类型,因为我们需自定义验证小数
mode: 'inline',
enabled: function() {
return ($("#commonCurrency_add").val() === '2'); // 当货币类型为2时启用
},
title: '物料的不含税单价(美元)',
validate: function(value) {
// 验证是否为空
if (!value) {
return '金额不能为空';
}
// 尝试转换为浮点数并检查是否成功
var num = parseFloat(value);
if (isNaN(num)) {
return '请输入有效的数字';
}
// 检查小数点后是否有超过两位的数字
var decimalPart = num.toString().split('.')[1]; // 获取小数部分
if (decimalPart && decimalPart.length > 2) {
return '请输入精确到小数点后两位的数字';
}
}
}
}, },
{title: '物料的含税单价(RMB)',field: 'materialRmb',align: 'center'}, {title: '物料的含税单价(RMB)',field: 'materialRmb',align: 'center'},
{title: '物料的含税总价(RMB)',field: 'materialNoRmbSum',align: 'center'}, {title: '物料的含税总价(RMB)',field: 'materialNoRmbSum',align: 'center'},
@ -455,6 +383,18 @@
$.operate.save(prefix + "/complete/" + taskId, $('#form-customerQuote-zozj').serialize()); $.operate.save(prefix + "/complete/" + taskId, $('#form-customerQuote-zozj').serialize());
} }
} }
//最新报价历史
function recentQuotationHistory(materialCode){
var customerCode = $("#customerCode").val();
var queryParams = new URLSearchParams();
queryParams.append("materialCode", materialCode);
queryParams.append("customerCode", encodeURIComponent(customerCode));
var url = prefix + '/recentQuotationHistory?'+queryParams.toString();
$.modal.open("最新报价历史", url);
}
</script> </script>
</body> </body>
</html> </html>
Loading…
Cancel
Save