78 lines
2.4 KiB
JavaScript
78 lines
2.4 KiB
JavaScript
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();
|
|
} |