@idooel/components 0.0.2-beta.3 → 0.0.2-beta.30

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 (113) hide show
  1. package/README.md +98 -98
  2. package/dist/@idooel/components.esm.js +3622 -1592
  3. package/dist/@idooel/components.umd.js +3676 -1647
  4. package/jsconfig.json +7 -7
  5. package/package.json +64 -50
  6. package/packages/alert/index.js +4 -4
  7. package/packages/alert/src/index.vue +45 -45
  8. package/packages/batch-export/index.js +4 -4
  9. package/packages/batch-export/src/index.vue +104 -104
  10. package/packages/business-components/modal-fsm/index.js +4 -4
  11. package/packages/business-components/modal-fsm/src/index.vue +163 -163
  12. package/packages/business-components/modal-import/index.js +4 -4
  13. package/packages/business-components/modal-import/src/index.vue +222 -139
  14. package/packages/business-components/modal-timeline/index.js +4 -4
  15. package/packages/business-components/modal-timeline/src/index.vue +77 -77
  16. package/packages/business-components/tabs-sub-center/index.js +4 -4
  17. package/packages/business-components/tabs-sub-center/src/index.vue +116 -116
  18. package/packages/button/index.js +4 -4
  19. package/packages/button/src/index.vue +65 -65
  20. package/packages/checkbox/index.js +4 -4
  21. package/packages/checkbox/src/index.vue +52 -52
  22. package/packages/composite-components/button-group/index.js +4 -4
  23. package/packages/composite-components/button-group/src/index.vue +151 -151
  24. package/packages/composite-components/form-attachment/src/index.vue +14 -14
  25. package/packages/composite-components/form-img-crop/index.js +4 -4
  26. package/packages/composite-components/form-img-crop/src/index.vue +131 -131
  27. package/packages/composite-components/modal-confirm/index.js +4 -4
  28. package/packages/composite-components/modal-confirm/src/index.vue +103 -103
  29. package/packages/composite-components/modal-form/index.js +4 -4
  30. package/packages/composite-components/modal-form/src/index.vue +230 -230
  31. package/packages/composite-components/modal-img-crop/index.js +4 -4
  32. package/packages/composite-components/modal-img-crop/src/index.vue +298 -298
  33. package/packages/composite-components/modal-table/index.js +4 -4
  34. package/packages/composite-components/modal-table/src/index.vue +155 -155
  35. package/packages/composite-components/modal-tree/index.js +4 -4
  36. package/packages/composite-components/modal-tree/src/index.vue +75 -75
  37. package/packages/composite-components/search-area/index.js +4 -4
  38. package/packages/composite-components/search-area/src/index.vue +239 -237
  39. package/packages/composite-components/search-area/src/label.vue +35 -35
  40. package/packages/composite-components/select-entity-modal-table/index.js +4 -4
  41. package/packages/composite-components/select-entity-modal-table/src/index.vue +171 -171
  42. package/packages/date/index.js +4 -4
  43. package/packages/date/src/index.vue +112 -112
  44. package/packages/date-range/index.js +4 -4
  45. package/packages/date-range/src/index.vue +47 -47
  46. package/packages/form/index.js +4 -4
  47. package/packages/form/src/index.vue +393 -319
  48. package/packages/icon/index.js +4 -4
  49. package/packages/icon/src/index.vue +31 -31
  50. package/packages/index.js +159 -153
  51. package/packages/input/index.js +4 -4
  52. package/packages/input/src/index.vue +35 -35
  53. package/packages/input-number/index.js +4 -4
  54. package/packages/input-number/src/index.vue +23 -23
  55. package/packages/loading/index.js +4 -4
  56. package/packages/loading/src/index.vue +36 -36
  57. package/packages/meta/provider.js +4 -0
  58. package/packages/modal/index.js +4 -4
  59. package/packages/modal/src/index.vue +184 -184
  60. package/packages/models/form-group-model/index.js +4 -4
  61. package/packages/models/form-group-model/src/index.vue +271 -273
  62. package/packages/models/form-model/index.js +4 -4
  63. package/packages/models/form-model/src/index.vue +236 -232
  64. package/packages/models/step-model/index.js +4 -4
  65. package/packages/models/step-model/src/index.vue +224 -224
  66. package/packages/models/tree-table-model/README.md +0 -0
  67. package/packages/models/tree-table-model/index.js +4 -4
  68. package/packages/models/tree-table-model/src/index.vue +964 -689
  69. package/packages/pagination/index.js +5 -0
  70. package/packages/pagination/src/index.vue +372 -0
  71. package/packages/radio/index.js +4 -4
  72. package/packages/radio/src/index.vue +56 -56
  73. package/packages/select/index.js +4 -4
  74. package/packages/select/src/index.vue +113 -105
  75. package/packages/select-entity/index.js +4 -4
  76. package/packages/select-entity/src/index.vue +119 -119
  77. package/packages/table/index.js +4 -4
  78. package/packages/table/src/action.vue +176 -172
  79. package/packages/table/src/index.vue +605 -319
  80. package/packages/tabs/index.js +4 -4
  81. package/packages/tabs/src/index.vue +55 -55
  82. package/packages/text/index.js +4 -4
  83. package/packages/text/src/index.vue +47 -47
  84. package/packages/text-editor/index.js +4 -4
  85. package/packages/text-editor/src/index.vue +72 -72
  86. package/packages/textarea/index.js +4 -4
  87. package/packages/textarea/src/index.vue +57 -57
  88. package/packages/theme/form.scss +21 -21
  89. package/packages/theme/index.scss +43 -43
  90. package/packages/theme/overrid.scss +7 -7
  91. package/packages/theme/styleClass.scss +2 -2
  92. package/packages/theme/variables.scss +55 -55
  93. package/packages/timeline/index.js +4 -4
  94. package/packages/timeline/src/index.vue +257 -257
  95. package/packages/tpl/index.js +4 -4
  96. package/packages/tpl/src/index.vue +55 -55
  97. package/packages/tree/index.js +4 -4
  98. package/packages/tree/src/TreeNode.vue +29 -29
  99. package/packages/tree/src/index.vue +101 -101
  100. package/packages/tree-select/index.js +4 -4
  101. package/packages/tree-select/src/index.vue +142 -142
  102. package/packages/upload/index.js +4 -4
  103. package/packages/upload/src/index.vue +998 -494
  104. package/packages/utils/README.md +172 -0
  105. package/packages/utils/index.js +66 -62
  106. package/packages/utils/runtime-context/dataPoolAPI.js +501 -0
  107. package/packages/utils/runtime-context/globalDataPool.js +279 -0
  108. package/packages/utils/runtime-context/index.js +76 -0
  109. package/packages/utils/runtime-context/modelSchema.js +174 -0
  110. package/scripts/rollup.config.js +42 -42
  111. package/scripts/rollup.esm.config.js +11 -11
  112. package/scripts/rollup.umd.config.js +17 -14
  113. package/vitest.config.js +17 -0
