var valuedate = page.valuedate; var ContractTypeCtrl; var ReportId; const colModelGrid = (new function () { var i = 0; this.colModels = [ { name: 'id', label: 'id', index: 'id', sortIndex: i++, hidden: true, optionHide: true }, { name: '', label: '操作', width: 450, align: 'left', formatter: showToolName }, { name: 'MetaDic.send_email_result', label: '邮件状态', index: 'MetaDic.send_email_result', sortIndex: i++, width: 70, align: 'left', sortable: false, formatter: function (cellValue, options, rowObject) { var html = ""; html += "{1}".template(rowObject.id, rowObject.MetaDic.send_email_result); return html; } }, { name: 'EncryptId', hidden: true, optionHide: true }, { name: 'ClientId', hidden: true, optionHide: true }, { name: 'UnderlyingId', hidden: true, optionHide: true }, { name: 'TradePrice', hidden: true, optionHide: true }, { name: 'TradeSinglePrice', hidden: true, optionHide: true }, { name: 'MetaDic', hidden: true, optionHide: true }, { name: 'MetaDic.ContractRId', hidden: true, optionHide: true }, { name: 'TradeStatus', label: '交易状态', index: 'TradeStatus', sortIndex: i++, width: 70, align: 'left' }, { name: 'TradeNumber', label: '交易编号', index: 'TradeNumber', sortIndex: i++, width: 200, align: 'left' }, { name: 'ContractCode', label: page.isGuoLian === true ? '交易确认书编号' : '合约编号', index: 'ContractCode', sortIndex: i++, width: 200, align: 'left', sortable: false, formatter: function (cellValue, options, rowObject) { var html = ""; if (cellValue) { html += ""; } else { html = ""; } return html; } }, { name: 'ClientName', label: '客户名称', index: 'ClientName', sortIndex: i++, width: 180, align: 'left' }, { name: 'OriginalStockEqvNotional', label: '名义本金', index: 'OriginalStockEqvNotional', sortIndex: i++, width: 120, align: 'left', formatter: otcformat.trading.StockEqvNotional }, { name: 'TradeDate', label: '交易日期', index: 'TradeDate', sortIndex: i++, width: 90, align: 'left', formatter: 'date' //}, { // name: 'BuySell', // label: '交易方向', // index: 'BuySell', // sortIndex: i++, // width: 70, // align: 'left' }, { name: 'UnderlyingCode', label: '标的代码', index: 'UnderlyingCode', sortIndex: i++, width: 60, align: 'left', formatter: ShowStructFormater }, { name: 'UnderlyingAssetClass', label: '标的品种', index: 'UnderlyingAssetClass', sortIndex: i++, width: 70, align: 'left' }, { name: 'TradeType', label: '结构类型', index: 'TradeType', sortIndex: i++, width: 70, align: 'left', formatter: function (cellvalue, options, rowObject) { return rowObject.StructureType && rowObject.IsGroup != 2 ? rowObject.StructureType : rowObject.TradeType; } //}, { // name: 'OptionType', // label: '看涨看跌', // index: 'OptionType', // sortIndex: i++, // width: 70, // align: 'left' //}, { // name: 'ExerciseModeCn', // label: '行权方式', // index: 'ExerciseModeCn', // sortIndex: i++, // width: 70, // align: 'left', // sortable: false }, { name: 'ExerciseDate', label: '到期日期', index: 'ExerciseDate', sortIndex: i++, width: 90, align: 'left', formatter: 'date' //}, { // name: 'Strike', // label: '执行价格', // index: 'Strike', // sortIndex: i++, // width: 90, // align: 'left', // formatter: StrikeFormatter }, { name: 'AssetBookName', label: '簿记账户', index: 'AssetBookName', sortIndex: i++, width: 70, align: 'left' }, { name: 'StartDate', label: '开始日期', index: 'StartDate', sortIndex: i++, width: 90, align: 'left', formatter: 'date' //}, { // name: 'MaturityDate', // label: '标的到期日', // index: 'MaturityDate', // sortIndex: i++, // width: 90, // align: 'left', // formatter: 'date' }, { name: 'TraderName', label: '交易员', index: 'TraderName', sortIndex: i++, width: 70, align: 'left' }, { name: 'Comments', label: '备注', index: 'Comments', sortIndex: i++, width: 140, align: 'left' }, { name: 'OptName', label: '交易操作者', index: 'OptName', sortIndex: i++, width: 70, align: 'left' }, { name: 'OptDate', label: '交易操作时间', index: 'OptDate', sortIndex: i++, width: 150, align: 'left', formatter: 'datetime' }, { name: 'ConfirmBookOptName', label: '操作人', index: 'ConfirmBookOptName', width: 70, align: 'left', sortable: false, formatter: function (cellvalue, options, rowObject) { return rowObject.MetaDic.ConfirmBookOptName; } }, { name: 'ConfirmBookOptDate', label: '操作时间', index: 'ConfirmBookOptDate', width: 150, align: 'left', sortable: false, formatter: function (cellvalue, options, rowObject) { return rowObject.MetaDic.ConfirmBookOptDate; } }, { name: 'OAStatus', label: 'OA状态', index: 'OAStatus', width: 100, align: 'center', sortable: false, formatter: function (cellvalue, options, rowObject) { return rowObject.MetaDic.OAStatus || ''; } }, { name: 'OAURL', label: 'OA-URL', index: 'OAURL', width: 100, align: 'center', sortable: false, formatter: function (cellvalue, options, rowObject) { var url = rowObject.MetaDic.OAURL; if (url && url.length > 0) { return '查看'; } return ''; } }, { name: 'OAMessage', label: 'OA消息', index: 'OAMessage', width: 150, align: 'left', sortable: false, formatter: function (cellvalue, options, rowObject) { return rowObject.MetaDic.OAMessage || ''; } }, { name: 'SourceType', label: '是否对方用印', index: 'SourceType', width: 100, align: 'center', sortable: false, formatter: function (cellvalue, options, rowObject) { var st = rowObject.MetaDic.SourceType; if (st === '2') { return '是'; } return '否'; } } ]; this.setControl = function (encryptId) { var button = "#bt_" + encryptId; var inputSelect = "#ip_" + encryptId; var contractCodeName = page.isGuoLian === true ? "交易确认书编号" : "合约编号"; if ($(inputSelect).prop("disabled")) { $(inputSelect).prop("disabled", false); $(button).prop("title", "保存" + contractCodeName); $(button).html(""); } else { this.changeCode(encryptId, $(inputSelect).val(), function () { $(button).html(""); $(inputSelect).prop("disabled", true); $(button).prop("title", "修改" + contractCodeName); }); } } this.changeCode = function (encryptId, code, callback) { var data = new FormData(); data.append("encryptId", encryptId); data.append("ContractCode", code); $.ajax({ type: "Post", //async: false, url: "/trade/UploadContractFile", contentType: false, processData: false, data: data, success: function (res) { main.message(res.msg); if (!res.success) { } else { callback(); } }, beforeSend(jqXHR) { main.waitMe(true); }, complete(jqXHR, textStatus) { main.waitMe(false); } }); } this.upload = function (encryptId, sendMail) { var srcurl = "/TradeConfirmBook/confirmBookUpload/?Id=" + encryptId + "&SendMailId=" + sendMail; main.open("上传确认书", srcurl, { area: ['500px', '420px'], end: function () { SearchClick(true) } }); } this.uploadNew = function (tradeId) { var srcurl = "/TradeConfirmBook/confirmBookUploadNew/?tradeId=" + tradeId; main.open("上传确认书", srcurl, { area: ['500px', '420px'], end: function () { SearchClick(true) } }); } this.ViewErrInfo = function (code) { main.post("/trade/GetSealErrMsg/", { code: code }, { success: function (resp) { main.alert(resp.msg); } }); } if (page.ConfirmBookStampStatus) { var colObj = { name: 'StampScanFile', label: '用印扫描件', index: 'StampScanFile', width: 250, align: 'left', formatter: function (cellValue, options, rowObject) { var templateHtml = ""; if (page.IsAutoSealAndUploadFiles && !page.IsAutoSealAfterGeneratedBook) { templateHtml += ""; } var canGenerate = page.canGenerate == true ? "" : "disabled"; templateHtml += "" + ""; var html = (templateHtml) .template( (rowObject.MetaDic.ContractDocUrl ? 'onclick="colModelGrid.upload(\'{0}\',\'{1}\')"'.template(rowObject.MetaDic.ContractEncryptId, rowObject.EncryptId) : "disabled"), (rowObject.MetaDic.StampDocumentFileName ? 'onclick="main.downloadFiles(\'{0}\')"'.template(rowObject.MetaDic.StampDocumentFileName) : "disabled")); if (page.IsAutoSealAndUploadFiles && !page.IsAutoSealAfterGeneratedBook) { html = (templateHtml) .template( (rowObject.MetaDic.ContractDocUrl ? 'onclick="colModelGrid.upload(\'{0}\',\'{1}\')"'.template(rowObject.MetaDic.ContractEncryptId, rowObject.EncryptId) : "disabled"), (rowObject.MetaDic.StampDocumentFileName ? 'onclick="main.downloadFiles(\'{0}\')"'.template(rowObject.MetaDic.StampDocumentFileName) : "disabled"), ('onclick="SealContract(\'{0}\')"'.template(rowObject.MetaDic.ContractRId)) ); } if (rowObject.MetaDic.ContractDocUrl) { html = html + (rowObject.MetaDic.ContractStatus === "草稿" || !rowObject.MetaDic.ContractStatus ? "未用印" : rowObject.MetaDic.ContractStatus); } return html; } }; this.colModels.splice(2, 0, colObj); } if (page.IsAutoSealAndUploadFiles) { var colObj1 = { name: 'SealResult', label: '电子章用印结果', index: 'SealResult', width: 150, align: 'center', sortable: false, formatter: function (cellValue, options, rowObject) { if (rowObject.MetaDic.SealResult == "失败") { var html = ("失败<详情>") .template(rowObject.ContractCode); return html; } else { return rowObject.MetaDic.SealResult; } } }; var colObj2 = { name: 'SealTime', label: '电子章用印时间', index: 'SealTime', width: 150, align: 'left', sortable: false, formatter: function (cellValue, options, rowObject) { return rowObject.MetaDic.SealTime; } }; this.colModels.push(colObj1, colObj2); } }()); function __initJqGrid() { var PostData = { TradeStatus: page.reqTradeStatus, ValidState: $("#ValidState").val(), TradeDateStart: $("#DateFromTradeDate").val(), TradeDateEnd: $("#DateToTradeDate").val() }; if (page.IsAutoSealAndUploadFiles) { PostData.SealResults = $("#SealResults").val(); PostData.SealDateStart = $("#DateFromSealDate").val(); PostData.SealDateEnd = $("#DateToSealDate").val(); } var __jq = { AfterInsertRow: typeof AfterInsertRow !== 'undefined' ? AfterInsertRow : void 0, rowclick: typeof rowclick !== 'undefined' ? rowclick : void 0, rowdblclick: typeof rowdblclick !== 'undefined' ? rowdblclick : void 0, gridComplete: typeof gridComplete !== 'undefined' ? gridComplete : void 0, onJqgridPaging: typeof onJqgridPaging !== 'undefined' ? onJqgridPaging : void 0 }; var grid = jQuery('#listGrid').jqGrid({ url: page.isOptionPage ? '/TradeConfirmBook/OptionQuery' : (page.isSwapPage ? '/TradeConfirmBook/SwapQuery' : '/trade/tradeConfirmEmailQuery'), datatype: page.initEmptyView ? 'local' : 'json', height: 'auto', width: '90%', autowidth: false, shrinkToFit: false, viewrecords: true, jsonReader: { repeatitems: false }, cmTemplate: { align: 'center', width: 120 }, mtype: 'POST', postData: PostData, afterInsertRow: __jq.AfterInsertRow, onSelectRow: __jq.rowclick, ondblClickRow: __jq.rowdblclick, colModel: colModelGrid.colModels, pager: jQuery('#pagerGrid'), pagerpos: 'left', rowNum: 20, rowList: [20, 30, 50, 200, 10000], loadComplete: __jq.gridComplete, onPaging: __jq.onJqgridPaging, multiselect: !(page.SettleDocModeMultiple && page.BrokerMode) }); page.initEmptyView && jQuery("#listGrid").jqGrid('setGridParam', { datatype: 'json' }); } $(function () { $('#TradeStatus').css('width', '250px'); $("#DateFromTradeDate").datepicker({ changeMonth: true, changeYear: true, showButtonPanel: true, showOtherMonths: true, selectOtherMonths: true, onSelect: function (selectedDate) {//选择日期后执行的操作 setValidation("DateToTradeDate", selectedDate, false); } }); $("#DateToTradeDate").datepicker({ changeMonth: true, changeYear: true, showButtonPanel: true, showOtherMonths: true, selectOtherMonths: true, onSelect: function (selectedDate) {//选择日期后执行的操作 setValidation("DateFromTradeDate", selectedDate, true); } }); $("#DateToTradeDate").val(valuedate); if (!page.initEmptyView) { $("#DateFromTradeDate").val(valuedate); //$("#TradeStatus").val("确认成交"); //$("#TradeStatus").trigger("change"); } setValidation("DateFromTradeDate", $("#DateToTradeDate").val(), true); setValidation("DateToTradeDate", $("#DateFromTradeDate").val(), false); if (page.IsAutoSealAndUploadFiles) { $("#DateFromSealDate").datepicker({ changeMonth: true, changeYear: true, showButtonPanel: true, showOtherMonths: true, selectOtherMonths: true, onSelect: function (selectedDate) {//选择日期后执行的操作 setValidation("DateToSealDate", selectedDate, false); } }); $("#DateToSealDate").datepicker({ changeMonth: true, changeYear: true, showButtonPanel: true, showOtherMonths: true, selectOtherMonths: true, onSelect: function (selectedDate) {//选择日期后执行的操作 setValidation("DateFromSealDate", selectedDate, true); } }); $("#DateToSealDate").val(valuedate); $("#DateFromSealDate").val(valuedate); setValidation("DateFromSealDate", $("#DateToSealDate").val(), true); setValidation("DateToSealDate", $("#DateFromSealDate").val(), false); } $(".datepicker").datepicker({ changeMonth: true, changeYear: true, showButtonPanel: true, showOtherMonths: true, selectOtherMonths: true }); __initJqGrid(); document.onkeydown = function (event) { try { var e = event ? event : (window.event ? window.event : null); if (e.keyCode === 13) { SearchClick(true); } } catch (e) { // } }; let underlyingCtrl = new tradeHelper.UnderlyingSelectCtrl('#UnderlyingId').setFlag(tradeHelper.UnderlyingSelectFlag.OtcTrade); ContractTypeCtrl = new ContractTypeCtrl(document.getElementById('ContractTypeCtrl')); SendEmailHub(); SendOAHub(); $("#batchDownloadOA").click(function () { BatchDownloadOAFiles(); }); }); function gridComplete() { $(".selftooltip").tooltip({ html: true, show: 50000, trigger: "hover" }); main.setcolumnChooser(jQuery('#listGrid'), page.configcolumn); } function customButton(cellValue, options, rowObject) { var imageHtml = ""; return imageHtml; } function ShowStructFormater(cellValue, options, rowObject) { var html; //if (rowObject.TradeType === "结构化交易") { // html = "{0}" // .template(cellValue || '', setStructTable(rowObject)); // return html; //} if (rowObject.TradeType === "合成价差期权") { html = "{0}" .template(cellValue || '', rowObject.SyntheticUnderlyingTipsInfo); return html; } return cellValue || ''; } function setStructTable(rowObject) { structTrades = rowObject.SubTrades; var trhtml = ""; var trcode = "标的代码{1}".template(structTrades.length, rowObject.UnderlyingCode); var trstrike = "执行价格"; var trbuysell = "买卖方向"; var trvarity = "结构类型{1}".template(structTrades.length, rowObject.StructureType); var trstockeqvnotional = "名义本金{1}".template(structTrades.length, (new Number(rowObject.StockEqvNotional) / 10000).toFixed(2) + "万"); var trmaturedate = "到期日期{1}".template(structTrades.length, moment(rowObject.ExerciseDate).format("YYYY-MM-DD")); if (structTrades) { for (var i = 0; i < structTrades.length; i++) { trstrike += "{0}".template(structTrades[i].IsMoneynessOption === "是" ? (new Number(structTrades[i].Strike) * 100).toFixed(2) + "%" : structTrades[i].Strike); trbuysell += "{0}".template(structTrades[i].BuySell); } } trhtml = "{0}".template(trcode); trhtml += "{0}".template(trstrike); trhtml += "{0}".template(trbuysell); trhtml += "{0}".template(trstockeqvnotional); trhtml += "{0}".template(trmaturedate); trhtml += "{0}".template(trvarity); var showTable = "{0}
".template(trhtml); return showTable; } function StrikeFormatter(cellValue, options, rowObject) { if (rowObject.Strike) { if (rowObject.IsMoneynessOption === "是") { return otcformat.trading.premiumRateP(rowObject.Strike); } else { return otcformat.trading.umprice(rowObject.Strike); } } else { return ""; } } //下载交易确认书 function DownLoadDoc(res) { if (isExistFile(res)) { window.open(res); } else { res += "x"; if (isExistFile(res)) { window.open(res); } else { main.confirm("文件不存在"); } } } //判断文件是否存在 function isExistFile(url) { var result = false; main.post("/TradeConfirmBook/ExistFile", { filePath: url }, { async: false }).done(function (res) { if (res && res.obj) { result = true; } }); return result; } //批量下载OA用印文件 function BatchDownloadOAFiles() { var jgrid = jQuery('#listGrid'); var tradeIdList = main.GetGridIds(jgrid); if (tradeIdList.length == 0) { main.alert("请至少选择一笔交易"); return; } var confirmBookPostData = { tradeIds: tradeIdList, docpdf: ["DOC", "PDF"], IsSeal: true, DocType: "交易确认书" }; openWindowWithPost("/trade/BatchDownLoadDoc/", confirmBookPostData); } //批量下载交易确认书 function BatchDownLoadDoc() { var startDate = $("#DateFromTradeDate").val(); var endDate = $("#DateToTradeDate").val(); var clientIds = $("#ClientId").val(); var tradeids = ""; var jgrid = jQuery('#listGrid'); var tradeIdList = main.GetGridIds(jgrid); tradeids = tradeIdList.join(","); var tip = "下载" + startDate + "至" + endDate + "的交易确认书"; if (tradeids) { tip = "下载所有已勾选的交易确认书"; } var htmlContent = '' + '
' + '
' + '' + '' + ''; main.open2("批量下载交易确认书", htmlContent + '
', { area: ["400px", "250px"], btn: ['下载', '取消'], yes: function (index, layero) { var docpdf = []; $('input[name="docType"]:checked').each(function (i) { docpdf.push($(this).val()) }) var confirmBookPostData = { TradeDateStart: startDate, TradeDateEnd: endDate, ClientIds: clientIds, TradeIds: tradeIdList, TradeCashIds: null, DocType: "交易确认书", docpdf: docpdf, IsSeal: false }; if (page.IsAutoSealAndUploadFiles) { confirmBookPostData.SealResults = $("#SealResults").val(); //confirmBookPostData.SealDateStart = $("#DateFromSealDate").val(); //confirmBookPostData.SealDateEnd = $("#DateToSealDate").val(); } openWindowWithPost("/trade/BatchDownLoadDoc/", confirmBookPostData); parent.layer.closeAll(); }, cancel: function (index, layero) { parent.layer.closeAll(); }, success: function (layero, index) { $(".btn-group").on("click", ".btn", function (event) { $('input[name="docType"]:checked').prop("checked", false); $(this).children("input").prop("checked", true); }); } }); } function openWindowWithPost(url, data) { var form = document.createElement("form"); form.target = "_blank"; form.method = "POST"; form.action = url; form.style.display = "none"; for (var key in data) { if (data[key] instanceof Array) { if (data[key].length === 0) { var input = document.createElement("input"); input.type = "hidden"; input.name = key; input.value = null; form.appendChild(input); } else { data[key].forEach((item, index, array) => { var input = document.createElement("input"); input.type = "hidden"; input.name = key; input.value = data[key][index]; form.appendChild(input); }); } } else { var input1 = document.createElement("input"); input1.type = "hidden"; input1.name = key; input1.value = data[key]; form.appendChild(input1); } } document.body.appendChild(form); form.submit(); document.body.removeChild(form); } function rowdblclick(rowid) { var rowData = $(this).getRowData(rowid); var tradeType = rowData.TradeType; starttradeView(rowData.EncryptId, tradeType); } function toPdf(id) { main.post("/TradeConfirmBook/ToPdf/", { enid: id }).done(function (res) { // var arr = res.split(/[\\,/,//]/); // var fileName = arr[arr.length - 1]; // var a = document.getElementById("downPdf"); // a.href = res; // a.download = fileName; // a.click(); window.open(res); SearchClick(true); }); } function BatchCreateContracts() { var jgrid = jQuery('#listGrid'); var tradeIds = main.GetGridIds(jgrid); if (tradeIds.length == 0) { main.alert("请至少选择一笔交易"); return; } main.confirm("确认为所勾选的交易生成交易确认书?", function () { gJGenerateConfirmBook(); }); } function BatchDownloadContracts() { var tradeids = ""; var jgrid = jQuery('#listGrid'); var tradeIds = main.GetGridIds(jgrid); if (tradeIds.length == 0) { main.alert("请至少选择一笔交易"); return; } var postData = { TradeIds: tradeIds.join(',') }; main.post("/TradeConfirmBook/BatchDownContracts/", postData).done(function (res) { if (res.success) { window.open(res.obj); } else { main.alert(res.msg.replace("\r\n", "
")); } }); } function sendReport() { if (ReportId) { var contractTypes = ContractTypeCtrl.getValue(); var mailPostData = { enid: ReportId, reciver: contractTypes }; //if (page.IsAutoSealAndUploadFiles) { // mailPostData.sealResults = $("#SealResults").val(); //} main.post("/TradeConfirmBook/SentMail/", mailPostData).done( function (res) { console.log(res); SearchClick(true); } ); } else { var listGrid = $('#listGrid'); var postData = listGrid.getPostData(); var ors = main.GetGridIds(listGrid); postData.TradeIds = ors.join(','); var contractTypes = ContractTypeCtrl.getValue(); postData["receiver"] = contractTypes; main.post("/TradeConfirmBook/BatchMailContracts/", postData).done(function (res) { SearchClick(true); }); } $("#modalChooseContractType").modal('hide'); } function BatchMailContracts() { ReportId = undefined; var clientIds = $("#ClientId").val(); ContractTypeCtrl.changeContractType(clientIds); $("#modalChooseContractType").modal('show'); } function SealContract(id) { var ids = []; ids.push(id); main.post("/trade/IsContractGenerated/", { ids: ids, types: ["交易确认书"] }).done(function (res) { if (res.success) { main.post("/trade/SealContracts/", { ids: ids, types: ["交易确认书"] }).done(function (resp) { if (resp.success) { SearchClick(true); } }); } }).fail(function (res) { }); } function BatchSealContracts() { var jgrid = jQuery('#listGrid'); var ids = main.GetGridIds(jgrid, "MetaDic.ContractRId"); if (ids.length == 0) { main.alert("请至少选择一笔交易"); return; } main.post("/trade/IsContractGenerated/", { ids: ids, types: ["交易确认书"] }).done(function (res) { if (res.success) { main.post("/trade/SealContracts/", { ids: ids, types: ["交易确认书"] }).done(function (res) { if (res.success) { SearchClick(true); } }); } }).fail(function (res) { }); } function sentMail(tradeid, clientid) { main.post("/swaptrade2/SendConfimEmail?tradeId=" + tradeid).done(function (res) { if (res.success) { SearchClick(true); } }); } function showDownload(cellvalue, options, rowObject) { var html = ""; if (rowObject.MetaDic.ContractDocUrl) { html += "" .template(rowObject.MetaDic.ContractDocUrl, "下载"); } else { html += "" .template(rowObject.MetaDic.ContractDocUrl, "下载"); } return html; } function showToolName(cellValue, options, rowObject) { var sentMailCount = rowObject.SentMailCount; if (!sentMailCount) { sentMailCount = 0; } var html = showDownload(cellValue, options, rowObject); var title = page.IsAutoSealAndUploadFiles && page.IsAutoSealAfterGeneratedBook ? "生成并用印" : "生成确认书"; // 仅国联收益互换允许在审批前生成确认书,其他交易保持原限制。 var isUnconfirmed = rowObject.TradeStatus === "新增待确认" || rowObject.TradeStatus === "修改待确认" || rowObject.TradeStatus === "审批中"; var isGuolianSwap = page.isGuoLian === true && rowObject.TradeType === "收益互换"; var canGenerate = page.canGenerate == true && (!isUnconfirmed || isGuolianSwap) ? "" : "disabled"; var isWait = (rowObject.MetaDic.SealResult == "用印等待中"); html += "".template(rowObject.id, rowObject.MetaDic.HasGeneratedConfirmBook == "True", title, isWait, canGenerate); if (rowObject.MetaDic.ContractDocUrl && page.canSendEmail == true) { html += "" .template(rowObject.id, "发送Email", rowObject.ClientId); } else { html += "" .template(rowObject.EncryptId, "发送Email"); } html += "" .template(rowObject.id); html += "".template(rowObject.id); return html; } function starttradeView(id, tradeType) { if (tradeType.indexOf("收益互换") >= 0 || tradeType == "多空组合") { main.open("查看交易", "/swaptrade2/tradeView/?enid=" + id + "&isOnlyCloseButton=true", { area: ['90%', '90%'] }); } else { let srcurl = "/trade/tradeView/?enid=" + id + "&isOnlyCloseButton=true"; main.open("查看交易", srcurl, { area: ['1260px', '800px'] }); } } function reloadtrade() { //重新加载 SearchClick(); $('#modal-edittrade').modal('hide'); } function SearchClick(isSearchclick) { var listGrid = $('#listGrid'); listGrid.appendPostData({ TradeNumber: $("#TradeNumber").val() }); listGrid.appendPostData({ ContractCode: $("#ContractCode").val() }); listGrid.appendPostData({ ClientIds: ($("#ClientId").val() || []).join() }); listGrid.appendPostData({ ClientName: ($("#ClientName").val() || []).join() }); listGrid.appendPostData({ AssetIds: ($("#AssetId").val() || []).join() }); listGrid.appendPostData({ AssetIdGroupList: $("#GroupId").val() }); listGrid.appendPostData({ UnderlyingIds: !$("#UnderlyingId").val() ? "" : $("#UnderlyingId").val().join(",") }); listGrid.appendPostData({ UnderlyingInstrumentType: $("#UnderlyingAssetClass").val() }); listGrid.appendPostData({ TradeDateStart: $("#DateFromTradeDate").val() }); listGrid.appendPostData({ TradeDateEnd: $("#DateToTradeDate").val() }); listGrid.appendPostData({ BuySell: $("#BuySell").val() }); listGrid.appendPostData({ StartDateStart: $("#DateFromStartDate").val() }); listGrid.appendPostData({ StartDateEnd: $("#DateToStartDate").val() }); listGrid.appendPostData({ MaturityDateStart: $("#DateFromMaturityDate").val() }); listGrid.appendPostData({ MaturityDateEnd: $("#DateToMaturityDate").val() }); listGrid.appendPostData({ TradePrice: $("#TradePrice").val() }); listGrid.appendPostData({ OptName: $("#OptName").val() }); listGrid.appendPostData({ OptDateStart: $("#DateFromOptDate").val() }); listGrid.appendPostData({ OptDateEnd: $("#DateToOptDate").val() }); listGrid.appendPostData({ ValidState: $("#ValidState").val() }); var reqTradeStatus = main.isEmpty($("#TradeStatus").val()) || $("#TradeStatus").val().includes("") ? page.reqTradeStatus : $("#TradeStatus").val().join(","); listGrid.appendPostData({ TradeStatus: reqTradeStatus }); listGrid.appendPostData({ Comments: $("#Comments").val() }); listGrid.appendPostData({ ExerciseDateStart: $("#DateFromExerciseDate").val() }); listGrid.appendPostData({ ExerciseDateEnd: $("#DateToExerciseDate").val() }); listGrid.appendPostData({ TradeIds: "" }); if (page.IsAutoSealAndUploadFiles) { listGrid.appendPostData({ SealResults: $("#SealResults").val() }); listGrid.appendPostData({ SealDateStart: $("#DateFromSealDate").val() }); listGrid.appendPostData({ SealDateEnd: $("#DateToSealDate").val() }); } if (isSearchclick) { //点击搜索时默认第一页 listGrid.jqGrid('setGridParam', { page: 1 }); } listGrid.trigger('reloadGrid'); } function showcolumnChooser() { var jgrid = jQuery('#listGrid'); main.showcolumnChooser(jgrid, page.configcolumn); } function gJGenerateConfirmBook(id, isWait, hasGeneratedConfirmBook) { if (page.IsAutoSealAndUploadFiles) { //if (isWait) { // if (!confirm("用印正在等待中重新生成将中断用印并重新进行自动用印(如有),是否确认操作?")) { // return; // } //} if (!confirm("重新生成将覆盖已有的交易确认书并重新进行自动用印(如有),是否确认操作?")) { return; } } if (hasGeneratedConfirmBook == "True") { if (!page.IsAutoSealAndUploadFiles) { if (!confirm("确认覆盖已有的交易确认书?")) { return; } } } var tradeIds = []; if (id) { tradeIds.push(id); } else { var jgrid = jQuery('#listGrid'); tradeIds = main.GetGridIds(jgrid); //if (page.IsAutoSealAndUploadFiles) { // tradeIds.forEach((v, i, arr) => { // var tradeId = v; // main.post("/trade/IsSealWaiting/", { tradeId: tradeId }, // { // success: function (resp) { // if (resp.success) { // if (!confirm("用印正在等待中重新生成将中断用印并重新进行自动用印(如有),是否确认操作?")) { // return; // } // } // } // }); // }); //} } if (tradeIds.length === 0) { main.message("请选择交易"); return; } var templateHtml = ""; if (page.SelectConfirmationBookTemplate) { var currentTemplate = ""; var postData = { key: "交易确认书" }; if (tradeIds.length === 1) { postData.tradeId = tradeIds[0]; main.post("/trade/GetTradeMeta", postData, { waitMe: false, async: false }).done(function (res) { currentTemplate = res; }); } templateHtml = '
' + '' + '' + '
'; } var htmlContent = '' + '
' + '' + '
' + '' + '' + '
' + '
' + templateHtml + ''; main.open2("生成交易确认书", htmlContent, { area: ["300px", "200px"], btn: ['生成', '取消'], yes: function (index, layero) { var docType = $('input[name="docType"]:checked').val(); if (page.SelectConfirmationBookTemplate) { postData.value = $('select[name="templateName"]').val(); if (_.trim(postData.value)) { tradeIds.forEach((v, i, arr) => { postData.tradeId = v; main.post("/trade/SetTradeMeta", postData, { waitMe: false, async: false }); }); } } var confirmBookPostData = { tradeIds: tradeIds, docType: docType, startDate: $("#DateFromTradeDate").val(), endDate: $("#DateToTradeDate").val() }; //if (page.IsAutoSealAndUploadFiles) { // confirmBookPostData.SealResults = $("#SealResults").val(); // //confirmBookPostData.SealDateStart = $("#DateFromSealDate").val(); // //confirmBookPostData.SealDateEnd = $("#DateToSealDate").val(); //} main.post("/TradeConfirmBook/GJGenerateConfirmBook/", confirmBookPostData) .done(function (resp) { var res = resp.obj; //for (let index = 0; index < resp.obj.length; index++) { // if (!isExistFile(res[index])) { // res[index] += "x"; // } //} if (resp.success) { main.downloadFiles(res); } else { main.alert(resp.msg.replace("\r\n", "
")); if (resp.obj) { main.downloadFiles(res); } } window.reloadtrade(); window.layer.closeAll(); }); }, cancel: function (index, layero) { parent.layer.closeAll(); }, success: function (layero, index) { $(".btn-group").on("click", ".btn", function (event) { $('input[name="docType"]:checked').prop("checked", false); $(this).children("input").prop("checked", true); }); } }); } function setValidation(elId, selectedDate, isSetMax) { if (isSetMax) { var time = selectedDate.split("-"); var year = time[0]; var month = time[1] - 1; var day = time[2]; $("#" + elId).datepicker( 'option', 'maxDate', new Date(year, month, day) ); } else { let time = selectedDate.split("-"); let year = time[0]; let month = time[1] - 1; let day = time[2]; $("#" + elId).datepicker( 'option', 'minDate', new Date(year, month, day) ); } } function ConfirmTemplateChoose() { window.location.href = "/client/ClientTemplateChoose"; } // 交易确认书邮件发送 function SendEmailHub() { // 创建SignalR连接并连接到服务器上的Hub var connection = new signalR.HubConnectionBuilder() .withUrl('/tradeconfirm/sendemailhub') .withAutomaticReconnect() .build(); connection.start() .then(function () { $("#batchSendEmail").click(function () { var jgrid = jQuery('#listGrid'); var ids = main.GetGridIds(jgrid); if (ids.length == 0) { main.alert("请至少选择一笔交易"); return; } var req = { tradeIds: ids, } connection.invoke('StartProcessing', JSON.stringify(req)); main.waitMe(true); }); }).catch(function (error) { console.error(error); });; // 监听服务器发送的消息。 connection.on('UpdateProgress', function (msg) { if (msg != null && msg != '') { let jsonObject = JSON.parse(msg); $("#email_result" + jsonObject.tradeId).text(jsonObject.send_email_result); } }); // 监听服务器发送的异常消息。 connection.on('ExceptionMessage', function (msg) { if (msg.indexOf("正在发送邮件") < 0) { main.waitMe(false); SearchClick(true); } main.alert(msg); }); // 监听服务器发送的完成消息。 connection.on('ProcessCompleted', function () { main.alert("邮件发送处理完毕"); main.waitMe(false); SearchClick(true); }); // 监听连接关闭,启动重连 connection.onclose(async (error) => { console.log("连接断开"); // 等待3秒后尝试重新连接 setTimeout(async () => { try { await connection.start(); console.log("已重新连接"); } catch (err) { console.error("重新连接失败: ", err); } }, 3000); // 3秒 }); } function SendOAHub() { var connection = new signalR.HubConnectionBuilder() .withUrl('/tradeconfirm/sendoahub') .withAutomaticReconnect() .build(); connection.start() .then(function () { $("#batchSendOA").click(function () { var jgrid = jQuery('#listGrid'); var ids = main.GetGridIds(jgrid); if (ids.length == 0) { main.alert("请至少选择一笔交易"); return; } var req = { ids: ids, } connection.invoke('StartProcessing', JSON.stringify(req)); main.waitMe(true); }); }).catch(function (error) { console.error(error); }); connection.on('UpdateProgress', function (msg) { if (msg != null && msg != '') { SearchClick(true); } }); connection.on('ExceptionMessage', function (msg) { if (msg.indexOf("正在发送OA") < 0) { main.waitMe(false); SearchClick(true); } main.alert(msg); }); connection.on('ProcessCompleted', function () { main.alert("OA发送处理完毕"); main.waitMe(false); SearchClick(true); }); connection.onclose(async (error) => { console.log("连接断开"); setTimeout(async () => { try { await connection.start(); console.log("已重新连接"); } catch (err) { console.error("重新连接失败: ", err); } }, 3000); }); } function sendOA(id) { var jgrid = jQuery('#listGrid'); var rowData = jgrid.jqGrid('getRowData', id); if (!rowData) return; if (!rowData.ContractCode) { main.confirm("目前无确认书附件,确定提交OA吗?", function () { submitOA(id); }); } else { submitOA(id); } } function submitOA(id) { var req = { id: id }; main.post("/TradeConfirmBook/SendOA", req).done(function (res) { SearchClick(true); }).fail(function (xhr, status, error) { SearchClick(true); }); }