eoss-ui 0.6.41 → 0.6.42

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 (234) hide show
  1. package/lib/eoss-ui.common.js +1158 -1047
  2. package/lib/flow-list.js +123 -112
  3. package/lib/flow.js +882 -782
  4. package/lib/index.js +1 -1
  5. package/lib/main.js +132 -132
  6. package/lib/qr-code.js +13 -13
  7. package/lib/theme-chalk/flow.css +1 -1
  8. package/lib/theme-chalk/index.css +1 -1
  9. package/package.json +159 -159
  10. package/packages/button/index.js +5 -5
  11. package/packages/button/src/main.vue +418 -418
  12. package/packages/button-group/index.js +5 -5
  13. package/packages/button-group/src/main.vue +298 -298
  14. package/packages/calendar/index.js +5 -5
  15. package/packages/card/index.js +5 -5
  16. package/packages/card/src/main.vue +156 -156
  17. package/packages/cascader/index.js +5 -5
  18. package/packages/cascader/src/main.vue +168 -168
  19. package/packages/checkbox-group/index.js +5 -5
  20. package/packages/checkbox-group/src/main.vue +333 -333
  21. package/packages/clients/index.js +5 -5
  22. package/packages/clients/src/main.vue +144 -144
  23. package/packages/data-table/index.js +5 -5
  24. package/packages/data-table/src/children.vue +39 -39
  25. package/packages/data-table/src/column.vue +989 -989
  26. package/packages/data-table/src/main.vue +1822 -1822
  27. package/packages/data-table/src/sizer.vue +195 -195
  28. package/packages/data-table-form/index.js +5 -5
  29. package/packages/data-table-form/src/checkbox.vue +101 -101
  30. package/packages/data-table-form/src/colgroup.vue +17 -17
  31. package/packages/data-table-form/src/main.vue +181 -181
  32. package/packages/data-table-form/src/radio.vue +65 -65
  33. package/packages/data-table-form/src/table.vue +233 -233
  34. package/packages/data-table-form/src/tbody.vue +336 -336
  35. package/packages/data-table-form/src/thead.vue +68 -68
  36. package/packages/date-picker/index.js +5 -5
  37. package/packages/date-picker/src/main.vue +236 -236
  38. package/packages/dialog/index.js +5 -5
  39. package/packages/enterprise/index.js +5 -5
  40. package/packages/enterprise/src/main.vue +66 -66
  41. package/packages/error-page/index.js +5 -5
  42. package/packages/error-page/src/main.vue +44 -44
  43. package/packages/flow/index.js +5 -5
  44. package/packages/flow/src/component/CommonOpinions.vue +345 -345
  45. package/packages/flow/src/component/CustomPreset.vue +322 -322
  46. package/packages/flow/src/component/FileList.vue +99 -99
  47. package/packages/flow/src/component/Preset.vue +255 -255
  48. package/packages/flow/src/component/SendMsg.vue +229 -229
  49. package/packages/flow/src/component/TimeLimit.vue +190 -190
  50. package/packages/flow/src/component/taskUnionExamine.vue +611 -611
  51. package/packages/flow/src/form.vue +121 -121
  52. package/packages/flow/src/freeStartFlow.vue +2843 -2843
  53. package/packages/flow/src/main.vue +2952 -2862
  54. package/packages/flow/src/processForm.vue +1018 -1018
  55. package/packages/flow/src/processReject.vue +293 -293
  56. package/packages/flow/src/reset.vue +899 -899
  57. package/packages/flow/src/startTaskRead.vue +596 -596
  58. package/packages/flow/src/table.vue +58 -58
  59. package/packages/flow-group/index.js +5 -5
  60. package/packages/flow-group/src/main.vue +688 -688
  61. package/packages/flow-list/index.js +5 -5
  62. package/packages/flow-list/src/main.vue +1183 -1172
  63. package/packages/form/index.js +5 -5
  64. package/packages/form/src/main.vue +3584 -3584
  65. package/packages/form/src/table.vue +1420 -1420
  66. package/packages/handle-user/index.js +5 -5
  67. package/packages/handle-user/src/main.vue +138 -138
  68. package/packages/handler/index.js +5 -5
  69. package/packages/handler/src/main.vue +474 -474
  70. package/packages/icon/index.js +5 -5
  71. package/packages/icon/src/main.vue +101 -101
  72. package/packages/icons/index.js +5 -5
  73. package/packages/icons/src/main.vue +81 -81
  74. package/packages/input/index.js +5 -5
  75. package/packages/input/src/main.vue +356 -356
  76. package/packages/input-number/index.js +5 -5
  77. package/packages/input-number/src/main.vue +106 -106
  78. package/packages/label/index.js +5 -5
  79. package/packages/label/src/main.vue +457 -457
  80. package/packages/layout/index.js +5 -5
  81. package/packages/layout/src/item.vue +152 -152
  82. package/packages/layout/src/main.vue +31 -31
  83. package/packages/login/index.js +5 -5
  84. package/packages/login/src/main.vue +1935 -1935
  85. package/packages/login/src/resetPassword.vue +562 -562
  86. package/packages/main/index.js +5 -5
  87. package/packages/main/src/default/message.vue +249 -249
  88. package/packages/main/src/default/notice.vue +157 -157
  89. package/packages/main/src/default/userinfo.vue +505 -505
  90. package/packages/main/src/public/online.vue +89 -89
  91. package/packages/main/src/public/search.vue +461 -461
  92. package/packages/main/src/public/settings.vue +221 -221
  93. package/packages/main/src/simplicity/apps.vue +388 -388
  94. package/packages/main/src/simplicity/avatar.vue +82 -82
  95. package/packages/main/src/simplicity/handler.vue +259 -259
  96. package/packages/main/src/simplicity/index.vue +2047 -2047
  97. package/packages/main/src/simplicity/lists.vue +84 -84
  98. package/packages/main/src/simplicity/menu-list.vue +128 -128
  99. package/packages/main/src/simplicity/message.vue +259 -259
  100. package/packages/main/src/simplicity/notice.vue +190 -190
  101. package/packages/main/src/simplicity/router-page.vue +45 -45
  102. package/packages/main/src/simplicity/sub-menu.vue +241 -241
  103. package/packages/main/src/simplicity/user.vue +257 -257
  104. package/packages/main/src/simplicity/userinfo.vue +312 -312
  105. package/packages/menu/index.js +5 -5
  106. package/packages/menu/src/main.vue +536 -536
  107. package/packages/nav/index.js +5 -5
  108. package/packages/nav/src/main.vue +402 -402
  109. package/packages/notify/index.js +5 -5
  110. package/packages/notify/src/main.vue +538 -538
  111. package/packages/page/index.js +5 -5
  112. package/packages/page/src/main.vue +167 -167
  113. package/packages/pagination/index.js +5 -5
  114. package/packages/pagination/src/main.vue +96 -96
  115. package/packages/player/index.js +5 -5
  116. package/packages/player/src/main.vue +194 -194
  117. package/packages/qr-code/index.js +5 -5
  118. package/packages/qr-code/src/main.vue +170 -170
  119. package/packages/radio-group/index.js +6 -6
  120. package/packages/radio-group/src/main.vue +319 -319
  121. package/packages/retrial-auth/index.js +5 -5
  122. package/packages/retrial-auth/src/main.vue +280 -280
  123. package/packages/select/index.js +5 -5
  124. package/packages/select/src/main.vue +775 -775
  125. package/packages/select-ganged/index.js +5 -5
  126. package/packages/select-ganged/src/main.vue +724 -724
  127. package/packages/selector/index.js +5 -5
  128. package/packages/selector/src/main.vue +689 -689
  129. package/packages/selector-panel/index.js +5 -5
  130. package/packages/selector-panel/src/main.vue +1027 -1027
  131. package/packages/selector-panel/src/selection.vue +177 -177
  132. package/packages/selector-panel/src/tree.vue +129 -129
  133. package/packages/sizer/index.js +5 -5
  134. package/packages/sizer/src/main.vue +254 -254
  135. package/packages/steps/index.js +5 -5
  136. package/packages/steps/src/main.vue +181 -181
  137. package/packages/switch/index.js +5 -5
  138. package/packages/switch/src/main.vue +154 -154
  139. package/packages/table-form/index.js +5 -5
  140. package/packages/tabs/index.js +5 -5
  141. package/packages/tabs/src/main.vue +788 -788
  142. package/packages/tabs-panel/index.js +5 -5
  143. package/packages/tabs-panel/src/main.vue +29 -29
  144. package/packages/theme-chalk/lib/flow.css +1 -1
  145. package/packages/theme-chalk/lib/index.css +1 -1
  146. package/packages/theme-chalk/src/base.scss +260 -260
  147. package/packages/theme-chalk/src/button-group.scss +175 -175
  148. package/packages/theme-chalk/src/button.scss +24 -24
  149. package/packages/theme-chalk/src/calendar.scss +113 -113
  150. package/packages/theme-chalk/src/card.scss +99 -99
  151. package/packages/theme-chalk/src/checkbox-group.scss +8 -8
  152. package/packages/theme-chalk/src/clients.scss +87 -87
  153. package/packages/theme-chalk/src/data-table-form.scss +67 -67
  154. package/packages/theme-chalk/src/data-table.scss +293 -293
  155. package/packages/theme-chalk/src/date-picker.scss +7 -7
  156. package/packages/theme-chalk/src/dialog.scss +77 -77
  157. package/packages/theme-chalk/src/enterprise.scss +5 -5
  158. package/packages/theme-chalk/src/error-page.scss +18 -18
  159. package/packages/theme-chalk/src/flow-group.scss +110 -110
  160. package/packages/theme-chalk/src/flow-list.scss +36 -36
  161. package/packages/theme-chalk/src/flow.scss +318 -310
  162. package/packages/theme-chalk/src/form.scss +496 -496
  163. package/packages/theme-chalk/src/handle-user.scss +40 -40
  164. package/packages/theme-chalk/src/handler.scss +143 -143
  165. package/packages/theme-chalk/src/icon.scss +1789 -1789
  166. package/packages/theme-chalk/src/icons.scss +99 -99
  167. package/packages/theme-chalk/src/input.scss +9 -9
  168. package/packages/theme-chalk/src/label.scss +24 -24
  169. package/packages/theme-chalk/src/layout.scss +46 -46
  170. package/packages/theme-chalk/src/login.scss +947 -947
  171. package/packages/theme-chalk/src/main.scss +639 -639
  172. package/packages/theme-chalk/src/menu.scss +222 -222
  173. package/packages/theme-chalk/src/mixins/color.scss +117 -117
  174. package/packages/theme-chalk/src/nav.scss +125 -125
  175. package/packages/theme-chalk/src/page.scss +3 -3
  176. package/packages/theme-chalk/src/pagination.scss +29 -29
  177. package/packages/theme-chalk/src/player.scss +9 -9
  178. package/packages/theme-chalk/src/qr-code.scss +17 -17
  179. package/packages/theme-chalk/src/radio-group.scss +9 -9
  180. package/packages/theme-chalk/src/retrial-auth.scss +38 -38
  181. package/packages/theme-chalk/src/select-ganged.scss +8 -8
  182. package/packages/theme-chalk/src/select.scss +8 -8
  183. package/packages/theme-chalk/src/selector-panel.scss +204 -204
  184. package/packages/theme-chalk/src/selector.scss +91 -91
  185. package/packages/theme-chalk/src/simplicity.scss +1262 -1262
  186. package/packages/theme-chalk/src/sizer.scss +36 -36
  187. package/packages/theme-chalk/src/steps.scss +88 -88
  188. package/packages/theme-chalk/src/switch.scss +3 -3
  189. package/packages/theme-chalk/src/table-form.scss +1 -1
  190. package/packages/theme-chalk/src/tabs.scss +87 -87
  191. package/packages/theme-chalk/src/tips.scss +7 -7
  192. package/packages/theme-chalk/src/toolbar.scss +179 -179
  193. package/packages/theme-chalk/src/tree-group.scss +72 -72
  194. package/packages/theme-chalk/src/tree.scss +165 -165
  195. package/packages/theme-chalk/src/upload.scss +167 -167
  196. package/packages/theme-chalk/src/wxlogin.scss +3 -3
  197. package/packages/tips/index.js +5 -5
  198. package/packages/tips/src/main.vue +141 -141
  199. package/packages/toolbar/index.js +5 -5
  200. package/packages/toolbar/src/main.vue +430 -430
  201. package/packages/tree/index.js +5 -5
  202. package/packages/tree-group/index.js +5 -5
  203. package/packages/upload/index.js +5 -5
  204. package/packages/upload/src/main.vue +1334 -1334
  205. package/packages/upload/src/picture.js +15 -15
  206. package/packages/wujie/index.js +5 -5
  207. package/packages/wujie/src/main.vue +145 -145
  208. package/packages/wxlogin/index.js +5 -5
  209. package/packages/wxlogin/src/main.vue +128 -128
  210. package/src/config/api.js +248 -248
  211. package/src/config/image.js +2 -2
  212. package/src/index.js +157 -157
  213. package/src/utils/bus.js +3 -3
  214. package/src/utils/date-util.js +312 -312
  215. package/src/utils/http.js +50 -50
  216. package/src/utils/rules.js +18 -18
  217. package/src/utils/store.js +21 -21
  218. package/src/utils/webSocket.js +107 -107
  219. package/packages/.DS_Store +0 -0
  220. package/packages/data-table/.DS_Store +0 -0
  221. package/packages/data-table-form/.DS_Store +0 -0
  222. package/packages/error-page/.DS_Store +0 -0
  223. package/packages/flow/.DS_Store +0 -0
  224. package/packages/form/.DS_Store +0 -0
  225. package/packages/login/.DS_Store +0 -0
  226. package/packages/main/.DS_Store +0 -0
  227. package/packages/main/src/.DS_Store +0 -0
  228. package/packages/selector/.DS_Store +0 -0
  229. package/packages/selector-panel/.DS_Store +0 -0
  230. package/packages/sizer/.DS_Store +0 -0
  231. package/packages/tabs/.DS_Store +0 -0
  232. package/packages/theme-chalk/src/.DS_Store +0 -0
  233. package/packages/upload/.DS_Store +0 -0
  234. package/src/.DS_Store +0 -0
