@idooel/components 0.0.1-beta.1 → 0.0.1-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/@idooel/components.esm.js +2295 -378
  2. package/dist/@idooel/components.umd.js +2306 -388
  3. package/package.json +3 -2
  4. package/packages/attachment/index.js +0 -0
  5. package/packages/attachment/src/index.vue +15 -0
  6. package/packages/batch-export/index.js +5 -0
  7. package/packages/batch-export/src/index.vue +15 -0
  8. package/packages/checkbox/index.js +5 -0
  9. package/packages/checkbox/src/index.vue +44 -0
  10. package/packages/composite-components/button-group/src/index.vue +0 -5
  11. package/packages/composite-components/search-area/src/index.vue +75 -40
  12. package/packages/form/index.js +5 -0
  13. package/packages/form/src/index.vue +119 -0
  14. package/packages/form-model/index.js +5 -0
  15. package/packages/form-model/src/index.vue +139 -0
  16. package/packages/icon/index.js +5 -0
  17. package/packages/icon/src/index.vue +32 -0
  18. package/packages/index.js +25 -2
  19. package/packages/input/src/index.vue +5 -1
  20. package/packages/input-number/index.js +5 -0
  21. package/packages/input-number/src/index.vue +24 -0
  22. package/packages/modal/index.js +5 -0
  23. package/packages/modal/src/index.vue +129 -0
  24. package/packages/radio/index.js +5 -0
  25. package/packages/radio/src/index.vue +48 -0
  26. package/packages/select-entity/index.js +5 -0
  27. package/packages/select-entity/src/index.vue +114 -0
  28. package/packages/table/src/action.vue +1 -1
  29. package/packages/text/index.js +5 -0
  30. package/packages/text/src/index.vue +15 -0
  31. package/packages/textarea/index.js +5 -0
  32. package/packages/textarea/src/index.vue +49 -0
  33. package/packages/theme/form.scss +24 -0
  34. package/packages/theme/index.scss +12 -0
  35. package/packages/theme/variables.scss +23 -1
  36. package/packages/tree-table-model/src/index.vue +35 -27
  37. package/packages/upload/index.js +5 -0
  38. package/packages/upload/src/index.vue +351 -0
  39. package/packages/utils/index.js +4 -0
  40. package/scripts/rollup.config.js +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@idooel/components",
3
- "version": "0.0.1-beta.1",
3
+ "version": "0.0.1-beta.2",
4
4
  "description": "",
5
5
  "private": false,
6
6
  "main": "dist/@idooel/components.umd.js",
@@ -18,7 +18,8 @@
18
18
  "peerDependencies": {
19
19
  "@idooel/shared": "workspace:^0.0.1",
20
20
  "ant-design-vue": "1.7.8",
21
- "moment": "^2.30.1"
21
+ "moment": "^2.30.1",
22
+ "vue-upload-component": "^2.8.23"
22
23
  },
