F21.ts 5.3 KB

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