filter.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import Vue from 'vue'
  2. /**
  3. * 取小数位的精度 页面用法:{{'13232.1' | doubleNum}} 返回值:13232.10
  4. * @param {Object} value //需要匹配小数位的原始值
  5. * @param {Object} d //小数位的位数(可不传,不传默认保留两位小数)
  6. */
  7. Vue.filter("doubleNum", function (value, d) {
  8. if (value == '--') {
  9. return value;
  10. }
  11. d = d ? d : '2';
  12. if (value) {
  13. return parseFloat(value).toFixed(d);
  14. } else {
  15. // return '--'
  16. return (0).toFixed(d);
  17. }
  18. });
  19. /**
  20. * 千分位符 页面用法:{{'13232.1' | thousand}} 返回值:13,232.1
  21. * @param {Object} value //需要匹配的原始值
  22. * @param {Object} d //需要保留的小数位的位数(可不传,不传保留原始小数位)
  23. */
  24. Vue.filter("thousand", function (value, d) {
  25. if (value) {
  26. if (d) value = parseFloat(value).toFixed(d);
  27. value = value.toString();
  28. var re = /\d{1,3}(?=(\d{3})+$)/g;
  29. var n1 = value.replace(/^(\d+)((\.\d+)?)$/, function (s, s1, s2) { return s1.replace(re, "$&,") + s2; });
  30. return n1;
  31. }
  32. });
  33. /**
  34. * 日期格式重置 页面用法:{{'2017-08-22 18:30:26','yyyy-mm-dd hhmm' | formatDate}} 返回值:'2017-08-22 18:30'
  35. * @param {Object} value //需要匹配的原始值
  36. * @param {Object} value2 //需要得到的日期格式(页面不区分大小写,可不传,不传默认返回年月日)
  37. */
  38. Vue.filter("formatDate", function (value, value2) {
  39. if (value) {
  40. if (value2) {
  41. if (value2.toLowerCase() == 'yyyy-mm-dd hhmm') {
  42. let str = value.slice(11, 19);
  43. if (str == '23:59:59') {
  44. return value.slice(0, 10) + ' 24:00';
  45. } else {
  46. return value.slice(0, 16);
  47. }
  48. } else if (value2.toLowerCase() == 'yyyy-mm-dd hh') {
  49. return value.slice(0, 13);
  50. } else if (value2.toLowerCase() == 'hhmm') {
  51. if (value.slice(11, 19) == '23:59:59') {
  52. return '24:00';
  53. }
  54. return value.slice(11, 16);
  55. } else {
  56. return value.slice(0, 10);
  57. }
  58. } else {
  59. return value.slice(0, 10);
  60. }
  61. }
  62. });
  63. /**
  64. * 时间格式重置 页面用法:{{'18:30:26' | formatTime}} 返回值:'18:30'
  65. * @param {Object} value //需要匹配的原始值
  66. */
  67. Vue.filter("formatTime", function (value) {
  68. if (value) {
  69. if (value == '23:59:59') {
  70. return "24:00";
  71. } else {
  72. return value.slice(0, 5);
  73. }
  74. }
  75. });
  76. /**
  77. * 格式重置 返回百分比
  78. * @param {Object} value //需要匹配的原始值
  79. */
  80. Vue.filter("percent", function (value) {
  81. if (value) {
  82. return parseFloat(value).toFixed(2) + '%';
  83. } else {
  84. return (0).toFixed(2) + '%';
  85. }
  86. });
  87. /**
  88. * 限制字符串长度
  89. * value:字符串对象
  90. * lmit:展示的长度
  91. */
  92. Vue.filter("ellipsis", function (value, lmit) {
  93. if (!value) return ''
  94. if (value.length > lmit) {
  95. return value.slice(0, lmit) + '...'
  96. }
  97. return value
  98. })