170 lines
7.9 KiB
Plaintext
170 lines
7.9 KiB
Plaintext
@model YLErp.Configuration.SettlementConfig
|
|
|
|
@{
|
|
ViewData["Title"] = "收盘配置";
|
|
|
|
var pageObj = new
|
|
{
|
|
AjaxSaveUrl = Url.Action("AjaxSaveSettlementConfig"),
|
|
AjaxReCalcBuySell = Url.Action("AjaxClientBalanceReCalcBS"),
|
|
AjaxReCalcBuySellProcess=Url.Action("AjaxClientBalanceReCalcProcess"),
|
|
};
|
|
|
|
var allVolTypes = YLErp.Web.Models.SettlementViewModel.GetVolTypes();
|
|
var checkedVolTypes = Model.VolTypes.Split(',').Where(n => !string.IsNullOrWhiteSpace(n)).ToArray();
|
|
}
|
|
|
|
@section heads{
|
|
<style>
|
|
.form-label { width: 120px !important; }
|
|
.btn-primary { min-width: 100px; }
|
|
.search-label{
|
|
margin-right:5px
|
|
}
|
|
.search-input{
|
|
width:120px;
|
|
height:30px;
|
|
}
|
|
</style>
|
|
}
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h4 class="card-title">收盘配置</h4>
|
|
</div>
|
|
<div class="card-body" id="configCont">
|
|
<form class="form-layout" onsubmit="return false;" id="form1">
|
|
<div class="form-row">
|
|
<label class="form-label col-auto">功能版本:</label>
|
|
<div class="col">
|
|
<select name="Version" class="form-control" id="selVersion" onchange="changeVersion()" style="width:160px;">
|
|
<option value="V2" selected>V2</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="form-row">
|
|
<label class="form-label col-auto"></label>
|
|
<div class="col">
|
|
<label class="mr-2">
|
|
<input type="checkbox" name="CalcPnlExplain" class="mr-1" value="true" @(Model.CalcPnlExplain ? "checked" : "") />
|
|
是否计算盈亏分解指标
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="form-row">
|
|
<label class="form-label col-auto"></label>
|
|
<div class="col">
|
|
<label class="mr-2">
|
|
<input type="checkbox" name="CalcPnlExplain" class="mr-1" value="true" @(Model.CheckExchangeClose ? "checked" : "") />
|
|
是否检查场内交易平仓(平仓超过开仓时报错)
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="form-row v2-show">
|
|
<label class="form-label col-auto">默认价格模式:</label>
|
|
<div class="col">
|
|
<label class="mr-2"><input type="checkbox" name="PriceType" class="mr-1" value="1" @((Model.PriceType & 1) > 0 ? "checked" : "") />收盘价</label>
|
|
<label class="mr-2"><input type="checkbox" name="PriceType" class="mr-1" value="2" @((Model.PriceType & 2) > 0 ? "checked" : "") />结算价</label>
|
|
</div>
|
|
</div>
|
|
<div class="form-row v2-show">
|
|
<label class="form-label col-auto">默认波动率类型:</label>
|
|
<div class="col">
|
|
@foreach (var item in allVolTypes)
|
|
{
|
|
var _checked = checkedVolTypes.Contains(item.Value) ? "checked" : "";
|
|
<label class="mr-2"><input type="checkbox" name="VolTypes" class="mr-1" value="@(item.Value)" @(_checked) />@(item.Text)</label>
|
|
}
|
|
</div>
|
|
</div>
|
|
<div class="form-row v2-show">
|
|
<label class="form-label col-auto">部分结算:</label>
|
|
<div class="col">
|
|
<label class="mr-2"><input type="checkbox" name="SupportPart" class="mr-1" value="true" @(Model.SupportPart ? "checked" : "") />支持</label>
|
|
</div>
|
|
</div>
|
|
<div class="form-row v2-show">
|
|
<label class="form-label col-auto">分客户结算:</label>
|
|
<div class="col">
|
|
<label class="mr-2"><input type="checkbox" name="SubCustomerPart" class="mr-1" value="true" @(Model.SubCustomerPart ? "checked" : "") />支持</label>
|
|
</div>
|
|
</div>
|
|
<div class="form-row v2-show">
|
|
<label class="form-label col-auto">调试配置:</label>
|
|
<div class="col">
|
|
<label class="mr-2"><input type="checkbox" name="SkipLastPvCheck" class="mr-1" value="true" @(Model.SkipLastPvCheck ? "checked" : "") />跳过上一交易日结算检查</label>
|
|
<label class="mr-2"><input type="checkbox" name="OutputDebugLog" class="mr-1" value="true" @(Model.OutputDebugLog ? "checked" : "") />输出调试日志</label>
|
|
<label class="mr-2">
|
|
<input type="checkbox" name="CalcForwradMargin" class="mr-1" value="true" @(Model.CalcForwradMargin ? "checked" : "") />计算远期预付金
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="form-row v2-show">
|
|
<label class="form-label col-auto">买卖权资金结算: </label>
|
|
<div class="col">
|
|
<label class="mr-2">
|
|
<input type="checkbox" name="CalcBuySell" class="mr-1" value="true" @(Model.CalcBuySell ? "checked" : "") />支持
|
|
</label>
|
|
<label class="mr-2">
|
|
<span class="search-label" >日期</span>
|
|
<input class="search-input" id="DateFromTradeDate" type="text">-
|
|
<input class="search-input" id="DateToTradeDate" type="text">
|
|
</label>
|
|
<label class="mr-2"> <button type="button" class="btn btn-primary" onclick="reCalcBuySell()">重新计算</button></label>
|
|
<label class="mr-2" id="reCalcResult"></label>
|
|
</div>
|
|
|
|
</div>
|
|
<input type="hidden" name="CalcForwradMargin" value="false" />
|
|
</form>
|
|
<div>
|
|
<div class="form-label d-inline-block"></div>
|
|
<button type="button" class="btn btn-primary" onclick="saveConfig()">保存</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@section scripts{
|
|
<script>
|
|
|
|
const page = @Json.Serialize(pageObj);
|
|
var sh;
|
|
function saveConfig() {
|
|
let $e = $(event.target).prop('disabled', true);
|
|
let data = $('#form1').serializeObject();
|
|
Array.isArray(data.PriceType)&&(data.PriceType = data.PriceType.reduce((s, x) => s | parseInt(x), 0));
|
|
Array.isArray(data.VolTypes)&&(data.VolTypes = data.VolTypes.join(","));
|
|
main.post(page.AjaxSaveUrl, data).done(function (resp) {
|
|
layer.msg('保存成功');
|
|
}).always(function () {
|
|
$e.prop('disabled', false);
|
|
});
|
|
}
|
|
|
|
function changeVersion() {
|
|
|
|
}
|
|
function reCalcBuySell(){
|
|
let $e = $(event.target).prop('disabled', true);
|
|
main.post(page.AjaxReCalcBuySell, { TradeDateStart: $("#DateFromTradeDate").val(), TradeDateEnd: $("#DateToTradeDate").val() }).done(function (resp) {
|
|
$("#reCalcResult").text("正在计算中");
|
|
layer.msg('开始计算');
|
|
sh=setInterval(getReCalcBuySellProcess,10000);
|
|
}).always(function () {
|
|
$e.prop('disabled', false);
|
|
});
|
|
}
|
|
function getReCalcBuySellProcess(){
|
|
main.post(page.AjaxReCalcBuySellProcess).done(function (resp) {
|
|
if (resp!=null&&resp.data) {
|
|
if (resp.data.Msg == "全部计算结束" || resp.data.Msg.indexOf("异常")!=-1) {
|
|
clearInterval(sh);
|
|
}
|
|
var msg = resp.data.SettleDate + " " + resp.data.Msg;
|
|
$("#reCalcResult").text(msg);
|
|
}else{
|
|
clearInterval(sh);
|
|
}
|
|
})
|
|
}
|
|
</script>
|
|
} |