element-assits 0.0.1
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/README.md +273 -0
- package/lib/index.js +6248 -0
- package/lib/style.css +1 -0
- package/lib/style.scss +461 -0
- package/package.json +34 -0
package/README.md
ADDED
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
# [element-assits](https://github.com/kunben/element-assits)
|
|
2
|
+
|
|
3
|
+
## 介绍
|
|
4
|
+
element-ui 为了适用范围更广,组件灵活性很高。在实际的业务开发过程中,需要对其进行适当的封装以适应项目并提高开发效率。
|
|
5
|
+
|
|
6
|
+
此项目扩展了 element-ui 的表格和表单组件,使其在多表格和表单的项目中更易于使用。
|
|
7
|
+
|
|
8
|
+
## 快速开始
|
|
9
|
+
安装:
|
|
10
|
+
`npm i element-assits -S` (确保已经安装了`vue` 和 `element-ui`)
|
|
11
|
+
|
|
12
|
+
引入:
|
|
13
|
+
```
|
|
14
|
+
// 入口文件 main.js
|
|
15
|
+
import Vue from 'vue'
|
|
16
|
+
import Element from 'element-ui'
|
|
17
|
+
import 'element-ui/lib/theme-chalk/index.css'
|
|
18
|
+
import ElementAssits from 'element-assits'
|
|
19
|
+
import 'element-assits/lib/style.scss'
|
|
20
|
+
|
|
21
|
+
Vue.use(Element)
|
|
22
|
+
VUe.use(ElementAssits)
|
|
23
|
+
// ...
|
|
24
|
+
```
|
|
25
|
+
使用:
|
|
26
|
+
默认全局注册了 `EaForm` `EaTable` `EaSelect` `EaModal` `EaPopover` 等组件
|
|
27
|
+
Vue 原型上挂载了 `$asyncLoad` 方法
|
|
28
|
+
ElementAssits 还提供了 `uuid` `recursive` 两个工具函数
|
|
29
|
+
|
|
30
|
+
## 用法
|
|
31
|
+
|
|
32
|
+
> 详细文档有时间再补全
|
|
33
|
+
|
|
34
|
+
### 表格组件 EaTable
|
|
35
|
+
此组件扩展了 el-table 组件。不同的是:
|
|
36
|
+
- 它完全使用对象数组来控制表格列
|
|
37
|
+
- 封装了搜索栏,动态宽度,动态折叠等
|
|
38
|
+
- 封装了分页组件,自动分页
|
|
39
|
+
- 各个位置留有菜单栏插槽,合理布局
|
|
40
|
+
|
|
41
|
+
## props
|
|
42
|
+
| 属性名 | 含义 | 类型 | 默认值 |
|
|
43
|
+
|:---|:---|:---|:---|
|
|
44
|
+
| column | 列信息数组| Array | [] |
|
|
45
|
+
| data | 表格数据 | Array | [] |
|
|
46
|
+
| pageRequest | 分页请求 | Function | undefined |
|
|
47
|
+
| loading | 表格加载状态 | Boolean | undefined |
|
|
48
|
+
| initRequest | 是否初始化发送请求 | Boolean | true |
|
|
49
|
+
| innerForm | 内部 - 表单(搜索栏) | Boolean \| Object | undefined |
|
|
50
|
+
| innerIndex | 内部 - 索引 | Boolean \| Object | true
|
|
51
|
+
| innerSelection | 内部 - 选中列 | Boolean \| Object | undefined
|
|
52
|
+
| innerPagination | 内部 - 分页 | Boolean \| Object | undefined
|
|
53
|
+
| innerOperation | 内部 - 操作栏(尾列)| Boolean \| Object | undefined
|
|
54
|
+
|
|
55
|
+
## methods
|
|
56
|
+
|
|
57
|
+
| 方法名 | 说明 | 参数 |
|
|
58
|
+
|:---|:---|:---|
|
|
59
|
+
| handleSearch | 执行搜索 | 无 |
|
|
60
|
+
| handleRefresh | 执行刷新 | 无 |
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
## slots
|
|
64
|
+
| 插槽名 | 默认值 | 说明 |
|
|
65
|
+
|:---|:---|:---|
|
|
66
|
+
| table | 表格 | 如果不想用表格来渲染数据,此处可自定义渲染数据的方式
|
|
67
|
+
| top-menu | 无 | 顶部菜单
|
|
68
|
+
| row-menu | 无 | 行菜单,需要 initOperation 至少为true
|
|
69
|
+
| bottom-menu | 无 | 底部菜单
|
|
70
|
+
| before-column | 无 | 表格内部列之前
|
|
71
|
+
| after-column | 无 | 表格内部列之后
|
|
72
|
+
|
|
73
|
+
## column-attributes
|
|
74
|
+
| 属性名 | 类型 | 默认值 | 说明 |
|
|
75
|
+
|:---|:---|:---|:---|
|
|
76
|
+
| label | String | undefined | 列名
|
|
77
|
+
| prop | String | undefined | 列属性名
|
|
78
|
+
| show | Boolean | undefined | 是否显示,非 false 即显示
|
|
79
|
+
| bind | Object | undefined | v-bind 至对应的 el-table-column 组件
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
### 表单组件 EaForm
|
|
84
|
+
```
|
|
85
|
+
// form
|
|
86
|
+
props: {
|
|
87
|
+
model: { type: Object, default: () => ({}) },
|
|
88
|
+
rules: { type: Object, default: () => ({}) },
|
|
89
|
+
column: { type: Array, default: () => ([]) },
|
|
90
|
+
labelWidth: { type: String, default: undefined },
|
|
91
|
+
inline: { type: Boolean, default: false },
|
|
92
|
+
dense: { type: Boolean, default: false }
|
|
93
|
+
},
|
|
94
|
+
methods: {
|
|
95
|
+
setData (row) {
|
|
96
|
+
// 设置表单值
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// form-item
|
|
100
|
+
{
|
|
101
|
+
label: '名称', // 必须,标签名 String | Function
|
|
102
|
+
prop: 'name', // 必须,属性名 String
|
|
103
|
+
required: true, // 可选(默认false),是否必填 Boolean
|
|
104
|
+
component: 'el-input', // 可选(默认el-input),所用组件 String | Component
|
|
105
|
+
rules: [], // 可选,校验规则 Array | Function
|
|
106
|
+
bind: {}, // 可选,组件v-bind Object
|
|
107
|
+
on: {}, // 可选,组件v-on Object
|
|
108
|
+
span: 12, // 可选(默认12),所占栅格
|
|
109
|
+
pull: 12, // 可选,栅格偏移
|
|
110
|
+
push: 12, // 可选,栅格偏移
|
|
111
|
+
offset: 12, // 可选,栅格偏移
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### 按钮 EaButton
|
|
116
|
+
```
|
|
117
|
+
props: {
|
|
118
|
+
customType: { type: String, default: undefined },
|
|
119
|
+
tooltip: { type: String, default: undefined },
|
|
120
|
+
disabled: { type: Boolean, default: false },
|
|
121
|
+
feat: { type: String, default: undefined },
|
|
122
|
+
type: { type: String, default: undefined },
|
|
123
|
+
icon: { type: String, default: undefined }
|
|
124
|
+
}
|
|
125
|
+
// 示例
|
|
126
|
+
<EaButton feat="primary|el-icon-plus|添加" />
|
|
127
|
+
```
|
|
128
|
+
### 弹窗 EaModal
|
|
129
|
+
```
|
|
130
|
+
// 允许拖拽,允许少量修改布局,简化按钮
|
|
131
|
+
// 绑定confirm事件,出现确定按钮
|
|
132
|
+
// 绑定cancel事件,出现取消按钮
|
|
133
|
+
props: {
|
|
134
|
+
customClass: { type: String, default: undefined },
|
|
135
|
+
confirmLoading: { type: Boolean, default: false },
|
|
136
|
+
margin: { type: String, default: undefined },
|
|
137
|
+
bodyPadding: { type: String, default: undefined },
|
|
138
|
+
bodyMinHeight: { type: String, default: undefined },
|
|
139
|
+
allowDrag: { type: Boolean, default: true }
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
### 数字输入框 EaNumber
|
|
143
|
+
```
|
|
144
|
+
// 定制样式
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### 气泡框 EaPopover
|
|
148
|
+
```
|
|
149
|
+
// 函数式Popover,允许异步调用
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### 单选框 EaRadio
|
|
153
|
+
```
|
|
154
|
+
// 允许绑定数据和异步数据,允许默认选中
|
|
155
|
+
props: {
|
|
156
|
+
data: { type: Array, default: undefined },
|
|
157
|
+
asyncData: { type: Function, default: undefined },
|
|
158
|
+
props: { type: Object, default: undefined },
|
|
159
|
+
defaultFirst: { type: Boolean, default: false },
|
|
160
|
+
innerRadio: { type: Object, default: undefined },
|
|
161
|
+
type: { type: String, default: undefined }
|
|
162
|
+
},
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### 滚动容器 EaScroll
|
|
166
|
+
```
|
|
167
|
+
// el-scrollbar 衍生,优化样式
|
|
168
|
+
props: {
|
|
169
|
+
wrapStyle: { type: String, default: '' }
|
|
170
|
+
},
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### 下拉框 EaSelect
|
|
174
|
+
```
|
|
175
|
+
// 允许异步数据,允许大数据量虚拟滚动
|
|
176
|
+
props: {
|
|
177
|
+
value: { type: [String, Array, Number], default: undefined },
|
|
178
|
+
label: { type: String, default: undefined },
|
|
179
|
+
data: { type: Array, default: () => [] },
|
|
180
|
+
asyncData: { type: Function, default: undefined },
|
|
181
|
+
props: { type: Object, default: undefined },
|
|
182
|
+
itemMaxWidth: { type: [Number, Array], default: 150 },
|
|
183
|
+
popperClass: { type: String, default: undefined }
|
|
184
|
+
},
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### 分割面板 EaSplit
|
|
188
|
+
```
|
|
189
|
+
// 分割面板,允许拖拽
|
|
190
|
+
props: {
|
|
191
|
+
default: { type: Number, default: 0.2 },
|
|
192
|
+
min: { type: Number, default: 0.2 },
|
|
193
|
+
max: { type: Number, default: 0.5 }
|
|
194
|
+
},
|
|
195
|
+
<slot name="left" />
|
|
196
|
+
<slot name="center" />
|
|
197
|
+
<slot name="right" />
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### 树 EaTree
|
|
201
|
+
```
|
|
202
|
+
// 与el-tree相比,带搜索框和搜索方法,带scrollbar,允许设置剩余高度,异步数据
|
|
203
|
+
props: {
|
|
204
|
+
inputPlaceholder: {
|
|
205
|
+
type: String,
|
|
206
|
+
default: '请输入关键字搜索'
|
|
207
|
+
},
|
|
208
|
+
remainingHeight: {
|
|
209
|
+
type: Number,
|
|
210
|
+
default: 200
|
|
211
|
+
},
|
|
212
|
+
props: {
|
|
213
|
+
type: Object,
|
|
214
|
+
default: undefined
|
|
215
|
+
},
|
|
216
|
+
data: {
|
|
217
|
+
type: Array,
|
|
218
|
+
default: undefined
|
|
219
|
+
},
|
|
220
|
+
asyncData: {
|
|
221
|
+
type: Function,
|
|
222
|
+
default: undefined
|
|
223
|
+
},
|
|
224
|
+
filterNodeMethod: {
|
|
225
|
+
type: Function,
|
|
226
|
+
default: undefined
|
|
227
|
+
},
|
|
228
|
+
emptyText: {
|
|
229
|
+
type: String,
|
|
230
|
+
default: '暂无数据'
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### 列表 EaList
|
|
236
|
+
```
|
|
237
|
+
// 允许pageRequest分页无限滚动,允许虚拟滚动,允许剩余高度
|
|
238
|
+
props: {
|
|
239
|
+
data: { type: Array, default: undefined },
|
|
240
|
+
pageRequest: { type: Function, default: undefined },
|
|
241
|
+
initRequest: { type: Boolean, default: true },
|
|
242
|
+
itemSize: { type: Number, default: 30 },
|
|
243
|
+
remainingHeight: { type: Number, default: 200 },
|
|
244
|
+
page: { type: Object, default: undefined },
|
|
245
|
+
redundancy: { type: Number, default: undefined }
|
|
246
|
+
},
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### 描述列表 EaDesc
|
|
250
|
+
```
|
|
251
|
+
props: {
|
|
252
|
+
title: { type: String, default: undefined },
|
|
253
|
+
data: { type: Object, required: true },
|
|
254
|
+
column: { type: Array, required: true },
|
|
255
|
+
labelWidth: { type: [Number, String], default: 100 },
|
|
256
|
+
split: { type: Number, default: 2 },
|
|
257
|
+
diff: { type: Array, default: undefined },
|
|
258
|
+
gutter: { type: Number, default: 0 }
|
|
259
|
+
},
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### 弹窗文件上传 EaFileUpload
|
|
263
|
+
```
|
|
264
|
+
props: {
|
|
265
|
+
title: { type: String, default: '文件上传' },
|
|
266
|
+
multiple: { type: Boolean, default: false },
|
|
267
|
+
limit: { type: Number, default: 1 },
|
|
268
|
+
suffix: { type: String, default: 'xlsx,xls' },
|
|
269
|
+
httpRequest: { type: Function, required: true },
|
|
270
|
+
httpTemplate: { type: Function, default: undefined },
|
|
271
|
+
httpFinally: { type: Function, default: undefined }
|
|
272
|
+
},
|
|
273
|
+
```
|