statistics_B.js 6.3 KB

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