joy-admin-components 0.2.76 → 0.2.78

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "joy-admin-components",
3
- "version": "0.2.76",
3
+ "version": "0.2.78",
4
4
  "main": "./dist/joy-admin-components.umd.js",
5
5
  "module": "./dist/joy-admin-components.es.js",
6
6
  "types": "./src/index.d.ts",
@@ -42,8 +42,8 @@
42
42
  "vue": "^3.5.29",
43
43
  "vue-i18n": "^11.3.0",
44
44
  "vuex": "^4.1.0",
45
- "vxe-pc-ui": "4.4.26",
46
- "vxe-table": "4.12.0"
45
+ "vxe-pc-ui": "^4.4.26",
46
+ "vxe-table": "^4.12.0"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@vitejs/plugin-vue": "^6.0.5",
@@ -55,7 +55,7 @@
55
55
  "vue-i18n": "^11.3.0",
56
56
  "vue-router": "4.5.0",
57
57
  "vuex": "^4.1.0",
58
- "vxe-pc-ui": "4.4.26",
59
- "vxe-table": "4.12.0"
58
+ "vxe-pc-ui": "^4.4.26",
59
+ "vxe-table": "^4.12.0"
60
60
  }
61
61
  }
@@ -0,0 +1,273 @@
1
+ # ListPage 全局配置使用指南
2
+
3
+ ## 快速开始
4
+
5
+ ### 1. 在项目入口配置一次(main.js)
6
+
7
+ ```js
8
+ import { setListPageConfig } from 'joy-admin-components';
9
+
10
+ // 配置全局分页参数(根据后端接口规范配置)
11
+ setListPageConfig({
12
+ // 分页参数名
13
+ pageNoKey: 'pageNum', // 页码参数名,默认 'pageNo'
14
+ pageSizeKey: 'pageSize', // 每页条数参数名,默认 'pageSize'
15
+
16
+ // 分页默认值
17
+ defaultPageSize: 10, // 默认每页条数,默认 10
18
+ pageSizes: [10, 20, 50, 100], // 分页选项,默认 [10, 50, 100, 500]
19
+
20
+ // 响应数据字段映射(支持多种格式,按优先级尝试)
21
+ responseDataKeys: {
22
+ rows: ['data', 'list', 'rows'], // 数据列表字段,默认 ['rows', 'records']
23
+ total: ['totalCount', 'total'], // 总条数字段,默认 ['totalRows', 'total']
24
+ },
25
+
26
+ // UI 功能默认配置
27
+ showSearch: true, // 是否显示搜索栏,默认 false
28
+ showPage: true, // 是否显示分页,默认 false
29
+ showShadow: true, // 是否显示阴影,默认 false
30
+ showCheckBox: true, // 是否显示复选框列,默认 false
31
+ enableCellCopy: true, // 是否启用单元格复制,默认 true
32
+ });
33
+ ```
34
+
35
+ ### 2. 组件中无需再传配置参数
36
+
37
+ ```vue
38
+ <template>
39
+ <!-- 之前:每次都要传各种配置 -->
40
+ <ListPage
41
+ :api="getListApi"
42
+ :searchForm="{
43
+ pageNoKey: 'pageNum', // ❌ 不需要了!
44
+ showSearch: true, // ❌ 不需要了!
45
+ showPage: true, // ❌ 不需要了!
46
+ showCheckBox: true, // ❌ 不需要了!
47
+ items: []
48
+ }"
49
+ />
50
+
51
+ <!-- 现在:直接使用,自动采用全局配置 -->
52
+ <ListPage
53
+ :api="getListApi"
54
+ :searchForm="{ items: [] }"
55
+ />
56
+ </template>
57
+ ```
58
+
59
+ ## 配置项详解
60
+
61
+ ### 完整配置项
62
+
63
+ ```js
64
+ setListPageConfig({
65
+ // === 请求参数配置 ===
66
+ pageNoKey: 'pageNo', // 页码参数名
67
+ pageSizeKey: 'pageSize', // 每页条数参数名
68
+
69
+ // === 默认值配置 ===
70
+ defaultPageSize: 10, // 默认每页显示条数
71
+ pageSizes: [10, 50, 100, 500], // 分页器下拉选项
72
+
73
+ // === 响应数据字段映射 ===
74
+ responseDataKeys: {
75
+ rows: ['rows', 'records'], // 数据列表字段名(优先级从左到右)
76
+ total: ['totalRows', 'total'], // 总条数字段名
77
+ },
78
+
79
+ // === UI 功能默认配置 ===
80
+ showSearch: false, // 是否显示搜索栏
81
+ showPage: false, // 是否显示分页
82
+ showShadow: false, // 是否显示阴影
83
+ showCheckBox: false, // 是否显示复选框列
84
+ enableCellCopy: true, // 是否启用单元格复制功能
85
+ });
86
+ ```
87
+
88
+ ### 按需覆盖(特殊场景)
89
+
90
+ 如果某个页面的配置与全局配置不同,可以单独覆盖:
91
+
92
+ ```vue
93
+ <template>
94
+ <!-- 覆盖分页参数名 -->
95
+ <ListPage
96
+ :api="getListApi"
97
+ :searchForm="{
98
+ pageNoKey: 'page', // 覆盖全局的 pageNoKey
99
+ pageSizeKey: 'limit', // 覆盖全局的 pageSizeKey
100
+ items: []
101
+ }"
102
+ />
103
+
104
+ <!-- 覆盖分页默认值和选项 -->
105
+ <ListPage
106
+ :api="getListApi"
107
+ :searchForm="{
108
+ defaultPageSize: 50, // 覆盖默认每页条数
109
+ pageSizes: [50, 100], // 覆盖分页选项
110
+ items: []
111
+ }"
112
+ />
113
+
114
+ <!-- 覆盖 UI 功能配置 -->
115
+ <ListPage
116
+ :api="getListApi"
117
+ :searchForm="{
118
+ showSearch: false, // 这个表格不显示搜索栏
119
+ showCheckBox: false, // 这个表格不显示复选框
120
+ enableCellCopy: false, // 这个表格禁用单元格复制
121
+ items: []
122
+ }"
123
+ />
124
+ </template>
125
+ ```
126
+
127
+ ## 常见后端接口格式示例
128
+
129
+ ### 示例 1:标准格式
130
+
131
+ **接口规范:**
132
+ - 请求:`{ pageNo: 1, pageSize: 10 }`
133
+ - 响应:`{ code: 200, data: { rows: [], total: 100 } }`
134
+
135
+ **配置:**
136
+ ```js
137
+ // 默认配置,无需额外设置
138
+ setListPageConfig({
139
+ pageNoKey: 'pageNo',
140
+ pageSizeKey: 'pageSize',
141
+ responseDataKeys: {
142
+ rows: ['rows', 'records'],
143
+ total: ['totalRows', 'total'],
144
+ },
145
+ });
146
+ ```
147
+
148
+ ### 示例 2:自定义格式
149
+
150
+ **接口规范:**
151
+ - 请求:`{ pageNum: 1, limit: 10 }`
152
+ - 响应:`{ code: 0, data: { list: [], totalCount: 100 } }`
153
+
154
+ **配置:**
155
+ ```js
156
+ setListPageConfig({
157
+ pageNoKey: 'pageNum',
158
+ pageSizeKey: 'limit',
159
+ responseDataKeys: {
160
+ rows: ['list'],
161
+ total: ['totalCount'],
162
+ },
163
+ });
164
+ ```
165
+
166
+ ### 示例 3:兼容多种格式
167
+
168
+ **接口规范:**
169
+ - 有的接口返回 `rows`,有的返回 `records`,还有的返回 `list`
170
+ - 有的接口返回 `total`,有的返回 `totalCount`
171
+
172
+ **配置:**
173
+ ```js
174
+ setListPageConfig({
175
+ responseDataKeys: {
176
+ // 按优先级尝试,找到第一个存在的字段
177
+ rows: ['list', 'rows', 'records', 'data'],
178
+ total: ['totalCount', 'total', 'totalRows'],
179
+ },
180
+ });
181
+ ```
182
+
183
+ ## API 文档
184
+
185
+ ### setListPageConfig(config)
186
+
187
+ 设置全局配置。
188
+
189
+ **参数:**
190
+ - `config` (Object) - 配置对象
191
+ - `pageNoKey` (String) - 页码参数名
192
+ - `pageSizeKey` (String) - 每页条数参数名
193
+ - `defaultPageSize` (Number) - 默认每页条数
194
+ - `pageSizes` (Array\<Number\>) - 分页选项
195
+ - `responseDataKeys` (Object) - 响应数据字段映射
196
+ - `rows` (Array\<String\>) - 数据列表字段名
197
+ - `total` (Array\<String\>) - 总条数字段名
198
+ - `showSearch` (Boolean) - 是否显示搜索栏
199
+ - `showPage` (Boolean) - 是否显示分页
200
+ - `showShadow` (Boolean) - 是否显示阴影
201
+ - `showCheckBox` (Boolean) - 是否显示复选框列
202
+ - `enableCellCopy` (Boolean) - 是否启用单元格复制功能
203
+
204
+ **示例:**
205
+ ```js
206
+ setListPageConfig({
207
+ pageNoKey: 'pageNum',
208
+ defaultPageSize: 20,
209
+ });
210
+ ```
211
+
212
+ ### getListPageConfig()
213
+
214
+ 获取当前全局配置。
215
+
216
+ **返回:**
217
+ - (Object) 当前配置对象
218
+
219
+ **示例:**
220
+ ```js
221
+ const config = getListPageConfig();
222
+ console.log(config.pageNoKey); // 'pageNo'
223
+ ```
224
+
225
+ ### resetListPageConfig()
226
+
227
+ 重置为默认配置。
228
+
229
+ **示例:**
230
+ ```js
231
+ resetListPageConfig();
232
+ ```
233
+
234
+ ## 优势
235
+
236
+ ✅ **配置一次,全项目生效** - 不用每个页面都传分页参数和 UI 配置
237
+ ✅ **灵活覆盖** - 特殊场景可单独配置
238
+ ✅ **兼容多种接口格式** - 支持配置多个字段名按优先级尝试
239
+ ✅ **统一管理** - 所有表格的默认行为统一管理,易于维护
240
+ ✅ **向后兼容** - 不影响现有代码
241
+
242
+ ## 典型使用场景
243
+
244
+ ### 场景 1:全项目表格都需要搜索、分页和复选框
245
+
246
+ ```js
247
+ // main.js - 全局配置
248
+ setListPageConfig({
249
+ showSearch: true,
250
+ showPage: true,
251
+ showCheckBox: true,
252
+ });
253
+ ```
254
+
255
+ ```vue
256
+ <!-- 各个页面中 - 简洁! -->
257
+ <ListPage :api="getUserList" :searchForm="{ items: searchItems }" />
258
+ <ListPage :api="getOrderList" :searchForm="{ items: searchItems }" />
259
+ ```
260
+
261
+ ### 场景 2:个别页面不需要某些功能
262
+
263
+ ```vue
264
+ <!-- 某个简单的查看页面,只需要展示数据 -->
265
+ <ListPage
266
+ :api="getLogList"
267
+ :searchForm="{
268
+ showSearch: false, // 不需要搜索
269
+ showCheckBox: false, // 不需要复选框
270
+ items: []
271
+ }"
272
+ />
273
+ ```