@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
@@ -1,500 +0,0 @@
1
- <template>
2
- <view class="uni-forms-item" :class="{ 'uni-forms-item--border': border, 'is-first-border': border && isFirstBorder, 'uni-forms-item-error': msg }">
3
- <view class="uni-forms-item__box">
4
- <view class="uni-forms-item__inner" :class="['is-direction-' + labelPos]">
5
- <view class="uni-forms-item__label" :style="{ width: labelWid , justifyContent: justifyContent }">
6
- <slot name="left">
7
- <uni-icons v-if="leftIcon" class="label-icon" size="16" :type="leftIcon" :color="iconColor" />
8
- <text class="label-text">{{ label }}</text>
9
- <text v-if="required" class="is-required">*</text>
10
- <view v-if="label" class="label-seat"></view>
11
- </slot>
12
- </view>
13
- <view class="uni-forms-item__content" :class="{ 'is-input-error-border': msg }">
14
- <slot></slot>
15
- </view>
16
- </view>
17
- <view v-if="msg" class="uni-error-message" :class="{ 'uni-error-msg--boeder': border }" :style="{
18
- paddingLeft: labelLeft
19
- }">
20
- <text class="uni-error-message-text">{{ showMsg === 'undertext' ? msg : '' }}</text>
21
- </view>
22
- </view>
23
- </view>
24
- </template>
25
-
26
- <script>
27
- /**
28
- * Field 输入框
29
- * @description 此组件可以实现表单的输入与校验,包括 "text" 和 "textarea" 类型。
30
- * @tutorial https://ext.dcloud.net.cn/plugin?id=21001
31
- * @property {Boolean} required 是否必填,左边显示红色"*"号(默认false)
32
- * @property {String} validateTrigger = [bind|submit] 校验触发器方式 默认 submit 可选
33
- * @value bind 发生变化时触发
34
- * @value submit 提交时触发
35
- * @property {String } leftIcon label左边的图标,限 uni-ui 的图标名称
36
- * @property {String } iconColor 左边通过icon配置的图标的颜色(默认#606266)
37
- * @property {String } label 输入框左边的文字提示
38
- * @property {Number } labelWidth label的宽度,单位px(默认65)
39
- * @property {String } labelAlign = [left|center|right] label的文字对齐方式(默认left)
40
- * @value left label 左侧显示
41
- * @value center label 居中
42
- * @value right label 右侧对齐
43
- * @property {String } labelPosition = [top|left] label的文字的位置(默认left)
44
- * @value top 顶部显示 label
45
- * @value left 左侧显示 label
46
- * @property {String } errorMessage 显示的错误提示内容,如果为空字符串或者false,则不显示错误信息
47
- * @property {String } name 表单域的属性名,在使用校验规则时必填
48
- */
49
-
50
- export default {
51
- name: 'uniFormsItem',
52
- props: {
53
- // 自定义内容
54
- custom: {
55
- type: Boolean,
56
- default: false
57
- },
58
- // 是否显示报错信息
59
- showMessage: {
60
- type: Boolean,
61
- default: true
62
- },
63
- name: String,
64
- required: Boolean,
65
- validateTrigger: {
66
- type: String,
67
- default: ''
68
- },
69
- leftIcon: String,
70
- iconColor: {
71
- type: String,
72
- default: '#606266'
73
- },
74
- label: String,
75
- // 左边标题的宽度单位px
76
- labelWidth: {
77
- type: [Number, String],
78
- default: ''
79
- },
80
- // 对齐方式,left|center|right
81
- labelAlign: {
82
- type: String,
83
- default: ''
84
- },
85
- // lable的位置,可选为 left-左边,top-上边
86
- labelPosition: {
87
- type: String,
88
- default: ''
89
- },
90
- errorMessage: {
91
- type: [String, Boolean],
92
- default: ''
93
- },
94
- // 表单校验规则
95
- rules: {
96
- type: Array,
97
- default () {
98
- return [];
99
- }
100
- }
101
- },
102
- data() {
103
- return {
104
- errorTop: false,
105
- errorBottom: false,
106
- labelMarginBottom: '',
107
- errorWidth: '',
108
- errMsg: '',
109
- val: '',
110
- labelPos: '',
111
- labelWid: '',
112
- labelAli: '',
113
- showMsg: 'undertext',
114
- border: false,
115
- isFirstBorder: false,
116
- isArray: false,
117
- arrayField: ''
118
- };
119
- },
120
- computed: {
121
- msg() {
122
- return this.errorMessage || this.errMsg;
123
- },
124
- fieldStyle() {
125
- let style = {};
126
- if (this.labelPos == 'top') {
127
- style.padding = '0 0';
128
- this.labelMarginBottom = '6px';
129
- }
130
- if (this.labelPos == 'left' && this.msg !== false && this.msg != '') {
131
- style.paddingBottom = '0px';
132
- this.errorBottom = true;
133
- this.errorTop = false;
134
- } else if (this.labelPos == 'top' && this.msg !== false && this.msg != '') {
135
- this.errorBottom = false;
136
- this.errorTop = true;
137
- } else {
138
- // style.paddingBottom = ''
139
- this.errorTop = false;
140
- this.errorBottom = false;
141
- }
142
- return style;
143
- },
144
-
145
- // uni不支持在computed中写style.justifyContent = 'center'的形式,故用此方法
146
- justifyContent() {
147
- if (this.labelAli === 'left') return 'flex-start';
148
- if (this.labelAli === 'center') return 'center';
149
- if (this.labelAli === 'right') return 'flex-end';
150
- },
151
- labelLeft() {
152
- return (this.labelPos === 'left' ? parseInt(this.labelWid) : 0) + 'px'
153
- }
154
- },
155
- watch: {
156
- validateTrigger(trigger) {
157
- this.formTrigger = trigger;
158
- }
159
- },
160
- created() {
161
- this.form = this.getForm();
162
- this.group = this.getForm('uniGroup');
163
- this.formRules = [];
164
- this.formTrigger = this.validateTrigger;
165
- // 处理 name,是否数组
166
- if (this.name && this.name.indexOf('[') !== -1 && this.name.indexOf(']') !== -1) {
167
- this.isArray = true;
168
- this.arrayField = this.name
169
- // fix by mehaotian 修改不修改的情况,动态值不检验的问题
170
- this.form.formData[this.name] = this.form._getValue(this.name, '')
171
- }
172
- },
173
- mounted() {
174
- if (this.form) {
175
- this.form.childrens.push(this);
176
- }
177
- this.init();
178
- },
179
- // #ifndef VUE3
180
- destroyed() {
181
- if (this.__isUnmounted) return
182
- this.unInit()
183
- },
184
- // #endif
185
- // #ifdef VUE3
186
- unmounted() {
187
- this.__isUnmounted = true
188
- this.unInit()
189
- },
190
- // #endif
191
- methods: {
192
- init() {
193
- if (this.form) {
194
- let {
195
- formRules,
196
- validator,
197
- formData,
198
- value,
199
- labelPosition,
200
- labelWidth,
201
- labelAlign,
202
- errShowType
203
- } = this.form;
204
- this.labelPos = this.labelPosition ? this.labelPosition : labelPosition;
205
-
206
- if (this.label) {
207
- this.labelWid = (this.labelWidth ? this.labelWidth : (labelWidth || 70))
208
- } else {
209
- this.labelWid = (this.labelWidth ? this.labelWidth : (labelWidth || 'auto'))
210
- }
211
- if (this.labelWid && this.labelWid !== 'auto') {
212
- this.labelWid += 'px'
213
- }
214
- this.labelAli = this.labelAlign ? this.labelAlign : labelAlign;
215
-
216
- // 判断第一个 item
217
- if (!this.form.isFirstBorder) {
218
- this.form.isFirstBorder = true;
219
- this.isFirstBorder = true;
220
- }
221
-
222
- // 判断 group 里的第一个 item
223
- if (this.group) {
224
- if (!this.group.isFirstBorder) {
225
- this.group.isFirstBorder = true;
226
- this.isFirstBorder = true;
227
- }
228
- }
229
-
230
- this.border = this.form.border;
231
- this.showMsg = errShowType;
232
- let name = this.isArray ? this.arrayField : this.name;
233
- if (formRules) {
234
- if (!formRules[name]) {
235
- formRules[name] = {
236
- rules: this.rules
237
- }
238
- }
239
- this.formRules = formRules[name];
240
- }
241
- if (this.rules.length > 0) {
242
- validator.updateSchema(formRules);
243
- }
244
-
245
- this.validator = validator;
246
- } else {
247
- this.labelPos = this.labelPosition || 'left';
248
- this.labelWid = this.labelWidth || 65;
249
- this.labelAli = this.labelAlign || 'left';
250
- }
251
- },
252
- unInit() {
253
- if (this.form) {
254
- this.form.childrens.forEach((item, index) => {
255
- if (item === this) {
256
- this.form.childrens.splice(index, 1)
257
- delete this.form.formData[item.name]
258
- }
259
- })
260
- }
261
- },
262
- /**
263
- * 获取父元素实例
264
- */
265
- getForm(name = 'uniForms') {
266
- let parent = this.$parent;
267
- let parentName = parent.$options.name;
268
- while (parentName !== name) {
269
- parent = parent.$parent;
270
- if (!parent) return false;
271
- parentName = parent.$options.name;
272
- }
273
- return parent;
274
- },
275
-
276
- /**
277
- * 移除该表单项的校验结果
278
- */
279
- clearValidate() {
280
- this.errMsg = '';
281
- },
282
- /**
283
- * 子组件调用,如 easyinput
284
- * @param {Object} value
285
- */
286
- setValue(value) {
287
- let name = this.isArray ? this.arrayField : this.name;
288
- if (name) {
289
- if (this.errMsg) this.errMsg = '';
290
- // 给组件赋值
291
- this.form.formData[name] = this.form._getValue(name, value);
292
- if (!this.formRules || (typeof this.formRules && JSON.stringify(this.formRules) === '{}')) return;
293
- this.triggerCheck(this.form._getValue(this.name, value));
294
- }
295
- },
296
-
297
- /**
298
- * 校验规则
299
- * @param {Object} value
300
- */
301
- async triggerCheck(value, formTrigger) {
302
- let promise = null;
303
- this.errMsg = '';
304
- if (!this.validator) return;
305
- const isNoField = this.isRequired(this.formRules.rules || []);
306
- let isTrigger = this.isTrigger(this.formRules.validateTrigger, this.validateTrigger, this.form.validateTrigger);
307
- let result = null;
308
- if (!!isTrigger || formTrigger) {
309
- let name = this.isArray ? this.arrayField : this.name;
310
- result = await this.validator.validateUpdate({
311
- [name]: value
312
- },
313
- this.form.formData
314
- );
315
- }
316
- // 判断是否必填,非必填,不填不校验,填写才校验
317
- if (!isNoField && (value === undefined || value === '')) {
318
- result = null;
319
- }
320
- const inputComp = this.form.inputChildrens.find(child => child.rename === this.name);
321
- if ((isTrigger || formTrigger) && result && result.errorMessage) {
322
- if (inputComp) {
323
- inputComp.errMsg = result.errorMessage;
324
- }
325
- if (this.form.errShowType === 'toast') {
326
- uni.showToast({
327
- title: result.errorMessage || '校验错误',
328
- icon: 'none'
329
- });
330
- }
331
- if (this.form.errShowType === 'modal') {
332
- uni.showModal({
333
- title: '提示',
334
- content: result.errorMessage || '校验错误'
335
- });
336
- }
337
- } else {
338
- if (inputComp) {
339
- inputComp.errMsg = '';
340
- }
341
- }
342
-
343
- this.errMsg = !result ? '' : result.errorMessage;
344
- // 触发validate事件
345
- this.form.validateCheck(result ? result : null);
346
- // typeof callback === 'function' && callback(result ? result : null);
347
- // if (promise) return promise
348
- return result ? result : null;
349
- },
350
- /**
351
- * 触发时机
352
- * @param {Object} event
353
- */
354
- isTrigger(rule, itemRlue, parentRule) {
355
- let rl = true;
356
- // bind submit
357
- if (rule === 'submit' || !rule) {
358
- if (rule === undefined) {
359
- if (itemRlue !== 'bind') {
360
- if (!itemRlue) {
361
- return parentRule === 'bind' ? true : false;
362
- }
363
- return false;
364
- }
365
- return true;
366
- }
367
- return false;
368
- }
369
- return true;
370
- },
371
- // 是否有必填字段
372
- isRequired(rules) {
373
- let isNoField = false;
374
- for (let i = 0; i < rules.length; i++) {
375
- const ruleData = rules[i];
376
- if (ruleData.required) {
377
- isNoField = true;
378
- break;
379
- }
380
- }
381
- return isNoField;
382
- }
383
- }
384
- };
385
- </script>
386
-
387
- <style scoped>
388
- .uni-forms-item {
389
- position: relative;
390
- padding: 0px;
391
- text-align: left;
392
- color: #333;
393
- font-size: 14px;
394
- }
395
-
396
- .uni-forms-item__box {
397
- position: relative;
398
- }
399
-
400
- .uni-forms-item__inner {
401
- /* #ifndef APP-NVUE */
402
- display: flex;
403
- /* #endif */
404
- padding-bottom: 22px;
405
- }
406
-
407
- .is-direction-left {
408
- flex-direction: row;
409
- }
410
-
411
- .is-direction-top {
412
- flex-direction: column;
413
- }
414
-
415
- .uni-forms-item__label {
416
- /* #ifndef APP-NVUE */
417
- display: flex;
418
- flex-shrink: 0;
419
- box-sizing: border-box;
420
- /* #endif */
421
- flex-direction: row;
422
- align-items: center;
423
- width: 65px;
424
- padding: 5px 0;
425
- height: 36px;
426
- }
427
-
428
- .uni-forms-item__label .label-text {
429
- font-size: 14px;
430
- color: #333;
431
- }
432
-
433
- .uni-forms-item__label .label-seat {
434
- margin-right: 5px;
435
- }
436
-
437
- .uni-forms-item__content {
438
- /* #ifndef APP-NVUE */
439
- width: 100%;
440
- box-sizing: border-box;
441
- min-height: 36px;
442
- /* #endif */
443
- flex: 1;
444
- }
445
-
446
- .label-icon {
447
- margin-right: 5px;
448
- margin-top: -1px;
449
- }
450
-
451
- .is-required {
452
- color: #dd524d;
453
- }
454
-
455
- .uni-error-message {
456
- position: absolute;
457
- bottom: 0px;
458
- left: 0;
459
- text-align: left;
460
- }
461
-
462
- .uni-error-message-text {
463
- line-height: 22px;
464
- color: #dd524d;
465
- font-size: 12px;
466
- }
467
-
468
- .uni-error-msg--boeder {
469
- position: relative;
470
- bottom: 0;
471
- line-height: 22px;
472
- }
473
-
474
- .is-input-error-border {
475
- border-color: #dd524d;
476
- }
477
-
478
- .uni-forms-item--border {
479
- margin-bottom: 0;
480
- padding: 10px 0;
481
- border-top: 1px #eee solid;
482
- }
483
-
484
- .uni-forms-item--border .uni-forms-item__inner {
485
- padding: 0;
486
- }
487
-
488
- .is-first-border {
489
- /* #ifndef APP-NVUE */
490
- border: none;
491
- /* #endif */
492
- /* #ifdef APP-NVUE */
493
- border-width: 0;
494
- /* #endif */
495
- }
496
-
497
- .uni-forms--no-padding {
498
- padding: 0;
499
- }
500
- </style>
@@ -1,141 +0,0 @@
1
- <template>
2
- <view class="uni-grid-wrap">
3
- <view :id="elId" ref="uni-grid" class="uni-grid" :class="{ 'uni-grid--border': showBorder }" :style="{ 'border-left-color':borderColor}">
4
- <slot />
5
- </view>
6
- </view>
7
- </template>
8
-
9
- <script>
10
- // #ifdef APP-NVUE
11
- const dom = uni.requireNativePlugin('dom');
12
- // #endif
13
-
14
- /**
15
- * Grid 宫格
16
- * @description 宫格组件
17
- * @tutorial https://ext.dcloud.net.cn/plugin?id=27
18
- * @property {Number} column 每列显示个数
19
- * @property {String} borderColor 边框颜色
20
- * @property {Boolean} showBorder 是否显示边框
21
- * @property {Boolean} square 是否方形显示
22
- * @property {Boolean} Boolean 点击背景是否高亮
23
- * @event {Function} change 点击 grid 触发,e={detail:{index:0}},index 为当前点击 gird 下标
24
- */
25
- export default {
26
- name: 'UniGrid',
27
- emits: ['change'],
28
- props: {
29
- // 每列显示个数
30
- column: {
31
- type: Number,
32
- default: 3
33
- },
34
- // 是否显示边框
35
- showBorder: {
36
- type: Boolean,
37
- default: true
38
- },
39
- // 边框颜色
40
- borderColor: {
41
- type: String,
42
- default: '#e5e5e5'
43
- },
44
- // 是否正方形显示,默认为 true
45
- square: {
46
- type: Boolean,
47
- default: true
48
- },
49
- highlight: {
50
- type: Boolean,
51
- default: true
52
- }
53
- },
54
- provide() {
55
- return {
56
- grid: this
57
- }
58
- },
59
- data() {
60
- const elId = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
61
- return {
62
- elId,
63
- width: 0
64
- }
65
- },
66
- created() {
67
- this.children = []
68
- },
69
- mounted() {
70
- this.$nextTick(() => {
71
- this.init()
72
- })
73
- },
74
- methods: {
75
- init() {
76
- setTimeout(() => {
77
- this._getSize((width) => {
78
- this.children.forEach((item, index) => {
79
- item.width = width
80
- })
81
- })
82
- }, 50)
83
- },
84
- change(e) {
85
- this.$emit('change', e)
86
- },
87
- _getSize(fn) {
88
- // #ifndef APP-NVUE
89
- uni.createSelectorQuery()
90
- .in(this)
91
- .select(`#${this.elId}`)
92
- .boundingClientRect()
93
- .exec(ret => {
94
- this.width = parseInt((ret[0].width - 1) / this.column) + 'px'
95
- fn(this.width)
96
- })
97
- // #endif
98
- // #ifdef APP-NVUE
99
- dom.getComponentRect(this.$refs['uni-grid'], (ret) => {
100
- this.width = parseInt((ret.size.width - 1) / this.column) + 'px'
101
- fn(this.width)
102
- })
103
- // #endif
104
- }
105
- }
106
- }
107
- </script>
108
-
109
- <style scoped>
110
- .uni-grid-wrap {
111
- /* #ifndef APP-NVUE */
112
- display: flex;
113
- /* #endif */
114
- flex: 1;
115
- flex-direction: column;
116
- /* #ifdef H5 */
117
- width: 100%;
118
- /* #endif */
119
- }
120
-
121
- .uni-grid {
122
- /* #ifndef APP-NVUE */
123
- display: flex;
124
- /* #endif */
125
- flex-direction: row;
126
- flex-wrap: wrap;
127
- }
128
-
129
- .uni-grid--border {
130
- position: relative;
131
- /* #ifdef APP-NVUE */
132
- border-left-color: #e5e5e5;
133
- border-left-style: solid;
134
- border-left-width: 0.5px;
135
- /* #endif */
136
- /* #ifndef APP-NVUE */
137
- z-index: 1;
138
- border-left: 1px #e5e5e5 solid;
139
- /* #endif */
140
- }
141
- </style>