Files
zszq-trs/YLErpWeb/wwwroot/Scripts/app/trade/dividendTradeList.js
T
2024-05-09 14:06:26 +08:00

289 lines
13 KiB
JavaScript

function init() {
var obj = {
url: "/trade/QueryDividendTradeList",
datatype: 'local',
//multiselect: true,
height: 'auto',
width: '96%',
autowidth: false,
shrinkToFit: false,
viewrecords: true,
jsonReader: { repeatitems: false },
caption: '',
mtype: 'POST',
colModel: GetColModel(),
ondblClickRow: rowdblclick,
pager: jQuery('#pagerGrid'),
pagerpos: 'left',
//rowNum: 20,
//rowList: [20, 30, 50, 200, 10000],
footerrow: false,
};
var g_grid = jQuery('#listGrid').jqGrid(obj);
$(".datepicker").datepicker({
changeMonth: true,
changeYear: true,
showButtonPanel: true,
showOtherMonths: true,
selectOtherMonths: true
});
$("#DateValueDate").val(sysdate);
$("#DateValueDate").datepicker({
changeMonth: true, changeYear: true, showButtonPanel: true, showOtherMonths: true, selectOtherMonths: true,
onSelect: function (se) {
//queryReportInfo();
}
});
//$("#DateValueDate").change(queryReportInfo);
try {
SetAceDropDown();
} catch (e) {
}
let underlyingCtrl = new tradeHelper.UnderlyingSelectCtrl('#UnderlyingId').setFlag(tradeHelper.UnderlyingSelectFlag.OtcTrade);
FastVue.numberInput('closePrice', { precision: 6 });
FastVue.numberInput('dividRate', { precision: 6 });
FastVue.numberInput('giveCash', { precision: 6 });
FastVue.numberInput('giveShare', { precision: 6 });
FastVue.numberInput('rationedSharesAmount', { precision: 6 });
FastVue.numberInput('rationedSharesPrice', { precision: 6 });
FastVue.numberInput('dividendRatio', { precision: 6 });
var ratioFormat = main.numberFormat(6);
$("[name='calcRatio']").change(() => {
var closePrice = Number($("#closePrice").val()) || 0;
var dividRate = Number($("#dividRate").val()) || 0;
var giveCash = Number($("#giveCash").val()) || 0;
var giveShare = Number($("#giveShare").val()) || 0;
var rationedSharesAmount = Number($("#rationedSharesAmount").val()) || 0;
var rationedSharesPrice = Number($("#rationedSharesPrice").val()) || 0;
var tatio = closePrice / ((closePrice * 10 - (giveCash * (1 - dividRate)) + rationedSharesAmount * rationedSharesPrice) / (10 + giveShare + rationedSharesAmount));
if (tatio && tatio < 0) {
tatio = 0;
}
$("#dividendRatio").val(ratioFormat(tatio));
});
SearchClick();
}
function setDividendRatio(id) {
//var ids = main.GetGridIds($("#listGrid"), "TradeId")
//if (!ids || ids.length == 0) {
// main.alert("请勾选要设置的条目");
// return;
//}
$("#dividendRatio").val("");
$("[name='calcRatio']").val("");
layer.open({
type: 1,
title: "设置",
shadeClose: false,
shade: 0.4,
area: ['420px', '580px'],
content: $("#dividendRatioPanel"),
btn: ['保存', '取消'],
yes: function (index, layero) {
var ratio = Number($("#dividendRatio").val()) || 0;
if (ratio <= 0) {
main.alert("除权除息系数应为大于0的值,请重新填写");
return;
}
var opt = {
url: "/trade/DevidendRatio",
data: { ids: [id], optDate: $("#DateValueDate").val(), ratio: $("#dividendRatio").val() },
dataType: "json",
success: function (data) {
if (data && data.Success) {
main.message("保存成功");
$("#ratio_" + id).text($("#dividendRatio").val());
}
else {
main.alert("保存出错,请联系管理员查看系统日志");
}
layer.close(index);
}
};
main.ajax(opt);
},
cancel: function (index, layero) {
layer.close(index);
}
});
}
function removeDividendRatio(id) {
var opt = {
url: "/trade/DevidendRatio",
data: { ids: [id], optDate: $("#DateValueDate").val(), ratio: 0 },
dataType: "json",
success: function (data) {
if (data && data.Success) {
main.message("操作成功,已重置为默认值");
$("#ratio_" + id).text("");
}
else {
main.alert("操作出错,请联系管理员查看系统日志");
}
}
};
main.ajax(opt);
}
function GetColModel() {
return [
{ name: 'EncryptId', label: 'EncryptId', width: 150, sortable: false, hidden: true, optionHide: true },
{ name: 'TradeId', label: 'TradeId', width: 150, sortable: false, hidden: true, optionHide: true },
{ name: 'TradeNumber', label: '交易编号', width: 150, sortable: false },
{
name: 'DividendStatus', label: '除权除息状态', width: 150, sortable: false,
formatter: function (cellvalue, options, rowObject) {
return cellvalue ? "已除权" : "未除权";
}
},
{ name: 'TradeStatus', label: '交易状态', width: 160, sortable: false },
{ name: 'ClientName', label: '交易对手方', width: 160, sortable: false },
{ name: 'TradeType', label: '结构类型', width: 70, sortable: false },
{ name: 'StockEqvNotional', label: '名义本金', width: 90, sortable: false, formatter: formatter },
{ name: 'TradeDate', label: '成交日期', width: 90, formatter: 'date', sortable: false },
{ name: 'ExerciseDate', label: '到期日期', width: 90, formatter: 'date', sortable: false },
{ name: 'UnderlyingCode', label: '标的代码', width: 80, sortable: false },
{ name: 'DividendRatio', label: '除权除息系数', width: 120, sortable: false, formatter: ratioFormatter },
{ name: 'SpotPrice', label: '期初标的价格', width: 90, sortable: false, formatter: formatter },
{ name: 'Strike', label: '执行价格', width: 90, sortable: false, formatter: formatter },
{ name: 'TradeOriginalAmountV', label: '成交数量', width: 70, sortable: false, formatter: formatter },
{ name: 'TradeOriginalAmount', label: '有效成交数量', width: 90, sortable: false, formatter: formatter },
{ name: 'StrikeHigh', label: '高行权价', width: 70, sortable: false, formatter: formatter },
{ name: 'Barrier', label: '障碍价格', width: 70, sortable: false, formatter: formatter },
{ name: 'BarrierHigh', label: '高障碍价格', width: 70, sortable: false, formatter: formatter },
{ name: 'KIBarrier', label: '敲入障碍价格', width: 70, sortable: false, formatter: formatter },
{ name: 'KOBarrier', label: '敲出障碍价格', width: 70, sortable: false, formatter: formatter },
{ name: 'CouponBarrier', label: '票息障碍价格', width: 70, sortable: false, formatter: formatter },
{ name: 'GetUnderlyingCode', label: '互换标的代码(收取方)', width: 70, sortable: false },
{ name: 'GetSpotPrice', label: '互换标的价格(收取方)', width: 70, sortable: false, formatter: formatter },
{ name: 'PayUnderlyingCode', label: '互换标的代码(支付方)', width: 70, sortable: false },
{ name: 'PaySpotPrice', label: '互换标的价格(支付方)', width: 70, sortable: false, formatter: formatter },
{ name: 'LowerRange', label: '区间下限', width: 70, sortable: false, formatter: formatter },
{ name: 'UpperRange', label: '区间上限', width: 70, sortable: false, formatter: formatter },
{ name: 'SpreadStrikeAtKO1', label: '敲出期权行权价1', width: 70, sortable: false, formatter: formatter },
{ name: 'SpreadStrikeAtKO', label: '敲出期权行权价2', width: 70, sortable: false, formatter: formatter },
{ name: 'SpreadStrikeAtMaturity1', label: '敲入期权行权价1', width: 70, sortable: false, formatter: formatter },
{ name: 'SpreadStrikeAtMaturity', label: '封顶/封底行权价', width: 70, sortable: false, formatter: formatter },
];
}
function ratioFormatter(cellvalue, options, rowObject) {
var html = "<span id='ratio_" + rowObject.TradeId + "'>" + numberFormatter(cellvalue, options, rowObject) + "</span>";
if (!rowObject.DividendStatus) {
html += "<a href='javascript:;' title='清除除权除息系数' class='ratioSetting' onclick='removeDividendRatio(\"" + rowObject.TradeId + "\")' ><i class='fa fa-trash-o'></i></a>";
html += "<a href='javascript:;' title='设置除权除息系数' class='ratioSetting' onclick='setDividendRatio(\"" + rowObject.TradeId + "\")' ><i class='fa fa-pencil-square-o'></i></a>";
}
return html;
}
function numberFormatter(cellvalue, options, rowObject) {
var result = cellvalue;
if (result && result == "NaN") {
result = "";
}
return result;
}
function formatter(cellvalue, options, rowObject) {
var formatCallBack = {};
switch (options.colModel.label) {
case "有效成交数量":
case "成交数量":
formatCallBack = otcformat.trading.notional;
break;
default:
formatCallBack = otcformat.trading.umprice;
break;
}
var afterName = options.colModel.name + "_After";
var tempValue = numberFormatter(cellvalue, options, rowObject);
var result = "";
if (tempValue) {
result = String(formatCallBack(tempValue));
}
tempValue = numberFormatter(rowObject[afterName], options, rowObject)
if (tempValue) {
result = result + "(" + formatCallBack(tempValue) + ")";
}
return result;
}
function exportTradeChoose() {
$("#DateFromDividendDate").val($("#DateValueDate").val());
$("#DateToDividendDate").val($("#DateValueDate").val());
layer.open({
type: 1,
title: "导出除权除息交易信息",
shadeClose: false,
shade: 0.4,
area: ['300px', '180px'],
content: $("#exportPanel"),
btn: ['确定', '取消'],
yes: function (index, layero) {
exportSubmit("/trade/ExportDividendTradeList", { DividendDate: $("#DateFromDividendDate").val(), DividendDateEnd: $("#DateToDividendDate").val() });
},
cancel: function (index, layero) {
layer.close(index);
}
});
}
function exportSubmit(url, postData) {
var $form = $('#exportForm').html('');
$form.attr("action", url)
_.each(postData, (val, key) => {
if (!val) {
val = '';
} else if (_.isArray(val)) {
_.each(val, x => {
$form.append(`<input type="hidden" name="${key}" value="${x}">`);
});
return;
}
$form.append(`<input type="hidden" name="${key}" value="${val}">`);
});
$form.submit();
}
function UpdatePostData() {
var listGrid = $('#listGrid');
listGrid.appendPostData({ DividendDate: $("#DateValueDate").val() });
listGrid.appendPostData({ TradeNumber: $("#TradeNumber").val() });
listGrid.appendPostData({ ClientIds: !$("#ClientId").val() ? [] : $("#ClientId").val() });
listGrid.appendPostData({ TraderIds: !$("#TraderName").val() ? [] : $("#TraderName").val() });
listGrid.appendPostData({ TradeDateStart: $("#DateFromTradeDate").val() });
listGrid.appendPostData({ TradeDateEnd: $("#DateToTradeDate").val() });
listGrid.appendPostData({ ExerciseDateStart: $("#DateFromExerciseDate").val() });
listGrid.appendPostData({ ExerciseDateEnd: $("#DateToExerciseDate").val() });
listGrid.appendPostData({ AssetUnitIds: !$("#AssetId").val() ? [] : $("#AssetId").val() })
listGrid.appendPostData({ GroupId: $("#GroupId").val() })
listGrid.appendPostData({ TradeTypes: !$("#TradeTypes").val() ? [] : $("#TradeTypes").val() });
listGrid.appendPostData({ UnderlyingIds: !$("#UnderlyingId").val() ? [] : $("#UnderlyingId").val() });
listGrid.appendPostData({ DividendStatus: $("#DividendStatus").val().length == 1 ? $("#DividendStatus").val()[0] : null });
}
function rowdblclick(rowid) {
var rowData = $(this).getRowData(rowid);
if (rowData.EncryptId && rowData.TradeType) {
starttradeView(rowData.EncryptId, rowData.TradeType);
}
}
function starttradeView(id, tradeType) {
if (tradeType.indexOf("远期") >= 0) {
let srcurl = "/forwardtrade/tradeView/?enid=" + id + "&isFromPositionReport=true";
main.open("查看远期交易", srcurl);
}
else {
let srcurl = "/trade/tradeView/?enid=" + id + "&checkBtn=1";
main.open("查看交易", srcurl, { area: ['1260px', '100%'], scrollbar: false });
}
}
function SearchClick(isSearchclick) {
var listGrid = $('#listGrid');
listGrid.jqGrid('setGridParam', { datatype: 'json' });
UpdatePostData();
if (typeof (isSearchclick) != "undefined" && isSearchclick) {
//点击搜索时默认第一页
listGrid.jqGrid('setGridParam',
{
page: 1
});
}
listGrid.trigger('reloadGrid');
}