statistics_B.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  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. if(res.date){
  102. that.getIncidentLsit();
  103. }
  104. },
  105. complete: (res) => {
  106. that.setData({
  107. showDate: false
  108. })
  109. }
  110. });
  111. },
  112. //获取积分事件
  113. getIncidentLsit() {
  114. var y = that.data.date.substr(that.data.date.length - 2, 2);
  115. var n = that.data.date.substr(0, 4);
  116. var start_date;
  117. if (y >= 6) {
  118. start_date = n + "-" + "0" + (y - 5).toString();
  119. } else {
  120. n--;
  121. switch (y - 5) {
  122. case 0:
  123. y = 12
  124. break;
  125. case -1:
  126. y = 11
  127. break;
  128. case -2:
  129. y = 10
  130. break;
  131. case -3:
  132. y = "0"+(9).toString()
  133. break;
  134. case -4:
  135. y = "0"+(8).toString()
  136. break;
  137. }
  138. start_date =n+"-"+y;
  139. }
  140. var incident = app.$get("api/integral/statistics/b", { employee_id: 0, start_date: start_date, end_date: that.data.date, show_type: '2' });
  141. var pei = app.$get("api/integral/statistics/pie/b", { employee_id: 0, month: that.data.date });
  142. Promise.all([incident, pei]).then(resArr => {
  143. if (resArr[0].data.code == 1) {
  144. const { b, chart, good, bad } = resArr[0].data.data
  145. const points = chart.reward.map((rewardItem, index) => {
  146. return { date: rewardItem.date, value: rewardItem.point - (chart.deduction[index].point || 0) }
  147. })
  148. chart1.changeData(points);
  149. that.setData({
  150. data_b: b,
  151. data_good: good,
  152. data_bad: bad,
  153. });
  154. }
  155. // if (resArr[1].data.code == 1) {
  156. // const pieData = resArr[1].data.data.list.map((item) => {
  157. // return { name: item.name, percent: item.point < 0 ? 0 : item.point, a:"1",point:item.point }
  158. // })
  159. // var isData=pieData.every(itme=>{
  160. // return itme.percent == 0;
  161. // })
  162. // that.setData({
  163. // pieData:isData?[]:pieData
  164. // });
  165. // chart2.changeData(pieData);
  166. // }
  167. }).catch(e => {
  168. console.error(e)
  169. })
  170. },
  171. });