@idooel/components 0.0.2-beta.12 → 0.0.2-beta.13

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 (111) hide show
  1. package/README.md +98 -98
  2. package/dist/@idooel/components.esm.js +960 -248
  3. package/dist/@idooel/components.umd.js +963 -251
  4. package/jsconfig.json +7 -7
  5. package/package.json +61 -61
  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 +139 -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 +238 -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 +319 -319
  48. package/packages/icon/index.js +4 -4
  49. package/packages/icon/src/index.vue +31 -31
  50. package/packages/index.js +156 -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 +273 -273
  62. package/packages/models/form-model/index.js +4 -4
  63. package/packages/models/form-model/src/index.vue +236 -236
  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/index.js +4 -4
  67. package/packages/models/tree-table-model/src/index.vue +806 -764
  68. package/packages/radio/index.js +4 -4
  69. package/packages/radio/src/index.vue +56 -56
  70. package/packages/select/index.js +4 -4
  71. package/packages/select/src/index.vue +105 -105
  72. package/packages/select-entity/index.js +4 -4
  73. package/packages/select-entity/src/index.vue +119 -119
  74. package/packages/table/index.js +4 -4
  75. package/packages/table/src/action.vue +172 -172
  76. package/packages/table/src/index.vue +339 -319
  77. package/packages/tabs/index.js +4 -4
  78. package/packages/tabs/src/index.vue +55 -55
  79. package/packages/text/index.js +4 -4
  80. package/packages/text/src/index.vue +47 -47
  81. package/packages/text-editor/index.js +4 -4
  82. package/packages/text-editor/src/index.vue +72 -72
  83. package/packages/textarea/index.js +4 -4
  84. package/packages/textarea/src/index.vue +57 -57
  85. package/packages/theme/form.scss +21 -21
  86. package/packages/theme/index.scss +43 -43
  87. package/packages/theme/overrid.scss +7 -7
  88. package/packages/theme/styleClass.scss +2 -2
  89. package/packages/theme/variables.scss +55 -55
  90. package/packages/timeline/index.js +4 -4
  91. package/packages/timeline/src/index.vue +257 -257
  92. package/packages/tpl/index.js +4 -4
  93. package/packages/tpl/src/index.vue +55 -55
  94. package/packages/tree/index.js +4 -4
  95. package/packages/tree/src/TreeNode.vue +29 -29
  96. package/packages/tree/src/index.vue +101 -101
  97. package/packages/tree-select/index.js +4 -4
  98. package/packages/tree-select/src/index.vue +142 -142
  99. package/packages/upload/index.js +4 -4
  100. package/packages/upload/src/index.vue +996 -996
  101. package/packages/utils/index.js +66 -62
  102. package/packages/utils/runtime-context/dataPoolAPI.js +501 -0
  103. package/packages/utils/runtime-context/globalDataPool.js +279 -0
  104. package/packages/utils/runtime-context/index.js +76 -0
  105. package/packages/utils/runtime-context/modelSchema.js +174 -0
  106. package/scripts/rollup.config.js +42 -42
  107. package/scripts/rollup.esm.config.js +11 -11
  108. package/scripts/rollup.umd.config.js +17 -17
  109. package/vitest.config.js +17 -17
  110. package/packages/utils/dataPool.js +0 -22
  111. package/packages/utils/treeTableDataPoolManager.js +0 -85
