@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.
- package/dist/@idooel/components.esm.js +2295 -378
- package/dist/@idooel/components.umd.js +2306 -388
- package/package.json +3 -2
- package/packages/attachment/index.js +0 -0
- package/packages/attachment/src/index.vue +15 -0
- package/packages/batch-export/index.js +5 -0
- package/packages/batch-export/src/index.vue +15 -0
- package/packages/checkbox/index.js +5 -0
- package/packages/checkbox/src/index.vue +44 -0
- package/packages/composite-components/button-group/src/index.vue +0 -5
- package/packages/composite-components/search-area/src/index.vue +75 -40
- package/packages/form/index.js +5 -0
- package/packages/form/src/index.vue +119 -0
- package/packages/form-model/index.js +5 -0
- package/packages/form-model/src/index.vue +139 -0
- package/packages/icon/index.js +5 -0
- package/packages/icon/src/index.vue +32 -0
- package/packages/index.js +25 -2
- package/packages/input/src/index.vue +5 -1
- package/packages/input-number/index.js +5 -0
- package/packages/input-number/src/index.vue +24 -0
- package/packages/modal/index.js +5 -0
- package/packages/modal/src/index.vue +129 -0
- package/packages/radio/index.js +5 -0
- package/packages/radio/src/index.vue +48 -0
- package/packages/select-entity/index.js +5 -0
- package/packages/select-entity/src/index.vue +114 -0
- package/packages/table/src/action.vue +1 -1
- package/packages/text/index.js +5 -0
- package/packages/text/src/index.vue +15 -0
- package/packages/textarea/index.js +5 -0
- package/packages/textarea/src/index.vue +49 -0
- package/packages/theme/form.scss +24 -0
- package/packages/theme/index.scss +12 -0
- package/packages/theme/variables.scss +23 -1
- package/packages/tree-table-model/src/index.vue +35 -27
- package/packages/upload/index.js +5 -0
- package/packages/upload/src/index.vue +351 -0
- package/packages/utils/index.js +4 -0
- 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.
|
|
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,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>
|
|
@@ -1,33 +1,35 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="search-area__wrapper">
|
|
3
3
|
<a-row :gutter="gutter">
|
|
4
|
-
<
|
|
5
|
-
<
|
|
6
|
-
<
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
<
|
|
10
|
-
|
|
11
|
-
<
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
</
|
|
29
|
-
</
|
|
30
|
-
</
|
|
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
|
-
|
|
75
|
-
return (
|
|
76
|
+
cuttingFormula () {
|
|
77
|
+
return (24 / this.span - 1)
|
|
78
|
+
},
|
|
79
|
+
buildDataSource () {
|
|
80
|
+
return this.controlDisplayByFormula(this.mapDefaultValueToValue())
|
|
76
81
|
},
|
|
77
82
|
innerDataSource () {
|
|
78
|
-
return
|
|
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
|
-
|
|
86
|
-
if (
|
|
87
|
-
|
|
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',
|
|
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',
|
|
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',
|
|
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,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,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,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
|
}
|