sbd-npm 1.4.97 → 1.4.98

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sbd-npm",
3
- "version": "1.4.97",
3
+ "version": "1.4.98",
4
4
  "description": "Stock Big Data",
5
5
  "author": "DHQ <dhq314@gmail.com>",
6
6
  "license": "ISC",
package/status.js CHANGED
@@ -1077,7 +1077,7 @@ $(function () {
1077
1077
 
1078
1078
  init_machine_instruction_modal: function () {
1079
1079
  Util.init_modal_skeleton("machine_instruction_modal");
1080
- $("#machine_instruction_modal_title").html("添加任务");
1080
+ $("#machine_instruction_modal_title").html("添加任务<span style='color: #BDBDBD;' id='machine_instruction_modal_title_tips'></span>");
1081
1081
  let html = [];
1082
1082
  html.push('<form data-parsley-validate class="form-horizontal form-label-left">');
1083
1083
  html.push('<div class="form-group" id="action_machine_div">');
@@ -1115,12 +1115,12 @@ $(function () {
1115
1115
  } else {
1116
1116
  $("#action_machine_div").css("display", "block");
1117
1117
  }
1118
- Util.post(location.pathname, {active_div: "machine_instruction", action_type: action_type}, function (j) {
1118
+ let machine_id = $("#machines").val();
1119
+ Util.post(location.pathname, {active_div: "machine_instruction", action_type: action_type, "machine_id": machine_id}, function (j) {
1119
1120
  if (j.machines) {
1120
1121
  Status.pack_machine_component("machine_instruction_machine", j.machines);
1121
- let machine = $("#machines").val();
1122
- if (machine) {
1123
- $("#machine_instruction_machine").val(machine);
1122
+ if (machine_id) {
1123
+ $("#machine_instruction_machine").val(machine_id);
1124
1124
  }
1125
1125
  }
1126
1126
  if (j.instructions) {
@@ -1130,6 +1130,8 @@ $(function () {
1130
1130
  });
1131
1131
  $("#machine_instruction_content").html(instruction_html.join(""));
1132
1132
  }
1133
+ let handle_instruction = j.instruction ? ("&nbsp;(" + j.instruction + ")") : "";
1134
+ $("#machine_instruction_modal_title_tips").html(handle_instruction);
1133
1135
  Util.hide_tips();
1134
1136
  });
1135
1137
  });
@@ -1153,6 +1155,7 @@ $(function () {
1153
1155
  $("#machine_instruction_add").attr("disabled", false);
1154
1156
  if (j.code === 1) {
1155
1157
  $("#machine_instruction_tips").html("<b class='text-success'>任务`" + instruction + "`添加成功!</b>");
1158
+ $("#machine_instruction_modal_title_tips").html("&nbsp;(" + instruction + ")");
1156
1159
  } else if (j.code === 2) {
1157
1160
  $("#machine_instruction_tips").html("<b class='text-danger'>Machine 不存在!</b>");
1158
1161
  } else if (j.code === 3) {
@@ -1207,9 +1210,9 @@ $(function () {
1207
1210
  Util.post(location.pathname, {active_div: "machine_instruction", action_type: 2}, function (j) {
1208
1211
  if (j.machines) {
1209
1212
  Status.pack_machine_component("machine_cookie_machine", j.machines);
1210
- let machine = $("#machines").val();
1211
- if (machine) {
1212
- $("#machine_cookie_machine").val(machine);
1213
+ let machine_id = $("#machines").val();
1214
+ if (machine_id) {
1215
+ $("#machine_cookie_machine").val(machine_id);
1213
1216
  }
1214
1217
  }
1215
1218
  Util.hide_tips();
package/stock_basics.js CHANGED
@@ -182,15 +182,15 @@ let Stock = {
182
182
  high_52week.html(Util.digit_compare_trend(high_52week.text(), item.price));
183
183
  let low_52week = $("#low_52week");
184
184
  low_52week.html(Util.digit_compare_trend(low_52week.text(), item.price));
185
- if (item["high_history"]["close"]) {
185
+ if (item.high_history.close) {
186
186
  let high_history = $("#high_history");
187
- high_history.html(Util.digit_compare_trend(item["high_history"]["close"], item.price));
188
- high_history.attr("title", Util.seconds_to_format(item["high_history"]["date"], "%Y-%m-%d"))
187
+ high_history.html(Util.digit_compare_trend(item.high_history.close, item.price));
188
+ high_history.attr("title", Util.seconds_to_format(item.high_history.date, "%Y-%m-%d"))
189
189
  }
190
- if (item["low_history"]["close"]) {
190
+ if (item.low_history.close) {
191
191
  let low_history = $("#low_history");
192
- low_history.html(Util.digit_compare_trend(item["low_history"]["close"], item.price));
193
- low_history.attr("title", Util.seconds_to_format(item["low_history"]["date"], "%Y-%m-%d"))
192
+ low_history.html(Util.digit_compare_trend(item.low_history.close, item.price));
193
+ low_history.attr("title", Util.seconds_to_format(item.low_history.date, "%Y-%m-%d"))
194
194
  }
195
195
  // 备注
196
196
  let remark_html = [];
@@ -203,15 +203,15 @@ let Stock = {
203
203
  if (item.is_macd_cross) {
204
204
  remark_html.push("<a class='btn btn-xs btn-danger' href='" + Util.get_url("trend_macd_cross") + "'>MACD金叉</a>");
205
205
  }
206
- if (item["is_margin_minimum"]) {
206
+ if (item.is_margin_minimum) {
207
207
  remark_html.push("<a class='btn btn-xs btn-danger' href='" + Util.get_url("rank_margin_minimum") + "'>融资余额创新低</a>");
208
208
  }
209
- if (item["xsg_date"] > 0) {
210
- let xsg_date = Util.seconds_to_format(item["xsg_date"], "%Y-%m-%d");
209
+ if (item.xsg_date > 0) {
210
+ let xsg_date = Util.seconds_to_format(item.xsg_date, "%Y-%m-%d");
211
211
  remark_html.push("<b class='text-success'>最近解禁<a href='" + Util.get_url("holder_restricted") + "?tab=xsg_list&date=" + xsg_date + "'>" + xsg_date + "</a></b>, ");
212
212
  }
213
- if (item.price > 0 && item.price < item["block_trade_price"]) {
214
- remark_html.push("<b class='text-danger'>当前价小于最近<a href='" + Util.get_url("daily_block") + "?code=" + item.code + "&start_date=" + Util.seconds_to_format(Stock.ttm_second, "%Y-%m-%d") + "'>大宗交易价(" + item["block_trade_price"] + ")</a></b>, ");
213
+ if (item.price > 0 && item.price < item.block_trade_price) {
214
+ remark_html.push("<b class='text-danger'>当前价小于最近<a href='" + Util.get_url("daily_block") + "?code=" + item.code + "&start_date=" + Util.seconds_to_format(Stock.ttm_second, "%Y-%m-%d") + "'>大宗交易价(" + item.block_trade_price + ")</a></b>, ");
215
215
  }
216
216
  if (remark_html.length > 0) {
217
217
  remark_html.push("<br>");
@@ -234,13 +234,13 @@ let Stock = {
234
234
  if (item.is_sh50) {
235
235
  remark_html += " <a href='" + (Util.get_url("summary_index") + "?index_code=SH000016") + "' class='btn btn-xs btn-warning'>上证50</a>";
236
236
  }
237
- if (item["is_star50"]) {
237
+ if (item.is_star50) {
238
238
  remark_html += " <a href='" + (Util.get_url("summary_index") + "?index_code=SH000688") + "' class='btn btn-xs btn-warning'>科创50</a>";
239
239
  }
240
- if (item["is_gem50"]) {
240
+ if (item.is_gem50) {
241
241
  remark_html += " <a href='" + (Util.get_url("summary_index") + "?index_code=SZ399673") + "' class='btn btn-xs btn-warning'>创业板50</a>";
242
242
  }
243
- if (item["is_hs300"]) {
243
+ if (item.is_hs300) {
244
244
  remark_html += " <a href='" + (Util.get_url("summary_index") + "?index_code=SH000300") + "' class='btn btn-xs btn-warning'>沪深300</a>";
245
245
  }
246
246
  if (item.etf_data) {
@@ -362,8 +362,8 @@ let Stock = {
362
362
  if (j.high_amount && j.high_amount > 0) {
363
363
  stock_hist_summary += "<b>历史最高成交额(<a class='hist_summary_link' href='#'>" + Util.seconds_to_format(j.high_amount_date, "%Y-%m-%d") + "</a>):<span class='label label-danger'>" + Util.to_unit(j.high_amount) + "</span></b>,";
364
364
  }
365
- if (j["high_volume"] && j["high_volume"] > 0) {
366
- stock_hist_summary += "<b>历史最高成交量(<a class='hist_summary_link' href='#'>" + Util.seconds_to_format(j["high_volume_date"], "%Y-%m-%d") + "</a>):<span class='label label-danger'>" + Util.to_unit(j["high_volume"]) + "手</span></b>,";
365
+ if (j.high_volume && j.high_volume > 0) {
366
+ stock_hist_summary += "<b>历史最高成交量(<a class='hist_summary_link' href='#'>" + Util.seconds_to_format(j.high_volume_date, "%Y-%m-%d") + "</a>):<span class='label label-danger'>" + Util.to_unit(j.high_volume) + "手</span></b>,";
367
367
  }
368
368
  stock_hist_summary += "<b>时间区间内总成交额: <span class='label label-info'>" + Util.to_unit(total_amount) + "</span>,总成交量: <span class='label label-info'>" + Util.to_unit(total_volume) + "</span> 股,平均成交价: <span class='label label-warning'>" + Util.to_float(total_amount / total_volume, 2) + "</span></b>";
369
369
  $("#stock_hist_summary").html(stock_hist_summary);
@@ -415,10 +415,10 @@ let Stock = {
415
415
  let date = j.data["date"];
416
416
  //Stock.pack_big_deal("big_deal1", j.data, "最近一天", date, date);
417
417
  }
418
- if (j["money_net_inflow"]) {
418
+ if (j.money_net_inflow) {
419
419
  let html = [], i = 0, total_net_inflow = 0;
420
420
  let day3_net_inflow = 0, day5_net_inflow = 0, day10_net_inflow = 0, day20_net_inflow = 0, day60_net_inflow = 0;
421
- j["money_net_inflow"].forEach(function (item) {
421
+ j.money_net_inflow.forEach(function (item) {
422
422
  i++;
423
423
  total_net_inflow += item.main_net_inflow;
424
424
  if (i <= 3) {
@@ -440,10 +440,10 @@ let Stock = {
440
440
  html.push("<td>", Util.seconds_to_format(item.date, "%Y-%m-%d"), "</td>");
441
441
  html.push("<td><b class='", Util.text_color(item.price_change), "'>", item.price, "(", item.price_change, "%)</b></td>");
442
442
  html.push("<td data-val='", item.main_net_inflow, "'><b class='", Util.text_color(item.main_net_inflow), "'>", Util.to_unit(item.main_net_inflow), "</b></td>");
443
- html.push("<td data-val='", item["large_net_inflow"], "'><b class='", Util.text_color(item["large_net_inflow"]), "'>", Util.to_unit(item["large_net_inflow"]), "</b></td>");
444
- html.push("<td data-val='", item["big_net_inflow"], "'><b class='", Util.text_color(item["big_net_inflow"]), "'>", Util.to_unit(item["big_net_inflow"]), "</b></td>");
445
- html.push("<td data-val='", item["middle_net_inflow"], "'><b class='", Util.text_color(item["middle_net_inflow"]), "'>", Util.to_unit(item["middle_net_inflow"]), "</b></td>");
446
- html.push("<td data-val='", item["small_net_inflow"], "'><b class='", Util.text_color(item["small_net_inflow"]), "'>", Util.to_unit(item["small_net_inflow"]), "</b></td>");
443
+ html.push("<td data-val='", item.large_net_inflow, "'><b class='", Util.text_color(item.large_net_inflow), "'>", Util.to_unit(item.large_net_inflow), "</b></td>");
444
+ html.push("<td data-val='", item.big_net_inflow, "'><b class='", Util.text_color(item.big_net_inflow), "'>", Util.to_unit(item.big_net_inflow), "</b></td>");
445
+ html.push("<td data-val='", item.middle_net_inflow, "'><b class='", Util.text_color(item.middle_net_inflow), "'>", Util.to_unit(item.middle_net_inflow), "</b></td>");
446
+ html.push("<td data-val='", item.small_net_inflow, "'><b class='", Util.text_color(item.small_net_inflow), "'>", Util.to_unit(item.small_net_inflow), "</b></td>");
447
447
  html.push("<td class='volume-td'>", Util.to_float(item.volume / 10000, 2), "万手</td>");
448
448
  html.push("<td class='amount-td'>", Util.to_hundred_million(item.amount), "亿</td>");
449
449
  html.push("</tr>");
@@ -541,7 +541,7 @@ let Stock = {
541
541
  circulation_html.push("</tr>");
542
542
  }
543
543
  });
544
- j["pre_data"].forEach(function (item) {
544
+ j.pre_data.forEach(function (item) {
545
545
  if (parseInt(item.type) === 1) {
546
546
  pre_main_volume += item.volume;
547
547
  } else {
@@ -555,8 +555,8 @@ let Stock = {
555
555
  circulation_tips += ", 上一季度是: <span class='label label-info'>" + Util.to_unit(pre_circulation_volume, 3) + "</span>,";
556
556
  circulation_tips += " 持股数环比: " + Util.year_price_rate(circulation_volume, pre_circulation_volume, 1);
557
557
  }
558
- if (j["date_price"]) {
559
- circulation_tips += ", 当时价: " + Util.digit_compare_trend1(Stock.price, j["date_price"]);
558
+ if (j.date_price) {
559
+ circulation_tips += ", 当时价: " + Util.digit_compare_trend1(Stock.price, j.date_price);
560
560
  }
561
561
  circulation_tips += " ]";
562
562
  }
@@ -652,18 +652,18 @@ let Stock = {
652
652
  Util.post("/stock/" + Stock.code, {action: "finance"}, function (j) {
653
653
  // 现金流量表
654
654
  let html = [], total_ncf_from_oa = 0, total_cash_paid_for_assets = 0, total_free_cash_flow = 0, total_ncf_from_fa = 0;
655
- j["cash_flow_data"].forEach(function (item) {
656
- total_ncf_from_oa += item["ncf_from_oa"];
657
- total_cash_paid_for_assets += item["cash_paid_for_assets"];
658
- let free_cash_flow = item["ncf_from_oa"] - item["cash_paid_for_assets"];
655
+ j.cash_flow_data.forEach(function (item) {
656
+ total_ncf_from_oa += item.ncf_from_oa;
657
+ total_cash_paid_for_assets += item.cash_paid_for_assets;
658
+ let free_cash_flow = item.ncf_from_oa - item.cash_paid_for_assets;
659
659
  total_free_cash_flow += free_cash_flow;
660
- total_ncf_from_fa += item["ncf_from_fa"];
660
+ total_ncf_from_fa += item.ncf_from_fa;
661
661
  html.push("<tr>");
662
662
  html.push("<td>", Util.seconds_to_format(item.date, "%Y"), "</td>");
663
- html.push("<td>", Util.to_unit(item["ncf_from_oa"]), "</td>");
664
- html.push("<td>", Util.to_unit(item["cash_paid_for_assets"]), "</td>");
663
+ html.push("<td>", Util.to_unit(item.ncf_from_oa), "</td>");
664
+ html.push("<td>", Util.to_unit(item.cash_paid_for_assets), "</td>");
665
665
  html.push("<td>", Util.to_unit(free_cash_flow), "</td>");
666
- html.push("<td>", Util.to_unit(item["ncf_from_fa"]), "</td>");
666
+ html.push("<td>", Util.to_unit(item.ncf_from_fa), "</td>");
667
667
  html.push("</tr>");
668
668
  });
669
669
  total_ncf_from_oa = total_ncf_from_oa >= 0 ? (Util.to_hundred_million(total_ncf_from_oa) + "亿") : ("<b class='text-danger'>" + Util.to_hundred_million(total_ncf_from_oa) + "亿</b>");
@@ -674,7 +674,7 @@ let Stock = {
674
674
  Util.render_table_html("cash_flow_table_body", html);
675
675
  // 资产负债表
676
676
  html = [];
677
- j["assets_liabilities_data"].forEach(function (item) {
677
+ j.assets_liabilities_data.forEach(function (item) {
678
678
  let net_assets = item.total_assets - item.total_liabilities;
679
679
  let goodwill = "--";
680
680
  let goodwill_rate = "--";
@@ -683,8 +683,8 @@ let Stock = {
683
683
  goodwill_rate = Util.to_float((item.goodwill / net_assets) * 100, 2) + "%";
684
684
  }
685
685
  let debt_asset_ratio = "--";
686
- if (item["debt_asset_ratio"] > 0) {
687
- debt_asset_ratio = Util.to_float(item["debt_asset_ratio"], 2) + "%";
686
+ if (item.debt_asset_ratio > 0) {
687
+ debt_asset_ratio = Util.to_float(item.debt_asset_ratio, 2) + "%";
688
688
  }
689
689
  html.push("<tr>");
690
690
  html.push("<td>", item.year, "(", item.quarter, ")</td>");
@@ -692,12 +692,12 @@ let Stock = {
692
692
  html.push("<td>", Util.to_unit(item.total_liabilities), "</td>");
693
693
  html.push("<td>", Util.to_unit(net_assets), "</td>");
694
694
  html.push("<td>", debt_asset_ratio, "</td>");
695
- html.push("<td>", Util.to_unit(item["currency_funds"]), "</td>");
696
- html.push("<td>", Util.to_unit(item["short_term_loan"]), "</td>");
697
- html.push("<td>", Util.to_unit(item["noncurrent_liab_due_in1y"]), "</td>");
695
+ html.push("<td>", Util.to_unit(item.currency_funds), "</td>");
696
+ html.push("<td>", Util.to_unit(item.short_term_loan), "</td>");
697
+ html.push("<td>", Util.to_unit(item.noncurrent_liab_due_in1y), "</td>");
698
698
  let flr = "--";
699
- if (item["short_term_loan"] > 0 && item["noncurrent_liab_due_in1y"] > 0) {
700
- flr = Util.to_float(item["currency_funds"] / (item["short_term_loan"] + item["noncurrent_liab_due_in1y"]), 2);
699
+ if (item.short_term_loan > 0 && item.noncurrent_liab_due_in1y > 0) {
700
+ flr = Util.to_float(item.currency_funds / (item.short_term_loan + item.noncurrent_liab_due_in1y), 2);
701
701
  flr = flr >= 1 ? flr : ("<b class='text-danger'>" + flr + "</br>");
702
702
  }
703
703
  html.push("<td>", flr, "</td>");
@@ -706,7 +706,7 @@ let Stock = {
706
706
  html.push("</tr>");
707
707
  });
708
708
  Util.render_table_html("assets_liabilities_table_body", html);
709
- Stock.income_statement_data = j["income_statement_data"] ? j["income_statement_data"] : [];
709
+ Stock.income_statement_data = j.income_statement_data ? j.income_statement_data : [];
710
710
  Stock.render_income_statement_data();
711
711
  $("#quarter").change(function () {
712
712
  Stock.render_income_statement_data();
@@ -734,48 +734,48 @@ let Stock = {
734
734
  let total_revenue = Util.to_unit(item.total_revenue, 3);
735
735
  html.push("<td>", total_revenue, "</td>");
736
736
  let total_revenue_yoy_title = "", total_revenue_yoy_ratio = "--";
737
- if (item["yoy_total_revenue"]) {
738
- total_revenue_yoy_title = " title='" + Util.to_unit(item["yoy_total_revenue"], 2, 0) + " - " + Util.strip_html(total_revenue) + "'";
739
- total_revenue_yoy_ratio = Util.to_float(((item.total_revenue - item["yoy_total_revenue"]) / item["yoy_total_revenue"]) * 100, 2);
737
+ if (item.yoy_total_revenue) {
738
+ total_revenue_yoy_title = " title='" + Util.to_unit(item.yoy_total_revenue, 2, 0) + " - " + Util.strip_html(total_revenue) + "'";
739
+ total_revenue_yoy_ratio = Util.to_float(((item.total_revenue - item.yoy_total_revenue) / item.yoy_total_revenue) * 100, 2);
740
740
  total_revenue_yoy_ratio = Util.parse_ratio(total_revenue_yoy_ratio);
741
741
  }
742
742
  html.push("<td", total_revenue_yoy_title, ">", total_revenue_yoy_ratio, "</td>");
743
743
  let total_revenue_qoq_title = "", total_revenue_qoq_ratio = "--";
744
- if (item["qoq_total_revenue"]) {
745
- total_revenue_qoq_title = " title='" + Util.to_unit(item["qoq_total_revenue"], 2, 0) + " - " + Util.to_unit(item["total_revenue_add"], 2, 0) + "'";
746
- total_revenue_qoq_ratio = Util.to_float(((item["total_revenue_add"] - item["qoq_total_revenue"]) / item["qoq_total_revenue"]) * 100, 2);
744
+ if (item.qoq_total_revenue) {
745
+ total_revenue_qoq_title = " title='" + Util.to_unit(item.qoq_total_revenue, 2, 0) + " - " + Util.to_unit(item.total_revenue_add, 2, 0) + "'";
746
+ total_revenue_qoq_ratio = Util.to_float(((item.total_revenue_add - item.qoq_total_revenue) / item.qoq_total_revenue) * 100, 2);
747
747
  total_revenue_qoq_ratio = Util.parse_ratio(total_revenue_qoq_ratio);
748
748
  }
749
749
  html.push("<td", total_revenue_qoq_title, ">", total_revenue_qoq_ratio, "</td>");
750
750
  let net_profit = Util.to_unit(item.net_profit, 3);
751
751
  html.push("<td>", net_profit, "</td>");
752
752
  let net_profit_yoy_title = "", net_profit_yoy_ratio = "--";
753
- if (item["yoy_net_profit"]) {
754
- net_profit_yoy_title = " title='" + Util.to_unit(item["yoy_net_profit"], 2, 0) + " - " + Util.strip_html(net_profit) + "'";
755
- net_profit_yoy_ratio = Util.to_float(((item.net_profit - item["yoy_net_profit"]) / item["yoy_net_profit"]) * 100, 2);
753
+ if (item.yoy_net_profit) {
754
+ net_profit_yoy_title = " title='" + Util.to_unit(item.yoy_net_profit, 2, 0) + " - " + Util.strip_html(net_profit) + "'";
755
+ net_profit_yoy_ratio = Util.to_float(((item.net_profit - item.yoy_net_profit) / item.yoy_net_profit) * 100, 2);
756
756
  net_profit_yoy_ratio = Util.parse_ratio(net_profit_yoy_ratio);
757
757
  }
758
758
  html.push("<td", net_profit_yoy_title, ">", net_profit_yoy_ratio, "</td>");
759
759
  let net_profit_qoq_title = "", net_profit_qoq_ratio = "--";
760
- if (item["qoq_net_profit"]) {
761
- net_profit_qoq_title = " title='" + Util.to_unit(item["qoq_net_profit"], 2, 0) + " - " + Util.to_unit(item["net_profit_add"], 2, 0) + "'";
762
- net_profit_qoq_ratio = Util.to_float(((item["net_profit_add"] - item["qoq_net_profit"]) / item["qoq_net_profit"]) * 100, 2);
760
+ if (item.qoq_net_profit) {
761
+ net_profit_qoq_title = " title='" + Util.to_unit(item.qoq_net_profit, 2, 0) + " - " + Util.to_unit(item.net_profit_add, 2, 0) + "'";
762
+ net_profit_qoq_ratio = Util.to_float(((item.net_profit_add - item.qoq_net_profit) / item.qoq_net_profit) * 100, 2);
763
763
  net_profit_qoq_ratio = Util.parse_ratio(net_profit_qoq_ratio);
764
764
  }
765
765
  html.push("<td", net_profit_qoq_title, ">", net_profit_qoq_ratio, "</td>");
766
766
  let adjusted_net_profit = Util.to_unit(item.adjusted_net_profit, 3);
767
767
  html.push("<td>", adjusted_net_profit, "</td>");
768
768
  let adjusted_net_profit_yoy_title = "", adjusted_net_profit_yoy_ratio = "--";
769
- if (item["yoy_adjusted_net_profit"]) {
770
- adjusted_net_profit_yoy_title = " title='" + Util.to_unit(item["yoy_adjusted_net_profit"], 2, 0) + " - " + Util.strip_html(adjusted_net_profit) + "'";
771
- adjusted_net_profit_yoy_ratio = Util.to_float(((item.adjusted_net_profit - item["yoy_adjusted_net_profit"]) / item["yoy_adjusted_net_profit"]) * 100, 2);
769
+ if (item.yoy_adjusted_net_profit) {
770
+ adjusted_net_profit_yoy_title = " title='" + Util.to_unit(item.yoy_adjusted_net_profit, 2, 0) + " - " + Util.strip_html(adjusted_net_profit) + "'";
771
+ adjusted_net_profit_yoy_ratio = Util.to_float(((item.adjusted_net_profit - item.yoy_adjusted_net_profit) / item.yoy_adjusted_net_profit) * 100, 2);
772
772
  adjusted_net_profit_yoy_ratio = Util.parse_ratio(adjusted_net_profit_yoy_ratio);
773
773
  }
774
774
  html.push("<td", adjusted_net_profit_yoy_title, ">", adjusted_net_profit_yoy_ratio, "</td>");
775
775
  let adjusted_net_profit_qoq_title = "", adjusted_net_profit_qoq_ratio = "--";
776
- if (item["qoq_adjusted_net_profit"]) {
777
- adjusted_net_profit_qoq_title = " title='" + Util.to_unit(item["qoq_adjusted_net_profit"], 2, 0) + " - " + Util.to_unit(item["adjusted_net_profit_add"], 2, 0) + "'";
778
- adjusted_net_profit_qoq_ratio = Util.to_float(((item["adjusted_net_profit_add"] - item["qoq_adjusted_net_profit"]) / item["qoq_adjusted_net_profit"]) * 100, 2);
776
+ if (item.qoq_adjusted_net_profit) {
777
+ adjusted_net_profit_qoq_title = " title='" + Util.to_unit(item.qoq_adjusted_net_profit, 2, 0) + " - " + Util.to_unit(item.adjusted_net_profit_add, 2, 0) + "'";
778
+ adjusted_net_profit_qoq_ratio = Util.to_float(((item.adjusted_net_profit_add - item.qoq_adjusted_net_profit) / item.qoq_adjusted_net_profit) * 100, 2);
779
779
  adjusted_net_profit_qoq_ratio = Util.parse_ratio(adjusted_net_profit_qoq_ratio);
780
780
  }
781
781
  html.push("<td", adjusted_net_profit_qoq_title, ">", adjusted_net_profit_qoq_ratio, "</td>");
@@ -829,22 +829,22 @@ let Stock = {
829
829
  if (j.latest_date > latest_date) {
830
830
  latest_date = latest_date_format;
831
831
  date_data.unshift(latest_date);
832
- holder_data.unshift(j["latest_holder_num"]);
833
- price_data.unshift(j["latest_day_price"]);
832
+ holder_data.unshift(j.latest_holder_num);
833
+ price_data.unshift(j.latest_day_price);
834
834
  } else {
835
835
  latest_date = Util.seconds_to_format(latest_date, "%Y-%m-%d");
836
836
  }
837
- if (j["latest_holder_num"] > max_holder_num) {
838
- max_holder_num = j["latest_holder_num"];
837
+ if (j.latest_holder_num > max_holder_num) {
838
+ max_holder_num = j.latest_holder_num;
839
839
  max_holder_num_date = latest_date_format;
840
840
  }
841
- if (j["latest_holder_num"] < min_holder_num) {
842
- min_holder_num = j["latest_holder_num"];
841
+ if (j.latest_holder_num < min_holder_num) {
842
+ min_holder_num = j.latest_holder_num;
843
843
  min_holder_num_date = latest_date_format;
844
844
  }
845
- max_holder_num = Math.max(max_holder_num, j["latest_holder_num"]);
846
- min_holder_num = Math.min(min_holder_num, j["latest_holder_num"]);
847
- holder_num_summary += "最新(" + latest_date + "):" + Util.digit_compare_trend(j["latest_holder_num"], j["previous_holder_num"]);
845
+ max_holder_num = Math.max(max_holder_num, j.latest_holder_num);
846
+ min_holder_num = Math.min(min_holder_num, j.latest_holder_num);
847
+ holder_num_summary += "最新(" + latest_date + "):" + Util.digit_compare_trend(j.latest_holder_num, j.previous_holder_num);
848
848
  }
849
849
  if (max_holder_num > 0) {
850
850
  holder_num_summary += "&nbsp;&nbsp;历史最多(" + max_holder_num_date + "):<b class='text-success'>" + max_holder_num + "</b>&nbsp;&nbsp;历史最少(" + min_holder_num_date + "):<b class='text-danger'>" + min_holder_num + "<b>";
@@ -1028,8 +1028,8 @@ let Stock = {
1028
1028
  }
1029
1029
  });
1030
1030
  }
1031
- if (j["interval_week"]) {
1032
- $("#" + metrics + "_tips").html("<b class='text-success'>(创连续" + j["interval_week"] + "周成交额最低)<b>");
1031
+ if (j.interval_week) {
1032
+ $("#" + metrics + "_tips").html("<b class='text-success'>(创连续" + j.interval_week + "周成交额最低)<b>");
1033
1033
  }
1034
1034
  Util.hide_tips();
1035
1035
  });
@@ -1055,7 +1055,7 @@ let Stock = {
1055
1055
  color_data.push("#C9CBCF");
1056
1056
  });
1057
1057
  Stock["bias_chart"] = Util.bias_bar_line(Stock["bias_chart"], "bias_line_chart", date_data, bias120_data, color_data, bias20_data, bias60_data, price_data);
1058
- $("#bias_summary").html("当前120日乖离率:" + Util.label_text_color(current_bias120) + ", 60日乖离率:" + Util.label_text_color(current_bias60) + ", 20日乖离率:" + Util.label_text_color(current_bias20) + ",20日最高乖离率:" + Util.label_text_color(j["max_bias20"]) + "(" + Util.seconds_to_format(j["max_bias20_date"], "%Y-%m-%d") + "),20日最低乖离率:" + Util.label_text_color(j["min_bias20"]) + "(" + Util.seconds_to_format(j["min_bias20_date"], "%Y-%m-%d") + ")");
1058
+ $("#bias_summary").html("当前120日乖离率:" + Util.label_text_color(current_bias120) + ", 60日乖离率:" + Util.label_text_color(current_bias60) + ", 20日乖离率:" + Util.label_text_color(current_bias20) + ",20日最高乖离率:" + Util.label_text_color(j.max_bias20) + "(" + Util.seconds_to_format(j.max_bias20_date, "%Y-%m-%d") + "),20日最低乖离率:" + Util.label_text_color(j.min_bias20) + "(" + Util.seconds_to_format(j.min_bias20_date, "%Y-%m-%d") + ")");
1059
1059
  Util.hide_tips();
1060
1060
  });
1061
1061
  },
@@ -1092,12 +1092,12 @@ let Stock = {
1092
1092
  });
1093
1093
  latest_date = Util.seconds_to_format(latest_date, "%Y-%m-%d");
1094
1094
  $("#stock_margin_url").attr("href", Util.get_url("trend_margin") + "?start_date=" + latest_date + "&end_date=" + latest_date);
1095
- if (j["latest"].length > 0) {
1096
- if (j["latest"].length === 1) {
1097
- margin_summary = " 最新融资余额(" + Util.seconds_to_format(j["latest"][0]["date"], "%Y-%m-%d") + "): " + Util.to_unit(j["latest"][0]["rzye"], 3);
1098
- rqye_summary = " 最新融券余额(" + Util.seconds_to_format(j["latest"][0]["date"], "%Y-%m-%d") + "): " + Util.to_unit(j["latest"][0]["rqye"], 3);
1099
- } else if (j["latest"].length === 2) {
1100
- let d1 = j["latest"][0], d2 = j["latest"][1], rzye_dist_tips = "", rqye_dist_tips = "";
1095
+ if (j.latest.length > 0) {
1096
+ if (j.latest.length === 1) {
1097
+ margin_summary = " 最新融资余额(" + Util.seconds_to_format(j.latest[0]["date"], "%Y-%m-%d") + "): " + Util.to_unit(j.latest[0]["rzye"], 3);
1098
+ rqye_summary = " 最新融券余额(" + Util.seconds_to_format(j.latest[0]["date"], "%Y-%m-%d") + "): " + Util.to_unit(j.latest[0]["rqye"], 3);
1099
+ } else if (j.latest.length === 2) {
1100
+ let d1 = j.latest[0], d2 = j.latest[1], rzye_dist_tips = "", rqye_dist_tips = "";
1101
1101
  let rzye_difference = d1["rzye"] - d2["rzye"];
1102
1102
  if (rzye_difference > 0) {
1103
1103
  rzye_dist_tips = "(<b title='" + Util.to_unit(d2["rzye"], 3, 0) + "' style='color: #a94442;'>+" + Util.to_unit(rzye_difference, 3, 0) + "</b>)";
@@ -1115,29 +1115,29 @@ let Stock = {
1115
1115
  }
1116
1116
  }
1117
1117
  margin_summary += ' 当前最高: <span style="color: #FFF;" class="label label-danger">' + Util.to_unit(rzye_high, 3, 0) + '</span> 当前最低: <span style="color: #FFF;" class="label label-success">' + Util.to_unit(rzye_low, 3, 0) + "</span>";
1118
- if (j["rzye_high"] && j["rzye_high"]["date"] && j["rzye_high"]["date"] > 0) {
1119
- margin_summary += ' 历史最高: <span style="color: #FFF;" class="label label-danger">' + Util.to_unit(j["rzye_high"]["rzye"], 3, 0) + '</span>(' + Util.seconds_to_format(j["rzye_high"]["date"], "%Y-%m-%d") + ')';
1118
+ if (j.rzye_high && j.rzye_high.date && j.rzye_high.date > 0) {
1119
+ margin_summary += ' 历史最高: <span style="color: #FFF;" class="label label-danger">' + Util.to_unit(j.rzye_high.rzye, 3, 0) + '</span>(' + Util.seconds_to_format(j.rzye_high.date, "%Y-%m-%d") + ')';
1120
1120
  }
1121
- if (j["rzye_low"] && j["rzye_low"]["date"] && j["rzye_low"]["date"] > 0) {
1122
- margin_summary += ' 历史最低: <span style="color: #FFF;" class="label label-success">' + Util.to_unit(j["rzye_low"]["rzye"], 3, 0) + '</span>(' + Util.seconds_to_format(j["rzye_low"]["date"], "%Y-%m-%d") + ')';
1121
+ if (j.rzye_low && j.rzye_low.date && j.rzye_low.date > 0) {
1122
+ margin_summary += ' 历史最低: <span style="color: #FFF;" class="label label-success">' + Util.to_unit(j.rzye_low.rzye, 3, 0) + '</span>(' + Util.seconds_to_format(j.rzye_low.date, "%Y-%m-%d") + ')';
1123
1123
  }
1124
- if (j["less_rate"]) {
1125
- margin_summary += '&nbsp;&nbsp;当前最新融资余额超过历史 <span style="color: #FFF;" class="label label-info">' + j["less_rate"] + '%</span> 分位水平';
1124
+ if (j.less_rate) {
1125
+ margin_summary += '&nbsp;&nbsp;当前最新融资余额超过历史 <span style="color: #FFF;" class="label label-info">' + j.less_rate + '%</span> 分位水平';
1126
1126
  }
1127
1127
  $("#margin_summary").html(margin_summary);
1128
1128
  Stock["rzye_chart"] = Util.multi_axis_line(Stock["rzye_chart"], "rzye_line_canvas", date_data, '融资余额(单位:亿)', rzye_data, '股价', price_data);
1129
1129
  rqye_summary += ' 当前最高: <span style="color: #FFF;" class="label label-danger">' + Util.to_unit(rqye_high, 3, 0) + '</span> 当前最低: <span style="color: #FFF;" class="label label-success">' + Util.to_unit(rqye_low, 3, 0) + "</span>";
1130
- if (j["rqye_high"] && j["rqye_high"]["date"] && j["rqye_high"]["date"] > 0) {
1131
- rqye_summary += ' 历史最高: <span style="color: #FFF;" class="label label-danger">' + Util.to_unit(j["rqye_high"]["rqye"], 3, 0) + '</span>(' + Util.seconds_to_format(j["rqye_high"]["date"], "%Y-%m-%d") + ')';
1130
+ if (j.rqye_high && j.rqye_high.date && j.rqye_high.date > 0) {
1131
+ rqye_summary += ' 历史最高: <span style="color: #FFF;" class="label label-danger">' + Util.to_unit(j.rqye_high.rqye, 3, 0) + '</span>(' + Util.seconds_to_format(j.rqye_high.date, "%Y-%m-%d") + ')';
1132
1132
  }
1133
- if (j["rqye_low"] && j["rqye_low"]["date"] && j["rqye_low"]["date"] > 0) {
1134
- rqye_summary += ' 历史最低: <span style="color: #FFF;" class="label label-success">' + Util.to_unit(j["rqye_low"]["rqye"], 3, 0) + '</span>(' + Util.seconds_to_format(j["rqye_low"]["date"], "%Y-%m-%d") + ')';
1133
+ if (j.rqye_low && j.rqye_low.date && j.rqye_low.date > 0) {
1134
+ rqye_summary += ' 历史最低: <span style="color: #FFF;" class="label label-success">' + Util.to_unit(j.rqye_low.rqye, 3, 0) + '</span>(' + Util.seconds_to_format(j.rqye_low.date, "%Y-%m-%d") + ')';
1135
1135
  }
1136
1136
  $("#rqye_summary").html(" [" + rqye_summary + " ]");
1137
1137
  Stock["rqye_chart"] = Util.chart_bar_line(Stock["rqye_chart"], "rqye_line_canvas", date_data, rqye_data, '融券余额(单位:万)', rqye_color_data, price_data, '股价');
1138
1138
  let flow_data = [], color_data = [];
1139
1139
  date_data = [];
1140
- j["flow_data"].forEach(function (item) {
1140
+ j.flow_data.forEach(function (item) {
1141
1141
  if (item.value !== 0) {
1142
1142
  date_data.push(item.date);
1143
1143
  flow_data.push(Util.to_ten_thousand(item.value, 2));
@@ -1238,12 +1238,12 @@ let Stock = {
1238
1238
  price_data.push(item.price);
1239
1239
  });
1240
1240
  let hkex_holding_summary = "[" + Util.pack_html_link(j.url + "&code=" + Stock.code + "&name=" + Stock["name"], Stock["name"]) + "]";
1241
- if (j["latest"].length > 0) {
1242
- let latest_html = "最新(" + Util.seconds_to_format(j["latest"][0]["date"], "%Y-%m-%d") + "): <span style='color: #FFF;' class='label label-info'>" + Util.to_hundred_million(j["latest"][0]["volume"], 4) + "</span>亿股";
1241
+ if (j.latest.length > 0) {
1242
+ let latest_html = "最新(" + Util.seconds_to_format(j.latest[0]["date"], "%Y-%m-%d") + "): <span style='color: #FFF;' class='label label-info'>" + Util.to_hundred_million(j.latest[0]["volume"], 4) + "</span>亿股";
1243
1243
  let dist_tips = "";
1244
- if (j["latest"].length === 2) {
1245
- let d1 = j["latest"][0];
1246
- let d2 = j["latest"][1];
1244
+ if (j.latest.length === 2) {
1245
+ let d1 = j.latest[0];
1246
+ let d2 = j.latest[1];
1247
1247
  let difference = d1["volume"] - d2["volume"];
1248
1248
  if (difference > 0) {
1249
1249
  dist_tips = "(<b title='" + Util.to_unit(d2["volume"], 2, 0) + "股' style='color: #a94442;'>+" + Util.to_unit(difference, 2, 0) + "股</b>)";
@@ -1251,15 +1251,15 @@ let Stock = {
1251
1251
  dist_tips = "(<b title='" + Util.to_unit(d2["volume"], 2, 0) + "股' style='color: #3c763d;'>" + Util.to_unit(difference, 2, 0) + "股</b>)";
1252
1252
  }
1253
1253
  }
1254
- latest_html += dist_tips + ", 占 <span style='color: #FFF;' class='label label-info'>" + j["latest"][0]["ratio"] + "%</span> 流通股, ";
1255
- hkex_holding_summary += (latest_html + ' 最高: <span style="color: #FFF;" class="label label-danger">' + Util.to_unit(j["high"]["volume"], 2, 0) + '股</span>(' + Util.seconds_to_format(j["high"]["date"], "%Y-%m-%d") +
1256
- ') 最低: <span style="color: #FFF;" class="label label-success">' + Util.to_unit(j["low"]["volume"], 2, 0) + '股</span>(' + Util.seconds_to_format(j["low"]["date"], "%Y-%m-%d") + ')');
1254
+ latest_html += dist_tips + ", 占 <span style='color: #FFF;' class='label label-info'>" + j.latest[0]["ratio"] + "%</span> 流通股, ";
1255
+ hkex_holding_summary += (latest_html + ' 最高: <span style="color: #FFF;" class="label label-danger">' + Util.to_unit(j.high.volume, 2, 0) + '股</span>(' + Util.seconds_to_format(j.high.date, "%Y-%m-%d") +
1256
+ ') 最低: <span style="color: #FFF;" class="label label-success">' + Util.to_unit(j.low.volume, 2, 0) + '股</span>(' + Util.seconds_to_format(j.low.date, "%Y-%m-%d") + ')');
1257
1257
  }
1258
1258
  $("#hkex_holding_summary").html(hkex_holding_summary);
1259
1259
  Stock["hkex_holding_chart"] = Util.multi_axis_line(Stock["hkex_holding_chart"], "hkex_holding_line_canvas", date_data, '持股数', volume_data, '股价', price_data);
1260
1260
  let flow_data = [], color_data = [];
1261
1261
  date_data = [];
1262
- j["flow_data"].forEach(function (item) {
1262
+ j.flow_data.forEach(function (item) {
1263
1263
  date_data.push(item.date);
1264
1264
  flow_data.push(item.value);
1265
1265
  color_data.push(item.value > 0 ? "#E74C3C" : "#1ABB9C");
package/summary_daily.js CHANGED
@@ -74,7 +74,7 @@ $(function () {
74
74
  }
75
75
  Util.show_loading();
76
76
  Util.post(location.pathname, {date: $("#trade_date").val(), action: "market_overview", is_init: Util.is_init}, function (j) {
77
- DailySummary.pack_market_overview(j["market_overview"]);
77
+ DailySummary.pack_market_overview(j.market_overview);
78
78
  DailySummary.fetch_statistics_daily();
79
79
  if (j.date && !Util.is_mobile()) {
80
80
  DailySummary.init_date_component(j.date);
@@ -117,7 +117,7 @@ $(function () {
117
117
  $("#index_summary_data").html(html.join(""));
118
118
  change_color_data.forEach(function (item) {
119
119
  let change_rate_obj = $("#change_rate_" + item.key);
120
- change_rate_obj.css("background-color", item["new"]);
120
+ change_rate_obj.css("background-color", item.new);
121
121
  change_rate_obj.animate({backgroundColor: item.origin}, 2000);
122
122
  });
123
123
  },
@@ -361,14 +361,14 @@ $(function () {
361
361
  news_type: $("#news_type").val()
362
362
  };
363
363
  Util.post(location.pathname, payload, function (j) {
364
- DailySummary.pack_index_summary_data(j["index"]);
364
+ DailySummary.pack_index_summary_data(j.index);
365
365
  DailySummary.pack_change_percent(j.change_percent);
366
- DailySummary.pack_big_deal(j["big_deal"], j["big_deal_date"]);
367
- DailySummary.pack_hsgt_money_flow(j["hmf"]);
368
- DailySummary.pack_news_data(j["news"]);
369
- DailySummary.set_cache("index", j["index"]);
366
+ DailySummary.pack_big_deal(j.big_deal, j.big_deal_date);
367
+ DailySummary.pack_hsgt_money_flow(j.hmf);
368
+ DailySummary.pack_news_data(j.news);
369
+ DailySummary.set_cache("index", j.index);
370
370
  DailySummary.set_cache("change_percent", j.change_percent);
371
- DailySummary.set_cache("news", j["news"]);
371
+ DailySummary.set_cache("news", j.news);
372
372
  Util.hide_tips();
373
373
  if (DailySummary.is_trade_time === 1) {
374
374
  setTimeout(DailySummary.fetch_statistics_daily, 9876);
@@ -770,9 +770,9 @@ $(function () {
770
770
  let news_type = parseInt($("#news_type").val());
771
771
  let payload = {action: "news", limit_num: DailySummary.limit_num(), news_type: news_type};
772
772
  Util.post(location.pathname, payload, function (j) {
773
- DailySummary.pack_news_data(j["news_data"]);
774
- if (news_type === 2 && j["news_time"]) {
775
- $("#news_type").attr("title", Util.seconds_to_format(j["news_time"]));
773
+ DailySummary.pack_news_data(j.news_data);
774
+ if (news_type === 2 && j.news_time) {
775
+ $("#news_type").attr("title", Util.seconds_to_format(j.news_time));
776
776
  } else {
777
777
  $("#news_type").removeAttr("title");
778
778
  }
package/util.js CHANGED
@@ -1308,9 +1308,9 @@ const Util = {
1308
1308
  });
1309
1309
  Util.render_table_html("public_fund_table_body", html);
1310
1310
  let public_fund_tips = "";
1311
- if (j["cur_fund_num"]) {
1312
- total_public_fund = Util.pack_html_link(Util.get_url("trend_fund_hold"), '<span class="label label-info">' + j["cur_fund_num"] + '</span>');
1313
- public_fund_tips = '共 ' + total_public_fund + ' 家(' + Util.year_price_rate(j["cur_fund_num"], j["pre_fund_num"], 1) + '), <span class="label label-info">' + Util.to_unit(j["cur_stock_num"], 3) + '</span> 股(' + Util.year_price_rate(j["cur_stock_num"], j["pre_stock_num"], 1) + '),<span class="label label-info">' + Util.to_unit(j["hold_value"], 3) + '</span>市值';
1311
+ if (j.cur_fund_num) {
1312
+ total_public_fund = Util.pack_html_link(Util.get_url("trend_fund_hold"), '<span class="label label-info">' + j.cur_fund_num + '</span>');
1313
+ public_fund_tips = '共 ' + total_public_fund + ' 家(' + Util.year_price_rate(j.cur_fund_num, j.pre_fund_num, 1) + '), <span class="label label-info">' + Util.to_unit(j.cur_stock_num, 3) + '</span> 股(' + Util.year_price_rate(j.cur_stock_num, j.pre_stock_num, 1) + '),<span class="label label-info">' + Util.to_unit(j.hold_value, 3) + '</span>市值';
1314
1314
  } else {
1315
1315
  total_public_fund = Util.pack_html_link(Util.get_url("trend_fund_hold"), '<span class="label label-info">' + total_public_fund + '</span>');
1316
1316
  public_fund_tips = '共 ' + total_public_fund + ' 家, <span class="label label-info">' + Util.to_unit(total_stock_num, 3) + '</span> 股,<span class="label label-info">' + Util.to_unit(total_market_capital, 3) + '</span>市值';
@@ -1477,12 +1477,12 @@ const Util = {
1477
1477
  Util["portfolio_table_id"] = table_id;
1478
1478
  Util.post(location.pathname, {active_div: portfolio}, function (j) {
1479
1479
  Util["portfolio_data"] = j.data ? j.data : [];
1480
- Util["portfolio_index"] = j["index_list"] ? j["index_list"] : [];
1480
+ Util["portfolio_index"] = j.index_list ? j.index_list : [];
1481
1481
  Util.render_type_option($("#portfolio_industry"), j.data, "industry", Util.render_portfolio_html);
1482
1482
  Util.render_type_option($("#portfolio_area"), j.data, "area", Util.render_portfolio_html);
1483
1483
  Util.render_portfolio_html();
1484
- if (j["portfolio_url"]) {
1485
- $("#portfolio_remark_title").html(Util.pack_html_link(j["portfolio_url"], "备注<i class='glyphicon glyphicon-link'></i>"));
1484
+ if (j.portfolio_url) {
1485
+ $("#portfolio_remark_title").html(Util.pack_html_link(j.portfolio_url, "备注<i class='glyphicon glyphicon-link'></i>"));
1486
1486
  }
1487
1487
  Util.hide_tips();
1488
1488
  });
@@ -1579,29 +1579,29 @@ const Util = {
1579
1579
  Util.post(Util.get_url("fund_public"), {action: "public_fund_detail", fund_code: fund_code}, function (j) {
1580
1580
  let html = [];
1581
1581
  if (j.fund_code) {
1582
- $("#" + component_id + "_title").html(Util.pack_html_link("https://fundf10.eastmoney.com/jbgk_" + j.fund_code + ".html", j["fund_name"]));
1582
+ $("#" + component_id + "_title").html(Util.pack_html_link("https://fundf10.eastmoney.com/jbgk_" + j.fund_code + ".html", j.fund_name));
1583
1583
  let net = "--";
1584
- if (j["net"] > 0) {
1585
- net = j["net"];
1584
+ if (j.net > 0) {
1585
+ net = j.net;
1586
1586
  let net_cls = Util.text_color(j.change_percent);
1587
1587
  if (net_cls !== "") {
1588
1588
  net = "<b class='" + net_cls + "'>" + net + "(" + Util.to_float(j.change_percent, 2) + "%)</b>";
1589
1589
  }
1590
1590
  }
1591
- let assets = j["assets"] > 0 ? (j["assets"] + "亿") : "--";
1592
- let public_date = j["public_date"] > 0 ? Util.seconds_to_format(j["public_date"], "%Y-%m-%d") : "--";
1593
- let issue_date = j["issue_date"] > 0 ? Util.seconds_to_format(j["issue_date"], "%Y-%m-%d") : "--";
1591
+ let assets = j.assets > 0 ? (j.assets + "亿") : "--";
1592
+ let public_date = j.public_date > 0 ? Util.seconds_to_format(j.public_date, "%Y-%m-%d") : "--";
1593
+ let issue_date = j.issue_date > 0 ? Util.seconds_to_format(j.issue_date, "%Y-%m-%d") : "--";
1594
1594
  html.push("<tr title='最后更新时间: ", Util.seconds_to_format(j.update_time, "%Y-%m-%d"), "' class='info'><th colspan='15' style='text-align: center;'>基金概况</th></tr>");
1595
- html.push("<tr><td colspan='3'>基金代码</td><td colspan='4'>", Util.pack_html_link('https://xueqiu.com/S/' + Util.code_to_fund_symbol(j.fund_code), j.fund_code), "</td><td colspan='3'>基金名</td><td colspan='5'>", Util.pack_html_link('https://fundf10.eastmoney.com/jbgk_' + j.fund_code + '.html', j["fund_name"]), "</td></tr>");
1596
- html.push("<tr><td colspan='3'>基金类型</td><td colspan='4'>", (j.fund_type ? j.fund_type : "--"), "</td><td colspan='3'>投资类型</td><td colspan='5'>", (j["invest_type"] ? j["invest_type"] : "--"), "</td></tr>");
1595
+ html.push("<tr><td colspan='3'>基金代码</td><td colspan='4'>", Util.pack_html_link('https://xueqiu.com/S/' + Util.code_to_fund_symbol(j.fund_code), j.fund_code), "</td><td colspan='3'>基金名</td><td colspan='5'>", Util.pack_html_link('https://fundf10.eastmoney.com/jbgk_' + j.fund_code + '.html', j.fund_name), "</td></tr>");
1596
+ html.push("<tr><td colspan='3'>基金类型</td><td colspan='4'>", (j.fund_type ? j.fund_type : "--"), "</td><td colspan='3'>投资类型</td><td colspan='5'>", (j.invest_type ? j.invest_type : "--"), "</td></tr>");
1597
1597
  html.push("<tr><td colspan='3'>单位净值</td><td colspan='4'>", net, "</td><td colspan='3'>资产规模</td><td colspan='5'>", assets, "</td></tr>");
1598
1598
  html.push("<tr><td colspan='3'>成立日期</td><td colspan='4'>", public_date, "</td><td colspan='3'>发行日期</td><td colspan='5'>", issue_date, "</td></tr>");
1599
1599
  html.push("<tr><td colspan='3'>基金管理公司</td><td colspan='4'>", Util.pack_fund_administrator(j), "</td><td colspan='3'>基金经理</td><td colspan='5'>", Util.pack_fund_manager(j), "</td></tr>");
1600
- html.push("<tr><td colspan='3'>基金托管人</td><td colspan='4'>", (j["custodian"] ? j["custodian"] : "--"), "</td><td colspan='3'>经办律师事务所</td><td colspan='5'>", (j["lawyer"] ? j["lawyer"] : "--"), "</td></tr>");
1601
- html.push("<tr><td colspan='3'>会计师事务所</td><td colspan='4'>", (j["accounting"] ? j["accounting"] : "--"), "</td><td colspan='3'>注册地址</td><td colspan='5'>", Util.map_url(j["location"], j["location"]), "</td></tr>");
1602
- html.push("<tr><td colspan='3'>近一周</td><td colspan='4'>", Util.parse_ratio(j["one_week_change"]), "</td><td colspan='3'>近一月</td><td colspan='5'>", Util.parse_ratio(j["one_month_change"]), "</td></tr>");
1603
- html.push("<tr><td colspan='3'>近一年</td><td colspan='4'>", Util.parse_ratio(j["one_year_change"]), "</td><td colspan='3'>年初至今</td><td colspan='5'>", Util.pack_html_link('https://fundf10.eastmoney.com/jdzf_' + j.fund_code + '.html', Util.parse_ratio(j["ytd_change"])), "</td></tr>");
1604
- html.push("<tr><td colspan='5'>成立以来</td><td colspan='10'>", Util.parse_ratio(j["establish_change"]), "</td></tr>");
1600
+ html.push("<tr><td colspan='3'>基金托管人</td><td colspan='4'>", (j.custodian ? j.custodian : "--"), "</td><td colspan='3'>经办律师事务所</td><td colspan='5'>", (j.lawyer ? j.lawyer : "--"), "</td></tr>");
1601
+ html.push("<tr><td colspan='3'>会计师事务所</td><td colspan='4'>", (j.accounting ? j.accounting : "--"), "</td><td colspan='3'>注册地址</td><td colspan='5'>", Util.map_url(j.location, j.location), "</td></tr>");
1602
+ html.push("<tr><td colspan='3'>近一周</td><td colspan='4'>", Util.parse_ratio(j.one_week_change), "</td><td colspan='3'>近一月</td><td colspan='5'>", Util.parse_ratio(j.one_month_change), "</td></tr>");
1603
+ html.push("<tr><td colspan='3'>近一年</td><td colspan='4'>", Util.parse_ratio(j.one_year_change), "</td><td colspan='3'>年初至今</td><td colspan='5'>", Util.pack_html_link('https://fundf10.eastmoney.com/jdzf_' + j.fund_code + '.html', Util.parse_ratio(j.ytd_change)), "</td></tr>");
1604
+ html.push("<tr><td colspan='5'>成立以来</td><td colspan='10'>", Util.parse_ratio(j.establish_change), "</td></tr>");
1605
1605
  html.push("<tr class='info'><th colspan='15' style='text-align: center;'>", Util.pack_html_link("https://fund.eastmoney.com/f10/ccmx_" + j.fund_code + ".html", "持股明细"), " <span id='fund_stock_date_zone'></span></th></tr>");
1606
1606
  html.push("<tr id='" + component_id + "_head'><th>序号</th><th>股票代码</th><th>股票名</th><th>PE</th><th>总市值</th><th>行业</th><th>地区</th><th>价格</th><th>年初至今</th><th>近5日</th><th>股东数</th><th>持有量</th><th class='info'>占比</th><th>占比变化</th><th>持仓市值</th></tr>");
1607
1607
  html.push("<tr class='" + component_id + "_tr'><td colspan='15'>暂无数据</td></tr>");
@@ -1729,10 +1729,10 @@ const Util = {
1729
1729
  });
1730
1730
  Util.render_table_html("word_process_div_body", html);
1731
1731
  $("#word_num").html("&nbsp;&nbsp;共 <span class='label label-info'>" + index + "</span> 条");
1732
- if (j["day_num"]) {
1732
+ if (j.day_num) {
1733
1733
  let day_num_html = [];
1734
1734
  day_num_html.push('<option value="">全部</option>');
1735
- j["day_num"].forEach(function (item) {
1735
+ j.day_num.forEach(function (item) {
1736
1736
  day_num_html.push('<option value="', item.day, '">', item.day, '(', item.num, ')</option>');
1737
1737
  });
1738
1738
  let wdn_obj = $("#word_day_num");
@@ -1924,11 +1924,11 @@ const Util = {
1924
1924
  html.push("</tr>");
1925
1925
  });
1926
1926
  Util.render_table_html("currency_modal_body_body", html);
1927
- let currency_modal_summary = "历史最低:<span class='label label-success'>" + j["hist_low"] +
1928
- "</span> 历史最高:<span class='label label-danger'>" + j["hist_high"] +
1929
- "</span> 年初至今:" + Util.digit_compare_trend1(j.exchange_rate, j["year_exchange_rate"]) +
1930
- " 52周最高:" + Util.digit_compare_trend1(j.exchange_rate, j["week52high"]) +
1931
- " 52周最低:" + Util.digit_compare_trend1(j.exchange_rate, j["week52low"]);
1927
+ let currency_modal_summary = "历史最低:<span class='label label-success'>" + j.hist_low +
1928
+ "</span> 历史最高:<span class='label label-danger'>" + j.hist_high +
1929
+ "</span> 年初至今:" + Util.digit_compare_trend1(j.exchange_rate, j.year_exchange_rate) +
1930
+ " 52周最高:" + Util.digit_compare_trend1(j.exchange_rate, j.week52high) +
1931
+ " 52周最低:" + Util.digit_compare_trend1(j.exchange_rate, j.week52low);
1932
1932
  let title = j.name !== currency ? (j.name + "(" + currency.toUpperCase() + ")") : j.name;
1933
1933
  title = '<i class="fa fa-' + currency + '"></i> ' + title;
1934
1934
  title = Util.pack_html_link("https://cn.investing.com/currencies/" + currency + "-cny", title);
@@ -2021,11 +2021,11 @@ const Util = {
2021
2021
  html.push("</tr>");
2022
2022
  });
2023
2023
  Util.render_table_html("btc_modal_body_body", html);
2024
- let btc_title = j["cn_name"] + "(" + Util.pack_html_link('https://www.binance.com/zh-CN/trade/' + j["short_name"] + '_USDT?theme=dark', j["short_name"]) + ", " + Util.pack_html_link("https://www.feixiaohao.com/currencies/" + j["coin"], j["coin"]) + ")";
2025
- btc_title += "&nbsp;&nbsp;<small>历史最低:<span class='label label-success'>" + j["hist_low"] + "</span> 历史最高:<span class='label label-danger'>" + j["hist_high"] +
2026
- "</span> 年初至今:" + Util.digit_compare_trend1(j["price"], j["year_price"]) +
2027
- " 52周最高:" + Util.digit_compare_trend1(j["price"], j["week52high"]) +
2028
- " 52周最低:" + Util.digit_compare_trend1(j["price"], j["week52low"]) + "</small>";
2024
+ let btc_title = j.cn_name + "(" + Util.pack_html_link('https://www.binance.com/zh-CN/trade/' + j.short_name + '_USDT?theme=dark', j.short_name) + ", " + Util.pack_html_link("https://www.feixiaohao.com/currencies/" + j.coin, j.coin) + ")";
2025
+ btc_title += "&nbsp;&nbsp;<small>历史最低:<span class='label label-success'>" + j.hist_low + "</span> 历史最高:<span class='label label-danger'>" + j.hist_high +
2026
+ "</span> 年初至今:" + Util.digit_compare_trend1(j.price, j.year_price) +
2027
+ " 52周最高:" + Util.digit_compare_trend1(j.price, j.week52high) +
2028
+ " 52周最低:" + Util.digit_compare_trend1(j.price, j.week52low) + "</small>";
2029
2029
  $("#btc_modal_title").html(btc_title);
2030
2030
  Util.hide_tips();
2031
2031
  });
@@ -2084,7 +2084,7 @@ const Util = {
2084
2084
  html.push("</tr>");
2085
2085
  });
2086
2086
  Util.render_table_html(component_id + "_body_body", html);
2087
- $("#" + component_id + "_title").html("[" + Util.stock_url(code, j["stock_name"]) + "]资金流向明细(<span>净买入:<b title='" + summary_inflow + "' class='" + Util.text_color(summary_inflow) + "'>" + Util.to_unit(summary_inflow) + "</b>, 上榜次数:<b class='text-info'>" + total_times + "</b>, 买入次数:<b class='text-danger'>" + buy_times + "</b>, 卖出次数:<b class='text-success'>" + sell_times + "</b></span>)");
2087
+ $("#" + component_id + "_title").html("[" + Util.stock_url(code, j.stock_name) + "]资金流向明细(<span>净买入:<b title='" + summary_inflow + "' class='" + Util.text_color(summary_inflow) + "'>" + Util.to_unit(summary_inflow) + "</b>, 上榜次数:<b class='text-info'>" + total_times + "</b>, 买入次数:<b class='text-danger'>" + buy_times + "</b>, 卖出次数:<b class='text-success'>" + sell_times + "</b></span>)");
2088
2088
  });
2089
2089
  }
2090
2090
  });
@@ -3146,8 +3146,8 @@ const Util = {
3146
3146
  $("#index_data").html(index_data_html);
3147
3147
  }
3148
3148
  code_list.forEach(function (code) {
3149
- if (j["price_data"].hasOwnProperty(code)) {
3150
- Util.render_price(j["price_data"][code]);
3149
+ if (j.price_data.hasOwnProperty(code)) {
3150
+ Util.render_price(j.price_data[code]);
3151
3151
  } else {
3152
3152
  $(".price_" + code).each(function () {
3153
3153
  let price = $(this).text();
@@ -3169,7 +3169,7 @@ const Util = {
3169
3169
  }, "text");
3170
3170
  }
3171
3171
  } else {
3172
- if (is_refresh !== 0 && j["is_holiday"] === 0) {
3172
+ if (is_refresh !== 0 && j.is_holiday === 0) {
3173
3173
  if (Util.is_trade_time()) {
3174
3174
  Util.countdown_refresh_index_price(5, element_id, index_list, is_us, is_refresh);
3175
3175
  }