config-echarts.js 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495
  1. /*
  2. * uCharts®
  3. * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台
  4. * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved.
  5. * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
  6. * 复制使用请保留本段注释,感谢支持开源!
  7. *
  8. * uCharts®官方网站
  9. * https://www.uCharts.cn
  10. *
  11. * 开源地址:
  12. * https://gitee.com/uCharts/uCharts
  13. *
  14. * uni-app插件市场地址:
  15. * http://ext.dcloud.net.cn/plugin?id=271
  16. *
  17. */
  18. // 通用配置项
  19. // 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性
  20. const color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc', ...
  21. generateHslaColors(100, 50, 1, 20), ...generateHslaColors(60, 50, 1, 20), ...generateHslaColors(30, 50, 1, 20)
  22. ];
  23. function generateHslaColors(saturation, lightness, alpha, amount) {
  24. let colors = []
  25. let huedelta = Math.trunc(360 / amount)
  26. for (let i = 0; i < amount; i++) {
  27. let hue = i * huedelta
  28. if (hue) {
  29. colors.push(`hsla(${hue},${saturation}%,${lightness}%,${alpha})`)
  30. }
  31. }
  32. return colors
  33. }
  34. const cfe = {
  35. //demotype为自定义图表类型
  36. "type": ["pie", "ring", "rose", "funnel", "line", "column", "area", "radar", "gauge", "candle", "demotype"],
  37. //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型例如最后的"demotype"
  38. "categories": ["line", "column", "area", "radar", "gauge", "candle", "demotype"],
  39. //instance为实例变量承载属性,option为eopts承载属性,不要删除
  40. "instance": {},
  41. "option": {},
  42. //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换
  43. "formatter": {
  44. 'tooltipCustom': function(item, category, index, opts) {
  45. // console.log(item, category, index, opts);
  46. const item0 = item[0]
  47. let val = ''
  48. item.forEach(data=>{
  49. val += `\n${data.seriesName} : ${data.data}`
  50. })
  51. return `${item0.name}${val}`
  52. },
  53. "tooltipDemo1": function(res) {
  54. let result = ''
  55. for (let i in res) {
  56. if (i == 0) {
  57. result += res[i].axisValueLabel + '年销售额'
  58. }
  59. let value = '--'
  60. if (res[i].data !== null) {
  61. value = res[i].data
  62. }
  63. // #ifdef H5
  64. result += '\n' + res[i].seriesName + ':' + value + ' 万元'
  65. // #endif
  66. // #ifdef APP-PLUS
  67. result += '<br/>' + res[i].marker + res[i].seriesName + ':' + value + ' 万元'
  68. // #endif
  69. }
  70. return result;
  71. },
  72. legendFormat: function(name) {
  73. return "自定义图例+" + name;
  74. },
  75. yAxisFormatDemo: function(value, index) {
  76. return value + '元';
  77. },
  78. seriesFormatDemo: function(res) {
  79. return res.name + '年' + res.value + '元';
  80. }
  81. },
  82. //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type="demotype" 后,组件会调用这个花括号里的option,如果组件上还存在eopts参数,会将demotype与eopts中option合并后渲染图表。
  83. "demotype": {
  84. "color": color,
  85. //在这里填写echarts的option即可
  86. },
  87. //下面是自定义配置,请添加项目所需的通用配置
  88. "column": {
  89. "color": color,
  90. "title": {
  91. "text": ''
  92. },
  93. "tooltip": {
  94. "trigger": 'axis'
  95. },
  96. "grid": {
  97. "top": 30,
  98. "bottom": 50,
  99. "right": 15,
  100. "left": 40
  101. },
  102. "legend": {
  103. "left": 'left',
  104. "padding": [0, 0, 200, 0]
  105. },
  106. "toolbox": {
  107. "show": false,
  108. },
  109. "xAxis": {
  110. "type": 'category',
  111. "axisLabel": {
  112. "color": '#666666'
  113. },
  114. "axisLine": {
  115. "lineStyle": {
  116. "color": '#CCCCCC'
  117. }
  118. },
  119. "boundaryGap": true,
  120. "data": []
  121. },
  122. "yAxis": {
  123. "type": 'value',
  124. "axisTick": {
  125. "show": false,
  126. },
  127. "axisLabel": {
  128. "color": '#666666'
  129. },
  130. "axisLine": {
  131. "show": false,
  132. "lineStyle": {
  133. "color": '#CCCCCC'
  134. }
  135. },
  136. },
  137. "seriesTemplate": {
  138. "name": '',
  139. "type": 'bar',
  140. "data": [],
  141. "barWidth": 30,
  142. "label": {
  143. "show": false,
  144. "color": "#666666",
  145. "position": 'top',
  146. },
  147. },
  148. },
  149. "line": {
  150. "color": color,
  151. "title": {
  152. "text": ''
  153. },
  154. "tooltip": {
  155. "trigger": 'axis'
  156. },
  157. "grid": {
  158. "top": 30,
  159. "bottom": 50,
  160. "right": 15,
  161. "left": 40
  162. },
  163. "legend": {
  164. "bottom": 'left',
  165. },
  166. "toolbox": {
  167. "show": false,
  168. },
  169. "xAxis": {
  170. "type": 'category',
  171. "axisLabel": {
  172. "color": '#666666'
  173. },
  174. "axisLine": {
  175. "lineStyle": {
  176. "color": '#CCCCCC'
  177. }
  178. },
  179. "boundaryGap": true,
  180. "data": []
  181. },
  182. "yAxis": {
  183. "type": 'value',
  184. "axisTick": {
  185. "show": false,
  186. },
  187. "axisLabel": {
  188. "color": '#666666'
  189. },
  190. "axisLine": {
  191. "lineStyle": {
  192. "color": '#CCCCCC'
  193. }
  194. },
  195. },
  196. "seriesTemplate": {
  197. "name": '',
  198. "type": 'line',
  199. "data": [],
  200. "barwidth": 20,
  201. "label": {
  202. "show": true,
  203. "color": "#666666",
  204. "position": 'top',
  205. },
  206. },
  207. },
  208. "area": {
  209. "color": color,
  210. "title": {
  211. "text": ''
  212. },
  213. "tooltip": {
  214. "trigger": 'axis',
  215. },
  216. "grid": {
  217. "top": 50,
  218. "bottom": 30,
  219. "right": 60,
  220. "left": 60
  221. },
  222. "legend": {
  223. "type": 'scroll',
  224. "orient": 'horizontal',
  225. "left": 'left',
  226. "padding": [0, 30, 10, 30],
  227. "itemGap": 20
  228. },
  229. "toolbox": {
  230. "show": false,
  231. },
  232. "xAxis": {
  233. "type": 'category',
  234. "axisLabel": {
  235. "color": '#666666'
  236. },
  237. "axisLine": {
  238. "lineStyle": {
  239. "color": '#CCCCCC'
  240. }
  241. },
  242. "boundaryGap": false,
  243. "data": []
  244. },
  245. "yAxis": {
  246. "type": 'value',
  247. "axisTick": {
  248. "show": false,
  249. },
  250. "axisLabel": {
  251. "color": '#666666'
  252. },
  253. "axisLine": {
  254. "show": false,
  255. "lineStyle": {
  256. "color": '#CCCCCC'
  257. }
  258. },
  259. },
  260. "notMerge": true,
  261. "seriesTemplate": color.map(item => {
  262. return {
  263. "data": [],
  264. "type": 'line',
  265. "name": "",
  266. "color": item,
  267. "smooth": true,
  268. // "showSymbol": false,
  269. "areaStyle": {
  270. "color": {
  271. "x": 0,
  272. "y": 0,
  273. "x2": 0,
  274. "y2": 1,
  275. "colorStops": [{
  276. "offset": 0,
  277. "color": item, // 0% 处的颜色
  278. }, {
  279. "offset": 1,
  280. "color": '#FFFFFF' // 100% 处的颜色
  281. }],
  282. "global": false // 缺省为 false
  283. }
  284. },
  285. "label": {
  286. "show": false,
  287. "color": "#666666",
  288. "position": 'top',
  289. },
  290. }
  291. })
  292. },
  293. "pie": {
  294. "color": color,
  295. "title": {
  296. "text": ''
  297. },
  298. "tooltip": {
  299. "trigger": 'item'
  300. },
  301. "grid": {
  302. "top": 40,
  303. "bottom": 30,
  304. "right": 15,
  305. "left": 15
  306. },
  307. "legend": {
  308. "bottom": 'left',
  309. },
  310. "seriesTemplate": {
  311. "name": '',
  312. "type": 'pie',
  313. "data": [],
  314. "radius": '50%',
  315. "avoidLabelOverlap": "true",
  316. "label": {
  317. "show": true,
  318. "color": "#666666",
  319. "position": 'top',
  320. },
  321. },
  322. },
  323. "ring": {
  324. "color": color,
  325. "title": {
  326. "text": ''
  327. },
  328. "tooltip": {
  329. "trigger": 'item'
  330. },
  331. "grid": {
  332. "top": 0,
  333. "bottom": 0,
  334. "right": 15,
  335. "left": 15
  336. },
  337. "legend": {
  338. "type": "scroll",
  339. "top": 'left'
  340. },
  341. "seriesTemplate": {
  342. "name": '',
  343. "type": 'pie',
  344. "data": [],
  345. "radius": ['30%', '45%'],
  346. "avoidLabelOverlap": true,
  347. "label": {
  348. "show": true,
  349. "color": "#666666",
  350. "position": "bottom",
  351. },
  352. "labelLine": {
  353. "show": true
  354. },
  355. },
  356. },
  357. "rose": {
  358. "color": color,
  359. "title": {
  360. "text": ''
  361. },
  362. "tooltip": {
  363. "trigger": 'item'
  364. },
  365. "legend": {
  366. "top": 'bottom'
  367. },
  368. "seriesTemplate": {
  369. "name": '',
  370. "type": 'pie',
  371. "data": [],
  372. "radius": "55%",
  373. "center": ['50%', '50%'],
  374. "rosetype": 'area',
  375. },
  376. },
  377. "funnel": {
  378. "color": color,
  379. "title": {
  380. "text": ''
  381. },
  382. "tooltip": {
  383. "trigger": 'item',
  384. "formatter": "{b} : {c}%"
  385. },
  386. "legend": {
  387. "top": 'bottom'
  388. },
  389. "seriesTemplate": {
  390. "name": '',
  391. "type": 'funnel',
  392. "left": '10%',
  393. "top": 60,
  394. "bottom": 60,
  395. "width": '80%',
  396. "min": 0,
  397. "max": 100,
  398. "minSize": '0%',
  399. "maxSize": '100%',
  400. "sort": 'descending',
  401. "gap": 2,
  402. "label": {
  403. "show": true,
  404. "position": 'inside'
  405. },
  406. "labelLine": {
  407. "length": 10,
  408. "lineStyle": {
  409. "width": 1,
  410. "type": 'solid'
  411. }
  412. },
  413. "itemStyle": {
  414. "bordercolor": '#fff',
  415. "borderwidth": 1
  416. },
  417. "emphasis": {
  418. "label": {
  419. "fontSize": 20
  420. }
  421. },
  422. "data": [],
  423. },
  424. },
  425. "gauge": {
  426. "color": color,
  427. "tooltip": {
  428. "formatter": '{a} <br/>{b} : {c}%'
  429. },
  430. "seriesTemplate": {
  431. "name": '业务指标',
  432. "type": 'gauge',
  433. "detail": {
  434. "formatter": '{value}%'
  435. },
  436. "data": [{
  437. "value": 50,
  438. "name": '完成率'
  439. }]
  440. },
  441. },
  442. "candle": {
  443. "xAxis": {
  444. "data": []
  445. },
  446. "yAxis": {},
  447. "color": color,
  448. "title": {
  449. "text": ''
  450. },
  451. "dataZoom": [{
  452. "type": 'inside',
  453. "xAxisIndex": [0, 1],
  454. "start": 10,
  455. "end": 100
  456. },
  457. {
  458. "show": true,
  459. "xAxisIndex": [0, 1],
  460. "type": 'slider',
  461. "bottom": 10,
  462. "start": 10,
  463. "end": 100
  464. }
  465. ],
  466. "seriesTemplate": {
  467. "name": '',
  468. "type": 'k',
  469. "data": [],
  470. },
  471. }
  472. }
  473. function deviceWidth() {
  474. const device = uni.getSystemInfoSync()
  475. const type = cfe.area
  476. if (device.windowWidth < 500) {
  477. type.grid = {
  478. right: 20,
  479. left: 50
  480. }
  481. type.seriesTemplate.forEach(item => {
  482. item.showSymbol = false
  483. })
  484. }
  485. }
  486. deviceWidth()
  487. export default cfe;