1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
  | <template> 
 |      <text>{{dateShow}}</text> 
 |  </template> 
 |    
 |  <script> 
 |      import {friendlyDate} from './date-format.js' 
 |      /** 
 |       * Dateformat 日期格式化 
 |       * @description 日期格式化组件 
 |       * @tutorial https://ext.dcloud.net.cn/plugin?id=3279 
 |       * @property {Object|String|Number} date 日期对象/日期字符串/时间戳 
 |       * @property {String} locale 格式化使用的语言 
 |       *     @value zh 中文 
 |       *     @value en 英文 
 |       * @property {Array} threshold 应用不同类型格式化的阈值 
 |       * @property {String} format 输出日期字符串时的格式 
 |       */ 
 |      export default { 
 |          name: 'uniDateformat', 
 |          props: { 
 |              date: { 
 |                  type: [Object, String, Number], 
 |                  default () { 
 |                      return '-' 
 |                  } 
 |              }, 
 |              locale: { 
 |                  type: String, 
 |                  default: 'zh', 
 |              }, 
 |              threshold: { 
 |                  type: Array, 
 |                  default () { 
 |                      return [0, 0] 
 |                  } 
 |              }, 
 |              format: { 
 |                  type: String, 
 |                  default: 'yyyy/MM/dd hh:mm:ss' 
 |              }, 
 |              // refreshRate使用不当可能导致性能问题,谨慎使用 
 |              refreshRate: { 
 |                  type: [Number, String], 
 |                  default: 0 
 |              } 
 |          }, 
 |          data() { 
 |              return { 
 |                  refreshMark: 0 
 |              } 
 |          }, 
 |          computed: { 
 |              dateShow() { 
 |                  this.refreshMark 
 |                  return friendlyDate(this.date, { 
 |                      locale: this.locale, 
 |                      threshold: this.threshold, 
 |                      format: this.format 
 |                  }) 
 |              } 
 |          }, 
 |          watch: { 
 |              refreshRate: { 
 |                  handler() { 
 |                      this.setAutoRefresh() 
 |                  }, 
 |                  immediate: true 
 |              } 
 |          }, 
 |          methods: { 
 |              refresh() { 
 |                  this.refreshMark++ 
 |              }, 
 |              setAutoRefresh() { 
 |                  clearInterval(this.refreshInterval) 
 |                  if (this.refreshRate) { 
 |                      this.refreshInterval = setInterval(() => { 
 |                          this.refresh() 
 |                      }, parseInt(this.refreshRate)) 
 |                  } 
 |              } 
 |          } 
 |      } 
 |  </script> 
 |    
 |  <style> 
 |    
 |  </style> 
 |  
  |