index.vue 7.4 KB

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