indexcom.vue 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. <template>
  2. <div
  3. ref="echartD"
  4. style="width: 100%; height: 100%; display: flex; justify-content: center"
  5. ></div>
  6. </template>
  7. <script>
  8. import * as echarts from "echarts";
  9. export default {
  10. props: {
  11. dataMap: { type: Number, default: () => 0 },
  12. dataNumber: { type: Number, default: () => 0 },
  13. color: { type: String, default: () => "#468EFD" },
  14. size: { type: Number, default: () => 20 },
  15. tick: { type: Boolean, default: () => true },
  16. with: { type: Number, default: () => 20 },
  17. },
  18. data() {
  19. return {};
  20. },
  21. watch: {
  22. dataMap(val) {
  23. this.getData(val);
  24. },
  25. dataNumber(val) {
  26. this.getData(val);
  27. },
  28. },
  29. mounted() {
  30. this.getData();
  31. },
  32. methods: {
  33. getData() {
  34. if(document.body.clientWidth >1940){
  35. echarts.init(this.$refs.echartD).setOption({
  36. // backgroundColor: "none",
  37. grid: {
  38. // top: 0,
  39. // bottom: 0,
  40. // left: 0,
  41. // right: 0,
  42. // margi
  43. },
  44. series: [
  45. // 进度条
  46. {
  47. name: "仪表盘",
  48. type: "gauge",
  49. radius: "80%", // 半径
  50. startAngle: 220, //开始角度 左侧角度
  51. endAngle: -40, //结束角度 右侧
  52. splitNumber: 6,
  53. axisLine: {
  54. lineStyle: {
  55. color: [
  56. [this.dataMap, this.color],
  57. [1, "#111F42"],
  58. ],
  59. width: 8,
  60. },
  61. },
  62. axisLabel: {
  63. show: false,
  64. },
  65. axisTick: {
  66. show: false,
  67. },
  68. splitLine: {
  69. show: false,
  70. },
  71. itemStyle: {
  72. show: false,
  73. },
  74. detail: {
  75. formatter: (value) => {
  76. return this.dataNumber ? this.dataNumber :`${(value * 100).toFixed(0)}%`;
  77. },
  78. offsetCenter: [0, "0%"],
  79. textStyle: {
  80. //fontSize: this.size,
  81. fontSize: 30,
  82. fontWeight: "400",
  83. color:this.color,
  84. // color: "#FFF",
  85. fontFamily: '"DS", "DS-B", "DS-BB", "DS-BS"',
  86. },
  87. },
  88. title: {
  89. offsetCenter: [0, "10%"],
  90. },
  91. pointer: {
  92. show: false,
  93. },
  94. data: [
  95. (this.dataNumber || this.dataMap),
  96. ],
  97. },
  98. // 刻度
  99. {
  100. type: "gauge",
  101. // center: ["50%", "60%"],
  102. name: "仪表盘",
  103. radius: "130%", // 半径
  104. startAngle: 220, //开始角度 左侧角度
  105. endAngle: -40, //结束角度 右侧
  106. splitNumber: 5,
  107. z: 2,
  108. axisTick: {
  109. show: this.tick,
  110. lineStyle: {
  111. color: "#6B9DD7",
  112. width: 3,
  113. },
  114. length: -1,
  115. }, //刻度样式
  116. splitLine: {
  117. show: this.tick,
  118. lineStyle: {
  119. color: "#6B9DD7",
  120. width: 3,
  121. },
  122. length: -1,
  123. }, //分隔线样式
  124. axisLabel: {
  125. color: "rgba(255,255,255,0)",
  126. fontSize: 16,
  127. }, //刻度节点文字颜色
  128. pointer: {
  129. show: false,
  130. },
  131. axisLine: {
  132. show: false,
  133. },
  134. label: {
  135. show: false,
  136. },
  137. //仪表盘详情,用于显示数据。
  138. detail: {
  139. show: false,
  140. offsetCenter: ["0", "0%"],
  141. color: "#A2C7F3",
  142. formatter: function (params) {
  143. return params;
  144. },
  145. textStyle: {
  146. fontSize: 80,
  147. },
  148. },
  149. },
  150. ],
  151. });
  152. }else{
  153. echarts.init(this.$refs.echartD).setOption({
  154. // backgroundColor: "none",
  155. grid: {
  156. // top: 0,
  157. // bottom: 0,
  158. // left: 0,
  159. // right: 0,
  160. // margi
  161. },
  162. series: [
  163. // 进度条
  164. {
  165. name: "仪表盘",
  166. type: "gauge",
  167. radius: "90%", // 半径
  168. startAngle: 220, //开始角度 左侧角度
  169. endAngle: -40, //结束角度 右侧
  170. splitNumber: 10,
  171. axisLine: {
  172. lineStyle: {
  173. color: [
  174. [this.dataMap, this.color],
  175. [1, "#111F42"],
  176. ],
  177. width: this.with,
  178. },
  179. },
  180. axisLabel: {
  181. show: false,
  182. },
  183. axisTick: {
  184. show: false,
  185. },
  186. splitLine: {
  187. show: false,
  188. },
  189. itemStyle: {
  190. show: false,
  191. },
  192. detail: {
  193. formatter: (value) => {
  194. return this.dataNumber ? this.dataNumber :`${(value * 100).toFixed(0)}%`;
  195. },
  196. offsetCenter: [0, "0%"],
  197. textStyle: {
  198. //fontSize: this.size,
  199. fontSize: 25,
  200. fontWeight: "700",
  201. color:this.color,
  202. // color: "#FFF",
  203. fontFamily: '"DS", "DS-B", "DS-BB", "DS-BS"',
  204. },
  205. },
  206. title: {
  207. offsetCenter: [0, "10%"],
  208. },
  209. pointer: {
  210. show: false,
  211. },
  212. data: [
  213. (this.dataNumber || this.dataMap),
  214. ],
  215. },
  216. // 刻度
  217. {
  218. type: "gauge",
  219. // center: ["50%", "60%"],
  220. name: "仪表盘",
  221. radius: "140%", // 半径
  222. startAngle: 220, //开始角度 左侧角度
  223. endAngle: -40, //结束角度 右侧
  224. splitNumber: 5,
  225. z: 2,
  226. axisTick: {
  227. show: this.tick,
  228. lineStyle: {
  229. color: "#6B9DD7",
  230. width: 3,
  231. },
  232. length: -1,
  233. }, //刻度样式
  234. splitLine: {
  235. show: this.tick,
  236. lineStyle: {
  237. color: "#6B9DD7",
  238. width: 3,
  239. },
  240. length: -1,
  241. }, //分隔线样式
  242. axisLabel: {
  243. color: "rgba(255,255,255,0)",
  244. fontSize: 12,
  245. }, //刻度节点文字颜色
  246. pointer: {
  247. show: false,
  248. },
  249. axisLine: {
  250. show: false,
  251. },
  252. label: {
  253. show: false,
  254. },
  255. //仪表盘详情,用于显示数据。
  256. detail: {
  257. show: false,
  258. offsetCenter: ["0", "0%"],
  259. color: "#A2C7F3",
  260. formatter: function (params) {
  261. return params;
  262. },
  263. textStyle: {
  264. fontSize: 20,
  265. fontFamily: '"DS", "DS-B", "DS-BB", "DS-BS"',
  266. },
  267. },
  268. },
  269. ],
  270. });
  271. }
  272. },
  273. resize() {
  274. echarts.init(this.$refs.echartD).resize();
  275. },
  276. },
  277. };
  278. </script>
  279. <style scoped>
  280. </style>