• uni-app:服务器端数据绘制多个echarts图标(renderjs解决手机端无法显示问题)


    效果

    代码 

    1. <template>
    2. <view>
    3. <view :prop="option1" :change:prop="echarts.updateEcharts1" id="echarts1"
    4. class="echarts">view>
    5. <view :prop="option2" :change:prop="echarts.updateEcharts2" id="echarts2"
    6. class="echarts">view>
    7. view>
    8. template>
    9. <script>
    10. export default {
    11. data() {
    12. return {
    13. option1: '',
    14. option2: '',
    15. }
    16. },
    17. mounted() {
    18. this.getData(); // 在组件挂载后调用获取数据的方法
    19. },
    20. methods: {
    21. getData() {
    22. uni.request({
    23. url: getApp().globalData.position + 'Other/select_sale_ekanbaninfo',
    24. data: {},
    25. header: {
    26. "Content-Type": "application/x-www-form-urlencoded"
    27. },
    28. method: 'POST',
    29. dataType: 'json',
    30. success: res => {
    31. //行1:年月日总额统计
    32. this.line1_info = res.data;
    33. //行2:周统计
    34. var weekinfo = res.data.week_info;
    35. this.weekinfo = weekinfo;
    36. //行2:月统计
    37. var monthinfo = res.data.month_info;
    38. this.monthinfo = monthinfo;
    39. //行2:年统计
    40. var yearinfo = res.data.year_info;
    41. this.yearinfo = yearinfo;
    42. console.log(this.yearinfo)
    43. //显示图表
    44. this.echart();
    45. },
    46. fail(res) {
    47. console.log("查询失败")
    48. }
    49. });
    50. },
    51. echart() {
    52. //月统计
    53. // 提取日期和对应的值
    54. var dates1 = this.monthinfo.date;
    55. var values1 = this.monthinfo.total_amount;
    56. var months1 = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"];
    57. var months1_chinese = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"];
    58. this.option1 = {
    59. //配置网格组件,用于定义图表的位置和大小
    60. grid: {
    61. top: '15%', // 增加top的值来创建间距
    62. left: '2%',
    63. right: '2%',
    64. bottom: '2%', // 增加bottom的值来创建间距
    65. containLabel: true, //自动计算并包含坐标轴标签、刻度和标题等内容在内。
    66. },
    67. color: ['#5588d4'],
    68. tooltip: {
    69. trigger: 'item',
    70. axisPointer: {
    71. type: 'line'
    72. },
    73. formatter: function(params) {
    74. var value = values1[params.dataIndex];
    75. var date = dates1[params.dataIndex];
    76. var month = months1_chinese[params.dataIndex];
    77. var marker = params.marker; // 添加marker(小圆点)
    78. return marker + ' ' + date + '
      '
      + month + ' : ' + value + '万元';
    79. }
    80. },
    81. xAxis: {
    82. // name: '日期',
    83. data: months1,
    84. axisLine: {
    85. show: false // 隐藏纵坐标轴的横线
    86. },
    87. //隐藏小刻度短线
    88. axisTick: { // x轴刻度相关配置
    89. show: false, // 是否显示x轴刻度线
    90. },
    91. nameTextStyle: {
    92. fontSize: 12 // 设置横轴名称字体大小为12
    93. }
    94. },
    95. yAxis: {
    96. name: '金额(万元)',
    97. splitLine: {
    98. show: false // 隐藏纵坐标轴的背景横线
    99. },
    100. axisLine: {
    101. show: false // 隐藏纵坐标轴的竖线
    102. },
    103. //隐藏小刻度短线
    104. axisTick: { // x轴刻度相关配置
    105. show: false, // 是否显示x轴刻度线
    106. },
    107. axisLabel: {
    108. fontSize: 12 // 设置横轴标签字体大小为12
    109. },
    110. nameTextStyle: {
    111. fontSize: 12 // 设置横轴名称字体大小为12
    112. }
    113. },
    114. series: [{
    115. barWidth: '6',
    116. name: '销量',
    117. type: 'bar',
    118. data: values1,
    119. itemStyle: {
    120. show: true,
    121. position: 'top',
    122. textStyle: {
    123. // color: '#515dc3',
    124. fontSize: 12
    125. }
    126. }
    127. }]
    128. }
    129. //近五年年统计
    130. // 提取日期和对应的值
    131. var dates2 = this.yearinfo.date;
    132. var values2 = this.yearinfo.total_amount;
    133. // 进行图表的配置和数据处理
    134. this.option2 = {
    135. //配置网格组件,用于定义图表的位置和大小
    136. grid: {
    137. top: '15%', // 增加top的值来创建间距
    138. left: '2%',
    139. right: '2%',
    140. bottom: '2%', // 增加bottom的值来创建间距
    141. containLabel: true, //自动计算并包含坐标轴标签、刻度和标题等内容在内。
    142. },
    143. color: ['#71aa77'],
    144. tooltip: {
    145. trigger: 'item',
    146. axisPointer: {
    147. type: 'line'
    148. },
    149. formatter: function(params) {
    150. var value = values2[params.dataIndex];
    151. var date = dates2[params.dataIndex];
    152. var marker = params.marker; // 添加marker(小圆点)
    153. return marker + ' ' + date + '年' + '
      '
      + value + '万元';
    154. }
    155. },
    156. xAxis: {
    157. // name: '日期',
    158. data: dates2,
    159. axisLine: {
    160. show: false // 隐藏纵坐标轴的横线
    161. },
    162. //隐藏小刻度短线
    163. axisTick: { // x轴刻度相关配置
    164. show: false, // 是否显示x轴刻度线
    165. },
    166. nameTextStyle: {
    167. fontSize: 12 // 设置横轴名称字体大小为12
    168. }
    169. },
    170. yAxis: {
    171. name: '金额(万元)',
    172. splitLine: {
    173. show: false // 隐藏纵坐标轴的背景横线
    174. },
    175. axisLine: {
    176. show: false // 隐藏纵坐标轴的竖线
    177. },
    178. //隐藏小刻度短线
    179. axisTick: { // x轴刻度相关配置
    180. show: false, // 是否显示x轴刻度线
    181. },
    182. axisLabel: {
    183. fontSize: 12 // 设置横轴标签字体大小为12
    184. },
    185. nameTextStyle: {
    186. fontSize: 12 // 设置横轴名称字体大小为12
    187. }
    188. },
    189. series: [{
    190. barWidth: '8',
    191. name: '销量',
    192. type: 'bar',
    193. data: values2,
    194. itemStyle: {
    195. normal: {
    196. label: {
    197. show: true,
    198. position: 'top',
    199. textStyle: {
    200. // color: '#515dc3',
    201. fontSize: 12
    202. }
    203. }
    204. }
    205. }
    206. }]
    207. }
    208. }
    209. }
    210. }
    211. script>
    212. <script module="echarts" lang="renderjs">
    213. let myChart1
    214. let myChart2
    215. export default {
    216. mounted() {
    217. // 首先判断window.echarts是否存在,如果存在则调用initEcharts1方法进行初始化。
    218. if (typeof window.echarts === 'function') {
    219. this.initEcharts1()
    220. this.initEcharts2()
    221. } else {
    222. // 如果不存在,则动态创建一个