361 lines
14 KiB
Plaintext
361 lines
14 KiB
Plaintext
@{
|
|
ViewBag.Title = "客户盈亏状况";
|
|
Layout = "~/Views/Shared/_MainLayout.cshtml";
|
|
var pageObj = new
|
|
{
|
|
ValueDate = ViewBag.valueDate?.ToString(),
|
|
isPvRounded = YLErp.PS.Config.IsPVRounded,
|
|
configcolumn_name = configcolumn_data.客户盈亏状况,
|
|
};
|
|
}
|
|
@section CSS{
|
|
<style>
|
|
em {
|
|
font-style: normal;
|
|
}
|
|
|
|
.chosen-choices .search-choice span {
|
|
word-wrap: break-word;
|
|
word-break: break-all;
|
|
white-space: pre-wrap !important;
|
|
}
|
|
|
|
.ui-jqgrid-hdiv .ui-jqgrid-htable {
|
|
border-top: 0px;
|
|
}
|
|
|
|
.no-skin {
|
|
position: static !important;
|
|
}
|
|
|
|
.chosen-container-multi .chosen-choices {
|
|
max-height: 100px;
|
|
overflow-y: auto; /*width: 120px;*/
|
|
}
|
|
|
|
.value-date-area {
|
|
display: inline-block;
|
|
}
|
|
|
|
table {
|
|
border-collapse: unset;
|
|
}
|
|
|
|
.frozen-div {
|
|
height: auto !important;
|
|
}
|
|
|
|
.ui-jqgrid-hbox .ui-jqgrid-htable .jqg-second-row-header th.ui-th-column-header {
|
|
background: none;
|
|
background-color: antiquewhite;
|
|
}
|
|
|
|
.ui-jqgrid-hbox .ui-jqgrid-htable .jqg-second-row-header th:nth-last-child(2) {
|
|
background: none;
|
|
background-color: azure;
|
|
}
|
|
|
|
|
|
.ui-jqgrid-hbox .ui-jqgrid-htable .jqg-second-row-header th:nth-last-child(1) {
|
|
background: none;
|
|
background-color: Gainsboro;
|
|
}
|
|
|
|
|
|
.holdingDepositInput {
|
|
height: 16px;
|
|
}
|
|
|
|
#DateValueDate {
|
|
width: 152px !important;
|
|
font-size: 1rem !important;
|
|
}
|
|
</style>
|
|
}
|
|
@section JS{
|
|
<script src="~/Scripts/app/tradeHelper.js?v=@HtmlUtil.JsVersion"></script>
|
|
<script src="~/Statics/libs/v1/jqGridExtensions.js?v=@(HtmlUtil.JsVersion)"></script>
|
|
<script type="text/javascript">
|
|
var page = @Json.Serialize(pageObj);
|
|
var g_grid = {};
|
|
var query_data = {};
|
|
var searchPostData = {};
|
|
|
|
$(() => {
|
|
$(".datepicker").datepicker({
|
|
changeMonth: true,
|
|
changeYear: true,
|
|
format: 'yyyy-mm-dd'
|
|
});
|
|
$("#DateFromSettlement").val(page.ValueDate);
|
|
$("#DateToSettlement").val(page.ValueDate);
|
|
|
|
var grid = jQuery('#listGrid').jqGrid({
|
|
url: '',
|
|
datatype: '',
|
|
height: '580px',
|
|
width: '96%',
|
|
multiselect: true,
|
|
autowidth: false,
|
|
shrinkToFit: false,
|
|
viewrecords: true,
|
|
jsonReader: { repeatitems: false },
|
|
caption: '',
|
|
mtype: 'POST',
|
|
postData: searchPostData,
|
|
colModel: getColModelGrid(),
|
|
pager: jQuery('#pagerGrid'),
|
|
pagerpos: 'left',
|
|
rowNum: 20,
|
|
rowList: [20, 30, 50, 200, 10000],
|
|
footerrow: true,
|
|
loadComplete: gridComplete,
|
|
onPaging: onJqgridPaging
|
|
});
|
|
g_grid = jQuery('#listGrid');
|
|
//g_grid.setGridParam({
|
|
// resizeStop: function (newWidth, index) {
|
|
|
|
// $theadInTable = $(".ui-jqgrid-hdiv").find("table:first").children("thead");
|
|
|
|
// $theadInTable.find("tr.jqg-first-row-header").find('th').eq(index)[0].style.width =
|
|
// newWidth + "px";
|
|
// $(".frozen-div").find("table:first").children("thead").find("tr.jqg-first-row-header").find('th').eq(index)[0].style.width =
|
|
// newWidth + "px";
|
|
// $(".frozen-bdiv").find("table:first").find("tr").find('td').eq(index)[0].style.width =
|
|
// newWidth + "px";
|
|
// $(".frozen-sdiv").find("table:first").find("tr").find('td').eq(index)[0].style.width =
|
|
// newWidth + "px";
|
|
|
|
// }
|
|
//});
|
|
var setColumn = main.setcolumnChooser2(g_grid, page.configcolumn_name);
|
|
//$(".listGroupHeader").parent().css("cssText", "text-align:center!important;border-top:0px");
|
|
|
|
SetAceDropDown();
|
|
LoadGrid();
|
|
|
|
});
|
|
|
|
function getColModelGrid() {
|
|
var colModelGrid = [
|
|
{
|
|
name: 'id', label: 'id', index: 'id', width: 1, align: 'left', hidden: true,
|
|
optionHide: true, frozen: true
|
|
}, {
|
|
name: 'EncryptId', label: 'EncryptId', index: 'EncryptId', width: 0, align: 'left', hidden: true,
|
|
optionHide: true, frozen: true
|
|
}, {
|
|
name: 'Number', label: '客户编号', index: 'Number', width: 100, align: 'center', frozen: true
|
|
}, {
|
|
name: 'Name', label: '客户名称', index: 'Name', width: 200, align: 'center', frozen: true
|
|
}, {
|
|
name: 'CustomerManager', label: '客户经理', index: 'CustomerManager', width: 150, align: 'center', frozen: true
|
|
}, {
|
|
name: 'CustomerNature1', label: '客户性质1', index: 'CustomerNature1', width: 150, align: 'center', frozen: true
|
|
}, {
|
|
name: 'CustomerNature2', label: '客户性质2', index: 'CustomerNature2', width: 150, align: 'center', frozen: true
|
|
}, {
|
|
name: 'PositionPnl', label: '持仓盈亏', index: 'PositionPnl', width: 150, align: 'right', value: '0', sortable: false, formatter: otcformat.trading.tradePrice
|
|
}, {
|
|
name: 'WinLoss', label: '实现盈亏', index: 'WinLoss', width: 150, align: 'right', value: '0', sortable: false, formatter: otcformat.trading.tradePrice
|
|
}, {
|
|
name: 'PositionSumPnl', label: '区间总盈亏', index: 'WinLoss', width: 150, align: 'right', value: '0', sortable: false, formatter: otcformat.trading.tradePrice
|
|
}, {
|
|
name: 'OpenPositionNum', label: '开仓笔数', index: 'OpenPositionNum', width: 150, align: 'right', value: '0', sortable: false
|
|
}, {
|
|
name: 'EarlyTerminationNum', label: '提前终止笔数', index: 'EarlyTerminationNum', width: 150, align: 'right', value: '0', sortable: false
|
|
}, {
|
|
name: 'DueToNum', label: '到期笔数', index: 'DueToNum', width: 150, align: 'right', value: '0', sortable: false
|
|
}]
|
|
if (page.isPvRounded) {
|
|
colModelGrid.forEach(a => {
|
|
if (a.name == "PositionPnl")
|
|
a.name = "RoundedPositionPnl";
|
|
if (a.name == "PositionSumPnl")
|
|
a.name = "RoundedPositionSumPnl";
|
|
});
|
|
}
|
|
return colModelGrid;
|
|
}
|
|
function gridComplete() {
|
|
if (arguments[0].Sum) {
|
|
var sum = arguments[0].Sum;
|
|
|
|
if (page.isPvRounded) {
|
|
$("#listGrid").footerData("set", {
|
|
Number: "合计", RoundedPositionPnl: sum.RoundedPositionPnlSum, WinLoss: sum.WinLossSum, RoundedPositionSumPnl: sum.RoundedPositionSumPnlSum
|
|
});
|
|
}
|
|
else {
|
|
$("#listGrid").footerData("set", {
|
|
Number: "合计", PositionPnl: sum.PositionPnlSum, WinLoss: sum.WinLossSum, PositionSumPnl: sum.PositionSumPnlSum
|
|
});
|
|
}
|
|
}
|
|
g_grid = jQuery('#listGrid');
|
|
var setColumn = main.setcolumnChooser2(g_grid, page.configcolumn_name);
|
|
$(".listGroupHeader").parent().css("cssText", "text-align:center!important;border-top:0px");
|
|
|
|
}
|
|
|
|
function SearchClick(isSearchclick) {
|
|
var listGrid = $('#listGrid');
|
|
|
|
listGrid.jqGrid('setGridParam', {
|
|
url: '/ClientPnlInfo/GetClientPnlInfoList',
|
|
datatype: 'json'
|
|
})
|
|
searchPostData = {
|
|
Number: $("#ClientNumber").val(),
|
|
ClientIds: $("#ClientIds").val(),
|
|
StartDate: $("#DateFromSettlement").val(),
|
|
ValueDate: $("#DateToSettlement").val(),
|
|
CustomerManagerIds: $("#CustomerManagerIds").val(),
|
|
IsSmallAndMicroEnterprises: $("#IsSmallAndMicroEnterprises").val(),
|
|
|
|
HaveDayTrade: false,
|
|
HavePosition: false,
|
|
HaveMarginAmount: false,
|
|
HavePayableFund: false,
|
|
HaveClosedPayableFund: false,
|
|
HaveTotalAsset: false,
|
|
HaveBanlance: false,
|
|
HaveTrade: false
|
|
};
|
|
|
|
|
|
_.forEach($("#PrewhereMode").val(), (v) => {
|
|
searchPostData[v] = true;
|
|
})
|
|
listGrid.appendPostData(searchPostData);
|
|
query_data = listGrid.jqGrid('getPostData');
|
|
|
|
if (isSearchclick) {
|
|
//点击搜索时默认第一页
|
|
listGrid.jqGrid('setGridParam', { page: 1 });
|
|
}
|
|
listGrid.trigger('reloadGrid');
|
|
}
|
|
|
|
function LoadGrid() {
|
|
jQuery('#listGrid').jqGrid('setGroupHeaders', {
|
|
useColSpanStyle: false,
|
|
groupHeaders: [
|
|
{ startColumnName: 'Number', numberOfColumns: 5, titleText: '<span class="listGroupHeader">客户信息</span>' },
|
|
{ startColumnName: page.isPvRounded ? 'RoundedPositionPnl' : 'PositionPnl', numberOfColumns: 3, titleText: '<span class="listGroupHeader">盈亏状况</span>' },
|
|
{ startColumnName: 'OpenPositionNum', numberOfColumns: 3, titleText: '<span class="listGroupHeader">交易数量统计</span>' }
|
|
]
|
|
});
|
|
|
|
}
|
|
|
|
function showcolumnChooser() {
|
|
main.showcolumnChooser2(jQuery('#listGrid'), page.configcolumn_name, { height: 620, dialog_opts: { height: 660 } }).done(function () {
|
|
window.location.reload();
|
|
});
|
|
}
|
|
|
|
function exportClientPnlInfoList() {
|
|
searchPostData = {
|
|
Number: $("#ClientNumber").val(),
|
|
ClientIds: $("#ClientIds").val(),
|
|
StartDate: $("#DateFromSettlement").val(),
|
|
ValueDate: $("#DateToSettlement").val(),
|
|
CustomerManagerIds: $("#CustomerManagerIds").val(),
|
|
IsSmallAndMicroEnterprises: $("#IsSmallAndMicroEnterprises").val(),
|
|
|
|
HaveDayTrade: false,
|
|
HavePosition: false,
|
|
HaveMarginAmount: false,
|
|
HavePayableFund: false,
|
|
HaveClosedPayableFund: false,
|
|
HaveTotalAsset: false,
|
|
HaveBanlance: false,
|
|
HaveTrade: false
|
|
};
|
|
|
|
_.forEach($("#PrewhereMode").val(), (v) => {
|
|
searchPostData[v] = true;
|
|
})
|
|
|
|
var selectedIds = $('#listGrid').jqGrid('getGridParam', 'selarrrow');
|
|
if (selectedIds.length > 0) {
|
|
var ors = [];
|
|
for (var i = 0; i < selectedIds.length; i++) {
|
|
var or = $('#listGrid').getRowData(selectedIds[i]).id;
|
|
ors.push(or);
|
|
}
|
|
searchPostData.ClientIds = ors;
|
|
}
|
|
|
|
main.post("/ClientPnlInfo/ClientPnlInfoExport", searchPostData).done(function (res) {
|
|
main.downloadFiles(res.obj);
|
|
});
|
|
parent.layer.closeAll();
|
|
}
|
|
|
|
|
|
|
|
function SendReport() {
|
|
var parames = new Array();
|
|
var selClientIds = jQuery('#listGrid').jqGrid('getGridParam', 'selarrrow');
|
|
var sendClients = selClientIds.length > 0 ? selClientIds:$("#ClientIds").val();
|
|
|
|
parames.push({ name: "ClientIds", value: sendClients });
|
|
parames.push({ name: "StartDate", value: $("#DateFromSettlement").val() });
|
|
parames.push({ name: "ValueDate", value: $("#DateToSettlement").val() });
|
|
|
|
_.forEach($("#PrewhereMode").val(), (v) => {
|
|
parames.push({ name: v, value: true });
|
|
})
|
|
Post("/ClientPnlInfo/ClientPnlInfoSend", parames);
|
|
}
|
|
function Post(URL, PARAMTERS) {
|
|
//创建form表单
|
|
var temp_form = document.createElement("form");
|
|
temp_form.action = URL;
|
|
//如需打开新窗口,form的target属性要设置为'_blank'
|
|
temp_form.target = "_blank";
|
|
temp_form.method = "post";
|
|
temp_form.style.display = "none";
|
|
//添加参数
|
|
for (var item in PARAMTERS) {
|
|
var opt = document.createElement("textarea");
|
|
opt.name = PARAMTERS[item].name;
|
|
opt.value = PARAMTERS[item].value;
|
|
temp_form.appendChild(opt);
|
|
}
|
|
document.body.appendChild(temp_form);
|
|
//提交数据
|
|
temp_form.submit();
|
|
}
|
|
</script>
|
|
}
|
|
<div class="searchdiv">
|
|
@Html.MyAceDropdownInput("ClientIds", "客户名称", CurUser.GetClientSelectItems(CurUser.交易管理_查看所有交易))
|
|
@Html.ShortInput("ClientNumber", "客户编号")
|
|
@Html.MyAceDropdownInput("IsSmallAndMicroEnterprises", "中小微企业", new List<SelectListItem>() { new SelectListItem() { Text = "是", Value = "1" }, new SelectListItem() { Text = "否", Value = "0" } }, false,true,null,false)
|
|
@Html.MyAceDropdownInput("CustomerManagerIds", "客户经理", ClientDataModel.GetAllCustomerManager())
|
|
<br />
|
|
@Html.SearchDateRange("Settlement", "结算日期")
|
|
|
|
@Html.MyAceDropdownInput("PrewhereMode", "预置条件",
|
|
new List<SelectListItem> {
|
|
new SelectListItem { Text = "有交易", Value = "HaveTrade" },
|
|
new SelectListItem { Text = "有持仓", Value = "HavePosition" },
|
|
new SelectListItem { Text = "有资金记录", Value = "HaveBanlance" } }, false)
|
|
|
|
@MyControls.SearchBtn()
|
|
@MyControls.Btn("导出", "exportClientPnlInfoList()")
|
|
@MyControls.Btn("发送报告", "SendReport()")
|
|
<div title="配置显示列" style="width:30px;display:inline;cursor:pointer;" onclick="showcolumnChooser();return false;">
|
|
<img alt="配置显示列" src="~/Images/configure.png" />
|
|
</div>
|
|
|
|
</div>
|
|
@Html.Raw(JqGridSimple.OutTable())
|
|
|
|
<form target="_blank" method="post" id="exportForm" action="">
|
|
<input type="hidden" name="" value="" />
|
|
</form> |