23
24
  "devDependencies": {
24
25
  "@babel/core": "7.17.9",
File without changes
@@ -0,0 +1,15 @@
1
+ <template>
2
+ <div>
3
+ attachment
4
+ </div>
5
+ </template>
6
+
7
+ <script>
8
+ export default {
9
+ name: 'ele-attachment'
10
+ }
11
+ </script>
12
+
13
+ <style lang="scss" scoped>
14
+
15
+ </style>
@@ -0,0 +1,5 @@
1
+ import EleBatchExport from './src/index.vue'
2
+
3
+ EleBatchExport.install = Vue => Vue.component(EleBatchExport.name, EleBatchExport)
4
+
5
+ export default EleBatchExport
@@ -0,0 +1,15 @@
1
+ <template>
2
+ <div>
3
+ export
4
+ </div>
5
+ </template>
6
+
7
+ <script>
8
+ export default {
9
+ name: 'ele-batch-export'
10
+ }
11
+ </script>
12
+
13
+ <style lang="scss" scoped>
14
+
15
+ </style>
@@ -0,0 +1,5 @@
1
+ import EleCheckbox from './src/index.vue'
2
+
3
+ EleCheckbox.install = Vue => Vue.component(EleCheckbox.name, EleCheckbox)
4
+
5
+ export default EleCheckbox
@@ -0,0 +1,44 @@
1
+ <template>
2
+ <a-checkbox-group :options="dataSource" :disabled="disabled" :defaultValue="value" @change="onChange"></a-checkbox-group>
3
+ </template>
4
+
5
+ <script>
6
+ export default {
7
+ name: 'ele-checkbox',
8
+ props: {
9
+ value: {
10
+ type: Array
11
+ },
12
+ dataSource: {
13
+ type: Array,
14
+ default: () => []
15
+ },
16
+ disabled: {
17
+ type: Boolean,
18
+ default: false
19
+ }
20
+ },
21
+ methods: {
22
+ onChange (value) {
23
+ this.$emit('change', value)
24
+ this.$emit('input', value)
25
+ }
26
+ }
27
+ }
28
+ </script>
29
+ <style lang="scss" scoped>
30
+ .ant-checkbox-group {
31
+ text-align: left;
32
+ line-height: 32px;
33
+ }
34
+ .has-error {
35
+ .ant-checkbox-group {
36
+ ::v-deep .ant-checkbox-wrapper {
37
+ color: var(--idooel-form-border-err-color);
38
+ }
39
+ ::v-deep .ant-checkbox-inner {
40
+ border-color: var(--idooel-form-border-err-color);
41
+ }
42
+ }
43
+ }
44
+ </style>
@@ -27,11 +27,6 @@ export default {
27
27
  type: Array,
28
28
  default: () => []
29
29
  }
30
- },
31
- methods: {
32
- handleClick (props) {
33
- this.$emit('click', props)
34
- }
35
30
  }
36
31
  }
37
32
  </script>
@@ -1,33 +1,35 @@
1
1
  <template>
2
2
  <div class="search-area__wrapper">
3
3
  <a-row :gutter="gutter">
4
- <a-col :span="item.span || span" v-for="(item, idx) in innerDataSource" :key="idx">
5
- <div v-if="item.type == '_action'" class="search-area__item search-area--action">
6
- <ele-button icon="search" type="primary" @click="handleClickSearch">查询</ele-button>
7
- <ele-button style="margin-left:8px;" icon="reload" @click="handleClickReset">重置</ele-button>
8
- <div class="expand-collapse" @click="handleClickExpandCollapse">
9
- <span class="expand-collapse__text">{{ isExpand ? '收起' : '展开' }}</span>
10
- <span class="expand-collapse__icon">
11
- <a-icon v-if="isExpand" type="up" />
12
- <a-icon v-else type="down" />
13
- </span>
4
+ <template v-for="(item, idx) in innerDataSource">
5
+ <a-col v-if="item._show" :span="item.span || span" :key="idx">
6
+ <div v-if="item.type == '_action'" class="search-area__item search-area--action">
7
+ <ele-button icon="search" type="primary" @click="handleClickSearch">查询</ele-button>
8
+ <ele-button style="margin-left:8px;" icon="reload" @click="handleClickReset">重置</ele-button>
9
+ <div class="expand-collapse" @click="handleClickExpandCollapse">
10
+ <span class="expand-collapse__text">{{ isExpand ? '收起' : '展开' }}</span>
11
+ <span class="expand-collapse__icon">
12
+ <a-icon v-if="isExpand" type="up" />
13
+ <a-icon v-else type="down" />
14
+ </span>
15
+ </div>
14
16
  </div>
