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

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 (235) hide show
  1. package/build/parse-pages.js +2 -2
  2. package/package.json +1 -1
  3. package/ui-cv/README.md +3 -0
  4. package/ui-cv/cv-badge/cv-badge.vue +249 -0
  5. package/ui-cv/cv-banner/cv-banner.vue +1 -1
  6. package/ui-cv/cv-banner-card/cv-banner-card.vue +1 -1
  7. package/ui-cv/cv-block/cv-block.vue +1 -1
  8. package/ui-cv/cv-box/cv-box.vue +1 -1
  9. package/ui-cv/cv-calendar/calendar.js +963 -0
  10. package/ui-cv/cv-calendar/cv-calendar-item.vue +198 -0
  11. package/ui-cv/cv-calendar/cv-calendar.vue +508 -0
  12. package/{ui-uni/uni-calendar → ui-cv/cv-calendar}/util.js +0 -0
  13. package/ui-cv/cv-card/cv-card.vue +427 -0
  14. package/ui-cv/cv-cell/cv-cell.vue +1 -1
  15. package/ui-cv/cv-checkbox-group/cv-checkbox-group.vue +227 -0
  16. package/ui-cv/cv-checkbox-opt-base/cv-checkbox-opt-base.vue +57 -0
  17. package/ui-cv/cv-checkbox-opt-tag/cv-checkbox-opt-tag.vue +107 -0
  18. package/ui-cv/cv-code-sms/cv-code-sms.vue +23 -42
  19. package/ui-cv/cv-col/cv-col.vue +2965 -0
  20. package/ui-cv/cv-collapse/cv-collapse.vue +146 -0
  21. package/ui-cv/cv-collapse-item/cv-collapse-item.vue +395 -0
  22. package/ui-cv/cv-combox/cv-combox.vue +250 -0
  23. package/ui-cv/cv-countdown/cv-countdown.vue +245 -0
  24. package/ui-cv/cv-data-checkbox/cv-data-checkbox.vue +841 -0
  25. package/{ui-uni/uni-data-indexed-list → ui-cv/cv-data-indexed-list}/clientdb.js +0 -0
  26. package/ui-cv/cv-data-indexed-list/cv-data-indexed-list-item.vue +154 -0
  27. package/ui-cv/cv-data-indexed-list/cv-data-indexed-list.vue +376 -0
  28. package/ui-cv/cv-data-picker/cv-data-picker.vue +486 -0
  29. package/{ui-uni/uni-data-picker → ui-cv/cv-data-picker}/keypress.js +0 -0
  30. package/{ui-uni/uni-data-pickerview/uni-data-picker.js → ui-cv/cv-data-pickerview/cv-data-picker.js} +0 -0
  31. package/ui-cv/cv-data-pickerview/cv-data-pickerview.vue +304 -0
  32. package/ui-cv/cv-dateformat/cv-dateformat.vue +86 -0
  33. package/{ui-uni/uni-dateformat → ui-cv/cv-dateformat}/date-format.js +0 -0
  34. package/{ui-uni/uni-datetime-picker → ui-cv/cv-datetime-picker}/calendar-item.vue +0 -0
  35. package/{ui-uni/uni-datetime-picker → ui-cv/cv-datetime-picker}/calendar.js +0 -0
  36. package/ui-cv/cv-datetime-picker/calendar.vue +761 -0
  37. package/ui-cv/cv-datetime-picker/cv-datetime-picker.vue +958 -0
  38. package/{ui-uni/uni-datetime-picker → ui-cv/cv-datetime-picker}/keypress.js +0 -0
  39. package/ui-cv/cv-datetime-picker/time-picker.vue +907 -0
  40. package/{ui-uni/uni-datetime-picker → ui-cv/cv-datetime-picker}/util.js +0 -0
  41. package/ui-cv/cv-dialog-bottom/cv-dialog-bottom.vue +1 -1
  42. package/ui-cv/cv-dialog-full/cv-dialog-full.vue +1 -1
  43. package/ui-cv/cv-dialog-loading/cv-dialog-loading.vue +3 -3
  44. package/ui-cv/cv-drawer/cv-drawer.vue +185 -0
  45. package/{ui-uni/uni-drawer → ui-cv/cv-drawer}/keypress.js +14 -14
  46. package/{ui-uni/uni-easyinput → ui-cv/cv-easyinput}/common.js +0 -0
  47. package/ui-cv/cv-easyinput/cv-easyinput.vue +514 -0
  48. package/ui-cv/cv-editor-parse/readme.md +2 -3
  49. package/ui-cv/{cv-editor → cv-editor-quill}/compressImage.vue +0 -0
  50. package/ui-cv/{cv-editor/cv-editor.vue → cv-editor-quill/cv-editor-quill.vue} +3 -23
  51. package/ui-cv/{cv-editor → cv-editor-quill}/editor-icon.css +0 -0
  52. package/ui-cv/{cv-editor → cv-editor-quill}/editor-icon.ttf +0 -0
  53. package/ui-cv/{cv-editor → cv-editor-quill}/index.js +0 -0
  54. package/ui-cv/cv-fab/cv-fab.vue +465 -0
  55. package/{ui-uni/uni-fab/uni-fab.vue.bak → ui-cv/cv-fab/cv-fab.vue.bak} +2 -2
  56. package/ui-cv/cv-fav/cv-fav.vue +150 -0
  57. package/{ui-uni/uni-file-picker → ui-cv/cv-file-picker}/choose-and-upload-file.js +0 -0
  58. package/ui-cv/cv-file-picker/cv-file-picker.vue +619 -0
  59. package/{ui-uni/uni-file-picker → ui-cv/cv-file-picker}/upload-file.vue +0 -0
  60. package/{ui-uni/uni-file-picker → ui-cv/cv-file-picker}/upload-image.vue +0 -0
  61. package/{ui-uni/uni-file-picker → ui-cv/cv-file-picker}/utils.js +0 -0
  62. package/ui-cv/cv-form-base/cv-form-base.vue +470 -0
  63. package/ui-cv/cv-form-base/validate.js +477 -0
  64. package/ui-cv/cv-form-group/cv-form-group.vue +123 -80
  65. package/ui-cv/cv-form-group/cv-form-group2.vue +80 -0
  66. package/ui-cv/cv-form-item/cv-form-item.vue +482 -174
  67. package/ui-cv/cv-form-item/cv-form-item2.vue +215 -0
  68. package/ui-cv/cv-form-merge/cv-form-merge.vue +1 -1
  69. package/ui-cv/cv-geo-local/cv-geo-local.vue +14 -26
  70. package/{ui-uni/uni-goods-nav/uni-goods-nav.vue → ui-cv/cv-goods-nav/cv-goods-nav.vue} +1 -1
  71. package/ui-cv/cv-grid-group/cv-grid-group.vue +148 -0
  72. package/ui-cv/cv-grid-item/cv-grid-item.vue +132 -0
  73. package/ui-cv/cv-icon2/cv-icon2.vue +78 -0
  74. package/ui-cv/cv-icon2/icons.js +132 -0
  75. package/{ui-uni/uni-icons → ui-cv/cv-icon2}/uni.ttf +0 -0
  76. package/ui-cv/cv-icons/cv-icons.vue +1 -1
  77. package/ui-cv/cv-indexed-list/cv-indexed-list-item.vue +154 -0
  78. package/ui-cv/cv-indexed-list/cv-indexed-list.vue +371 -0
  79. package/ui-cv/cv-info/cv-info.vue +5 -20
  80. package/ui-cv/cv-input-btn/cv-input-btn.vue +25 -43
  81. package/ui-cv/cv-input-digit/cv-input-digit.vue +61 -28
  82. package/ui-cv/cv-input-idcard/cv-input-idcard.vue +47 -29
  83. package/ui-cv/cv-input-number/cv-input-number.vue +60 -28
  84. package/ui-cv/cv-input-password/cv-input-password.vue +80 -30
  85. package/ui-cv/cv-input-text/cv-input-text.vue +55 -37
  86. package/ui-cv/cv-link2/cv-link2.vue +130 -0
  87. package/ui-cv/cv-list/cv-list.vue +107 -0
  88. package/ui-cv/cv-list/cv-refresh.vue +65 -0
  89. package/{ui-uni/uni-list → ui-cv/cv-list}/uni-refresh.wxs +0 -0
  90. package/ui-cv/cv-list-ad/cv-list-ad.vue +113 -0
  91. package/{ui-uni/uni-list-chat/uni-list-chat.scss → ui-cv/cv-list-chat/cv-list-chat.scss} +0 -0
  92. package/{ui-uni/uni-list-chat/uni-list-chat.vue → ui-cv/cv-list-chat/cv-list-chat.vue} +0 -0
  93. package/ui-cv/cv-list-item/cv-list-item.vue +449 -0
  94. package/ui-cv/cv-load-more/config.json +9 -9
  95. package/ui-cv/cv-load-more/cv-load-more.vue +34 -5
  96. package/ui-cv/cv-message/cv-message.vue +1 -1
  97. package/ui-cv/cv-nav-bar/cv-nav-bar.vue +256 -0
  98. package/{ui-uni/uni-nav-bar/uni-status-bar.vue → ui-cv/cv-nav-bar/cv-status-bar.vue} +0 -0
  99. package/ui-cv/cv-nav-col/cv-nav-col.vue +1 -1
  100. package/ui-cv/cv-nav-row/cv-nav-row.vue +1 -1
  101. package/ui-cv/cv-notice-bar/cv-notice-bar.vue +453 -0
  102. package/ui-cv/cv-number-box/cv-number-box.vue +223 -0
  103. package/ui-cv/cv-pagination/cv-pagination.vue +397 -0
  104. package/ui-cv/cv-picker-date/cv-picker-date.vue +17 -27
  105. package/ui-cv/cv-picker-datetime/cv-picker-datetime.vue +31 -41
  106. package/ui-cv/cv-picker-datetime5/cv-picker-datetime5.vue +19 -29
  107. package/ui-cv/cv-picker-region/cv-picker-region.vue +23 -33
  108. package/ui-cv/cv-picker-time/cv-picker-time.vue +16 -26
  109. package/ui-cv/cv-picker1/cv-picker1.vue +16 -28
  110. package/ui-cv/cv-picker2/cv-picker2.vue +22 -32
  111. package/ui-cv/cv-picker3/cv-picker3.vue +34 -44
  112. package/ui-cv/cv-popup/cv-popup.vue +429 -0
  113. package/{ui-uni/uni-popup → ui-cv/cv-popup}/keypress.js +0 -0
  114. package/{ui-uni/uni-popup → ui-cv/cv-popup}/popup.js +0 -0
  115. package/{ui-uni/uni-popup-dialog/uni-popup-dialog.vue → ui-cv/cv-popup-dialog/cv-popup-dialog.vue} +0 -0
  116. package/{ui-uni/uni-popup-dialog → ui-cv/cv-popup-dialog}/keypress.js +0 -0
  117. package/ui-cv/cv-popup-message/cv-popup-message.vue +143 -0
  118. package/{ui-uni/uni-popup-share/uni-popup-share.vue → ui-cv/cv-popup-share/cv-popup-share.vue} +0 -0
  119. package/ui-cv/cv-radio-group/cv-radio-group.vue +185 -0
  120. package/ui-cv/cv-radio-opt-base/cv-radio-opt-base.vue +57 -0
  121. package/ui-cv/cv-radio-opt-tag/cv-radio-opt-tag.vue +107 -0
  122. package/ui-cv/cv-rate/cv-rate.vue +13 -17
  123. package/ui-cv/cv-rate/uni-rate.vue +358 -0
  124. package/ui-cv/cv-row/cv-row.vue +157 -0
  125. package/ui-cv/cv-search/cv-search.vue +4 -4
  126. package/ui-cv/cv-search-bar/cv-search-bar.vue +280 -0
  127. package/{ui-uni/uni-section/uni-section.vue → ui-cv/cv-section/cv-section.vue} +0 -0
  128. package/{ui-uni/uni-segmented-control/uni-segmented-control.vue → ui-cv/cv-segmented-control/cv-segmented-control.vue} +0 -0
  129. package/ui-cv/cv-skeleton/cv-skeleton2.vue +5 -5
  130. package/ui-cv/cv-specs/cv-specs.vue +1 -1
  131. package/{ui-uni/uni-status-bar/uni-status-bar.vue → ui-cv/cv-status-bar/cv-status-bar.vue} +0 -0
  132. package/ui-cv/cv-steps/cv-steps.vue +293 -0
  133. package/{ui-uni/uni-swipe-action/uni-swipe-action.vue → ui-cv/cv-swipe-action/cv-swipe-action.vue} +0 -0
  134. package/{ui-uni/uni-swipe-action-item → ui-cv/cv-swipe-action-item}/bindingx.js +0 -0
  135. package/{ui-uni/uni-swipe-action-item/uni-swipe-action-item.vue → ui-cv/cv-swipe-action-item/cv-swipe-action-item.vue} +0 -0
  136. package/{ui-uni/uni-swipe-action-item → ui-cv/cv-swipe-action-item}/index.wxs +0 -0
  137. package/{ui-uni/uni-swipe-action-item → ui-cv/cv-swipe-action-item}/isPC.js +0 -0
  138. package/{ui-uni/uni-swipe-action-item → ui-cv/cv-swipe-action-item}/mpalipay.js +0 -0
  139. package/{ui-uni/uni-swipe-action-item → ui-cv/cv-swipe-action-item}/mpother.js +0 -0
  140. package/{ui-uni/uni-swipe-action-item → ui-cv/cv-swipe-action-item}/mpwxs.js +0 -0
  141. package/ui-cv/cv-swiper-dot/cv-swiper-dot.vue +255 -0
  142. package/ui-cv/cv-switch/cv-switch.vue +5 -9
  143. package/ui-cv/cv-table/cv-table.vue +460 -0
  144. package/ui-cv/cv-tag/cv-tag.vue +276 -0
  145. package/ui-cv/cv-tbody/cv-tbody.vue +28 -0
  146. package/ui-cv/cv-td/cv-td.vue +93 -0
  147. package/{ui-uni/uni-test/uni-test.vue → ui-cv/cv-test/cv-test.vue} +0 -0
  148. package/ui-cv/cv-textarea/cv-textarea.vue +56 -41
  149. package/ui-cv/cv-th/cv-th.vue +270 -0
  150. package/{ui-uni/uni-th → ui-cv/cv-th}/filter-dropdown.vue +0 -0
  151. package/ui-cv/cv-thead/cv-thead.vue +114 -0
  152. package/ui-cv/cv-title/cv-title.vue +168 -0
  153. package/ui-cv/cv-tr/cv-tr.vue +166 -0
  154. package/{ui-uni/uni-tr → ui-cv/cv-tr}/table-checkbox.vue +0 -0
  155. package/{ui-uni/uni-transition → ui-cv/cv-transition}/createAnimation.js +0 -0
  156. package/ui-cv/cv-transition/cv-transition.vue +279 -0
  157. package/ui-cv/cv-upload-avatar/cv-upload-avatar.vue +24 -22
  158. package/ui-cv/cv-upload-img/cv-upload-img.vue +1 -1
  159. package/ui-cv/mixins/mixins-input.js +20 -29
  160. package/ui-cv/mixins/mixins-picker.js +1 -13
  161. package/ui-uni/amap-wx/js/util.js +158 -166
  162. package/ui-uni/product.vue +52 -52
  163. package/ui-uni/u-charts/u-charts.js +1092 -743
  164. package/ui-cv/cv-checkbox/cv-checkbox.vue +0 -140
  165. package/ui-cv/cv-checkbox-tag/cv-checkbox-tag.vue +0 -164
  166. package/ui-cv/cv-nav-group/cv-nav-group.vue +0 -33
  167. package/ui-cv/cv-radio/cv-radio.vue +0 -111
  168. package/ui-cv/cv-radio-sex/cv-radio-sex.vue +0 -80
  169. package/ui-cv/cv-radio-tag/cv-radio-tag.vue +0 -133
  170. package/ui-cv/mixins/mixins-checkbox.js +0 -71
  171. package/ui-cv/mixins/mixins-common.js +0 -53
  172. package/ui-cv/mixins/mixins-radio.js +0 -84
  173. package/ui-uni/page-foot/page-foot.vue +0 -38
  174. package/ui-uni/page-head/page-head.vue +0 -16
  175. package/ui-uni/u-link/u-link.vue +0 -59
  176. package/ui-uni/uni-badge/uni-badge.vue +0 -250
  177. package/ui-uni/uni-calendar/calendar.js +0 -546
  178. package/ui-uni/uni-calendar/uni-calendar-item.vue +0 -171
  179. package/ui-uni/uni-calendar/uni-calendar.vue +0 -504
  180. package/ui-uni/uni-card/uni-card.vue +0 -420
  181. package/ui-uni/uni-col/uni-col.vue +0 -2968
  182. package/ui-uni/uni-collapse/uni-collapse.vue +0 -146
  183. package/ui-uni/uni-collapse-item/uni-collapse-item.vue +0 -378
  184. package/ui-uni/uni-combox/uni-combox.vue +0 -237
  185. package/ui-uni/uni-countdown/uni-countdown.vue +0 -234
  186. package/ui-uni/uni-data-checkbox/uni-data-checkbox.vue +0 -792
  187. package/ui-uni/uni-data-indexed-list/uni-data-indexed-list-item.vue +0 -142
  188. package/ui-uni/uni-data-indexed-list/uni-data-indexed-list.vue +0 -364
  189. package/ui-uni/uni-data-picker/uni-data-picker.vue +0 -468
  190. package/ui-uni/uni-data-pickerview/uni-data-pickerview.vue +0 -298
  191. package/ui-uni/uni-dateformat/uni-dateformat.vue +0 -88
  192. package/ui-uni/uni-datetime-picker/calendar.vue +0 -747
  193. package/ui-uni/uni-datetime-picker/time-picker.vue +0 -899
  194. package/ui-uni/uni-datetime-picker/uni-datetime-picker.vue +0 -874
  195. package/ui-uni/uni-drawer/uni-drawer.vue +0 -178
  196. package/ui-uni/uni-easyinput/uni-easyinput.vue +0 -438
  197. package/ui-uni/uni-fab/uni-fab.vue +0 -443
  198. package/ui-uni/uni-fav/uni-fav.vue +0 -136
  199. package/ui-uni/uni-file-picker/uni-file-picker.vue +0 -614
  200. package/ui-uni/uni-forms/uni-forms.vue +0 -467
  201. package/ui-uni/uni-forms/validate.js +0 -486
  202. package/ui-uni/uni-forms-item/uni-forms-item.vue +0 -500
  203. package/ui-uni/uni-grid/uni-grid.vue +0 -141
  204. package/ui-uni/uni-grid-item/uni-grid-item.vue +0 -123
  205. package/ui-uni/uni-group/uni-group.vue +0 -123
  206. package/ui-uni/uni-icons/icons.js +0 -132
  207. package/ui-uni/uni-icons/uni-icons.vue +0 -72
  208. package/ui-uni/uni-indexed-list/uni-indexed-list-item.vue +0 -142
  209. package/ui-uni/uni-indexed-list/uni-indexed-list.vue +0 -357
  210. package/ui-uni/uni-link/uni-link.vue +0 -117
  211. package/ui-uni/uni-list/uni-list.vue +0 -107
  212. package/ui-uni/uni-list/uni-refresh.vue +0 -65
  213. package/ui-uni/uni-list-ad/uni-list-ad.vue +0 -106
  214. package/ui-uni/uni-list-item/uni-list-item.vue +0 -428
  215. package/ui-uni/uni-load-more/uni-load-more.vue +0 -366
  216. package/ui-uni/uni-nav-bar/uni-nav-bar.vue +0 -244
  217. package/ui-uni/uni-notice-bar/uni-notice-bar.vue +0 -394
  218. package/ui-uni/uni-number-box/uni-number-box.vue +0 -224
  219. package/ui-uni/uni-pagination/uni-pagination.vue +0 -376
  220. package/ui-uni/uni-popup/uni-popup.vue +0 -412
  221. package/ui-uni/uni-popup-message/uni-popup-message.vue +0 -143
  222. package/ui-uni/uni-rate/uni-rate.vue +0 -357
  223. package/ui-uni/uni-row/uni-row.vue +0 -155
  224. package/ui-uni/uni-search-bar/uni-search-bar.vue +0 -262
  225. package/ui-uni/uni-steps/uni-steps.vue +0 -250
  226. package/ui-uni/uni-swiper-dot/uni-swiper-dot.vue +0 -205
  227. package/ui-uni/uni-table/uni-table.vue +0 -455
  228. package/ui-uni/uni-tag/uni-tag.vue +0 -283
  229. package/ui-uni/uni-tbody/uni-tbody.vue +0 -30
  230. package/ui-uni/uni-td/uni-td.vue +0 -88
  231. package/ui-uni/uni-th/uni-th.vue +0 -259
  232. package/ui-uni/uni-thead/uni-thead.vue +0 -114
  233. package/ui-uni/uni-title/uni-title.vue +0 -171
  234. package/ui-uni/uni-tr/uni-tr.vue +0 -156
  235. package/ui-uni/uni-transition/uni-transition.vue +0 -287
