document.addEventListener("DOMContentLoaded", function() { //把对象赋值到JS中 try { new QWebChannel(qt.webChannelTransport, function(channel) { window.pyjs = channel.objects.Bridge; console.log("回调成功"); }); } catch (e) { } }); $(function() { new VConsole(); var app = new Vue({ el: "#app", data: { account_available_money: 0, delegate_records: [], delegate_records_updatetime: '', delegates: [],//[{id:1,'code_info':["000333","美的集团"],'l_down_cancel_rate':0.3,'deal_big_money_info':[0,10000,0,0,0,100000],left_money:'200万'}], now_timestamp: Date.now(), warning_ids_info: { // ID: 生效时间 }, last_cancel_rate_dict: { // 上一次的撤单比例 // ID: 撤单比例 }, code_names: {}, deal_statistic_info: {}, }, mounted: function() { setTimeout(function() { app.get_delegate_list(); app.list_delegate_records(''); }, 500); setInterval(function() { if (is_trade_time()) { app.get_delegate_list(); } }, 2000); setInterval(function() { app.now_timestamp = Date.now(); }, 1000); setInterval(function() { if (is_trade_time()) { app.list_delegate_records(); } }, 3000); }, methods: { refresh_data: function() { http_util.sync_trade_data("delegate_list", function(res) { if (res.code === 0) { layer.msg("刷新成功"); } else { layer.msg(res.msg); } }); this.get_delegate_list(); }, get_delegate_list: function() { http_util.get_delegated_buy_code_infos(function(res) { if (res.code == 0) { let data = res.data; app.account_available_money = data.account_available_money; app.delegates = data.delegates; // 记录上一次的数据 app.delegates.forEach(function(item) { // if (!(item.id in app.last_cancel_rate_dict)){ // app.last_cancel_rate_dict[item.id] = 0; // } if (item.id in app.last_cancel_rate_dict) { // 实撤变大 if (item.l_down_watch_indexes_info.current[3] - app.last_cancel_rate_dict[item.id] >= 5) { app.warning_ids_info[item.id] = Date.now() + 1000 * 9; // 变化5%以上才计数 app.last_cancel_rate_dict[item.id] = item .l_down_watch_indexes_info.current[3] } if (item.l_down_watch_indexes_info.current[3] < app.last_cancel_rate_dict[item.id]) { // 变小的时候赋值 app.last_cancel_rate_dict[item.id] = item .l_down_watch_indexes_info.current[3] delete app.warning_ids_info[item.id]; } } else { app.last_cancel_rate_dict[item.id] = item .l_down_watch_indexes_info.current[3]; } }); } }); }, parseMoneyAsW: function(money_str) { if (money_str.indexOf('亿') >= 0) { return parseFloat(money_str.replace("亿", "")) * 10000 } else if (money_str.indexOf('万') >= 0) { return parseFloat(money_str.replace("万", "")) } else { return parseFloat(money_str) / 10000 } }, toMoneyDesc: function(money) { if (Math.abs(money) > 100000000) { return (money / 100000000.0).toFixed(1) + "亿"; } else if (Math.abs(money) > 10000) { return (money / 10000.0).toFixed(1) + "万"; } else { return money + ""; } }, update_l_down_cancel_rate: function(item) { // 修改撤单比例 let code = item.code_info[0]; let prompt_index = layer.prompt({ title: 'L后撤单比例修改(保留2位小数:0-2)', formType: 0, //输入框类型,支持0(文本)默认1(密码)2(多行文本) value: '', //初始时的值,默认空字符 maxlength: 20, //可输入文本的最大长度,默认500 area: ['200px', '150px'], //自定义文本域宽高 // 绑定enter事件 success: function(layero, index) { $(layero).on('keydown', function(e) { if (e.keyCode === 13) { // 绑定enter var val = $('.layui-layer-input').val(); if (isNaN(val)) { layer.msg("输入格式有误") return; } let rate = parseFloat(val) http_util.set_l_down_rate(code, rate, function(res) { if (res.code == 0) { layer.msg("修改成功") layer.close(prompt_index) app.get_delegate_list(); } else { layer.msg(res.msg) } }); } }); } }, function(val, index) { if (isNaN(val)) { layer.msg("输入格式有误") return; } let rate = parseFloat(val) http_util.set_l_down_rate(code, rate, function(res) { if (res.code == 0) { layer.msg("修改成功") layer.close(prompt_index) app.get_delegate_list(); } else { layer.msg(res.msg) } }); }); }, reset_l_down_cancel_rate: function(item) { // 将撤单比例设置和原来一样 let code = item.code_info[0]; let rate = item.l_down_cancel_rate; http_util.set_l_down_rate(code, rate, function(res) { if (res.code == 0) { layer.msg("立改成功") app.get_delegate_list(); } else { layer.msg(res.msg) } }); }, audo_increase_l_down_cancel_rate: function(item) { let code = item.code_info[0]; let rate = item.l_down_cancel_rate + 0.1; http_util.set_l_down_rate(code, rate, function(res) { if (res.code == 0) { layer.msg("变大成功") app.get_delegate_list(); } else { layer.msg(res.msg) } }); }, audo_decrease_l_down_cancel_rate: function(item) { let code = item.code_info[0]; let rate = item.l_down_cancel_rate - 0.1; http_util.set_l_down_rate(code, rate, function(res) { if (res.code == 0) { layer.msg("变小成功") app.get_delegate_list(); } else { layer.msg(res.msg) } }); }, forbiddenBuy: function(item) { let code = item.code_info[0]; http_util.do_action_for_code(code, '', 0, function(res) { }); this.cancelOrder(item); }, cancelOrder: function(item) { let code = item.code_info[0]; http_util.cancel_order(code, function() { layer.msg("撤单成功"); }) }, viewDetail: function(item) { pyjs.add_code_to_ths(item.code_info[0]); }, open_trade_queue: function(item) { let code = item.code_info[0]; let url = window.location.protocol + "//" + window.location.host + "/kp/trade_queue.html?code=" + code; let params = { "url": url, "title": code, "key": "trade_queue", "size": [400, 400] }; pyjs.open_webview_window(JSON.stringify(params)) }, open_l2_down_watch_index_overview: function(code, name) { let url = window.location.protocol + "//" + window.location.host + "/kp/l_down_cancel_indexes.html?code=" + code; let params = { "url": url, "title": "L后囊括(" + name + ")", "key": "l_down_watch_index", "size": [400, 400] }; pyjs.open_webview_window(JSON.stringify(params)) }, getOrderStatusDesc: function(orderStatus) { switch (orderStatus) { case 0: return "预埋"; case 1: return "未知"; case 2: return "交易所已接收"; case 3: return "部分成交"; case 4: return "全部成交"; case 5: return "部成部撤"; case 6: return "全部撤单"; case 7: return "交易所已拒绝"; default: return "发往交易核心"; } }, getReversedDelegateRecords: function() { return this.delegate_records.slice().reverse(); }, list_delegate_records: function() { http_util.list_delegate_records(app.delegate_records_updatetime, function( res) { res = JSON.parse(res); console.log("委托列表", res); if (res.code == 0) { if (res.data.list.length > 0) { var index_dict = {}; for (var i = 0; i < app.delegate_records.length; i++) { index_dict[app.delegate_records[i].orderLocalID] = i; } res.data.list.forEach(function(e) { if (e.orderLocalID in index_dict) { app.$set(app.delegate_records, index_dict[e .orderLocalID], e); } else { app.delegate_records.push(e); } app.code_names[e.securityID] = e.securityName; }); } app.delegate_records_updatetime = res.data.update_time; } }); }, } }); });