echarts-block2.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. function loadBlock2() {
  2. var color = ['#00ffff', '#00cfff', '#006ced', '#ffe000', '#ffa800', '#ff5b00', '#ff3000']
  3. var seriesOption = [{
  4. name: '',
  5. type: 'pie',
  6. clockWise: false,
  7. radius: [72, 75],
  8. center: ['35%', 'center'],
  9. hoverAnimation: true,
  10. hoverOffset: 5,
  11. label: {
  12. show: false,
  13. }
  14. }];
  15. const block2 = echarts.init(document.getElementById("block2"), "shine");
  16. $.ajax({
  17. url: ajaxBaseUrl + "data/grid.json",
  18. dataType: "json"
  19. }).done(function () {
  20. $("#block2").addClass("chart-done");
  21. }).done(function (data) {
  22. var percent = 0;
  23. var total = 0;
  24. for (let i = 0; i < data.length; i++) {
  25. total += data[i].value;
  26. }
  27. const block2Opt = {
  28. tooltip: {
  29. trigger: "item",
  30. formatter: function (params) {
  31. percent = ((params.value / total) * 100).toFixed(0);
  32. const marker = '<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:#e6b600;"></span>';
  33. if (params.name !== '') {
  34. return params.name + "<br />" + marker + "数量:" + params.value + " 支<br />" + marker + "占比:" + percent + "%";
  35. } else {
  36. return '';
  37. }
  38. }
  39. },
  40. color: color,
  41. // graphic: {
  42. // elements: [{
  43. // type: "image",
  44. // z: 3,
  45. // style: {
  46. // image: "./img/circle.png",
  47. // width: 120,
  48. // height: 120
  49. // },
  50. // left: '19%',
  51. // top: '16.5%',
  52. // position: [100, 100]
  53. // }]
  54. // },
  55. legend: {
  56. show: true,
  57. icon: "roundRect",
  58. orient: 'vertical',
  59. // x: 'left',
  60. right: 20,
  61. top: 45,
  62. align: 'right',
  63. itemWidth: 20,
  64. textStyle: {
  65. color: "#fff"
  66. },
  67. itemGap: 15
  68. },
  69. toolbox: {
  70. show: false
  71. },
  72. series: seriesOption
  73. };
  74. block2.setOption(block2Opt);
  75. var seriesData = [];
  76. for (var i = 0; i < data.length; i++) {
  77. seriesData.push({
  78. value: data[i].value,
  79. name: data[i].name,
  80. total: data[i].total,
  81. itemStyle: {
  82. normal: {
  83. borderWidth: 5,
  84. shadowBlur: 20,
  85. borderColor: color[i],
  86. shadowColor: color[i]
  87. }
  88. }
  89. }, {
  90. value: 3,
  91. name: '',
  92. itemStyle: {
  93. normal: {
  94. label: {
  95. show: false
  96. },
  97. labelLine: {
  98. show: false
  99. },
  100. color: 'rgba(0, 0, 0, 0)',
  101. borderColor: 'rgba(0, 0, 0, 0)',
  102. borderWidth: 0
  103. }
  104. }
  105. });
  106. }
  107. const legendData = [];
  108. for (let i in data) {
  109. legendData.push(data[i].name);
  110. }
  111. block2.setOption({
  112. legend: {
  113. data: legendData
  114. },
  115. series: [{
  116. data: seriesData
  117. }]
  118. });
  119. var teamTable = '<tr>';
  120. for (let i = 0; i < data.length; i++) {
  121. teamTable += '<td><p>' + data[i].name + '</p><p><span id="team' + (i + 1) + '">0</span></p></td>';
  122. }
  123. teamTable += '</tr>';
  124. document.getElementById("team-box").innerHTML = teamTable;
  125. rollNum("team1", 0, data[0].value);
  126. rollNum("team2", 0, data[1].value);
  127. rollNum("team3", 0, data[2].value);
  128. rollNum("team4", 0, data[3].value);
  129. rollNum("team5", 0, data[4].value);
  130. }).fail(function (jqXHR) {
  131. console.log("Ajax Fail: ", jqXHR.status, jqXHR.statusText);
  132. });
  133. }