@10yun/cv-mobile-ui 0.4.2 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/package.json +1 -1
  2. package/ui-uni/amap-wx/js/util.js +166 -158
  3. package/ui-uni/page-foot/page-foot.vue +38 -0
  4. package/ui-uni/page-head/page-head.vue +16 -0
  5. package/ui-uni/product.vue +52 -52
  6. package/ui-uni/u-charts/u-charts.js +743 -1092
  7. package/ui-uni/u-link/u-link.vue +59 -0
  8. package/ui-uni/uni-badge/uni-badge.vue +250 -0
  9. package/ui-uni/uni-calendar/calendar.js +546 -0
  10. package/ui-uni/uni-calendar/uni-calendar-item.vue +171 -0
  11. package/ui-uni/uni-calendar/uni-calendar.vue +504 -0
  12. package/{ui-cv/cv-calendar → ui-uni/uni-calendar}/util.js +0 -0
  13. package/ui-uni/uni-card/uni-card.vue +420 -0
  14. package/ui-uni/uni-col/uni-col.vue +2968 -0
  15. package/ui-uni/uni-collapse/uni-collapse.vue +146 -0
  16. package/ui-uni/uni-collapse-item/uni-collapse-item.vue +378 -0
  17. package/ui-uni/uni-combox/uni-combox.vue +237 -0
  18. package/ui-uni/uni-countdown/uni-countdown.vue +234 -0
  19. package/ui-uni/uni-data-checkbox/uni-data-checkbox.vue +792 -0
  20. package/{ui-cv/cv-data-indexed-list → ui-uni/uni-data-indexed-list}/clientdb.js +0 -0
  21. package/ui-uni/uni-data-indexed-list/uni-data-indexed-list-item.vue +142 -0
  22. package/ui-uni/uni-data-indexed-list/uni-data-indexed-list.vue +364 -0
  23. package/{ui-cv/cv-data-picker → ui-uni/uni-data-picker}/keypress.js +0 -0
  24. package/ui-uni/uni-data-picker/uni-data-picker.vue +468 -0
  25. package/{ui-cv/cv-data-pickerview/cv-data-picker.js → ui-uni/uni-data-pickerview/uni-data-picker.js} +0 -0
  26. package/ui-uni/uni-data-pickerview/uni-data-pickerview.vue +298 -0
  27. package/{ui-cv/cv-dateformat → ui-uni/uni-dateformat}/date-format.js +0 -0
  28. package/ui-uni/uni-dateformat/uni-dateformat.vue +88 -0
  29. package/{ui-cv/cv-datetime-picker → ui-uni/uni-datetime-picker}/calendar-item.vue +0 -0
  30. package/{ui-cv/cv-datetime-picker → ui-uni/uni-datetime-picker}/calendar.js +0 -0
  31. package/ui-uni/uni-datetime-picker/calendar.vue +747 -0
  32. package/{ui-cv/cv-datetime-picker → ui-uni/uni-datetime-picker}/keypress.js +0 -0
  33. package/ui-uni/uni-datetime-picker/time-picker.vue +899 -0
  34. package/ui-uni/uni-datetime-picker/uni-datetime-picker.vue +874 -0
  35. package/{ui-cv/cv-datetime-picker → ui-uni/uni-datetime-picker}/util.js +0 -0
  36. package/ui-uni/uni-drawer/keypress.js +45 -0
  37. package/ui-uni/uni-drawer/uni-drawer.vue +178 -0
  38. package/{ui-cv/cv-easyinput → ui-uni/uni-easyinput}/common.js +0 -0
  39. package/ui-uni/uni-easyinput/uni-easyinput.vue +438 -0
  40. package/ui-uni/uni-fab/uni-fab.vue +443 -0
  41. package/{ui-cv/cv-fab/cv-fab.vue.bak → ui-uni/uni-fab/uni-fab.vue.bak} +2 -2
  42. package/ui-uni/uni-fav/uni-fav.vue +136 -0
  43. package/{ui-cv/cv-file-picker → ui-uni/uni-file-picker}/choose-and-upload-file.js +0 -0
  44. package/ui-uni/uni-file-picker/uni-file-picker.vue +614 -0
  45. package/{ui-cv/cv-file-picker → ui-uni/uni-file-picker}/upload-file.vue +0 -0
  46. package/{ui-cv/cv-file-picker → ui-uni/uni-file-picker}/upload-image.vue +0 -0
  47. package/{ui-cv/cv-file-picker → ui-uni/uni-file-picker}/utils.js +0 -0
  48. package/ui-uni/uni-forms/uni-forms.vue +467 -0
  49. package/ui-uni/uni-forms/validate.js +486 -0
  50. package/ui-uni/uni-forms-item/uni-forms-item.vue +500 -0
  51. package/{ui-cv/cv-goods-nav/cv-goods-nav.vue → ui-uni/uni-goods-nav/uni-goods-nav.vue} +1 -1
  52. package/ui-uni/uni-grid/uni-grid.vue +141 -0
  53. package/ui-uni/uni-grid-item/uni-grid-item.vue +123 -0
  54. package/ui-uni/uni-group/uni-group.vue +123 -0
  55. package/ui-uni/uni-icons/icons.js +132 -0
  56. package/ui-uni/uni-icons/uni-icons.vue +72 -0
  57. package/{ui-cv/cv-icon2 → ui-uni/uni-icons}/uni.ttf +0 -0
  58. package/ui-uni/uni-indexed-list/uni-indexed-list-item.vue +142 -0
  59. package/ui-uni/uni-indexed-list/uni-indexed-list.vue +357 -0
  60. package/ui-uni/uni-link/uni-link.vue +117 -0
  61. package/ui-uni/uni-list/uni-list.vue +107 -0
  62. package/ui-uni/uni-list/uni-refresh.vue +65 -0
  63. package/{ui-cv/cv-list → ui-uni/uni-list}/uni-refresh.wxs +0 -0
  64. package/ui-uni/uni-list-ad/uni-list-ad.vue +106 -0
  65. package/{ui-cv/cv-list-chat/cv-list-chat.scss → ui-uni/uni-list-chat/uni-list-chat.scss} +0 -0
  66. package/{ui-cv/cv-list-chat/cv-list-chat.vue → ui-uni/uni-list-chat/uni-list-chat.vue} +0 -0
  67. package/ui-uni/uni-list-item/uni-list-item.vue +428 -0
  68. package/ui-uni/uni-load-more/uni-load-more.vue +366 -0
  69. package/ui-uni/uni-nav-bar/uni-nav-bar.vue +244 -0
  70. package/{ui-cv/cv-nav-bar/cv-status-bar.vue → ui-uni/uni-nav-bar/uni-status-bar.vue} +0 -0
  71. package/ui-uni/uni-notice-bar/uni-notice-bar.vue +394 -0
  72. package/ui-uni/uni-number-box/uni-number-box.vue +224 -0
  73. package/ui-uni/uni-pagination/uni-pagination.vue +376 -0
  74. package/{ui-cv/cv-popup → ui-uni/uni-popup}/keypress.js +0 -0
  75. package/{ui-cv/cv-popup → ui-uni/uni-popup}/popup.js +0 -0
  76. package/ui-uni/uni-popup/uni-popup.vue +412 -0
  77. package/{ui-cv/cv-popup-dialog → ui-uni/uni-popup-dialog}/keypress.js +0 -0
  78. package/{ui-cv/cv-popup-dialog/cv-popup-dialog.vue → ui-uni/uni-popup-dialog/uni-popup-dialog.vue} +0 -0
  79. package/ui-uni/uni-popup-message/uni-popup-message.vue +143 -0
  80. package/{ui-cv/cv-popup-share/cv-popup-share.vue → ui-uni/uni-popup-share/uni-popup-share.vue} +0 -0
  81. package/ui-uni/uni-rate/uni-rate.vue +357 -0
  82. package/ui-uni/uni-row/uni-row.vue +155 -0
  83. package/ui-uni/uni-search-bar/uni-search-bar.vue +262 -0
  84. package/{ui-cv/cv-section/cv-section.vue → ui-uni/uni-section/uni-section.vue} +0 -0
  85. package/{ui-cv/cv-segmented-control/cv-segmented-control.vue → ui-uni/uni-segmented-control/uni-segmented-control.vue} +0 -0
  86. package/{ui-cv/cv-status-bar/cv-status-bar.vue → ui-uni/uni-status-bar/uni-status-bar.vue} +0 -0
  87. package/ui-uni/uni-steps/uni-steps.vue +250 -0
  88. package/{ui-cv/cv-swipe-action/cv-swipe-action.vue → ui-uni/uni-swipe-action/uni-swipe-action.vue} +0 -0
  89. package/{ui-cv/cv-swipe-action-item → ui-uni/uni-swipe-action-item}/bindingx.js +0 -0
  90. package/{ui-cv/cv-swipe-action-item → ui-uni/uni-swipe-action-item}/index.wxs +0 -0
  91. package/{ui-cv/cv-swipe-action-item → ui-uni/uni-swipe-action-item}/isPC.js +0 -0
  92. package/{ui-cv/cv-swipe-action-item → ui-uni/uni-swipe-action-item}/mpalipay.js +0 -0
  93. package/{ui-cv/cv-swipe-action-item → ui-uni/uni-swipe-action-item}/mpother.js +0 -0
  94. package/{ui-cv/cv-swipe-action-item → ui-uni/uni-swipe-action-item}/mpwxs.js +0 -0
  95. package/{ui-cv/cv-swipe-action-item/cv-swipe-action-item.vue → ui-uni/uni-swipe-action-item/uni-swipe-action-item.vue} +0 -0
  96. package/ui-uni/uni-swiper-dot/uni-swiper-dot.vue +205 -0
  97. package/ui-uni/uni-table/uni-table.vue +455 -0
  98. package/ui-uni/uni-tag/uni-tag.vue +283 -0
  99. package/ui-uni/uni-tbody/uni-tbody.vue +30 -0
  100. package/ui-uni/uni-td/uni-td.vue +88 -0
  101. package/{ui-cv/cv-test/cv-test.vue → ui-uni/uni-test/uni-test.vue} +0 -0
  102. package/{ui-cv/cv-th → ui-uni/uni-th}/filter-dropdown.vue +0 -0
  103. package/ui-uni/uni-th/uni-th.vue +259 -0
  104. package/ui-uni/uni-thead/uni-thead.vue +114 -0
  105. package/ui-uni/uni-title/uni-title.vue +171 -0
  106. package/{ui-cv/cv-tr → ui-uni/uni-tr}/table-checkbox.vue +0 -0
  107. package/ui-uni/uni-tr/uni-tr.vue +156 -0
  108. package/{ui-cv/cv-transition → ui-uni/uni-transition}/createAnimation.js +0 -0
  109. package/ui-uni/uni-transition/uni-transition.vue +287 -0
  110. package/ui-cv/cv-badge/cv-badge.vue +0 -249
  111. package/ui-cv/cv-calendar/calendar.js +0 -963
  112. package/ui-cv/cv-calendar/cv-calendar-item.vue +0 -198
  113. package/ui-cv/cv-calendar/cv-calendar.vue +0 -508
  114. package/ui-cv/cv-card/cv-card.vue +0 -427
  115. package/ui-cv/cv-col/cv-col.vue +0 -2965
  116. package/ui-cv/cv-collapse/cv-collapse.vue +0 -146
  117. package/ui-cv/cv-collapse-item/cv-collapse-item.vue +0 -395
  118. package/ui-cv/cv-combox/cv-combox.vue +0 -250
  119. package/ui-cv/cv-countdown/cv-countdown.vue +0 -245
  120. package/ui-cv/cv-data-checkbox/cv-data-checkbox.vue +0 -841
  121. package/ui-cv/cv-data-indexed-list/cv-data-indexed-list-item.vue +0 -154
  122. package/ui-cv/cv-data-indexed-list/cv-data-indexed-list.vue +0 -376
  123. package/ui-cv/cv-data-picker/cv-data-picker.vue +0 -486
  124. package/ui-cv/cv-data-pickerview/cv-data-pickerview.vue +0 -304
  125. package/ui-cv/cv-dateformat/cv-dateformat.vue +0 -86
  126. package/ui-cv/cv-datetime-picker/calendar.vue +0 -761
  127. package/ui-cv/cv-datetime-picker/cv-datetime-picker.vue +0 -958
  128. package/ui-cv/cv-datetime-picker/time-picker.vue +0 -907
  129. package/ui-cv/cv-drawer/cv-drawer.vue +0 -185
  130. package/ui-cv/cv-drawer/keypress.js +0 -45
  131. package/ui-cv/cv-easyinput/cv-easyinput.vue +0 -514
  132. package/ui-cv/cv-fab/cv-fab.vue +0 -465
  133. package/ui-cv/cv-fav/cv-fav.vue +0 -150
  134. package/ui-cv/cv-file-picker/cv-file-picker.vue +0 -619
  135. package/ui-cv/cv-form-base/cv-form-base.vue +0 -470
  136. package/ui-cv/cv-form-base/validate.js +0 -477
  137. package/ui-cv/cv-grid-group/cv-grid-group.vue +0 -148
  138. package/ui-cv/cv-grid-item/cv-grid-item.vue +0 -132
  139. package/ui-cv/cv-icon2/cv-icon2.vue +0 -78
  140. package/ui-cv/cv-icon2/icons.js +0 -132
  141. package/ui-cv/cv-indexed-list/cv-indexed-list-item.vue +0 -154
  142. package/ui-cv/cv-indexed-list/cv-indexed-list.vue +0 -371
  143. package/ui-cv/cv-link2/cv-link2.vue +0 -130
  144. package/ui-cv/cv-list/cv-list.vue +0 -107
  145. package/ui-cv/cv-list/cv-refresh.vue +0 -65
  146. package/ui-cv/cv-list-ad/cv-list-ad.vue +0 -113
  147. package/ui-cv/cv-list-item/cv-list-item.vue +0 -449
  148. package/ui-cv/cv-nav-bar/cv-nav-bar.vue +0 -256
  149. package/ui-cv/cv-notice-bar/cv-notice-bar.vue +0 -453
  150. package/ui-cv/cv-number-box/cv-number-box.vue +0 -223
  151. package/ui-cv/cv-pagination/cv-pagination.vue +0 -397
  152. package/ui-cv/cv-popup/cv-popup.vue +0 -429
  153. package/ui-cv/cv-popup-message/cv-popup-message.vue +0 -143
  154. package/ui-cv/cv-row/cv-row.vue +0 -157
  155. package/ui-cv/cv-search-bar/cv-search-bar.vue +0 -280
  156. package/ui-cv/cv-steps/cv-steps.vue +0 -293
  157. package/ui-cv/cv-swiper-dot/cv-swiper-dot.vue +0 -255
  158. package/ui-cv/cv-table/cv-table.vue +0 -460
  159. package/ui-cv/cv-tag/cv-tag.vue +0 -276
  160. package/ui-cv/cv-tbody/cv-tbody.vue +0 -28
  161. package/ui-cv/cv-td/cv-td.vue +0 -93
  162. package/ui-cv/cv-th/cv-th.vue +0 -270
  163. package/ui-cv/cv-thead/cv-thead.vue +0 -114
  164. package/ui-cv/cv-title/cv-title.vue +0 -168
  165. package/ui-cv/cv-tr/cv-tr.vue +0 -166
  166. package/ui-cv/cv-transition/cv-transition.vue +0 -279
