utils.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. define(['angular'],
  2. function(angular) {
  3. 'use strict';
  4. angular.module('common.utils', []).factory('SerializerUtil', function() {
  5. return {
  6. /**
  7. * 将元素值转换为序列化的字符串表示
  8. */
  9. param: function(obj) {
  10. var query = '',
  11. name, value, fullSubName, subName, subValue, innerObj, i, me = this;
  12. for (name in obj) {
  13. value = obj[name];
  14. if (value instanceof Array) {
  15. for (i = 0; i < value.length; ++i) {
  16. subValue = value[i];
  17. fullSubName = name + '[' + i + ']';
  18. innerObj = {};
  19. innerObj[fullSubName] = subValue;
  20. query += me.param(innerObj) + '&';
  21. }
  22. } else if (value instanceof Object) {
  23. for (subName in value) {
  24. subValue = value[subName];
  25. fullSubName = name + '[' + subName + ']';
  26. innerObj = {};
  27. innerObj[fullSubName] = subValue;
  28. query += me.param(innerObj) + '&';
  29. }
  30. } else if (value !== undefined && value !== null) query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';
  31. }
  32. return query.length ? query.substr(0, query.length - 1) : query;
  33. }
  34. };
  35. }).factory('TimerUtil', ['$timeout', function($timeout) {
  36. var on = true, task = null, scope = null, timeParam = null;
  37. return {
  38. /**
  39. * 简单计时器
  40. */
  41. init: function(s, t) {
  42. scope = s;
  43. timeParam = t;
  44. scope[timeParam] = 60;
  45. this.go();
  46. return this;
  47. },
  48. go: function() {
  49. var me = this;
  50. task = $timeout(function(){
  51. scope[timeParam]--;
  52. }, 1000).then(function(){
  53. if(on && scope[timeParam] > 0)
  54. me.go();
  55. });
  56. },
  57. cancel: function() {
  58. on = false;
  59. task && $timeout.cancel(task);
  60. },
  61. info: function() {
  62. return scope[timeParam];
  63. }
  64. };
  65. }])
  66. /**
  67. * @author yangck
  68. */
  69. .factory('DateUtil', function () {
  70. Date.prototype.yyyyMmDd = function() {
  71. var mm = this.getMonth() + 1; // getMonth() is zero-based
  72. var dd = this.getDate();
  73. return [this.getFullYear(), '-',
  74. (mm>9 ? '' : '0') + mm, '-',
  75. (dd>9 ? '' : '0') + dd
  76. ].join('');
  77. };
  78. // var date = new Date();
  79. // date.yyyyMmDd();
  80. var yyyyMmDd = function(date) {
  81. var mm = date.getMonth() + 1; // getMonth() is zero-based
  82. var dd = date.getDate();
  83. return [date.getFullYear(), '-',
  84. (mm>9 ? '' : '0') + mm, '-',
  85. (dd>9 ? '' : '0') + dd
  86. ].join('');
  87. };
  88. return {
  89. yyyyMmDd: yyyyMmDd
  90. }
  91. })
  92. .filter('commonDate', ['$filter', function($filter) {// 实用日期过滤器
  93. return function(input) {
  94. console.log($filter('date')(new Date(), 'yyyy-MM-dd HH:m:ss'));
  95. var date = new Date(), dateFilter = $filter('date');
  96. var r = '';
  97. if(dateFilter(date, 'yyyy') == dateFilter(input, 'yyyy')) {
  98. if(dateFilter(date, 'MM') == dateFilter(input, 'MM')) {
  99. if(dateFilter(date, 'dd') == dateFilter(input, 'dd')) {
  100. r = dateFilter(input, '今天 HH:mm:ss');
  101. } else {
  102. r = dateFilter(input, 'MM月dd日');
  103. }
  104. } else {
  105. r = dateFilter(input, 'MM月dd日');
  106. }
  107. } else {
  108. r = dateFilter(input, 'yy年MM月dd日');
  109. }
  110. return r;
  111. };
  112. }]).filter('numberToFixed', ['$filter', function ($filter) { // 将数字转换为固定长度字符串
  113. return function (input, decimals ) {
  114. var num = parseFloat($filter('number')(input, decimals));
  115. return num.toFixed(decimals);
  116. }
  117. }])
  118. // 根据指定状态码获取状态历史记录里面的项
  119. .filter('toState', function () {
  120. return function (input, status) {
  121. if(input) {
  122. if(Object.prototype.toString.call(input) != '[object Array]')
  123. console.error('被过滤数据不是数组');
  124. for(var i = 0; i < input.length; i++) {
  125. if(input[i].status == status)
  126. return input[i];
  127. }
  128. }
  129. }
  130. });
  131. });