BingChart.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <template>
  2. <div class="pie-chart-content">
  3. <div ref="myPieChart" :id="chartId" style="width: 100%; height: 400px"></div>
  4. </div>
  5. </template>
  6. <script>
  7. import * as echarts from "echarts";
  8. export default {
  9. name: "pieChart",
  10. components: {},
  11. props: {
  12. options: {
  13. type: Array,
  14. default: function () {
  15. return [];
  16. },
  17. },
  18. chartId: {
  19. type: String,
  20. default: "",
  21. },
  22. chartName: {
  23. type: String,
  24. default: "",
  25. },
  26. },
  27. data() {
  28. return {
  29. color: ["#FCEF9A", "#D54039", "#56743E", "#FF917C"],
  30. pieData: [],
  31. };
  32. },
  33. // mounted() {
  34. // this.myPieEcharts(this.options);
  35. // },
  36. computed: {},
  37. watch: {
  38. options() {
  39. this.myPieEcharts(this.options);
  40. },
  41. },
  42. mounted() {
  43. window.addEventListener("resize", this.echartsAllSize);
  44. },
  45. destroyed() {
  46. console.log("报告页面销毁了");
  47. window.removeEventListener("resize", this.echartsAllSize);
  48. },
  49. methods: {
  50. echartsAllSize() {
  51. let flag = false;
  52. setTimeout(() => {
  53. flag = true;
  54. if (flag) {
  55. //设置变化的大小
  56. console.log("大小变化了---------------------");
  57. let myChart = this.$echarts.init(document.getElementById(this.chartId));
  58. myChart.resize();
  59. }
  60. }, 1000);
  61. //大小自适应
  62. //查看当前页面是否显示
  63. },
  64. myPieEcharts(pieData) {
  65. if (pieData.length == 2) {
  66. if (pieData[1].name == "未完成" && pieData[1].value == 0) {
  67. return;
  68. }
  69. }
  70. let myChart = this.$echarts.init(document.getElementById(this.chartId));
  71. let option = {
  72. title: {
  73. text: ``,
  74. left: "center",
  75. top: "0px",
  76. textStyle: {
  77. fontSize: "20",
  78. color: "#000000",
  79. foontWeight: "600",
  80. },
  81. },
  82. tooltip: {
  83. trigger: "item",
  84. formatter: function (params) {
  85. console.log("自定义参数");
  86. console.log(params);
  87. let val = params.marker + params.name + "<br/>" + params.value + "人";
  88. return val;
  89. },
  90. },
  91. series: [
  92. {
  93. name: ``,
  94. type: "pie",
  95. radius: "60%",
  96. label: {
  97. show: true,
  98. position: "outside", //将文字显示在行内 outside inside
  99. textStyle: {
  100. fontSize: 16, //设置图内显示文字的大小
  101. color: "#000000", //设置饼状图文字的颜色
  102. },
  103. },
  104. // label: {
  105. // show: true,
  106. // position: "inner", //将文字显示在行内
  107. // textStyle: {
  108. // fontSize: 20, //设置图内显示文字的大小
  109. // color: "#ffffff", //设置饼状图文字的颜色
  110. // },
  111. // },
  112. data: [
  113. {
  114. value: pieData[0].value,
  115. name:
  116. pieData[0].value + pieData[1].value == 0
  117. ? "0%"
  118. : (
  119. (pieData[0].value / (pieData[0].value + pieData[1].value)) * 100
  120. ).toFixed(2) +
  121. "%" +
  122. pieData[0].name,
  123. itemStyle: { color: "#5470C6", fontSize: "20" },
  124. },
  125. {
  126. value: pieData[1].value,
  127. name:
  128. pieData[0].value + pieData[1].value == 0
  129. ? "0%"
  130. : (100 -
  131. (
  132. (pieData[0].value / (pieData[0].value + pieData[1].value)) * 100
  133. ) ).toFixed(2)+
  134. "%" +
  135. pieData[1].name,
  136. itemStyle: { color: "#FFAE00", fontSize: "20" },
  137. },
  138. ],
  139. },
  140. ],
  141. };
  142. pieData && option && myChart.setOption(option);
  143. window.onresize = function () {
  144. console.log("111111111111饼状图大小变化了吗");
  145. myChart.resize();
  146. };
  147. },
  148. pieDataHandle(param) {
  149. this.pieData = [];
  150. // param.groupData.map((item,index) => {
  151. //
  152. // this.lineData.push({
  153. // type: 'line',
  154. // name: item.name,
  155. // data: item.value,
  156. // });
  157. //
  158. // });
  159. //
  160. // this.myLineEcharts(param.category,this.lineData);
  161. },
  162. },
  163. };
  164. </script>
  165. <style scoped>
  166. .pie-chart-content {
  167. width: 100%;
  168. /* height: 100%; */
  169. }
  170. </style>