@@ -0,0 +1,460 @@
1
+ <template>
2
+ <view class="uni-table-scroll" :class="{ 'table--border': border, 'border-none': !noData }">
3
+ <!-- #ifdef H5 -->
4
+ <table
5
+ class="uni-table"
6
+ border="0"
7
+ cellpadding="0"
8
+ cellspacing="0"
9
+ :class="{ 'table--stripe': stripe }"
10
+ :style="{ 'min-width': minWidth + 'px' }"
11
+ >
12
+ <slot></slot>
13
+ <view v-if="noData" class="uni-table-loading">
14
+ <view class="uni-table-text" :class="{ 'empty-border': border }">{{ emptyText }}</view>
15
+ </view>
16
+ <view v-if="loading" class="uni-table-mask" :class="{ 'empty-border': border }">
17
+ <div class="uni-table--loader"></div>
18
+ </view>
19
+ </table>
20
+ <!-- #endif -->
21
+ <!-- #ifndef H5 -->
22
+ <view class="uni-table" :style="{ 'min-width': minWidth + 'px' }" :class="{ 'table--stripe': stripe }">
23
+ <slot></slot>
24
+ <view v-if="noData" class="uni-table-loading">
25
+ <view class="uni-table-text" :class="{ 'empty-border': border }">{{ emptyText }}</view>
26
+ </view>
27
+ <view v-if="loading" class="uni-table-mask" :class="{ 'empty-border': border }">
28
+ <div class="uni-table--loader"></div>
29
+ </view>
30
+ </view>
31
+ <!-- #endif -->
32
+ </view>
33
+ </template>
34
+
35
+ <script>
36
+ /**
37
+ * Table 表格
38
+ * @description 用于展示多条结构类似的数据
39
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=3270
40
+ * @property {Boolean} border 是否带有纵向边框
41
+ * @property {Boolean} stripe 是否显示斑马线
42
+ * @property {Boolean} type 是否开启多选
43
+ * @property {String} emptyText 空数据时显示的文本内容
44
+ * @property {Boolean} loading 显示加载中
45
+ * @event {Function} selection-change 开启多选时,当选择项发生变化时会触发该事件
46
+ */
47
+ export default {
48
+ name: 'cvTable',
49
+ options: {
50
+ virtualHost: true
51
+ },
52
+ emits: ['selection-change'],
53
+ props: {
54
+ data: {
55
+ type: Array,
56
+ default() {
57
+ return [];
58
+ }
59
+ },
60
+ // 是否有竖线
61
+ border: {
62
+ type: Boolean,
63
+ default: false
64
+ },
65
+ // 是否显示斑马线
66
+ stripe: {
67
+ type: Boolean,
68
+ default: false
69
+ },
70
+ // 多选
71
+ type: {
72
+ type: String,
73
+ default: ''
74
+ },
75
+ // 没有更多数据
76
+ emptyText: {
77
+ type: String,
78
+ default: '没有更多数据'
79
+ },
80
+ loading: {
81
+ type: Boolean,
82
+ default: false
83
+ },
84
+ rowKey: {
85
+ type: String,
86
+ default: ''
87
+ }
88
+ },
89
+ data() {
90
+ return {
91
+ noData: true,
92
+ minWidth: 0,
93
+ multiTableHeads: []
94
+ };
95
+ },
96
+ watch: {
97
+ loading(val) {},
98
+ data(newVal) {
99
+ let theadChildren = this.theadChildren;
100
+ let rowspan = 1;
101
+ if (this.theadChildren) {
102
+ rowspan = this.theadChildren.rowspan;
103
+ }
104
+
105
+ // this.trChildren.length - rowspan
106
+ this.noData = false;
107
+ // this.noData = newVal.length === 0
108
+ }
109
+ },
110
+ created() {
111
+ // 定义tr的实例数组
112
+ this.trChildren = [];
113
+ this.thChildren = [];
114
+ this.theadChildren = null;
115
+ this.backData = [];
116
+ this.backIndexData = [];
117
+ },
118
+
119
+ methods: {
120
+ isNodata() {
121
+ let theadChildren = this.theadChildren;
122
+ let rowspan = 1;
123
+ if (this.theadChildren) {
124
+ rowspan = this.theadChildren.rowspan;
125
+ }
126
+ this.noData = this.trChildren.length - rowspan <= 0;
127
+ },
128
+ /**
129
+ * 选中所有
130
+ */
131
+ selectionAll() {
132
+ let startIndex = 1;
133
+ let theadChildren = this.theadChildren;
134
+ if (!this.theadChildren) {
135
+ theadChildren = this.trChildren[0];
136
+ } else {
137
+ startIndex = theadChildren.rowspan - 1;
138
+ }
139
+ let isHaveData = this.data && this.data.length.length > 0;
140
+ theadChildren.checked = true;
141
+ theadChildren.indeterminate = false;
142
+ this.trChildren.forEach((item, index) => {
143
+ if (!item.disabled) {
144
+ item.checked = true;
145
+ if (isHaveData && item.keyValue) {
146
+ const row = this.data.find((v) => v[this.rowKey] === item.keyValue);
147
+ if (!this.backData.find((v) => v[this.rowKey] === row[this.rowKey])) {
148
+ this.backData.push(row);
149
+ }
150
+ }
151
+ if (index > startIndex - 1 && this.backIndexData.indexOf(index - startIndex) === -1) {
152
+ this.backIndexData.push(index - startIndex);
153
+ }
154
+ }
155
+ });
156
+ // this.backData = JSON.parse(JSON.stringify(this.data))
157
+ this.$emit('selection-change', {
158
+ detail: {
159
+ value: this.backData,
160
+ index: this.backIndexData
161
+ }
162
+ });
163
+ },
164
+ /**
165
+ * 用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中)
166
+ */
167
+ toggleRowSelection(row, selected) {
168
+ // if (!this.theadChildren) return
169
+ row = [].concat(row);
170
+
171
+ this.trChildren.forEach((item, index) => {
172
+ // if (item.keyValue) {
173
+
174
+ const select = row.findIndex((v) => {
175
+ //
176
+ if (typeof v === 'number') {
177
+ return v === index - 1;
178
+ } else {
179
+ return v[this.rowKey] === item.keyValue;
180
+ }
181
+ });
182
+ let ischeck = item.checked;
183
+ if (select !== -1) {
184
+ if (typeof selected === 'boolean') {
185
+ item.checked = selected;
186
+ } else {
187
+ item.checked = !item.checked;
188
+ }
189
+ if (ischeck !== item.checked) {
190
+ this.check(item.rowData || item, item.checked, item.rowData ? item.keyValue : null, true);
191
+ }
192
+ }
193
+ // }
194
+ });
195
+ this.$emit('selection-change', {
196
+ detail: {
197
+ value: this.backData,
198
+ index: this.backIndexData
199
+ }
200
+ });
201
+ },
202
+
203
+ /**
204
+ * 用于多选表格,清空用户的选择
205
+ */
206
+ clearSelection() {
207
+ let theadChildren = this.theadChildren;
208
+ if (!this.theadChildren) {
209
+ theadChildren = this.trChildren[0];
210
+ }
211
+ // if (!this.theadChildren) return
212
+ theadChildren.checked = false;
213
+ theadChildren.indeterminate = false;
214
+ this.trChildren.forEach((item) => {
215
+ // if (item.keyValue) {
216
+ item.checked = false;
217
+ // }
218
+ });
219
+ this.backData = [];
220
+ this.backIndexData = [];
221
+ this.$emit('selection-change', {
222
+ detail: {
223
+ value: [],
224
+ index: []
225
+ }
226
+ });
227
+ },
228
+ /**
229
+ * 用于多选表格,切换所有行的选中状态
230
+ */
231
+ toggleAllSelection() {
232
+ let list = [];
233
+ let startIndex = 1;
234
+ let theadChildren = this.theadChildren;
235
+ if (!this.theadChildren) {
236
+ theadChildren = this.trChildren[0];
237
+ } else {
238
+ startIndex = theadChildren.rowspan - 1;
239
+ }
240
+ this.trChildren.forEach((item, index) => {
241
+ if (!item.disabled) {
242
+ if (index > startIndex - 1) {
243
+ list.push(index - startIndex);
244
+ }
245
+ }
246
+ });
247
+ this.toggleRowSelection(list);
248
+ },
249
+
250
+ /**
251
+ * 选中\取消选中
252
+ * @param {Object} child
253
+ * @param {Object} check
254
+ * @param {Object} rowValue
255
+ */
256
+ check(child, check, keyValue, emit) {
257
+ let theadChildren = this.theadChildren;
258
+ if (!this.theadChildren) {
259
+ theadChildren = this.trChildren[0];
260
+ }
261
+
262
+ let childDomIndex = this.trChildren.findIndex((item, index) => child === item);
263
+ if (childDomIndex < 0) {
264
+ childDomIndex = this.data.findIndex((v) => v[this.rowKey] === keyValue) + 1;
265
+ }
266
+ const dataLen = this.trChildren.filter((v) => !v.disabled && v.keyValue).length;
267
+ if (childDomIndex === 0) {
268
+ check ? this.selectionAll() : this.clearSelection();
269
+ return;
270
+ }
271
+
272
+ if (check) {
273
+ if (keyValue) {
274
+ this.backData.push(child);
275
+ }
276
+ this.backIndexData.push(childDomIndex - 1);
277
+ } else {
278
+ const index = this.backData.findIndex((v) => v[this.rowKey] === keyValue);
279
+ const idx = this.backIndexData.findIndex((item) => item === childDomIndex - 1);
280
+ if (keyValue) {
281
+ this.backData.splice(index, 1);
282
+ }
283
+ this.backIndexData.splice(idx, 1);
284
+ }
285
+
286
+ const domCheckAll = this.trChildren.find((item, index) => index > 0 && !item.checked && !item.disabled);
287
+ if (!domCheckAll) {
288
+ theadChildren.indeterminate = false;
289
+ theadChildren.checked = true;
290
+ } else {
291
+ theadChildren.indeterminate = true;
292
+ theadChildren.checked = false;
293
+ }
294
+
295
+ if (this.backIndexData.length === 0) {
296
+ theadChildren.indeterminate = false;
297
+ }
298
+
299
+ if (!emit) {
300
+ this.$emit('selection-change', {
301
+ detail: {
302
+ value: this.backData,
303
+ index: this.backIndexData
304
+ }
305
+ });
306
+ }
307
+ }
308
+ }
309
+ };
310
+ </script>
311
+
312
+ <style scoped>
313
+ @charset "UTF-8";
314
+
315
+ .uni-table-scroll {
316
+ width: 100%;
317
+ /* #ifndef APP-NVUE */
318
+ overflow-x: auto;
319
+ /* #endif */
320
+ }
321
+
322
+ .uni-table {
323
+ position: relative;
324
+ width: 100%;
325
+ border-radius: 5px;
326
+ background-color: #fff;
327
+ /* #ifndef APP-NVUE */
328
+ box-sizing: border-box;
329
+ display: table;
330
+ overflow-x: auto;
331
+ /* #endif */
332
+ }
333
+
334
+ .uni-table ::v-deep .uni-table-tr:nth-child(n + 2):hover {
335
+ background-color: #f5f7fa;
336
+ }
337
+
338
+ .uni-table ::v-deep .uni-table-thead .uni-table-tr:hover {
339
+ background-color: #fafafa;
340
+ }
341
+
342
+ .table--border {
343
+ border: 1px #ebeef5 solid;
344
+ border-right: none;
345
+ }
346
+
347
+ .border-none {
348
+ /* #ifndef APP-NVUE */
349
+ border-bottom: none;
350
+ /* #endif */
351
+ }
352
+
353
+ .table--stripe {
354
+ /* #ifndef APP-NVUE */
355
+ /* #endif */
356
+ }
357
+
358
+ .table--stripe ::v-deep .uni-table-tr:nth-child(2n + 3) {
359
+ background-color: #fafafa;
360
+ }
361
+
362
+ /* 表格加载、无数据样式 */
363
+ .uni-table-loading {
364
+ position: relative;
365
+ /* #ifndef APP-NVUE */
366
+ display: table-row;
367
+ /* #endif */
368
+ height: 50px;
369
+ line-height: 50px;
370
+ overflow: hidden;
371
+ box-sizing: border-box;
372
+ }
373
+
374
+ .empty-border {
375
+ border-right: 1px #ebeef5 solid;
376
+ }
377
+
378
+ .uni-table-text {
379
+ position: absolute;
380
+ right: 0;
381
+ left: 0;
382
+ text-align: center;
383
+ font-size: 14px;
384
+ color: #999;
385
+ }
386
+
387
+ .uni-table-mask {
388
+ position: absolute;
389
+ top: 0;
390
+ bottom: 0;
391
+ left: 0;
392
+ right: 0;
393
+ background-color: rgba(255, 255, 255, 0.8);
394
+ z-index: 99;
395
+ /* #ifndef APP-NVUE */
396
+ display: flex;
397
+ margin: auto;
398
+ transition: all 0.5s;
399
+ /* #endif */
400
+ justify-content: center;
401
+ align-items: center;
402
+ }
403
+
404
+ .uni-table--loader {
405
+ width: 30px;
406
+ height: 30px;
407
+ border: 2px solid #aaa;
408
+ border-radius: 50%;
409
+ /* #ifndef APP-NVUE */
410
+ animation: 2s uni-table--loader linear infinite;
411
+ /* #endif */
412
+ position: relative;
413
+ }
414
+
415
+ @keyframes uni-table--loader {
416
+ 0% {
417
+ transform: rotate(360deg);
418
+ }
419
+
420
+ 10% {
421
+ border-left-color: transparent;
422
+ }
423
+
424
+ 20% {
425
+ border-bottom-color: transparent;
426
+ }
427
+
428
+ 30% {
429
+ border-right-color: transparent;
430
+ }
431
+
432
+ 40% {
433
+ border-top-color: transparent;
434
+ }
435
+
436
+ 50% {
437
+ transform: rotate(0deg);
438
+ }
439
+
440
+ 60% {
441
+ border-top-color: transparent;
442
+ }
443
+
444
+ 70% {
445
+ border-left-color: transparent;
446
+ }
447
+
448
+ 80% {
449
+ border-bottom-color: transparent;
450
+ }
451
+
452
+ 90% {
453
+ border-right-color: transparent;
454
+ }
455
+
456
+ 100% {
457
+ transform: rotate(-360deg);
458
+ }
459
+ }
460
+ </style>
@@ -0,0 +1,276 @@
1
+ <template>
2
+ <text class="uni-tag" v-if="text" :class="classes" :style="customStyle" @click="onClick">
3
+ <slot />
4
+ {{ text }}
5
+ <slot name="right" />
6
+ </text>
7
+ </template>
8
+
9
+ <script>
10
+ /**
11
+ * Tag 标签
12
+ * @description 用于展示1个或多个文字标签,可点击切换选中、不选中的状态
13
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=35
14
+ * @property {String} text 标签内容
15
+ * @property {String} size = [normal|small] 大小尺寸
16
+ * @value normal 正常
17
+ * @value small 小尺寸
18
+ * @property {String} type = [default|primary|success|warning|error|royal] 颜色类型
19
+ * @value default 灰色
20
+ * @value primary 蓝色
21
+ * @value success 绿色
22
+ * @value warning 黄色
23
+ * @value error 红色
24
+ * @value royal 紫色
25
+ * @property {Boolean} disabled = [true|false] 是否为禁用状态
26
+ * @property {Boolean} inverted = [true|false] 是否无需背景颜色(空心标签)
27
+ * @property {Boolean} circle = [true|false] 是否为圆角
28
+ * @event {Function} click 点击 Tag 触发事件
29
+ */
30
+
31
+ export default {
32
+ name: 'cvTag',
33
+ emits: ['click'],
34
+ props: {
35
+ type: {
36
+ // 标签类型default、primary、success、warning、error、royal
37
+ type: String,
38
+ default: 'default'
39
+ },
40
+ size: {
41
+ // 标签大小 normal, small
42
+ type: String,
43
+ default: 'normal'
44
+ },
45
+ // 标签内容
46
+ text: {
47
+ type: String,
48
+ default: ''
49
+ },
50
+ disabled: {
51
+ // 是否为禁用状态
52
+ type: [Boolean, String],
53
+ default: false
54
+ },
55
+ inverted: {
56
+ // 是否为空心
57
+ type: [Boolean, String],
58
+ default: false
59
+ },
60
+ circle: {
61
+ // 是否为圆角样式
62
+ type: [Boolean, String],
63
+ default: false
64
+ },
65
+ mark: {
66
+ // 是否为标记样式
67
+ type: [Boolean, String],
68
+ default: false
69
+ },
70
+ customStyle: {
71
+ type: String,
72
+ default: ''
73
+ }
74
+ },
75
+ computed: {
76
+ classes() {
77
+ const { type, disabled, inverted, circle, mark, size, isTrue } = this;
78
+ const classArr = [
79
+ 'uni-tag--' + type,
80
+ isTrue(disabled) ? 'uni-tag--disabled' : '',
81
+ isTrue(inverted) ? type + '-uni-tag--inverted' : '',
82
+ isTrue(circle) ? 'uni-tag--circle' : '',
83
+ isTrue(mark) ? 'uni-tag--mark' : '',
84
+ 'uni-tag--' + size,
85
+ type === 'default' ? 'uni-tag--default' : 'uni-tag-text',
86
+ isTrue(inverted) ? 'uni-tag-text--' + type : '',
87
+ size === 'small' ? 'uni-tag-text--small' : ''
88
+ ];
89
+ return classArr.join(' ');
90
+ }
91
+ },
92
+ methods: {
93
+ isTrue(value) {
94
+ return value === true || value === 'true';
95
+ },
96
+ onClick() {
97
+ if (this.isTrue(this.disabled)) return;
98
+ this.$emit('click');
99
+ }
100
+ }
101
+ };
102
+ </script>
103
+
104
+ <style scoped>
105
+ .uni-tag {
106
+ /* #ifndef APP-NVUE */
107
+ display: inline-block;
108
+ /* #endif */
109
+ /* #ifdef APP-NVUE */
110
+ align-self: flex-start;
111
+ /* #endif */
112
+ padding: 0px 16px;
113
+ line-height: 30px;
114
+ color: #333;
115
+ border-radius: 3px;
116
+ background-color: #f8f8f8;
117
+ border-width: 1rpx;
118
+ border-style: solid;
119
+ border-color: #f8f8f8;
120
+ /* #ifdef H5 */
121
+ cursor: pointer;
122
+ /* #endif */
123
+ }
124
+
125
+ .uni-tag--circle {
126
+ border-radius: 15px;
127
+ }
128
+
129
+ .uni-tag--mark {
130
+ border-top-left-radius: 0;
131
+ border-bottom-left-radius: 0;
132
+ border-top-right-radius: 15px;
133
+ border-bottom-right-radius: 15px;
134
+ }
135
+
136
+ .uni-tag--disabled {
137
+ opacity: 0.5;
138
+ /* #ifdef H5 */
139
+ cursor: not-allowed;
140
+ /* #endif */
141
+ }
142
+
143
+ .uni-tag--small {
144
+ height: 20px;
145
+ padding: 0px 8px;
146
+ line-height: 20px;
147
+ font-size: 12px;
148
+ }
149
+
150
+ .uni-tag--default {
151
+ color: #333;
152
+ font-size: 14px;
153
+ }
154
+
155
+ .uni-tag--royal {
156
+ color: #333;
157
+ font-size: 14px;
158
+ }
159
+
160
+ .uni-tag-text--small {
161
+ font-size: 12px;
162
+ }
163
+
164
+ .uni-tag-text {
165
+ color: #fff;
166
+ font-size: 14px;
167
+ }
168
+
169
+ .uni-tag-text--primary {
170
+ color: #007aff;
171
+ }
172
+
173
+ .uni-tag-text--success {
174
+ color: #4cd964;
175
+ }
176
+
177
+ .uni-tag-text--warning {
178
+ color: #f0ad4e;
179
+ }
180
+
181
+ .uni-tag-text--error {
182
+ color: #dd524d;
183
+ }
184
+
185
+ .uni-tag-text--royal {
186
+ color: #4335d6;
187
+ }
188
+
189
+ .uni-tag--primary {
190
+ color: #fff;
191
+ background-color: #007aff;
192
+ border-width: 1rpx;
193
+ border-style: solid;
194
+ border-color: #007aff;
195
+ }
196
+
197
+ .primary-uni-tag--inverted {
198
+ color: #007aff;
199
+ background-color: #ffffff;
200
+ border-width: 1rpx;
201
+ border-style: solid;
202
+ border-color: #007aff;
203
+ }
204
+
205
+ .uni-tag--success {
206
+ color: #fff;
207
+ background-color: #4cd964;
208
+ border-width: 1rpx;
209
+ border-style: solid;
210
+ border-color: #4cd964;
211
+ }
212
+
213
+ .success-uni-tag--inverted {
214
+ color: #4cd964;
215
+ background-color: #ffffff;
216
+ border-width: 1rpx;
217
+ border-style: solid;
218
+ border-color: #4cd964;
219
+ }
220
+
221
+ .uni-tag--warning {
222
+ color: #fff;
223
+ background-color: #f0ad4e;
224
+ border-width: 1rpx;
225
+ border-style: solid;
226
+ border-color: #f0ad4e;
227
+ }
228
+
229
+ .warning-uni-tag--inverted {
230
+ color: #f0ad4e;
231
+ background-color: #ffffff;
232
+ border-width: 1rpx;
233
+ border-style: solid;
234
+ border-color: #f0ad4e;
235
+ }
236
+
237
+ .uni-tag--error {
238
+ color: #fff;
239
+ background-color: #dd524d;
240
+ border-width: 1rpx;
241
+ border-style: solid;
242
+ border-color: #dd524d;
243
+ }
244
+
245
+ .error-uni-tag--inverted {
246
+ color: #dd524d;
247
+ background-color: #ffffff;
248
+ border-width: 1rpx;
249
+ border-style: solid;
250
+ border-color: #dd524d;
251
+ }
252
+
253
+ .uni-tag--royal {
254
+ color: #fff;
255
+ background-color: #4335d6;
256
+ border-width: 1rpx;
257
+ border-style: solid;
258
+ border-color: #4335d6;
259
+ }
260
+
261
+ .royal-uni-tag--inverted {
262
+ color: #4335d6;
263
+ background-color: #ffffff;
264
+ border-width: 1rpx;
265
+ border-style: solid;
266
+ border-color: #4335d6;
267
+ }
268
+
269
+ .uni-tag--inverted {
270
+ color: #333;
271
+ background-color: #ffffff;
272
+ border-width: 1rpx;
273
+ border-style: solid;
274
+ border-color: #f8f8f8;
275
+ }
276
+ </style>