15
- </div>
16
- <div v-else class="search-area__item">
17
- <template v-if="item.type == 'Input'">
18
- <Label :label="item.label"></Label>
19
- <ele-input v-model="item._value"></ele-input>
20
- </template>
21
- <template v-else-if="item.type == 'Select'">
22
- <Label :label="item.label"></Label>
23
- <ele-select v-model="item._value" :data-source="item.optionList"></ele-select>
24
- </template>
25
- <template v-else-if="item.type == 'DatePicker'">
26
- <Label :label="item.label"></Label>
27
- <ele-date v-model="item._value" :format="item.format"></ele-date>
28
- </template>
29
- </div>
30
- </a-col>
17
+ <div v-else class="search-area__item">
18
+ <template v-if="item.type == 'Input'">
19
+ <Label :label="item.label"></Label>
20
+ <ele-input v-model="item._value"></ele-input>
21
+ </template>
22
+ <template v-else-if="item.type == 'Select'">
23
+ <Label :label="item.label"></Label>
24
+ <ele-select v-model="item._value" :data-source="item.optionList"></ele-select>
25
+ </template>
26
+ <template v-else-if="item.type == 'DatePicker'">
27
+ <Label :label="item.label"></Label>
28
+ <ele-date v-model="item._value" :format="item.format"></ele-date>
29
+ </template>
30
+ </div>
31
+ </a-col>
32
+ </template>
31
33
  </a-row>
32
34
  </div>
33
35
  </template>
@@ -39,6 +41,7 @@ import ELeButton from '../../../button/src/index.vue'
39
41
  import EleDate from '../../../date/src/index.vue'
40
42
  import Label from './label.vue'
41
43
  import moment from 'moment'
