var autoruleVue = new Vue({ el: '#autoRuelWrap', data: { ruleMap: {}, rawDatas: [], alarmSum: 0 }, mounted: function () { var map = {}; _.forEach(page.autoRules, function (rule, index) { map[rule.UnderlyingCode] = rule; rule.$delta = ''; rule.$alarm = false; }); this.ruleMap = map; }, methods: { editRule: function (code) { if (typeof code !== 'string') { code = ''; } var index = layer.open({ type: 2, title: '对冲规则', shadeClose: true, area: ['550px', '600px'], content: "/trade_autorule/edit2?code=" + code }); }, hedging: function (code) { if (!code) { return main.alert("无效标的代码"); } var postData = jqGridMgr.getPostData(); postData = _.assign(postData, { UnderlyingCodes: [code] }); var index = layer.open({ type: 2, title: '实时对冲', shadeClose: true, area: ['90%', '90%'], content: "/RiskHedging/Hedging?" + $.param(postData,true) }); }, updateAlarm: function (datas) { if (datas) { this.rawDatas = datas; } else { datas = this.rawDatas; } var map = this.ruleMap, sum = 0; _.each(map, x => x.$delta = ''); _.forEach(datas, data => { var rule = map[data.UnderlyingCode]; if (!rule) return; rule.$delta = main.formatNumber(data.DeltaPercent, {percent:true}); var deltaPercent = data.DeltaPercent * 100; rule.$alarm = deltaPercent < rule.MinDelta || deltaPercent > rule.MaxDelta; if (rule.$alarm) sum++; }); this.alarmSum = sum; } }, filters: { toPercent: function (val) { return val ? val + '%' : ''; } } }); function setRules(data) { if (data.Enable) { Vue.set(autoruleVue.ruleMap, data.UnderlyingCode, data); } else { Vue.delete(autoruleVue.ruleMap, data.UnderlyingCode); } autoruleVue.updateAlarm(); }