gzkx-package 0.1.49 → 0.1.51

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # 自定义组件使用文档
2
2
 
3
- 本文档详细介绍了项目中四个核心自定义组件的使用方法和参数说明。
3
+ 本文档详细介绍了项目中核心自定义组件和工具 Hooks 的使用方法和参数说明。
4
4
 
5
5
  ---
6
6
 
@@ -9,10 +9,19 @@
9
9
  - [安装](#安装)
10
10
  - [快速开始](#快速开始)
11
11
  - [组件列表](#组件列表)
12
- 1. [CommonPage 通用页面组件](#1-commonpage-通用页面组件)
13
- 2. [CustomTable 自定义表格组件](#2-customtable-自定义表格组件)
14
- 3. [CustomForm 自定义表单组件](#3-customform-自定义表单组件)
15
- 4. [CustomAdd 新增/编辑弹窗组件](#4-customadd-新增编辑弹窗组件)
12
+ 1. [工具 Hooks](#1-工具-hooks)
13
+ - [useHotkeyListener 组合键监听](#11-usehotkeylistener---组合键监听-hook)
14
+ - [useTakeShotHotkey 截图专用组合键](#12-usetakeshothotkey---截图专用组合键-hook)
15
+ - [takeShot 截图接口](#13-takeshot---截图接口)
16
+ 2. [CommonPage 通用页面组件](#2-commonpage-通用页面组件)
17
+ 3. [CustomTable 自定义表格组件](#3-customtable-自定义表格组件)
18
+ 4. [CustomForm 自定义表单组件](#4-customform-自定义表单组件)
19
+ 5. [CustomAdd 新增/编辑弹窗组件](#5-customadd-新增编辑弹窗组件)
20
+ 6. [常见使用场景](#6-常见使用场景)
21
+ 7. [注意事项](#7-注意事项)
22
+ 8. [常见问题](#8-常见问题)
23
+ 9. [更新日志](#9-更新日志)
24
+ 10. [技术支持](#10-技术支持)
16
25
 
17
26
  ---
18
27
 
@@ -146,6 +155,9 @@ export default MyPage;
146
155
  | `CustomTable` | 自定义表格组件 | `import { CustomTable } from 'gzkx-package'` |
147
156
  | `CustomForm` | 自定义表单组件 | `import { CustomForm } from 'gzkx-package'` |
148
157
  | `CustomAdd` | 新增/编辑弹窗组件 | `import { CustomAdd } from 'gzkx-package'` |
158
+ | `useHotkeyListener` | 组合键监听 Hook | `import { useHotkeyListener } from 'gzkx-package'` |
159
+ | `useTakeShotHotkey` | 截图专用组合键 Hook | `import { useTakeShotHotkey } from 'gzkx-package'` |
160
+ | `takeShot` | 截图接口 | `import { takeShot } from 'gzkx-package'` |
149
161
 
150
162
  ### 5. TypeScript 类型导出
151
163
 
@@ -158,6 +170,7 @@ import type {
158
170
  CustomTableHandle, // CustomTable Ref 类型
159
171
  CustomColumnType, // 自定义表格列类型
160
172
  CustomColumnsType, // 自定义表格列数组类型
173
+ HotkeyConfig, // 组合键配置类型
161
174
  } from 'gzkx-package';
162
175
  ```
163
176
 
@@ -165,13 +178,149 @@ import type {
165
178
 
166
179
  ## 组件列表
167
180
 
168
- ## 1. CommonPage 通用页面组件
181
+ ## 1. 工具 Hooks
169
182
 
170
- ### 1.1 组件概述
183
+ ### 1.1 useHotkeyListener - 组合键监听 Hook
184
+
185
+ 用于监听键盘组合键(如 `Ctrl+S`、`Alt+F2`、`Ctrl+Shift+A` 等)。
186
+
187
+ #### 参数
188
+
189
+ | 参数名 | 类型 | 必填 | 默认值 | 说明 |
190
+ |--------|------|------|--------|------|
191
+ | `hotkeys` | `HotkeyConfig[]` | 是 | - | 监听的组合键配置数组 |
192
+ | `onTrigger` | `(hotkey: HotkeyConfig, event: KeyboardEvent) => void` | 是 | - | 组合键触发回调 |
193
+ | `preventDefault` | `boolean` | 否 | `false` | 是否阻止默认行为 |
194
+ | `stopPropagation` | `boolean` | 否 | `false` | 是否阻止事件冒泡 |
195
+
196
+ #### HotkeyConfig 配置
197
+
198
+ ```typescript
199
+ interface HotkeyConfig {
200
+ key: string; // 主键,如 'F2', 's', 'Enter'
201
+ ctrl?: boolean; // 是否按住 Ctrl
202
+ alt?: boolean; // 是否按住 Alt
203
+ shift?: boolean; // 是否按住 Shift
204
+ meta?: boolean; // 是否按住 Meta (Mac Command/Windows Win)
205
+ }
206
+ ```
207
+
208
+ #### 使用示例
209
+
210
+ ```tsx
211
+ import { useHotkeyListener } from 'gzkx-package';
212
+
213
+ const MyComponent = () => {
214
+ // 监听多个组合键
215
+ useHotkeyListener({
216
+ hotkeys: [
217
+ { key: 'F2' }, // 单独 F2
218
+ { key: 'F2', ctrl: true }, // Ctrl+F2
219
+ { key: 's', ctrl: true, shift: true }, // Ctrl+Shift+S
220
+ { key: 'a', alt: true }, // Alt+A
221
+ ],
222
+ onTrigger: (hotkey, event) => {
223
+ console.log('组合键触发:', hotkey);
224
+ // 根据触发的组合键执行不同操作
225
+ },
226
+ preventDefault: true, // 阻止默认行为(如 Ctrl+S 保存页面)
227
+ });
228
+
229
+ return <div>按 F2 或 Ctrl+F2 触发</div>;
230
+ };
231
+ ```
232
+
233
+ ### 1.2 useTakeShotHotkey - 截图专用组合键 Hook
234
+
235
+ 专门用于截图功能的组合键监听 Hook,是 `useHotkeyListener` 的简化封装。
236
+
237
+ #### 参数
238
+
239
+ | 参数名 | 类型 | 必填 | 默认值 | 说明 |
240
+ |--------|------|------|--------|------|
241
+ | `onTakeShot` | `() => void` | 是 | - | 截图触发回调 |
242
+ | `hotkeys` | `HotkeyConfig[]` | 否 | `[{ key: 'F2' }]` | 监听的组合键配置 |
243
+
244
+ #### 使用示例
245
+
246
+ ```tsx
247
+ import { useTakeShotHotkey, takeShot } from 'gzkx-package';
248
+ import { message } from 'antd';
249
+
250
+ const UltrasoundWorkstation = () => {
251
+ // 使用默认 F2 键截图
252
+ useTakeShotHotkey(async () => {
253
+ const result = await takeShot();
254
+ if (result.code === 200) {
255
+ message.success('截图成功');
256
+ console.log('截图数据:', result.data?.imageBase64);
257
+ } else {
258
+ message.error(`截图失败: ${result.msg}`);
259
+ }
260
+ });
261
+
262
+ // 或者自定义组合键
263
+ useTakeShotHotkey(
264
+ async () => {
265
+ const result = await takeShot();
266
+ // 处理截图结果...
267
+ },
268
+ [
269
+ { key: 'F9' }, // F9 截图
270
+ { key: 'p', ctrl: true }, // Ctrl+P 截图
271
+ { key: 's', ctrl: true, shift: true }, // Ctrl+Shift+S 截图
272
+ ]
273
+ );
274
+
275
+ return <div>超声工作站 - 按 F9 或 Ctrl+P 截图</div>;
276
+ };
277
+ ```
278
+
279
+ ### 1.3 takeShot - 截图接口
280
+
281
+ 调用本地截图服务进行截图。
282
+
283
+ #### 配置方法
284
+
285
+ ```tsx
286
+ import { setTakeShotConfig, takeShot } from 'gzkx-package';
287
+
288
+ // 配置截图服务(通常在应用初始化时)
289
+ setTakeShotConfig({
290
+ host: 'localhost', // 截图服务主机
291
+ port: 28081, // 截图服务端口
292
+ timeout: 10000, // 请求超时时间(ms)
293
+ });
294
+ ```
295
+
296
+ #### 使用示例
297
+
298
+ ```tsx
299
+ const handleCapture = async () => {
300
+ const result = await takeShot({
301
+ format: 'png', // 图片格式
302
+ quality: 100, // 图片质量
303
+ });
304
+
305
+ if (result.code === 200) {
306
+ // result.data.imageBase64 - Base64 图片数据
307
+ // result.data.imagePath - 图片保存路径
308
+ console.log('截图成功:', result.data);
309
+ } else {
310
+ console.error('截图失败:', result.msg);
311
+ }
312
+ };
313
+ ```
314
+
315
+ ---
316
+
317
+ ## 3. CommonPage 通用页面组件
318
+
319
+ ### 3.1 组件概述
171
320
 
172
321
  `CommonPage` 是一个集成了搜索表单、数据表格、新增/编辑弹窗的通用页面组件,适用于大部分 CRUD 操作场景。
173
322
 
174
- ### 1.2 Props 参数
323
+ ### 3.2 Props 参数
175
324
 
176
325
  | 参数名 | 类型 | 必填 | 默认值 | 说明 |
177
326
  |--------|------|------|--------|------|
@@ -207,7 +356,7 @@ import type {
207
356
  | `validateConfig` | `ValidateConfig` | 否 | - | 表单验证配置 |
208
357
  | `tableConfig` | `any` | 否 | - | 表格额外配置 |
209
358
 
210
- #### 1.2.1 详细参数说明
359
+ #### 3.2.1 详细参数说明
211
360
 
212
361
  **postParams 对象结构:**
213
362
 
@@ -243,7 +392,7 @@ import type {
243
392
  }
244
393
  ```
245
394
 
246
- ### 1.3 Ref 暴露的方法
395
+ ### 3.3 Ref 暴露的方法
247
396
 
248
397
  使用 `ref` 可以调用组件内部方法:
249
398
 
@@ -262,7 +411,7 @@ interface CommonPageHandle {
262
411
  }
263
412
  ```
264
413
 
265
- ### 1.4 使用示例
414
+ ### 3.4 使用示例
266
415
 
267
416
  ```tsx
268
417
  import { useRef } from 'react';
@@ -406,13 +555,13 @@ export default DemoPage;
406
555
 
407
556
  ---
408
557
 
409
- ## 2. CustomTable 自定义表格组件
558
+ ## 4. CustomTable 自定义表格组件
410
559
 
411
- ### 2.1 组件概述
560
+ ### 4.1 组件概述
412
561
 
413
562
  `CustomTable` 是对 Ant Design Table 组件的增强封装,支持用户自定义表格列配置、保存配置到后端、序号列、树形数据等功能。
414
563
 
415
- ### 2.2 Props 参数
564
+ ### 4.2 Props 参数
416
565
 
417
566
  | 参数名 | 类型 | 必填 | 默认值 | 说明 |
418
567
  |--------|------|------|--------|------|
@@ -428,14 +577,14 @@ export default DemoPage;
428
577
  | `showTableConfig` | `boolean` | 否 | `true` | 是否显示表格配置按钮和序号列 |
429
578
  | `...rest` | `any` | 否 | - | 其他 Ant Design Table 原生属性 |
430
579
 
431
- ### 2.3 特色功能
580
+ ### 4.3 特色功能
432
581
 
433
582
  1. **表格配置功能**:用户可以自定义列的显示、宽度、对齐方式、排序等,配置会保存到后端。
434
583
  2. **自动序号列**:自动添加序号列(可通过 `showTableConfig` 控制)。
435
584
  3. **树形数据支持**:支持展开/收起树形数据。
436
585
  4. **Tooltip 支持**:单元格内容过长时自动显示 Tooltip。
437
586
 
438
- ### 2.4 Ref 暴露的方法
587
+ ### 4.4 Ref 暴露的方法
439
588
 
440
589
  使用 `ref` 可以调用组件内部方法:
441
590
 
@@ -528,7 +677,7 @@ const DemoTable = () => {
528
677
  };
529
678
  ```
530
679
 
531
- ### 2.6 列配置弹窗说明
680
+ ### 4.6 列配置弹窗说明
532
681
 
533
682
  当 `showTableConfig={true}` 时,序号列旁边会显示设置图标,点击后打开配置弹窗,可以配置:
534
683
 
@@ -543,13 +692,13 @@ const DemoTable = () => {
543
692
 
544
693
  ---
545
694
 
546
- ## 3. CustomForm 自定义表单组件
695
+ ## 5. CustomForm 自定义表单组件
547
696
 
548
- ### 3.1 组件概述
697
+ ### 5.1 组件概述
549
698
 
550
699
  `CustomForm` 是一个基于配置的表单组件,通过传入配置数组即可快速生成表单,支持多种表单项类型。
551
700
 
552
- ### 3.2 Props 参数
701
+ ### 5.2 Props 参数
553
702
 
554
703
  | 参数名 | 类型 | 必填 | 默认值 | 说明 |
555
704
  |--------|------|------|--------|------|
@@ -568,7 +717,7 @@ const DemoTable = () => {
568
717
  | `onSearchFormChange` | `Function` | 否 | - | 表单值变化回调 |
569
718
  | `...restFormProps` | `any` | 否 | - | 其他 Ant Design Form 原生属性 |
570
719
 
571
- ### 3.3 FormItemConfig 配置项
720
+ ### 5.3 FormItemConfig 配置项
572
721
 
573
722
  ```typescript
574
723
  interface FormItemConfig {
@@ -593,7 +742,7 @@ interface FormItemOption {
593
742
  }
594
743
  ```
595
744
 
596
- ### 3.4 支持的表单类型
745
+ ### 5.4 支持的表单类型
597
746
 
598
747
  | type 值 | 说明 | 额外属性 |
599
748
  |---------|------|---------|
@@ -607,7 +756,7 @@ interface FormItemOption {
607
756
  | `deptSelect` | 科室选择(自动加载数据) | - |
608
757
  | `orgSelect` | 机构选择(自动加载数据) | - |
609
758
 
610
- ### 3.5 Ref 暴露的方法
759
+ ### 5.5 Ref 暴露的方法
611
760
 
612
761
  ```typescript
613
762
  interface CustomFormHandle {
@@ -616,7 +765,7 @@ interface CustomFormHandle {
616
765
  }
617
766
  ```
618
767
 
619
- ### 3.6 使用示例
768
+ ### 5.6 使用示例
620
769
 
621
770
  ```tsx
622
771
  import { useRef } from 'react';
@@ -687,13 +836,13 @@ const DemoForm = () => {
687
836
 
688
837
  ---
689
838
 
690
- ## 4. CustomAdd 新增/编辑弹窗组件
839
+ ## 6. CustomAdd 新增/编辑弹窗组件
691
840
 
692
- ### 4.1 组件概述
841
+ ### 6.1 组件概述
693
842
 
694
843
  `CustomAdd` 是一个功能强大的弹窗表单组件,支持新增、编辑、查看三种模式,支持多种表单项类型、表单验证、Tab 分组等。
695
844
 
696
- ### 4.2 Props 参数
845
+ ### 6.2 Props 参数
697
846
 
698
847
  | 参数名 | 类型 | 必填 | 默认值 | 说明 |
699
848
  |--------|------|------|--------|------|
@@ -711,7 +860,7 @@ const DemoForm = () => {
711
860
  | `CustomModalFooter` | `Function` | 否 | - | 自定义底部按钮 |
712
861
  | `validateConfig` | `ValidateConfig` | 否 | - | 验证配置 |
713
862
 
714
- ### 4.3 AddItemConfig 配置项
863
+ ### 6.3 AddItemConfig 配置项
715
864
 
716
865
  ```typescript
717
866
  interface AddItemConfig {
@@ -740,7 +889,7 @@ interface AddItemConfig {
740
889
  }
741
890
  ```
742
891
 
743
- ### 4.4 支持的表单类型
892
+ ### 6.4 支持的表单类型
744
893
 
745
894
  | type 值 | 说明 | 额外配置 |
746
895
  |---------|------|---------|
@@ -764,7 +913,7 @@ interface AddItemConfig {
764
913
  | `inputnumberoption` | 数字输入框+下拉框组合 | `optionname`, `options` |
765
914
  | `doubleValue` | 双输入框(如范围) | `firstLabel`, `secondLabel`, `separator` |
766
915
 
767
- ### 4.5 ValidateConfig 验证配置
916
+ ### 6.5 ValidateConfig 验证配置
768
917
 
769
918
  ```typescript
770
919
  interface ValidateConfig {
@@ -780,7 +929,7 @@ interface ValidateConfig {
780
929
  }
781
930
  ```
782
931
 
783
- ### 4.6 Ref 暴露的方法
932
+ ### 6.6 Ref 暴露的方法
784
933
 
785
934
  ```typescript
786
935
  interface CustomAddHandle {
@@ -789,9 +938,9 @@ interface CustomAddHandle {
789
938
  }
790
939
  ```
791
940
 
792
- ### 4.7 使用示例
941
+ ### 6.7 使用示例
793
942
 
794
- #### 4.7.1 基础使用
943
+ #### 6.7.1 基础使用
795
944
 
796
945
  ```tsx
797
946
  import { useState, useRef } from 'react';
@@ -928,7 +1077,7 @@ const tabFormConfig = [
928
1077
  />
929
1078
  ```
930
1079
 
931
- #### 4.7.3 带验证配置
1080
+ #### 6.7.3 带验证配置
932
1081
 
933
1082
  ```tsx
934
1083
  const validateConfig: ValidateConfig = {
@@ -951,7 +1100,7 @@ const validateConfig: ValidateConfig = {
951
1100
  />
952
1101
  ```
953
1102
 
954
- #### 4.7.4 特殊类型示例
1103
+ #### 6.7.4 特殊类型示例
955
1104
 
956
1105
  ```tsx
957
1106
  // 双输入框(范围)
@@ -993,9 +1142,9 @@ const validateConfig: ValidateConfig = {
993
1142
 
994
1143
  ---
995
1144
 
996
- ## 5. 常见使用场景
1145
+ ## 7. 常见使用场景
997
1146
 
998
- ### 5.1 完整的 CRUD 页面
1147
+ ### 7.1 完整的 CRUD 页面
999
1148
 
1000
1149
  ```tsx
1001
1150
  import { useRef } from 'react';
@@ -1084,7 +1233,7 @@ const UserManagePage = () => {
1084
1233
  };
1085
1234
  ```
1086
1235
 
1087
- ### 5.2 自定义操作列
1236
+ ### 7.2 自定义操作列
1088
1237
 
1089
1238
  ```tsx
1090
1239
  <CommonPage
@@ -1101,7 +1250,7 @@ const UserManagePage = () => {
1101
1250
  />
1102
1251
  ```
1103
1252
 
1104
- ### 5.3 带权限控制
1253
+ ### 7.3 带权限控制
1105
1254
 
1106
1255
  ```tsx
1107
1256
  <CommonPage
@@ -1120,25 +1269,25 @@ const UserManagePage = () => {
1120
1269
 
1121
1270
  ---
1122
1271
 
1123
- ## 6. 注意事项
1272
+ ## 8. 注意事项
1124
1273
 
1125
- ### 6.1 表单字段命名
1274
+ ### 8.1 表单字段命名
1126
1275
 
1127
1276
  1. **日期范围字段**:使用 `/` 分隔,如 `startDate/endDate`,组件会自动拆分为两个字段。
1128
1277
  2. **输入框+下拉框组合**:使用 `name` 和 `optionname` 分别定义两个字段。
1129
1278
  3. **双输入框**:使用 `firstLabel` 和 `secondLabel` 定义两个字段名。
1130
1279
 
1131
- ### 6.2 数据格式
1280
+ ### 8.2 数据格式
1132
1281
 
1133
1282
  1. **日期数据**:后端返回的日期字符串会自动转换为 dayjs 对象,提交时根据 `dateFormat` 格式化。
1134
1283
  2. **树形选择多选**:多选时,后端返回逗号分隔的字符串(如 "1,2,3"),组件会自动转换为数组。
1135
1284
 
1136
- ### 6.3 性能优化
1285
+ ### 8.3 性能优化
1137
1286
 
1138
1287
  1. **tableId**:为表格设置唯一 ID,用户的列配置会保存到后端,避免每次都重新配置。
1139
1288
  2. **防抖**:组件内部已对列表刷新、实时验证等操作做了防抖处理。
1140
1289
 
1141
- ### 6.4 样式定制
1290
+ ### 8.4 样式定制
1142
1291
 
1143
1292
  组件使用了 CSS Modules,如需定制样式,可以:
1144
1293
  1. 通过 `className` 传入自定义类名
@@ -1147,7 +1296,7 @@ const UserManagePage = () => {
1147
1296
 
1148
1297
  ---
1149
1298
 
1150
- ## 7. 常见问题
1299
+ ## 9. 常见问题
1151
1300
 
1152
1301
  ### Q1: 如何在表单提交前进行自定义验证?
1153
1302
 
@@ -1201,14 +1350,15 @@ formRef.current?.setFieldsValue({ name: '张三' });
1201
1350
 
1202
1351
  ---
1203
1352
 
1204
- ## 8. 更新日志
1353
+ ## 10. 更新日志
1205
1354
 
1355
+ - **2026-04-14**: 新增组合键监听 Hooks (`useHotkeyListener`, `useTakeShotHotkey`) 和截图接口 (`takeShot`)
1206
1356
  - **2025-11-24**: CustomTable 添加了表格配置保存功能
1207
1357
  - **2025-04-27**: CommonPage 组件创建
1208
1358
  - **2025-04-23**: CustomTable 组件创建
1209
1359
 
1210
1360
  ---
1211
1361
 
1212
- ## 9. 技术支持
1362
+ ## 11. 技术支持
1213
1363
 
1214
1364
  如有问题,请联系开发团队或查看源代码注释。