44
+ import { parse } from '@idooel/expression'
42
45
  export default {
43
46
  name: 'ele-search-area',
44
47
  components: {
@@ -66,26 +69,54 @@ export default {
66
69
  },
67
70
  data() {
68
71
  return {
69
- isExpand: false,
70
- collapseDataSource: []
72
+ isExpand: false
71
73
  }
72
74
  },
73
75
  computed: {
74
- actionColOffset () {
75
- return ((24 / this.span) - 1) * this.span
76
+ cuttingFormula () {
77
+ return (24 / this.span - 1)
78
+ },
79
+ buildDataSource () {
80
+ return this.controlDisplayByFormula(this.mapDefaultValueToValue())
76
81
  },
77
82
  innerDataSource () {
78
- return this.isExpand ? [ ...this.dataSource, { type: '_action' }] : [ ...this.collapseDataSource, { type: '_action' }]
83
+ return [ ...this.buildDataSource, { type: '_action', _show: true }]
79
84
  }
80
85
  },
81
- created() {
82
- this.collapseDataSource = this.dataSource.slice(0, (24 / this.span - 1))
83
- },
86
+ created() {},
84
87
  methods: {
85
- handleClickExpandCollapse () {
86
- if (!this.isExpand) {
87
- this.collapseDataSource = this.dataSource.slice(0, (24 / this.span - 1))
88
+ controlDisplayByFormula (dataSource = []) {
89
+ if (this.isExpand) {
90
+ dataSource.forEach(item => {
91
+ this.$set(item, '_show', true)
92
+ })
93
+ } else {
94
+ dataSource.forEach((item, idx) => {
95
+ if (idx < this.cuttingFormula) {
96
+ this.$set(item, '_show', true)
97
+ } else {
98
+ this.$set(item, '_show', false)
99
+ }
100
+ })
88
101
  }
102
+ return dataSource
103
+ },
104
+ buildDefaultValue (arg) {
105
+ if (!arg || arg.charAt(0) !== '_') return arg
106
+ return parse(arg, {
107
+ _route: this.$route.query
108
+ })
109
+ },
110
+ mapDefaultValueToValue () {
111
+ this.dataSource.forEach(props => {
112
+ this.$set(props, '_show', this.isExpand)
113
+ if (props.defaultValue) {
114
+ this.$set(props, '_value', this.buildDefaultValue(props.defaultValue))
115
+ }
116
+ })
117
+ return this.dataSource
118
+ },
119
+ handleClickExpandCollapse () {
89
120
  this.isExpand = !this.isExpand
90
121
  },
91
122
  handleClickSearch () {
@@ -108,15 +139,19 @@ export default {
108
139
  },
109
140
  handleClickReset () {
110
141
  this.innerDataSource.filter(item => item.type !== '_action').forEach(item => {
142
+ const { defaultValue } = item
111
143
  switch (item.type) {
112
144
  case 'Select':
113
- this.$set(item, '_value', null)
145
+ defaultValue && this.$set(item, '_value', this.buildDefaultValue(defaultValue))
146
+ !defaultValue && this.$set(item, '_value', null)
114
147
  break
115
148
  case 'DatePicker':
116
- this.$set(item, '_value', undefined)
149
+ defaultValue && this.$set(item, '_value', this.buildDefaultValue(defaultValue))
150
+ !defaultValue && this.$set(item, '_value', undefined)
117
151
  break
118
152
  default:
119
- this.$set(item, '_value', null)
153
+ defaultValue && this.$set(item, '_value', this.buildDefaultValue(defaultValue))
154
+ !defaultValue && this.$set(item, '_value', null)
120
155
  break
121
156
  }
122
157
  })
@@ -0,0 +1,5 @@
1
+ import EleForm from './src/index.vue'
2
+
3
+ EleForm.install = Vue => Vue.component(EleForm.name, EleForm)
4
+
5
+ export default EleForm
@@ -0,0 +1,119 @@
1
+ <template>
2
+ <div class="ele__form--wrapper">
3
+ <a-form :form="form" layout="vertical" class="ant-advanced-search-form">
4
+ <a-row :gutter="24">
5
+ <a-col :span="ele.span" v-for="ele in elements" :key="ele.name">
6
+ <template v-if="ele.type == 'Input'">
7
+ <a-form-item :label="`${ele.label}:`">
8
+ <ele-input :max-length="ele.maxLength" v-decorator="[ele.name, { rules: ele.rules }]" style="width:100%;"></ele-input>
9
+ </a-form-item>
10
+ </template>
11
+ <template v-else-if="ele.type == 'Textarea'">
12
+ <a-form-item :label="`${ele.label}:`">
13
+ <ele-textarea
14
+ @on-change="onChangeTextarea($event, ele)"
15
+ :max-length="ele.maxLength"
16
+ :autosize="ele.autosize"
17
+ :allow-clear="ele.allowClear"
18
+ :placeholder="ele.placeholder"
19
+ v-decorator="[ele.name, { rules: ele.rules }]"
20
+ style="width:100%;">
21
+ </ele-textarea>
22
+ </a-form-item>
23
+ </template>
24
+ <template v-else-if="ele.type == 'Select'">
25
+ <a-form-item :label="`${ele.label}:`">
26
+ <ele-select :data-source="ele.optionList" v-decorator="[ele.name, { rules: ele.rules }]" style="width:100%;"></ele-select>
27
+ </a-form-item>
28
+ </template>
29
+ <template v-else-if="ele.type == 'ele-upload'">
30
+ <a-form-item :label="`${ele.label}:`">
31
+ <ele-upload v-decorator="[ele.name, { rules: ele.rules }]" style="width:100%;"></ele-upload>
32
+ </a-form-item>
33
+ </template>
34
+ <template v-else-if="ele.type == 'SelectEntity'">
35
+ <a-form-item :label="`${ele.label}:`">
36
+ <ele-select-entity v-decorator="[ele.name, { rules: ele.rules }]" style="width:100%;"></ele-select-entity>
37
+ </a-form-item>
38
+ </template>
39
+ <template v-else-if="ele.type == 'InputNumber'">
40
+ <a-form-item :label="`${ele.label}:`">
41
+ <ele-input-number :precision="ele.precision" v-decorator="[ele.name, { rules: ele.rules }]" v-bind="ele.props" style="width:100%;"></ele-input-number>
42
+ </a-form-item>
43
+ </template>
44
+ <template v-else-if="ele.type == 'Checkbox'">
45
+ <a-form-item :label="`${ele.label}:`">
46
+ <ele-checkbox :data-source="ele.optionList" v-decorator="[ele.name, { rules: ele.rules }]" style="width:100%;"></ele-checkbox>
47
+ </a-form-item>
48
+ </template>
49
+ <template v-else-if="ele.type == 'Radio'">
50
+ <a-form-item :label="`${ele.label}:`">
51
+ <ele-radio :data-source="ele.optionList" v-decorator="[ele.name, { rules: ele.rules }]" style="width:100%;"></ele-radio>
52
+ </a-form-item>
53
+ </template>
54
+ </a-col>
55
+ </a-row>
56
+ </a-form>
57
+ </div>
58
+ </template>
59
+
60
+ <script>
61
+ import EleSelect from '../../select/src/index.vue'
62
+ import EleInput from '../../input/src/index.vue'
63
+ import EleTextarea from '../../textarea/src/index.vue'
64
+ import EleUpload from '../../upload/src/index.vue'
65
+ import EleSelectEntity from '../../select-entity/src/index.vue'
66
+ import EleInputNumber from '../../input-number/src/index.vue'
67
+ import EleCheckbox from '../../checkbox/src/index.vue'
68
+ import EleRadio from '../../radio/src/index.vue'
69
+ export default {
70
+ name: 'ele-form',
71
+ components: {
72
+ EleSelect,
73
+ EleInput,
74
+ EleTextarea,
75
+ EleUpload,
76
+ EleSelectEntity,
77
+ EleInputNumber,
78
+ EleCheckbox,
79
+ EleRadio
80
+ },
81
+ props: {
82
+ elements: {
83
+ type: Array,
84
+ default: () => []
85
+ }
86
+ },
87
+ data () {
88
+ return {
89
+ some: '1',
90
+ form: this.$form.createForm(this, { name: 'coordinated' })
91
+ }
92
+ },
93
+ methods: {
94
+ onChangeTextarea (value, props) {
95
+ this.setFieldsValue({ [props.name]: value })
96
+ },
97
+ validateFields () {
98
+ let ret = false
99
+ this.form.validateFields((error, values) => {
100
+ ret = !error
101
+ })
102
+ return ret
103
+ },
104
+ setFieldsValue (props = {}) {
105
+ this.form.setFieldsValue(props)
106
+ },
107
+ getFieldsValue () {
108
+ return this.form.getFieldsValue()
109
+ }
110
+ }
111
+ }
112
+ </script>
113
+
114
+ <style lang="scss" scoped>
115
+ .ele__form--wrapper {
116
+ .ant-form-item {
117
+ }
118
+ }
119
+ </style>
@@ -0,0 +1,5 @@
1
+ import EleFormPageModel from './src/index.vue'
2
+
3
+ EleFormPageModel.install = Vue => Vue.component(EleFormPageModel.name, EleFormPageModel)
4
+
5
+ export default EleFormPageModel
@@ -0,0 +1,139 @@
1
+ <template>
2
+ <div class="form__model--wrapper">
3
+ <div class="form-model__title">
4
+ {{ title }}
5
+ </div>
6
+ <div class="form-model__content">
7
+ <ele-form :ref="formRef" :elements="elements"></ele-form>
8
+ </div>
9
+ <div class="form-model__footer">
10
+ <ele-button-group v-on="assignAttrForEvents" :data-source="footerElements"></ele-button-group>
11
+ </div>
12
+ </div>
13
+ </template>
14
+
15
+ <script>
16
+ import EleButtonGroup from '../../composite-components/button-group/src/index.vue'
17
+ import { BUILT_IN_EVENT_NAMES } from '../../utils'
18
+ import { v4 as uuidv4 } from 'uuid'
19
+ import { net } from '@idooel/shared'
20
+ export default {
21
+ name: 'ele-form-model',
22
+ components: {
23
+ EleButtonGroup
24
+ },
25
+ props: {
26
+ title: {
27
+ type: String
28
+ },
29
+ formMeta: {
30
+ type: Object
31
+ },
32
+ footerMeta: {
33
+ type: Object
34
+ }
35
+ },
36
+ data() {
37
+ return {}
38
+ },
39
+ computed: {
40
+ formRef () {
41
+ return uuidv4()
42
+ },
43
+ assignAttrForEvents () {
44
+ const events = this.footerElements.reduce((ret, ele) => {
45
+ ret[ele.eventName] = (e) => {
46
+ this.$emit(ele.eventName || 'click', { ...e, formModel: this.formModels })
47
+ }
48
+ return ret
49
+ }, {})
50
+ return {
51
+ ...this.$listeners,
52
+ ...events,
53
+ [BUILT_IN_EVENT_NAMES.SUBMIT]: this[BUILT_IN_EVENT_NAMES.SUBMIT],
54
+ [BUILT_IN_EVENT_NAMES.CANCEL]: this[BUILT_IN_EVENT_NAMES.CANCEL]
55
+ }
56
+ },
57
+ elements () {
58
+ const { elements } = this.formMeta
59
+ return elements
60
+ },
61
+ preRequest () {
62
+ const { preRequest } = this.formMeta
63
+ return preRequest
64
+ },
65
+ infoRequest () {
66
+ const { infoRequest } = this.formMeta
67
+ return infoRequest
68
+ },
69
+ submitRequest () {
70
+ const { submitRequest } = this.formMeta
71
+ return submitRequest
72
+ },
73
+ footerElements () {
74
+ const { elements } = this.footerMeta
75
+ return elements.call(this)
76
+ },
77
+ formModels () {
78
+ return this.$refs[this.formRef].getFieldsValue()
79
+ }
80
+ },
81
+ methods: {
82
+ async submitRequestTrigger () {},
83
+ async infoRequestTrigger () {},
84
+ async preRequestTrigger () {
85
+ const { url, requestType = 'GET', fieldMap = {} } = this.preRequest
86
+ if (!url) return
87
+ await net[requestType.toLowerCase()](url, {})
88
+ },
89
+ setValueForField (props) {
90
+ this.$refs[this.formRef].setFieldsValue(props)
91
+ },
92
+ [BUILT_IN_EVENT_NAMES.SUBMIT] (props) {
93
+ const status = this.$refs[this.formRef].validateFields()
94
+ console.log('status', status)
95
+ if (status) {
96
+ console.log('status', this.formModels)
97
+ } else {
98
+ console.log('error')
99
+ }
100
+ },
101
+ [BUILT_IN_EVENT_NAMES.CANCEL] (props) {
102
+ console.log('inner CANCEL', props)
103
+ }
104
+ },
105
+ async mounted() {
106
+ await this.preRequestTrigger()
107
+ await this.infoRequestTrigger()
108
+ }
109
+ }
110
+ </script>
111
+
112
+ <style lang="scss" scoped>
113
+ .form__model--wrapper {
114
+ width: 100%;
115
+ height: 100%;
116
+ overflow: auto;
117
+ .form-model__title {
118
+ height: 56px;
119
+ padding: 0 16px;
120
+ display: flex;
121
+ flex-direction: row;
122
+ align-items: center;
123
+ border-bottom: 1px solid var(--idooel-form-title-border-color);
124
+ }
125
+ .form-model__content {
126
+ padding: 16px;
127
+ }
128
+ .form-model__footer {
129
+ width: 100%;
130
+ height: 64px;
131
+ position: fixed;
132
+ bottom: 0;
133
+ display: flex;
134
+ flex-direction: row;
135
+ align-items: center;
136
+ justify-content: end;
137
+ }
138
+ }
139
+ </style>
@@ -0,0 +1,5 @@
1
+ import EleIcon from './src/index.vue'
2
+
3
+ EleIcon.install = Vue => Vue.component(EleIcon.name, EleIcon)
4
+
5
+ export default EleIcon
@@ -0,0 +1,32 @@
1
+ <template>
2
+ <a-icon
3
+ v-if="isAntIcon"
4
+ :type="type"
5
+ :theme="theme">
6
+ </a-icon>
7
+ <i :class="['iconfont', type]" v-else></i>
8
+ </template>
9
+
10
+ <script>
11
+ export default {
12
+ name: 'ele-icon',
13
+ props: {
14
+ type: {
15
+ type: String,
16
+ default: ''
17
+ },
18
+ theme: {
19
+ type: String
20
+ }
21
+ },
22
+ computed: {
23
+ isAntIcon() {
24
+ const prefix = this.type.slice(0, 5)
25
+ if (prefix === 'icon-') {
26
+ return false
27
+ }
28
+ return true
29
+ }
30
+ }
31
+ }
32
+ </script>
package/packages/index.js CHANGED
@@ -5,11 +5,22 @@ import EleSelect from './select/index.js'
5
5
  import EleTable from './table/index.js'
6
6
  import EleTree from './tree/index.js'
7
7
  import EleTpl from './tpl/index.js'
8
+ import EleForm from './form/index.js'
9
+ import GText from './text/index.js'
10
+ import EleUpload from './upload/index.js'
11
+ import EleSelectEntity from './select-entity/index.js'
12
+ import EleIcon from './icon/index.js'
13
+ import EleInputNumber from './input-number/index.js'
14
+ import EleModal from './modal/index.js'
15
+ import EleCheckbox from './checkbox/index.js'
16
+ import EleRadio from './radio/index.js'
17
+ import EleBatchExport from './batch-export/index.js'
8
18
 
9
19
  import EleButtonGroup from './composite-components/button-group/index.js'
10
20
  import EleSearchArea from './composite-components/search-area/index.js'
11
21
 
12
22
  import EleTreeTableModel from './tree-table-model/index.js'
23
+ import EleFormPageModel from './form-model/index.js'
13
24
 
14
25
  const compositeComponents = [
15
26
  EleButtonGroup,
@@ -17,7 +28,8 @@ const compositeComponents = [
17
28
  ]
18
29
 
19
30
  export const models = [
20
- EleTreeTableModel
31
+ EleTreeTableModel,
32
+ EleFormPageModel
21
33
  ]
22
34
 
23
35
  const components = [
@@ -28,6 +40,16 @@ const components = [
28
40
  EleTable,
29
41
  EleTree,
30
42
  EleTpl,
43
+ EleForm,
44
+ GText,
45
+ EleUpload,
46
+ EleSelectEntity,
47
+ EleIcon,
48
+ EleInputNumber,
49
+ EleModal,
50
+ EleCheckbox,
51
+ EleRadio,
52
+ EleBatchExport,
31
53
  ...compositeComponents,
32
54
  ...models
33
55
  ]
@@ -47,5 +69,6 @@ export {
47
69
  EleSelect,
48
70
  EleTable,
49
71
  EleTree,
50
- EleTpl
72
+ EleTpl,
73
+ EleModal
51
74
  }
@@ -1,11 +1,15 @@
1
1
  <template>
2
- <a-input :value="value" @change="onChange"></a-input>
2
+ <a-input :value="value" :max-length="maxLength" @change="onChange"></a-input>
3
3
  </template>
4
4
 
5
5
  <script>
6
6
  export default {
7
7
  name: 'ele-input',
8
8
  props: {
9
+ maxLength: {
10
+ type: Number,
11
+ default: 125
12
+ },
9
13
  value: {
10
14
  type: String
11
15
  }
@@ -0,0 +1,5 @@
1
+ import EleInputNumber from './src/index.vue'
2
+
3
+ EleInputNumber.install = Vue => Vue.component(EleInputNumber.name, EleInputNumber)
4
+
5
+ export default EleInputNumber