diff --git a/YLErpWeb/wwwroot/Scripts/app/pricing/structure.js b/YLErpWeb/wwwroot/Scripts/app/pricing/structure.js index 39fed9ba..ccea95ae 100644 --- a/YLErpWeb/wwwroot/Scripts/app/pricing/structure.js +++ b/YLErpWeb/wwwroot/Scripts/app/pricing/structure.js @@ -1416,7 +1416,7 @@ const vueTrade = function () { switch (this.viewState.initFlag) { case 'first': this.viewState.initFlag = ''; - this.changeInstrumentType(); + this.preloadDefaultUnderlying(); break; case 'import1': case 'import2': @@ -1446,6 +1446,15 @@ const vueTrade = function () { tradeUtils.resetRisky(this.trade); } }, + // EQD-7049:首腿自动预载默认类型标的。固收等环境下默认类型(Stock/CommodityFutures)可能没有 + // 已上线标的,后端必返回"标的信息缺失"——属可容忍场景,静默失败不弹窗,留待用户自选; + // 用户主动切换类型仍走 changeInstrumentType,查询失败正常提示 + preloadDefaultUnderlying() { + if (new Date().getTime() < this.updateKey.underlying + 300) return; + let instType = this.trade.UnderlyingInstrumentType; + this.viewState.variety = tradeHelper.getEmptyVariety(instType); + this.updateUnderlying({ InstrumentType: instType }, false, true); + }, //变更标的类型 changeInstrumentType() { if (new Date().getTime() < this.updateKey.underlying + 300) return; @@ -1484,7 +1493,7 @@ const vueTrade = function () { } }, //更新标的 - updateUnderlying(reqData, fromSelect) { + updateUnderlying(reqData, fromSelect, silent) { let self = this; // EQD-7049:新建空白页未选标的/品种/类型时,跳过必然失败的后端默认标的查询,避免报“标的信息缺失” var hasQueryKey = !!(reqData.UnderlyingCode || reqData.InstrumentType || reqData.VarietyId > 0); @@ -1494,7 +1503,10 @@ const vueTrade = function () { } var instTypeChanged = !!reqData.InstrumentType; !fromSelect && (self.viewState.underlying = tradeHelper.getEmptyUnderlying()); - main.post("/pricing/AjaxGetUnderlying", reqData).done(function (resp) { + // silent:自动预载场景失败不弹窗(alertFn 置空+抑制网络错误提示),用户主动查询仍正常提示 + var req = main.post("/pricing/AjaxGetUnderlying", reqData, silent ? { alertFn: $.noop, suppressError: true } : undefined); + silent && req.fail(function (resp) { console.warn('预载默认标的失败(已忽略):', resp && resp.msg); }); + req.done(function (resp) { let trade = self.trade; let um = resp.obj.underlying; if (!fromSelect) { diff --git a/YLErpWeb/wwwroot/Scripts/app/pricing/structure_dz.js b/YLErpWeb/wwwroot/Scripts/app/pricing/structure_dz.js index d0712e3c..6fdc2192 100644 --- a/YLErpWeb/wwwroot/Scripts/app/pricing/structure_dz.js +++ b/YLErpWeb/wwwroot/Scripts/app/pricing/structure_dz.js @@ -1025,7 +1025,7 @@ const vueTrade = function () { switch (this.viewState.initFlag) { case 'first': this.viewState.initFlag = ''; - this.changeInstrumentType(); + this.preloadDefaultUnderlying(); break; case 'import1': case 'import2': @@ -1059,6 +1059,15 @@ const vueTrade = function () { tradeUtils.resetCashFlow(this.trade); } }, + // EQD-7049:首腿自动预载默认类型标的。固收等环境下默认类型(Stock/CommodityFutures)可能没有 + // 已上线标的,后端必返回"标的信息缺失"——属可容忍场景,静默失败不弹窗,留待用户自选; + // 用户主动切换类型仍走 changeInstrumentType,查询失败正常提示 + preloadDefaultUnderlying() { + if (new Date().getTime() < this.updateKey.underlying + 300) return; + let instType = this.trade.UnderlyingInstrumentType; + this.viewState.variety = tradeHelper.getEmptyVariety(instType); + this.updateUnderlying({ InstrumentType: instType }, false, true); + }, //变更标的类型 changeInstrumentType() { if (new Date().getTime() < this.updateKey.underlying + 300) return; @@ -1099,7 +1108,7 @@ const vueTrade = function () { } }, //更新标的 - updateUnderlying(reqData, fromSelect) { + updateUnderlying(reqData, fromSelect, silent) { let self = this; // EQD-7049:新建空白页未选标的/品种/类型时,跳过必然失败的后端默认标的查询,避免报“标的信息缺失” var hasQueryKey = !!(reqData.UnderlyingCode || reqData.InstrumentType || reqData.VarietyId > 0); @@ -1109,7 +1118,10 @@ const vueTrade = function () { } var instTypeChanged = !!reqData.InstrumentType; !fromSelect && (self.viewState.underlying = tradeHelper.getEmptyUnderlying()); - main.post("/pricing/AjaxGetUnderlying", reqData).done(function (resp) { + // silent:自动预载场景失败不弹窗(alertFn 置空+抑制网络错误提示),用户主动查询仍正常提示 + var req = main.post("/pricing/AjaxGetUnderlying", reqData, silent ? { alertFn: $.noop, suppressError: true } : undefined); + silent && req.fail(function (resp) { console.warn('预载默认标的失败(已忽略):', resp && resp.msg); }); + req.done(function (resp) { let trade = self.trade; let um = resp.obj.underlying; if (!fromSelect) {