F2.ts 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. namespace toufang {
  2. let { formmaterValueZhou } = require("../../../../utils/util")
  3. const chartCatch: antvChart = {
  4. toufangfenxiChart: undefined
  5. }
  6. module.exports = {
  7. upLine() {
  8. if (chartCatch.toufangfenxiChart === undefined) return
  9. chartCatch.toufangfenxiChart.clear()
  10. let { before, now } = this.data.DayList;
  11. let beforeString = before.length ? `${before[0].dt}至${before[before.length - 1].dt}` : "";
  12. let nowString = now.length ? `${now[0].dt}至${now[now.length - 1].dt}` : "";
  13. before = before.map((v: any, i: number) => {
  14. v.index = i;
  15. v.dataKeyTypt = beforeString;
  16. return v
  17. })
  18. now = now.map((v: any, i: number) => {
  19. v.index = i;
  20. v.dataKeyTypt = nowString;
  21. return v
  22. })
  23. const data = [...before, ...now];
  24. if (chartCatch.toufangfenxiChart === undefined) return;
  25. let key = this.data.select[this.data.select_act].proportionType;
  26. chartCatch.toufangfenxiChart.legend('gender', {
  27. position: 'right'
  28. });
  29. chartCatch.toufangfenxiChart.source(data);
  30. chartCatch.toufangfenxiChart.scale('index', {
  31. tickCount: 3
  32. });
  33. chartCatch.toufangfenxiChart.axis('index', {
  34. label: (text: string, index: number, total: number) => {
  35. let align = 'center';
  36. if (index === 0) align = 'left';
  37. if (index === total - 1) align = 'right';
  38. return {
  39. textAlign: align,
  40. text: data[Number(text)].dt
  41. }
  42. }
  43. });
  44. chartCatch.toufangfenxiChart.axis(key, {
  45. label: (text: string, index: number, total: number) => {
  46. return {
  47. text: formmaterValueZhou(text, 0)
  48. }
  49. }
  50. });
  51. chartCatch.toufangfenxiChart.tooltip({
  52. showCrosshairs: true,
  53. triggerOn: ['touchstart', 'touchmove'],
  54. onShow: (ev: tooltipOnShow) => {
  55. const items = ev.items;
  56. const { tooltip: { title } } = ev;
  57. let index = Number(title || 0);
  58. index < 0 ? index = 0 : "";
  59. items[0].name = data[index].dt;
  60. items[1].name = data[index + this.data.DayList.before.length].dt;
  61. items[0].value = formmaterValueZhou(items[0].value, 2);
  62. items[1].value = formmaterValueZhou(items[1].value, 2);
  63. }
  64. });
  65. chartCatch.toufangfenxiChart.line().position('index*' + key).shape('smooth').color("dataKeyTypt", ["#1b9ade", "#fd5555"]);
  66. chartCatch.toufangfenxiChart.render();
  67. },
  68. line(F2: any, config: any) {
  69. if (chartCatch.toufangfenxiChart !== undefined) chartCatch.toufangfenxiChart.destroy(), chartCatch.toufangfenxiChart = undefined;
  70. let sys = wx.getSystemInfoSync();
  71. config.height = sys.windowWidth / 16 * 9;
  72. chartCatch.toufangfenxiChart = new F2.Chart(config);
  73. let { before, now } = this.data.DayList;
  74. let beforeString = before.length ? `${before[0].dt}至${before[before.length - 1].dt}` : "";
  75. let nowString = now.length ? `${now[0].dt}至${now[now.length - 1].dt}` : "";
  76. before = before.map((v: any, i: number) => {
  77. v.index = i;
  78. v.dataKeyTypt = beforeString;
  79. return v
  80. })
  81. now = now.map((v: any, i: number) => {
  82. v.index = i;
  83. v.dataKeyTypt = nowString;
  84. return v
  85. })
  86. const data = [...before, ...now];
  87. if (chartCatch.toufangfenxiChart === undefined) return;
  88. let key = this.data.select[this.data.select_act].proportionType;
  89. chartCatch.toufangfenxiChart.legend('gender', {
  90. position: 'right'
  91. });
  92. chartCatch.toufangfenxiChart.source(data);
  93. chartCatch.toufangfenxiChart.scale('index', {
  94. tickCount: 3
  95. });
  96. chartCatch.toufangfenxiChart.axis('index', {
  97. label: (text: string, index: number, total: number) => {
  98. let align = 'center';
  99. if (index === 0) align = 'left';
  100. if (index === total - 1) align = 'right';
  101. return {
  102. textAlign: align,
  103. text: data[Number(text)].dt
  104. }
  105. }
  106. });
  107. chartCatch.toufangfenxiChart.axis(key, {
  108. label: (text: string, index: number, total: number) => {
  109. return {
  110. text: formmaterValueZhou(text, 0)
  111. }
  112. }
  113. });
  114. chartCatch.toufangfenxiChart.tooltip({
  115. showCrosshairs: true,
  116. triggerOn: ['touchstart', 'touchmove'],
  117. onShow: (ev: tooltipOnShow) => {
  118. const items = ev.items;
  119. const { tooltip: { title } } = ev;
  120. let index = Number(title || 0);
  121. index < 0 ? index = 0 : "";
  122. items[0].name = data[index].dt;
  123. items[1].name = data[index + this.data.DayList.before.length].dt;
  124. items[0].value = formmaterValueZhou(items[0].value, 2);
  125. items[1].value = formmaterValueZhou(items[1].value, 2);
  126. }
  127. });
  128. chartCatch.toufangfenxiChart.line().position('index*' + key).shape('smooth').color("dataKeyTypt", ["#1b9ade", "#fd5555"]);
  129. chartCatch.toufangfenxiChart.render();
  130. return chartCatch.toufangfenxiChart;
  131. }
  132. };
  133. }