289 lines
13 KiB
JavaScript
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');
|
|
} |