statistics_B.js 4.9 KB

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