statistics_B.js 4.8 KB

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