filter.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. import Vue from 'vue';
  2. // 保留两位小数
  3. Vue.filter('keepTwoNum', function (val) {
  4. let value = Number(val);
  5. return value.toFixed(2);
  6. });
  7. // 格式化数字三位加一逗号
  8. Vue.filter('NumFormat', function (value) {
  9. if (!value) return '';
  10. /*原来用的是Number(value).toFixed(0),这样取整时有问题,例如0.51取整之后为1 */
  11. /*后来改成了 Number(value)|0,但是输入超过十一位就为负数了 */
  12. var intPart = Number(value) - (Number(value) % 1); // 获取整数部分
  13. var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); //将整数部分逢三一断
  14. return intPartFormat;
  15. });
  16. //链接加时间戳
  17. Vue.filter('timestamp', function (link) {
  18. return link + '?t=' + new Date().getTime();
  19. });
  20. //截取第一张照片且判断是否有图片,没有图片输入默认图片
  21. Vue.filter('firstImg', function (arr, sizeType, imgType) {
  22. //图片类型判断
  23. if (arr) {
  24. if (arr instanceof Array) {
  25. img = arr[0];
  26. } else {
  27. img = arr.split(',')[0];
  28. }
  29. }
  30. return img;
  31. });
  32. //七牛云压缩图片
  33. Vue.filter('miniImg', function (img, quality) {
  34. return img + '?imageMogr2/quality/' + quality;
  35. });
  36. //单位米m转换为单位千米km,提醒:传递参数不要带引号,如kmUnit('100')会返回0m。
  37. Vue.filter('kmUnit', function (m) {
  38. var v;
  39. if (typeof m === 'number' && !isNaN(m)) {
  40. if (m >= 1000) {
  41. v = (m / 1000).toFixed(2) + 'km';
  42. } else {
  43. v = m + 'm';
  44. }
  45. } else {
  46. v = '0m';
  47. }
  48. return v;
  49. });
  50. // 订单状态
  51. Vue.filter('filterOrderStatus', function (status) {
  52. status = Number(status);
  53. switch (status) {
  54. case 1:
  55. return '停放中';
  56. break;
  57. case 2:
  58. return '欠费未缴';
  59. break;
  60. case 3:
  61. return '欠费';
  62. break;
  63. case 4:
  64. return '已完成';
  65. break;
  66. default:
  67. return '未知';
  68. break;
  69. }
  70. });
  71. // 支付状态
  72. Vue.filter('filterPayStatus', function (status) {
  73. status = Number(status);
  74. switch (status) {
  75. case 0:
  76. return '未支付';
  77. break;
  78. case 1:
  79. return '已支付';
  80. break;
  81. case 2:
  82. return '支付中';
  83. break;
  84. case 3:
  85. return '支付失败';
  86. break;
  87. default:
  88. return '未知';
  89. break;
  90. }
  91. });
  92. // 汽车类型
  93. Vue.filter('energyTpye', function (value) {
  94. status = Number(value);
  95. switch (status) {
  96. case 1:
  97. return '汽油车';
  98. case 2:
  99. return '新能源';
  100. default:
  101. return '汽油车';
  102. }
  103. });
  104. // 免费时长
  105. Vue.filter('freeDuration', function (value) {
  106. let createTime = new Date(value).valueOf(),
  107. freeTime = new Date('2022-06-20 00:00:00').valueOf(),
  108. freeTxt = '0天0时15分0秒';
  109. if (createTime > freeTime) {
  110. freeTxt = '0天0时15分0秒';
  111. }
  112. return freeTxt;
  113. });