@@ -1,356 +1,356 @@
1
- <script>
2
- import { debounce } from 'throttle-debounce';
3
- import util from 'eoss-ui/src/utils/util';
4
- import rules from 'eoss-ui/src/utils/rules.js';
5
- export default {
6
- name: 'EsInput',
7
- componentName: 'EsInput',
8
- inheritAttrs: false,
9
- props: {
10
- value: [String, Number],
11
- rules: [Object, Array],
12
- method: {
13
- type: String,
14
- default: 'get'
15
- },
16
- data: {
17
- type: Array,
18
- default() {
19
- return [];
20
- }
21
- },
22
- label: [Object, String],
23
- url: {
24
- type: String,
25
- default: ''
26
- },
27
- param: {
28
- type: Object,
29
- default() {
30
- return {};
31
- }
32
- },
33
- fetchSuggestions: Function,
34
- focusShow: {
35
- type: Boolean,
36
- default: false
37
- },
38
- display: {
39
- type: Boolean,
40
- default: true
41
- },
42
- readonly: Boolean,
43
- plain: Boolean,
44
- text: [String, Number],
45
- scope: {},
46
- exclude: Boolean
47
- },
48
- watch: {
49
- data: {
50
- immediate: true,
51
- deep: true,
52
- handler(val) {
53
- this.results = val;
54
- }
55
- }
56
- },
57
- data() {
58
- return {
59
- results: []
60
- };
61
- },
62
- computed: {
63
- showLimit() {
64
- if (this.showWordLimit === false) {
65
- return false;
66
- }
67
- if (this.showWordLimit === true) {
68
- return true;
69
- }
70
- if (this.count) {
71
- return true;
72
- }
73
- return false;
74
- },
75
- maxInput() {
76
- if (typeof this.count === 'number') {
77
- return this.count;
78
- }
79
- return this.maxlength;
80
- },
81
- model: {
82
- get() {
83
- return this.value;
84
- },
85
- set(val) {
86
- return val;
87
- }
88
- },
89
- rule() {
90
- if (this.rules) {
91
- if (Array.isArray(this.rules)) {
92
- return this.rules.map((item) => {
93
- if (rules[item.type]) {
94
- return {
95
- pattern: rules[item.type]['pattern'],
96
- message: item.message
97
- ? item.message
98
- : rules[item.type]['message'],
99
- trigger: item.trigger
100
- ? item.trigger
101
- : this.fetchSuggestions || this.url || this.data.length > 0
102
- ? 'change'
103
- : 'blur'
104
- };
105
- }
106
- return item;
107
- });
108
- }
109
- if (rules[this.rules.type]) {
110
- return {
111
- pattern: rules[this.rules.type]['pattern'],
112
- message: this.rules.message
113
- ? this.rules.message
114
- : rules[this.rules.type]['message'],
115
- trigger: this.rules.trigger
116
- ? this.rules.trigger
117
- : this.fetchSuggestions || this.url || this.data.length > 0
118
- ? 'change'
119
- : 'blur'
120
- };
121
- }
122
- return this.rules;
123
- }
124
- return undefined;
125
- }
126
- },
127
- beforeCreate() {
128
- this.getData = debounce(500, (query, callback, isChange) => {
129
- this.getDatas(query, callback, isChange);
130
- });
131
- },
132
- created() {},
133
- mounted() {},
134
- methods: {
135
- getDatas(query, callback, isChange) {
136
- if (typeof this.url && this.results.length === 0) {
137
- util
138
- .ajax({
139
- method: this.method,
140
- url: this.url,
141
- data: this.param,
142
- params: this.param
143
- })
144
- .then((res) => {
145
- if (res.rCode === 0) {
146
- this.results = JSON.parse(JSON.stringify(res.results));
147
- let results = query
148
- ? this.results.filter(this.searchFilter(query))
149
- : this.results;
150
- callback(results);
151
- }
152
- })
153
- .catch((err) => {
154
- if (err.message && err.message !== 'canceled') {
155
- this.$message.error(err.message);
156
- }
157
- });
158
- } else {
159
- let results = query
160
- ? this.results.filter(this.searchFilter(query, isChange))
161
- : this.results;
162
- callback(results);
163
- }
164
- },
165
- searchFilter(query, isChange) {
166
- return (state) => {
167
- if (isChange) {
168
- return state.value.indexOf(query) > -1;
169
- } else {
170
- if (this.exclude) {
171
- return state.value !== query;
172
- } else {
173
- return state.value === query;
174
- }
175
- }
176
- };
177
- },
178
- renderd(doms, h, type) {
179
- if (typeof this.$attrs[type] === 'boolean') {
180
- if (this.$attrs.render) {
181
- if (typeof this.$attrs.render == 'string') {
182
- try {
183
- doms.push(
184
- h(
185
- 'template',
186
- { slot: type },
187
- util.toFunction(this.$attrs.render)(h, this)
188
- )
189
- );
190
- } catch (error) {
191
- throw error;
192
- }
193
- } else {
194
- doms.push(
195
- h('template', { slot: type }, this.$attrs.render(h, this))
196
- );
197
- }
198
- }
199
- } else if (typeof this.$attrs[type] === 'object') {
200
- doms.push(
201
- h(
202
- 'es-button',
203
- {
204
- slot: type,
205
- class: ['el-primeval', this.$attrs[type].class],
206
- props: {
207
- ...this.$attrs[type].props,
208
- size: this.$attrs[type].size
209
- ? this.$attrs[type].size
210
- : type === 'prefix' || type === 'suffix'
211
- ? 'small'
212
- : '',
213
- type: 'primary'
214
- },
215
- attrs: this.$attrs[type].attrs,
216
- domProps: this.$attrs[type].icon
217
- ? { innerHTML: this.$attrs[type].icon }
218
- : {},
219
- on: {
220
- click: () => {
221
- this.$attrs[type].click &&
222
- this.$attrs[type].click(this, this.model, this.scope);
223
- this.$attrs[type].event &&
224
- this.$attrs[type].event(this, this.model, this.scope);
225
- }
226
- }
227
- },
228
- [this.$attrs[type].text]
229
- )
230
- );
231
- } else {
232
- doms.push(h('template', { slot: type }, [this.$attrs[type]]));
233
- }
234
- }
235
- },
236
- render(h) {
237
- if (!this.hide) {
238
- let cls = [];
239
- let doms = [];
240
- if (this.readonly) {
241
- let content = this.model ? this.model : this.text;
242
- if (this.$attrs.disabled && this.$attrs.disabledTips) {
243
- content =
244
- typeof this.$attrs.disabledTips == 'string'
245
- ? this.$attrs.disabledTips
246
- : this.$attrs.placeholder;
247
- }
248
- if (
249
- this.$attrs.type === 'textarea' &&
250
- !this.$attrs.disabled &&
251
- !this.$attrs.disabledTips
252
- ) {
253
- if (this.model) {
254
- content = this.model.replace(RegExp('\\n', 'g'), '<br/>');
255
- content = content.replace(RegExp(' ', 'g'), '&nbsp;');
256
- }
257
- return h('div', {
258
- class: ['es-textarea__inner ', { 'es-plain': this.plain }],
259
- domProps: {
260
- innerHTML: content
261
- }
262
- });
263
- } else {
264
- return h(
265
- 'div',
266
- {
267
- class: [
268
- 'es-input__inner',
269
- {
270
- 'es-plain': this.plain,
271
- 'es-disabled-tips':
272
- this.$attrs.disabled && this.$attrs.disabledTips
273
- }
274
- ]
275
- },
276
- [content]
277
- );
278
- }
279
- }
280
- let { prefix, suffix, prepend, append, ...attrs } = this.$attrs;
281
- if (this.$slots.prefix) {
282
- doms.push(h('template', { slot: 'prefix' }, this.$slots.prefix));
283
- } else if (prefix) {
284
- this.renderd(doms, h, 'prefix');
285
- cls.push('es-input-button-prefix');
286
- }
287
- if (this.$slots.suffix) {
288
- doms.push(h('template', { slot: 'suffix' }, this.$slots.suffix));
289
- } else if (suffix) {
290
- this.renderd(doms, h, 'suffix');
291
- cls.push('es-input-button-suffix');
292
- }
293
- if (this.$slots.prepend) {
294
- doms.push(h('template', { slot: 'prepend' }, this.$slots.prepend));
295
- } else if (prepend) {
296
- this.renderd(doms, h, 'prepend');
297
- }
298
- if (this.$slots.append) {
299
- doms.push(h('template', { slot: 'append' }, this.$slots.append));
300
- } else if (append) {
301
- this.renderd(doms, h, 'append');
302
- }
303
- if (this.fetchSuggestions || this.url || this.data.length > 0) {
304
- return h(
305
- 'el-autocomplete',
306
- {
307
- show: this.display,
308
- props: {
309
- rules: this.rule
310
- },
311
- attrs: {
312
- ...attrs,
313
- fetchSuggestions: this.fetchSuggestions
314
- ? this.fetchSuggestions
315
- : this.getData,
316
- triggerOnFocus: this.focusShow,
317
- value: this.model
318
- },
319
- on: this.$listeners
320
- },
321
- doms
322
- );
323
- }
324
- return h(
325
- 'el-input',
326
- {
327
- class: cls,
328
- props: {
329
- label: this.label
330
- ? typeof this.label === 'string'
331
- ? this.label
332
- : this.label.text
333
- : '',
334
- rules: this.rule,
335
- value: this.model
336
- },
337
- domProps: {
338
- value: this.model
339
- },
340
- attrs: { ...attrs },
341
- on: { ...this.$listeners },
342
- directives: [
343
- {
344
- name: 'show',
345
- value: this.display
346
- }
347
- ]
348
- },
349
- doms
350
- );
351
- } else {
352
- return '';
353
- }
354
- }
355
- };
356
- </script>
1
+ <script>
2
+ import { debounce } from 'throttle-debounce';
3
+ import util from 'eoss-ui/src/utils/util';
4
+ import rules from 'eoss-ui/src/utils/rules.js';
5
+ export default {
6
+ name: 'EsInput',
7
+ componentName: 'EsInput',
8
+ inheritAttrs: false,
9
+ props: {
10
+ value: [String, Number],
11
+ rules: [Object, Array],
12
+ method: {
13
+ type: String,
14
+ default: 'get'
15
+ },
16
+ data: {
17
+ type: Array,
18
+ default() {
19
+ return [];
20
+ }
21
+ },
22
+ label: [Object, String],
23
+ url: {
24
+ type: String,
25
+ default: ''
26
+ },
27
+ param: {
28
+ type: Object,
29
+ default() {
30
+ return {};
31
+ }
32
+ },
33
+ fetchSuggestions: Function,
34
+ focusShow: {
35
+ type: Boolean,
36
+ default: false
37
+ },
38
+ display: {
39
+ type: Boolean,
40
+ default: true
41
+ },
42
+ readonly: Boolean,
43
+ plain: Boolean,
44
+ text: [String, Number],
45
+ scope: {},
46
+ exclude: Boolean
47
+ },
48
+ watch: {
49
+ data: {
50
+ immediate: true,
51
+ deep: true,
52
+ handler(val) {
53
+ this.results = val;
54
+ }
55
+ }
56
+ },
57
+ data() {
58
+ return {
59
+ results: []
60
+ };
61
+ },
62
+ computed: {
63
+ showLimit() {
64
+ if (this.showWordLimit === false) {
65
+ return false;
66
+ }
67
+ if (this.showWordLimit === true) {
68
+ return true;
69
+ }
70
+ if (this.count) {
71
+ return true;
72
+ }
73
+ return false;
74
+ },
75
+ maxInput() {
76
+ if (typeof this.count === 'number') {
77
+ return this.count;
78
+ }
79
+ return this.maxlength;
80
+ },
81
+ model: {
82
+ get() {
83
+ return this.value;
84
+ },
85
+ set(val) {
86
+ return val;
87
+ }
88
+ },
89
+ rule() {
90
+ if (this.rules) {
91
+ if (Array.isArray(this.rules)) {
92
+ return this.rules.map((item) => {
93
+ if (rules[item.type]) {
94
+ return {
95
+ pattern: rules[item.type]['pattern'],
96
+ message: item.message
97
+ ? item.message
98
+ : rules[item.type]['message'],
99
+ trigger: item.trigger
100
+ ? item.trigger
101
+ : this.fetchSuggestions || this.url || this.data.length > 0
102
+ ? 'change'
103
+ : 'blur'
104
+ };
105
+ }
106
+ return item;
107
+ });
108
+ }
109
+ if (rules[this.rules.type]) {
110
+ return {
111
+ pattern: rules[this.rules.type]['pattern'],
112
+ message: this.rules.message
113
+ ? this.rules.message
114
+ : rules[this.rules.type]['message'],
115
+ trigger: this.rules.trigger
116
+ ? this.rules.trigger
117
+ : this.fetchSuggestions || this.url || this.data.length > 0
118
+ ? 'change'
119
+ : 'blur'
120
+ };
121
+ }
122
+ return this.rules;
123
+ }
124
+ return undefined;
125
+ }
126
+ },
127
+ beforeCreate() {
128
+ this.getData = debounce(500, (query, callback, isChange) => {
129
+ this.getDatas(query, callback, isChange);
130
+ });
131
+ },
132
+ created() {},
133
+ mounted() {},
134
+ methods: {
135
+ getDatas(query, callback, isChange) {
136
+ if (typeof this.url && this.results.length === 0) {
137
+ util
138
+ .ajax({
139
+ method: this.method,
140
+ url: this.url,
141
+ data: this.param,
142
+ params: this.param
143
+ })
144
+ .then((res) => {
145
+ if (res.rCode === 0) {
146
+ this.results = JSON.parse(JSON.stringify(res.results));
147
+ let results = query
148
+ ? this.results.filter(this.searchFilter(query))
149
+ : this.results;
150
+ callback(results);
151
+ }
152
+ })
153
+ .catch((err) => {
154
+ if (err.message && err.message !== 'canceled') {
155
+ this.$message.error(err.message);
156
+ }
157
+ });
158
+ } else {
159
+ let results = query
160
+ ? this.results.filter(this.searchFilter(query, isChange))
161
+ : this.results;
162
+ callback(results);
163
+ }
164
+ },
165
+ searchFilter(query, isChange) {
166
+ return (state) => {
167
+ if (isChange) {
168
+ return state.value.indexOf(query) > -1;
169
+ } else {
170
+ if (this.exclude) {
171
+ return state.value !== query;
172
+ } else {
173
+ return state.value === query;
174
+ }
175
+ }
176
+ };
177
+ },
178
+ renderd(doms, h, type) {
179
+ if (typeof this.$attrs[type] === 'boolean') {
180
+ if (this.$attrs.render) {
181
+ if (typeof this.$attrs.render == 'string') {
182
+ try {
183
+ doms.push(
184
+ h(
185
+ 'template',
186
+ { slot: type },
187
+ util.toFunction(this.$attrs.render)(h, this)
188
+ )
189
+ );
190
+ } catch (error) {
191
+ throw error;
192
+ }
193
+ } else {
194
+ doms.push(
195
+ h('template', { slot: type }, this.$attrs.render(h, this))
196
+ );
197
+ }
198
+ }
199
+ } else if (typeof this.$attrs[type] === 'object') {
200
+ doms.push(
201
+ h(
202
+ 'es-button',
203
+ {
204
+ slot: type,
205
+ class: ['el-primeval', this.$attrs[type].class],
206
+ props: {
207
+ ...this.$attrs[type].props,
208
+ size: this.$attrs[type].size
209
+ ? this.$attrs[type].size
210
+ : type === 'prefix' || type === 'suffix'
211
+ ? 'small'
212
+ : '',
213
+ type: 'primary'
214
+ },
215
+ attrs: this.$attrs[type].attrs,
216
+ domProps: this.$attrs[type].icon
217
+ ? { innerHTML: this.$attrs[type].icon }
218
+ : {},
219
+ on: {
220
+ click: () => {
221
+ this.$attrs[type].click &&
222
+ this.$attrs[type].click(this, this.model, this.scope);
223
+ this.$attrs[type].event &&
224
+ this.$attrs[type].event(this, this.model, this.scope);
225
+ }
226
+ }
227
+ },
228
+ [this.$attrs[type].text]
229
+ )
230
+ );
231
+ } else {
232
+ doms.push(h('template', { slot: type }, [this.$attrs[type]]));
233
+ }
234
+ }
235
+ },
236
+ render(h) {
237
+ if (!this.hide) {
238
+ let cls = [];
239
+ let doms = [];
240
+ if (this.readonly) {
241
+ let content = this.model ? this.model : this.text;
242
+ if (this.$attrs.disabled && this.$attrs.disabledTips) {
243
+ content =
244
+ typeof this.$attrs.disabledTips == 'string'
245
+ ? this.$attrs.disabledTips
246
+ : this.$attrs.placeholder;
247
+ }
248
+ if (
249
+ this.$attrs.type === 'textarea' &&
250
+ !this.$attrs.disabled &&
251
+ !this.$attrs.disabledTips
252
+ ) {
253
+ if (this.model) {
254
+ content = this.model.replace(RegExp('\\n', 'g'), '<br/>');
255
+ content = content.replace(RegExp(' ', 'g'), '&nbsp;');
256
+ }
257
+ return h('div', {
258
+ class: ['es-textarea__inner ', { 'es-plain': this.plain }],
259
+ domProps: {
260
+ innerHTML: content
261
+ }
262
+ });
263
+ } else {
264
+ return h(
265
+ 'div',
266
+ {
267
+ class: [
268
+ 'es-input__inner',
269
+ {
270
+ 'es-plain': this.plain,
271
+ 'es-disabled-tips':
272
+ this.$attrs.disabled && this.$attrs.disabledTips
273
+ }
274
+ ]
275
+ },
276
+ [content]
277
+ );
278
+ }
279
+ }
280
+ let { prefix, suffix, prepend, append, ...attrs } = this.$attrs;
281
+ if (this.$slots.prefix) {
282
+ doms.push(h('template', { slot: 'prefix' }, this.$slots.prefix));
283
+ } else if (prefix) {
284
+ this.renderd(doms, h, 'prefix');
285
+ cls.push('es-input-button-prefix');
286
+ }
287
+ if (this.$slots.suffix) {
288
+ doms.push(h('template', { slot: 'suffix' }, this.$slots.suffix));
289
+ } else if (suffix) {
290
+ this.renderd(doms, h, 'suffix');
291
+ cls.push('es-input-button-suffix');
292
+ }
293
+ if (this.$slots.prepend) {
294
+ doms.push(h('template', { slot: 'prepend' }, this.$slots.prepend));
295
+ } else if (prepend) {
296
+ this.renderd(doms, h, 'prepend');
297
+ }
298
+ if (this.$slots.append) {
299
+ doms.push(h('template', { slot: 'append' }, this.$slots.append));
300
+ } else if (append) {
301
+ this.renderd(doms, h, 'append');
302
+ }
303
+ if (this.fetchSuggestions || this.url || this.data.length > 0) {
304
+ return h(
305
+ 'el-autocomplete',
306
+ {
307
+ show: this.display,
308
+ props: {
309
+ rules: this.rule
310
+ },
311
+ attrs: {
312
+ ...attrs,
313
+ fetchSuggestions: this.fetchSuggestions
314
+ ? this.fetchSuggestions
315
+ : this.getData,
316
+ triggerOnFocus: this.focusShow,
317
+ value: this.model
318
+ },
319
+ on: this.$listeners
320
+ },
321
+ doms
322
+ );
323
+ }
324
+ return h(
325
+ 'el-input',
326
+ {
327
+ class: cls,
328
+ props: {
329
+ label: this.label
330
+ ? typeof this.label === 'string'
331
+ ? this.label
332
+ : this.label.text
333
+ : '',
334
+ rules: this.rule,
335
+ value: this.model
336
+ },
337
+ domProps: {
338
+ value: this.model
339
+ },
340
+ attrs: { ...attrs },
341
+ on: { ...this.$listeners },
342
+ directives: [
343
+ {
344
+ name: 'show',
345
+ value: this.display
346
+ }
347
+ ]
348
+ },
349
+ doms
350
+ );
351
+ } else {
352
+ return '';
353
+ }
354
+ }
355
+ };
356
+ </script>