@@ -0,0 +1,298 @@
1
+ <template>
2
+ <view class="uni-data-pickerview">
3
+ <scroll-view class="selected-area" scroll-x="true" scroll-y="false" :show-scrollbar="false">
4
+ <view class="selected-list">
5
+ <template v-for="(item,index) in selected">
6
+ <view class="selected-item" :class="{'selected-item-active':index==selectedIndex}" :key="index" v-if="item.text" @click="handleSelect(index)">
7
+ <text class="">{{item.text}}</text>
8
+ </view>
9
+ </template>
10
+ </view>
11
+ </scroll-view>
12
+ <view class="tab-c">
13
+ <template v-for="(child, i) in dataList">
14
+ <scroll-view class="list" :key="i" v-if="i==selectedIndex" :scroll-y="true">
15
+ <view class="item" :class="{'is-disabled': !!item.disable}" v-for="(item, j) in child" :key="j" @click="handleNodeClick(item, i, j)">
16
+ <text class="item-text">{{item.text}}</text>
17
+ <view class="check" v-if="selected.length > i && item.value == selected[i].value"></view>
18
+ </view>
19
+ </scroll-view>
20
+ </template>
21
+
22
+ <view class="loading-cover" v-if="loading">
23
+ <uni-load-more class="load-more" :contentText="loadMore" status="loading"></uni-load-more>
24
+ </view>
25
+ <view class="error-message" v-if="errorMessage">
26
+ <text class="error-text">{{errorMessage}}</text>
27
+ </view>
28
+ </view>
29
+ </view>
30
+ </template>
31
+
32
+ <script>
33
+ import dataPicker from "./uni-data-picker.js"
34
+
35
+ /**
36
+ * DataPickerview
37
+ * @description uni-data-pickerview
38
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=3796
39
+ * @property {Array} localdata 本地数据,参考
40
+ * @property {Boolean} step-searh = [true|false] 是否分布查询
41
+ * @value true 启用分布查询,仅查询当前选中节点
42
+ * @value false 关闭分布查询,一次查询出所有数据
43
+ * @property {String|DBFieldString} self-field 分布查询当前字段名称
44
+ * @property {String|DBFieldString} parent-field 分布查询父字段名称
45
+ * @property {String|DBCollectionString} collection 表名
46
+ * @property {String|DBFieldString} field 查询字段,多个字段用 `,` 分割
47
+ * @property {String} orderby 排序字段及正序倒叙设置
48
+ * @property {String|JQLString} where 查询条件
49
+ */
50
+ export default {
51
+ name: 'UniDataPickerView',
52
+ emits: ['nodeclick', 'change', 'datachange', 'update:modelValue'],
53
+ mixins: [dataPicker],
54
+ props: {
55
+ managedMode: {
56
+ type: Boolean,
57
+ default: false
58
+ }
59
+ },
60
+ data() {
61
+ return {}
62
+ },
63
+ created() {
64
+ if (this.managedMode) {
65
+ return
66
+ }
67
+
68
+ this.$nextTick(() => {
69
+ this.load()
70
+ })
71
+ },
72
+ methods: {
73
+ onPropsChange() {
74
+ this._treeData = []
75
+ this.selectedIndex = 0
76
+ this.load()
77
+ },
78
+ load() {
79
+ if (this.isLocaldata) {
80
+ this.loadData()
81
+ } else if (this.dataValue.length) {
82
+ this.getTreePath((res) => {
83
+ this.loadData()
84
+ })
85
+ }
86
+ },
87
+ handleSelect(index) {
88
+ this.selectedIndex = index
89
+ },
90
+ handleNodeClick(item, i, j) {
91
+ if (item.disable) {
92
+ return
93
+ }
94
+
95
+ const node = this.dataList[i][j]
96
+ const {
97
+ value,
98
+ text
99
+ } = node
100
+
101
+ if (i < this.selected.length - 1) {
102
+ this.selected.splice(i, this.selected.length - i)
103
+ this.selected.push(node)
104
+ } else if (i === this.selected.length - 1) {
105
+ this.selected[i] = node
106
+ }
107
+
108
+ if (node.isleaf) {
109
+ this.onSelectedChange(node, node.isleaf)
110
+ return
111
+ }
112
+
113
+ const {
114
+ isleaf,
115
+ hasNodes
116
+ } = this._updateBindData()
117
+
118
+ if (!this._isTreeView() && !hasNodes) {
119
+ this.onSelectedChange(node, true)
120
+ return
121
+ }
122
+
123
+ if (this.isLocaldata && (!hasNodes || isleaf)) {
124
+ this.onSelectedChange(node, true)
125
+ return
126
+ }
127
+
128
+ if (!isleaf && !hasNodes) {
129
+ this._loadNodeData((data) => {
130
+ if (!data.length) {
131
+ node.isleaf = true
132
+ } else {
133
+ this._treeData.push(...data)
134
+ this._updateBindData(node)
135
+ }
136
+ this.onSelectedChange(node, node.isleaf)
137
+ }, this._nodeWhere())
138
+ return
139
+ }
140
+
141
+ this.onSelectedChange(node, false)
142
+ },
143
+ updateData(data) {
144
+ this._treeData = data.treeData
145
+ this.selected = data.selected
146
+ if (!this._treeData.length) {
147
+ this.loadData()
148
+ } else {
149
+ //this.selected = data.selected
150
+ this._updateBindData()
151
+ }
152
+ },
153
+ onDataChange() {
154
+ this.$emit('datachange')
155
+ },
156
+ onSelectedChange(node, isleaf) {
157
+ if (isleaf) {
158
+ this._dispatchEvent()
159
+ }
160
+
161
+ if (node) {
162
+ this.$emit('nodeclick', node)
163
+ }
164
+ },
165
+ _dispatchEvent() {
166
+ this.$emit('change', this.selected.slice(0))
167
+ }
168
+ }
169
+ }
170
+ </script>
171
+
172
+ <style scoped>
173
+ .uni-data-pickerview {
174
+ flex: 1;
175
+ /* #ifndef APP-NVUE */
176
+ display: flex;
177
+ /* #endif */
178
+ flex-direction: column;
179
+ overflow: hidden;
180
+ height: 100%;
181
+ }
182
+
183
+ .error-text {
184
+ color: #DD524D;
185
+ }
186
+
187
+ .loading-cover {
188
+ position: absolute;
189
+ left: 0;
190
+ top: 0;
191
+ right: 0;
192
+ bottom: 0;
193
+ background-color: rgba(255, 255, 255, 0.5);
194
+ /* #ifndef APP-NVUE */
195
+ display: flex;
196
+ /* #endif */
197
+ flex-direction: column;
198
+ align-items: center;
199
+ z-index: 1001;
200
+ }
201
+
202
+ .load-more {
203
+ /* #ifndef APP-NVUE */
204
+ margin: auto;
205
+ /* #endif */
206
+ }
207
+
208
+ .error-message {
209
+ background-color: #fff;
210
+ position: absolute;
211
+ left: 0;
212
+ top: 0;
213
+ right: 0;
214
+ bottom: 0;
215
+ padding: 15px;
216
+ opacity: 0.9;
217
+ z-index: 102;
218
+ }
219
+
220
+ /* #ifdef APP-NVUE */
221
+ .selected-area {
222
+ width: 750rpx;
223
+ }
224
+
225
+ /* #endif */
226
+ .selected-list {
227
+ /* #ifndef APP-NVUE */
228
+ display: flex;
229
+ /* #endif */
230
+ flex-direction: row;
231
+ flex-wrap: nowrap;
232
+ padding: 0 5px;
233
+ border-bottom: 1px solid #f8f8f8;
234
+ }
235
+
236
+ .selected-item {
237
+ margin-left: 10px;
238
+ margin-right: 10px;
239
+ padding: 12px 0;
240
+ /* #ifndef APP-NVUE */
241
+ white-space: nowrap;
242
+ /* #endif */
243
+ }
244
+
245
+ .selected-item-active {
246
+ border-bottom: 2px solid #007aff;
247
+ }
248
+
249
+ .selected-item-text {
250
+ color: #007aff;
251
+ }
252
+
253
+ .tab-c {
254
+ position: relative;
255
+ flex: 1;
256
+ /* #ifndef APP-NVUE */
257
+ display: flex;
258
+ /* #endif */
259
+ flex-direction: row;
260
+ overflow: hidden;
261
+ }
262
+
263
+ .list {
264
+ flex: 1;
265
+ }
266
+
267
+ .item {
268
+ padding: 12px 15px;
269
+ border-bottom: 1px solid #f0f0f0;
270
+ /* #ifndef APP-NVUE */
271
+ display: flex;
272
+ /* #endif */
273
+ flex-direction: row;
274
+ }
275
+
276
+ .is-disabled {
277
+ opacity: 0.5;
278
+ }
279
+
280
+ .item-text {
281
+ flex: 1;
282
+ color: #333333;
283
+ }
284
+
285
+ .check {
286
+ margin-right: 5px;
287
+ border: 2px solid #007aff;
288
+ border-left: 0;
289
+ border-top: 0;
290
+ height: 12px;
291
+ width: 6px;
292
+ transform-origin: center;
293
+ /* #ifndef APP-NVUE */
294
+ transition: all 0.3s;
295
+ /* #endif */
296
+ transform: rotate(45deg);
297
+ }
298
+ </style>
@@ -0,0 +1,88 @@
1
+ <template>
2
+ <text>{{dateShow}}</text>
3
+ </template>
4
+
5
+ <script>
6
+ import {
7
+ friendlyDate
8
+ } from './date-format.js'
9
+ /**
10
+ * Dateformat 日期格式化
11
+ * @description 日期格式化组件
12
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=3279
13
+ * @property {Object|String|Number} date 日期对象/日期字符串/时间戳
14
+ * @property {String} locale 格式化使用的语言
15
+ * @value zh 中文
16
+ * @value en 英文
17
+ * @property {Array} threshold 应用不同类型格式化的阈值
18
+ * @property {String} format 输出日期字符串时的格式
19
+ */
20
+ export default {
21
+ name: 'uniDateformat',
22
+ props: {
23
+ date: {
24
+ type: [Object, String, Number],
25
+ default () {
26
+ return '-'
27
+ }
28
+ },
29
+ locale: {
30
+ type: String,
31
+ default: 'zh',
32
+ },
33
+ threshold: {
34
+ type: Array,
35
+ default () {
36
+ return [0, 0]
37
+ }
38
+ },
39
+ format: {
40
+ type: String,
41
+ default: 'yyyy/MM/dd hh:mm:ss'
42
+ },
43
+ // refreshRate使用不当可能导致性能问题,谨慎使用
44
+ refreshRate: {
45
+ type: [Number, String],
46
+ default: 0
47
+ }
48
+ },
49
+ data() {
50
+ return {
51
+ refreshMark: 0
52
+ }
53
+ },
54
+ computed: {
55
+ dateShow() {
56
+ this.refreshMark
57
+ return friendlyDate(this.date, {
58
+ locale: this.locale,
59
+ threshold: this.threshold,
60
+ format: this.format
61
+ })
62
+ }
63
+ },
64
+ watch: {
65
+ refreshRate: {
66
+ handler() {
67
+ this.setAutoRefresh()
68
+ },
69
+ immediate: true
70
+ }
71
+ },
72
+ methods: {
73
+ refresh() {
74
+ this.refreshMark++
75
+ },
76
+ setAutoRefresh() {
77
+ clearInterval(this.refreshInterval)
78
+ if (this.refreshRate) {
79
+ this.refreshInterval = setInterval(() => {
80
+ this.refresh()
81
+ }, parseInt(this.refreshRate))
82
+ }
83
+ }
84
+ }
85
+ }
86
+ </script>
87
+
88
+ <style scoped></style>