statistics_B.js 3.3 KB

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