184 lines
8.0 KiB
Plaintext
184 lines
8.0 KiB
Plaintext
@using YLErp.Model
|
|
@model client_margin_config
|
|
@{
|
|
ViewBag.Title = Model.id == 0 ? "新增客户保证金配置" : "编辑客户保证金配置";
|
|
Layout = "~/Views/Shared/_InfoLayout.cshtml";
|
|
var details = ViewBag.Details as List<ClientMarginDetailDto> ?? new List<ClientMarginDetailDto>();
|
|
}
|
|
@section CSS{
|
|
<link href="~/Statics/libs/datetime/flatpickr/flatpickr.min.css" rel="stylesheet" />
|
|
<style>
|
|
.formlabel{
|
|
width:128px !important;
|
|
}
|
|
</style>
|
|
}
|
|
@section JS{
|
|
<script src="~/Statics/libs/datetime/flatpickr/flatpickr.min.js?v=@(HtmlUtil.JsVersion)"></script>
|
|
<script type="text/javascript">
|
|
|
|
function saveConfig() {
|
|
if (!$("#valueDate").val()) {
|
|
main.message("生效日期不能为空");
|
|
return false;
|
|
}
|
|
// 验证必填字段
|
|
var clientId = $("#client_id").val();
|
|
|
|
// 收集表单数据
|
|
var configData = {
|
|
id: parseInt($("#id").val()) || 0,
|
|
client_id: parseInt(clientId),
|
|
value_date: $("#valueDate").val()
|
|
};
|
|
|
|
// 收集详情数据并进行验证
|
|
var details = [];
|
|
var rows = document.querySelectorAll('#detailTableBody tr');
|
|
var hasError = false;
|
|
var errorMessage = "";
|
|
|
|
rows.forEach(function(row, index) {
|
|
var bondTerm = row.querySelector('input[type="hidden"][name*="bond_term"]').value;
|
|
var initRateInput = row.querySelector('input[name*="init_rate"]');
|
|
var maintainRateInput = row.querySelector('input[name*="maintain_rate"]');
|
|
var swapDaysInput = row.querySelector('input[name*="swap_days"]');
|
|
|
|
var initRateValue = initRateInput.value.trim();
|
|
var maintainRateValue = maintainRateInput.value.trim();
|
|
var swapDaysValue = swapDaysInput.value.trim();
|
|
|
|
var initRate = initRateValue === '' ? null : parseFloat(initRateValue);
|
|
var maintainRate = maintainRateValue === '' ? null : parseFloat(maintainRateValue);
|
|
var swapDays = swapDaysValue === '' ? null : parseInt(swapDaysValue);
|
|
|
|
// 验证数值不能为负数
|
|
if (initRate !== null && initRate < 0) {
|
|
hasError = true;
|
|
errorMessage = "初始保证金率不能为负数";
|
|
return;
|
|
}
|
|
if (maintainRate !== null && maintainRate < 0) {
|
|
hasError = true;
|
|
errorMessage = "维持保证金率不能为负数";
|
|
return;
|
|
}
|
|
if (swapDays !== null && swapDays < 0) {
|
|
hasError = true;
|
|
errorMessage = "互换天数不能为负数";
|
|
return;
|
|
}
|
|
|
|
// 默认数据(第一条,bond_term为空)的所有字段都必填
|
|
if (bondTerm === "") {
|
|
if (initRate === null || maintainRate === null || swapDays === null) {
|
|
hasError = true;
|
|
errorMessage = "默认配置的所有字段都必须填写";
|
|
return;
|
|
}
|
|
details.push({
|
|
bond_term: bondTerm,
|
|
init_rate: initRate,
|
|
maintain_rate: maintainRate,
|
|
swap_days: swapDays
|
|
});
|
|
} else {
|
|
// 其他数据:当保证金率有值时,互换天数必填
|
|
if ((initRate !== null || maintainRate !== null) && swapDays === null) {
|
|
hasError = true;
|
|
errorMessage = "当保证金率有值时,互换天数必须填写";
|
|
return;
|
|
}
|
|
|
|
// 当保证金率与互换天数都为空时,不加到details里
|
|
if (initRate !== null || maintainRate !== null || swapDays !== null) {
|
|
details.push({
|
|
bond_term: bondTerm,
|
|
init_rate: initRate,
|
|
maintain_rate: maintainRate,
|
|
swap_days: swapDays
|
|
});
|
|
}
|
|
}
|
|
});
|
|
|
|
if (hasError) {
|
|
main.message(errorMessage);
|
|
return false;
|
|
}
|
|
|
|
var data = {
|
|
marginConfig: configData,
|
|
details: details
|
|
};
|
|
|
|
main.post("/ClientMarginConfig/ClientMarginConfigEditJson", data).done(function (res) {
|
|
window.parent.loadData();
|
|
layer.closeMe();
|
|
});
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 页面初始化
|
|
$(function () {
|
|
$(".datepicker").datepicker({ changeMonth: true, changeYear: true, showButtonPanel: true, showOtherMonths: true, selectOtherMonths: true });
|
|
});
|
|
</script>
|
|
}
|
|
|
|
<form id="configForm" method="post" autocomplete="off">
|
|
<div class="form-layout">
|
|
@Html.HiddenFor(model => model.id)
|
|
@Html.MyDropdownFor(model => model.client_id, ClientDataModel.GetAllClient())
|
|
|
|
<div id="ValueDateDiv" class="form-group col-md-6">
|
|
<label class="formlabel">生效日期:</label>
|
|
<input class="search-input datepicker" id="valueDate" name="valueDate" value="@(Model.id == 0 ? "" : Model.value_date.ToString("yyyy-MM-dd"))" type="text" autocomplete="off" required="required">
|
|
<span style="color:red">*</span>
|
|
</div>
|
|
</div>
|
|
|
|
<hr />
|
|
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<h4>保证金配置详情</h4>
|
|
<br />
|
|
|
|
<table class="table table-bordered" id="detailTable">
|
|
<thead>
|
|
<tr>
|
|
<th>利率债期限</th>
|
|
<th>初始保证金率(%)</th>
|
|
<th>维持保证金率(%)</th>
|
|
<th>互换默认天数</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="detailTableBody">
|
|
@for (int i = 0; i < details.Count; i++)
|
|
{
|
|
var detail = details[i];
|
|
var displayName = detail.bond_term == "" ? "默认" : detail.bond_term.Replace("Y", "年");
|
|
<tr data-index="@i">
|
|
<td>
|
|
<input type="hidden" name="details[@i].bond_term" value="@detail.bond_term" />
|
|
<input type="text" class="form-control" value="@displayName" readonly />
|
|
</td>
|
|
<td><input type="number" class="form-control" name="details[@i].init_rate" value="@(detail.init_rate?.ToString("0.##") ?? "")" step="0.01" min="0" max="100" /></td>
|
|
<td><input type="number" class="form-control" name="details[@i].maintain_rate" value="@(detail.maintain_rate?.ToString("0.##") ?? "")" step="0.01" min="0" max="100" /></td>
|
|
<td><input type="number" class="form-control" name="details[@i].swap_days" value="@(detail.swap_days?.ToString() ?? "")" min="0" /></td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-buttons">
|
|
@MyControls.Btn("保存", "saveConfig()")
|
|
@MyControls.Btn("关闭", "layer.closeMe()")
|
|
</div>
|
|
</form> |