format-u.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <template>
  2. <view class="content">
  3. <qiun-title-bar title="饼状图format"/>
  4. <view class="charts-box">
  5. <!-- 注意:因各小程序及app端通过组件均不能传递function类型参数,组件内所有formatter方法,均需使用format属性指定config-ucharts.js里事先定义好的formatter的key值,组件会自动匹配与其对应的function -->
  6. <!-- 饼图的format需要挂到chartData中的series[i].format上,例如pieFormatDemo.series[i].format="pieDemo"。当使用localdata数据渲染图表时,因series是组件自动拼接的,暂时不支持使用format -->
  7. <qiun-data-charts type="pie" :chartData="chartsDataPie1"/>
  8. </view>
  9. <qiun-title-bar title="Y轴format方法1(保留小数点及添加单位)"/>
  10. <view class="charts-box">
  11. <qiun-data-charts type="area" :opts="{yAxis:{data:[{tofix:3,unit:'万元',min:0,max:200}]}}" :chartData="chartsDataLine1" />
  12. </view>
  13. <qiun-title-bar title="Y轴format方法2(自定义)"/>
  14. <view class="charts-box">
  15. <qiun-data-charts type="area" :opts="{yAxis:{data:[{format:'yAxisDemo1'}]}}" :chartData="chartsDataLine1" />
  16. </view>
  17. <qiun-title-bar title="X轴format方法"/>
  18. <view class="charts-box">
  19. <qiun-data-charts type="area" :opts="{xAxis:{format:'xAxisDemo1'}}" :chartData="chartsDataLine1" />
  20. </view>
  21. <qiun-title-bar title="series数据点format"/>
  22. <view class="charts-box">
  23. <!-- series的format需要在chartData.series中指定,注意,因为组件监听了chartData,只要有数据变化,就会触发更新,不要用循环chartData绑定的变量,需要一次性整体赋值给chartData!!! -->
  24. <qiun-data-charts type="line" :chartData="chartsDataColumn2"/>
  25. </view>
  26. <qiun-title-bar title="临时增加的tooltip提示窗format" />
  27. <view class="charts-box">
  28. <!-- 此方法展示在引用的config-ucharts.js中动态添加tooltip的formatter(APP不能实现) -->
  29. <qiun-data-charts
  30. type="column"
  31. :chartData="chartsDataLine1"
  32. :tooltipFormat="tooltipFormatTemp"
  33. />
  34. </view>
  35. </view>
  36. </template>
  37. <script>
  38. //下面是演示数据,您的项目不需要引用,数据需要您从服务器自行获取
  39. import demodata from '@/mockdata/demodata.json';
  40. //下面是uCharts的配置文件及qiun-data-charts组件的公用中转参数,可以从本配置文件中获取uCharts实例、opts配置、format配置(APP端因采用renderjs无法从此配置文件获取uCharts实例)
  41. //***并不是所有的页面都需要引用这个文件***引入这个configjs是为了获取组件的uCharts实例,从而操作uCharts的一些方法,例如手动显示tooltip及一些其他uCharts包含的方法及事件。
  42. //再说一遍,只能在H5内使用,APP不行,APP不行,APP不行
  43. import uCharts from '@/uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js';
  44. export default {
  45. data() {
  46. return {
  47. chartsDataLine1: {},
  48. chartsDataColumn2: {},
  49. chartsDataPie1:{},
  50. tooltipFormatTemp:"tooltipTemp1"
  51. };
  52. },
  53. onLoad() {
  54. //tooltipFormat临时自定义的示例(APP端不能这么做,只能在config-ucharts.js内预先定义),item, category, index, opts详细解释看文档https://demo.ucharts.cn的帮助页
  55. uCharts.formatter[this.tooltipFormatTemp] = function(item, category, index, opts) {
  56. //只有第一组数据和其他组别不一样,想要其他的请自由发挥
  57. if (index === 0) {
  58. return '第一组数据' + item.data + '年';
  59. } else {
  60. return '2016年以后的' + item.data + '天';
  61. }
  62. };
  63. //模拟从服务器获取数据
  64. this.getServerData()
  65. },
  66. methods: {
  67. getServerData() {
  68. setTimeout(() => {
  69. //因部分数据格式一样,这里不同图表引用同一数据源的话,需要深拷贝一下构造不同的对象
  70. //开发者需要自行处理服务器返回的数据,应与标准数据格式一致,注意series的data数值应为数字格式
  71. this.chartsDataLine1=JSON.parse(JSON.stringify(demodata.Line))
  72. //数据点格式化示例
  73. //使用format属性指定config-ucharts.js里事先定义好的formatter的key值,组件会自动匹配与其对应的function
  74. let columnFormatDemo=JSON.parse(JSON.stringify(demodata.Column))
  75. for (var i = 0; i < columnFormatDemo.series.length; i++) {
  76. columnFormatDemo.series[i].format="seriesDemo1"
  77. }
  78. this.chartsDataColumn2=columnFormatDemo
  79. //饼图格式化示例
  80. //使用format属性指定config-ucharts.js里事先定义好的formatter的key值,组件会自动匹配与其对应的function
  81. let pieFormatDemo=JSON.parse(JSON.stringify(demodata.PieA))
  82. for (var i = 0; i < pieFormatDemo.series.length; i++) {
  83. pieFormatDemo.series[i].format="pieDemo"
  84. }
  85. this.chartsDataPie1=pieFormatDemo
  86. }, 1500);
  87. },
  88. }
  89. };
  90. </script>
  91. <style>
  92. .content {
  93. display: flex;
  94. flex-direction: column;
  95. flex: 1;
  96. }
  97. .charts-box {
  98. width: 100%;
  99. height: 300px;
  100. }
  101. </style>