circle_chart.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <template>
  2. <view class="charts-box" :style="[{width},{height},]">
  3. <qiun-data-charts canvas2d type="arcbar" errorType="1" :errorMessage="errorMessage" :errorReload="false"
  4. :opts="opts" :chartData="chartData" />
  5. </view>
  6. </template>
  7. <script>
  8. export default {
  9. props: {
  10. width: {
  11. type: String,
  12. default: '170rpx'
  13. },
  14. height: {
  15. type: String,
  16. default: '170rpx'
  17. },
  18. canvasId: {
  19. type: String,
  20. default: ''
  21. },
  22. bgColor: {
  23. type: String,
  24. default: () => {
  25. return '#0FB160'
  26. }
  27. },
  28. },
  29. data() {
  30. return {
  31. errorMessage: '',
  32. isCanvas2d: process.uniEnv.isCanvas2d,
  33. chartData: {},
  34. //这里的 opts 是图表类型 type="arcbar" 的全部配置参数,您可以将此配置复制到 config-ucharts.js 文件中下标为 ['arcbar'] 的节点中来覆盖全局默认参数。实际应用过程中 opts 只需传入与全局默认参数中不一致的【某一个属性】即可实现同类型的图表显示不同的样式,达到页面简洁的需求。
  35. opts: {
  36. timing: "easeOut",
  37. duration: 1000,
  38. rotate: false,
  39. rotateLock: false,
  40. color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4",
  41. "#ea7ccc"
  42. ],
  43. padding: undefined,
  44. fontSize: 13,
  45. fontColor: "#666666",
  46. dataLabel: true,
  47. dataPointShape: true,
  48. dataPointShapeType: "solid",
  49. touchMoveLimit: 60,
  50. enableScroll: false,
  51. enableMarkLine: false,
  52. title: {
  53. name: "",
  54. fontSize: 25,
  55. color: "#00FF00",
  56. offsetX: 0,
  57. offsetY: 0
  58. },
  59. subtitle: {
  60. name: "0%",
  61. fontSize: 15,
  62. color: "#666666",
  63. offsetX: 0,
  64. offsetY: 0
  65. },
  66. extra: {
  67. arcbar: {
  68. type: "circle",
  69. width: 10,
  70. backgroundColor: "#E9E9E9",
  71. startAngle: 0.5,
  72. endAngle: 0.25,
  73. gap: 2,
  74. direction: "cw",
  75. lineCap: "round",
  76. centerX: 0,
  77. centerY: 0,
  78. linearType: "none"
  79. }
  80. }
  81. }
  82. };
  83. },
  84. onReady() {
  85. // this.getServerData();
  86. console.log(process.uniEnv.isCanvas2d)
  87. },
  88. methods: {
  89. getServerData() {
  90. //模拟从服务器获取数据时的延时
  91. setTimeout(() => {
  92. //模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
  93. let res = {
  94. series: [{
  95. name: "0%",
  96. // color: this.bgColor,
  97. data: 0
  98. }]
  99. };
  100. this.chartData = JSON.parse(JSON.stringify(res));
  101. }, 500);
  102. },
  103. notServerData() {
  104. this.chartData = {};
  105. this.errorMessage = '暂无数据'
  106. },
  107. setServerData(data) {
  108. this.opts.subtitle.name = (data * 100) + "%"
  109. setTimeout(() => {
  110. let res = {
  111. series: [{
  112. color: this.bgColor,
  113. data: data
  114. }]
  115. };
  116. this.chartData = JSON.parse(JSON.stringify(res));
  117. // this.notServerData()
  118. }, 100)
  119. },
  120. }
  121. };
  122. </script>
  123. <style scoped>
  124. </style>