filter.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. /*
  2. * 全局筛选器
  3. */
  4. //包含主机
  5. var _inHost = path => {
  6. var host = 'dreamstech.cn';
  7. return path && path != '' && path.indexOf(host) > -1;
  8. };
  9. let filter = {};
  10. //图片缩略图 size: 100x100 mode: c
  11. filter.thumb = (value, size, mode) => {
  12. if (value && _inHost(value)) {
  13. mode = mode && mode == 'c' ? '_c' : '';
  14. return value.replace(/(.*)(\.[a-zA-Z]+)$/i, '$1_' + size + mode + '$2');
  15. }
  16. return value;
  17. };
  18. // 格式化日期 2019-01-01 TT(WW)
  19. filter.dateFormat = (value, format = 'yyyy-MM-dd') => {
  20. if (value) {
  21. var date = typeof value == 'string' ? value.replace(/\-/g, '/') : value;
  22. var d = new Date(date);
  23. if (/(T+)/.test(format)) {
  24. var label = '';
  25. var cdt = new Date();
  26. var cur = new Date(
  27. cdt.getFullYear() + '/' + (cdt.getMonth() + 1) + '/' + cdt.getDate()
  28. );
  29. var diffTime = d.getTime() - cur.getTime();
  30. var oneDayTime = 24 * 60 * 60 * 1000;
  31. var twoDayTime = 48 * 60 * 60 * 1000;
  32. var threeDayTime = 72 * 60 * 60 * 1000;
  33. if (diffTime > 0 && diffTime <= oneDayTime) {
  34. label = '今天';
  35. } else if (diffTime > 0 && diffTime <= twoDayTime) {
  36. label = '明天';
  37. } else if (diffTime > 0 && diffTime <= threeDayTime) {
  38. label = '后天';
  39. } else {
  40. label =
  41. d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate();
  42. }
  43. format = format.replace(RegExp.$1, label);
  44. }
  45. if (/(W+)/.test(format)) {
  46. let weeks = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
  47. let week = weeks[d.getDay()];
  48. format = format.replace(RegExp.$1, week);
  49. }
  50. if (/(y+)/.test(format)) {
  51. format = format.replace(
  52. RegExp.$1,
  53. (d.getFullYear() + '').substr(4 - RegExp.$1.length)
  54. );
  55. }
  56. var o = {
  57. 'M+': d.getMonth() + 1, //month
  58. 'd+': d.getDate(), //day
  59. 'h+': d.getHours(), //hour
  60. 'm+': d.getMinutes(), //minute
  61. 's+': d.getSeconds(), //second
  62. 'q+': Math.floor((d.getMonth() + 3) / 3), //quarter
  63. S: d.getMilliseconds(), //millisecond
  64. };
  65. for (var k in o) {
  66. if (new RegExp('(' + k + ')').test(format)) {
  67. format = format.replace(
  68. RegExp.$1,
  69. RegExp.$1.length == 1 ?
  70. o[k] :
  71. ('00' + o[k]).substr(('' + o[k]).length)
  72. );
  73. }
  74. }
  75. return format;
  76. }
  77. return value;
  78. };
  79. filter.keepTwoDecimalFull = value => {
  80. if (value) {
  81. let result = parseFloat(value);
  82. if (isNaN(result)) {
  83. return value;
  84. }
  85. result = Math.round(value * 100) / 100;
  86. let s_x = result.toString();
  87. let pos_decimal = s_x.indexOf('.');
  88. if (pos_decimal < 0) {
  89. pos_decimal = s_x.length;
  90. s_x += '.';
  91. }
  92. while (s_x.length <= pos_decimal + 2) {
  93. s_x += '0';
  94. }
  95. return s_x;
  96. }
  97. return value;
  98. };
  99. /*
  100. * 参数说明:
  101. * number:要格式化的数字
  102. * decimals:保留几位小数
  103. */
  104. filter.moneyEx = (number, decimals=2) => {
  105. number = parseFloat(number)
  106. if(typeof number === 'number' && !isNaN(number)){
  107. return number.toFixed(decimals)
  108. }
  109. return 0;
  110. };
  111. // 格式化金额 50000元 5万元
  112. filter.moneyFormat = (value, format = '万') => {
  113. if (value) {
  114. if (value / 10000 > 0) {
  115. return parseFloat(value) / 10000 + format;
  116. }
  117. return parseFloat(value);
  118. }
  119. return 0;
  120. };
  121. // 加密手机号 12345674567 => 123****4567
  122. filter.encryPhone = (value)=>{
  123. if(value){//filter.isPhone(value)
  124. var reg = /^(\d{3})\d*(\d{4})(.*)/;
  125. return value.replace(reg,'$1****$2$3')
  126. }
  127. return value
  128. }
  129. //默认值,当值为null时显示默认值
  130. filter.defaultValue = (value, defaultValue = '无') => {
  131. if (value && value != 'null') {
  132. return value;
  133. }
  134. return defaultValue;
  135. };
  136. //公里转换 长度单位换算
  137. filter.kmFormat = value => {
  138. let num = parseFloat(value);
  139. if (!isNaN(num)) {
  140. if (num <= 10) {
  141. return '<10米';
  142. } else if (num >= 1000) {
  143. return (num / 1000).toFixed(3) + '公里';
  144. } else {
  145. return num.toFixed(0) + '米';
  146. }
  147. }
  148. return value;
  149. };
  150. //手机号码加星
  151. filter.phoneToStar = value => {
  152. if (value) {
  153. return value.replace(/([\d]{3})[\d]{4}([\d]{4})/, '$1****$2');
  154. }
  155. return value;
  156. };
  157. export default filter;