eoss-mobiles 0.3.95 → 0.3.97

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 (249) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/lib/action-sheet.js +4 -4
  3. package/lib/button-group.js +4 -4
  4. package/lib/button.js +4 -4
  5. package/lib/calendar.js +4 -4
  6. package/lib/cascader.js +4 -4
  7. package/lib/cell.js +4 -4
  8. package/lib/checkbox.js +200 -173
  9. package/lib/circle.js +4 -4
  10. package/lib/config/api.js +16 -2
  11. package/lib/count-down.js +4 -4
  12. package/lib/date.js +108 -108
  13. package/lib/empty.js +4 -4
  14. package/lib/eoss-mobile.common.js +651 -83
  15. package/lib/esign.js +4 -4
  16. package/lib/field.js +4 -4
  17. package/lib/flow-btn.js +194 -167
  18. package/lib/flow-list.js +196 -167
  19. package/lib/flow.js +241 -212
  20. package/lib/form.js +93 -6
  21. package/lib/grid-item.js +4 -4
  22. package/lib/grid.js +12 -12
  23. package/lib/image-preview.js +15 -7
  24. package/lib/image.js +4 -4
  25. package/lib/index.js +1 -1
  26. package/lib/list.js +4 -4
  27. package/lib/loading.js +86 -86
  28. package/lib/nav-bar.js +4 -4
  29. package/lib/notice-bar.js +4 -4
  30. package/lib/pagination.js +4 -4
  31. package/lib/picker.js +200 -171
  32. package/lib/popover.js +4 -4
  33. package/lib/popup.js +4 -4
  34. package/lib/pull-refresh.js +4 -4
  35. package/lib/radio.js +199 -170
  36. package/lib/rate.js +4 -4
  37. package/lib/retrial-auth.js +194 -167
  38. package/lib/search.js +4 -4
  39. package/lib/selector.js +240 -211
  40. package/lib/skeleton.js +4 -4
  41. package/lib/stepper.js +4 -4
  42. package/lib/swipe.js +4 -4
  43. package/lib/switch.js +4 -4
  44. package/lib/tab.js +4 -4
  45. package/lib/table-column.js +194 -165
  46. package/lib/table.js +16 -16
  47. package/lib/tabs.js +4 -4
  48. package/lib/tag.js +4 -4
  49. package/lib/theme-chalk/fonts/iconfont.scss +98 -98
  50. package/lib/theme-chalk/fonts/iconfont1.scss +90 -90
  51. package/lib/uploader.js +2472 -13
  52. package/package.json +3 -1
  53. package/packages/action-sheet/index.js +5 -5
  54. package/packages/action-sheet/src/main.vue +32 -32
  55. package/packages/button/index.js +5 -5
  56. package/packages/button/src/main.vue +15 -15
  57. package/packages/button-group/index.js +5 -5
  58. package/packages/button-group/src/main.vue +80 -80
  59. package/packages/calendar/index.js +5 -5
  60. package/packages/calendar/src/main.vue +34 -34
  61. package/packages/cascader/index.js +5 -5
  62. package/packages/cascader/src/main.vue +39 -39
  63. package/packages/cell/index.js +5 -5
  64. package/packages/cell/src/main.vue +77 -77
  65. package/packages/checkbox/index.js +5 -5
  66. package/packages/checkbox/src/main.vue +232 -232
  67. package/packages/circle/index.js +5 -5
  68. package/packages/circle/src/main.vue +27 -27
  69. package/packages/count-down/index.js +5 -5
  70. package/packages/count-down/src/main.vue +27 -27
  71. package/packages/date/index.js +5 -5
  72. package/packages/date/src/date-time.vue +290 -290
  73. package/packages/date/src/main.vue +401 -401
  74. package/packages/empty/index.js +5 -5
  75. package/packages/empty/src/main.vue +16 -16
  76. package/packages/esign/index.js +5 -5
  77. package/packages/esign/src/main.vue +144 -144
  78. package/packages/field/index.js +5 -5
  79. package/packages/field/src/main.vue +235 -235
  80. package/packages/flow/index.js +5 -5
  81. package/packages/flow/src/components/Circulate.vue +595 -595
  82. package/packages/flow/src/components/Handle.vue +2404 -2404
  83. package/packages/flow/src/components/Message.vue +208 -208
  84. package/packages/flow/src/components/ProcessSettings.vue +342 -342
  85. package/packages/flow/src/components/supervise.vue +139 -139
  86. package/packages/flow/src/flowMix.js +288 -288
  87. package/packages/flow/src/main.vue +116 -116
  88. package/packages/flow-btn/index.js +5 -5
  89. package/packages/flow-btn/src/main.vue +494 -494
  90. package/packages/flow-list/index.js +5 -5
  91. package/packages/flow-list/src/main.vue +248 -248
  92. package/packages/form/index.js +5 -5
  93. package/packages/form/src/main.vue +548 -523
  94. package/packages/grid/index.js +5 -5
  95. package/packages/grid/src/main.vue +486 -486
  96. package/packages/grid-item/index.js +5 -5
  97. package/packages/grid-item/src/main.vue +16 -16
  98. package/packages/image/index.js +5 -5
  99. package/packages/image/src/main.vue +12 -12
  100. package/packages/image-preview/index.js +5 -5
  101. package/packages/image-preview/src/main.vue +41 -34
  102. package/packages/list/index.js +5 -5
  103. package/packages/list/src/main.vue +32 -32
  104. package/packages/loading/index.js +5 -5
  105. package/packages/loading/src/main.vue +19 -19
  106. package/packages/nav-bar/index.js +5 -5
  107. package/packages/nav-bar/src/main.vue +24 -24
  108. package/packages/notice-bar/index.js +5 -5
  109. package/packages/notice-bar/src/main.vue +15 -15
  110. package/packages/pagination/index.js +5 -5
  111. package/packages/pagination/src/main.vue +73 -73
  112. package/packages/picker/index.js +5 -5
  113. package/packages/picker/src/main.vue +604 -604
  114. package/packages/popover/index.js +5 -5
  115. package/packages/popover/src/main.vue +32 -32
  116. package/packages/popup/index.js +5 -5
  117. package/packages/popup/src/main.vue +27 -27
  118. package/packages/pull-refresh/index.js +5 -5
  119. package/packages/pull-refresh/src/main.vue +31 -31
  120. package/packages/radio/index.js +5 -5
  121. package/packages/radio/src/main.vue +179 -179
  122. package/packages/rate/index.js +5 -5
  123. package/packages/rate/src/main.vue +26 -26
  124. package/packages/retrial-auth/index.js +5 -5
  125. package/packages/retrial-auth/src/main.vue +257 -257
  126. package/packages/search/index.js +5 -5
  127. package/packages/search/src/main.vue +39 -39
  128. package/packages/selector/index.js +5 -5
  129. package/packages/selector/src/main.vue +186 -186
  130. package/packages/selector/src/selector-tree.vue +1117 -1117
  131. package/packages/selector/src/tree.vue +405 -405
  132. package/packages/skeleton/index.js +5 -5
  133. package/packages/skeleton/src/main.vue +17 -17
  134. package/packages/stepper/index.js +5 -5
  135. package/packages/stepper/src/main.vue +25 -25
  136. package/packages/swipe/index.js +5 -5
  137. package/packages/swipe/src/main.vue +42 -42
  138. package/packages/switch/index.js +5 -5
  139. package/packages/switch/src/main.vue +38 -38
  140. package/packages/tab/index.js +5 -5
  141. package/packages/tab/src/main.vue +16 -16
  142. package/packages/table/index.js +5 -5
  143. package/packages/table/src/main.vue +1006 -1006
  144. package/packages/table-column/index.js +5 -5
  145. package/packages/table-column/src/main.vue +931 -931
  146. package/packages/table-column/src/mixins/table.js +12 -12
  147. package/packages/tabs/index.js +5 -5
  148. package/packages/tabs/src/main.vue +34 -34
  149. package/packages/tag/index.js +5 -5
  150. package/packages/tag/src/main.vue +16 -16
  151. package/packages/theme-chalk/lib/action-sheet.css +0 -0
  152. package/packages/theme-chalk/lib/base.css +1 -0
  153. package/packages/theme-chalk/lib/button-group.css +1 -0
  154. package/packages/theme-chalk/lib/button.css +1 -0
  155. package/packages/theme-chalk/lib/calendar.css +1 -0
  156. package/packages/theme-chalk/lib/cascader.css +1 -0
  157. package/packages/theme-chalk/lib/cell.css +1 -0
  158. package/packages/theme-chalk/lib/checkbox.css +1 -0
  159. package/packages/theme-chalk/lib/circle.css +1 -0
  160. package/packages/theme-chalk/lib/count-down.css +0 -0
  161. package/packages/theme-chalk/lib/date.css +0 -0
  162. package/packages/theme-chalk/lib/empty.css +0 -0
  163. package/packages/theme-chalk/lib/esign.css +1 -0
  164. package/packages/theme-chalk/lib/field.css +1 -0
  165. package/packages/theme-chalk/lib/flow-btn.css +1 -0
  166. package/packages/theme-chalk/lib/flow-list-task-read.css +1 -0
  167. package/packages/theme-chalk/lib/flow-list.css +1 -0
  168. package/packages/theme-chalk/lib/flow.css +1 -0
  169. package/packages/theme-chalk/lib/fonts/iconfont.scss +98 -0
  170. package/packages/theme-chalk/lib/fonts/iconfont.ttf +0 -0
  171. package/packages/theme-chalk/lib/fonts/iconfont.woff +0 -0
  172. package/packages/theme-chalk/lib/fonts/iconfont1.scss +90 -0
  173. package/packages/theme-chalk/lib/form.css +1 -0
  174. package/packages/theme-chalk/lib/grid-item.css +1 -0
  175. package/packages/theme-chalk/lib/grid.css +1 -0
  176. package/packages/theme-chalk/lib/icon.css +1 -0
  177. package/packages/theme-chalk/lib/image-preview.css +0 -0
  178. package/packages/theme-chalk/lib/image.css +0 -0
  179. package/packages/theme-chalk/lib/index.css +1 -0
  180. package/packages/theme-chalk/lib/list.css +0 -0
  181. package/packages/theme-chalk/lib/loading.css +0 -0
  182. package/packages/theme-chalk/lib/nav-bar.css +0 -0
  183. package/packages/theme-chalk/lib/navbar.css +1 -0
  184. package/packages/theme-chalk/lib/notice-bar.css +0 -0
  185. package/packages/theme-chalk/lib/pagination.css +1 -0
  186. package/packages/theme-chalk/lib/picker.css +1 -0
  187. package/packages/theme-chalk/lib/popover.css +0 -0
  188. package/packages/theme-chalk/lib/popup.css +0 -0
  189. package/packages/theme-chalk/lib/pull-refresh.css +0 -0
  190. package/packages/theme-chalk/lib/radio.css +1 -0
  191. package/packages/theme-chalk/lib/rate.css +0 -0
  192. package/packages/theme-chalk/lib/retrial-auth.css +1 -0
  193. package/packages/theme-chalk/lib/search.css +0 -0
  194. package/packages/theme-chalk/lib/selector.css +1 -0
  195. package/packages/theme-chalk/lib/skeleton.css +0 -0
  196. package/packages/theme-chalk/lib/stepper.css +1 -0
  197. package/packages/theme-chalk/lib/swipe.css +0 -0
  198. package/packages/theme-chalk/lib/switch.css +1 -0
  199. package/packages/theme-chalk/lib/tab.css +0 -0
  200. package/packages/theme-chalk/lib/table-column.css +0 -0
  201. package/packages/theme-chalk/lib/table.css +1 -0
  202. package/packages/theme-chalk/lib/tabs.css +1 -0
  203. package/packages/theme-chalk/lib/tag.css +1 -0
  204. package/packages/theme-chalk/lib/theme.css +0 -0
  205. package/packages/theme-chalk/lib/tree.css +1 -0
  206. package/packages/theme-chalk/lib/uploader.css +0 -0
  207. package/packages/theme-chalk/src/base.scss +195 -195
  208. package/packages/theme-chalk/src/button-group.scss +25 -25
  209. package/packages/theme-chalk/src/button.scss +2 -2
  210. package/packages/theme-chalk/src/calendar.scss +11 -11
  211. package/packages/theme-chalk/src/cascader.scss +11 -11
  212. package/packages/theme-chalk/src/cell.scss +14 -14
  213. package/packages/theme-chalk/src/checkbox.scss +9 -9
  214. package/packages/theme-chalk/src/circle.scss +6 -6
  215. package/packages/theme-chalk/src/common/var.scss +1525 -1525
  216. package/packages/theme-chalk/src/esign.scss +51 -51
  217. package/packages/theme-chalk/src/field.scss +98 -98
  218. package/packages/theme-chalk/src/flow-btn.scss +99 -99
  219. package/packages/theme-chalk/src/flow-list.scss +122 -122
  220. package/packages/theme-chalk/src/fonts/iconfont.scss +98 -98
  221. package/packages/theme-chalk/src/fonts/iconfont1.scss +90 -90
  222. package/packages/theme-chalk/src/form.scss +33 -33
  223. package/packages/theme-chalk/src/grid-item.scss +16 -16
  224. package/packages/theme-chalk/src/grid.scss +46 -46
  225. package/packages/theme-chalk/src/icon.scss +1661 -1661
  226. package/packages/theme-chalk/src/mixins/color.scss +117 -117
  227. package/packages/theme-chalk/src/navbar.scss +5 -5
  228. package/packages/theme-chalk/src/pagination.scss +12 -12
  229. package/packages/theme-chalk/src/picker.scss +31 -31
  230. package/packages/theme-chalk/src/radio.scss +6 -6
  231. package/packages/theme-chalk/src/retrial-auth.scss +28 -28
  232. package/packages/theme-chalk/src/selector.scss +247 -247
  233. package/packages/theme-chalk/src/stepper.scss +9 -9
  234. package/packages/theme-chalk/src/switch.scss +5 -5
  235. package/packages/theme-chalk/src/table.scss +86 -86
  236. package/packages/theme-chalk/src/tabs.scss +31 -31
  237. package/packages/theme-chalk/src/tag.scss +12 -12
  238. package/packages/theme-chalk/src/theme.scss +1 -1
  239. package/packages/theme-chalk/src/tree.scss +127 -127
  240. package/packages/uploader/index.js +5 -5
  241. package/packages/uploader/src/main.vue +586 -31
  242. package/src/config/api.js +18 -0
  243. package/src/index.js +1 -1
  244. package/src/utils/axios.js +217 -217
  245. package/src/utils/date-util.js +312 -312
  246. package/src/utils/http.js +106 -106
  247. package/src/utils/rules.js +18 -18
  248. package/src/utils/store.js +21 -21
  249. package/packages/theme-chalk/gulpfile.js +0 -25
