knt-shared 1.4.4 → 1.4.5
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/dist/components/Form/BasicForm.vue.d.ts +14 -0
- package/dist/components/Form/BasicForm.vue.d.ts.map +1 -1
- package/dist/components/Form/types.d.ts +15 -0
- package/dist/components/Form/types.d.ts.map +1 -1
- package/dist/components/ReadonlyField/BasicReadonlyField.vue.d.ts +31 -0
- package/dist/components/ReadonlyField/BasicReadonlyField.vue.d.ts.map +1 -0
- package/dist/components/ReadonlyField/index.d.ts +10 -0
- package/dist/components/ReadonlyField/index.d.ts.map +1 -0
- package/dist/components/ReadonlyField/renderers.d.ts +84 -0
- package/dist/components/ReadonlyField/renderers.d.ts.map +1 -0
- package/dist/components/ReadonlyField/types.d.ts +127 -0
- package/dist/components/ReadonlyField/types.d.ts.map +1 -0
- package/dist/components/ReadonlyField/useReadonlyField.d.ts +28 -0
- package/dist/components/ReadonlyField/useReadonlyField.d.ts.map +1 -0
- package/dist/components/ReadonlyField/utils.d.ts +91 -0
- package/dist/components/ReadonlyField/utils.d.ts.map +1 -0
- package/dist/components/Table/BasicTable.vue.d.ts +7 -0
- package/dist/components/Table/BasicTable.vue.d.ts.map +1 -1
- package/dist/components/Table/components/EditCell.vue.d.ts +9 -0
- package/dist/components/Table/components/EditCell.vue.d.ts.map +1 -1
- package/dist/components/Table/components/hooks/formatters.d.ts +62 -0
- package/dist/components/Table/components/hooks/formatters.d.ts.map +1 -0
- package/dist/components/Table/components/hooks/index.d.ts +11 -0
- package/dist/components/Table/components/hooks/index.d.ts.map +1 -0
- package/dist/components/Table/components/hooks/useComponentProps.d.ts +51 -0
- package/dist/components/Table/components/hooks/useComponentProps.d.ts.map +1 -0
- package/dist/components/Table/components/hooks/useEditCellValue.d.ts +46 -0
- package/dist/components/Table/components/hooks/useEditCellValue.d.ts.map +1 -0
- package/dist/components/Table/components/hooks/useEditFormat.d.ts +42 -0
- package/dist/components/Table/components/hooks/useEditFormat.d.ts.map +1 -0
- package/dist/components/Table/components/hooks/useEditHistory.d.ts +60 -0
- package/dist/components/Table/components/hooks/useEditHistory.d.ts.map +1 -0
- package/dist/components/Table/components/hooks/useTrim.d.ts +42 -0
- package/dist/components/Table/components/hooks/useTrim.d.ts.map +1 -0
- package/dist/components/Table/components/utils.d.ts +20 -0
- package/dist/components/Table/components/utils.d.ts.map +1 -0
- package/dist/components/Table/hooks/useEditValidation.d.ts.map +1 -1
- package/dist/components/Table/types.d.ts +66 -1
- package/dist/components/Table/types.d.ts.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/index.cjs.js +1455 -84
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +1457 -86
- package/dist/index.esm.js.map +1 -1
- package/dist/style.css +131 -11
- package/dist/utils/diff.d.ts +263 -0
- package/dist/utils/diff.d.ts.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/style.css
CHANGED
|
@@ -474,6 +474,126 @@ video[data-v-e8cbf700] {
|
|
|
474
474
|
border-radius: 0;
|
|
475
475
|
}
|
|
476
476
|
|
|
477
|
+
.readonly-field[data-v-a6d8ca62] {
|
|
478
|
+
color: var(--color-text-1);
|
|
479
|
+
line-height: 1.5;
|
|
480
|
+
min-height: 32px;
|
|
481
|
+
display: flex;
|
|
482
|
+
align-items: center;
|
|
483
|
+
}
|
|
484
|
+
.readonly-field-loading[data-v-a6d8ca62] {
|
|
485
|
+
opacity: 0.6;
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
/* 空值样式 */
|
|
489
|
+
.readonly-field-empty[data-v-a6d8ca62] {
|
|
490
|
+
color: var(--color-text-4);
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
/* 文本样式 */
|
|
494
|
+
.readonly-field-text[data-v-a6d8ca62] {
|
|
495
|
+
word-break: break-word;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
/* 数字样式 */
|
|
499
|
+
.readonly-field-number[data-v-a6d8ca62] {
|
|
500
|
+
font-variant-numeric: tabular-nums;
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
/* Textarea 样式 */
|
|
504
|
+
.readonly-field-textarea[data-v-a6d8ca62] {
|
|
505
|
+
white-space: pre-wrap;
|
|
506
|
+
word-break: break-word;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
/* Upload 容器 */
|
|
510
|
+
.readonly-upload-container[data-v-a6d8ca62] {
|
|
511
|
+
display: flex;
|
|
512
|
+
flex-direction: column;
|
|
513
|
+
gap: 12px;
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
/* 图片列表(网格布局) */
|
|
517
|
+
.readonly-image-list[data-v-a6d8ca62] {
|
|
518
|
+
display: grid;
|
|
519
|
+
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
|
|
520
|
+
gap: 8px;
|
|
521
|
+
max-width: 100%;
|
|
522
|
+
}
|
|
523
|
+
.readonly-image-item[data-v-a6d8ca62] {
|
|
524
|
+
border-radius: var(--border-radius-small);
|
|
525
|
+
cursor: pointer;
|
|
526
|
+
transition: transform 0.2s ease;
|
|
527
|
+
border: 1px solid var(--color-border-2);
|
|
528
|
+
}
|
|
529
|
+
.readonly-image-item[data-v-a6d8ca62]:hover {
|
|
530
|
+
transform: scale(1.05);
|
|
531
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
/* 文件列表 */
|
|
535
|
+
.readonly-file-list[data-v-a6d8ca62] {
|
|
536
|
+
display: flex;
|
|
537
|
+
flex-direction: column;
|
|
538
|
+
gap: 4px;
|
|
539
|
+
}
|
|
540
|
+
.readonly-file-link[data-v-a6d8ca62] {
|
|
541
|
+
color: rgb(var(--primary-6));
|
|
542
|
+
text-decoration: none;
|
|
543
|
+
display: inline-flex;
|
|
544
|
+
align-items: center;
|
|
545
|
+
gap: 4px;
|
|
546
|
+
transition: all 0.2s ease;
|
|
547
|
+
}
|
|
548
|
+
.readonly-file-link[data-v-a6d8ca62]:hover {
|
|
549
|
+
text-decoration: underline;
|
|
550
|
+
color: rgb(var(--primary-5));
|
|
551
|
+
}
|
|
552
|
+
.readonly-file-link[data-v-a6d8ca62]::before {
|
|
553
|
+
content: '📎';
|
|
554
|
+
font-size: 14px;
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
/* Select 多选 */
|
|
558
|
+
.readonly-field-select-multiple[data-v-a6d8ca62] {
|
|
559
|
+
word-break: break-word;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
/* Cascader 路径 */
|
|
563
|
+
.readonly-field-cascader[data-v-a6d8ca62] {
|
|
564
|
+
word-break: break-word;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
/* Rate */
|
|
568
|
+
.readonly-field-rate[data-v-a6d8ca62] {
|
|
569
|
+
color: var(--color-text-1);
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
/* Slider */
|
|
573
|
+
.readonly-field-slider[data-v-a6d8ca62] {
|
|
574
|
+
color: var(--color-text-1);
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
/* Switch */
|
|
578
|
+
.readonly-field-switch[data-v-a6d8ca62] {
|
|
579
|
+
color: var(--color-text-1);
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
/* Date */
|
|
583
|
+
.readonly-field-date[data-v-a6d8ca62] {
|
|
584
|
+
color: var(--color-text-1);
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
/* Range */
|
|
588
|
+
.readonly-field-range[data-v-a6d8ca62] {
|
|
589
|
+
color: var(--color-text-1);
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
/* Time */
|
|
593
|
+
.readonly-field-time[data-v-a6d8ca62] {
|
|
594
|
+
color: var(--color-text-1);
|
|
595
|
+
}
|
|
596
|
+
|
|
477
597
|
.basic-text-ellipsis[data-v-05b93f77] {
|
|
478
598
|
width: 100%;
|
|
479
599
|
}
|
|
@@ -482,57 +602,57 @@ video[data-v-e8cbf700] {
|
|
|
482
602
|
word-wrap: break-word;
|
|
483
603
|
}
|
|
484
604
|
|
|
485
|
-
.edit-cell[data-v-
|
|
605
|
+
.edit-cell[data-v-52761074] {
|
|
486
606
|
width: 100%;
|
|
487
607
|
}
|
|
488
|
-
.edit-cell-input[data-v-
|
|
608
|
+
.edit-cell-input[data-v-52761074] {
|
|
489
609
|
width: 100%;
|
|
490
610
|
}
|
|
491
|
-
.edit-cell-error[data-v-
|
|
611
|
+
.edit-cell-error[data-v-52761074] {
|
|
492
612
|
color: rgb(var(--danger-6));
|
|
493
613
|
font-size: 12px;
|
|
494
614
|
line-height: 1.5;
|
|
495
615
|
margin-top: 4px;
|
|
496
616
|
}
|
|
497
617
|
|
|
498
|
-
.basic-table-wrapper[data-v-
|
|
618
|
+
.basic-table-wrapper[data-v-efd7cfc7] {
|
|
499
619
|
background: var(--color-bg-2, #fff);
|
|
500
620
|
border-radius: 4px;
|
|
501
621
|
padding: 16px;
|
|
502
622
|
}
|
|
503
|
-
.basic-table-toolbar[data-v-
|
|
623
|
+
.basic-table-toolbar[data-v-efd7cfc7] {
|
|
504
624
|
display: flex;
|
|
505
625
|
justify-content: space-between;
|
|
506
626
|
align-items: center;
|
|
507
627
|
/* padding: 12px 0; */
|
|
508
628
|
margin-bottom: 12px;
|
|
509
629
|
}
|
|
510
|
-
.toolbar-left[data-v-
|
|
630
|
+
.toolbar-left[data-v-efd7cfc7] {
|
|
511
631
|
display: flex;
|
|
512
632
|
align-items: center;
|
|
513
633
|
}
|
|
514
|
-
.toolbar-title[data-v-
|
|
634
|
+
.toolbar-title[data-v-efd7cfc7] {
|
|
515
635
|
font-size: 16px;
|
|
516
636
|
font-weight: 600;
|
|
517
637
|
color: var(--color-text-1, #1d2129);
|
|
518
638
|
}
|
|
519
|
-
.toolbar-right[data-v-
|
|
639
|
+
.toolbar-right[data-v-efd7cfc7] {
|
|
520
640
|
display: flex;
|
|
521
641
|
align-items: center;
|
|
522
642
|
}
|
|
523
|
-
.basic-table-search[data-v-
|
|
643
|
+
.basic-table-search[data-v-efd7cfc7] {
|
|
524
644
|
/* margin-bottom: 16px; */
|
|
525
645
|
/* padding: 16px; */
|
|
526
646
|
background: var(--color-bg-1, #fff);
|
|
527
647
|
border-radius: 4px;
|
|
528
648
|
padding: 10px 0;
|
|
529
649
|
}
|
|
530
|
-
.column-setting[data-v-
|
|
650
|
+
.column-setting[data-v-efd7cfc7] {
|
|
531
651
|
width: 200px;
|
|
532
652
|
max-height: 400px;
|
|
533
653
|
overflow-y: auto;
|
|
534
654
|
}
|
|
535
|
-
.column-setting-item[data-v-
|
|
655
|
+
.column-setting-item[data-v-efd7cfc7] {
|
|
536
656
|
padding: 8px 0;
|
|
537
657
|
}
|
|
538
658
|
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 数组对比选项
|
|
3
|
+
*/
|
|
4
|
+
export interface DiffOptions<T = any> {
|
|
5
|
+
/**
|
|
6
|
+
* 唯一标识字段名
|
|
7
|
+
* @default 'id'
|
|
8
|
+
*/
|
|
9
|
+
uniqueKey?: string;
|
|
10
|
+
/**
|
|
11
|
+
* 对比深度
|
|
12
|
+
* - shallow: 浅层对比,只对比第一层字段
|
|
13
|
+
* - deep: 深度对比,递归对比所有层级
|
|
14
|
+
* @default 'shallow'
|
|
15
|
+
*/
|
|
16
|
+
compareDepth?: 'shallow' | 'deep';
|
|
17
|
+
/**
|
|
18
|
+
* 指定需要对比的字段(只对比这些字段)
|
|
19
|
+
* 如果不指定,则对比所有字段(excludeKeys 除外)
|
|
20
|
+
*/
|
|
21
|
+
compareFields?: (keyof T)[];
|
|
22
|
+
/**
|
|
23
|
+
* 排除不需要对比的字段
|
|
24
|
+
*/
|
|
25
|
+
excludeKeys?: (keyof T)[];
|
|
26
|
+
/**
|
|
27
|
+
* 删除标记字段名
|
|
28
|
+
* @default 'delFlag'
|
|
29
|
+
*/
|
|
30
|
+
deletedFlag?: string;
|
|
31
|
+
/**
|
|
32
|
+
* 删除标记值
|
|
33
|
+
* @default 1
|
|
34
|
+
*/
|
|
35
|
+
deletedFlagValue?: any;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 数组对比结果
|
|
39
|
+
*/
|
|
40
|
+
export interface DiffResult<T = any> {
|
|
41
|
+
/**
|
|
42
|
+
* 被删除的数据(已添加删除标记)
|
|
43
|
+
*/
|
|
44
|
+
deleted: T[];
|
|
45
|
+
/**
|
|
46
|
+
* 被修改的数据(包含修改后的值)
|
|
47
|
+
*/
|
|
48
|
+
modified: T[];
|
|
49
|
+
/**
|
|
50
|
+
* 新增的数据
|
|
51
|
+
*/
|
|
52
|
+
added: T[];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 对象对比选项
|
|
56
|
+
*/
|
|
57
|
+
export interface CompareOptions<T = any> {
|
|
58
|
+
/**
|
|
59
|
+
* 对比深度
|
|
60
|
+
* - shallow: 浅层对比,只对比第一层字段
|
|
61
|
+
* - deep: 深度对比,递归对比所有层级
|
|
62
|
+
* @default 'shallow'
|
|
63
|
+
*/
|
|
64
|
+
depth?: 'shallow' | 'deep';
|
|
65
|
+
/**
|
|
66
|
+
* 指定需要对比的字段(只对比这些字段)
|
|
67
|
+
*/
|
|
68
|
+
compareFields?: (keyof T)[];
|
|
69
|
+
/**
|
|
70
|
+
* 排除不需要对比的字段
|
|
71
|
+
*/
|
|
72
|
+
excludeKeys?: (keyof T)[];
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* 对比两个对象是否相等
|
|
76
|
+
*
|
|
77
|
+
* @param obj1 对象1
|
|
78
|
+
* @param obj2 对象2
|
|
79
|
+
* @param options 对比选项
|
|
80
|
+
* @returns 是否相等
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```ts
|
|
84
|
+
* const obj1 = { id: 1, name: '张三', age: 25 };
|
|
85
|
+
* const obj2 = { id: 1, name: '张三', age: 26 };
|
|
86
|
+
*
|
|
87
|
+
* // 浅层对比所有字段
|
|
88
|
+
* compareObjects(obj1, obj2); // false
|
|
89
|
+
*
|
|
90
|
+
* // 只对比 name 字段
|
|
91
|
+
* compareObjects(obj1, obj2, { compareFields: ['name'] }); // true
|
|
92
|
+
*
|
|
93
|
+
* // 排除 age 字段
|
|
94
|
+
* compareObjects(obj1, obj2, { excludeKeys: ['age'] }); // true
|
|
95
|
+
*
|
|
96
|
+
* // 深度对比
|
|
97
|
+
* const obj3 = { id: 1, user: { name: '张三', age: 25 } };
|
|
98
|
+
* const obj4 = { id: 1, user: { name: '张三', age: 25 } };
|
|
99
|
+
* compareObjects(obj3, obj4, { depth: 'deep' }); // true
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export declare function compareObjects<T extends Record<string, any>>(obj1: T, obj2: T, options?: CompareOptions<T>): boolean;
|
|
103
|
+
/**
|
|
104
|
+
* 对比两个数组,识别删除、修改和新增的数据
|
|
105
|
+
*
|
|
106
|
+
* @param original 原始数据(后台返回的数据)
|
|
107
|
+
* @param current 当前数据(前端修改后的数据)
|
|
108
|
+
* @param options 对比选项
|
|
109
|
+
* @returns 对比结果,包含删除、修改和新增的数据
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```ts
|
|
113
|
+
* // 基础使用
|
|
114
|
+
* const originalData = [
|
|
115
|
+
* { id: 1, name: '张三', age: 25 },
|
|
116
|
+
* { id: 2, name: '李四', age: 30 },
|
|
117
|
+
* { id: 3, name: '王五', age: 28 }
|
|
118
|
+
* ];
|
|
119
|
+
*
|
|
120
|
+
* const currentData = [
|
|
121
|
+
* { id: 1, name: '张三', age: 26 }, // 修改了 age
|
|
122
|
+
* { id: 2, name: '李四', age: 30 }, // 未修改
|
|
123
|
+
* { id: 4, name: '赵六', age: 32 } // 新增
|
|
124
|
+
* ];
|
|
125
|
+
*
|
|
126
|
+
* const result = diffArrays(originalData, currentData);
|
|
127
|
+
* // 结果:
|
|
128
|
+
* // {
|
|
129
|
+
* // deleted: [{ id: 3, name: '王五', age: 28, delFlag: 1 }],
|
|
130
|
+
* // modified: [{ id: 1, name: '张三', age: 26 }],
|
|
131
|
+
* // added: [{ id: 4, name: '赵六', age: 32 }]
|
|
132
|
+
* // }
|
|
133
|
+
* ```
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```ts
|
|
137
|
+
* // 使用自定义选项
|
|
138
|
+
* const result = diffArrays(originalData, currentData, {
|
|
139
|
+
* uniqueKey: 'userId', // 使用 userId 作为唯一标识
|
|
140
|
+
* compareDepth: 'deep', // 深度对比
|
|
141
|
+
* compareFields: ['name', 'age'], // 只对比 name 和 age 字段
|
|
142
|
+
* deletedFlag: 'isDeleted', // 使用 isDeleted 作为删除标记
|
|
143
|
+
* deletedFlagValue: true // 删除标记值为 true
|
|
144
|
+
* });
|
|
145
|
+
* ```
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* ```ts
|
|
149
|
+
* // 排除某些字段的对比
|
|
150
|
+
* const result = diffArrays(originalData, currentData, {
|
|
151
|
+
* excludeKeys: ['updateTime', 'version'] // 不对比这些字段
|
|
152
|
+
* });
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
export declare function diffArrays<T extends Record<string, any>>(original: T[], current: T[], options?: DiffOptions<T>): DiffResult<T>;
|
|
156
|
+
/**
|
|
157
|
+
* 查找被删除的数据(在原始数据中存在,但在当前数据中不存在)
|
|
158
|
+
*
|
|
159
|
+
* @param original 原始数据(后台返回的数据)
|
|
160
|
+
* @param current 当前数据(前端修改后的数据)
|
|
161
|
+
* @param options 对比选项
|
|
162
|
+
* @returns 被删除的数据(已添加删除标记)
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* ```ts
|
|
166
|
+
* const original = [
|
|
167
|
+
* { id: 1, name: '张三' },
|
|
168
|
+
* { id: 2, name: '李四' },
|
|
169
|
+
* { id: 3, name: '王五' }
|
|
170
|
+
* ];
|
|
171
|
+
* const current = [
|
|
172
|
+
* { id: 1, name: '张三' },
|
|
173
|
+
* { id: 2, name: '李四' }
|
|
174
|
+
* ];
|
|
175
|
+
*
|
|
176
|
+
* const deleted = findDeleted(original, current);
|
|
177
|
+
* // [{ id: 3, name: '王五', delFlag: 1 }]
|
|
178
|
+
* ```
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* ```ts
|
|
182
|
+
* // 自定义删除标记
|
|
183
|
+
* const deleted = findDeleted(original, current, {
|
|
184
|
+
* deletedFlag: 'isDeleted',
|
|
185
|
+
* deletedFlagValue: true
|
|
186
|
+
* });
|
|
187
|
+
* // [{ id: 3, name: '王五', isDeleted: true }]
|
|
188
|
+
* ```
|
|
189
|
+
*/
|
|
190
|
+
export declare function findDeleted<T extends Record<string, any>>(original: T[], current: T[], options?: DiffOptions<T>): T[];
|
|
191
|
+
/**
|
|
192
|
+
* 查找被修改的数据(在两个数组中都存在,但内容不同)
|
|
193
|
+
*
|
|
194
|
+
* @param original 原始数据(后台返回的数据)
|
|
195
|
+
* @param current 当前数据(前端修改后的数据)
|
|
196
|
+
* @param options 对比选项
|
|
197
|
+
* @returns 被修改的数据(包含修改后的值)
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* ```ts
|
|
201
|
+
* const original = [
|
|
202
|
+
* { id: 1, name: '张三', age: 25 },
|
|
203
|
+
* { id: 2, name: '李四', age: 30 }
|
|
204
|
+
* ];
|
|
205
|
+
* const current = [
|
|
206
|
+
* { id: 1, name: '张三', age: 26 }, // age 被修改
|
|
207
|
+
* { id: 2, name: '李四', age: 30 } // 未修改
|
|
208
|
+
* ];
|
|
209
|
+
*
|
|
210
|
+
* const modified = findModified(original, current);
|
|
211
|
+
* // [{ id: 1, name: '张三', age: 26 }]
|
|
212
|
+
* ```
|
|
213
|
+
*
|
|
214
|
+
* @example
|
|
215
|
+
* ```ts
|
|
216
|
+
* // 只对比特定字段
|
|
217
|
+
* const modified = findModified(original, current, {
|
|
218
|
+
* compareFields: ['name'] // 只对比 name 字段
|
|
219
|
+
* });
|
|
220
|
+
*
|
|
221
|
+
* // 排除某些字段
|
|
222
|
+
* const modified = findModified(original, current, {
|
|
223
|
+
* excludeKeys: ['updateTime'] // 不对比 updateTime 字段
|
|
224
|
+
* });
|
|
225
|
+
* ```
|
|
226
|
+
*/
|
|
227
|
+
export declare function findModified<T extends Record<string, any>>(original: T[], current: T[], options?: DiffOptions<T>): T[];
|
|
228
|
+
/**
|
|
229
|
+
* 查找新增的数据(在当前数据中存在,但在原始数据中不存在)
|
|
230
|
+
*
|
|
231
|
+
* @param original 原始数据(后台返回的数据)
|
|
232
|
+
* @param current 当前数据(前端修改后的数据)
|
|
233
|
+
* @param options 对比选项
|
|
234
|
+
* @returns 新增的数据
|
|
235
|
+
*
|
|
236
|
+
* @example
|
|
237
|
+
* ```ts
|
|
238
|
+
* const original = [
|
|
239
|
+
* { id: 1, name: '张三' },
|
|
240
|
+
* { id: 2, name: '李四' }
|
|
241
|
+
* ];
|
|
242
|
+
* const current = [
|
|
243
|
+
* { id: 1, name: '张三' },
|
|
244
|
+
* { id: 2, name: '李四' },
|
|
245
|
+
* { id: 3, name: '王五' } // 新增
|
|
246
|
+
* ];
|
|
247
|
+
*
|
|
248
|
+
* const added = findAdded(original, current);
|
|
249
|
+
* // [{ id: 3, name: '王五' }]
|
|
250
|
+
* ```
|
|
251
|
+
*
|
|
252
|
+
* @example
|
|
253
|
+
* ```ts
|
|
254
|
+
* // 批量导入场景
|
|
255
|
+
* function handleImport(existingData: any[], importData: any[]) {
|
|
256
|
+
* const added = findAdded(existingData, importData);
|
|
257
|
+
* console.log(`导入 ${importData.length} 条,新增 ${added.length} 条`);
|
|
258
|
+
* await api.batchInsert(added);
|
|
259
|
+
* }
|
|
260
|
+
* ```
|
|
261
|
+
*/
|
|
262
|
+
export declare function findAdded<T extends Record<string, any>>(original: T[], current: T[], options?: DiffOptions<T>): T[];
|
|
263
|
+
//# sourceMappingURL=diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/utils/diff.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAElC;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;IAE5B;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;IAE1B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,GAAG,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,GAAG;IACjC;;OAEG;IACH,OAAO,EAAE,CAAC,EAAE,CAAC;IAEb;;OAEG;IACH,QAAQ,EAAE,CAAC,EAAE,CAAC;IAEd;;OAEG;IACH,KAAK,EAAE,CAAC,EAAE,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,GAAG;IACrC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAE3B;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;IAE5B;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;CAC3B;AAkPD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1D,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GAC1B,OAAO,CAQT;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACtD,QAAQ,EAAE,CAAC,EAAE,EACb,OAAO,EAAE,CAAC,EAAE,EACZ,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,UAAU,CAAC,CAAC,CAAC,CAMf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACvD,QAAQ,EAAE,CAAC,EAAE,EACb,OAAO,EAAE,CAAC,EAAE,EACZ,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,CAAC,EAAE,CAgCL;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxD,QAAQ,EAAE,CAAC,EAAE,EACb,OAAO,EAAE,CAAC,EAAE,EACZ,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,CAAC,EAAE,CAyCL;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrD,QAAQ,EAAE,CAAC,EAAE,EACb,OAAO,EAAE,CAAC,EAAE,EACZ,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,CAAC,EAAE,CA2BL"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC"}
|