admin
2025-06-10 568c763084b926a6f2d632b7ac65b9ec8280752f
kp_html/kp/js/code_list.js
@@ -28,8 +28,11 @@
   app = new Vue({
      el: "#app",
      data: {
         element: null,
         code: "000000",
         code_name: "测试代码",
         account_available_money: 0,
         origin_code: null,
         trade_data: {},
         trade_record: {
            open_limit_up: "",
@@ -40,30 +43,90 @@
         passive_buy_codes: null,
         data_type: 0,
         trade_progress_index: -1,
         latest_real_order_index: -1,
         hidden_canceled: false,
         trade_progress_percent: 0,
         real_order_indexes: new Array(),
         hidden_canceled: true,
         //隐藏撤单
         hidden_cancel:true,
         hidden_little_money:false,
         hidden_sell:true,
         hidden_cancel: true,
         hidden_little_money: true,
         hidden_sell: true,
         // 不隐藏已撤大单
         not_hidden_canceled_big_money:true,
         l2_datas: [],
         l2_colors_class: ["color-single-start", "color-single-exec", "color-cancel",
            "color-real-order"
         ],
         kpl_code_info: null,
         l_up_cancel_indexes: [],
         l_down_cancel_indexes: [],
         h_cancel_indexes: [],
         buy_single_indexes: [],
         l2_code_name: '',
         operate_index: -1
         operate_index: -1,
         // 已经委托的买代码信息
         delegated_buy_code_infos: [],
         layui_element: null,
         l2_cant_buy_reasons: [],
         latest_cancel_orders: [],
         l2_min_volume:'',
         l2_max_volume:'',
         kpl_open_limit_up_count_rank:[],
         // 大单买卖数量
         big_buy_order_count:0,
         big_sell_order_count:0,
         // 过滤的索引
         filter_indexes:[],
         // 费用数据
         commission_data:{"total_commission":0, "month_commission":0},
         // L2数据结束索引
         l2_end_index:null
      },
      watch: {
         delegated_buy_code_infos: function() {
            if (app.layui_element) {
               setTimeout(() => {
                  app.layui_element.render();
               })
            }
         }
      },
      mounted: function() {
         layui.use('element', function() {
            var element = layui.element;
            app.layui_element = element;
         });
         layui.use('laydate', function(){
           var laydate = layui.laydate;
           //执行一个laydate实例
           laydate.render({
             elem: '#date' ,//指定元素
            type: 'date',
            position:'abolute'
           });
         });
         setInterval(function() {
            if (is_trade_time()) {
               app.get_latest_cancel_orders();
            }
         }, 1000 * 3);
         layui.use(function() {
            app.element = layui.element;
         });
      },
      methods: {
         change_data_type: function(type) {
            if (app.data_type == type) {
               return;
            }
            app.data_type = type;
            window.scrollTo(0,0);
            // if (app.data_type == type) {
            //    return;
            // }
            // app.data_type = type;
            // window.scrollTo(0,0);
            app.element.tabChange('test-handle', type);
         },
         refresh_trade_progress: function() {
            if (app.code == "000000") {
@@ -76,6 +139,8 @@
                  console.log("成交进度", res.data);
                  if (!res.data.is_default) {
                     app.trade_progress_index = res.data.trade_progress;
                     app.trade_progress_percent = res.data.percent;
                  }
               }
            });
@@ -86,8 +151,10 @@
               alert("没有获取到代码")
               return;
            }
            http_util.get_l2_l_cancel_datas(app.code, app.operate_index, function(res) {
               console.log("L撤结果",res);
            var date = $("#date").val();
            http_util.get_l2_l_cancel_datas(app.code, app.operate_index, date, function(res) {
               console.log("L撤结果", res);
               res = JSON.parse(res);
               if (res.code == 0) {
                  if (type_ == 0) {
@@ -106,6 +173,7 @@
            }
            http_util.get_l2_h_cancel_datas(app.code, app.operate_index, function(res) {
               res = JSON.parse(res);
               console.log("H撤數據",res)
               if (res.code == 0) {
                  app.h_cancel_indexes = res.data;
               }
@@ -116,17 +184,27 @@
               alert("没有获取到代码")
               return;
            }
            http_util.get_l2_datas(app.code, function(res) {
               console.log("获取到数据:",res)
            var index = layer.load(1, {
               shade: [0.1, '#fff'], //0.1透明度的白色背景
               shadeClose:true
            });
            var date = $("#date").val();
            http_util.get_l2_datas(app.code, date, app.l2_end_index, function(res) {
               layer.close(index);
               res = JSON.parse(res);
               if (res.code == 0) {
                  var real_order_index = -1;
                  var real_order_indexes = new Array();
                  var buy_singles = [];
                  res.data.forEach(function(e) {
                  var big_buy_order=0;
                  var big_sell_order=0;
                  res.data.data.delegates.forEach(function(e) {
                     if (e[1] != null) {
                        if (e[1][0] == 3) {
                           //真实下单位置
                           real_order_index = e[2][0];
                           real_order_indexes.push(e[2][0])
                        } else if (e[1][0] == 0) {
                           // 信号位置
                           buy_singles.push(e[2][0])
@@ -136,23 +214,101 @@
                        e[1] = '';
                     }
                     e[2][3] = e[2][3].slice(0, e[2][3].length - 1)
                     if(parseFloat(e[2][3])>=299&&e[2][6]=='买T'&&e[2][8]&&e[2][8].indexOf(":")>=0&&e[2][8].indexOf("-")<0&&e[2][8].indexOf("成交")<0){
                        // 大单数量
                        big_buy_order+=1;
                     }
                     if(e[2][5] == 6){
                        console.log("小单:", e)
                     }
                  });
                  console.log("最近真实下单位置:", real_order_index);
                  app.latest_real_order_index = real_order_index;
                  app.l2_datas = res.data;
                  app.l2_code_name = app.code_name.slice(0, app.code_name.indexOf(
                     " "))
                  res.data.data.transactions.forEach(function(e) {
                     if(parseFloat(e[2][3])>=299){
                        // 大单数量
                        big_sell_order+=1;
                     }
                  });
                  app.big_buy_order_count = big_buy_order;
                  app.big_sell_order_count = big_sell_order;
                  console.log("大单信息:","买:"+big_buy_order,"卖:"+big_sell_order);
                  console.log("最近真实下单位置:", real_order_indexes);
                  app.real_order_indexes = real_order_indexes;
                  app.l2_datas = res.data.data;
                  console.log("第1条L2数据:", res.data.data[0])
                  // console.log("L2数据:", app.l2_datas);
                  var code_name = res.data.code_name;
                  var code_ = res.data.code;
                  app.l2_code_name = code_ + " " + code_name;
                  // 清除成交进度,L撤, H撤
                  app.trade_progress_index = -1;
                  app.l_up_cancel_indexes = [];
                  app.l_down_cancel_indexes = [];
                  app.h_cancel_indexes = [];
                  app.buy_single_indexes = buy_singles;
               }else{
               } else {
                  alert(res.msg);
               }
            });
         },
         get_delegated_buy_code_infos: function() {
            // 获取数据
            http_util.get_delegated_buy_code_infos(function(result) {
               if (result.code == 0) {
                  console.log("已挂买单数据:", result.data);
                  result.data.delegates.forEach(function(e) {
                     if (e.total_num > 0) {
                        e.percent = e.finish_num * 100 / e.total_num;
                     } else {
                        e.percent = 0;
                     }
                  });
                  result.data.delegates.forEach(function(e){
                     if(e.buy1_money.indexOf("万")&&parseFloat(e.buy1_money.substring(0,e.buy1_money.indexOf("万")))<2000){
                        //封单2000w以下提醒
                        e.buy1_money_warning =  1;
                     }else{
                        e.buy1_money_warning =  0;
                     }
                  });
                  app.delegated_buy_code_infos = result.data.delegates;
                  app.account_available_money = result.data.account_available_money;
                  app.reset_l2_height();
               }
            });
         },
         get_latest_cancel_orders: function() {
            http_util.get_latest_cancel_orders(function(res) {
               res = JSON.parse(res);
               console.log("最近的撤单", res);
               if (res.code == 0) {
                  app.latest_cancel_orders = res.data;
                  app.reset_l2_height();
               }
            });
         },
         reset_l2_height: function() {
            var height = document.documentElement.clientHeight;
            console.log("屏幕:", height);
            $(".l2-content").eq(0).css("height", (height - 390 - 76 * app
                  .delegated_buy_code_infos.length - 24 * app.latest_cancel_orders.length
                  ) + "px");
         },
         clear_cancel_mark: function() {
            //清除撤单标记
@@ -160,34 +316,27 @@
            app.l_down_cancel_indexes = [];
            app.h_cancel_indexes = [];
         },
         get_last_trade_day_reasons: function(code) {
            http_util.get_last_trade_day_reasons(code, function(res) {
               res = JSON.parse(res);
               console.log("返回内容", res);
               if (res.code == 0) {
                  app.same_reason_codes = res.data;
               } else {
                  app.same_reason_codes = null;
               }
            });
         },
         hidden_canceled_check: function(e) {
            app.hidden_canceled = e.currentTarget.checked;
         },
         hidden_cancel_check: function(e) {
            app.hidden_cancel = e.currentTarget.checked;
         },
         hidden_sell_check: function(e) {
            app.hidden_sell = e.currentTarget.checked;
         },
         hidden_little_money_check:function(e){
         hidden_little_money_check: function(e) {
            app.hidden_little_money = e.currentTarget.checked;
         },
         hidden_canceled_big_money_check: function(e) {
            app.not_hidden_canceled_big_money = e.currentTarget.checked;
         },
         select_row: function(index) {
@@ -207,7 +356,6 @@
               console.log("交易数据", trade_data)
               console.log("交易记录数据", trade_record)
               app.code = code;
               // app.get_last_trade_day_reasons(code);
               app.code_name = code_name;
               if (trade_data) {
                  console.log("交易数据类型", typeof trade_data)
@@ -259,6 +407,7 @@
               console.log("处理出错")
               console.log(e)
            }
            app.get_l2_cant_buy_reasons(code);
         },
         show_more_records: function(items) {
            var str_ = ""
@@ -268,26 +417,278 @@
            });
            alert(str_);
         },
         test: function() {
         set_real_place_order_index: function() {
            // 设置真实下单位
            if (app.code) {
               layer.prompt({
                  formType: 0,
                  value: '',
                  title: '设置真实下单位-' + app.code,
                  area: ['800px', '350px'] //自定义文本域宽高
               }, function(value, index, elem) {
                  try {
                     if (isNaN(value)) {
                        layer.msg("请输入数字");
                        return;
                     } else {
                        http_util.set_real_place_order_index(app.code, parseInt(
                           value), function(res) {
                           // 获取到结果
                           console.log(res);
                           if (res.code != 0) {
                              layer.msg(res.msg, {
                                 icon: 5
                              });
                           } else {
                              layer.msg("设置成功", {
                                 icon: 1
                              });
                           }
                        })
                     }
                  } catch (e) {}
                  layer.close(index);
               });
               //set_real_place_order_index
            } else {
               layer.msg("请先加载数据");
            }
         },
         need_show:function(item){
            if(app.hidden_canceled&&(item[2][6].indexOf('买撤')>=0||(item[2][8]!=null&&item[2][8].indexOf("-")>0))){
         need_show: function(item) {
            if(app.filter_indexes.length>0){
               if(app.filter_indexes.indexOf(item[2][0])>=0)
               {
                   return true;
               }else{
                  return false;
               }
            }
            if(app.real_order_indexes.includes( item[2][0])){
               return true;
            }
            if (app.hidden_canceled && (item[2][6].indexOf('买撤') >= 0 || (item[2][8] != null &&
                  item[2][8].indexOf("-") > 0))) {
               if(!app.not_hidden_canceled_big_money){
                  // 隐藏已撤大单
                  return false;
               }else{
                  // 不隐藏已撤大单
                  if(parseFloat(item[2][3])<299)
                  {
                      return false;
                  }
               }
            }
            if (app.hidden_sell && item[2][6].indexOf('卖') >= 0) {
               return false;
            }
            
            if(app.hidden_sell&&item[2][6].indexOf('卖')>=0){
            if (app.hidden_cancel && (item[2][6].indexOf('买撤') >= 0)) {
               return false;
            }
            if (app.hidden_little_money && parseFloat(item[2][3]) < 5) {
               return false;
            }
            
            if(app.hidden_cancel&&(item[2][6].indexOf('买撤')>=0)){
               return false;
            }
            if(app.hidden_little_money&&parseFloat(item[2][3])<50&&item[2][0]!=app.latest_real_order_index){
            if(app.l2_min_volume!=null&&!isNaN(app.l2_min_volume)&&parseInt(app.l2_min_volume) > parseInt(item[2][5])){
               return false;
            }
            
            if(app.l2_max_volume!=null&&!isNaN(app.l2_max_volume)&&parseInt(app.l2_max_volume) < parseInt(item[2][5])){
               return false;
            }
            return true;
         },
         get_score_data: function(code, name, callback) {
            console.log("获取分数数据:", code, name);
            var date = $("#date").val();
            http_util.get_score_data(code, name,date, function(res) {
               res = JSON.parse(res)
               console.log("分数请求结果:", res)
               if (res.code == 0) {
                  console.log("获取分数", res)
                  app.code = res.data.code
                  app.code_name = res.data.code_name
                  if (res.data.score_data) {
                     app.score_data = res.data.score_data;
                  } else {
                     app.score_data = app.default_score_data;
                  }
                  if (res.data.trade_data) {
                     app.trade_data = {
                        order: res.data.trade_data.trade_state.order
                     }
                  } else {
                     res.data.trade_data = {
                        order: false
                     };
                     app.trade_data = res.data.trade_data
                  }
                  app.kpl_code_info = res.data.kpl_code_info;
                  //通知副屏改变内容
                  app.set_trade_info(app.code, app.code_name,
                     res.data.trade_data,
                     res.data.trade_record,
                     res.data.initiative_buy_codes,
                     res.data.passive_buy_codes);
                  if (callback) {
                     callback()
                  }
               }
            });
         },
         set_target_code: function(code) {
            console.log("设置目标代码", code);
            app.origin_code = code;
            app.code_name = code;
         },
         load_data: function(refresh_l2) {
            if (app.origin_code) {
               app.get_score_data(app.origin_code, null, function(e) {
                  // if (refresh_l2) {
                  //    app.refresh_l2_data();
                  // }
               });
               app.get_l2_cant_buy_reasons(app.origin_code);
               http_util.get_open_limit_up_count_rank(null,function(res){
                  res = JSON.parse(res);
                  if(res.code ==0){
                     app.kpl_open_limit_up_count_rank = res.data;
                  }
               });
            }
         },
         cancel_order: function(code) {
            http_util.cancel_order(code, function(res) {
               layer.msg("撤单成功");
            });
         },
         view_details: function(code, need_l2) {
            pyjs.add_code_to_ths(code);
            // 设置目标代码
            app.set_target_code(code);
            // 将目标票传递到首页
            pyjs.set_target_code(code);
            if (need_l2) {
               // 点击选择L2选项
               app.change_data_type(1);
               app.load_data(true);
            } else {
               app.change_data_type(0);
               app.load_data(false);
            }
         },
         get_l2_cant_buy_reasons: function(code) {
            http_util.get_l2_cant_buy_reasons(code, function(res) {
               res = JSON.parse(res);
               if (res.code == 0) {
                  app.l2_cant_buy_reasons = res.data;
               } else {
                  app.l2_cant_buy_reasons = []
               }
            });
         },
         screen_l2_data:function(code){
            // 筛选l2数据
            layer.open({
               title: 'L2数据筛选',
               type: 1,
               content: $("#l2_screen"),
            });
         },
         l2_screen_click:function(){
            // L2筛选
            if(!isNaN($("#min-volume").val())){
               app.l2_min_volume=$("#min-volume").val();
            }else{
               app.l2_min_volume=null;
            }
            if(!isNaN($("#max-volume").val())){
               app.l2_max_volume=$("#max-volume").val();
            }else{
               app.l2_max_volume=null;
            }
            if(!isNaN($("#end-index").val())){
               app.l2_end_index=$("#end-index").val();
            }else{
               app.l2_end_index=null;
            }
            watch_indexes_str = $("#watch_indexes").val();
            if(watch_indexes_str!=null&&watch_indexes_str.length>0){
               var final_indexes=[];
               var indexes = watch_indexes_str.split(",");
               indexes.forEach(function(e){
                 final_indexes.push(parseInt(e));
               });
               app.filter_indexes = final_indexes;
               console.log("选中索引:",final_indexes);
            }else{
               app.filter_indexes =[];
            }
            layer.msg("设置成功")
         },
         fordbidden_buy:function(code){
            // 加入黑名单
             http_util.do_action_for_code(code,null,0,function(res){
                if(res.code!=0){
                   layer.msg(res.msg);
                }
             });
         },
         get_account_commission_detail:function(){
             http_util.get_account_commission_detail(function(res){
                res = JSON.parse(res);
                 console.log(res);
                if(res.code!=0){
                   layer.msg(res.msg);
                }else{
                   let commission_data ={};
                   // commission_data.commission = =res.data.commission;
                   commission_data.delegates =res.data.delegates ;
                   commission_data.deals =res.data.deals;
                  var total_money = 0;
                   for(let k in commission_data.delegates){
                      total_money -=commission_data.delegates[k]["money"];
                   }
                   for(let k in commission_data.deals){
                      total_money +=commission_data.deals[k]["money"];
                   }
                   commission_data.total_commission = total_money.toFixed(2);
                   commission_data.commission = res.data.commission;
                    commission_data.month_commission = res.data.month_commission;
                   console.log(commission_data)
                   app.commission_data = commission_data;
                }
             });
         }
      }
   })