Files
zszq-trs/YLErpWeb/Views/entryexit/entryexitList.cshtml
T

782 lines
29 KiB
Plaintext

@using YLErp
@{
ViewBag.Title = "资金记录";
Layout = "~/Views/Shared/_MainLayout.cshtml";
var isCompanyCash = Context.Request.Query["isCompanyCash"].ToString() == "1";
var pageObj = new
{
showApprovalBtn = YLErp.PS.Config.ClientElement.InterfaceApprovalMode > 0 && CurUser.风险控制_接口审批列表,
canDelete = CurUser.结算管理_出入金删除
};
var stateList = ViewBag.stateList as List<string>;
}
@section CSS{
<link href="~/Style/Css/entryexitList.css" rel="stylesheet" />
<style>
.layui-layer-title { background: #09bbbc; color: #fff; }
</style>
}
@section JS{
<script>
const pageData = @Json.Serialize(pageObj);
</script>
<script type="text/javascript">
var g_grid = {};
var isCompanyCash = "@(isCompanyCash)" == "True";
$(function () {
function keyEnter(event) {
try {
var e = event ? event : (window.event ? window.event : null);
(e.keyCode == 13) && SearchClick(true);
} catch (e) { }
}
$(".datepicker").datepicker({
changeMonth: true,
changeYear: true,
showButtonPanel: true,
showOtherMonths: true,
selectOtherMonths: true
});
initListGrid();
document.onkeydown = keyEnter;
SetAceDropDown();
$("#DirectionType").attr("data-placeholder", "请选择 资金类型").trigger("chosen:updated");
});
function initListGrid() {
var PostData = {
TradeAction: isCompanyCash ? "@ClientCashInCashOut.人工操作_预付金" : ""
};
if (!isCompanyCash) {
// PostData.DirectionTypes = "出金,入金,权利金支出,权利金收入,平仓/行权支出,平仓/行权收入,票息支出,票息收入,其他支出,其他收入,互换收入,互换支出";
} else {
PostData.InOut = "应收,应付";
}
var grid = jQuery('#listGrid').jqGrid({
url: '/entryexit/entryexitQuery',
datatype: 'json',
multiselect: true,
height: 'auto',
width: '96%',
autowidth: false,
shrinkToFit: false,
viewrecords: true,
jsonReader: { repeatitems: false },
caption: '',
mtype: 'POST',
cmTemplate: { align: 'center', width: 120 },
postData: PostData,
onSelectRow: rowclick,
onSelectAll: allRowSelect,
ondblClickRow: rowdblclick,
colModel: colModelGrid,
pager: jQuery('#pagerGrid'),
pagerpos: 'left',
rowNum: 20,
rowList: [20, 30, 50, 200, 10000],
footerrow: true,
//userDataOnFooter: true,
loadComplete: gridComplete,
onPaging: onJqgridPaging,
grouping: true
});
g_grid = jQuery('#listGrid');
}
var colModelGrid;
if (!isCompanyCash) {
colModelGrid = [
{
name: 'id',
hidden: true,
optionHide: true
}, {
name: 'EncryptId',
hidden: true,
optionHide: true
}, {
name: 'TradeId',
hidden: true,
optionHide: true
}, {
name: 'OptDate',
label: '操作时间',
index: 'OptDate',
width: 135,
align: 'center'
}, {
name: 'HappenDate',
label: '发生时间',
index: 'HappenDate',
width: 135,
align: 'center',
formatter: "datetime"
}, {
name: 'Number',
label: '资金编号',
index: 'Number',
width: 150,
align: 'center'
}, {
name: 'ClientName',
label: '客户名称',
index: 'ClientName',
sortable: false,
width: 150,
align: 'center'
}, {
name: 'Direction',
label: '方向类型',
index: 'Direction',
width: 150,
align: 'center',
formatter: directionType
}, {
name: 'cash_type',
label: '账户类型',
index: 'cash_type',
width: 150,
align: 'center'
}, {
name: 'Money',
label: '金额',
index: 'Money',
width: 150,
align: 'right',
formatter: moneyFormat
}, {
name: 'CurrencyCode',
label: '币种',
index: 'CurrencyCode',
width: 150,
align: 'center'
}, {
name: 'TradeNumber',
label: '相关交易',
index: 'TradeNumber',
width: 150,
align: 'center',
formatter: tradeNumberFormat
}, {
name: 'UnderlyingCode',
label: '标的代码',
index: 'UnderlyingCode',
width: 150,
align: 'center'
}, {
name: 'State',
label: '资金状态',
index: 'State',
width: 80,
align: 'center'
}, {
name: 'OptName',
label: '操作人',
index: 'OptName',
width: 135,
align: 'center'
}, {
name: 'CreatorName',
label: '创建人',
index: 'CreatorName',
width: 135,
align: 'center'
}, {
name: 'Comments',
label: '备注',
index: 'Comments',
width: 150,
align: 'center',
formatter: function (cellValue, options, rowObject) {
if (cellValue && cellValue.startsWith("http://")) {
return "<a href='{0}' style='text-decoration:underline;' target='_blank'>{0}</a>".template(cellValue);
}
return cellValue;
}
}, {
name: '',
label: '操作',
index: '',
width: 165,
align: 'center',
formatter: customButton
}
];
} else {
colModelGrid = [
{
name: 'id',
hidden: true,
optionHide: true
}, {
name: 'EncryptId',
hidden: true,
optionHide: true
}, {
name: 'TradeId',
hidden: true,
optionHide: true
}, {
name: 'OptDate',
label: '操作时间',
index: 'OptDate',
width: 135,
align: 'center'
}, {
name: 'HappenDate',
label: '发生时间',
index: 'HappenDate',
width: 135,
align: 'center',
formatter: "datetime"
}, {
name: 'Number',
label: '资金编号',
index: 'Number',
width: 150,
align: 'center'
}, {
name: 'ClientName',
label: '客户名称',
index: 'ClientName',
width: 150,
align: 'center'
}, {
name: 'Direction',
label: '应收/应付',
index: 'Direction',
width: 150,
align: 'center',
formatter: showARAPDesc
}, {
name: 'Action',
label: '用途',
index: 'Action',
width: 150,
align: 'center',
formatter: function (cellValue, options, rowObject) {
return cellValue.replace("人工操作-", "");
}
}, {
name: 'Money',
label: '金额',
index: 'Money',
width: 150,
align: 'right',
formatter: moneyFormat,
summaryType: 'sum',
summaryTpl: '<b>{0}</b>'
}, {
name: 'TradeNumber',
label: '相关交易',
index: 'TradeNumber',
width: 150,
align: 'center',
formatter: tradeNumberFormat
}, {
name: 'UnderlyingCode',
label: '标的代码',
index: 'UnderlyingCode',
width: 150,
align: 'center'
}, {
name: 'State',
label: '资金状态',
index: 'State',
width: 80,
align: 'center'
}, {
name: 'OptName',
label: '操作人',
index: 'OptName',
width: 135,
align: 'center'
}, {
name: 'CreatorName',
label: '创建人',
index: 'CreatorName',
width: 135,
align: 'center'
}, {
name: 'Comments',
label: '备注',
index: 'Comments',
width: 150,
align: 'center'
}
];
}
colModelGrid.push({
name: 'EncryptTradeId',
hidden: true,
optionHide: true
});
function gridComplete() {
var jgrid = $(this);
var rowNum = parseInt(jgrid.getGridParam('records'), 10);
if (rowNum > 0) {
$(".ui-jqgrid-sdiv").show();
var totalMoneySum = arguments[0].Sum && arguments[0].Sum.MoneySum ? arguments[0].Sum.MoneySum : 0;
jgrid.footerData("set", { 'Money': totalMoneySum });
} else {
$(".ui-jqgrid-sdiv").hide();
}
}
function rowdblclick(rowid) {
var rowData = $(this).getRowData(rowid);
startentryexitView(rowData.EncryptId);
}
function starttradeView(id, TradeType) {
if (TradeType == "收益互换") {
let srcurl = "/swaptrade2/tradeView/?fromZiJinMingXi=1&isOnlyCloseButton=true&enid=" + id;
main.open("查看交易(机构方向)", srcurl, { area: ['90%', '90%']});
} else {
let srcurl = "/trade/tradeView/?fromZiJinMingXi=1&isOnlyCloseButton=true&enid=" + id;
main.open("查看交易(机构方向)", srcurl, { area: ['1260px', '100%'], scrollbar: false });
}
}
function tradeNumberFormat(cellValue, options, rowObject) {
return `<a href="javascript:void(0)" style="text-decoration:underline" onclick="starttradeView('${rowObject.EncryptTradeId}','${rowObject.TradeType}')">${cellValue}</a>`;
}
function moneyFormat(cellValue, options, rowObject) {
if (rowObject.Direction == "出金") {
return numeral(-1 * cellValue).format("0,0.00") === 'NaN' ? "0" : numeral(-1 * cellValue).format("0,0.00");
}
else {
return numeral(cellValue).format("0,0.000") === 'NaN' ? "0" : numeral(cellValue).format("0,0.000");
}
}
function directionType(cellValue, options, rowObject) {
if (rowObject.CashFlag == 21) {
return "调入";
}
if (rowObject.CashFlag == 121) {
return "调出";
}
if (cellValue == "应收") {
var action = "";
if (rowObject.Action == "系统操作-平仓费" || rowObject.Action == "系统操作-行权费") {
action = "平仓/行权";
} else if (rowObject.Action == "系统操作-期权费") {
action = "权利金";
} else if (rowObject.Action == "系统操作-票息") {
action = "票息";
}
else if (rowObject.Action == "系统操作-互换") {
action = "互换"
}
else if (rowObject.Action == "系统操作-应付预付金") {
action = "应付预付金";
}
else if (rowObject.Action == "系统操作-预付金返息") {
action = "预付金返息";
}
else if (rowObject.Action == "系统操作-追加保证金") {
//阶段四 §4.1 合约维度 EOD 结算产生的追保入金
action = "追加保证金";
}
if (action) {
return `${action}${parseFloat(rowObject.Money) > 0 ? "收入" : "支出"}`;
}
}
return cellValue;
}
function customButton(cellValue, options, rowObject) {
var imageHtml = "";
if ((rowObject.Direction == "出金" || rowObject.Direction == "入金" || rowObject.Direction == "其他收入" || rowObject.Direction == "其他支出"|| rowObject.Direction == "划转") && pageData.canDelete && rowObject.TradeNumber == "" && rowObject.ApprovalProcess < 1) {
imageHtml = imageHtml + "<input type=\"button\" value=\"删除\" class=\"wentiEdit\" onclick=\"deleteentryexit('" +
rowObject.EncryptId +
"');\" />";
}
imageHtml = imageHtml + "<input type=\"button\" value=\"查看\" class=\"wentiEdit\" onclick=\"startentryexitView('" +
rowObject.EncryptId +
"');\" />";
if (pageData.showApprovalBtn) {
imageHtml = imageHtml +
"<input type=\"button\" class=\"wentiEdit\" title='匹配接口审批记录' onclick=\"approvalList('{0}')\" value=\"{1}\" />"
.template(rowObject.Number, "匹配审批");
}
return imageHtml;
}
function approvalList(name) {
main.open("审批记录", "/trade/InterfaceApprovalRecord?type=3&code=" + name, { area: ["1200px", "600px"] });
}
function ClientCashLogList(id) {
var url = "/entryexit/ClientCashLogList?id=" + id;
main.open("历史记录", url, { area: ['1300px', '85%'] });
}
function deleteentryexit(encryptId) {
if (confirm("确定删除吗?")) {
$.ajax({
type: "Post",
url: "/entryexit/Deleteentryexit",
data: { id: encryptId, d: new Date() },
success: function (data) {
showmiddlemessage(data.msg);
if (data.success == true) {
$('#listGrid').trigger('reloadGrid');
}
},
error: function (msg) {
alert("error:" + msg);
}
});
}
}
function showToolName(cellValue, options, rowObject) {
var html = "";
if (pageData.canDelete) {
html += "<input type=\"button\" class=\"wentiEdit\" title='查看出入金(现金)信息' onclick=\"startentryexitView('{0}')\" value=\"{1}\" />"
.template(rowObject.EncryptId, "查看");
}
@if (CurUser.结算管理_生成出金单)
{
<text>
if (rowObject.CanGenerateExit) {
html += "<input type=\"button\" class=\"generateExit\" style='margin-left:10px' title='生成出金单' onclick=\"generateExit('{0}')\" value=\"{1}\" />"
.template(rowObject.EncryptId, "生成出金单");
}
</text>
}
return html;
}
function showARAPDesc(cellValue, options, rowObject) {
return rowObject.Money > 0 ? "应收" : "应付";
}
function generateExit(enid) {
main.post("/entryexit/OutEntryexitSW",
{
enid: enid
})
.done(function (data) {
main.downloadFiles(data.obj);
});
}
function setFooter() {
var rowObjs = main.GetGridObjs($("#listGrid"));
var moneySum = 0;
rowObjs.forEach(obj => {
moneySum += numeral(obj.Money).value();
});
$("#listGrid").footerData("set", { HappenDate: "合计:", Money: moneySum });
}
function rowclick(id) {
setFooter();
}
function allRowSelect(rowids, status) {
setFooter();
}
function startAddentryexit() {
var addurl = "/entryexit/entryexitEdit/0";
if (isCompanyCash) {
addurl += "?isCompanyCash=1";
}
main.open("新增资金记录", addurl, { area: ['1000px', '95%'] });
}
function Entryexit_remove() {
var url = "/entryexit/entryexitRemove";
main.open("已删除资金记录", url, { area: ['1000px', '75%'] });
}
function startentryexitView(id) {
var srcurl = "/entryexit/entryexitView/?enid=" + id;
main.open("查看资金信息", srcurl, { area: ['1000px', '95%'] });
}
function reloadentryexit() {
//重新加载
SearchClick();
}
function setExcute() {
var ggrid = jQuery('#listGrid');
var ors = main.GetGridIds(ggrid);
var needConfirmDate = false;
var hasExecutedOrRejectedRecords = false;
var hasTradeId = false;
if (ors.length == 0) {
main.message("请选中至少一条出入金信息");
return;
}
var obj = main.GetGridObjs(ggrid);
var currentDate = new Date().Format('yyyy-MM-dd HH:mm:ss');
for (var i = 0; i < obj.length; i++) {
var happenDate = obj[i].HappenDate;
if (happenDate > currentDate) {
needConfirmDate = true;
}
if (obj[i].State == "@ClientCashInCashOut.已确认" || obj[i].State == "@ClientCashInCashOut.拒绝" || obj[i].State == "@ClientCashInCashOut.已结算" || obj[i].State == "@ClientCashInCashOut.撤回") {
hasExecutedOrRejectedRecords = true;
}
if (obj[i].TradeId > 0) {
hasTradeId = true;
}
}
if (hasTradeId) {
main.message("和交易挂钩的资金记录不可以在该页面确认!");
return;
}
if (hasExecutedOrRejectedRecords) {
main.message("已撤回、已确认、拒绝、已结算的记录不能再次确认!");
return;
}
if (needConfirmDate) {
if (confirm("出入金交易日期晚于当前时间,确定确认该记录?")) {
main.post("/entryexit/excute", { ids: ors }).done(function () {
reloadentryexit();
});
}
} else {
main.post("/entryexit/excute", { ids: ors }).done(function () {
reloadentryexit();
});
}
}
function setReject() {
var ggrid = jQuery('#listGrid');
var ors = main.GetGridIds(ggrid);
var hasExecutedOrRejectedRecords = false;
var hasTradeId = false;
if (ors.length == 0) {
main.message("请选中至少一条出入金信息");
return;
}
var obj = main.GetGridObjs(ggrid);
for (var i = 0; i < obj.length; i++) {
if (obj[i].State == "@ClientCashInCashOut.已确认" || obj[i].State == "@ClientCashInCashOut.拒绝" || obj[i].State == "@ClientCashInCashOut.已结算" || obj[i].State == "@ClientCashInCashOut.撤回") {
hasExecutedOrRejectedRecords = true;
}
if (obj[i].TradeId > 0) {
hasTradeId = true;
}
}
if (hasTradeId) {
main.message("和交易挂钩的资金记录不可以在该页面确认!");
return;
}
if (hasExecutedOrRejectedRecords) {
main.message("已撤回、已确认、拒绝、已结算的记录不能再次拒绝!");
return;
}
main.post("/entryexit/reject", { ids: ors }).done(function () {
reloadentryexit();
});
}
function SearchClick(isSearchclick) {
var listGrid = $('#listGrid');
if (!isCompanyCash) {
listGrid.appendPostData({
DirectionTypes: $("#DirectionType").val() == null || $("#DirectionType").val() == undefined
? "出金,入金,权利金支出,权利金收入,平仓/行权支出,平仓/行权收入,票息支出,票息收入,其他支出,其他收入,互换收入,互换支出"
: $("#DirectionType").val().join()
});
} else {
listGrid.appendPostData({
InOut: $("#InOut").val() == null || $("#InOut").val() == undefined
? "应收,应付"
: $("#InOut").val().join()
});
}
listGrid.appendPostData({ Number: $("#Number").val() });
listGrid.appendPostData({ TradeNumber: $("#TradeNumber").val() });
listGrid.appendPostData({ ClientIds: $("#ClientId").val() == null ? "" : $("#ClientId").val().join() });
listGrid.appendPostData({ ClientNumber: $("#ClientNumber").val() });
listGrid.appendPostData({ ClientName: $("#ClientName").val() });
listGrid.appendPostData({ Money: $("#Money").val() });
listGrid.appendPostData({ HappenDateStart: $("#DateFromHappenDate").val() });
listGrid.appendPostData({ HappenDateEnd: $("#DateToHappenDate").val() });
listGrid.appendPostData({ State: $("#State").val() == null ? "" : $("#State").val().join() });
listGrid.appendPostData({ OpenBankId: $("#OpenBankId").val() });
listGrid.appendPostData({ OpenBankCard: $("#OpenBankCard").val() });
listGrid.appendPostData({ OptName: $("#OptName").val() });
listGrid.appendPostData({ OptNames: !$("#OptNames").val() ? "" : $("#OptNames").val().join(",") });
listGrid.appendPostData({ OptDateStart: $("#DateFromOptDate").val() });
listGrid.appendPostData({ OptDateEnd: $("#DateToOptDate").val() });
if (typeof (isSearchclick) != "undefined" && isSearchclick) {
//点击搜索时默认第一页
listGrid.jqGrid('setGridParam',
{
page: 1
});
}
listGrid.trigger('reloadGrid');
}
function uploadEntryexit() {
var srcurl = "/entryexit/entryexitUpload";
main.open("上传出入金", srcurl, { area: ['65%', '75%'] });
}
function downEntryexit() {
var dateTemp = new Date().Format("yyyyMMddhhmmss");
var fileName = "导出出入金" + "_" + dateTemp;
main.toExcel("listGrid",
fileName,
"xls",
null,
"操作",
[
{
colName: "资金编号",
formatter: "text"
}, {
colName: "备注",
formatter: "text"
}
]);
}
function downloadCashInfo() {
exportSubmit('/SwapTrade/ExportTradeCashInfo');
}
function exportSubmit(url) {
var $form = $('#exportForm').html('');
$form.attr("action", url)
$form.submit();
}
function getBankCashFlow() {
var beginDate = $("#DateFromHappenDate").val();
var endDate = $("#DateToHappenDate").val();
var clientId = $("#ClientId").val();
if (!beginDate || !endDate) {
main.message("请选择发生时间范围");
return;
}
function formatDate(dateStr) {
if (!dateStr) return "";
var date = new Date(dateStr);
var year = date.getFullYear();
var month = ("0" + (date.getMonth() + 1)).slice(-2);
var day = ("0" + date.getDate()).slice(-2);
return year + month + day;
}
main.post("/entryexit/GetBankCashFlow", {
clientId: clientId ? clientId[0] : null,
account: "",
beginDate: formatDate(beginDate),
endDate: formatDate(endDate)
}).done(function (data) {
if (data.success) {
main.message("获取银行流水成功");
console.log(data.obj);
} else {
main.message(data.msg);
}
}).fail(function (error) {
main.message("获取银行流水失败:" + error.responseText);
});
}
</script>
}
@*<div class="tabbable">
<ul id="myTab" class="nav nav-tabs nav-main">
<li class="nav-item">
<a class="nav-link @(isCompanyCash?"":"active")" href="/entryexit/entryexitList">客户资金</a>
</li>
</ul>
</div>*@
<div class="searchdiv mt-0">
@Html.SearchDateRange("HappenDate", "发生时间")
@Html.MyAceDropdownInput("ClientId", "客户名称", CurUser.GetClientSelectItems())
@Html.ShortInput("TradeNumber", "交易编号")
@Html.ShortInput("Number", "资金编号")
@if (!isCompanyCash)
{
@Html.MyAceDropdownInput("DirectionType", "方向类型", GlobalData.GetSelectItems(EntryExitBLL.DirectionType))
}
else
{
@Html.MyAceDropdownInput("InOut", "应收应付", new List<SelectListItem>() { new SelectListItem() { Text = "应收", Value = "应收" }, new SelectListItem() { Text = "应付", Value = "应付" } })
}
@Html.MyAceDropdownInput("State", "资金状态", GlobalData.GetSelectItems(stateList))
@Html.MyAceDropdownInput("OptNames", "操作人", GlobalData.GetAllUser())
@MyControls.SearchBtn()
<div class="d-inline-block">
<div style="display: inline; margin-right: 100px;">
@if (CurUser.结算管理_出入金新增)
{
if (!isCompanyCash)
{
@MyControls.Btn("导入", "uploadEntryexit()")
}
}
@MyControls.Btn("导出", "downEntryexit()")
@MyControls.Btn("获取银行流水", "getBankCashFlow()")
</div>
<div style="display:inline;margin-right:100px;">
@if (CurUser.结算管理_出入金新增)
{
@MyControls.Btn("新增", "startAddentryexit()")
}
@if (YLErp.PS.Config.ClientElement.InterfaceApprovalMode == 0)
{
if (CurUser.结算管理_出入金执行)
{
@MyControls.Btn("确认", "setExcute()")
}
if (CurUser.结算管理_出入金拒绝)
{
@MyControls.Btn("拒绝", "setReject()")
}
}
</div>
</div>
</div>
@Html.Raw(JqGridSimple.OutTable())
<form target="_blank" method="post" id="exportForm" action="">
<input type="hidden" name="" value="" />
</form>