@@ -1,274 +1,272 @@
1
- <template>
2
- <div class="ele form-group-model__wrapper">
3
- <template v-for="(group, idx) in innerGroupMeta">
4
- <div
5
- class="form-group-model__from"
6
- v-if="!group.isGenTpl"
7
- :key="group.key || idx">
8
- <div class="form-group-model__form--title">
9
- <div>{{ group.title }}</div>
10
- <div class="form-group-model__form--buttons">
11
- <ele-button-group v-if="group.buttonGroupMeta" v-on="assignAttrForEvents" @delete="handleClickDelete($event, group, idx)" :data-source="group.buttonGroupMeta.elements.call(this)"></ele-button-group>
12
- </div>
13
- </div>
14
- <div class="form-group-model__form--content">
15
- <ele-form @change="onChangeFormStatus($event, group.key || idx)" :form-name="group.key || idx" :ref="group.key || `${formRefBase}__${idx}`" :elements="group.elements"></ele-form>
16
- </div>
17
- </div>
18
- </template>
19
- <div v-if="showFooterMeta" class="form-group-model__form--footer">
20
- <ele-button-group v-on="assignAttrForEvents" :data-source="footerElements"></ele-button-group>
21
- </div>
22
- </div>
23
- </template>
24
-
25
- <script>
26
- import { BUILT_IN_EVENT_NAMES, RESERVE_EVENT_NAMES, parseFieldMap, PAGE_STATUS } from '../../../utils'
27
- import { v4 as uuidv4 } from 'uuid'
28
- import { type, net } from '@idooel/shared'
29
- export default {
30
- name: 'ele-form-group-model',
31
- props: {
32
- mode: {
33
- type: String
34
- },
35
- fieldName: {
36
- type: String,
37
- default: 'formGroup'
38
- },
39
- groupMeta: {
40
- type: Function,
41
- default: () => []
42
- },
43
- footerMeta: {
44
- type: Object,
45
- default: () => {}
46
- },
47
- preRequest: {
48
- type: Object,
49
- default: () => {}
50
- },
51
- infoRequest: {
52
- type: Object,
53
- default: () => {}
54
- },
55
- submitRequest: {
56
- type: Object,
57
- default: () => {}
58
- }
59
- },
60
- data () {
61
- return {
62
- increaseCount: 1,
63
- innerGroupMeta: []
64
- }
65
- },
66
- watch: {
67
- readOnlyGroupMeta: {
68
- handler (meta) {
69
- this.innerGroupMeta = meta
70
- },
71
- immediate: true
72
- }
73
- },
74
- computed: {
75
- routeMetaMode () {
76
- return this.$route.meta.mode
77
- },
78
- readOnlyGroupMeta () {
79
- return this.groupMeta.call(this)
80
- },
81
- showFooterMeta () {
82
- return !type.isEmpty(this.footerMeta)
83
- },
84
- formRefBase () {
85
- return uuidv4()
86
- },
87
- footerElements () {
88
- const { elements } = this.footerMeta
89
- return elements.call(this)
90
- },
91
- assignAttrForEvents () {
92
- const events = this.footerElements.reduce((ret, ele) => {
93
- ret[ele.eventName] = (e) => {
94
- this.$emit(ele.eventName || 'click', { ...e })
95
- }
96
- return ret
97
- }, {})
98
- return {
99
- ...this.$listeners,
100
- ...events,
101
- [BUILT_IN_EVENT_NAMES.SUBMIT]: this[BUILT_IN_EVENT_NAMES.SUBMIT],
102
- [BUILT_IN_EVENT_NAMES.CANCEL]: this[BUILT_IN_EVENT_NAMES.CANCEL],
103
- [BUILT_IN_EVENT_NAMES.INCREASE]: this[BUILT_IN_EVENT_NAMES.INCREASE]
104
- }
105
- },
106
- getFormRefs () {
107
- return this.innerGroupMeta.map((group, idx) => {
108
- if (!group.isGenTpl) {
109
- return this.$refs[group.key || `${this.formRefBase}__${idx}`]
110
- }
111
- return void 0
112
- }).filter(item => !!item).flat()
113
- },
114
- formModels () {
115
- if (this.mode === 'increase') {
116
- //TODO increase mode to return formModels
117
- return this.getFormRefs.map(form => {
118
- return form.getFieldsValue()
119
- })
120
- } else {
121
- return this.getFormRefs.map(form => {
122
- const { $vnode: { data: { ref } } } = form
123
- return {
124
- key: ref,
125
- value: form.getFieldsValue()
126
- }
127
- }).reduce((ret, props) => {
128
- ret[props.key] = props.value
129
- return ret
130
- }, {})
131
- }
132
- }
133
- },
134
- methods: {
135
- execFieldMap (fieldMap = {}, dataSource = {}) {
136
- const ret = parseFieldMap(fieldMap, { _route: this.$route.query, ...dataSource})
137
- return ret
138
- },
139
- onChangeFormStatus (props, key) {
140
- this.$emit(RESERVE_EVENT_NAMES.WATCH_FORM_STATUS, { key, ...props })
141
- },
142
- async infoRequestTrigger () {
143
- if (!this.infoRequest || this.routeMetaMode == PAGE_STATUS.CREATE) return
144
- const { url, requestType, params = {}, fieldMap = {}, headers = {} } = this.infoRequest
145
- if (!url) return
146
- net[requestType.toLowerCase()](url, { ...params, ...this.execFieldMap(fieldMap) }, { ...headers }).then(resp => {
147
- const { data = {} } = resp
148
- if (this.mode === 'increase') {
149
- this.renderIncreaseForm(data)
150
- }
151
- this.$emit(RESERVE_EVENT_NAMES.INIT_FORM, { ...data })
152
- })
153
- },
154
- async preRequestTrigger () {
155
- if (!this.preRequest) return
156
- const { url, requestType = 'GET', params = {}, fieldMap = {}, headers = {} } = this.preRequest
157
- if (!url) return
158
- net[requestType.toLowerCase()](url, { ...params, ...fieldMap }, { ...headers }).then(resp => {
159
- const { data = {} } = resp
160
- if (this.mode === 'increase') {
161
- this.renderIncreaseForm(data)
162
- }
163
- this.$emit(RESERVE_EVENT_NAMES.INIT_FORM, { ...data })
164
- })
165
- },
166
- renderIncreaseForm (data = {}) {
167
- const formGroupValuesLength = data[this.fieldName].length
168
- const genTplTarget = this.readOnlyGroupMeta.find(item => item.isGenTpl)
169
- const notGenTplPoolLength = this.readOnlyGroupMeta.filter(item => !item.isGenTpl).length
170
- const genNum = formGroupValuesLength - notGenTplPoolLength
171
- new Array(genNum).fill().forEach(() => {
172
- const form = this.genForm(genTplTarget)
173
- this.innerGroupMeta.push(form)
174
- })
175
- const formGroupValues = data[this.fieldName]
176
- this.$nextTick(() => {
177
- this.setFieldsValue(formGroupValues)
178
- })
179
- },
180
- async submitRequestTrigger (props = {}) {
181
- const { url, requestType, headers = {}, params = {}, fieldMap = {} } = this.submitRequest
182
- if (!url) return
183
- const ret = await net[requestType.toLowerCase()](url, { ...params, ...this.execFieldMap(fieldMap, { ...this.formModels }), [this.fieldName]: this.formModels }, { headers }).then(resp => {
184
- this.$emit(BUILT_IN_EVENT_NAMES.SUBMIT, { ...props, formModel: { ...this.formModels, ...resp.data || {} } })
185
- return resp.data
186
- })
187
- return ret
188
- },
189
- setFieldsValue (data = []) {
190
- this.getFormRefs.forEach((form, idx) => {
191
- form.setFieldsValue(data[idx])
192
- form.evalDisabledExpression(data[idx])
193
- })
194
- },
195
- [BUILT_IN_EVENT_NAMES.SUBMIT] (props = {}) {
196
- const status = this.getFormRefs.map(form => {
197
- const status = form.validateFields()
198
- return status
199
- }).every(item => item)
200
- if (status) {
201
- return this.submitRequestTrigger(props)
202
- } else {
203
- return false
204
- }
205
- },
206
- [BUILT_IN_EVENT_NAMES.CANCEL] (props = {}) {
207
- this.$emit(BUILT_IN_EVENT_NAMES.CANCEL, { ...props })
208
- },
209
- genForm (base) {
210
- const { elements, title, buttonGroupMeta } = base
211
- return {
212
- elements: JSON.parse(JSON.stringify(elements)),
213
- buttonGroupMeta,
214
- title: `${title}${this.increaseCount++}`,
215
- _gen: true
216
- }
217
- },
218
- handleClickDelete (props = {}, attr = {}, idx) {
219
- this.innerGroupMeta.splice(idx, 1)
220
- this.$emit(BUILT_IN_EVENT_NAMES.DELETE, { ...props })
221
- },
222
- [BUILT_IN_EVENT_NAMES.INCREASE] (props) {
223
- const genTplTarget = this.readOnlyGroupMeta.find(item => item.isGenTpl)
224
- const form = this.genForm(genTplTarget)
225
- this.innerGroupMeta.push(form)
226
- }
227
- },
228
- async mounted() {
229
- await this.preRequestTrigger()
230
- await this.infoRequestTrigger()
231
- }
232
- }
233
- </script>
234
-
235
- <style lang="scss" scoped>
236
- .ele {
237
- &.form-group-model__wrapper {
238
- background: unset;
239
- padding-bottom: 80px;
240
- .form-group-model__from {
241
- background: #fff;
242
- margin-top: 16px;
243
- &:first-child {
244
- margin-top: unset;
245
- }
246
- .form-group-model__form--title {
247
- width: 100%;
248
- height: 56px;
249
- padding: 0 16px;
250
- border-bottom: 1px solid;
251
- border-color: var(--idooel-form-title-border-color);
252
- display: flex;
253
- flex-direction: row;
254
- align-items: center;
255
- justify-content: space-between;
256
- }
257
- .form-group-model__form--content {
258
- padding: 16px;
259
- }
260
- }
261
- .form-group-model__form--footer {
262
- width: 100%;
263
- height: 64px;
264
- background: #fff;
265
- position: fixed;
266
- bottom: 0;
267
- display: flex;
268
- flex-direction: row;
269
- align-items: center;
270
- justify-content: end;
271
- }
272
- }
273
- }
1
+ <template>
2
+ <div class="ele form-group-model__wrapper">
3
+ <template v-for="(group, idx) in innerGroupMeta">
4
+ <div
5
+ class="form-group-model__from"
6
+ v-if="!group.isGenTpl"
7
+ :key="group.key || idx">
8
+ <div class="form-group-model__form--title">
9
+ <div>{{ group.title }}</div>
10
+ <div class="form-group-model__form--buttons">
11
+ <ele-button-group v-if="group.buttonGroupMeta" v-on="assignAttrForEvents" @delete="handleClickDelete($event, group, idx)" :data-source="group.buttonGroupMeta.elements.call(this)"></ele-button-group>
12
+ </div>
13
+ </div>
14
+ <div class="form-group-model__form--content">
15
+ <ele-form @change="onChangeFormStatus($event, group.key || idx)" :form-name="group.key || idx" :ref="group.key || `${formRefBase}__${idx}`" :elements="group.elements"></ele-form>
16
+ </div>
17
+ </div>
18
+ </template>
19
+ <div v-if="showFooterMeta" class="form-group-model__form--footer">
20
+ <ele-button-group v-on="assignAttrForEvents" :data-source="footerElements"></ele-button-group>
21
+ </div>
22
+ </div>
23
+ </template>
24
+
25
+ <script>
26
+ import { BUILT_IN_EVENT_NAMES, RESERVE_EVENT_NAMES, parseFieldMap, PAGE_STATUS } from '../../../utils'
27
+ import { v4 as uuidv4 } from 'uuid'
28
+ import { type, net } from '@idooel/shared'
29
+ export default {
30
+ name: 'ele-form-group-model',
31
+ props: {
32
+ mode: {
33
+ type: String
34
+ },
35
+ fieldName: {
36
+ type: String,
37
+ default: 'formGroup'
38
+ },
39
+ groupMeta: {
40
+ type: Function,
41
+ default: () => []
42
+ },
43
+ footerMeta: {
44
+ type: Object,
45
+ default: () => {}
46
+ },
47
+ preRequest: {
48
+ type: Object,
49
+ default: () => {}
50
+ },
51
+ infoRequest: {
52
+ type: Object,
53
+ default: () => {}
54
+ },
55
+ submitRequest: {
56
+ type: Object,
57
+ default: () => {}
58
+ }
59
+ },
60
+ data () {
61
+ return {
62
+ increaseCount: 1,
63
+ innerGroupMeta: []
64
+ }
65
+ },
66
+ watch: {
67
+ readOnlyGroupMeta: {
68
+ handler (meta) {
69
+ this.innerGroupMeta = meta
70
+ },
71
+ immediate: true
72
+ }
73
+ },
74
+ computed: {
75
+ routeMetaMode () {
76
+ return this.$route.meta.mode
77
+ },
78
+ readOnlyGroupMeta () {
79
+ return this.groupMeta.call(this)
80
+ },
81
+ showFooterMeta () {
82
+ return !type.isEmpty(this.footerMeta)
83
+ },
84
+ formRefBase () {
85
+ return uuidv4()
86
+ },
87
+ footerElements () {
88
+ const { elements } = this.footerMeta
89
+ return elements.call(this)
90
+ },
91
+ assignAttrForEvents () {
92
+ const events = this.footerElements.reduce((ret, ele) => {
93
+ ret[ele.eventName] = (e) => {
94
+ this.$emit(ele.eventName || 'click', { ...e })
95
+ }
96
+ return ret
97
+ }, {})
98
+ return {
99
+ ...this.$listeners,
100
+ ...events,
101
+ [BUILT_IN_EVENT_NAMES.SUBMIT]: this[BUILT_IN_EVENT_NAMES.SUBMIT],
102
+ [BUILT_IN_EVENT_NAMES.CANCEL]: this[BUILT_IN_EVENT_NAMES.CANCEL],
103
+ [BUILT_IN_EVENT_NAMES.INCREASE]: this[BUILT_IN_EVENT_NAMES.INCREASE]
104
+ }
105
+ },
106
+ getFormRefs () {
107
+ return this.innerGroupMeta.map((group, idx) => {
108
+ if (!group.isGenTpl) {
109
+ return this.$refs[group.key || `${this.formRefBase}__${idx}`]
110
+ }
111
+ return void 0
112
+ }).filter(item => !!item).flat()
113
+ },
114
+ formModels () {
115
+ if (this.mode === 'increase') {
116
+ //TODO increase mode to return formModels
117
+ return this.getFormRefs.map(form => {
118
+ return form.getFieldsValue()
119
+ })
120
+ } else {
121
+ return this.getFormRefs.map(form => {
122
+ const { $vnode: { data: { ref } } } = form
123
+ return {
124
+ key: ref,
125
+ value: form.getFieldsValue()
126
+ }
127
+ }).reduce((ret, props) => {
128
+ ret[props.key] = props.value
129
+ return ret
130
+ }, {})
131
+ }
132
+ }
133
+ },
134
+ methods: {
135
+ execFieldMap (fieldMap = {}, dataSource = {}) {
136
+ const ret = parseFieldMap(fieldMap, { _route: this.$route.query, ...dataSource})
137
+ return ret
138
+ },
139
+ onChangeFormStatus (props, key) {
140
+ this.$emit(RESERVE_EVENT_NAMES.WATCH_FORM_STATUS, { key, ...props })
141
+ },
142
+ async infoRequestTrigger () {
143
+ if (!this.infoRequest || this.routeMetaMode == PAGE_STATUS.CREATE) return
144
+ const { url, requestType, params = {}, fieldMap = {}, headers = {} } = this.infoRequest
145
+ if (!url) return
146
+ net[requestType.toLowerCase()](url, { ...params, ...this.execFieldMap(fieldMap) }, { ...headers }).then(resp => {
147
+ const { data = {} } = resp
148
+ if (this.mode === 'increase') {
149
+ this.renderIncreaseForm(data)
150
+ }
151
+ this.$emit(RESERVE_EVENT_NAMES.INIT_FORM, { ...data })
152
+ })
153
+ },
154
+ async preRequestTrigger () {
155
+ if (!this.preRequest) return
156
+ const { url, requestType = 'GET', params = {}, fieldMap = {}, headers = {} } = this.preRequest
157
+ if (!url) return
158
+ net[requestType.toLowerCase()](url, { ...params, ...fieldMap }, { ...headers }).then(resp => {
159
+ const { data = {} } = resp
160
+ if (this.mode === 'increase') {
161
+ this.renderIncreaseForm(data)
162
+ }
163
+ this.$emit(RESERVE_EVENT_NAMES.INIT_FORM, { ...data })
164
+ })
165
+ },
166
+ renderIncreaseForm (data = {}) {
167
+ const formGroupValuesLength = data[this.fieldName].length
168
+ const genTplTarget = this.readOnlyGroupMeta.find(item => item.isGenTpl)
169
+ const notGenTplPoolLength = this.readOnlyGroupMeta.filter(item => !item.isGenTpl).length
170
+ const genNum = formGroupValuesLength - notGenTplPoolLength
171
+ new Array(genNum).fill().forEach(() => {
172
+ const form = this.genForm(genTplTarget)
173
+ this.innerGroupMeta.push(form)
174
+ })
175
+ const formGroupValues = data[this.fieldName]
176
+ this.$nextTick(() => {
177
+ this.setFieldsValue(formGroupValues)
178
+ })
179
+ },
180
+ async submitRequestTrigger (props = {}) {
181
+ const { url, requestType, headers = {}, params = {}, fieldMap = {} } = this.submitRequest
182
+ if (!url) return
183
+ const ret = await net[requestType.toLowerCase()](url, { ...params, ...this.execFieldMap(fieldMap, { ...this.formModels }), [this.fieldName]: this.formModels }, { headers }).then(resp => {
184
+ this.$emit(BUILT_IN_EVENT_NAMES.SUBMIT, { ...props, formModel: { ...this.formModels, ...resp.data || {} } })
185
+ return resp.data
186
+ })
187
+ return ret
188
+ },
189
+ setFieldsValue (data = []) {
190
+ this.getFormRefs.forEach((form, idx) => {
191
+ form.setFieldsValue(data[idx])
192
+ form.evalDisabledExpression(data[idx])
193
+ })
194
+ },
195
+ async [BUILT_IN_EVENT_NAMES.SUBMIT] (props = {}) {
196
+ const statusResults = await Promise.all(this.getFormRefs.map(form => form.validateFields()))
197
+ const status = statusResults.every(item => item)
198
+ if (status) {
199
+ return this.submitRequestTrigger(props)
200
+ } else {
201
+ return false
202
+ }
203
+ },
204
+ [BUILT_IN_EVENT_NAMES.CANCEL] (props = {}) {
205
+ this.$emit(BUILT_IN_EVENT_NAMES.CANCEL, { ...props })
206
+ },
207
+ genForm (base) {
208
+ const { elements, title, buttonGroupMeta } = base
209
+ return {
210
+ elements: JSON.parse(JSON.stringify(elements)),
211
+ buttonGroupMeta,
212
+ title: `${title}${this.increaseCount++}`,
213
+ _gen: true
214
+ }
215
+ },
216
+ handleClickDelete (props = {}, attr = {}, idx) {
217
+ this.innerGroupMeta.splice(idx, 1)
218
+ this.$emit(BUILT_IN_EVENT_NAMES.DELETE, { ...props })
219
+ },
220
+ [BUILT_IN_EVENT_NAMES.INCREASE] (props) {
221
+ const genTplTarget = this.readOnlyGroupMeta.find(item => item.isGenTpl)
222
+ const form = this.genForm(genTplTarget)
223
+ this.innerGroupMeta.push(form)
224
+ }
225
+ },
226
+ async mounted() {
227
+ await this.preRequestTrigger()
228
+ await this.infoRequestTrigger()
229
+ }
230
+ }
231
+ </script>
232
+
233
+ <style lang="scss" scoped>
234
+ .ele {
235
+ &.form-group-model__wrapper {
236
+ background: unset;
237
+ padding-bottom: 80px;
238
+ .form-group-model__from {
239
+ background: #fff;
240
+ margin-top: 16px;
241
+ &:first-child {
242
+ margin-top: unset;
243
+ }
244
+ .form-group-model__form--title {
245
+ width: 100%;
246
+ height: 56px;
247
+ padding: 0 16px;
248
+ border-bottom: 1px solid;
249
+ border-color: var(--idooel-form-title-border-color);
250
+ display: flex;
251
+ flex-direction: row;
252
+ align-items: center;
253
+ justify-content: space-between;
254
+ }
255
+ .form-group-model__form--content {
256
+ padding: 16px;
257
+ }
258
+ }
259
+ .form-group-model__form--footer {
260
+ width: 100%;
261
+ height: 64px;
262
+ background: #fff;
263
+ position: fixed;
264
+ bottom: 0;
265
+ display: flex;
266
+ flex-direction: row;
267
+ align-items: center;
268
+ justify-content: end;
269
+ }
270
+ }
271
+ }
274
272
  </style>
@@ -1,5 +1,5 @@
1
- import EleFormPageModel from './src/index.vue'
2
-
3
- EleFormPageModel.install = Vue => Vue.component(EleFormPageModel.name, EleFormPageModel)
4
-
1
+ import EleFormPageModel from './src/index.vue'
2
+
3
+ EleFormPageModel.install = Vue => Vue.component(EleFormPageModel.name, EleFormPageModel)
4
+
5
5
  export default EleFormPageModel