@@ -1,523 +1,548 @@
1
- <template>
2
- <van-form
3
- class="em-form"
4
- ref="emForm"
5
- v-bind="$attrs"
6
- @failed="handleFailed"
7
- @submit="handleSubmit"
8
- >
9
- <div class="em-form-content">
10
- <div
11
- v-for="(item, index) in newContent"
12
- :key="index"
13
- :style="
14
- item.type == 'tab'
15
- ? `flex:1;height:0;min-height:${item.minHeight || 400}px`
16
- : item.type == 'table'
17
- ? 'flex:1;height:0'
18
- : ''
19
- "
20
- >
21
- <em-tabs
22
- v-model="item.active"
23
- v-bind="{ ...item, type: item.tabType || 'line' }"
24
- v-on="{ ...item.events }"
25
- v-if="item.type === 'tab'"
26
- >
27
- <em-tab v-bind="{ ...z }" v-for="(z, i) in item.contents" :key="i">
28
- <div style="height: 100%" v-for="(x, j) in z.contents" :key="j">
29
- <em-input
30
- v-if="
31
- x.type === 'text' ||
32
- x.type === 'textarea' ||
33
- x.type == 'number' ||
34
- x.type == 'digit' ||
35
- x.type == 'password' ||
36
- x.type == 'tel'
37
- "
38
- class="em-table-input"
39
- v-bind="{ ...$attrs, ...x }"
40
- v-on="{ ...x.events }"
41
- :label-position="x.labelPosition || labelPosition"
42
- :disabled="x.disabled || disabled"
43
- :readonly="x.readonly || readonly"
44
- ref="input"
45
- v-model="model[x.name]"
46
- :label="x.label.text || x.label"
47
- @input="handleChange(x.name, model[x.name])"
48
- />
49
- <!-- <em-input
50
- v-if="
51
- (item.type === 'text' ||
52
- item.type === 'textarea' ||
53
- item.type == 'number' ||
54
- item.type == 'digit' ||
55
- item.type == 'password' ||
56
- item.type == 'tel') && item.events
57
- "
58
- class="em-table-input"
59
- v-bind="{ ...$attrs, ...item }"
60
-
61
- :label-position="item.labelPosition || labelPosition"
62
- :disabled="item.disabled || disabled"
63
- :readonly="item.readonly || readonly"
64
- ref="input"
65
- v-model="model[item.name]"
66
- :label="item.label.text || item.label"
67
- @input="handleChange(item.name, model[item.name])"
68
- /> -->
69
- <em-picker
70
- v-if="x.type === 'select'"
71
- v-bind="{ ...$attrs, ...x }"
72
- v-on="{ ...x.events }"
73
- ref="select"
74
- :label-position="x.labelPosition || labelPosition"
75
- :disabled="x.disabled || disabled"
76
- :readonly="x.readonly || readonly"
77
- v-model="model[x.name]"
78
- :columns="x.data || []"
79
- @confirm="
80
- (value) => {
81
- handleChange(item.name, value);
82
- }
83
- "
84
- />
85
- <em-date
86
- v-else-if="
87
- x.date ||
88
- x.type == 'date' ||
89
- x.type == 'year' ||
90
- x.type == 'year-month' ||
91
- x.type == 'month-day' ||
92
- x.type == 'time' ||
93
- x.type == 'datetimeSecond' ||
94
- x.type == 'datetime' ||
95
- x.type == 'datehour'
96
- "
97
- ref="date"
98
- v-bind="{ ...$attrs, ...x }"
99
- v-on="{ ...x.events }"
100
- v-model="model[x.name]"
101
- :label-position="x.labelPosition || labelPosition"
102
- :disabled="x.disabled || disabled"
103
- :readonly="x.readonly || readonly"
104
- :joinStr="x.joinStr || ''"
105
- @confirm="
106
- (value, timePeriod) => {
107
- handleChange(x.name, value, timePeriod);
108
- }
109
- "
110
- />
111
- <em-input
112
- v-else-if="x.type === 'radio'"
113
- ref="radio"
114
- v-bind="{ ...$attrs, ...x }"
115
- :label-position="x.labelPosition || labelPosition"
116
- >
117
- <template slot="input">
118
- <em-radio-group
119
- v-bind="{ ...$attrs, ...x }"
120
- v-on="{ ...x.events }"
121
- v-model="model[x.name]"
122
- :disabled="x.disabled || disabled || x.readonly || readonly"
123
- :data="x.data"
124
- @change="
125
- (value) => {
126
- handleChange(x.name, value);
127
- }
128
- "
129
- />
130
- </template>
131
- </em-input>
132
- <em-input
133
- v-else-if="x.type === 'checkbox'"
134
- ref="checkbox"
135
- v-bind="{ ...$attrs, ...x }"
136
- :label-position="x.labelPosition || labelPosition"
137
- >
138
- <template slot="input">
139
- <em-checkbox-group
140
- v-bind="{ ...$attrs, ...x }"
141
- v-on="{ ...x.events }"
142
- v-model="model[x.name]"
143
- :disabled="x.disabled || disabled || x.readonly || readonly"
144
- @change="
145
- (value) => {
146
- handleChange(x.name, value);
147
- }
148
- "
149
- />
150
- </template>
151
- </em-input>
152
- <em-input
153
- v-else-if="x.type === 'switch'"
154
- ref="switch"
155
- v-bind="{ ...$attrs, ...x }"
156
- :label-position="x.labelPosition || labelPosition"
157
- >
158
- <template slot="input">
159
- <em-switch
160
- v-bind="{ ...$attrs, ...x }"
161
- v-model="model[x.name]"
162
- v-on="{ ...x.events }"
163
- :disabled="x.disabled || disabled || x.readonly || readonly"
164
- @change="
165
- (value) => {
166
- handleChange(x.name, value);
167
- }
168
- "
169
- />
170
- </template>
171
- </em-input>
172
- <em-selector
173
- v-else-if="x.type == 'selector'"
174
- ref="selector"
175
- v-bind="{ ...$attrs, ...x }"
176
- v-model="model[x.name]"
177
- v-on="{ ...x.events }"
178
- :label="x.label"
179
- :label-position="x.labelPosition || labelPosition"
180
- :disabled="x.disabled || disabled || x.readonly || readonly"
181
- @change="
182
- (value) => {
183
- handleChange(x.name, value);
184
- }
185
- "
186
- />
187
- <em-table
188
- v-else-if="x.type == 'table'"
189
- class="em-form-table"
190
- ref="emFormTable"
191
- v-bind="{ ...$attrs, ...x }"
192
- :data="model[x.name]"
193
- :thead="x.tHead"
194
- :style="`margin:${x.margin || 10}px 0px`"
195
- isForm
196
- :form="
197
- !x.disabled && !disabled && !x.readonly && !readonly && x.form
198
- "
199
- v-on="{ ...x.events }"
200
- @btn-click="handleBtnClick"
201
- />
202
- </div>
203
- </em-tab>
204
- </em-tabs>
205
- <em-input
206
- v-if="
207
- item.type === 'text' ||
208
- item.type === 'textarea' ||
209
- item.type == 'number' ||
210
- item.type == 'digit' ||
211
- item.type == 'password' ||
212
- item.type == 'tel'
213
- "
214
- class="em-table-input"
215
- v-bind="{ ...$attrs, ...item }"
216
- v-on="{ ...item.events }"
217
- :label-position="item.labelPosition || labelPosition"
218
- :disabled="item.disabled || disabled"
219
- :readonly="item.readonly || readonly"
220
- ref="input"
221
- v-model="model[item.name]"
222
- :label="item.label.text || item.label"
223
- @input="handleChange(item.name, model[item.name])"
224
- />
225
- <!-- <em-input
226
- v-if="
227
- (item.type === 'text' ||
228
- item.type === 'textarea' ||
229
- item.type == 'number' ||
230
- item.type == 'digit' ||
231
- item.type == 'password' ||
232
- item.type == 'tel') && item.events
233
- "
234
- class="em-table-input"
235
- v-bind="{ ...$attrs, ...item }"
236
-
237
- :label-position="item.labelPosition || labelPosition"
238
- :disabled="item.disabled || disabled"
239
- :readonly="item.readonly || readonly"
240
- ref="input"
241
- v-model="model[item.name]"
242
- :label="item.label.text || item.label"
243
- @input="handleChange(item.name, model[item.name])"
244
- /> -->
245
- <em-picker
246
- v-if="item.type === 'select'"
247
- v-bind="{ ...$attrs, ...item }"
248
- v-on="{ ...item.events }"
249
- ref="select"
250
- :label-position="item.labelPosition || labelPosition"
251
- :disabled="item.disabled || disabled"
252
- :readonly="item.readonly || readonly"
253
- v-model="model[item.name]"
254
- :columns="item.data || []"
255
- @confirm="
256
- (value) => {
257
- handleChange(item.name, value);
258
- }
259
- "
260
- />
261
- <em-date
262
- v-else-if="
263
- item.date ||
264
- item.type == 'date' ||
265
- item.type == 'year' ||
266
- item.type == 'year-month' ||
267
- item.type == 'month-day' ||
268
- item.type == 'time' ||
269
- item.type == 'datetimeSecond' ||
270
- item.type == 'datetime' ||
271
- item.type == 'datehour'
272
- "
273
- ref="date"
274
- v-bind="{ ...$attrs, ...item }"
275
- v-on="{ ...item.events }"
276
- v-model="model[item.name]"
277
- :label-position="item.labelPosition || labelPosition"
278
- :disabled="item.disabled || disabled"
279
- :readonly="item.readonly || readonly"
280
- :joinStr="item.joinStr || ''"
281
- @confirm="
282
- (value, timePeriod) => {
283
- handleChange(item.name, value, timePeriod);
284
- }
285
- "
286
- />
287
- <em-input
288
- v-else-if="item.type === 'radio'"
289
- ref="radio"
290
- v-bind="{ ...$attrs, ...item }"
291
- :label-position="item.labelPosition || labelPosition"
292
- >
293
- <template slot="input">
294
- <em-radio-group
295
- v-bind="{ ...$attrs, ...item }"
296
- v-on="{ ...item.events }"
297
- v-model="model[item.name]"
298
- :disabled="item.disabled || disabled || item.readonly || readonly"
299
- :data="item.data"
300
- @change="
301
- (value) => {
302
- handleChange(item.name, value);
303
- }
304
- "
305
- />
306
- </template>
307
- </em-input>
308
- <em-input
309
- v-else-if="item.type === 'checkbox'"
310
- ref="checkbox"
311
- v-bind="{ ...$attrs, ...item }"
312
- :label-position="item.labelPosition || labelPosition"
313
- >
314
- <template slot="input">
315
- <em-checkbox-group
316
- v-bind="{ ...$attrs, ...item }"
317
- v-on="{ ...item.events }"
318
- v-model="model[item.name]"
319
- :disabled="item.disabled || disabled || item.readonly || readonly"
320
- @change="
321
- (value) => {
322
- handleChange(item.name, value);
323
- }
324
- "
325
- />
326
- </template>
327
- </em-input>
328
- <em-input
329
- v-else-if="item.type === 'switch'"
330
- ref="switch"
331
- v-bind="{ ...$attrs, ...item }"
332
- :label-position="item.labelPosition || labelPosition"
333
- >
334
- <template slot="input">
335
- <em-switch
336
- v-bind="{ ...$attrs, ...item }"
337
- v-model="model[item.name]"
338
- v-on="{ ...item.events }"
339
- :disabled="item.disabled || disabled || item.readonly || readonly"
340
- @change="
341
- (value) => {
342
- handleChange(item.name, value);
343
- }
344
- "
345
- />
346
- </template>
347
- </em-input>
348
- <em-selector
349
- v-else-if="item.type == 'selector'"
350
- ref="selector"
351
- v-bind="{ ...$attrs, ...item }"
352
- v-model="model[item.name]"
353
- v-on="{ ...item.events }"
354
- :label="item.label"
355
- :label-position="item.labelPosition || labelPosition"
356
- :disabled="item.disabled || disabled || item.readonly || readonly"
357
- @change="
358
- (value) => {
359
- handleChange(item.name, value);
360
- }
361
- "
362
- />
363
- <em-table
364
- v-else-if="item.type == 'table'"
365
- class="em-form-table"
366
- ref="emFormTable"
367
- v-bind="{ ...$attrs, ...item }"
368
- :data="model[item.name]"
369
- :thead="item.tHead"
370
- :style="`margin:${item.margin || 10}px 0px`"
371
- isForm
372
- :form="
373
- !item.disabled &&
374
- !disabled &&
375
- !item.readonly &&
376
- !readonly &&
377
- item.form
378
- "
379
- v-on="{ ...item.events }"
380
- @btn-click="handleBtnClick"
381
- />
382
- <!-- @btn-click="handleBtnClick($event,item)"
383
- @selection-change="handleSelectionChange($event,item)"
384
- @edit="handleEdit($event,item)" -->
385
- </div>
386
- </div>
387
-
388
- <div
389
- :style="`margin: 16px;text-align:${position}`"
390
- v-if="showBtn && !disabled && !readonly"
391
- >
392
- <em-button
393
- round
394
- block
395
- type="primary"
396
- v-if="btnList.length == 0"
397
- native-type="submit"
398
- >提交</em-button
399
- >
400
- <em-button
401
- v-show="btnList.length != 0"
402
- v-for="item in btnList[0].contents"
403
- :key="item.text"
404
- v-bind="item"
405
- :native-type="item.nativeType ? item.nativeType : 'button'"
406
- @click="handleClick(item)"
407
- >{{ item.text }}</em-button
408
- >
409
- </div>
410
- </van-form>
411
- </template>
412
-
413
- <script>
414
- export default {
415
- name: 'EmForm',
416
- props: {
417
- contents: {
418
- type: Array,
419
- default() {
420
- return [];
421
- }
422
- },
423
- model: {
424
- type: Object,
425
- default: () => {}
426
- },
427
- position: {
428
- type: String,
429
- default: 'center'
430
- },
431
- showBtn: {
432
- type: Boolean,
433
- default: true
434
- },
435
- disabled: {
436
- type: Boolean,
437
- default: false
438
- },
439
- readonly: {
440
- type: Boolean,
441
- default: false
442
- },
443
- labelPosition: {
444
- type: String,
445
- default: 'left'
446
- }
447
- },
448
- computed: {
449
- btnList() {
450
- return this.contents.filter((x) => x.type === 'submit');
451
- },
452
- newContent: {
453
- get() {
454
- let tableList = this.contents.filter((x) => x.type == 'table');
455
- if (tableList.length > 0) {
456
- tableList.map((x) => {
457
- x.tHead.map((z) => {
458
- if (z.type == 'handle' && z.events) {
459
- z.events.map((y) => {
460
- y['native-type'] = 'button';
461
- });
462
- }
463
- });
464
- });
465
- }
466
- return this.contents;
467
- },
468
- set(val) {
469
- return val;
470
- }
471
- }
472
- },
473
- mounted() {
474
- // this.setBtnType()
475
- },
476
- methods: {
477
- handleFailed(values) {
478
- this.$refs.emFormTable.map((item) => {
479
- item.validate();
480
- });
481
- this.$emit('failed', { errors: values.errors, values: this.model });
482
- },
483
- handleSubmit() {
484
- let errForm = false;
485
- if (this.$refs.emFormTable) {
486
- this.$refs.emFormTable.map((item) => {
487
- if (!item.validate()) {
488
- errForm = true;
489
- }
490
- });
491
- }
492
- if (errForm) {
493
- this.$emit('failed', { errors: [], values: this.model });
494
- } else {
495
- this.$emit('submit', this.model);
496
- }
497
- },
498
- handleChange(key, value, timePeriod) {
499
- this.$emit('change', key, value, timePeriod);
500
- },
501
- handleBtnClick(val) {
502
- this.$emit('table-btn-click', val);
503
- },
504
- validate(name) {
505
- return this.$refs.emForm.validate(name);
506
- },
507
- submit() {
508
- this.$refs.emForm.submit();
509
- },
510
- resetValidation(name) {
511
- this.$refs.emForm.resetValidation(name);
512
- },
513
- scrollToField(name, alignToTop) {
514
- this.$refs.emForm.scrollToField(name, alignToTop);
515
- },
516
- handleClick(val) {
517
- this.$emit('click', { values: this.model, btn: val });
518
- }
519
- }
520
- };
521
- </script>
522
-
523
- <style></style>
1
+ <template>
2
+ <van-form
3
+ class="em-form"
4
+ ref="emForm"
5
+ v-bind="$attrs"
6
+ @failed="handleFailed"
7
+ @submit="handleSubmit"
8
+ >
9
+ <div class="em-form-content">
10
+ <div
11
+ v-for="(item, index) in newContent"
12
+ :key="index"
13
+ :style="
14
+ item.type == 'tab'
15
+ ? `flex:1;height:0;min-height:${item.minHeight || 400}px`
16
+ : item.type == 'table'
17
+ ? 'flex:1;height:0'
18
+ : ''
19
+ "
20
+ >
21
+ <em-tabs
22
+ v-model="item.active"
23
+ v-bind="{ ...item, type: item.tabType || 'line' }"
24
+ v-on="{ ...item.events }"
25
+ v-if="item.type === 'tab'"
26
+ >
27
+ <em-tab v-bind="{ ...z }" v-for="(z, i) in item.contents" :key="i">
28
+ <div style="height: 100%" v-for="(x, j) in z.contents" :key="j">
29
+ <em-input
30
+ v-if="
31
+ x.type === 'text' ||
32
+ x.type === 'textarea' ||
33
+ x.type == 'number' ||
34
+ x.type == 'digit' ||
35
+ x.type == 'password' ||
36
+ x.type == 'tel'
37
+ "
38
+ class="em-table-input"
39
+ v-bind="{ ...$attrs, ...x }"
40
+ v-on="{ ...x.events }"
41
+ :label-position="x.labelPosition || labelPosition"
42
+ :disabled="x.disabled || disabled"
43
+ :readonly="x.readonly || readonly"
44
+ ref="input"
45
+ v-model="model[x.name]"
46
+ :label="x.label.text || x.label"
47
+ @input="handleChange(x.name, model[x.name])"
48
+ />
49
+ <!-- <em-input
50
+ v-if="
51
+ (item.type === 'text' ||
52
+ item.type === 'textarea' ||
53
+ item.type == 'number' ||
54
+ item.type == 'digit' ||
55
+ item.type == 'password' ||
56
+ item.type == 'tel') && item.events
57
+ "
58
+ class="em-table-input"
59
+ v-bind="{ ...$attrs, ...item }"
60
+
61
+ :label-position="item.labelPosition || labelPosition"
62
+ :disabled="item.disabled || disabled"
63
+ :readonly="item.readonly || readonly"
64
+ ref="input"
65
+ v-model="model[item.name]"
66
+ :label="item.label.text || item.label"
67
+ @input="handleChange(item.name, model[item.name])"
68
+ /> -->
69
+ <em-picker
70
+ v-if="x.type === 'select'"
71
+ v-bind="{ ...$attrs, ...x }"
72
+ v-on="{ ...x.events }"
73
+ ref="select"
74
+ :label-position="x.labelPosition || labelPosition"
75
+ :disabled="x.disabled || disabled"
76
+ :readonly="x.readonly || readonly"
77
+ v-model="model[x.name]"
78
+ :columns="x.data || []"
79
+ @confirm="
80
+ (value) => {
81
+ handleChange(item.name, value);
82
+ }
83
+ "
84
+ />
85
+ <em-date
86
+ v-else-if="
87
+ x.date ||
88
+ x.type == 'date' ||
89
+ x.type == 'year' ||
90
+ x.type == 'year-month' ||
91
+ x.type == 'month-day' ||
92
+ x.type == 'time' ||
93
+ x.type == 'datetimeSecond' ||
94
+ x.type == 'datetime' ||
95
+ x.type == 'datehour'
96
+ "
97
+ ref="date"
98
+ v-bind="{ ...$attrs, ...x }"
99
+ v-on="{ ...x.events }"
100
+ v-model="model[x.name]"
101
+ :label-position="x.labelPosition || labelPosition"
102
+ :disabled="x.disabled || disabled"
103
+ :readonly="x.readonly || readonly"
104
+ :joinStr="x.joinStr || ''"
105
+ @confirm="
106
+ (value, timePeriod) => {
107
+ handleChange(x.name, value, timePeriod);
108
+ }
109
+ "
110
+ />
111
+ <em-input
112
+ v-else-if="x.type === 'radio'"
113
+ ref="radio"
114
+ v-bind="{ ...$attrs, ...x }"
115
+ :label-position="x.labelPosition || labelPosition"
116
+ >
117
+ <template slot="input">
118
+ <em-radio-group
119
+ v-bind="{ ...$attrs, ...x }"
120
+ v-on="{ ...x.events }"
121
+ v-model="model[x.name]"
122
+ :disabled="x.disabled || disabled || x.readonly || readonly"
123
+ :data="x.data"
124
+ @change="
125
+ (value) => {
126
+ handleChange(x.name, value);
127
+ }
128
+ "
129
+ />
130
+ </template>
131
+ </em-input>
132
+ <em-input
133
+ v-else-if="x.type === 'checkbox'"
134
+ ref="checkbox"
135
+ v-bind="{ ...$attrs, ...x }"
136
+ :label-position="x.labelPosition || labelPosition"
137
+ >
138
+ <template slot="input">
139
+ <em-checkbox-group
140
+ v-bind="{ ...$attrs, ...x }"
141
+ v-on="{ ...x.events }"
142
+ v-model="model[x.name]"
143
+ :disabled="x.disabled || disabled || x.readonly || readonly"
144
+ @change="
145
+ (value) => {
146
+ handleChange(x.name, value);
147
+ }
148
+ "
149
+ />
150
+ </template>
151
+ </em-input>
152
+ <em-input
153
+ v-else-if="x.type === 'switch'"
154
+ ref="switch"
155
+ v-bind="{ ...$attrs, ...x }"
156
+ :label-position="x.labelPosition || labelPosition"
157
+ >
158
+ <template slot="input">
159
+ <em-switch
160
+ v-bind="{ ...$attrs, ...x }"
161
+ v-model="model[x.name]"
162
+ v-on="{ ...x.events }"
163
+ :disabled="x.disabled || disabled || x.readonly || readonly"
164
+ @change="
165
+ (value) => {
166
+ handleChange(x.name, value);
167
+ }
168
+ "
169
+ />
170
+ </template>
171
+ </em-input>
172
+ <em-selector
173
+ v-else-if="x.type == 'selector'"
174
+ ref="selector"
175
+ v-bind="{ ...$attrs, ...x }"
176
+ v-model="model[x.name]"
177
+ v-on="{ ...x.events }"
178
+ :label="x.label"
179
+ :label-position="x.labelPosition || labelPosition"
180
+ :disabled="x.disabled || disabled || x.readonly || readonly"
181
+ @change="
182
+ (value) => {
183
+ handleChange(x.name, value);
184
+ }
185
+ "
186
+ />
187
+ <em-table
188
+ v-else-if="x.type == 'table'"
189
+ class="em-form-table"
190
+ ref="emFormTable"
191
+ v-bind="{ ...$attrs, ...x }"
192
+ :data="model[x.name]"
193
+ :thead="x.tHead"
194
+ :style="`margin:${x.margin || 10}px 0px`"
195
+ isForm
196
+ :form="
197
+ !x.disabled && !disabled && !x.readonly && !readonly && x.form
198
+ "
199
+ v-on="{ ...x.events }"
200
+ @btn-click="handleBtnClick"
201
+ />
202
+ <van-cell
203
+ v-else-if="x.type === 'component'"
204
+ :title="x.label"
205
+ :name="x.name"
206
+ >
207
+ <component
208
+ v-model="model[x.name]"
209
+ :is="x.is || x.tag"
210
+ v-bind="{ ...$attrs, ...x }"
211
+ v-on="x.events"
212
+ ></component>
213
+ </van-cell>
214
+ </div>
215
+ </em-tab>
216
+ </em-tabs>
217
+ <em-input
218
+ v-if="
219
+ item.type === 'text' ||
220
+ item.type === 'textarea' ||
221
+ item.type == 'number' ||
222
+ item.type == 'digit' ||
223
+ item.type == 'password' ||
224
+ item.type == 'tel'
225
+ "
226
+ class="em-table-input"
227
+ v-bind="{ ...$attrs, ...item }"
228
+ v-on="{ ...item.events }"
229
+ :label-position="item.labelPosition || labelPosition"
230
+ :disabled="item.disabled || disabled"
231
+ :readonly="item.readonly || readonly"
232
+ ref="input"
233
+ v-model="model[item.name]"
234
+ :label="item.label.text || item.label"
235
+ @input="handleChange(item.name, model[item.name])"
236
+ />
237
+ <!-- <em-input
238
+ v-if="
239
+ (item.type === 'text' ||
240
+ item.type === 'textarea' ||
241
+ item.type == 'number' ||
242
+ item.type == 'digit' ||
243
+ item.type == 'password' ||
244
+ item.type == 'tel') && item.events
245
+ "
246
+ class="em-table-input"
247
+ v-bind="{ ...$attrs, ...item }"
248
+
249
+ :label-position="item.labelPosition || labelPosition"
250
+ :disabled="item.disabled || disabled"
251
+ :readonly="item.readonly || readonly"
252
+ ref="input"
253
+ v-model="model[item.name]"
254
+ :label="item.label.text || item.label"
255
+ @input="handleChange(item.name, model[item.name])"
256
+ /> -->
257
+ <em-picker
258
+ v-if="item.type === 'select'"
259
+ v-bind="{ ...$attrs, ...item }"
260
+ v-on="{ ...item.events }"
261
+ ref="select"
262
+ :label-position="item.labelPosition || labelPosition"
263
+ :disabled="item.disabled || disabled"
264
+ :readonly="item.readonly || readonly"
265
+ v-model="model[item.name]"
266
+ :columns="item.data || []"
267
+ @confirm="
268
+ (value) => {
269
+ handleChange(item.name, value);
270
+ }
271
+ "
272
+ />
273
+ <em-date
274
+ v-else-if="
275
+ item.date ||
276
+ item.type == 'date' ||
277
+ item.type == 'year' ||
278
+ item.type == 'year-month' ||
279
+ item.type == 'month-day' ||
280
+ item.type == 'time' ||
281
+ item.type == 'datetimeSecond' ||
282
+ item.type == 'datetime' ||
283
+ item.type == 'datehour'
284
+ "
285
+ ref="date"
286
+ v-bind="{ ...$attrs, ...item }"
287
+ v-on="{ ...item.events }"
288
+ v-model="model[item.name]"
289
+ :label-position="item.labelPosition || labelPosition"
290
+ :disabled="item.disabled || disabled"
291
+ :readonly="item.readonly || readonly"
292
+ :joinStr="item.joinStr || ''"
293
+ @confirm="
294
+ (value, timePeriod) => {
295
+ handleChange(item.name, value, timePeriod);
296
+ }
297
+ "
298
+ />
299
+ <em-input
300
+ v-else-if="item.type === 'radio'"
301
+ ref="radio"
302
+ v-bind="{ ...$attrs, ...item }"
303
+ :label-position="item.labelPosition || labelPosition"
304
+ >
305
+ <template slot="input">
306
+ <em-radio-group
307
+ v-bind="{ ...$attrs, ...item }"
308
+ v-on="{ ...item.events }"
309
+ v-model="model[item.name]"
310
+ :disabled="item.disabled || disabled || item.readonly || readonly"
311
+ :data="item.data"
312
+ @change="
313
+ (value) => {
314
+ handleChange(item.name, value);
315
+ }
316
+ "
317
+ />
318
+ </template>
319
+ </em-input>
320
+ <em-input
321
+ v-else-if="item.type === 'checkbox'"
322
+ ref="checkbox"
323
+ v-bind="{ ...$attrs, ...item }"
324
+ :label-position="item.labelPosition || labelPosition"
325
+ >
326
+ <template slot="input">
327
+ <em-checkbox-group
328
+ v-bind="{ ...$attrs, ...item }"
329
+ v-on="{ ...item.events }"
330
+ v-model="model[item.name]"
331
+ :disabled="item.disabled || disabled || item.readonly || readonly"
332
+ @change="
333
+ (value) => {
334
+ handleChange(item.name, value);
335
+ }
336
+ "
337
+ />
338
+ </template>
339
+ </em-input>
340
+ <em-input
341
+ v-else-if="item.type === 'switch'"
342
+ ref="switch"
343
+ v-bind="{ ...$attrs, ...item }"
344
+ :label-position="item.labelPosition || labelPosition"
345
+ >
346
+ <template slot="input">
347
+ <em-switch
348
+ v-bind="{ ...$attrs, ...item }"
349
+ v-model="model[item.name]"
350
+ v-on="{ ...item.events }"
351
+ :disabled="item.disabled || disabled || item.readonly || readonly"
352
+ @change="
353
+ (value) => {
354
+ handleChange(item.name, value);
355
+ }
356
+ "
357
+ />
358
+ </template>
359
+ </em-input>
360
+ <em-selector
361
+ v-else-if="item.type == 'selector'"
362
+ ref="selector"
363
+ v-bind="{ ...$attrs, ...item }"
364
+ v-model="model[item.name]"
365
+ v-on="{ ...item.events }"
366
+ :label="item.label"
367
+ :label-position="item.labelPosition || labelPosition"
368
+ :disabled="item.disabled || disabled || item.readonly || readonly"
369
+ @change="
370
+ (value) => {
371
+ handleChange(item.name, value);
372
+ }
373
+ "
374
+ />
375
+ <em-table
376
+ v-else-if="item.type == 'table'"
377
+ class="em-form-table"
378
+ ref="emFormTable"
379
+ v-bind="{ ...$attrs, ...item }"
380
+ :data="model[item.name]"
381
+ :thead="item.tHead"
382
+ :style="`margin:${item.margin || 10}px 0px`"
383
+ isForm
384
+ :form="
385
+ !item.disabled &&
386
+ !disabled &&
387
+ !item.readonly &&
388
+ !readonly &&
389
+ item.form
390
+ "
391
+ v-on="{ ...item.events }"
392
+ @btn-click="handleBtnClick"
393
+ />
394
+ <van-cell
395
+ v-else-if="item.type === 'component'"
396
+ :title="item.label"
397
+ :name="item.name"
398
+ >
399
+ <component
400
+ v-model="model[item.name]"
401
+ :is="item.is || item.tag"
402
+ v-bind="{ ...$attrs, ...item }"
403
+ v-on="item.events"
404
+ ></component>
405
+ </van-cell>
406
+
407
+ <!-- @btn-click="handleBtnClick($event,item)"
408
+ @selection-change="handleSelectionChange($event,item)"
409
+ @edit="handleEdit($event,item)" -->
410
+ </div>
411
+ </div>
412
+
413
+ <div
414
+ :style="`margin: 16px;text-align:${position}`"
415
+ v-if="showBtn && !disabled && !readonly"
416
+ >
417
+ <em-button
418
+ round
419
+ block
420
+ type="primary"
421
+ v-if="btnList.length == 0"
422
+ native-type="submit"
423
+ >提交</em-button
424
+ >
425
+ <em-button
426
+ v-show="btnList.length != 0"
427
+ v-for="item in btnList[0].contents"
428
+ :key="item.text"
429
+ v-bind="item"
430
+ :native-type="item.nativeType ? item.nativeType : 'button'"
431
+ @click="handleClick(item)"
432
+ >{{ item.text }}</em-button
433
+ >
434
+ </div>
435
+ </van-form>
436
+ </template>
437
+
438
+ <script>
439
+ export default {
440
+ name: 'EmForm',
441
+ props: {
442
+ contents: {
443
+ type: Array,
444
+ default() {
445
+ return [];
446
+ }
447
+ },
448
+ model: {
449
+ type: Object,
450
+ default: () => {}
451
+ },
452
+ position: {
453
+ type: String,
454
+ default: 'center'
455
+ },
456
+ showBtn: {
457
+ type: Boolean,
458
+ default: true
459
+ },
460
+ disabled: {
461
+ type: Boolean,
462
+ default: false
463
+ },
464
+ readonly: {
465
+ type: Boolean,
466
+ default: false
467
+ },
468
+ labelPosition: {
469
+ type: String,
470
+ default: 'left'
471
+ }
472
+ },
473
+ computed: {
474
+ btnList() {
475
+ return this.contents.filter((x) => x.type === 'submit');
476
+ },
477
+ newContent: {
478
+ get() {
479
+ let tableList = this.contents.filter((x) => x.type == 'table');
480
+ if (tableList.length > 0) {
481
+ tableList.map((x) => {
482
+ x.tHead.map((z) => {
483
+ if (z.type == 'handle' && z.events) {
484
+ z.events.map((y) => {
485
+ y['native-type'] = 'button';
486
+ });
487
+ }
488
+ });
489
+ });
490
+ }
491
+ return this.contents;
492
+ },
493
+ set(val) {
494
+ return val;
495
+ }
496
+ }
497
+ },
498
+ mounted() {
499
+ // this.setBtnType()
500
+ },
501
+ methods: {
502
+ handleFailed(values) {
503
+ this.$refs.emFormTable.map((item) => {
504
+ item.validate();
505
+ });
506
+ this.$emit('failed', { errors: values.errors, values: this.model });
507
+ },
508
+ handleSubmit() {
509
+ let errForm = false;
510
+ if (this.$refs.emFormTable) {
511
+ this.$refs.emFormTable.map((item) => {
512
+ if (!item.validate()) {
513
+ errForm = true;
514
+ }
515
+ });
516
+ }
517
+ if (errForm) {
518
+ this.$emit('failed', { errors: [], values: this.model });
519
+ } else {
520
+ this.$emit('submit', this.model);
521
+ }
522
+ },
523
+ handleChange(key, value, timePeriod) {
524
+ this.$emit('change', key, value, timePeriod);
525
+ },
526
+ handleBtnClick(val) {
527
+ this.$emit('table-btn-click', val);
528
+ },
529
+ validate(name) {
530
+ return this.$refs.emForm.validate(name);
531
+ },
532
+ submit() {
533
+ this.$refs.emForm.submit();
534
+ },
535
+ resetValidation(name) {
536
+ this.$refs.emForm.resetValidation(name);
537
+ },
538
+ scrollToField(name, alignToTop) {
539
+ this.$refs.emForm.scrollToField(name, alignToTop);
540
+ },
541
+ handleClick(val) {
542
+ this.$emit('click', { values: this.model, btn: val });
543
+ }
544
+ }
545
+ };
546
+ </script>
547
+
548
+ <style></style>