statistics_B.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. var app = getApp()
  2. var that;
  3. var chart1;
  4. var chart2;
  5. Page({
  6. data: {
  7. date: app.globalData.month,
  8. data_b: [],
  9. chartData: [],//折线图数据
  10. pieData: [],//饼型图数据
  11. },
  12. onLoad() {
  13. that = this;
  14. dd.setNavigationBar({ title: "我的B分统计" });
  15. that.getIncidentLsit();
  16. },
  17. //则线图
  18. onInitChart(F2, config) {
  19. chart1 = new F2.Chart(config);
  20. chart1.source(that.data.chartData, {
  21. date: {
  22. range: [0, 1],
  23. tickCount: 5
  24. }
  25. });
  26. chart1.line().position('date*value');
  27. chart1.point().position('date*value').style({
  28. stroke: '#fff',
  29. lineWidth: 1
  30. });
  31. chart1.render();
  32. return chart1;
  33. },
  34. //饼型图
  35. onInitChart2(F2, config) {
  36. chart2 = new F2.Chart(config);
  37. // const map = {
  38. // 芳华: '40%',
  39. // 妖猫传: '20%',
  40. // 机器之血: '18%',
  41. // 心理罪: '15%',
  42. // 寻梦环游记: '5%',
  43. // 其他: '2%'
  44. // };
  45. chart2.source(that.data.pieData, {
  46. percent: {
  47. formatter: function formatter(val) {
  48. return val * 100 + '%';
  49. }
  50. }
  51. });
  52. chart2.legend({
  53. position: 'right',
  54. // itemFormatter: function itemFormatter(val) {
  55. // return val + ' ' + map[val];
  56. // }
  57. });
  58. chart2.tooltip(false);
  59. chart2.coord('polar', {
  60. transposed: true,
  61. radius: 0.85
  62. });
  63. chart2.axis(false);
  64. chart2.interval()
  65. .position('a*percent')
  66. .color('name', ['#1890FF', '#13C2C2', '#2FC25B', '#FACC14', '#F04864', '#8543E0'])
  67. .adjust('stack')
  68. .style({ lineWidth: 1, stroke: '#fff', lineJoin: 'round', lineCap: 'round' }).animate({
  69. appear: { duration: 1200, easing: 'bounceOut' }
  70. });
  71. chart2.render();
  72. // 注意:需要把chart return 出来
  73. return chart2;
  74. },
  75. //时间选择
  76. openDate() {
  77. dd.datePicker({
  78. format: 'yyyy-MM',
  79. currentDate: that.data.date,
  80. success: (res) => {
  81. that.setData({
  82. date: res.date
  83. })
  84. that.getIncidentLsit();
  85. },
  86. });
  87. },
  88. //获取积分事件
  89. getIncidentLsit() {
  90. var incident = app.$get("api/integral/statistics/b", { employee_id: 0, month: that.data.date });
  91. var pei = app.$get("api/integral/statistics/pie/b", { employee_id: 0, month: that.data.date });
  92. Promise.all([incident, pei]).then(resArr => {
  93. if (resArr[0].data.code == 1) {
  94. const { b, chart, good, bad } = resArr[0].data.data
  95. const points = chart.reward.map((rewardItem, index) => {
  96. return { date: rewardItem.month, value: rewardItem.point + (chart.deduction[index].point || 0) }
  97. })
  98. chart1.changeData(points);
  99. that.setData({
  100. data_b: b,
  101. data_good: good,
  102. data_bad: bad,
  103. });
  104. }
  105. if (resArr[1].data.code == 1) {
  106. let totalPoint = 0
  107. const pieData = resArr[1].data.data.list.map((item, index) => {
  108. totalPoint += item.point
  109. return { name: item.name, percent: item.point, a: '1' }
  110. })
  111. that.setData({
  112. pieData: pieData
  113. });
  114. if (pieData.length > 0) {
  115. chart2.changeData(pieData);
  116. }
  117. }
  118. }).catch(e => {
  119. console.error(e)
  120. })
  121. },
  122. });