if (ylotc.varieties) { _.pullAllBy(ylotc.varieties, [{ Code: "组合标的" }, { Code: "篮子标的" }], "Code") } (function () { _.each(page.Model, (val, key) => { (typeof val === 'undefined' || val === null) && (page.Model[key] = ''); }); let updownLimit = page.Model.UpDownLimit; page.Model.UpDownLimitType = !updownLimit || updownLimit.endsWith("%") ? 'P' : 'F'; }()); const consSelect = ['MarketCode', 'UnderlyingInstrumentType', 'UnderlyingState', 'UnderlyingStatus', 'UpDownLimitType', 'EtfSubType']; var autoUpDownLimit, autoVariety; var fundManagerLookupSeq = 0; var fundManagerLookupTimer = null; var fundManagerLookupXhr = null; var fundManagerManualEdit = false; $(function () { $(".datepicker").datepicker({ changeMonth: true, changeYear: true, showButtonPanel: true, showOtherMonths: true, selectOtherMonths: true }); if (!page.showDeltaS_S) { $('#DeltaS_S').parent().hide(); } FastVue.numberInput(document.getElementById('MarginRate'), { precision: 2, append: '%' }); FastVue.numberInput(document.getElementById('DeltaS_S'), { precision: 2, append: '%' }); FastVue.numberInput(document.getElementById('VolatilityRate'), { precision: 2, append: '%' }); FastVue.numberInput(document.getElementById('BondCouponRate'), { precision: 2, append: '%' }); FastVue.numberInput(document.getElementById('Spread'), { precision: 2 }); FastVue.numberInput(document.getElementById('SpreadM'), { precision: 2 }); FastVue.numberInput(document.getElementById('VolumeMin'), { precision: 0 }); FastVue.numberInput(document.getElementById('VolumeMax'), { precision: 0 }); FastVue.numberInput(document.getElementById('VolumeStep'), { precision: 0 }); FastVue.numberInput(document.getElementById('VolumeLimit'), { precision: 0 }); autoUpDownLimit = FastVue.numberInput(document.getElementById('UpDownLimit'), { precision: 2, append: page.Model.UpDownLimitType === 'P' ? '%' : '' }); autoVariety = FastVue.autocomplete(document.getElementById('UnderlyingTypeId'), { valueField: 'id', nameField: 'Name', searchField: ['Name', 'PinYin'], lookup: ylotc.varieties }); $('#InvestAdvisorName').on('input', function () { fundManagerManualEdit = true; }); $('#UnderlyingCode').on('input', refreshFundManagerLookup); for (var i = 1; i <= 5; i++) { let datas = ylotc.underlyingBlocks.filter(x => x.Group === i); let autoBlock = FastVue.autocomplete(document.getElementById('inputBlock' + i), { valueField: 'id', nameField: 'Name', searchField: ['Name', 'PinYin'], lookup: datas }); let blockId = page.Model['Block' + i]; let data = blockId ? datas.find(x => x.id === blockId) : null; autoBlock.setData(data); } //变更Span涨跌幅度输入样式 $('#UpDownLimitType').on('change', function () { autoUpDownLimit.setOptions({ append: $(this).val() === 'P' ? '%' : '' }); autoUpDownLimit.setValue(0); }); if (page.Model.id > 0) { _.each(consSelect, x => { $('#' + x).val(page.Model[x]); }); let vid = page.Model.UnderlyingTypeId || 0; let variety = vid ? ylotc.varieties.find(x => x.id === vid) : null; autoVariety.setData(variety); } //变更资产类型 $("#UnderlyingInstrumentType").on('change', function () { var classType = "" switch ($(this).val()) { case "Stock": case "StockIndex": case "NewOtcStock": case "HKStock": case "HKStockIndex": case "AbroadStock": case "AbroadStockIndex": classType = "Stock"; break; case "StockIF": case "CommodityFutures": case "GoldFutures": case "TBFutures": case "OtherFutures": case "AbroadFutures": classType = "CommodityFutures"; break; case "CommoditySpot": case "GoldSpot": case "OtherSpot": case "AbroadSpot": classType = "CommoditySpot"; break; case "TBonds": case "CreditBonds": case "OtherBonds": classType = "Bonds"; break; case "Fund": // 重点功能:资产类型为基金及基金专户时,显示所有 Fund 专属字段。 classType = "Fund"; break; default: classType = type; break; } $('#editForm').removeClass("form-None form-Stock form-CommodityFutures form-CommoditySpot form-Bonds form-Fund").addClass("form-" + classType); refreshFundManagerLookup(); }).trigger('change'); }); function refreshFundManagerLookup() { var requestSeq = ++fundManagerLookupSeq; if (fundManagerLookupTimer) { clearTimeout(fundManagerLookupTimer); fundManagerLookupTimer = null; } if (fundManagerLookupXhr) { fundManagerLookupXhr.abort(); fundManagerLookupXhr = null; } var codeInput = $('#UnderlyingCode'); var typeInput = $('#UnderlyingInstrumentType'); var managerInput = $('#InvestAdvisorName'); if (page.Model.id > 0 || !codeInput.length || !typeInput.length || typeInput.val() !== 'Fund' || !codeInput.val() || !managerInput.length) { return; } var codeAtRequest = codeInput.val(); var managerAtRequest = managerInput.val() || ''; var manualAtRequest = fundManagerManualEdit; fundManagerLookupTimer = setTimeout(function () { fundManagerLookupTimer = null; fundManagerLookupXhr = $.ajax({ url: '/underlying_manager/GetFundManager', method: 'GET', data: { code: codeAtRequest, instrumentType: 'Fund' } }).done(function (resp) { if (requestSeq !== fundManagerLookupSeq || page.Model.id > 0 || $('#UnderlyingCode').val() !== codeAtRequest || $('#UnderlyingInstrumentType').val() !== 'Fund' || manualAtRequest || fundManagerManualEdit) { return; } var result = resp && resp.obj; if (result && result.IsUnique && result.InvestAdvisorName) { managerInput.val(result.InvestAdvisorName); fundManagerManualEdit = false; } }).always(function () { fundManagerLookupXhr = null; }); }, 200); } function saveData() { var data = $('#editForm').serializeObject(); if (!data.UnderlyingCode) { return main.alert("标的资产码 必须填写!"); } if (!data.UnderlyingName) { return main.alert("标的名称 必须填写!"); } if (!data.UnderlyingInstrumentType) { return main.alert("标的资产类型 必须填写!"); } if (!data.UnderlyingTypeId) { return main.alert("资产品种类型 必须填写!"); } // 重点功能:基金及基金专户必须填写基金管理人,空格内容也视为未填写。 if (data.UnderlyingInstrumentType === "Fund" && (!data.InvestAdvisorName || !data.InvestAdvisorName.trim())) { return main.alert("基金管理人 必须填写!"); } // 重点功能:ETF 子类只对基金及基金专户显示并必填,先在前端阻止无效提交。 if (data.UnderlyingInstrumentType === "Fund" && !data.EtfSubType) { return main.alert("ETF 子类 必须填写!"); } if (data.UnderlyingInstrumentType === "CommodityFutures" && !data.MaturityDate) { return main.alert("到期日 必须填写!"); } data = $.extend(page.Model, data); ["MarginRate", "Bond.CouponRate", 'DeltaS_S'].forEach(k => { data[k] = data[k] ? (parseFloat(data[k]) || 0) / 100 : null; }); main.post("/underlying_manager/underlying_managerEditJson", data).done(function (resp) { main.parentReloadData(); window.location.href = "/underlying_manager/underlying_managerView?enid=" + resp.obj.EncryptId; }); }