@@ -1,237 +1,237 @@
1
- <template>
2
- <div class="form__model--wrapper">
3
- <div class="form-model__title" v-if="title">
4
- {{ title }}
5
- </div>
6
- <div class="form-model__content">
7
- <ele-alert style="margin-bottom: 16px;" v-if="alertMeta" v-bind="alertMeta"></ele-alert>
8
- <ele-form :ref="formRef" @change="onChangeFormStatus($event)" :elements="elements" :disabled="globalDisabled"></ele-form>
9
- </div>
10
- <div class="form-model__footer" v-if="footerMeta">
11
- <ele-button-group v-on="assignAttrForEvents" :data-source="footerElements"></ele-button-group>
12
- </div>
13
- </div>
14
- </template>
15
-
16
- <script>
17
- import { BUILT_IN_EVENT_NAMES, parseFieldMap, RESERVE_EVENT_NAMES, PAGE_STATUS, CONTEXT, BUILT_IN_METHODS_NAMES } from '../../../utils'
18
- import { v4 as uuidv4 } from 'uuid'
19
- import { net, type } from '@idooel/shared'
20
- import { parse } from '@idooel/expression'
21
- export default {
22
- name: 'ele-form-model',
23
- props: {
24
- disabled: {
25
- type: [Boolean, String],
26
- default: '_routeMeta.disabled'
27
- },
28
- title: {
29
- type: String
30
- },
31
- formMeta: {
32
- type: Object
33
- },
34
- footerMeta: {
35
- type: Object
36
- }
37
- },
38
- data() {
39
- return {}
40
- },
41
- provide () {
42
- return {
43
- [CONTEXT]: () => {
44
- return {
45
- exposed: this.exposed
46
- }
47
- }
48
- }
49
- },
50
- computed: {
51
- globalDisabled () {
52
- return this.executeExpression(this.disabled)
53
- },
54
- formRef () {
55
- return uuidv4()
56
- },
57
- exposed () {
58
- return {
59
- setFieldsValue: this.setFieldsValue,
60
- validateFields: this.validateFields,
61
- getFieldsValue: this.getFieldsValue,
62
- executeExpressions: this.executeExpressions,
63
- route: this.$route,
64
- [BUILT_IN_METHODS_NAMES.SUBMIT_FORM]: this.submitRequestTrigger
65
- }
66
- },
67
- assignAttrForEvents () {
68
- const events = this.footerElements.reduce((ret, ele) => {
69
- ret[ele.eventName] = (e) => {
70
- this.$emit(ele.eventName || 'click', { ...e, formModel: this.formModels(), exposed: this.exposed })
71
- }
72
- return ret
73
- }, {})
74
- return {
75
- ...this.$listeners,
76
- ...events,
77
- [BUILT_IN_EVENT_NAMES.SUBMIT]: this[BUILT_IN_EVENT_NAMES.SUBMIT],
78
- [BUILT_IN_EVENT_NAMES.CANCEL]: this[BUILT_IN_EVENT_NAMES.CANCEL]
79
- }
80
- },
81
- elements () {
82
- const { elements } = this.formMeta
83
- return elements
84
- },
85
- preRequest () {
86
- const { preRequest = {} } = this.formMeta
87
- return preRequest
88
- },
89
- infoRequest () {
90
- const { infoRequest = {} } = this.formMeta
91
- return infoRequest
92
- },
93
- alertMeta () {
94
- const { alert = {} } = this.formMeta
95
- return type.isEmpty(alert) ? null : alert
96
- },
97
- submitRequest () {
98
- const { submitRequest = {} } = this.formMeta
99
- return submitRequest
100
- },
101
- footerElements () {
102
- const { elements } = this.footerMeta
103
- return elements.call(this)
104
- },
105
- expressionData () {
106
- return {
107
- _route: this.$route.query,
108
- _routeMeta: this.$route.meta
109
- }
110
- },
111
- routeMetaMode () {
112
- return this.$route.meta.mode
113
- }
114
- },
115
- methods: {
116
- collectDefaultValues () {
117
- const ret = this.elements.reduce((ret, props) => {
118
- const { name, defaultValue } = props
119
- if (defaultValue) {
120
- ret[name] = defaultValue
121
- }
122
- return ret
123
- }, {})
124
- return ret
125
- },
126
- onChangeFormStatus (props) {
127
- this.$emit(RESERVE_EVENT_NAMES.WATCH_FORM_STATUS, { ...props })
128
- },
129
- formModels (fieldNames) {
130
- return this.$refs[this.formRef] ? this.$refs[this.formRef].getFieldsValue(fieldNames) : {}
131
- },
132
- executeExpression (expression, dataSource = {}) {
133
- if (type.isBool(expression)) return expression
134
- if (type.isEmpty(expression)) return false
135
- return parse(expression, { ...this.expressionData, ...this.formModels(), ...dataSource })
136
- },
137
- execFieldMap (fieldMap = {}, dataSource = {}) {
138
- const ret = parseFieldMap(fieldMap, { ...this.expressionData, ...dataSource})
139
- return ret
140
- },
141
- async submitRequestTrigger (props = {}) {
142
- const { url, requestType, headers = {}, params = {}, fieldMap = {} } = this.submitRequest
143
- const currentUrl = this.executeExpressionForUrl(url)
144
- if (!currentUrl) return
145
- const ret = await net[requestType.toLowerCase()](currentUrl, { ...params, ...this.execFieldMap(fieldMap, { ...this.formModels() }), ...this.formModels() }, { headers }).then(resp => {
146
- this.$emit(BUILT_IN_EVENT_NAMES.SUBMIT, { ...props, formModel: { ...this.formModels(), ...resp.data || {} } })
147
- return resp.data
148
- })
149
- return ret
150
- },
151
- async infoRequestTrigger () {
152
- if (PAGE_STATUS.CREATE == this.routeMetaMode) return
153
- const { url, requestType, params = {}, fieldMap = {}, headers = {} } = this.infoRequest
154
- const currentUrl = this.executeExpressionForUrl(url)
155
- if (!currentUrl) return
156
- net[requestType.toLowerCase()](currentUrl, { ...params, ...this.execFieldMap(fieldMap) }, { ...headers }).then(resp => {
157
- const { data = {} } = resp
158
- this.setFieldsValue(data)
159
- this.$emit(RESERVE_EVENT_NAMES.INIT_FORM, { ...data })
160
- })
161
- },
162
- async preRequestTrigger () {
163
- const { url, requestType = 'GET', params = {}, fieldMap = {}, headers = {} } = this.preRequest
164
- const currentUrl = this.executeExpressionForUrl(url)
165
- if (!currentUrl) return
166
- const { data } = await net[requestType.toLowerCase()](currentUrl, { ...params, ...this.execFieldMap(fieldMap) }, { ...headers })
167
- this.setFieldsValue(data)
168
- this.$emit(RESERVE_EVENT_NAMES.INIT_FORM, { ...data })
169
- },
170
- executeExpressionForUrl (url) {
171
- return type.isApi(url) ? url : this.executeExpression(url)
172
- },
173
- setFieldsValue (props) {
174
- this.$refs[this.formRef].setFieldsValue(props)
175
- },
176
- getFieldsValue (fieldNames) {
177
- return this.$refs[this.formRef].getFieldsValue(fieldNames)
178
- },
179
- executeExpressions () {
180
- return this.$refs[this.formRef].evalShowExpression()
181
- },
182
- validateFields () {
183
- return this.$refs[this.formRef].validateFields()
184
- },
185
- [BUILT_IN_EVENT_NAMES.SUBMIT] (props = {}) {
186
- if (this.globalDisabled) return
187
- const status = this.$refs[this.formRef].validateFields()
188
- if (status) {
189
- //TODO fieldMap
190
- return this.submitRequestTrigger(props)
191
- } else {
192
- return false
193
- }
194
- },
195
- [BUILT_IN_EVENT_NAMES.CANCEL] (props = {}) {
196
- this.$emit(BUILT_IN_EVENT_NAMES.CANCEL, { ...props })
197
- }
198
- },
199
- async mounted() {
200
- this.setFieldsValue(this.collectDefaultValues())
201
- await this.preRequestTrigger()
202
- await this.infoRequestTrigger()
203
- this.$emit(RESERVE_EVENT_NAMES.INIT_FORM, { exposed: this.exposed })
204
- }
205
- }
206
- </script>
207
-
208
- <style lang="scss" scoped>
209
- .form__model--wrapper {
210
- width: 100%;
211
- height: 100%;
212
- overflow: auto;
213
- background: #fff;
214
- .form-model__title {
215
- height: 56px;
216
- padding: 0 16px;
217
- display: flex;
218
- flex-direction: row;
219
- align-items: center;
220
- border-bottom: 1px solid var(--idooel-form-title-border-color);
221
- }
222
- .form-model__content {
223
- padding: 16px;
224
- }
225
- .form-model__footer {
226
- /* width: 100%; */
227
- height: 64px;
228
- position: fixed;
229
- bottom: 0;
230
- display: flex;
231
- float: right;
232
- flex-direction: row;
233
- align-items: center;
234
- justify-content: end;
235
- }
236
- }
1
+ <template>
2
+ <div class="form__model--wrapper">
3
+ <div class="form-model__title" v-if="title">
4
+ {{ title }}
5
+ </div>
6
+ <div class="form-model__content">
7
+ <ele-alert style="margin-bottom: 16px;" v-if="alertMeta" v-bind="alertMeta"></ele-alert>
8
+ <ele-form :ref="formRef" @change="onChangeFormStatus($event)" :elements="elements" :disabled="globalDisabled"></ele-form>
9
+ </div>
10
+ <div class="form-model__footer" v-if="footerMeta">
11
+ <ele-button-group v-on="assignAttrForEvents" :data-source="footerElements"></ele-button-group>
12
+ </div>
13
+ </div>
14
+ </template>
15
+
16
+ <script>
17
+ import { BUILT_IN_EVENT_NAMES, parseFieldMap, RESERVE_EVENT_NAMES, PAGE_STATUS, CONTEXT, BUILT_IN_METHODS_NAMES } from '../../../utils'
18
+ import { v4 as uuidv4 } from 'uuid'
19
+ import { net, type } from '@idooel/shared'
20
+ import { parse } from '@idooel/expression'
21
+ export default {
22
+ name: 'ele-form-model',
23
+ props: {
24
+ disabled: {
25
+ type: [Boolean, String],
26
+ default: '_routeMeta.disabled'
27
+ },
28
+ title: {
29
+ type: String
30
+ },
31
+ formMeta: {
32
+ type: Object
33
+ },
34
+ footerMeta: {
35
+ type: Object
36
+ }
37
+ },
38
+ data() {
39
+ return {}
40
+ },
41
+ provide () {
42
+ return {
43
+ [CONTEXT]: () => {
44
+ return {
45
+ exposed: this.exposed
46
+ }
47
+ }
48
+ }
49
+ },
50
+ computed: {
51
+ globalDisabled () {
52
+ return this.executeExpression(this.disabled)
53
+ },
54
+ formRef () {
55
+ return uuidv4()
56
+ },
57
+ exposed () {
58
+ return {
59
+ setFieldsValue: this.setFieldsValue,
60
+ validateFields: this.validateFields,
61
+ getFieldsValue: this.getFieldsValue,
62
+ executeExpressions: this.executeExpressions,
63
+ route: this.$route,
64
+ [BUILT_IN_METHODS_NAMES.SUBMIT_FORM]: this.submitRequestTrigger
65
+ }
66
+ },
67
+ assignAttrForEvents () {
68
+ const events = this.footerElements.reduce((ret, ele) => {
69
+ ret[ele.eventName] = (e) => {
70
+ this.$emit(ele.eventName || 'click', { ...e, formModel: this.formModels(), exposed: this.exposed })
71
+ }
72
+ return ret
73
+ }, {})
74
+ return {
75
+ ...this.$listeners,
76
+ ...events,
77
+ [BUILT_IN_EVENT_NAMES.SUBMIT]: this[BUILT_IN_EVENT_NAMES.SUBMIT],
78
+ [BUILT_IN_EVENT_NAMES.CANCEL]: this[BUILT_IN_EVENT_NAMES.CANCEL]
79
+ }
80
+ },
81
+ elements () {
82
+ const { elements } = this.formMeta
83
+ return elements
84
+ },
85
+ preRequest () {
86
+ const { preRequest = {} } = this.formMeta
87
+ return preRequest
88
+ },
89
+ infoRequest () {
90
+ const { infoRequest = {} } = this.formMeta
91
+ return infoRequest
92
+ },
93
+ alertMeta () {
94
+ const { alert = {} } = this.formMeta
95
+ return type.isEmpty(alert) ? null : alert
96
+ },
97
+ submitRequest () {
98
+ const { submitRequest = {} } = this.formMeta
99
+ return submitRequest
100
+ },
101
+ footerElements () {
102
+ const { elements } = this.footerMeta
103
+ return elements.call(this)
104
+ },
105
+ expressionData () {
106
+ return {
107
+ _route: this.$route.query,
108
+ _routeMeta: this.$route.meta
109
+ }
110
+ },
111
+ routeMetaMode () {
112
+ return this.$route.meta.mode
113
+ }
114
+ },
115
+ methods: {
116
+ collectDefaultValues () {
117
+ const ret = this.elements.reduce((ret, props) => {
118
+ const { name, defaultValue } = props
119
+ if (defaultValue) {
120
+ ret[name] = defaultValue
121
+ }
122
+ return ret
123
+ }, {})
124
+ return ret
125
+ },
126
+ onChangeFormStatus (props) {
127
+ this.$emit(RESERVE_EVENT_NAMES.WATCH_FORM_STATUS, { ...props })
128
+ },
129
+ formModels (fieldNames) {
130
+ return this.$refs[this.formRef] ? this.$refs[this.formRef].getFieldsValue(fieldNames) : {}
131
+ },
132
+ executeExpression (expression, dataSource = {}) {
133
+ if (type.isBool(expression)) return expression
134
+ if (type.isEmpty(expression)) return false
135
+ return parse(expression, { ...this.expressionData, ...this.formModels(), ...dataSource })
136
+ },
137
+ execFieldMap (fieldMap = {}, dataSource = {}) {
138
+ const ret = parseFieldMap(fieldMap, { ...this.expressionData, ...dataSource})
139
+ return ret
140
+ },
141
+ async submitRequestTrigger (props = {}) {
142
+ const { url, requestType, headers = {}, params = {}, fieldMap = {} } = this.submitRequest
143
+ const currentUrl = this.executeExpressionForUrl(url)
144
+ if (!currentUrl) return
145
+ const ret = await net[requestType.toLowerCase()](currentUrl, { ...params, ...this.execFieldMap(fieldMap, { ...this.formModels() }), ...this.formModels() }, { headers }).then(resp => {
146
+ this.$emit(BUILT_IN_EVENT_NAMES.SUBMIT, { ...props, formModel: { ...this.formModels(), ...resp.data || {} } })
147
+ return resp.data
148
+ })
149
+ return ret
150
+ },
151
+ async infoRequestTrigger () {
152
+ if (PAGE_STATUS.CREATE == this.routeMetaMode) return
153
+ const { url, requestType, params = {}, fieldMap = {}, headers = {} } = this.infoRequest
154
+ const currentUrl = this.executeExpressionForUrl(url)
155
+ if (!currentUrl) return
156
+ net[requestType.toLowerCase()](currentUrl, { ...params, ...this.execFieldMap(fieldMap) }, { ...headers }).then(resp => {
157
+ const { data = {} } = resp
158
+ this.setFieldsValue(data)
159
+ this.$emit(RESERVE_EVENT_NAMES.INIT_FORM, { ...data })
160
+ })
161
+ },
162
+ async preRequestTrigger () {
163
+ const { url, requestType = 'GET', params = {}, fieldMap = {}, headers = {} } = this.preRequest
164
+ const currentUrl = this.executeExpressionForUrl(url)
165
+ if (!currentUrl) return
166
+ const { data } = await net[requestType.toLowerCase()](currentUrl, { ...params, ...this.execFieldMap(fieldMap) }, { ...headers })
167
+ this.setFieldsValue(data)
168
+ this.$emit(RESERVE_EVENT_NAMES.INIT_FORM, { ...data })
169
+ },
170
+ executeExpressionForUrl (url) {
171
+ return type.isApi(url) ? url : this.executeExpression(url)
172
+ },
173
+ setFieldsValue (props) {
174
+ this.$refs[this.formRef].setFieldsValue(props)
175
+ },
176
+ getFieldsValue (fieldNames) {
177
+ return this.$refs[this.formRef].getFieldsValue(fieldNames)
178
+ },
179
+ executeExpressions () {
180
+ return this.$refs[this.formRef].evalShowExpression()
181
+ },
182
+ validateFields () {
183
+ return this.$refs[this.formRef].validateFields()
184
+ },
185
+ [BUILT_IN_EVENT_NAMES.SUBMIT] (props = {}) {
186
+ if (this.globalDisabled) return
187
+ const status = this.$refs[this.formRef].validateFields()
188
+ if (status) {
189
+ //TODO fieldMap
190
+ return this.submitRequestTrigger(props)
191
+ } else {
192
+ return false
193
+ }
194
+ },
195
+ [BUILT_IN_EVENT_NAMES.CANCEL] (props = {}) {
196
+ this.$emit(BUILT_IN_EVENT_NAMES.CANCEL, { ...props })
197
+ }
198
+ },
199
+ async mounted() {
200
+ this.setFieldsValue(this.collectDefaultValues())
201
+ await this.preRequestTrigger()
202
+ await this.infoRequestTrigger()
203
+ this.$emit(RESERVE_EVENT_NAMES.INIT_FORM, { exposed: this.exposed })
204
+ }
205
+ }
206
+ </script>
207
+
208
+ <style lang="scss" scoped>
209
+ .form__model--wrapper {
210
+ width: 100%;
211
+ height: 100%;
212
+ overflow: auto;
213
+ background: #fff;
214
+ .form-model__title {
215
+ height: 56px;
216
+ padding: 0 16px;
217
+ display: flex;
218
+ flex-direction: row;
219
+ align-items: center;
220
+ border-bottom: 1px solid var(--idooel-form-title-border-color);
221
+ }
222
+ .form-model__content {
223
+ padding: 16px;
224
+ }
225
+ .form-model__footer {
226
+ /* width: 100%; */
227
+ height: 64px;
228
+ position: fixed;
229
+ bottom: 0;
230
+ display: flex;
231
+ float: right;
232
+ flex-direction: row;
233
+ align-items: center;
234
+ justify-content: end;
235
+ }
236
+ }
237
237
  </style>
@@ -1,5 +1,5 @@
1
- import EleStepModel from './src/index.vue'
2
-
3
- EleStepModel.install = Vue => Vue.component(EleStepModel.name, EleStepModel)
4
-
1
+ import EleStepModel from './src/index.vue'
2
+
3
+ EleStepModel.install = Vue => Vue.component(EleStepModel.name, EleStepModel)
4
+
5
5
  export default EleStepModel