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 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
+ ```