statistics_B.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  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. isShowTb:true,
  12. },
  13. onLoad() {
  14. that = this;
  15. chart1, chart2 = '';
  16. dd.setNavigationBar({ title: "我的B分统计" });
  17. },
  18. //打开更多
  19. openMore() {
  20. dd.navigateTo({
  21. url: '../../statistics/integralEvent/integralEvent?month=' + this.data.date + '&type=BF'
  22. })
  23. },
  24. //则线图
  25. onInitChart(F2, config) {
  26. chart1 = new F2.Chart(config);
  27. chart1.source(that.data.chartData, {
  28. date: {
  29. // range: [0, 1],
  30. tickCount: 5
  31. }
  32. });
  33. chart1.tooltip({
  34. showCrosshairs: true,
  35. showItemMarker: false,
  36. onShow: function onShow(ev) {
  37. const items = ev.items;
  38. items[0].name = "月份:" + items[0].origin.date;
  39. items[0].value = "分值:" + items[0].value;
  40. }
  41. });
  42. chart1.line().position('date*value');
  43. chart1.point().position('date*value').style({
  44. stroke: '#fff',
  45. lineWidth: 1
  46. });
  47. that.getIncidentLsit();
  48. chart1.render();
  49. return chart1;
  50. },
  51. //饼型图
  52. onInitChart2(F2, config) {
  53. chart2 = new F2.Chart(config);
  54. chart2.source(that.data.pieData, {
  55. percent: {
  56. formatter: function formatter(val) {
  57. return val * 100 + '%';
  58. }
  59. }
  60. });
  61. chart2.legend({
  62. position: 'right',
  63. itemFormatter: function itemFormatter(val, index) {
  64. var str = '';
  65. that.data.pieData.forEach(item => {
  66. if (item.name == val) {
  67. str = val + ' ' + item.point + '分';
  68. }
  69. })
  70. return str;
  71. }
  72. });
  73. chart2.tooltip(false);
  74. chart2.coord('polar', {
  75. transposed: true,
  76. radius: 0.85
  77. });
  78. chart2.axis(false);
  79. chart2.interval()
  80. .position('a*percent')
  81. .color('name', ['#1890FF', '#13C2C2', '#2FC25B', '#FACC14', '#F04864', '#8543E0'])
  82. .adjust('stack')
  83. .style({ lineWidth: 1, stroke: '#fff', lineJoin: 'round', lineCap: 'round' }).animate({
  84. appear: { duration: 1200, easing: 'bounceOut' }
  85. });
  86. chart2.render();
  87. // 注意:需要把chart return 出来
  88. that.getIncidentLsit();
  89. return chart2;
  90. },
  91. //时间选择
  92. openDate() {
  93. that.setData({ showDate: true });
  94. dd.datePicker({
  95. format: 'yyyy-MM',
  96. currentDate: that.data.date,
  97. success: (res) => {
  98. that.setData({
  99. date: res.date
  100. })
  101. that.getIncidentLsit();
  102. },
  103. complete: (res) => {
  104. that.setData({
  105. showDate: false
  106. })
  107. }
  108. });
  109. },
  110. //获取积分事件
  111. getIncidentLsit() {
  112. var y = that.data.date.substr(that.data.date.length - 2, 2);
  113. var n = that.data.date.substr(0, 4);
  114. var start_date;
  115. if (y >= 6) {
  116. start_date = n + "-" + "0" + (y - 5).toString();
  117. } else {
  118. n--;
  119. switch (y - 5) {
  120. case 0:
  121. y = 12
  122. break;
  123. case -1:
  124. y = 11
  125. break;
  126. case -2:
  127. y = 10
  128. break;
  129. case -3:
  130. y = "0"+(9).toString()
  131. break;
  132. case -4:
  133. y = "0"+(8).toString()
  134. break;
  135. }
  136. start_date =n+"-"+y;
  137. }
  138. var incident = app.$get("api/integral/statistics/b", { employee_id: 0, start_date: start_date, end_date: that.data.date, show_type: '2' });
  139. var pei = app.$get("api/integral/statistics/pie/b", { employee_id: 0, month: that.data.date });
  140. Promise.all([incident, pei]).then(resArr => {
  141. if (resArr[0].data.code == 1) {
  142. const { b, chart, good, bad } = resArr[0].data.data
  143. const points = chart.reward.map((rewardItem, index) => {
  144. return { date: rewardItem.date, value: rewardItem.point - (chart.deduction[index].point || 0) }
  145. })
  146. chart1.changeData(points);
  147. that.setData({
  148. data_b: b,
  149. data_good: good,
  150. data_bad: bad,
  151. });
  152. }
  153. // if (resArr[1].data.code == 1) {
  154. // const pieData = resArr[1].data.data.list.map((item) => {
  155. // return { name: item.name, percent: item.point < 0 ? 0 : item.point, a:"1",point:item.point }
  156. // })
  157. // var isData=pieData.every(itme=>{
  158. // return itme.percent == 0;
  159. // })
  160. // that.setData({
  161. // pieData:isData?[]:pieData
  162. // });
  163. // chart2.changeData(pieData);
  164. // }
  165. }).catch(e => {
  166. console.error(e)
  167. })
  168. },
  169. });