newRedrankvue.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. // dependency : newCommon
  2. var RedRankTable = new Module("#table-rank", "fcBiWorkerDaily");
  3. RedRankTable.slideLen = 16;
  4. RedRankTable.slides = 0;
  5. RedRankTable.parts = 4;
  6. RedRankTable.partLen = 4;
  7. RedRankTable.curSlide = 0;
  8. RedRankTable.drawData = function (data) {
  9. // showSlide
  10. this.showSlide(this.curSlide, data);
  11. };
  12. RedRankTable.showSlide = function (slide, data) {
  13. for(var part = 0; part < this.parts; part++){
  14. this.showPart(slide, part, data);
  15. }
  16. };
  17. RedRankTable.showPart = function(slide, part, data){
  18. var lpos = slide * this.slideLen + (part * this.partLen);
  19. var rpos = slide * this.slideLen + ((part+1) * this.partLen);
  20. var partList = [];
  21. for (var i = lpos; i < rpos; i++) {
  22. var one = data.getSorted(i);
  23. if(one == null || one == undefined) {
  24. partList[partList.length] = {passNum : 0, failNum: 0, failRate: 0, workerId: 0, fcDay: new Date().toLocaleDateString()};
  25. } else {
  26. partList[partList.length] = one.jsonObj;
  27. }
  28. partList[partList.length - 1].workerName = getUserName(partList[partList.length - 1].workerId);
  29. if("[用户:"+0+"]" == partList[partList.length - 1].workerName){
  30. partList[partList.length - 1].workerName = "-";
  31. }
  32. partList[partList.length - 1].color = true;
  33. }
  34. let k = newRedrankvue.parting[part].length;
  35. for(let i = 0; i < k; i++){
  36. newRedrankvue.parting[part].pop();
  37. }
  38. for(let i = 0; i < partList.length; i++){
  39. newRedrankvue.parting[part].push(partList[i]);
  40. }
  41. };
  42. RedRankTable.tickInterval = 1000;
  43. RedRankTable.tick = function(){
  44. var totalDataLen = this.activeData != null ? this.activeData.len() : 0;
  45. if(this.slides != Math.ceil(totalDataLen / this.slideLen)){
  46. this.slides = Math.ceil(totalDataLen / this.slideLen);
  47. this.curSlide = 0;
  48. } else {
  49. this.curSlide = (this.curSlide + 1) % this.slides;
  50. }
  51. };
  52. RedRankTable.init();
  53. var newRedrankvue = new Vue({
  54. el: '#redrank',
  55. data: {
  56. parting:[[{},{},{},{}], [{},{},{},{}], [{},{},{},{}], [{},{},{},{}]],
  57. title: '本厂今日生产能手榜'
  58. },
  59. methods: {
  60. clicktitle: function () {
  61. alert("Hello! This is Title");
  62. }
  63. }
  64. });
  65. var RedRankTablePlugin = new (function() {
  66. this.workerDailyService = new DataObjectService("fcBiWorkerDaily", ONDEMAND | AUTO | FAST, "?type=1");
  67. this.tick = function(obj){
  68. RedRankTable.setData(obj.workerDailyService.getList());
  69. };
  70. this.setup = function(obj){
  71. setInterval(obj.tick, 1000, obj);
  72. };
  73. this.setup(this);
  74. })();
  75. (function() {
  76. setInterval(RedRankTablePlugin.tick, 1000);
  77. })();