@suzhou-lab/page-components 1.0.0 → 1.0.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/README.md +89 -12
- package/filter-form.vue +10 -2
- package/list-page.vue +3 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -46,23 +46,23 @@ npm install 装组件 → npx install-skills 部署技能 → 组件和AI技能
|
|
|
46
46
|
|
|
47
47
|
```
|
|
48
48
|
┌──────────────────────────────────────────┐
|
|
49
|
-
│ #aside(可选) │ 主区域 │
|
|
50
|
-
│ 左侧面板 │ ┌────────────────┐ │
|
|
51
|
-
│ │ │ #filter 筛选区 │ │
|
|
52
|
-
│ │ ├────────────────┤ │
|
|
53
|
-
│ │ │ #toolbar 工具栏 │ │
|
|
54
|
-
│ │ ├────────────────┤ │
|
|
55
|
-
│ │ │ default slot │ │
|
|
56
|
-
│ │ │ <el-table> │ │
|
|
57
|
-
│ │ ├────────────────┤ │
|
|
58
|
-
│ │ │ #pagination │ │
|
|
49
|
+
│ #aside(可选) │ 主区域 │ #right(可选) │
|
|
50
|
+
│ 左侧面板 │ ┌────────────────┐ │ 右侧面板 │
|
|
51
|
+
│ │ │ #filter 筛选区 │ │ │
|
|
52
|
+
│ │ ├────────────────┤ │ │
|
|
53
|
+
│ │ │ #toolbar 工具栏 │ │ │
|
|
54
|
+
│ │ ├────────────────┤ │ │
|
|
55
|
+
│ │ │ default slot │ │ │
|
|
56
|
+
│ │ │ <el-table> │ │ │
|
|
57
|
+
│ │ ├────────────────┤ │ │
|
|
58
|
+
│ │ │ #pagination │ │ │
|
|
59
59
|
│ │ └────────────────┘ │
|
|
60
60
|
└──────────────────────────────────────────┘
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
核心能力:
|
|
64
64
|
- **自动计算表格高度**:通过 `ResizeObserver` 监听容器变化,提供 `tableHeight` 给表格 `:height` 绑定
|
|
65
|
-
- **插槽驱动**:`#filter`、`#toolbar`、`#pagination`、`#aside`
|
|
65
|
+
- **插槽驱动**:`#filter`、`#toolbar`、`#pagination`、`#aside`、`#right` 五个插槽,按需使用
|
|
66
66
|
|
|
67
67
|
### 2.3 filter-form:配置驱动筛选
|
|
68
68
|
|
|
@@ -82,7 +82,7 @@ filterItems() {
|
|
|
82
82
|
|
|
83
83
|
支持的 `type`:`input`、`select`、`yearpicker`、`monthpicker`、`datepicker`、`daterange`、`cascader`、`custom`。
|
|
84
84
|
|
|
85
|
-
高级特性:条件显隐(`visible`)、联动回调(`onChange
|
|
85
|
+
高级特性:条件显隐(`visible`)、联动回调(`onChange`)、折叠展开(超过一行自动折叠)、列数配置(`columns` 属性)。
|
|
86
86
|
|
|
87
87
|
---
|
|
88
88
|
|
|
@@ -497,3 +497,80 @@ npx install-skills
|
|
|
497
497
|
- `collect-ui`(采集)
|
|
498
498
|
- `review-ui`(评审)
|
|
499
499
|
- 其他基于 Vue 2 + Vue CLI 3 + Element UI + qiankun 的微应用
|
|
500
|
+
|
|
501
|
+
---
|
|
502
|
+
|
|
503
|
+
## 9. 组件 API
|
|
504
|
+
|
|
505
|
+
### 9.1 `<list-page>`
|
|
506
|
+
|
|
507
|
+
**Props**
|
|
508
|
+
|
|
509
|
+
| 属性 | 类型 | 默认值 | 说明 |
|
|
510
|
+
|------|------|--------|------|
|
|
511
|
+
| `asideWidth` | `String` | `'240px'` | 左侧面板宽度 |
|
|
512
|
+
|
|
513
|
+
**Slots**
|
|
514
|
+
|
|
515
|
+
| 插槽 | 说明 |
|
|
516
|
+
|------|------|
|
|
517
|
+
| `#aside` | 左侧面板,有内容时自动显示 |
|
|
518
|
+
| `#filter` | 筛选区,放 `<filter-form>` |
|
|
519
|
+
| `#toolbar` | 工具栏按钮区 |
|
|
520
|
+
| default | 主内容区,放 `<el-table>` |
|
|
521
|
+
| `#pagination` | 分页区 |
|
|
522
|
+
| `#right` | 右侧面板,如"已选项目列表"等并排面板 |
|
|
523
|
+
|
|
524
|
+
**Provide**
|
|
525
|
+
|
|
526
|
+
| 注入值 | 说明 |
|
|
527
|
+
|--------|------|
|
|
528
|
+
| `listPage.tableHeight` | 动态计算的表格可用高度,表格通过 `inject` + `:height="tableHeight"` 绑定 |
|
|
529
|
+
|
|
530
|
+
### 9.2 `<filter-form>`
|
|
531
|
+
|
|
532
|
+
**Props**
|
|
533
|
+
|
|
534
|
+
| 属性 | 类型 | 默认值 | 说明 |
|
|
535
|
+
|------|------|--------|------|
|
|
536
|
+
| `items` | `Array` | `[]` | 筛选项配置数组,每项见下方 Item 字段 |
|
|
537
|
+
| `model` / `v-model` | `Object` | `{}` | 筛选数据双向绑定 |
|
|
538
|
+
| `columns` | `Number` | `4` | 每行列数:`3`(一行 3 个)或 `4`(一行 4 个) |
|
|
539
|
+
| `collapsed` | `Boolean` | `true` | 初始是否折叠 |
|
|
540
|
+
| `defaultRowCount` | `Number` | `1` | 折叠时显示的行数 |
|
|
541
|
+
| `loading` | `Boolean` | `false` | 查询按钮 loading 状态 |
|
|
542
|
+
| `labelWidth` | `String` | `'112px'` | 标签宽度 |
|
|
543
|
+
|
|
544
|
+
**Events**
|
|
545
|
+
|
|
546
|
+
| 事件 | 参数 | 说明 |
|
|
547
|
+
|------|------|------|
|
|
548
|
+
| `@search` | `model` | 点击查询按钮,参数为当前筛选数据 |
|
|
549
|
+
| `@reset` | `model` | 点击重置按钮,参数为重置后的筛选数据 |
|
|
550
|
+
|
|
551
|
+
**Item 配置字段**
|
|
552
|
+
|
|
553
|
+
| 字段 | 类型 | 说明 |
|
|
554
|
+
|------|------|------|
|
|
555
|
+
| `label` | `String` | 标签文本 |
|
|
556
|
+
| `prop` | `String` | 绑定到 model 的字段名 |
|
|
557
|
+
| `type` | `String` | 控件类型:`input` \| `select` \| `yearpicker` \| `monthpicker` \| `datepicker` \| `daterange` \| `cascader` \| `custom` |
|
|
558
|
+
| `span` | `Number` | 栅格宽度(默认 `24 / columns`),如 `8`(3 列)或 `6`(4 列) |
|
|
559
|
+
| `options` | `Array \| Function` | 选项列表,格式 `[{ value, label }]`,支持函数动态返回 |
|
|
560
|
+
| `visible` | `Boolean \| Function` | 条件显隐,支持函数动态判断 |
|
|
561
|
+
| `onChange` | `Function` | 值变化回调,参数 `(value, model)` |
|
|
562
|
+
| `placeholder` | `String` | 占位文本 |
|
|
563
|
+
| `clearable` | `Boolean` | 是否可清空(默认 `true`) |
|
|
564
|
+
| `filterable` | `Boolean` | 是否可搜索(select/cascader 默认 `true`) |
|
|
565
|
+
| `disabled` | `Boolean` | 是否禁用 |
|
|
566
|
+
| `multiple` | `Boolean` | 是否多选(select) |
|
|
567
|
+
| `cascaderProps` | `Object` | cascader 的 `:props` 配置 |
|
|
568
|
+
| `valueFormat` | `String` | 日期控件值格式 |
|
|
569
|
+
| `component` | `Component` | 自定义组件(type=`custom` 时) |
|
|
570
|
+
| `attrs` | `Object` | 自定义组件的额外属性 |
|
|
571
|
+
|
|
572
|
+
---
|
|
573
|
+
|
|
574
|
+
## 更新日志
|
|
575
|
+
|
|
576
|
+
详见 [CHANGELOG.md](./CHANGELOG.md)
|
package/filter-form.vue
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<div class="filter-form" ref="filterForm">
|
|
3
3
|
<el-form :inline="false" label-position="right">
|
|
4
4
|
<el-row type="flex" :gutter="16">
|
|
5
|
-
<el-col v-for="(item, idx) in visibleItems" :key="item.prop || idx" :span="item.span ||
|
|
5
|
+
<el-col v-for="(item, idx) in visibleItems" :key="item.prop || idx" :span="item.span || defaultSpan"
|
|
6
6
|
:class="{ 'is-hidden': !getItemVisible(item) }">
|
|
7
7
|
<el-form-item :label="item.label" :label-width="labelWidth">
|
|
8
8
|
<el-input v-if="item.type === 'input'" v-model="internalModel[item.prop]"
|
|
@@ -95,6 +95,11 @@ export default {
|
|
|
95
95
|
type: Boolean,
|
|
96
96
|
default: true
|
|
97
97
|
},
|
|
98
|
+
// 列数:3(一行3个)或 4(一行4个),默认 4
|
|
99
|
+
columns: {
|
|
100
|
+
type: Number,
|
|
101
|
+
default: 4
|
|
102
|
+
},
|
|
98
103
|
defaultRowCount: {
|
|
99
104
|
type: Number,
|
|
100
105
|
default: 1
|
|
@@ -115,8 +120,11 @@ export default {
|
|
|
115
120
|
}
|
|
116
121
|
},
|
|
117
122
|
computed: {
|
|
123
|
+
defaultSpan() {
|
|
124
|
+
return 24 / this.columns
|
|
125
|
+
},
|
|
118
126
|
colsPerRow() {
|
|
119
|
-
return
|
|
127
|
+
return this.columns
|
|
120
128
|
},
|
|
121
129
|
maxVisible() {
|
|
122
130
|
return this.defaultRowCount * this.colsPerRow
|
package/list-page.vue
CHANGED