Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2
This commit is contained in:
@@ -49,18 +49,86 @@ function showSwapRate(timeRate, isMarginLeg) {
|
||||
$("#swapIntervalModal").modal("show");
|
||||
}
|
||||
var layerIndex = -1;
|
||||
var confirmFunc = function (id, additionalProcessing) {
|
||||
var confirmFunc = function (id, additionalProcessing, ignoreRiskRuleIds, trialDataId) {
|
||||
var pData = { tradeids: id };
|
||||
if (!main.isEmpty(additionalProcessing)) {
|
||||
pData.additionalProcessing = additionalProcessing;
|
||||
}
|
||||
if (ignoreRiskRuleIds && ignoreRiskRuleIds.length > 0) {
|
||||
pData.ignoreRiskRuleIds = ignoreRiskRuleIds.join(',');
|
||||
}
|
||||
if (trialDataId) {
|
||||
pData.trialDataId = trialDataId;
|
||||
}
|
||||
main.post("/trade/tradeConfirm", pData).done(function (data) {
|
||||
if (!data.success) {
|
||||
main.message(data.msg);
|
||||
return;
|
||||
}
|
||||
|
||||
if (data.obj && data.obj.proccessType === "QuotaTrialError") {
|
||||
//限额试算不通过(老风控检查失败),展示详情表格但不允许审批
|
||||
if (data.obj.TrialDataId) {
|
||||
var quotaTrialErrorLayerSetting = {
|
||||
type: 2,
|
||||
title: "提示",
|
||||
shadeClose: false,
|
||||
shade: 0.4,
|
||||
area: ['800px', '500px'],
|
||||
content: "/trade/showQuotaTrial?id=" + data.obj.TrialDataId,
|
||||
yes: function (index) {
|
||||
layer.close(layerIndex);
|
||||
},
|
||||
cancel: function () {
|
||||
if (window.parent && window.parent.reloadtrade) {
|
||||
window.parent.reloadtrade();
|
||||
}
|
||||
layer.close(layerIndex);
|
||||
}
|
||||
};
|
||||
quotaTrialErrorLayerSetting.btn = ["关闭"];
|
||||
layerIndex = layer.open(quotaTrialErrorLayerSetting);
|
||||
}
|
||||
else if (data.obj.message) {
|
||||
main.message(data.obj.message);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (data.obj && data.obj.proccessType === "AdditionalProcessing") {
|
||||
if (data.obj.TrialDataId) {
|
||||
// 交易特批来源,优先使用后端新增的 source 字段区分老风控/新风控,同时兼容旧返回结构。
|
||||
var additionalProcessingSource = data.obj.source || "";
|
||||
// 新风控需审批场景:source=RiskWarning 或 type=RiskWarningConfirm,二次确认时需要继续透传 ignoreRiskRuleIds。
|
||||
var isRiskWarningConfirm = data.obj.type === "RiskWarningConfirm" || additionalProcessingSource === "RiskWarning";
|
||||
// 老风控兼容特批场景:source=OldRiskQuotaTrialError 或 type=LackOfMoney,保持 master 原有“交易特批”按钮逻辑。
|
||||
var isOldRiskSpecialApproval = additionalProcessingSource === "OldRiskQuotaTrialError" || data.obj.type === "LackOfMoney";
|
||||
// 新风控特批走 RiskWarningConfirm,老风控特批继续走 LackOfMoney,兼容当前 confirmFunc 的入参约定。
|
||||
var additionalProcessingType = isRiskWarningConfirm ? "RiskWarningConfirm" : "LackOfMoney";
|
||||
// 新风控需审批时由后端返回本次命中的审批规则 id,前端二次确认时原样透传。
|
||||
var currentIgnoreRiskRuleIds = data.obj.ignoreRiskRuleIds || [];
|
||||
var currentTrialDataId = data.obj.TrialDataId;
|
||||
var saveQuotaTrial = function (obj) {
|
||||
var saveSuccess = true;
|
||||
if (obj.Data.Remark && obj.Data.Remark.length > 0) {
|
||||
main.post("/trade/SaveQuotaTrial", obj.Data, { async: false }).done(function (res) {
|
||||
if (!res || !res.success) {
|
||||
saveSuccess = false;
|
||||
main.message(res.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
return saveSuccess;
|
||||
};
|
||||
var saveRiskWarningDecisionLog = function (quotaTrialId, decision) {
|
||||
var saveSuccess = true;
|
||||
main.post("/trade/SaveRiskWarningDecisionLog", { quotaTrialId: quotaTrialId, decision: decision }, { async: false }).done(function (res) {
|
||||
if (!res || !res.success) {
|
||||
saveSuccess = false;
|
||||
main.message(res.msg);
|
||||
}
|
||||
});
|
||||
return saveSuccess;
|
||||
};
|
||||
var layerSetting = {
|
||||
type: 2,
|
||||
title: "提示",
|
||||
@@ -70,19 +138,30 @@ var confirmFunc = function (id, additionalProcessing) {
|
||||
content: "/trade/showQuotaTrial?id=" + data.obj.TrialDataId,
|
||||
yes: function (index) {
|
||||
var obj = window["layui-layer-iframe" + index].page;
|
||||
if (obj.Data.Remark && obj.Data.Remark.length > 0) {
|
||||
main.post("/trade/SaveQuotaTrial", obj.Data, { async: false }).done(function (res) {
|
||||
if (!res || !res.success) {
|
||||
main.message(res.msg);
|
||||
}
|
||||
});
|
||||
layer.close(layerIndex);
|
||||
confirmFunc(id, "LackOfMoney");
|
||||
if (!obj.Data.Remark || obj.Data.Remark.length <= 0) {
|
||||
main.message("必须填写说明内容,才可以录入交易");
|
||||
return;
|
||||
}
|
||||
main.message("必须填写说明内容,才可以录入交易");
|
||||
if (!saveQuotaTrial(obj)) {
|
||||
return;
|
||||
}
|
||||
if (isRiskWarningConfirm) {
|
||||
if (!saveRiskWarningDecisionLog(obj.Data.id, "确认通过")) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (isOldRiskSpecialApproval) {
|
||||
obj.Data.Remark = (obj.Data.Remark || "").trim();
|
||||
}
|
||||
layer.close(layerIndex);
|
||||
confirmFunc(id, additionalProcessingType, currentIgnoreRiskRuleIds, currentTrialDataId);
|
||||
},
|
||||
cancel: function () {
|
||||
var iframeWindow = window["layui-layer-iframe" + this.index];
|
||||
var pageObj = iframeWindow && iframeWindow.page;
|
||||
if (isRiskWarningConfirm && pageObj && pageObj.Data && pageObj.Data.id) {
|
||||
saveRiskWarningDecisionLog(pageObj.Data.id, "取消不通过");
|
||||
}
|
||||
if (window.parent && window.parent.reloadtrade) {
|
||||
window.parent.reloadtrade();
|
||||
}
|
||||
@@ -92,8 +171,11 @@ var confirmFunc = function (id, additionalProcessing) {
|
||||
if (data.obj.type === "LackOfMoney") {
|
||||
layerSetting.btn = [page.buttonStr, '取消'];
|
||||
}
|
||||
// 只展示"资金状况"的情况
|
||||
if (data.obj.typecode === "FundStatus") {
|
||||
else if (isRiskWarningConfirm) {
|
||||
layerSetting.btn = ["交易特批", '取消'];
|
||||
}
|
||||
// 只展示“资金状况”的情况
|
||||
else if (data.obj.typecode === "FundStatus") {
|
||||
layerSetting.btn = ["确认", '取消'];
|
||||
}
|
||||
|
||||
@@ -106,6 +188,38 @@ var confirmFunc = function (id, additionalProcessing) {
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (data.msg && data.msg !== "操作完成") {
|
||||
//新风控 ShowTip 提示:交易已确认成功,但触发提示规则,弹窗展示试算详情
|
||||
if (data.obj && data.obj.TrialDataId) {
|
||||
var showTipLayerSetting = {
|
||||
type: 2,
|
||||
title: "提示",
|
||||
shadeClose: false,
|
||||
shade: 0.4,
|
||||
area: ['800px', '500px'],
|
||||
content: "/trade/showQuotaTrial?id=" + data.obj.TrialDataId,
|
||||
yes: function (index) {
|
||||
layer.close(layerIndex);
|
||||
closetradeWindow();
|
||||
},
|
||||
cancel: function () {
|
||||
if (window.parent && window.parent.reloadtrade) {
|
||||
window.parent.reloadtrade();
|
||||
}
|
||||
layer.close(layerIndex);
|
||||
closetradeWindow();
|
||||
}
|
||||
};
|
||||
showTipLayerSetting.btn = ["关闭"];
|
||||
layerIndex = layer.open(showTipLayerSetting);
|
||||
}
|
||||
else {
|
||||
main.alert(data.msg, function () {
|
||||
closetradeWindow();
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (window.parent && window.parent.reloadtrade) {
|
||||
window.parent.reloadtrade();
|
||||
}
|
||||
@@ -115,6 +229,8 @@ var confirmFunc = function (id, additionalProcessing) {
|
||||
}
|
||||
}
|
||||
closetradeWindow();
|
||||
}).fail(function (err) {
|
||||
console.log("[swapTradeView.tradeConfirm] fail, err=", err);
|
||||
});
|
||||
};
|
||||
function confirmTrade(id) {
|
||||
@@ -197,7 +313,7 @@ function unWindSwap(id) {
|
||||
main.open(title,
|
||||
srcurl,
|
||||
{
|
||||
area: ["90%", "800px"],
|
||||
area: ["90%", "780px"],
|
||||
end: function () {
|
||||
if (window.parent && window.parent.reloadtrade) {
|
||||
window.parent.reloadtrade();
|
||||
|
||||
@@ -15,6 +15,12 @@ function initSelectize(selector, options) {
|
||||
}
|
||||
|
||||
function setRuleDiv() {
|
||||
// 先销毁已有的 selectize 实例,避免在隐藏容器(v-show)里初始化后尺寸错位
|
||||
$("[name='selectRule']").each(function () {
|
||||
if (this.selectize) {
|
||||
this.selectize.destroy();
|
||||
}
|
||||
});
|
||||
initSelectize("[name='selectRule']", {
|
||||
options: getRules(),
|
||||
valueField: 'Value',
|
||||
@@ -42,7 +48,7 @@ var app = new Vue({
|
||||
{ text: '--请选择--', value: '0' },
|
||||
{ text: '客户开户', value: '1' },
|
||||
{ text: '客户信息修改', value: '5' },
|
||||
{ text: '交易', value: '2' },
|
||||
{ text: '交易新增和修改', value: '2' },
|
||||
{ text: '交易了结', value: '6' },
|
||||
/* { text: '资信与授信', value: '3' },*/
|
||||
{ text: '出金', value: '4' }
|
||||
@@ -79,11 +85,11 @@ var app = new Vue({
|
||||
],
|
||||
conditionOps: [
|
||||
{ value: 'gt', text: '>' },
|
||||
{ value: 'lt', text: '<' },
|
||||
//{ value: 'lt', text: '<' },
|
||||
{ value: 'gte', text: '>=' },
|
||||
{ value: 'lte', text: '<=' },
|
||||
{ value: 'eq', text: '=' },
|
||||
{ value: 'neq', text: '≠' }
|
||||
//{ value: 'lte', text: '<=' },
|
||||
//{ value: 'eq', text: '=' },
|
||||
//{ value: 'neq', text: '≠' }
|
||||
],
|
||||
conditionLogics: [
|
||||
{ value: 'AND', text: '满足全部条件时触发' },
|
||||
@@ -1456,6 +1462,7 @@ var app = new Vue({
|
||||
handler(val, oldVal) {
|
||||
this.$nextTick(function () {
|
||||
setRuleDiv();
|
||||
this.initRuleType();
|
||||
})
|
||||
},
|
||||
},
|
||||
@@ -1464,6 +1471,7 @@ var app = new Vue({
|
||||
handler(val, oldVal) {
|
||||
this.$nextTick(function () {
|
||||
setRuleDiv();
|
||||
this.initRuleType();
|
||||
})
|
||||
},
|
||||
}
|
||||
|
||||
@@ -128,7 +128,7 @@ var confirmFunc = function (id, additionalProcessing) {
|
||||
if (data.obj.type === "LackOfMoney") {
|
||||
layerSetting.btn = [page.buttonStr, '取消'];
|
||||
}
|
||||
// 只展示"资金状况"的情况
|
||||
// 只展示“资金状况”的情况
|
||||
if (data.obj.typecode === "FundStatus") {
|
||||
layerSetting.btn = ["确认", '取消'];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user