filter.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. // filters.js
  2. import Vue from 'vue'
  3. // 时间戳——日期格式
  4. Vue.filter("formatDate",(data,type)=>{
  5. if (!data) {
  6. return '- -'
  7. }
  8. data = String(data).length <= 10 ? data * 1000 : data;
  9. const t = new Date(data);
  10. const Y = t.getFullYear().toString().padStart(2,0);
  11. const M = (t.getMonth()+1).toString().padStart(2,0);
  12. const D = t.getDate().toString().padStart(2,0);
  13. const h = t.getHours().toString().padStart(2,0);
  14. const m = t.getMinutes().toString().padStart(2,0);
  15. const s = t.getSeconds().toString().padStart(2,0);
  16. return M +'-'+ D+' '+h+':'+m
  17. })
  18. // 手机号隐藏('13912345678' => '139****5678'),此处str必须为字符串
  19. Vue.filter('telHide', function(str) {
  20. return str.replace(/(\d{3})\d{4}(\d*)/, '$1****$2')
  21. });
  22. // 隐藏姓名(小明=>*明 李小明=>李*明)
  23. Vue.filter('nameHide', function(name) {
  24. if (name.length === 2) {
  25. return new Array(name.length).join('*') + name.substr(-1)
  26. } else {
  27. return (name.substr(0, 1) + new Array(name.length - 1).join('*') + name.substr(-1))
  28. }
  29. });
  30. // 身份证号隐藏('331082199708094687' => '33108219********87')
  31. Vue.filter('IDcardHide', function(name) {
  32. return name.replace(/(\d{8})\d{8}(\d*)/, '$1********$2')
  33. });
  34. // 截取字符串,部分显示 默认截取前100个字符;
  35. Vue.filter('subStr', function(str, num = 100) {
  36. return str.length > num ? (str.substr(0, num) + "...") : str.substr(0, num)
  37. })
  38. /*日期转换*/
  39. Vue.filter('dateFilter', function(str) {
  40. return str.slice(0, 4) + '-' + str.slice(4, 6) + '-' + str.slice(6);
  41. });
  42. // 人气数字转换
  43. Vue.filter('digitalConversion', function(str) {
  44. let num = Math.abs(str);
  45. if (String(num).length < 5) {
  46. return num;
  47. } else {
  48. return (num / 10000).toFixed(1) + 'W';
  49. }
  50. })
  51. // 多久以前
  52. Vue.filter('timeAgo', function(time) {
  53. time = String(time).length <= 10 ? time * 1000 : time;
  54. var arr = [
  55. [],
  56. []
  57. ],
  58. stamp = new Date().getTime() - new Date(time).getTime();
  59. //返回具体日期
  60. if (stamp > 1000 * 60 * 60 * 24 * 8) {
  61. stamp = new Date(time);
  62. arr[0][0] = digit(stamp.getFullYear(), 4);
  63. arr[0][1] = digit(stamp.getMonth() + 1);
  64. arr[0][2] = digit(stamp.getDate());
  65. return arr[0].join('-') + ' ' + arr[1].join(':');
  66. }
  67. //30天以内,返回“多久前”
  68. if (stamp >= 1000 * 60 * 60 * 24) {
  69. return ((stamp / 1000 / 60 / 60 / 24) | 0) + '天前';
  70. } else if (stamp >= 1000 * 60 * 60) {
  71. return ((stamp / 1000 / 60 / 60) | 0) + '小时前';
  72. } else if (stamp >= 1000 * 60 * 2) { //2分钟以内为:刚刚
  73. return ((stamp / 1000 / 60) | 0) + '分钟前';
  74. } else {
  75. return '刚刚';
  76. }
  77. })