filter.js 2.7 KB

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