@robot-admin/naive-ui-components 0.17.0 → 0.17.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/CHANGELOG.md +31 -0
- package/README.md +12 -11
- package/README_EN.md +1 -0
- package/dist/C_AntV.css +105 -105
- package/dist/C_AntV2.cjs +3 -3
- package/dist/C_AntV2.js +3 -3
- package/dist/C_AudioPlayer.css +53 -53
- package/dist/C_AudioPlayer2.cjs +1 -1
- package/dist/C_AudioPlayer2.js +1 -1
- package/dist/C_Barcode.css +6 -6
- package/dist/C_Barcode2.cjs +1 -1
- package/dist/C_Barcode2.js +1 -1
- package/dist/C_Chat.css +269 -185
- package/dist/C_Chat2.cjs +1 -1
- package/dist/C_Chat2.js +1 -1
- package/dist/C_Code.css +26 -26
- package/dist/C_Code2.cjs +1 -1
- package/dist/C_Code2.js +1 -1
- package/dist/C_Draggable2.cjs +1 -1
- package/dist/C_Draggable2.js +1 -1
- package/dist/C_FilePreview.css +96 -57
- package/dist/C_FilePreview2.cjs +1 -1
- package/dist/C_FilePreview2.js +1 -1
- package/dist/C_FullCalendar.css +10 -11
- package/dist/C_FullCalendar2.cjs +1 -1
- package/dist/C_FullCalendar2.js +1 -1
- package/dist/C_GlobalSearch.css +140 -118
- package/dist/C_GlobalSearch2.cjs +1 -1
- package/dist/C_GlobalSearch2.js +1 -1
- package/dist/C_ImageCropper.css +10 -10
- package/dist/C_ImageCropper2.cjs +1 -1
- package/dist/C_ImageCropper2.js +1 -1
- package/dist/C_Login.css +79 -79
- package/dist/C_Login2.cjs +1 -1
- package/dist/C_Login2.js +1 -1
- package/dist/C_Map.css +10 -10
- package/dist/C_Map2.cjs +1 -1
- package/dist/C_Map2.js +1 -1
- package/dist/C_OrgChart.css +28 -4
- package/dist/C_OrgChart2.cjs +1 -1
- package/dist/C_OrgChart2.js +1 -1
- package/dist/C_QRCode2.cjs +1 -1
- package/dist/C_QRCode2.js +1 -1
- package/dist/C_Signature.css +15 -15
- package/dist/C_Signature2.cjs +1 -1
- package/dist/C_Signature2.js +1 -1
- package/dist/C_SplitPane.cjs +1 -1
- package/dist/C_SplitPane.css +231 -77
- package/dist/C_SplitPane.js +1 -1
- package/dist/C_SplitPane2.cjs +1 -1
- package/dist/C_SplitPane2.js +1 -1
- package/dist/C_Table.base.css +110 -117
- package/dist/C_Table.css +110 -117
- package/dist/C_Table.d.ts +1 -0
- package/dist/C_Tabs.css +18 -18
- package/dist/C_TagsView.css +51 -51
- package/dist/C_TagsView2.cjs +1 -1
- package/dist/C_TagsView2.js +1 -1
- package/dist/C_Transfer.css +93 -84
- package/dist/C_Transfer2.cjs +1 -1
- package/dist/C_Transfer2.js +1 -1
- package/dist/C_Tree.d.ts +1 -0
- package/dist/C_Upload.css +5 -5
- package/dist/C_Upload2.cjs +1 -1
- package/dist/C_Upload2.js +1 -1
- package/dist/C_VideoPlayer.css +20 -20
- package/dist/C_VideoPlayer2.cjs +4 -3
- package/dist/C_VideoPlayer2.js +4 -3
- package/dist/C_VtableGantt.css +44 -28
- package/dist/C_VtableGantt2.cjs +1 -1
- package/dist/C_VtableGantt2.js +1 -1
- package/dist/C_WaterFall.css +29 -29
- package/dist/C_WaterFall2.cjs +1 -1
- package/dist/C_WaterFall2.js +1 -1
- package/dist/C_WorkFlow.css +111 -111
- package/dist/C_WorkFlow2.cjs +1 -1
- package/dist/C_WorkFlow2.js +1 -1
- package/dist/constants3.d.cts +2 -2
- package/dist/constants3.d.ts +2 -2
- package/dist/constants4.d.cts +5 -5
- package/dist/constants4.d.ts +5 -5
- package/dist/constants5.d.cts +12 -15
- package/dist/constants5.d.ts +12 -15
- package/dist/data.d.cts +9 -9
- package/dist/data.d.ts +9 -9
- package/dist/data2.cjs +1 -1
- package/dist/data2.js +1 -1
- package/dist/helpers.cjs +1 -1
- package/dist/helpers.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.vue.d.cts +4 -4
- package/dist/index.vue.d.ts +4 -4
- package/dist/index10.vue.d.cts +2 -2
- package/dist/index10.vue.d.ts +2 -2
- package/dist/index11.vue.d.cts +2 -2
- package/dist/index11.vue.d.ts +5 -5
- package/dist/index12.vue.d.cts +5 -5
- package/dist/index13.vue.d.ts +1 -1
- package/dist/index14.vue.d.cts +1 -1
- package/dist/index14.vue.d.ts +5 -5
- package/dist/index15.vue.d.cts +5 -5
- package/dist/index15.vue.d.ts +1 -1
- package/dist/index16.vue.d.cts +1 -1
- package/dist/index16.vue.d.ts +1 -1
- package/dist/index17.vue.d.cts +1 -1
- package/dist/index17.vue.d.ts +1 -1
- package/dist/index18.vue.d.cts +1 -1
- package/dist/index18.vue.d.ts +4 -4
- package/dist/index19.vue.d.cts +4 -4
- package/dist/index19.vue.d.ts +2 -2
- package/dist/index2.vue.d.cts +3 -3
- package/dist/index2.vue.d.ts +3 -3
- package/dist/index20.vue.d.cts +5 -1
- package/dist/index20.vue.d.ts +5 -1
- package/dist/index21.vue.d.cts +2 -2
- package/dist/index21.vue.d.ts +2 -2
- package/dist/index22.vue.d.cts +2 -2
- package/dist/index22.vue.d.ts +2 -2
- package/dist/index23.vue.d.cts +2 -2
- package/dist/index23.vue.d.ts +2 -2
- package/dist/index25.vue.d.cts +9 -4
- package/dist/index25.vue.d.ts +9 -4
- package/dist/index27.vue.d.cts +2 -2
- package/dist/index27.vue.d.ts +2 -2
- package/dist/index28.vue.d.cts +6 -2
- package/dist/index28.vue.d.ts +6 -2
- package/dist/index3.vue.d.cts +4 -4
- package/dist/index3.vue.d.ts +4 -4
- package/dist/index4.vue.d.cts +2 -2
- package/dist/index6.vue.d.ts +8 -5
- package/dist/index7.vue.d.cts +8 -5
- package/dist/index8.vue.d.ts +4 -6
- package/dist/index9.vue.d.cts +4 -6
- package/dist/index9.vue.d.ts +2 -2
- package/dist/mapUtils.d.cts +4 -4
- package/dist/mapUtils.d.ts +4 -4
- package/dist/style.css +1559 -1219
- package/dist/useCalendarEvents.d.cts +10 -0
- package/dist/useCalendarEvents.d.ts +10 -0
- package/dist/useCropperCore.d.cts +10 -10
- package/dist/useCropperCore.d.ts +10 -10
- package/dist/useDraggableLayout.d.cts +16 -14
- package/dist/useDraggableLayout.d.ts +16 -14
- package/dist/useEdgeInteraction.d.cts +4 -2
- package/dist/useEdgeInteraction.d.ts +4 -2
- package/dist/useFullscreen.d.cts +9 -3
- package/dist/useFullscreen.d.ts +9 -3
- package/dist/useGlobalSearch.d.cts +9 -4
- package/dist/useGlobalSearch.d.ts +9 -4
- package/dist/useInfiniteScroll.d.cts +6 -3
- package/dist/useInfiniteScroll.d.ts +6 -3
- package/dist/useQRCode.d.cts +2 -2
- package/dist/useQRCode.d.ts +2 -2
- package/dist/useSearchState.d.cts +2 -2
- package/dist/useSearchState.d.ts +2 -2
- package/dist/useSignatureHistory.d.cts +5 -5
- package/dist/useSignatureHistory.d.ts +5 -5
- package/dist/useSplitResize.d.cts +3 -3
- package/dist/useSplitResize.d.ts +3 -3
- package/dist/useTableQuery.cjs +3 -3
- package/dist/useTableQuery.d.cts +15 -5
- package/dist/useTableQuery.d.ts +15 -5
- package/dist/useTableQuery.js +3 -3
- package/dist/useTimeSelection.d.cts +2 -2
- package/dist/useTimeSelection.d.ts +2 -2
- package/dist/useWorkflowValidation.d.cts +8 -3
- package/dist/useWorkflowValidation.d.ts +8 -3
- package/dist/verification.d.cts +2 -2
- package/dist/verification.d.ts +2 -2
- package/docs/component-review-20261019.md +55 -0
- package/docs/components.en.md +4 -0
- package/docs/components.md +4 -0
- package/docs/guides/runtime-performance.md +38 -0
- package/docs/guides/split-pane.en.md +4 -0
- package/docs/guides/split-pane.md +4 -0
- package/docs/guides/table-density.md +26 -0
- package/docs/guides/transfer.md +11 -0
- package/docs/runtime-review-20261019.md +41 -0
- package/package.json +4 -2
package/dist/useTableQuery.d.cts
CHANGED
|
@@ -364,7 +364,7 @@ interface TableConfig<T extends object = DataRecord> {
|
|
|
364
364
|
columnDrag?: ColumnDragConfig | boolean;
|
|
365
365
|
/** 树形表格 */
|
|
366
366
|
tree?: TreeConfig | boolean;
|
|
367
|
-
/**
|
|
367
|
+
/** 当前页顶层行同层排序;树子行/详情内容不可拖拽,虚拟滚动模式下禁用。 */
|
|
368
368
|
rowDrag?: RowDragConfig | boolean;
|
|
369
369
|
/** 跨页多选 */
|
|
370
370
|
crossPageSelection?: CrossPageSelectionConfig | boolean;
|
|
@@ -815,12 +815,19 @@ interface BaseTableColumn<T extends object = DataRecord> extends Omit<DataTableB
|
|
|
815
815
|
maxWidth?: number;
|
|
816
816
|
}
|
|
817
817
|
interface NormalTableColumn<T extends object = DataRecord> extends BaseTableColumn<T> {
|
|
818
|
+
type?: never;
|
|
818
819
|
key: Extract<keyof T, DataTableRowKey> | DataTableRowKey;
|
|
819
820
|
title: string;
|
|
820
821
|
}
|
|
821
822
|
interface BuiltInTableColumn<T extends object = DataRecord> extends BaseTableColumn<T> {
|
|
822
823
|
/** 内置列类型:无需 key / title */
|
|
823
824
|
type: 'selection' | 'expand' | 'index';
|
|
825
|
+
/** 原生选择列禁用判定;与 config.selection.rowCheckable 一起生效。 */
|
|
826
|
+
disabled?: (row: T) => boolean;
|
|
827
|
+
/** 原生选择列是否多选;maxSelection=1 时仍使用单选。 */
|
|
828
|
+
multiple?: boolean;
|
|
829
|
+
/** 原生展开列判定;与 config.expand.rowExpandable 一起生效。 */
|
|
830
|
+
expandable?: (row: T) => boolean;
|
|
824
831
|
/** 展开行渲染函数(仅当 type = expand 时有效) */
|
|
825
832
|
renderExpand?: (rowData: T, rowIndex: number) => VNodeChild;
|
|
826
833
|
}
|
|
@@ -1031,7 +1038,8 @@ type ColumnWithKey = TableColumn & {
|
|
|
1031
1038
|
declare const __VLS_export$1: <T extends object = DataRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
1032
1039
|
props: vue.PublicProps & __VLS_PrettifyLocal<{
|
|
1033
1040
|
/** 根容器 class;普通 class/style 仍按既有契约转发到 NDataTable。 */wrapperClass?: vue.HTMLAttributes["class"]; /** 填满已确定高度的根容器,并为工具栏和分页预留空间。 */
|
|
1034
|
-
flexHeight?: boolean; /**
|
|
1041
|
+
flexHeight?: boolean; /** 原生横向虚拟滚动;未声明业务列宽时仍提供可计算的数值兜底。 */
|
|
1042
|
+
virtualScrollX?: boolean; /** 列配置(crud 模式下可省略) */
|
|
1035
1043
|
columns?: TableColumn<T>[]; /** 数据源(crud 模式下可省略) */
|
|
1036
1044
|
data?: MaybeRefLike<T[]>; /** 加载状态 */
|
|
1037
1045
|
loading?: MaybeRefLike<boolean>; /** 行唯一键 */
|
|
@@ -1152,7 +1160,7 @@ declare const __VLS_export$1: <T extends object = DataRecord>(__VLS_props: NonNu
|
|
|
1152
1160
|
} & {
|
|
1153
1161
|
loading?: (props: {}) => any;
|
|
1154
1162
|
};
|
|
1155
|
-
emit: ((evt: "
|
|
1163
|
+
emit: ((evt: "cancel", rowData: DataRecord, rowIndex: number) => void) & ((evt: "save", rowData: DataRecord, rowIndex: number, columnKey?: string | undefined) => void) & ((evt: "pagination-change", ...args: [page: number, pageSize: number] & [page: number, pageSize: number]) => void) & ((evt: "row-delete", ...args: [deletedRow: DataRecord, index: number] & [deletedRow: DataRecord, index: number]) => void) & ((evt: "batch-action-error", error: unknown, actionKey: string) => void) & ((evt: "row-key-error", issues: TableRowKeyIssue<DataRecord>[]) => void) & ((evt: "expand-change", expandedKeys: DataTableRowKey[], row?: DataRecord | undefined, expanded?: boolean | undefined) => void) & ((evt: "selection-change", checkedKeys: DataTableRowKey[], checkedRows: DataRecord[], childSelections?: Map<DataTableRowKey, DataTableRowKey[]> | undefined) => void) & ((evt: "child-selection-change", parentKey: DataTableRowKey, childKeys: DataTableRowKey[], childRows: DataRecord[]) => void) & ((evt: "parent-child-link-change", parentKey: DataTableRowKey, shouldSelect: boolean) => void) & ((evt: "update:data", data: DataRecord[]) => void) & ((evt: "edit-error", error: unknown) => void) & ((evt: "row-add", newRow: DataRecord) => void) & ((evt: "row-copy", originalRow: DataRecord, newRow: DataRecord) => void) & ((evt: "row-move", row: DataRecord, fromIndex: number, toIndex: number) => void) & ((evt: "row-selection-change", selectedKey: DataTableRowKey | null, selectedRow: DataRecord | null) => void) & ((evt: "view-detail", data: DataRecord) => void) & ((evt: "column-change", columns: TableColumn[]) => void);
|
|
1156
1164
|
}>) => vue.VNode & {
|
|
1157
1165
|
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
1158
1166
|
};
|
|
@@ -1202,6 +1210,8 @@ interface UseTableColumnsOptions {
|
|
|
1202
1210
|
config: ComputedRef<ResolvedConfig>;
|
|
1203
1211
|
/** 默认列宽 */
|
|
1204
1212
|
columnWidth: number;
|
|
1213
|
+
/** 区分使用侧显式统一列宽与内部默认值,不把默认值强加给弹性业务列。 */
|
|
1214
|
+
columnWidthExplicit?: boolean;
|
|
1205
1215
|
/** 用户设定的 scrollX */
|
|
1206
1216
|
scrollX?: number | string;
|
|
1207
1217
|
/** 行键获取函数 */
|
|
@@ -1750,11 +1760,11 @@ declare const __VLS_base: vue.DefineComponent<TreeProps$1, TreeExpose, {}, {}, {
|
|
|
1750
1760
|
"onNode-action"?: ((action: string, node: TreeNodeData) => any) | undefined;
|
|
1751
1761
|
"onNode-drop"?: ((info: DropInfo) => any) | undefined;
|
|
1752
1762
|
}>, {
|
|
1763
|
+
draggable: boolean;
|
|
1753
1764
|
mode: TreeMode;
|
|
1754
1765
|
showToolbar: boolean;
|
|
1755
|
-
addable: boolean;
|
|
1756
1766
|
density: ComponentDensity;
|
|
1757
|
-
|
|
1767
|
+
addable: boolean;
|
|
1758
1768
|
searchable: boolean;
|
|
1759
1769
|
searchPlaceholder: string;
|
|
1760
1770
|
showLine: boolean;
|
package/dist/useTableQuery.d.ts
CHANGED
|
@@ -364,7 +364,7 @@ interface TableConfig<T extends object = DataRecord> {
|
|
|
364
364
|
columnDrag?: ColumnDragConfig | boolean;
|
|
365
365
|
/** 树形表格 */
|
|
366
366
|
tree?: TreeConfig | boolean;
|
|
367
|
-
/**
|
|
367
|
+
/** 当前页顶层行同层排序;树子行/详情内容不可拖拽,虚拟滚动模式下禁用。 */
|
|
368
368
|
rowDrag?: RowDragConfig | boolean;
|
|
369
369
|
/** 跨页多选 */
|
|
370
370
|
crossPageSelection?: CrossPageSelectionConfig | boolean;
|
|
@@ -815,12 +815,19 @@ interface BaseTableColumn<T extends object = DataRecord> extends Omit<DataTableB
|
|
|
815
815
|
maxWidth?: number;
|
|
816
816
|
}
|
|
817
817
|
interface NormalTableColumn<T extends object = DataRecord> extends BaseTableColumn<T> {
|
|
818
|
+
type?: never;
|
|
818
819
|
key: Extract<keyof T, DataTableRowKey> | DataTableRowKey;
|
|
819
820
|
title: string;
|
|
820
821
|
}
|
|
821
822
|
interface BuiltInTableColumn<T extends object = DataRecord> extends BaseTableColumn<T> {
|
|
822
823
|
/** 内置列类型:无需 key / title */
|
|
823
824
|
type: 'selection' | 'expand' | 'index';
|
|
825
|
+
/** 原生选择列禁用判定;与 config.selection.rowCheckable 一起生效。 */
|
|
826
|
+
disabled?: (row: T) => boolean;
|
|
827
|
+
/** 原生选择列是否多选;maxSelection=1 时仍使用单选。 */
|
|
828
|
+
multiple?: boolean;
|
|
829
|
+
/** 原生展开列判定;与 config.expand.rowExpandable 一起生效。 */
|
|
830
|
+
expandable?: (row: T) => boolean;
|
|
824
831
|
/** 展开行渲染函数(仅当 type = expand 时有效) */
|
|
825
832
|
renderExpand?: (rowData: T, rowIndex: number) => VNodeChild;
|
|
826
833
|
}
|
|
@@ -1031,7 +1038,8 @@ type ColumnWithKey = TableColumn & {
|
|
|
1031
1038
|
declare const __VLS_export$1: <T extends object = DataRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
1032
1039
|
props: vue.PublicProps & __VLS_PrettifyLocal<{
|
|
1033
1040
|
/** 根容器 class;普通 class/style 仍按既有契约转发到 NDataTable。 */wrapperClass?: vue.HTMLAttributes["class"]; /** 填满已确定高度的根容器,并为工具栏和分页预留空间。 */
|
|
1034
|
-
flexHeight?: boolean; /**
|
|
1041
|
+
flexHeight?: boolean; /** 原生横向虚拟滚动;未声明业务列宽时仍提供可计算的数值兜底。 */
|
|
1042
|
+
virtualScrollX?: boolean; /** 列配置(crud 模式下可省略) */
|
|
1035
1043
|
columns?: TableColumn<T>[]; /** 数据源(crud 模式下可省略) */
|
|
1036
1044
|
data?: MaybeRefLike<T[]>; /** 加载状态 */
|
|
1037
1045
|
loading?: MaybeRefLike<boolean>; /** 行唯一键 */
|
|
@@ -1152,7 +1160,7 @@ declare const __VLS_export$1: <T extends object = DataRecord>(__VLS_props: NonNu
|
|
|
1152
1160
|
} & {
|
|
1153
1161
|
loading?: (props: {}) => any;
|
|
1154
1162
|
};
|
|
1155
|
-
emit: ((evt: "
|
|
1163
|
+
emit: ((evt: "cancel", rowData: DataRecord, rowIndex: number) => void) & ((evt: "save", rowData: DataRecord, rowIndex: number, columnKey?: string | undefined) => void) & ((evt: "pagination-change", ...args: [page: number, pageSize: number] & [page: number, pageSize: number]) => void) & ((evt: "row-delete", ...args: [deletedRow: DataRecord, index: number] & [deletedRow: DataRecord, index: number]) => void) & ((evt: "batch-action-error", error: unknown, actionKey: string) => void) & ((evt: "row-key-error", issues: TableRowKeyIssue<DataRecord>[]) => void) & ((evt: "expand-change", expandedKeys: DataTableRowKey[], row?: DataRecord | undefined, expanded?: boolean | undefined) => void) & ((evt: "selection-change", checkedKeys: DataTableRowKey[], checkedRows: DataRecord[], childSelections?: Map<DataTableRowKey, DataTableRowKey[]> | undefined) => void) & ((evt: "child-selection-change", parentKey: DataTableRowKey, childKeys: DataTableRowKey[], childRows: DataRecord[]) => void) & ((evt: "parent-child-link-change", parentKey: DataTableRowKey, shouldSelect: boolean) => void) & ((evt: "update:data", data: DataRecord[]) => void) & ((evt: "edit-error", error: unknown) => void) & ((evt: "row-add", newRow: DataRecord) => void) & ((evt: "row-copy", originalRow: DataRecord, newRow: DataRecord) => void) & ((evt: "row-move", row: DataRecord, fromIndex: number, toIndex: number) => void) & ((evt: "row-selection-change", selectedKey: DataTableRowKey | null, selectedRow: DataRecord | null) => void) & ((evt: "view-detail", data: DataRecord) => void) & ((evt: "column-change", columns: TableColumn[]) => void);
|
|
1156
1164
|
}>) => vue.VNode & {
|
|
1157
1165
|
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
1158
1166
|
};
|
|
@@ -1202,6 +1210,8 @@ interface UseTableColumnsOptions {
|
|
|
1202
1210
|
config: ComputedRef<ResolvedConfig>;
|
|
1203
1211
|
/** 默认列宽 */
|
|
1204
1212
|
columnWidth: number;
|
|
1213
|
+
/** 区分使用侧显式统一列宽与内部默认值,不把默认值强加给弹性业务列。 */
|
|
1214
|
+
columnWidthExplicit?: boolean;
|
|
1205
1215
|
/** 用户设定的 scrollX */
|
|
1206
1216
|
scrollX?: number | string;
|
|
1207
1217
|
/** 行键获取函数 */
|
|
@@ -1750,11 +1760,11 @@ declare const __VLS_base: vue.DefineComponent<TreeProps$1, TreeExpose, {}, {}, {
|
|
|
1750
1760
|
"onNode-action"?: ((action: string, node: TreeNodeData) => any) | undefined;
|
|
1751
1761
|
"onNode-drop"?: ((info: DropInfo) => any) | undefined;
|
|
1752
1762
|
}>, {
|
|
1763
|
+
draggable: boolean;
|
|
1753
1764
|
mode: TreeMode;
|
|
1754
1765
|
showToolbar: boolean;
|
|
1755
|
-
addable: boolean;
|
|
1756
1766
|
density: ComponentDensity;
|
|
1757
|
-
|
|
1767
|
+
addable: boolean;
|
|
1758
1768
|
searchable: boolean;
|
|
1759
1769
|
searchPlaceholder: string;
|
|
1760
1770
|
showLine: boolean;
|
package/dist/useTableQuery.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{t as e}from"./density.js";import{t}from"./useComponentLocale.js";import{t as n}from"./feedback.js";import{t as r}from"./C_Icon2.js";import{t as i}from"./export-helper.js";import{t as a}from"./C_Loading2.js";import{t as o}from"./useActionTask.js";import{t as s}from"./C_ActionBar2.js";import{a as c,t as l}from"./data.js";import{Fragment as u,computed as d,createBlock as f,createCommentVNode as p,createElementBlock as m,createElementVNode as h,createSlots as g,createTextVNode as _,createVNode as v,defineAsyncComponent as y,defineComponent as b,getCurrentInstance as x,getCurrentScope as S,h as C,inject as w,isRef as ee,mergeProps as T,nextTick as E,normalizeClass as te,normalizeStyle as ne,onBeforeUnmount as re,onMounted as ie,onScopeDispose as D,openBlock as O,reactive as ae,ref as k,renderList as oe,renderSlot as A,resolveDynamicComponent as se,shallowReactive as j,shallowRef as M,toDisplayString as N,toValue as P,unref as F,watch as I,withCtx as L}from"vue";import{NButton as R,NButtonGroup as z,NCheckbox as ce,NDataTable as le,NDrawer as ue,NDrawerContent as de,NDropdown as B,NInput as fe,NInputNumber as pe,NModal as me,NPagination as he,NSelect as V,NSpace as ge,NSpin as _e,NSwitch as ve,NTag as ye,NText as be,NTooltip as H}from"naive-ui";const xe={editable:!1,editMode:`none`,showRowActions:!1,modalTitle:`编辑数据`,modalWidth:600,onEditSave:void 0,onEditCancel:void 0,onEditError:void 0},Se=e=>{if(e===!1||e===void 0)return xe;if(typeof e==`string`)return Se({mode:e});if(e===!0)return{editable:!0,editMode:`modal`,showRowActions:!0,modalTitle:`编辑数据`,modalWidth:600,onEditSave:void 0,onEditCancel:void 0,onEditError:void 0};let t=e.enabled!==!1&&e.mode!==`none`;return{editable:t,editMode:e.mode||`modal`,showRowActions:t&&e.showRowActions!==!1,modalTitle:e.modalTitle||`编辑数据`,modalWidth:e.modalWidth||600,onEditSave:e.onSave,onEditCancel:e.onCancel,onEditError:e.onError}},Ce=e=>e?e===!0?{expandable:!0,defaultExpandedKeys:void 0,onLoadExpandData:void 0,onExpandError:void 0,renderExpandContent:void 0,rowExpandable:void 0}:{expandable:e.enabled!==!1,defaultExpandedKeys:e.defaultExpandedKeys,onLoadExpandData:e.onLoadData,onExpandError:e.onError,renderExpandContent:e.renderContent,rowExpandable:e.rowExpandable}:{expandable:!1,defaultExpandedKeys:void 0,onLoadExpandData:void 0,onExpandError:void 0,renderExpandContent:void 0,rowExpandable:void 0},we=e=>{if(!e)return{enableSelection:!1,defaultCheckedKeys:void 0,rowCheckable:void 0,maxSelection:void 0,enableChildSelection:!1,childRowCheckable:void 0,enableParentChildLink:!1,parentChildLinkMode:`loose`};if(e===!0)return{enableSelection:!0,defaultCheckedKeys:void 0,rowCheckable:void 0,maxSelection:void 0,enableChildSelection:!1,childRowCheckable:void 0,enableParentChildLink:!1,parentChildLinkMode:`loose`};let t=e.childSelection||{},n=e.parentChildLink||{};return{enableSelection:e.enabled!==!1,defaultCheckedKeys:e.defaultCheckedKeys,rowCheckable:e.rowCheckable,maxSelection:e.maxSelection,enableChildSelection:t.enabled||!1,childRowCheckable:t.childRowCheckable,enableParentChildLink:n.enabled||!1,parentChildLinkMode:n.mode||`loose`}},Te=(t,n)=>{let r={enabled:!0,page:1,pageSize:10,showSizePicker:!0,showQuickJumper:!0,pageSizes:[10,20,50,100],simple:!1,size:n?e(n).size:`medium`};return t===!1?{pagination:null}:t===!0||t===void 0?{pagination:r}:{pagination:{...r,...t}}},U=e=>e?e===!0?{dynamicRows:{enableRadioSelection:!0,enableAdd:!0,enableInsert:!0,enableDelete:!0,enableCopy:!0,enableMove:!0,enablePrint:!0}}:{dynamicRows:e}:{dynamicRows:void 0},Ee={striped:!0,bordered:!0,singleLine:!0,size:`medium`,maxHeight:void 0,scrollX:void 0,columnWidth:180};function De(t,n){let{size:r}=e(n);return t?{striped:t.striped??Ee.striped,bordered:t.bordered??Ee.bordered,singleLine:t.singleLine??Ee.singleLine,size:t.size??r,maxHeight:t.maxHeight,scrollX:t.scrollX,columnWidth:t.columnWidth??Ee.columnWidth}:{...Ee,size:r}}const Oe=(t,n)=>({showToolbar:t?.show!==!1,enableColumnSettings:t?.columnSettings!==!1,toolbarActions:t?.actions??[],toolbarRightActions:t?.rightActions??[],toolbarActionBarConfig:{...n?{size:e(n).size,compact:n===`compact`}:{},...t?.actionBar}}),ke=e=>e?e===!0?{virtualScroll:!0,virtualItemHeight:34,virtualMaxHeight:600}:{virtualScroll:e.enabled!==!1,virtualItemHeight:e.itemHeight??34,virtualMaxHeight:e.maxHeight??600}:{virtualScroll:!1,virtualItemHeight:34,virtualMaxHeight:600},Ae=e=>e?{summaryPosition:e.position??`bottom`,summaryRender:e.render}:{summaryPosition:void 0,summaryRender:void 0},je=e=>e?e===!0?{enableColumnDrag:!0,columnDragHandleClass:void 0,columnDragAnimationDuration:150}:{enableColumnDrag:e.enabled!==!1,columnDragHandleClass:e.handleClass,columnDragAnimationDuration:e.animationDuration??150}:{enableColumnDrag:!1,columnDragHandleClass:void 0,columnDragAnimationDuration:150},Me=e=>e?e===!0?{treeEnabled:!0,treeChildrenKey:`children`,treeIndent:16,treeDefaultExpandAll:!1}:{treeEnabled:e.enabled!==!1,treeChildrenKey:e.childrenKey??`children`,treeIndent:e.indent??16,treeDefaultExpandAll:e.defaultExpandAll??!1}:{treeEnabled:!1,treeChildrenKey:`children`,treeIndent:16,treeDefaultExpandAll:!1},Ne=e=>e?e===!0?{rowDrag:{enabled:!0}}:{rowDrag:e.enabled===!1?void 0:e}:{rowDrag:void 0},Pe=e=>e?e===!0?{crossPageSelection:{enabled:!0}}:{crossPageSelection:e.enabled===!1?void 0:e}:{crossPageSelection:void 0};function Fe(t={}){return{density:t.density,controlSize:t.density?e(t.density).size:`small`,feedback:t.feedback,locale:t.locale,...Se(t.edit),...Ce(t.expand),...we(t.selection),...Te(t.pagination,t.density),...U(t.dynamicRows),...De(t.display,t.density),...Oe(t.toolbar,t.density),...ke(t.virtualScroll),...Ae(t.summary),...je(t.columnDrag),...Me(t.tree),...Ne(t.rowDrag),...Pe(t.crossPageSelection),exportConfig:t.export,persistKey:t.persistKey,formatterConfig:t.formatterConfig,error:t.error,batchActions:t.batchActions}}const Ie=e=>({isNonEditable:t=>!e.editable||t.editable===!1||e.editMode===`none`,isRowEditMode:()=>[`row`,`both`].includes(e.editMode),isCellEditMode:()=>[`cell`,`both`].includes(e.editMode)});function Le(e,t){return(typeof e.message==`function`?e.message():e.message)||t}function W(e){return e==null||e===``||Array.isArray(e)&&e.length===0}function Re(e){if(typeof e==`number`)return e;if(typeof e==`string`||Array.isArray(e))return e.length}function ze(e,t){return e===!1?t:e instanceof Error?e.message||t:typeof e==`string`?e||t:Array.isArray(e)&&e.length>0?ze(e[0],t):null}async function Be(e,t,n,r){let i=Le(e,`${n}校验失败`),a=e.transform?e.transform(t):t;if(e.required&&W(a))return Le(e,`${n}不能为空`);if(!e.required&&W(a))return null;if(e.enum&&!e.enum.includes(a)||e.pattern&&!new RegExp(e.pattern).test(String(a)))return i;let o=Re(a);if(e.len!==void 0&&o!==e.len||e.min!==void 0&&o!==void 0&&o<e.min||e.max!==void 0&&o!==void 0&&o>e.max)return i;let s,c=e=>{s=e};try{if(e.validator){let t=ze(await e.validator(e,a,c,r,{}),i);if(t)return t}if(s||e.asyncValidator&&(await e.asyncValidator(e,a,c,r,{}),s))return ze(s,i)}catch(e){return e instanceof Error&&e.message?e.message:i}return null}function Ve(e){let t=0,n=k(null),r=k({}),i=k(!1),a=k([]),o=()=>{t++,n.value=null,r.value={},a.value=[]},s=e=>n.value===e,c=t=>{let n=e.data();return!n||!Array.isArray(n)?null:n.find(n=>e.rowKey(n)===t)},u=e=>{let t=c(e);return!t||i.value?!1:(n.value=e,r.value={[String(e)]:l(t)},a.value=[],!0)},d=async()=>{if(n.value===null||i.value)return;let t=e.data();if(!t||!Array.isArray(t))return;let a=t.findIndex(t=>e.rowKey(t)===n.value);i.value=!0;try{a>-1&&await e.onCancel?.(t[a],a),n.value=null,r.value={}}finally{i.value=!1}},f=async(r,i)=>{let o=t,s=(e.columns?.()||[]).filter(e=>e.editable!==!1&&e.editProps?.rules?.length).map(async e=>{let t=typeof e.key==`string`?e.key:``;if(!t)return null;let n=(await Promise.all(e.editProps.rules.map(n=>Be(n,r[t],e.title||t,r)))).find(Boolean);return n?{field:t,message:n}:null}),c=(await Promise.all(s)).filter(Boolean);return t===o?(n.value===i&&(a.value=c),c.length===0):!1},p=async()=>{let e=n.value;if(e===null)return!0;let t=r.value[String(e)];return t?f(l(t),e):!0},m=async()=>{let a=n.value;if(a===null||i.value)return;let o=r.value[String(a)];if(!o)return;let s=l(o),u=t,d=c(a);i.value=!0;try{if(!await f(s,a)||t!==u)return;let i=e.data(),o=i.findIndex(t=>e.rowKey(t)===a);return o===-1||i[o]!==d||(await e.onSave?.(s,o,a),t!==u)?void 0:(n.value=null,r.value={},{updatedData:s,rowIndex:o})}finally{i.value=!1}},h=e=>{if(n.value===e)return r.value[String(e)]};return{editingRowKey:n,editingData:r,isSaving:i,isEditingRow:s,startEditRow:u,cancelEditRow:d,saveEditRow:m,validateRow:p,validationErrors:a,getEditingRowData:h,updateEditingRowData:(e,t,n)=>{let r=h(e);!r||i.value||(r[t]=l(n))},findRowData:c,invalidate:o}}function G(e,t){let n=String(e);return`${typeof e}:${n.length}:${n}|${t.length}:${t}`}function K(e){let t=0,n=k({rowKey:null,columnKey:null}),r=k({}),i=k(!1),a=k(null),o=()=>{t++,n.value={rowKey:null,columnKey:null},r.value={},a.value=null},s=(e,t)=>n.value.rowKey===e&&n.value.columnKey===t,c=t=>{let n=e.data();return!n||!Array.isArray(n)?null:n.find(n=>e.rowKey(n)===t)},u=(e,t)=>{let o=c(e);return!o||!t||i.value?!1:(n.value={rowKey:e,columnKey:t},r.value={[G(e,t)]:l(o[t])},a.value=null,!0)},d=t=>(e.columns?.()??[]).find(e=>e.key===t),f=async()=>{let e=t;a.value=null;let{rowKey:i,columnKey:o}=n.value;if(i===null||o===null)return!0;let s=d(o);if(!s||!s.editProps?.rules)return!0;let l=G(i,o),u=r.value[l],f=s.title||o,p={...c(i),[o]:u},m=await Promise.all(s.editProps.rules.map(e=>Be(e,u,f,p)));if(t!==e)return!1;let h=m.find(Boolean);return h?(a.value=h,!1):!0};return{editingCell:n,editingData:r,isSaving:i,isEditingCell:s,startEditCell:u,saveEditCell:async()=>{let{rowKey:a,columnKey:o}=n.value;if(a===null||o===null||i.value)return;let s=G(a,o),u=l(r.value[s]),d=t,p=c(a);i.value=!0;try{if(!await f()||t!==d)return;let i=e.data(),s=i.findIndex(t=>e.rowKey(t)===a);if(s===-1||i[s]!==p)return;let c={...i[s],[o]:u};return await e.onSave?.(l(c),s,o,a),t===d?(n.value={rowKey:null,columnKey:null},r.value={},{updatedData:c,rowIndex:s,columnKey:o}):void 0}finally{i.value=!1}},cancelEditCell:()=>{let{rowKey:e,columnKey:t}=n.value;i.value||(e!==null&&t!==null&&delete r.value[G(e,t)],n.value={rowKey:null,columnKey:null},a.value=null)},validateCell:f,cellValidationError:a,getEditingCellValue:(e,t)=>r.value[G(e,t)],updateEditingCellValue:(e,t,n)=>{!s(e,t)||i.value||(r.value[G(e,t)]=l(n))},findRowData:c,invalidate:o}}function q(e){let t=0,n=k(!1),r=k(!1),i=k(null),a=k({}),o=()=>{t++,n.value=!1,i.value=null,a.value={}},s=d(()=>{if(i.value===null)return-1;let t=e.data();return Array.isArray(t)?t.findIndex(t=>e.rowKey(t)===i.value):-1});return{isModalVisible:n,isSaving:r,editingData:a,editingRowKey:i,editingRowIndex:s,startEdit:(o,s)=>{if(r.value)return!1;let c=e.data();if(!Array.isArray(c))return!1;let u=c.findIndex(t=>e.rowKey(t)===o);return u===-1?!1:(t++,i.value=o,a.value=l(s??c[u]),n.value=!0,!0)},saveEdit:async o=>{if(r.value||i.value===null)return;let c=s.value;if(c===-1)return;let u=i.value,d=t,f=l(o??a.value);r.value=!0;try{return await e.onSave?.(f,c,u),t===d?(n.value=!1,i.value=null,a.value={},{updatedData:f,rowIndex:c}):void 0}finally{r.value=!1}},cancelEdit:async()=>{if(r.value)return!1;let o=t,c=s.value;try{if(i.value!==null&&c>-1){let t=e.data();t[c]&&await e.onCancel?.(t[c],c)}}finally{t===o&&(n.value=!1,i.value=null,a.value={})}return!0},updateEditingData:e=>r.value?!1:(a.value=l(e),!0),resetEditingState:()=>r.value?!1:(i.value=null,a.value={},!0),isEditingRow:e=>i.value===e&&n.value,getEditingRowData:e=>i.value===e?a.value:null,invalidate:o}}function He(e,t){if(!t)return e;let n=[],r=new WeakSet,i=e=>{if(r.has(e))return;r.add(e),n.push(e);let a=e[t];Array.isArray(a)&&a.forEach(e=>{e&&typeof e==`object`&&i(e)})};return e.forEach(i),n}function Ue(e,t,n,r){let i=new WeakSet,a=e=>{if(e===t)return n;if(!r||i.has(e))return e;i.add(e);let o=e[r];if(!Array.isArray(o))return e;let s=o.map(e=>e&&typeof e==`object`?a(e):e);return s.some((e,t)=>e!==o[t])?{...e,[r]:s}:e};return e.map(a)}function We(e){return e}function Ge(e){return e}function Ke(e,t){let n=new Map,r=[];return e.forEach((e,i)=>{let a;try{a=t(e)}catch(t){r.push({type:`error`,row:e,index:i,cause:t});return}if(a==null||a===``){r.push({type:`missing`,row:e,index:i});return}let o=n.get(a);if(o!==void 0){r.push({type:`duplicate`,row:e,index:i,key:a,firstIndex:o});return}n.set(a,i)}),r}function qe(e,t,n){let r=new Set,i=new WeakSet,a=[...e],o=e=>{try{return n(e)}catch{return}},s=e=>e!=null&&e!==``;for(;a.length;){let e=a.pop();if(i.has(e))continue;i.add(e);let n=e[t];if(!Array.isArray(n)||n.length===0)continue;let c=o(e);s(c)&&r.add(c);for(let e of n)e&&typeof e==`object`&&a.push(e)}return[...r]}const Je=e=>({expandedKeys:k([...e.defaultExpandedKeys||[]]),expandDataMap:k(new Map),loadingMap:k(new Map),errorMap:k(new Map),checkedKeys:e.enableSelection?k([...e.defaultCheckedKeys||[]]):k([]),childSelections:(e.enableChildSelection,k(new Map))}),Ye=e=>{let t=d(()=>He(F(e.data),e.childrenKey)),n=e.rowKey;return{data:t,getRowKey:n,getChildRowKey:e.childRowKey||(e=>e.id),findRow:e=>t.value.find(t=>n(t)===e),isRowExpandable:t=>e.rowExpandable?.(t)??!0,isRowCheckable:t=>e.rowCheckable?.(t)??!0,isChildRowCheckable:(t,n)=>e.childRowCheckable?.(t,n)??!0}},Xe=(e,t,n)=>{let r=new Map,i=new Map,a=!1,o=0,s=new Set(n.defaultExpandedKeys||[]),c=t=>{let n=t===void 0?new Set([...e.expandDataMap.value.keys(),...e.errorMap.value.keys(),...r.keys()]):new Set([t]);for(let t of n)r.delete(t),i.delete(t),e.expandDataMap.value.delete(t),e.errorMap.value.delete(t),e.loadingMap.value.delete(t),e.childSelections.value.delete(t)},l=async o=>{if(!n.onLoadData||a)return[];let s=t.getRowKey(o);if(e.expandDataMap.value.has(s))return e.expandDataMap.value.get(s);if(e.errorMap.value.has(s))return[];let c=r.get(s);if(c)return c.promise;let l={};i.set(s,o),e.loadingMap.value.set(s,!0);let u=()=>!a&&r.get(s)?.token===l,d,f=new Promise(e=>{d=e});return r.set(s,{token:l,promise:f}),(async()=>{try{let t=await n.onLoadData(o),r=Array.isArray(t)?t:[];return u()?(e.expandDataMap.value.set(s,r),n.enableChildSelection&&!e.childSelections.value.has(s)&&e.childSelections.value.set(s,[]),r):[]}catch(t){return u()&&(e.errorMap.value.set(s,t),n.onError?.(t,o)),[]}finally{u()&&(r.delete(s),e.loadingMap.value.set(s,!1))}})().then(d,()=>d([])),f};return I(t.data,n=>{if(i.size===0)return;let r=new Map(n.map(e=>[t.getRowKey(e),e]));for(let[t,n]of i){let i=r.get(t);i!==n&&(c(t),i&&e.expandedKeys.value.includes(t)&&l(i),i||s.delete(t))}e.expandedKeys.value=e.expandedKeys.value.filter(e=>r.has(e))}),S()&&D(()=>{a=!0,c()}),{loadData:l,retryExpand:async e=>{let n=t.findRow(e);n&&(c(e),await l(n))},invalidateExpand:c,handleRowExpand:async(r,i)=>{let a=t.getRowKey(r);if(o+=1,i){if(s.add(a),e.expandedKeys.value.includes(a)||(e.expandedKeys.value=[...e.expandedKeys.value,a]),await l(r),!s.has(a))return}else s.delete(a),e.expandedKeys.value=e.expandedKeys.value.filter(e=>e!==a);n.onExpandChange?.(e.expandedKeys.value,r,i)},expandAll:async()=>{let r=++o,i=t.data.value.filter(t.isRowExpandable);s=new Set(i.map(t.getRowKey)),e.expandedKeys.value=[...s],await Promise.allSettled(i.map(l)),r===o&&(e.expandedKeys.value=i.map(t.getRowKey),n.onExpandChange?.(e.expandedKeys.value))},collapseAll:()=>{o+=1,s.clear(),e.expandedKeys.value=[],e.childSelections.value.clear(),n.onExpandChange?.(e.expandedKeys.value)},handleExpandChange:async r=>{let i=++o;s=new Set(r);let a=r.filter(t=>!e.expandedKeys.value.includes(t)),c=e.expandedKeys.value.filter(e=>!r.includes(e));for(let t of c)e.childSelections.value.delete(t);e.expandedKeys.value=[...r],await Promise.all(a.map(async e=>{let n=t.findRow(e);n&&await l(n)})),i===o&&n.onExpandChange?.(r)}}},Ze=(e,t,n)=>{let r=[],i=[],a=(t,a)=>{let o=t.length===r.length&&t.every((e,t)=>e===r[t]),s=a.length===i.length&&a.every((e,t)=>e===i[t]);o&&s||(r=[...t],i=[...a],n.onSelectionChange?.(t,a,e.childSelections.value))},o=d(()=>t.data.value.filter(t.isRowCheckable));return{selectAll:()=>{if(!n.enableSelection)return;let r=o.value.map(t.getRowKey),i=n.maxSelection?r.slice(0,n.maxSelection):r;e.checkedKeys.value=i;let s=new Set(i);a(i,o.value.filter(e=>s.has(t.getRowKey(e))))},clearSelection:()=>{n.enableSelection&&(e.checkedKeys.value=[],a([],[]))},handleSelectionChange:r=>{if(!n.enableSelection)return;let i=new Set(o.value.map(e=>t.getRowKey(e))),s=[...new Set(r)].filter(e=>i.has(e)),c=n.maxSelection?s.slice(0,Math.max(0,n.maxSelection)):s;e.checkedKeys.value=c;let l=new Set(c);a(c,t.data.value.filter(e=>l.has(t.getRowKey(e))))},selectedRowsCount:d(()=>e.checkedKeys.value.length),selectableRows:o}},Qe=(e,t)=>{let n=()=>!!(t.enableParentChildLink&&t.enableSelection&&t.enableChildSelection);return{handleParentChildLink:(r,i,a)=>{if(!n())return;let o=t.parentChildLinkMode===`strict`?i.length===a&&a>0:i.length>0,s=[...e.checkedKeys.value],c=s.includes(r);o&&!c?e.checkedKeys.value=[...s,r]:!o&&c&&(e.checkedKeys.value=s.filter(e=>e!==r))},isLinkEnabled:n}},J=(e,t,n,r)=>({totalChildSelections:d(()=>r.enableChildSelection?Array.from(e.childSelections.value.values()).reduce((e,t)=>e+t.length,0):0),clearAllSelections:()=>{e.checkedKeys.value=[],e.childSelections.value.clear(),r.onSelectionChange?.([],[],e.childSelections.value)},handleChildSelectionChange:(i,a)=>{if(!r.enableChildSelection)return;e.childSelections.value.set(i,a);let o=e.expandDataMap.value.get(i)||[],s=o.filter(e=>a.includes(t.getChildRowKey(e)));r.onChildSelectionChange?.(i,a,s),n.isLinkEnabled()&&n.handleParentChildLink(i,a,o.length)}}),$e=(e,t,n,r,i)=>{if(!i.enableChildSelection)return;let a=t.childSelections.value.get(e)||[],o=t.expandDataMap.value.get(e)||[],s=n.findRow(e);if(!s)return;let c=o.filter(e=>n.isChildRowCheckable(e,s));return{selectedKeys:a,isAllChecked:c.length>0&&c.every(e=>a.includes(n.getChildRowKey(e))),selectAll:()=>{let t=c.map(e=>n.getChildRowKey(e));r.handleChildSelectionChange(e,t)},clearAll:()=>{r.handleChildSelectionChange(e,[])}}},et=e=>C(`div`,{class:`flex justify-center items-center py-8`},e?[e()]:[C(_e,{size:`small`}),C(`span`,{class:`ml-2 text-gray-500`},`加载中...`)]),tt=()=>C(`div`,{class:`text-center py-8 text-gray-400`},`暂无数据`),nt=e=>{if(!e.length)return[];let t=e[0];return!t||typeof t!=`object`?[]:[{title:`序号`,key:`_index`,width:60,align:`center`,titleAlign:`center`,render:(e,t)=>t+1},...Object.keys(t).filter(e=>![`id`,`key`].includes(e)).map(e=>({key:e,title:e.charAt(0).toUpperCase()+e.slice(1),width:120,align:`center`,titleAlign:`center`,ellipsis:{tooltip:!0}}))]},rt=(e,t,n,r,i,a)=>{let o=[];return a.enableChildSelection&&o.push({type:`selection`,multiple:!0}),o.push(...nt(t)),C(`div`,{class:`p-4 bg-gray-50`},[C(`div`,{class:`mb-2 text-sm text-gray-600`},`详细信息 (${t.length} 条)`),C(le,{data:t,columns:o,size:`small`,striped:!0,checkedRowKeys:n?.selectedKeys||[],rowKey:e=>r.getChildRowKey(e),onUpdateCheckedRowKeys:a.enableChildSelection?t=>{i.handleChildSelectionChange(e,t)}:void 0})])},it=(e,n,r,i,a)=>{let{t:o}=t(()=>a.locale),s=t=>{let s=n.getRowKey(t),c=e.expandDataMap.value.get(s)||[],l=e.loadingMap.value.get(s)||!1,u=$e(s,e,n,r,a);return a.renderContent?a.renderContent(t,c,l,u):l?et(a.renderLoading):e.errorMap.value.has(s)?C(`div`,{class:`c-table-expand-error`,role:`alert`},[C(`span`,o(`table.loadFailed`)),C(R,{size:`small`,onClick:()=>i.retryExpand(s)},()=>o(`common.retry`))]):c.length?rt(s,c,u,n,r,a):tt()};return{getTableColumns:e=>e.map(e=>e.type===`selection`&&a.enableSelection?{type:`selection`,disabled:e=>!n.isRowCheckable(e),multiple:!a.maxSelection||a.maxSelection>1}:e.type===`expand`&&(a.onLoadData||a.renderContent)?{type:`expand`,expandable:n.isRowExpandable,renderExpand:s}:e)}};function at(e){let t=Je(e),n=Ye(e),r=Xe(t,n,e),i=Ze(t,n,e),a=J(t,n,Qe(t,e),e),o=it(t,n,a,r,e);return I(n.data,()=>{!e.enableSelection||t.checkedKeys.value.length===0||i.handleSelectionChange(t.checkedKeys.value)}),e.defaultExpandedKeys?.length&&E(async()=>{let i=e.defaultExpandedKeys||[];if(i.length===0)return;let a=i.map(async e=>{let i=n.findRow(e);i&&!t.expandDataMap.value.has(e)&&await r.loadData(i)});await Promise.allSettled(a)}),{expandedKeys:t.expandedKeys,checkedKeys:t.checkedKeys,childSelections:t.childSelections,selectedRowsCount:i.selectedRowsCount,totalChildSelections:a.totalChildSelections,expandAll:r.expandAll,collapseAll:r.collapseAll,expandRow:async e=>{if(t.expandedKeys.value.includes(e)&&!t.loadingMap.value.get(e))return;let i=n.findRow(e);i&&await r.handleRowExpand(i,!0)},handleExpandChange:r.handleExpandChange,selectAll:i.selectAll,clearSelection:i.clearSelection,clearAllSelections:a.clearAllSelections,handleSelectionChange:i.handleSelectionChange,getTableColumns:o.getTableColumns,expandDataMap:t.expandDataMap,loadingMap:t.loadingMap,errorMap:t.errorMap,retryExpand:r.retryExpand,invalidateExpand:r.invalidateExpand}}const ot={text:`Robot Admin`,textSize:16,textColor:`rgba(128, 128, 128, 0.3)`,font:`Microsoft JhengHei`,opacity:.3,rotate:-20,position:`repeat`,xGap:200,yGap:120},st={scale:1,quality:.92,format:`png`,backgroundColor:`#ffffff`,logging:!1,allowTaint:!0,useCORS:!0},ct={orientation:`portrait`,paperSize:`A4`,margin:`10mm 10mm 0 10mm`,style:`@page { margin: 10mm 10mm 0 10mm; } @media print { body { margin: 0; } }`,header:``,footer:``,showModal:!1,modalMessage:`正在准备打印...`,onLoadingStart:()=>{},onLoadingEnd:()=>{},onPrintDialogClose:()=>{}};function lt(e,t,n,r){e.save(),e.translate(t/2,n/2),e.rotate(r.rotate*Math.PI/180),e.fillText(r.text,0,0),e.restore()}function ut(e,t,n,r){[[50,50],[t-50,50],[50,n-50],[t-50,n-50]].forEach(([t,n])=>{e.save(),e.translate(t,n),e.rotate(r.rotate*Math.PI/180),e.fillText(r.text,0,0),e.restore()})}function Y(e,t,n,r){let i=Math.sqrt(t*t+n*n),a=t/2,o=n/2;e.save(),e.translate(a,o),e.rotate(Math.atan2(n,t));let s=Math.floor(i/r.xGap),c=-i/2;for(let t=0;t<=s;t++){let n=c+t*r.xGap;e.fillText(r.text,n,0)}e.restore()}function dt(e,t,n,r){let i=Math.ceil(t/r.xGap)+1,a=Math.ceil(n/r.yGap)+1;for(let t=0;t<a;t++)for(let n=0;n<i;n++){let i=n*r.xGap+r.xGap/2,a=t*r.yGap+r.yGap/2;e.save(),e.translate(i,a),e.rotate(r.rotate*Math.PI/180),e.fillText(r.text,0,0),e.restore()}}function ft(e,t){let n=e.getContext(`2d`);if(!n)return e;let r={...ot,...t},{width:i,height:a}=e;n.save(),n.globalAlpha=r.opacity,n.font=`${r.textSize}px ${r.font}`,n.fillStyle=r.textColor,n.textAlign=`center`,n.textBaseline=`middle`;let o={center:lt,corner:ut,diagonal:Y,repeat:dt};return(o[r.position]||o.repeat)(n,i,a,r),n.restore(),e}async function pt(e,t={}){if(typeof window>`u`)throw Error(`截图功能仅支持浏览器环境`);let n={...st,...t},{default:r}=await import(`html2canvas`);return await r(e,{logging:n.logging,scale:n.scale,allowTaint:n.allowTaint,useCORS:n.useCORS,backgroundColor:n.backgroundColor,onclone:e=>{let t=e.body;t.style.transform=`scale(1)`}})}function X(e,t=`png`,n=.92){let r=`image/${t}`;return t===`png`?e.toDataURL(r):e.toDataURL(r,n)}function mt(e,t=`screenshot-${new Date().toISOString().slice(0,10)}.png`,n=`png`){let r=X(e,n),i=document.createElement(`a`);i.download=t,i.href=r,document.body.appendChild(i),i.click(),document.body.removeChild(i)}async function Z(e,t={}){if(typeof window>`u`)throw Error(`打印功能仅支持浏览器环境`);let n={...ct,...t},{default:r}=await import(`print-js`);return new Promise((t,i)=>{try{n.onLoadingStart?.(),r({printable:e,type:`image`,style:n.style,showModal:n.showModal,modalMessage:n.modalMessage,onLoadingEnd:n.onLoadingEnd,onPrintDialogClose:()=>{n.onPrintDialogClose?.(),t()}})}catch(e){i(e)}})}function Q(e,t,n){let r=0,i=0;e.forEach(e=>{let{width:n,height:a}=e;t===`horizontal`?(r+=n,i=Math.max(i,a)):(r=Math.max(r,n),i+=a)});let a=(e.length-1)*n;return t===`horizontal`?r+=a:i+=a,{totalWidth:r,totalHeight:i}}function ht(e,t){let{orientation:n,spacing:r,backgroundColor:i,totalWidth:a,totalHeight:o}=t,s=document.createElement(`canvas`);s.width=a,s.height=o;let c=s.getContext(`2d`);if(!c)throw Error(`无法创建画布上下文`);c.fillStyle=i,c.fillRect(0,0,a,o);let l=0,u=0;return e.forEach(e=>{c.drawImage(e,l,u),n===`horizontal`?l+=e.width+r:u+=e.height+r}),s}function gt(e,t,n){return e.length?{orientation:t.orientation||`vertical`,spacing:t.spacing||20,backgroundColor:t.backgroundColor||`#ffffff`}:(n.warning(`没有要打印的元素`),null)}async function _t(e,t,n,r){let{orientation:i,spacing:a,backgroundColor:o}=n;r(10);let s=await Promise.all(e.map(e=>pt(e,t.capture)));r(50);let{totalWidth:c,totalHeight:l}=Q(s,i,a);return r(60),ht(s,{orientation:i,spacing:a,backgroundColor:o,totalWidth:c,totalHeight:l})}async function vt(e,t,n,r,i){r(70),t.watermark&&ft(e,t.watermark),r(90),await Z(X(e,t.capture?.format,t.capture?.quality),t.print),r(100),i.success(`合并打印完成,共合并 ${n} 个元素`)}function yt(){let e=n(),t=k(!1),r=k(0),i=e=>{r.value=Math.max(0,Math.min(100,e))},a=async(e,t={})=>{try{i(0),i(30);let n=await pt(e,t.capture);i(60),t.watermark&&ft(n,t.watermark),i(90);let r=X(n,t.capture?.format||`png`,t.capture?.quality||.92);return i(100),r}catch(e){throw Error(`截图失败: ${e instanceof Error?e.message:`未知错误`}`)}},o=async(n,r={})=>{t.value=!0,i(0);try{await E();let t=await a(n,r);i(95),await Z(t,r.print),i(100),e.success(`打印完成`)}catch(t){throw e.error(`打印失败: ${t instanceof Error?t.message:`未知错误`}`,t),t}finally{t.value=!1,i(0)}},s=async(n,r,i={})=>{t.value=!0;try{await E();let t=await pt(n,i.capture);i.watermark&&ft(t,i.watermark);let a=i.capture?.format||`png`,o=`screenshot-${new Date().toISOString().slice(0,19).replace(/:/g,`-`)}.${a}`;mt(t,r||o,a),e.success(`下载完成`)}catch(t){throw e.error(`下载失败`,t),t}finally{t.value=!1}},c=async(e,t=`Robot Admin`)=>o(e,{watermark:{text:t,position:`repeat`,textColor:`rgba(128, 128, 128, 0.3)`}}),l=async(e,t={})=>{let n=e.length;i(10);let r=e.map(async(e,r)=>{let o=await a(e,t);return i(10+(r+1)/n*70),o});return Promise.all(r)},u=async(e,t={})=>{await e.reduce(async(n,r,i)=>{await n,await Z(r,t),i<e.length-1&&await new Promise(e=>{setTimeout(()=>e(),1e3)})},Promise.resolve())};return{loading:t,progress:r,captureWithWatermark:a,printWithWatermark:o,downloadScreenshot:s,quickPrint:c,batchCapture:l,batchPrint:async(n,r={})=>{if(!n.length){e.warning(`没有要打印的元素`);return}t.value=!0;try{i(0);let t=await l(n,r);i(80),await u(t,r.print),i(100),e.success(`批量打印完成,共 ${n.length} 个元素`)}catch(t){throw e.error(`批量打印失败`,t),t}finally{t.value=!1,i(0)}},mergePrint:async(n,r={},a={})=>{let o=gt(n,a,e);if(o){t.value=!0;try{await vt(await _t(n,r,o,i),r,n.length,i,e)}catch(t){throw e.error(`合并打印失败`,t),t}finally{t.value=!1,i(0)}}},createPreset:(e,t)=>({use:e=>o(e,t),download:(e,n)=>s(e,n,t)}),updateProgress:i,utils:{captureElement:pt,drawWatermark:ft,canvasToDataURL:X,downloadCanvas:mt,printImage:Z}}}const bt={table:{watermark:{text:`Robot Admin - 数据表格`,position:`repeat`,textColor:`rgba(100, 100, 100, 0.25)`,textSize:14,xGap:250,yGap:120},capture:{scale:1.2},print:{orientation:`landscape`,style:`@page { margin: 8mm; } body { font-family: Arial, sans-serif; }`}},form:{watermark:{text:`Robot Admin - 表单数据`,position:`diagonal`,textColor:`rgba(150, 150, 150, 0.2)`,textSize:16},print:{orientation:`portrait`}},report:{watermark:{text:`Robot Admin - 机密报告`,position:`center`,textColor:`rgba(200, 50, 50, 0.15)`,textSize:24},capture:{quality:.95,format:`png`}}};function xt(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?`row_${crypto.randomUUID()}`:`row_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}function St(e,t){return typeof t==`function`?t(e):e[t]}function Ct(e,t){let n=l(e?.()||{}),r=typeof t==`string`?t:`id`;return{...n,[r]:xt()}}function wt(e,i={}){let a={enabled:!0,rowKey:`id`,enableRadioSelection:!0,enableAdd:!0,enableInsert:!0,enableDelete:!0,enableCopy:!0,enableMove:!0,enablePrint:!0,confirmDelete:!0,deleteConfirmText:``,printPreset:`table`,printTargetSelector:`.c-table-wrapper`,defaultRowData:()=>({})},o=ae({...a,...P(i)});I(()=>P(i),e=>{let t=o;Object.keys(t).forEach(e=>delete t[e]),Object.assign(t,a,e)},{deep:!0});let s=n(()=>o.feedback),{t:c}=t(()=>o.locale),u=`c-table-radio-${xt()}`,f=k(null),p=k(!1),m=d(()=>f.value===null?null:e.value.find(e=>St(e,o.rowKey)===f.value)||null),h=d(()=>m.value?e.value.findIndex(e=>e===m.value):-1),g=d(()=>h.value>0),_=d(()=>h.value>=0&&h.value<e.value.length-1),{loading:v,progress:y,printWithWatermark:b,downloadScreenshot:x,quickPrint:w}=yt(),ee=()=>{if(o.printOptions)return o.printOptions;let e=bt[o.printPreset||`table`];return o.printWatermarkText&&e.watermark?{...e,watermark:{...e.watermark,text:o.printWatermarkText}}:e},T=e=>{o.onRowChange?.(e)},E=t=>{let n=St(t,o.rowKey);return n!=null&&n!==``&&!e.value.some(e=>St(e,o.rowKey)===n)?!0:(s.warning(c(`table.invalidRowKeys`,{count:1})),!1)},te=()=>{if(!o.enabled||!o.enableAdd)return;let t=Ct(o.defaultRowData,o.rowKey);E(t)&&(T([...e.value,t]),o.onRowAdd?.(t),s.success(c(`table.addRowSuccess`)))},ne=()=>{if(!o.enabled||!o.enableInsert||!m.value){s.warning(c(`table.selectRowFirst`));return}let t=Ct(o.defaultRowData,o.rowKey);if(!E(t))return;let n=[...e.value];n.splice(h.value+1,0,t),T(n),o.onRowAdd?.(t),s.success(c(`table.insertRowSuccess`))},re=()=>{if(!o.enabled||!o.enableDelete||!m.value){s.warning(c(`table.selectDeleteRowFirst`));return}o.confirmDelete?p.value=!0:ie()},ie=()=>{if(!m.value)return;let t=m.value,n=h.value;T(e.value.filter((e,t)=>t!==n)),f.value=null,o.onSelectionChange?.(null,null),o.onRowDelete?.(t,n),s.success(c(`table.deleteRowSuccess`)),p.value=!1},O=()=>{if(!o.enabled||!o.enableCopy||!m.value){s.warning(c(`table.selectCopyRowFirst`));return}let t=m.value,n=typeof o.rowKey==`string`?o.rowKey:`id`,{[n]:r,...i}=l(t),a={...i,[n]:xt()};E(a)&&(T([...e.value,a]),o.onRowCopy?.(t,a),s.success(c(`table.copyRowSuccess`)))},oe=()=>{if(!o.enabled||!o.enableMove||!g.value)return;let t=h.value,n=[...e.value],r=n[t];[n[t],n[t-1]]=[n[t-1],n[t]],T(n),o.onRowMove?.(r,t,t-1),s.success(c(`table.moveUpSuccess`))},A=()=>{if(!o.enabled||!o.enableMove||!_.value)return;let t=h.value,n=[...e.value],r=n[t];[n[t],n[t+1]]=[n[t+1],n[t]],T(n),o.onRowMove?.(r,t,t+1),s.success(c(`table.moveDownSuccess`))},se=t=>{if(!o.enabled)return;let n=e.value.find(e=>St(e,o.rowKey)===t);n&&(f.value=t,o.onSelectionChange?.(t,n))},j=()=>{f.value=null,o.onSelectionChange?.(null,null)},N=async e=>{if(!e.value){s.error(c(`table.printTargetMissing`));return}let t=ee();await b(e.value,t)};return S()&&D(()=>{f.value=null,p.value=!1}),{selectedRowKey:f,selectedRowData:m,selectedRowIndex:h,canMoveUp:g,canMoveDown:_,deleteConfirmVisible:p,printLoading:v,printProgress:y,addRow:te,insertRow:ne,deleteRow:re,confirmDelete:ie,copyRow:O,moveRowUp:oe,moveRowDown:A,selectRow:se,clearSelection:j,handlePrint:N,handleDownload:async(e,t)=>{if(!e.value){s.error(c(`table.downloadTargetMissing`));return}let n=ee();await x(e.value,t,n)},handleQuickPrint:async e=>{if(!e.value){s.error(c(`table.printTargetMissing`));return}let t=o.printWatermarkText||`Robot Admin`;await w(e.value,t)},enhanceColumns:e=>{if(!o.enabled)return e;let t=[...e];return o.enabled&&o.enableRadioSelection&&t.unshift({key:`_radio_selection`,title:c(`common.select`),width:80,align:`center`,editable:!1,render:e=>{let t=St(e,o.rowKey);return C(`div`,{class:`flex justify-center`},[C(`input`,{type:`radio`,name:u,"aria-label":c(`common.select`),checked:f.value===t,class:`cursor-pointer accent-blue-500 scale-110`,onChange:e=>{e.target.checked&&se(t)}})])}}),t},renderToolbar:e=>{if(!o.enabled)return null;let t=[];o.enablePrint&&t.push(C(R,{loading:v.value,type:`primary`,ghost:!0,onClick:async()=>{try{let t=e??document.querySelector(o.printTargetSelector);t?await N(M(t)):s.warning(c(`table.printTargetMissing`))}catch(e){s.error(c(`table.printTargetMissing`),e)}}},{icon:()=>C(r,{name:`mdi:printer`,title:c(`common.print`)}),default:()=>c(`common.print`)}));let n=[];return o.enableAdd&&n.push(C(R,{onClick:te,type:`primary`},{icon:()=>C(r,{name:`mdi:plus`,title:c(`table.addRow`)}),default:()=>c(`table.addRow`)})),o.enableInsert&&n.push(C(H,{disabled:!!m.value},{trigger:()=>C(R,{onClick:ne,disabled:!m.value,type:`primary`,ghost:!0},{icon:()=>C(r,{name:`mdi:table-row-plus-after`,title:c(`table.insertRow`)}),default:()=>c(`table.insertRow`)}),default:()=>c(`table.selectRowFirst`)})),o.enableDelete&&n.push(C(H,{disabled:!!m.value},{trigger:()=>C(R,{onClick:re,disabled:!m.value,type:`error`,ghost:!0},{icon:()=>C(r,{name:`mdi:delete`,title:c(`table.deleteRow`)}),default:()=>c(`table.deleteRow`)}),default:()=>c(`table.selectDeleteRowFirst`)})),o.enableCopy&&n.push(C(H,{disabled:!!m.value},{trigger:()=>C(R,{onClick:O,disabled:!m.value,type:`info`,ghost:!0},{icon:()=>C(r,{name:`mdi:content-copy`,title:c(`table.copyRow`)}),default:()=>c(`table.copyRow`)}),default:()=>c(`table.selectCopyRowFirst`)})),o.enableMove&&n.push(C(H,{disabled:g.value},{trigger:()=>C(R,{onClick:oe,disabled:!g.value,type:`warning`,ghost:!0},{icon:()=>C(r,{name:`mdi:arrow-up`,title:c(`table.moveUp`)}),default:()=>c(`table.moveUp`)}),default:()=>m.value?c(`table.firstRow`):c(`table.selectRowFirst`)}),C(H,{disabled:_.value},{trigger:()=>C(R,{onClick:A,disabled:!_.value,type:`warning`,ghost:!0},{icon:()=>C(r,{name:`mdi:arrow-down`,title:c(`table.moveDown`)}),default:()=>c(`table.moveDown`)}),default:()=>m.value?c(`table.lastRow`):c(`table.selectRowFirst`)})),n.length>0&&t.push(C(z,{},()=>n)),C(`div`,{class:`dynamic-rows-toolbar mb-4 flex justify-end`},[C(ge,{},()=>t)])},renderConfirmModal:()=>C(me,{show:p.value,"onUpdate:show":e=>{p.value=e},preset:`dialog`,title:c(`table.deleteTitle`),content:o.deleteConfirmText||c(`table.deleteRowContent`),positiveText:c(`table.confirmDeleteRow`),negativeText:c(`common.cancel`),onPositiveClick:ie})}}function Tt(e){let r=0,{data:i,rowKey:a,emit:o}=e,s=()=>P(e.config),c=()=>s().treeEnabled?s().treeChildrenKey??`children`:void 0,l=d(()=>He(i(),c())),u=()=>l.value,f=n(()=>s().feedback),{t:p}=t(()=>s().locale),m=(e,t,n)=>i()===e&&l.value.find(e=>a(e)===t)===n,h={onSave:async(e,t,n,u)=>{let d=i(),f=u??a(e),p=l.value.find(e=>a(e)===f);if(!p)return;let h=l.value.indexOf(p),g={...p,...e},_=r;if(s().editable)try{if(await s().onEditSave?.(g,h,n),r!==_||(await o(`save`,g,h,n),r!==_)||!m(d,f,p))return;o(`update:data`,Ue(i(),p,g,c()))}catch(e){throw s().onEditError?.(e),o(`edit-error`,e),e}},onCancel:async(e,t)=>{let n=r;try{if(await s().onEditCancel?.(e,t),r!==n)return;await o(`cancel`,e,t)}catch(e){throw s().onEditError?.(e),o(`edit-error`,e),e}},onExpandChange:(e,t,n)=>{o(`expand-change`,e,t,n)},onSelectionChange:(e,t,n)=>{o(`selection-change`,e,t,n)},onChildSelectionChange:(e,t,n)=>{o(`child-selection-change`,e,t,n)},onRowChange:e=>{o(`update:data`,e),s().dynamicRows?.onRowChange?.(e)},onRowSelectionChange:(e,t)=>{o(`row-selection-change`,e,t),s().dynamicRows?.onSelectionChange?.(e,t)},onRowAdd:e=>{o(`row-add`,e),s().dynamicRows?.onRowAdd?.(e)},onRowDelete:(e,t)=>{o(`row-delete`,e,t),s().dynamicRows?.onRowDelete?.(e,t)},onRowCopy:(e,t)=>{o(`row-copy`,e,t),s().dynamicRows?.onRowCopy?.(e,t)},onRowMove:(e,t,n)=>{o(`row-move`,e,t,n),s().dynamicRows?.onRowMove?.(e,t,n)}},g=()=>({rowEdit:Ve({data:u,rowKey:a,onSave:(e,t,n)=>h.onSave(e,t,void 0,n),onCancel:h.onCancel,columns:e.columns}),cellEdit:K({data:u,rowKey:a,onSave:h.onSave,columns:e.columns}),modalEdit:q({data:u,rowKey:a,onSave:(e,t,n)=>h.onSave(e,t,void 0,n),onCancel:h.onCancel})}),_=()=>at({data:d(()=>i()),rowKey:a,get childrenKey(){return c()},childRowKey:e=>e.id,get locale(){return s().locale},renderLoading:e.renderLoading,get defaultExpandedKeys(){return s().defaultExpandedKeys},get onLoadData(){return s().onLoadExpandData},onError:(e,t)=>{let n=s().onExpandError;n?n(e,t):f.error(p(`table.loadFailed`),e)},get renderContent(){return s().renderExpandContent},get rowExpandable(){return s().rowExpandable},get enableSelection(){return s().enableSelection},get defaultCheckedKeys(){return s().defaultCheckedKeys},get rowCheckable(){return s().rowCheckable},get maxSelection(){return s().maxSelection},get enableChildSelection(){return s().enableChildSelection},get childRowCheckable(){return s().childRowCheckable},get enableParentChildLink(){return s().enableParentChildLink},get parentChildLinkMode(){return s().parentChildLinkMode},onExpandChange:h.onExpandChange,onSelectionChange:h.onSelectionChange,onChildSelectionChange:h.onChildSelectionChange}),v=()=>wt(d(()=>i()),d(()=>({...s().dynamicRows,rowKey:s().dynamicRows?.rowKey??P(e.rowKeyField)??a,enabled:!!s().dynamicRows,feedback:s().feedback,locale:s().locale,onRowChange:h.onRowChange,onSelectionChange:h.onRowSelectionChange,onRowAdd:h.onRowAdd,onRowDelete:h.onRowDelete,onRowCopy:h.onRowCopy,onRowMove:h.onRowMove}))),y=g(),b=()=>{r++,y.rowEdit.invalidate(),y.cellEdit.invalidate(),y.modalEdit.invalidate()};I([()=>s().editable,()=>s().editMode],b,{flush:`sync`}),S()&&D(b);let x=_(),C=v();return{editStates:y,expandState:x,dynamicRowsState:C,stateManager:{edit:{start(e,t){if(!s().editable)return;let n=s().editMode;n===`modal`?y.modalEdit.startEdit(e):n===`cell`&&t?y.cellEdit.startEditCell(e,t):(n===`row`||n===`both`)&&y.rowEdit.startEditRow(e)},cancel(){y.modalEdit.isModalVisible.value?y.modalEdit.cancelEdit():y.cellEdit.editingCell.value.rowKey===null?y.rowEdit.editingRowKey.value!==null&&y.rowEdit.cancelEditRow():y.cellEdit.cancelEditCell()},async save(){y.modalEdit.isModalVisible.value?await y.modalEdit.saveEdit():y.cellEdit.editingCell.value.rowKey===null?y.rowEdit.editingRowKey.value!==null&&await y.rowEdit.saveEditRow():await y.cellEdit.saveEditCell()},isEditing(e,t){return s().editMode===`modal`?y.modalEdit.isEditingRow(e):t?y.cellEdit.isEditingCell(e,t):y.rowEdit.isEditingRow(e)},getEditingData(){return y.modalEdit.isModalVisible.value?y.modalEdit.editingData.value:y.rowEdit.editingRowKey.value===null?null:y.rowEdit.getEditingRowData(y.rowEdit.editingRowKey.value)}},expand:{async row(e){if(x){let t=[...x.expandedKeys.value];t.includes(e)||(t.push(e),x.handleExpandChange(t))}},collapse(e){if(x){let t=x.expandedKeys.value.filter(t=>t!==e);x.handleExpandChange(t)}},async toggle(e){x?.expandedKeys.value.includes(e)?this.collapse(e):await this.row(e)},async all(){await x?.expandAll()},collapseAll(){x?.collapseAll()},isExpanded(e){return x?.expandedKeys.value.includes(e)??!1}},selection:{select(e){if(x?.checkedKeys.value&&!x.checkedKeys.value.includes(e)){let t=[...x.checkedKeys.value,e];x.handleSelectionChange(t)}},unselect(e){if(x?.checkedKeys.value){let t=x.checkedKeys.value.filter(t=>t!==e);x.handleSelectionChange(t)}},all(){x?.selectAll()},clear(){x?.clearSelection()},isSelected(e){return x?.checkedKeys.value.includes(e)??!1},getSelected(){if(!x?.checkedKeys.value)return[];let e=new Set(x.checkedKeys.value);return l.value.filter(t=>e.has(a(t)))}},childSelection:{select(e,t){if(x?.childSelections.value){let n=x.childSelections.value.get(e)||[];if(!n.includes(t)){let r=[...n,t];x.childSelections.value.set(e,r),o(`child-selection-change`,e,r,[])}}},unselect(e,t){if(x?.childSelections.value){let n=(x.childSelections.value.get(e)||[]).filter(e=>e!==t);x.childSelections.value.set(e,n),o(`child-selection-change`,e,n,[])}},selectAll(e){if(x?.childSelections.value&&x.expandDataMap?.value){let t=x.expandDataMap.value.get(e)||[],n=t.map(e=>e.id);x.childSelections.value.set(e,n),o(`child-selection-change`,e,n,t)}},clear(e){x?.childSelections.value&&(x.childSelections.value.set(e,[]),o(`child-selection-change`,e,[],[]))},getSelected(e){if(!x?.childSelections.value||!x.expandDataMap?.value)return[];let t=x.childSelections.value.get(e)||[];return(x.expandDataMap.value.get(e)||[]).filter(e=>t.includes(e.id))}},dynamicRows:{add(){C?.addRow()},insert(){C?.insertRow()},delete(){C?.deleteRow()},copy(){C?.copyRow()},moveUp(){C?.moveRowUp()},moveDown(){C?.moveRowDown()},clearSelection(){C?.clearSelection()},getSelected(){return C?.selectedRowData.value||null},async print(e){C&&e&&await C.handlePrint(M(e))},async download(e,t){C&&e&&await C.handleDownload(M(e),t)}},clearAllSelections(){x?.clearAllSelections()}},expandedKeys:d(()=>x?.expandedKeys.value??[]),checkedKeys:d(()=>x?.checkedKeys.value??[]),eventHandlers:h}}const $={page:1,pageSize:10,showSizePicker:!0,showQuickJumper:!0,pageSizes:[10,20,50,100],simple:!1,size:`medium`};function Et(e,t){return!Number.isFinite(e)||(e??0)<=0?t:Math.max(1,Math.trunc(e))}function Dt(e){let{data:t,config:n,emit:r}=e,i=k($.page),a=k($.pageSize),o=d(()=>{let e=typeof t==`function`?t():F(t);return Array.isArray(e)?e:[]}),s=d(()=>{let e=n.value;return e?.remote?Math.max(0,Math.trunc(e.total??o.value.length)):o.value.length}),c=()=>n.value?.enabled?Math.max(1,Math.ceil(s.value/a.value)):1,l=(e,t)=>{let n=Math.min(Et(e,1),c());i.value!==n&&(i.value=n,t&&r?.(`pagination-change`,n,a.value))},u=e=>l(e,!0),f=e=>{let t=Et(e,$.pageSize),n=a.value!==t;a.value=t,i.value=1,n&&r?.(`pagination-change`,1,t)},p=()=>l(1,!0),m=d(()=>{let e=n.value;if(!e?.enabled||e.remote)return o.value;let t=(i.value-1)*a.value;return o.value.slice(t,t+a.value)}),h=d(()=>{let e=n.value;return e?.enabled?{page:i.value,pageSize:a.value,itemCount:s.value,showSizePicker:e.showSizePicker??$.showSizePicker,showQuickJumper:e.showQuickJumper??$.showQuickJumper,pageSizes:e.pageSizes??$.pageSizes,simple:e.simple??$.simple,size:e.size??$.size,prefix:e=>`共 ${e.itemCount??0} 条`,suffix:e=>(e.itemCount??0)>0?`第 ${e.startIndex+1}-${e.endIndex} 条`:`暂无数据`,"onUpdate:page":u,"onUpdate:pageSize":f}:null});return I(()=>[n.value?.page,n.value?.pageSize],([e,t])=>{a.value=Et(t,$.pageSize),i.value=Math.min(Et(e,$.page),c())},{immediate:!0}),I([s,a],()=>{let e=Math.min(i.value,c());e!==i.value&&(i.value=e,r?.(`pagination-change`,e,a.value))}),{currentPage:i,currentPageSize:a,paginatedData:m,paginationConfig:h,handlePageChange:u,handlePageSizeChange:f,resetToFirstPage:p,getTotalPages:c}}function Ot(e){return e.flatMap(e=>e.visible===!1?[]:`children`in e&&Array.isArray(e.children)?Ot(e.children):`type`in e&&e.type?[]:[e])}function kt(e,t){return e==null?t==null?0:-1:t==null?1:typeof e==`number`&&typeof t==`number`?e-t:typeof e==`string`&&typeof t==`string`?e.localeCompare(t):0}function At(e,t,n){let{sorter:r}=e;return typeof r==`function`?r(t,n):r&&typeof r==`object`&&typeof r.compare==`function`?r.compare(t,n):r===`default`||typeof r==`object`&&r.compare===`default`?kt(t[e.key],n[e.key]):0}function jt(e,t,n){let r=Array.isArray(t)?t:[t];if(t==null||r.length===0)return!0;let{filter:i}=e,a=t=>t==null?!0:typeof i==`function`?i(t,n):i===`default`?String(n[e.key]).includes(String(t)):!0;return e.filterMode===`and`?r.every(a):r.some(a)}function Mt(e,t){return e.filterOptionValues===void 0?e.filterOptionValue===void 0?Object.prototype.hasOwnProperty.call(t,e.key)?t[e.key]:e.defaultFilterOptionValues??e.defaultFilterOptionValue:e.filterOptionValue:e.filterOptionValues}function Nt(e){let t=M(),n=M({}),r=d(()=>Ot(P(e.columns))),i=d(()=>r.value.flatMap(e=>{if(e.filter!==`default`&&typeof e.filter!=`function`)return[];let t=Mt(e,n.value);return t==null||Array.isArray(t)&&t.length===0?[]:[{column:e,value:t}]})),a=d(()=>{let t=P(e.data);if(P(e.remote))return t;let n=i.value;return n.length?t.filter(e=>n.every(({column:t,value:n})=>jt(t,n,e))):t}),o=d(()=>{let e=r.value.filter(e=>e.sortOrder===!1||e.sortOrder===`ascend`||e.sortOrder===`descend`);return e.length?e.map(e=>({columnKey:e.key,order:e.sortOrder})):t.value===void 0?r.value.map(e=>({columnKey:e.key,order:e.defaultSortOrder})):t.value?Array.isArray(t.value)?t.value:[t.value]:[]});return{processedData:d(()=>{if(P(e.remote))return P(e.data);let t=o.value.flatMap(e=>{let t=r.value.find(t=>t.key===e.columnKey);if(!t?.sorter||!e.order)return[];let n=typeof t.sorter==`object`?t.sorter.multiple??0:0;return[{column:t,direction:e.order===`ascend`?1:-1,priority:n}]}).sort((e,t)=>t.priority-e.priority);return t.length?a.value.slice().sort((e,n)=>{for(let r of t){let t=At(r.column,e,n)*r.direction;if(t)return t}return 0}):a.value}),setSorter:e=>{t.value=e},setFilters:e=>{n.value={...e}}}}const Pt=e=>e&&typeof e==`object`&&`error`in e?e.error:null;function Ft(e){let{actions:i,config:a,tableManager:s,rowKey:c,onRowDeleted:l,onViewDetail:u,isDeleteFeedbackHandled:d}=e,f=o(),p=!0;S()&&D(()=>{p=!1});let m=(e,t)=>JSON.stringify([typeof e,e,t]),h=n(()=>a.value.feedback),{t:g}=t(()=>a.value.locale),_=e=>e===`edit`?a.value.editable&&i.value?.edit!==!1:typeof i.value?.[e]==`function`,v=e=>e!==!1&&typeof e==`function`,y=e=>e&&typeof e==`object`&&`data`in e?e.data:e,b=(e,t,n=`primary`,i,o,s=!1)=>C(R,{size:a.value.controlSize??`small`,type:n,quaternary:!0,onClick:i,loading:s||(o?f.isRunning(o):!1),disabled:o?f.isRunning(o):!1},()=>[C(r,{name:e,size:14,title:t})]),x=async(e,t)=>{let n=c(e),r=i.value?.edit;if(v(r)){try{await r(e,t)}catch(e){h.error(g(`table.actionFailed`,{action:g(`common.edit`)}),e)}return}a.value.editMode===`modal`?s.editStates.modalEdit.startEdit(n,{...e}):s.editStates.rowEdit.startEditRow(n)},w=(e,t)=>{p&&!t&&h.error(g(`table.deleteFailed`),e)},ee=async(e,t,n)=>{let r=d?.(e)===!0;try{let i=await e(t,n);if(!p)return;let a=Pt(i);if(a!=null){w(a,r);return}r||h.success(g(`table.deleteSuccess`)),l?.(t,n)}catch(e){throw w(e,r),e}},T=async(e,t)=>{let n=i.value?.delete;v(n)&&await h.confirm({title:g(`table.deleteTitle`),content:g(`table.deleteContent`),positiveText:g(`common.confirm`),negativeText:g(`common.cancel`),type:`warning`})&&p&&await ee(n,e,t)},E=async(e,t)=>{let n=i.value?.detail;if(!v(n)){u?.(e);return}try{let r=await n(e,t);if(!p)return;let i=y(r);u?.(i||e)}catch(t){if(!p)return;h.error(g(`table.detailFailed`),t),u?.(e)}},te=(e,t)=>f.run(m(c(e),`edit`),()=>x(e,t)),ne=(e,t)=>f.run(m(c(e),`delete`),()=>T(e,t)),re=(e,t)=>f.run(m(c(e),`detail`),()=>E(e,t)),ie=e=>s.editStates.rowEdit.isEditingRow(e)?[b(`mdi:check`,g(`common.save`),`primary`,()=>void f.run(m(e,`save`),()=>s.editStates.rowEdit.saveEditRow()).catch(e=>h.error(g(`table.actionFailed`,{action:g(`common.save`)}),e)),m(e,`save`)),b(`mdi:close`,g(`common.cancel`),`default`,()=>void f.run(m(e,`cancel`),()=>s.editStates.rowEdit.cancelEditRow()).catch(e=>h.error(g(`table.actionFailed`,{action:g(`common.cancel`)}),e)),m(e,`cancel`))]:[b(`mdi:pencil`,g(`common.edit`),`warning`,()=>s.editStates.rowEdit.startEditRow(e))],O=(e,t)=>{let n=[];return _(`detail`)&&n.push(b(`mdi:eye`,g(`common.detail`),`info`,()=>void re(e,t),m(c(e),`detail`))),_(`edit`)&&(a.value.editMode===`modal`||v(i.value?.edit))&&n.push(b(`mdi:pencil`,g(`common.edit`),`warning`,()=>void te(e,t),m(c(e),`edit`))),_(`delete`)&&n.push(b(`mdi:delete`,g(`common.delete`),`error`,()=>void ne(e,t).catch(()=>void 0),m(c(e),`delete`))),n},ae=(e,t)=>{let n=i.value?.custom;if(!n?.length)return null;let a=n.filter(n=>n.show?n.show(e,t):!0);return a.length?C(B,{options:a.map(n=>{let i=typeof n.label==`function`?n.label(e,t):n.label,a=typeof n.icon==`function`?n.icon(e,t):n.icon;return{label:i,key:n.key,icon:()=>C(r,{name:a,size:14}),disabled:n.disabled?.(e,t)||f.isRunning(m(c(e),`custom:${n.key}`))}}),onSelect:n=>{let r=a.find(e=>e.key===n);if(!r)return;let i=typeof r.label==`function`?r.label(e,t):r.label;f.run(m(c(e),`custom:${r.key}`),()=>r.onClick(e,t),()=>!r.disabled?.(e,t)).catch(e=>h.error(g(`table.actionFailed`,{action:i}),e))}},()=>b(`mdi:dots-horizontal`,g(`table.moreActions`),`default`,()=>{},void 0,a.some(t=>f.isRunning(m(c(e),`custom:${t.key}`))))):null};return{renderActions:(e,t)=>{if(i.value?.render)return i.value.render(e,t);let n=c(e),r=a.value.editable&&[`row`,`both`].includes(a.value.editMode);if(r&&s.editStates.rowEdit.isEditingRow(n))return C(ge,{size:2,wrap:!1},()=>ie(n));let o=v(i.value?.edit),l=[...r&&!o?ie(n):[],...O(e,t)],u=ae(e,t);return u&&l.push(u),C(ge,{size:2,wrap:!1},()=>l)},isActionEnabled:_}}const It=Symbol(`C_TABLE_GLOBAL_CONFIG`),Lt={date:{format:`YYYY-MM-DD`},datetime:{format:`YYYY-MM-DD HH:mm:ss`},currency:{prefix:`¥`,precision:2},percent:{precision:2,suffix:`%`},number:{precision:0}};function Rt(e,t){if(e==null||e===``)return`-`;let n=new Date(typeof e==`number`?e:String(e));if(Number.isNaN(n.getTime()))return String(e);let r=e=>String(e).padStart(2,`0`);return t.replace(`YYYY`,String(n.getFullYear())).replace(`MM`,r(n.getMonth()+1)).replace(`DD`,r(n.getDate())).replace(`HH`,r(n.getHours())).replace(`mm`,r(n.getMinutes())).replace(`ss`,r(n.getSeconds()))}function zt(e,t){if(e==null||e===``)return`-`;let n=Number(e);return Number.isNaN(n)?String(e):n.toLocaleString(`zh-CN`,{minimumFractionDigits:t,maximumFractionDigits:t})}const Bt={date:(e,t)=>Rt(e,t.format??`YYYY-MM-DD`),datetime:(e,t)=>Rt(e,t.format??`YYYY-MM-DD HH:mm:ss`),currency:(e,t)=>{let n=zt(e,t.precision??2);return n===`-`?`-`:`${t.prefix??`¥`}${n}${t.suffix??``}`},percent:(e,t)=>{if(e==null||e===``)return`-`;let n=Number(e);return Number.isNaN(n)?String(e):`${(n*100).toFixed(t.precision??2)}${t.suffix??`%`}`},number:(e,t)=>zt(e,t.precision??0)};function Vt(e,t,n,r){if(n.fn)return n.fn(e,t);if(n.type===`enum`)return n.mapping?n.mapping[String(e)]??String(e??`-`):String(e??`-`);let i=n.type&&Bt[n.type];return i?i(e,{...{...Lt,...r}[n.type],...n.config}):String(e??`-`)}function Ht(){return x()?w(It,{}):{}}const Ut=(e,t)=>t===void 0?e:t&&e&&typeof t==`object`&&typeof e==`object`&&!Array.isArray(t)&&!Array.isArray(e)?{...e,...t}:t;function Wt(e,t){let n=t.defaults??{},r={...n,...e};if([`edit`,`pagination`,`expand`,`selection`,`dynamicRows`,`toolbar`,`display`,`virtualScroll`,`summary`,`columnDrag`,`tree`,`rowDrag`,`crossPageSelection`,`export`,`formatterConfig`,`error`,`batchActions`].forEach(t=>{let i=e=>t===`edit`&&typeof e==`string`?{mode:e}:e,a=Ut(i(n[t]),i(e[t]));a!==void 0&&(r[t]=a)}),t.display){let e=typeof r.display==`object`?r.display:{};r.display={...t.display,...e}}if(t.pageSize&&r.pagination!==!1){let e=typeof r.pagination==`object`?r.pagination:{};e.pageSize||(r.pagination={...e,pageSize:t.pageSize})}return r}const Gt=y(()=>import(`./date-picker.js`)),Kt={number:pe,switch:ve,input:fe,email:fe,mobile:fe,date:e=>C(Gt,{...e,type:`date`,format:`yyyy-MM-dd`}),select:e=>C(V,{...e,options:e.options||[]}),textarea:e=>C(fe,{...e,type:`textarea`,rows:3})},qt={number:`inputNumber`,date:`datePicker`,textarea:`textarea`,select:`select`,switch:`switch`},Jt=e=>e.map(e=>{let t=e.required?[{required:!0,message:`请输入${e.title}`,trigger:[`blur`,`input`],validator:async(t,n)=>{if(!n&&n!==0&&n!==!1)throw Error(`请输入${e.title}`)}}]:[];return{prop:e.key,label:e.title||e.key,type:qt[e.editType||`input`]||`input`,placeholder:`请输入${e.title}`,rules:t,attrs:e.editProps||{},layout:{span:1},show:!0}});function Yt(e,t,n,r={},i=0,a){if(e.editRender)return e.editRender(t,r,i,{onUpdate:n});let o=e,s={value:t,"onUpdate:value":n,placeholder:`请输入${o.title??``}`,style:{width:`100%`},...a?{size:a}:{},...e.editProps};return C(Kt[e.editType||`input`]||Kt.input,s)}function Xt(e,t,n,r,i){return e.render?e.render(t,n)??String(r??``):e.formatter?Vt(r,t,e.formatter,i):String(r??``)}function Zt(e,t,n,i,a,o={rowData:{},rowIndex:0}){let s=(e,t,n)=>C(`button`,{class:`cell-action-btn cell-action-${e}`,title:t,type:`button`,onClick:e=>{e.stopPropagation(),e.preventDefault(),n(e)}},[C(r,{name:`mdi:${e===`save`?`check`:`close`}`,title:e===`save`?`保存`:`取消`,size:12})]);return C(`div`,{class:`cell-editing-container`},[C(`div`,{class:`cell-editing-input`},[Yt(e,t,n,o.rowData,o.rowIndex,o.size)]),C(`div`,{class:`cell-editing-actions`},[s(`save`,`保存`,i),s(`cancel`,`取消`,a)])])}function Qt(e,t,n,i,a,o){let s;return s=e.render?e.render(t,n)??String(i??``):e.formatter?Vt(i,t,e.formatter,o):String(i??``),C(`div`,{class:`cell-edit-wrapper`},[C(`span`,{class:`cell-value`},s),C(r,{name:`mdi:square-edit-outline`,title:`编辑`,class:`cell-edit-icon`,size:14,clickable:!0,onClick:e=>{e.stopPropagation(),a()}})])}function $t(e){let{rawColumns:t,config:n,columnWidth:r,rowKey:i,tableManager:a,actionsRenderer:o,editModeChecker:s,showActionsColumn:c}=e,l=k([]),u=k(!1),f=e=>{let t=l.value.find(e=>e.key===`_actions`),n=e.filter(e=>e.key!==`_actions`);l.value=c.value?[...n,t||{key:`_actions`,title:`操作`,width:180,editable:!1,visible:!0,fixed:`right`}]:n};I([t,c],([e])=>{e?.length?f(e):l.value=[]},{deep:!0,immediate:!0});let p=(e,t,r,i)=>{let o=e.key??``,s=t[o],{isEditingCell:c,getEditingCellValue:l,updateEditingCellValue:u,saveEditCell:d,cancelEditCell:f,startEditCell:p}=a.editStates.cellEdit;return c(i,o)?Zt(e,l(i,o),e=>u(i,o,e),()=>d(),()=>f(),{rowData:t,rowIndex:r,size:n.value.density?n.value.controlSize:void 0}):Qt(e,t,r,s,()=>p(i,o),n.value.formatterConfig)},m=(e,t,r)=>{let o=e.key??``,c=t[o],l=i(t),u=s.value;if(u.isNonEditable(e))return Xt(e,t,r,c,n.value.formatterConfig);if(u.isRowEditMode()&&a.editStates.rowEdit.isEditingRow(l)){let i=a.editStates.rowEdit.getEditingRowData(l);return Yt(e,i?.[o],e=>a.editStates.rowEdit.updateEditingRowData(l,o,e),i??t,r,n.value.density?n.value.controlSize:void 0)}return u.isCellEditMode()?p(e,t,r,l):Xt(e,t,r,c,n.value.formatterConfig)},h=e=>{let t=e.width||r||180;return typeof t==`number`?t:180},g=e=>{let t=e;return{key:`_index`,title:t.title||`序号`,width:typeof(t.width||50)==`number`&&t.width||50,titleAlign:`center`,align:`center`,render:(e,t)=>t+1,fixed:e.fixed}},_=e=>{let t=e,n={...t,width:h(e),titleAlign:t.titleAlign||`center`,align:t.align||`center`,render:(t,n)=>m(e,t,n)};return e.fixed&&(n.fixed=e.fixed),e.resizable&&typeof n.width==`number`&&(n.resizable=!0,n.minWidth=e.minWidth||80,n.maxWidth=e.maxWidth||500),n};return{reactiveColumns:l,showSettingsPanel:u,computedColumns:d(()=>{let e=l.value.filter(e=>{let t=e;return t.visible!==!1&&t.key!==`_actions`}).map(e=>e.type===`index`?g(e):_(e));if(a.dynamicRowsState&&(e=a.dynamicRowsState.enhanceColumns(e)),a.expandState&&(n.value.expandable||n.value.enableSelection)&&(e=a.expandState.getTableColumns(e)),c.value){let t=l.value.find(e=>e.key===`_actions`);e.push({key:`_actions`,title:`操作`,width:t?.width??180,className:`c-table-actions-column`,align:`center`,titleAlign:`center`,render:o,fixed:t?.fixed})}return e}),computedScrollX:d(()=>{if(e.scrollX!==void 0)return e.scrollX;if(l.value.some(e=>{let t=e;return t.fixed&&t.visible!==!1}))return l.value.filter(e=>e.visible!==!1).reduce((e,t)=>e+h(t),0)+200}),handleColumnChange:e=>{l.value=e.map(e=>{let t=e;return{...e,visible:t.visible!==!1,fixed:e.fixed,width:t.width||r,align:t.align||`center`,titleAlign:t.titleAlign||`center`}})}}}function en(e){let{data:t,onReorder:n,onSort:r}=e,i=k(!1),a=null,o=0,s=!1,c=()=>{a?.destroy(),a=null,i.value=!1},l=async l=>{let u=++o;c();let d=P(e.config);if(!(!d?.enabled||!l||s))try{let{default:e}=await import(`sortablejs`);if(s||u!==o)return;let c=l.querySelector(`.n-data-table-tbody`);if(!c)return;a=new e(c,{animation:d.animationDuration??150,handle:d.handleSelector,ghostClass:d.ghostClass??`row-drag-ghost`,chosenClass:d.chosenClass??`row-drag-chosen`,onStart:()=>{i.value=!0},onEnd:e=>{if(i.value=!1,e.oldIndex==null||e.newIndex==null||e.oldIndex===e.newIndex)return;let a=[...t.value],[o]=a.splice(e.oldIndex,1);o&&(a.splice(e.newIndex,0,o),n?.(a),r?.(o,e.oldIndex,e.newIndex))}})}catch{}},u=()=>{o+=1,c()};return re(()=>{s=!0,u()}),{initRowDrag:l,destroyRowDrag:u,isDragging:i}}function tn(e){let t=k(new Set),n=j(new Map),r=()=>P(e.config)?.enabled===!0,i=(t=e.allData.value)=>He(t,P(e.childrenKey)),a=t=>e.rowCheckable?.(t)!==!1,o=()=>{let t=P(e.config)?.maxSelection;return Number.isFinite(t)&&(t??0)>0?Math.trunc(t):void 0},s=d(()=>t.value.size),c=()=>[...t.value].flatMap(e=>{let t=n.get(e);return t?[t]:[]}),l=e=>{let t=o(),n=new Set;for(let r of e){if(t&&n.size>=t)break;n.add(r)}return n},u=(r,i=[])=>{let a=l(r);for(let t of i){let r=e.rowKey(t);a.has(r)&&n.set(r,t)}for(let e of n.keys())a.has(e)||n.delete(e);let o=t.value;o.size===a.size&&[...o].every(e=>a.has(e))||(t.value=a,e.onSelectionChange?.([...a],c()))},f=n=>i(n).map(e.rowKey).filter(e=>t.value.has(e)),p=(n,o)=>{if(!r())return;let s=i(o),c=new Set(s.filter(a).map(e.rowKey)),l=new Set(t.value);s.forEach(t=>l.delete(e.rowKey(t))),n.forEach(e=>{c.has(e)&&l.add(e)}),u(l,s)},m=()=>{if(!r())return;let n=i().filter(a),o=n.map(e.rowKey);u(P(e.remote)?[...t.value,...o]:o,n)},h=n=>{if(!r())return!1;if(t.value.has(n))return!0;let s=i().find(t=>e.rowKey(t)===n&&a(t));if(!s)return!1;let c=o();return c&&t.value.size>=c?!1:(u([...t.value,n],[s]),!0)},g=e=>{if(!t.value.has(e))return;let n=new Set(t.value);n.delete(e),u(n)},_=()=>u([]);return I(e.allData,a=>{if(!r()||t.value.size===0)return;let o=i(a);if(P(e.remote)){for(let r of o){let i=e.rowKey(r);t.value.has(i)&&n.set(i,r)}return}let s=new Set(o.map(e.rowKey));u([...t.value].filter(e=>s.has(e)),o)}),I(()=>[r(),o()],([e])=>{e?u(t.value):_()}),{selectedKeys:t,selectedCount:s,getPageCheckedKeys:f,handlePageSelectionChange:p,selectAll:m,select:h,unselect:g,clearAll:_,getSelectedRows:c,isSelected:e=>t.value.has(e)}}function nn(e,t){return e.filter(e=>typeof e.key!=`string`||e.key.startsWith(`_`)||e.type===`selection`||e.type===`expand`?!1:t?.length?t.includes(e.key):e.visible!==!1)}function rn(e,t,n){let r=e[t.key];return t.formatter?Vt(r,e,t.formatter,n):r==null?``:typeof r==`boolean`?r?`是`:`否`:String(r)}function an(e,t,n){let r=n&&/^[=+\-@\t\r]/.test(e)?`'${e}`:e;return r.includes(t)||r.includes(`"`)||r.includes(`
|
|
2
|
-
`)||r.includes(`\r`)?`"${r.replace(/"/g,`""`)}"`:r}function
|
|
3
|
-
`)],{type:`text/csv;charset=utf-8;`}),`${on(n.filename)}.csv`)}async function cn(e,t,n){let r=nn(t,n.columnKeys),i;try{i=await import(`xlsx`)}catch(r){n.onFallback?.(`xlsx`,`csv`,r),sn(e,t,{...n,format:`csv`});return}let a=r.map(e=>e.title??e.key??``),o=e.map(e=>r.map(t=>rn(e,t,n.formatterConfig))),s=n.includeHeader===!1?o:[a,...o],c=i.utils.aoa_to_sheet(s),l=i.utils.book_new();i.utils.book_append_sheet(l,c,`Sheet1`),i.writeFile(l,`${on(n.filename)}.xlsx`)}function ln(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.style.display=`none`,document.body.appendChild(r),r.click(),document.body.removeChild(r),setTimeout(()=>URL.revokeObjectURL(n),0)}async function un(e,t,n={}){n.format===`xlsx`?await cn(e,t,n):sn(e,t,n)}const dn=e=>[{label:e.fixed?`✓ 取消固定`:`不固定`,key:`none`,disabled:!e.fixed},{label:e.fixed===`left`?`✓ 固定左侧`:`固定左侧`,key:`left`,disabled:!1},{label:e.fixed===`right`?`✓ 固定右侧`:`固定右侧`,key:`right`,disabled:!1}],fn=[`_actions`],pn=[`selection`,`expand`],mn=e=>fn.includes(e.key)||pn.includes(e.type),hn=e=>typeof e==`string`||typeof e==`number`&&Number.isFinite(e),gn=e=>typeof e==`number`&&Number.isFinite(e)&&e>=0||typeof e==`string`&&e.trim().length>0&&e.length<=128,_n=e=>e.map(e=>({...e})),vn=e=>{let t;try{t=JSON.parse(e)}catch{return[]}return Array.isArray(t)?t.flatMap((e,t)=>{if(!e||typeof e!=`object`||Array.isArray(e))return[];let n=e;return hn(n.key)?[{key:n.key,order:t,...typeof n.visible==`boolean`&&{visible:n.visible},...gn(n.width)&&{width:n.width},...(n.fixed===`left`||n.fixed===`right`)&&{fixed:n.fixed}}]:[]}):[]},yn=(e,t)=>{let n=new Map(vn(t).map(e=>[e.key,e]));return _n(e).map(e=>{let t=hn(e.key)?n.get(e.key):void 0;return t?{...e,visible:t.visible??e.visible,width:t.width??e.width,fixed:t.fixed??e.fixed}:e}).sort((e,t)=>{let r=hn(e.key)?n.get(e.key)?.order:void 0,i=hn(t.key)?n.get(t.key)?.order:void 0;return(r??1/0)-(i??1/0)})},bn=e=>JSON.stringify(e.filter(e=>hn(e.key)).map(e=>({key:e.key,visible:e.visible,width:e.width,fixed:e.fixed}))),xn={class:`column-management-tab`},Sn={class:`search-row`},Cn={class:`resizable-control`},wn={class:`top-actions-bar`},Tn={class:`stats-info`},En={class:`quick-actions`},Dn=[`draggable`,`onDragstart`,`onDragover`,`onDrop`],On={class:`column-info`},kn={class:`column-controls`},An={class:`column-details`},jn={class:`column-actions`},Mn={class:`drag-controls`};var Nn=i(b({name:`ColumnSettings`,__name:`index`,props:{columns:{},persistKey:{}},emits:[`change`],setup(e,{emit:t}){let n=e,i=t,a=e=>{if(!n.persistKey)return _n(e);try{let t=localStorage.getItem(`c_table_cols_${n.persistKey}`);return t?yn(e,t):_n(e)}catch{return _n(e)}},o=e=>{if(n.persistKey)try{localStorage.setItem(`c_table_cols_${n.persistKey}`,bn(e))}catch{}},s=k(a(n.columns)),c=k(``),l=k(),g=k(null),y=k(null),b=k(!1);ie(()=>{b.value=s.value.some(e=>e.resizable===!0),n.persistKey&&i(`change`,[...s.value])}),I(()=>n.columns,e=>{s.value=a(e),b.value=s.value.some(e=>e.resizable===!0)},{deep:!0});let x=d(()=>{if(!c.value)return s.value;let e=c.value.toLowerCase();return s.value.filter(t=>String(t.title??``).toLowerCase().includes(e)||String(t.key??``).toLowerCase().includes(e))}),S=d(()=>s.value.filter(e=>e.visible!==!1).length),C=d(()=>s.value.length),w=e=>{s.value.forEach(t=>{t.key!==`_actions`&&(t.visible=e)}),A()},ee=()=>w(!0),T=()=>w(!1),E=e=>{let t=x.value[e];return s.value.findIndex(e=>e.key===t.key)},re=(e,t)=>{let n=E(e);n!==-1&&(t(s.value[n]),A())},D=(e,t)=>{re(e,e=>{e.visible=t})},ae=(e,t)=>{re(e,e=>{e.fixed=t===`none`?void 0:t})},A=()=>{o(s.value),i(`change`,[...s.value])},se=()=>{s.value=_n(n.columns),A()},j=e=>{s.value.forEach(t=>{mn(t)||(t.resizable=e,e&&(t.minWidth=t.minWidth||80,t.maxWidth=t.maxWidth||500))}),A()},M=(e,t)=>{let n=E(e),r=E(t);if(n!==-1&&r!==-1){let[e]=s.value.splice(n,1);s.value.splice(r,0,e),A()}},P=(e,t)=>{if(x.value[e].key===`_actions`){t.preventDefault();return}g.value=e,t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`)},z=(e,t)=>{t.preventDefault(),!(g.value===null||x.value[e].key===`_actions`)&&(y.value=e,t.dataTransfer&&(t.dataTransfer.dropEffect=`move`))},le=e=>{g.value===null||x.value[e].key===`_actions`||(M(g.value,e),g.value=null,y.value=null)},ue=()=>{g.value=null,y.value=null};return(e,t)=>(O(),m(`div`,xn,[p(` 搜索框和列宽调整开关 `),h(`div`,Sn,[v(F(fe),{value:c.value,"onUpdate:value":t[0]||=e=>c.value=e,placeholder:`搜索列名...`,clearable:``,class:`search-input`},{prefix:L(()=>[v(r,{name:`mdi:magnify`})]),_:1},8,[`value`]),h(`div`,Cn,[v(r,{name:`mdi:arrow-split-vertical`,size:`14`,title:b.value?`开启后可拖拽列边界调整宽度`:`允许调整列宽`},null,8,[`title`]),v(F(be),{style:{fontSize:`12px`,marginLeft:`4px`}},{default:L(()=>[...t[2]||=[_(` 列宽调整 `,-1)]]),_:1}),v(F(ve),{value:b.value,"onUpdate:value":[t[1]||=e=>b.value=e,j],size:`small`,style:{"margin-left":`6px`}},null,8,[`value`])])]),p(` 顶部操作栏:统计信息和快捷操作按钮 `),h(`div`,wn,[h(`div`,Tn,[v(F(be),{depth:`3`,style:{fontSize:`13px`}},{default:L(()=>[_(` 已选 `+N(S.value)+` / 总共 `+N(C.value)+` 列 `,1)]),_:1})]),h(`div`,En,[v(F(ge),{size:6},{default:L(()=>[v(F(R),{size:`tiny`,onClick:ee},{default:L(()=>[...t[3]||=[_(` 全选 `,-1)]]),_:1}),v(F(R),{size:`tiny`,onClick:T},{default:L(()=>[...t[4]||=[_(` 全不选 `,-1)]]),_:1}),v(F(R),{size:`tiny`,onClick:se},{default:L(()=>[...t[5]||=[_(` 重置 `,-1)]]),_:1})]),_:1})])]),p(` 列列表 `),h(`div`,{ref_key:`listRef`,ref:l,class:`column-list`},[(O(!0),m(u,null,oe(x.value,(e,n)=>(O(),m(`div`,{key:e.key,class:te([`column-item`,{disabled:e.key===`_actions`,"fixed-left":e.fixed===`left`,"fixed-right":e.fixed===`right`}]),draggable:e.key!==`_actions`,onDragstart:e=>P(n,e),onDragover:e=>z(n,e),onDragend:ue,onDrop:e=>le(n)},[h(`div`,On,[h(`div`,kn,[v(r,{name:`mdi:drag`,size:`16`,class:te([`drag-handle`,{disabled:e.key===`_actions`}])},null,8,[`class`]),v(F(ce),{checked:e.visible!==!1,disabled:e.key===`_actions`,"onUpdate:checked":e=>D(n,e)},null,8,[`checked`,`disabled`,`onUpdate:checked`])]),h(`div`,An,[v(F(ge),{align:`center`,size:6},{default:L(()=>[v(F(be),{strong:``,style:{fontSize:`13px`}},{default:L(()=>[_(N(e.title||e.key),1)]),_:2},1024),e.fixed===`left`?(O(),f(F(ye),{key:0,size:`tiny`,type:`info`},{default:L(()=>[...t[6]||=[_(` 左固定 `,-1)]]),_:1})):p(`v-if`,!0),e.fixed===`right`?(O(),f(F(ye),{key:1,size:`tiny`,type:`warning`},{default:L(()=>[...t[7]||=[_(` 右固定 `,-1)]]),_:1})):p(`v-if`,!0)]),_:2},1024),v(F(be),{depth:`3`,style:{fontSize:`11px`}},{default:L(()=>[_(N(e.key),1)]),_:2},1024)])]),h(`div`,jn,[h(`div`,Mn,[v(r,{name:`mdi:chevron-up`,size:`14`,title:`上移`,clickable:n!==0,class:te({disabled:n===0}),onClick:e=>n!==0&&M(n,n-1)},null,8,[`clickable`,`class`,`onClick`]),v(r,{name:`mdi:chevron-down`,size:`14`,title:`下移`,clickable:n!==x.value.length-1,class:te({disabled:n===x.value.length-1}),onClick:e=>n!==x.value.length-1&&M(n,n+1)},null,8,[`clickable`,`class`,`onClick`])]),v(F(B),{options:F(dn)(e),onSelect:e=>ae(n,e)},{default:L(()=>[v(r,{name:`mdi:pin`,size:`14`,title:`固定列`,clickable:``,style:ne({color:e.fixed?`var(--n-primary-color)`:void 0})},null,8,[`style`])]),_:2},1032,[`options`,`onSelect`])])],42,Dn))),128))],512)]))}}),[[`__scopeId`,`data-v-92119048`]]);const Pn=[`aria-busy`],Fn={key:1,class:`table-toolbar`},In={class:`toolbar-left`},Ln={class:`toolbar-right`},Rn={key:2,class:`batch-actions-bar`},zn={class:`batch-info`},Bn={key:3,class:`table-error-state`},Vn={class:`error-content`},Hn={class:`error-message`};var Un=i(b({name:`C_Table`,inheritAttrs:!1,__name:`index`,props:{wrapperClass:{},flexHeight:{type:Boolean},columns:{},data:{},loading:{},rowKey:{type:[String,Function],default:`id`},config:{default:()=>({})},pagination:{type:[Object,Boolean],default:void 0},remote:{type:Boolean,default:void 0},crud:{}},emits:[`pagination-change`,`row-delete`,`batch-action-error`,`row-key-error`,`expand-change`,`selection-change`,`child-selection-change`,`parent-child-link-change`,`update:data`,`save`,`cancel`,`edit-error`,`row-add`,`row-copy`,`row-move`,`row-selection-change`,`view-detail`,`column-change`],setup(e,{expose:i,emit:b}){let x=y(()=>import(`./C_Form.js`).then(e=>e.C_Form)),S=e,w=b,ne=k(null),D=(e,...t)=>{if(w(e,...t),S.crud)return{save:S.crud.save,cancel:S.crud.handleCancel,"pagination-change":S.crud.handlePaginationChange,"row-delete":S.crud.handleRowDelete,"view-detail":S.crud.detail?.show}[e]?.(...t)},ae=Ht(),j=e=>typeof S.rowKey==`function`?S.rowKey(e):e[S.rowKey],M=d(()=>{let e=S.config||{};if(S.crud){let t={};if(S.crud.actions){let e=S.crud.actions.value;t.actions={...e,...S.crud.save&&typeof e.edit==`function`?{edit:void 0}:{}}}S.crud.pagination&&(t.pagination=S.crud.pagination.value??void 0),e={...t,...e}}return Wt(e,ae)}),P=d(()=>S.columns??S.crud?.columns.value??[]),z=d(()=>Fe(M.value)),ce=n(()=>z.value.feedback),{t:B}=t(()=>z.value.locale),fe=d(()=>Ie(z.value)),pe=e=>e&&typeof e==`object`&&`value`in e?e.value:e,V=d(()=>pe(S.data)??S.crud?.data.value??[]),_e=d(()=>pe(S.loading)??S.crud?.loading.value??!1),ve=d(()=>z.value.treeEnabled&&z.value.treeDefaultExpandAll?qe(V.value,z.value.treeChildrenKey,j):[]),ye=d(()=>({...z.value,defaultExpandedKeys:[...new Set([...z.value.defaultExpandedKeys??[],...ve.value])]})),be=``;I(()=>M.value.validateRowKeys===!1?[]:V.value.map(e=>{try{return j(e)}catch{return}}),()=>{if(M.value.validateRowKeys===!1){be=``;return}let e=Ke(V.value,j);if(e.length===0){be=``;return}let t=e.map(e=>[e.type,e.index,e.firstIndex,String(e.key)].join(`:`)).join(`|`);t!==be&&(be=t,ce.warning(B(`table.invalidRowKeys`,{count:e.length})),w(`row-key-error`,e))},{immediate:!0});let H=d(()=>S.pagination!==void 0),xe=d(()=>S.remote??z.value.pagination?.remote??!1),Se=k((e=>{if(!e)return 10;if(e.defaultPageSize!==void 0)return e.defaultPageSize;let t=e.pageSizes?.[0];return typeof t==`number`?t:t?.value||10})(S.pagination)),Ce=k(S.pagination?S.pagination.defaultPage??1:1),we=e=>{Ce.value=e},Te=e=>{Se.value=e},U=Tt({config:ye,data:()=>V.value,rowKey:j,rowKeyField:()=>typeof S.rowKey==`string`?S.rowKey:void 0,emit:D,columns:()=>P.value,renderLoading:()=>C(a,{size:32,label:B(`table.loading`)})}),Ee=new Set;I(ve,e=>{if(!z.value.treeEnabled||!z.value.treeDefaultExpandAll){Ee.clear();return}let t=e.filter(e=>!Ee.has(e));e.forEach(e=>Ee.add(e));let n=U.expandedKeys.value,r=t.filter(e=>!n.includes(e));r.length&&U.expandState?.handleExpandChange([...n,...r])},{immediate:!0});let De=Ft({actions:d(()=>M.value.actions||{}),config:z,tableManager:U,rowKey:j,onRowDeleted:(e,t)=>w(`row-delete`,e,t),isDeleteFeedbackHandled:e=>S.crud?.actions?.value.delete===e,onViewDetail:e=>D(`view-detail`,e)}),Oe=d(()=>{let{actions:e}=M.value;return!!(z.value.showRowActions||e?.delete||e?.detail||e?.custom?.length||e?.render)}),ke=$t({rawColumns:P,config:z,columnWidth:z.value.columnWidth,scrollX:z.value.scrollX,rowKey:j,tableManager:U,actionsRenderer:De.renderActions,editModeChecker:fe,showActionsColumn:Oe}),{showSettingsPanel:Ae,reactiveColumns:je,computedColumns:Me,computedScrollX:Ne}=ke,Pe=Nt({data:V,columns:je,remote:()=>H.value||z.value.pagination?.remote===!0}),Le=Nt({data:V,columns:je,remote:xe}),W=Dt({data:Pe.processedData,config:d(()=>H.value?null:z.value.pagination),emit:D}),Re=d(()=>{if(H.value){let e=ne.value?.getCurrentPageData?.();if(e)return e;let t=Le.processedData.value;if(!S.pagination||xe.value)return t;let n=S.pagination.pageSize??Se.value,r=Math.max(1,Math.min(S.pagination.page??Ce.value,Math.ceil(t.length/Math.max(1,n))));return t.slice((r-1)*n,r*n)}return W.paginatedData.value}),ze=e=>{Pe.setSorter(e),Le.setSorter(e)},Be=e=>{Pe.setFilters(e),Le.setFilters(e),!H.value&&!z.value.pagination?.remote&&W.resetToFirstPage()},Ve,G=en({data:Re,rowKey:j,config:d(()=>z.value.rowDrag),onReorder:e=>{let t=new Map(V.value.map((e,t)=>[j(e),t]));if(Ve=Re.value.map(e=>t.get(j(e))),H.value?xe.value:z.value.pagination?.remote===!0){D(`update:data`,e);return}let n=[...V.value];Ve.forEach((t,r)=>{t!==void 0&&(n[t]=e[r])}),D(`update:data`,n)},onSort:(e,t,n)=>{let r=Ve?.[t]??t,i=Ve?.[n]??n;Ve=void 0,w(`row-move`,e,r,i)}}),K=tn({allData:V,rowKey:j,config:d(()=>z.value.crossPageSelection),remote:()=>H.value?xe.value:z.value.pagination?.remote===!0,childrenKey:()=>z.value.treeEnabled?z.value.treeChildrenKey:void 0,rowCheckable:e=>z.value.rowCheckable?.(e)??!0,onSelectionChange:(e,t)=>w(`selection-change`,e,t,new Map)}),q=d(()=>z.value.crossPageSelection?.enabled===!0),He=d(()=>q.value?K.selectedCount.value:U.checkedKeys?.value?.length??0),Ue=o(),We=async e=>{if(Ue.isRunning(e.key))return;let t=q.value?[...K.selectedKeys.value]:U.checkedKeys?.value??[],n=new Set(t),r=q.value?K.getSelectedRows():V.value.filter(e=>n.has(j(e)));try{if(!(await Ue.run(e.key,()=>e.onClick(t,r))).executed)return;z.value.batchActions?.clearSelectionOnSuccess&&Ge()}catch(t){z.value.batchActions?.onError?.(t,e.key),w(`batch-action-error`,t,e.key)}},Ge=()=>{q.value?K.clearAll():U.stateManager.selection.clear()},Je=d(()=>q.value?K.getPageCheckedKeys(Re.value):null),Ye=e=>{if(q.value){K.handlePageSelectionChange(e,Re.value);return}U.expandState?.handleSelectionChange?.(e)},Xe=o(),Ze=async()=>{let e=z.value.exportConfig??{};await Xe.run(`export`,async()=>{let t=()=>q.value?K.getSelectedRows():U.stateManager.selection.getSelected(),n=e.scope===`page`?Re.value:V.value;await un(e.requestData?await e.requestData():e.scope===`selected`?t():n,e.scope&&e.scope!==`source`?je.value:P.value,{...e,formatterConfig:z.value.formatterConfig})})},Qe=d(()=>z.value.summaryRender),J=k(),$e=null,et=0,tt=()=>{et+=1,$e?.destroy(),$e=null},nt=async()=>{let e=++et;if($e?.destroy(),$e=null,!(!z.value.enableColumnDrag||!J.value))try{let{default:t}=await import(`sortablejs`);if(e!==et||!J.value)return;let n=J.value.querySelector(`.n-data-table-thead tr`);if(!n)return;$e=new t(n,{animation:z.value.columnDragAnimationDuration,handle:z.value.columnDragHandleClass?`.${z.value.columnDragHandleClass}`:void 0,filter:`.c-table-actions-column`,preventOnFilter:!0,ghostClass:`column-drag-ghost`,onEnd:e=>{if(e.oldIndex==null||e.newIndex==null)return;let t=[...je.value],n=t.filter(e=>e.visible!==!1&&e.key!==`_actions`),r=n[e.oldIndex],i=n[e.newIndex];if(!r||!i||r===i)return;let a=t.indexOf(r),o=t.indexOf(i);t.splice(a,1),t.splice(o,0,r),ke.handleColumnChange(t),w(`column-change`,t)}})}catch{}},rt=d(()=>({striped:z.value.striped,bordered:z.value.bordered,singleLine:z.value.singleLine,size:z.value.size,maxHeight:z.value.maxHeight})),it=k(),at=k(!1),ot=k({}),st=d({get:()=>U.editStates.modalEdit.isModalVisible.value,set:e=>{U.editStates.modalEdit.isModalVisible.value=e}}),ct=d(()=>P.value.filter(e=>e.editable!==!1)),lt=d(()=>`edit-form-${U.editStates.modalEdit.editingRowKey.value??`new`}`),ut=d(()=>Jt(ct.value));I(()=>U.editStates.modalEdit.editingData.value,e=>{e&&Object.keys(e).length>0&&(ot.value=l(e))},{immediate:!0,deep:!0});let Y=null;I(st,e=>{e&&Y&&(clearTimeout(Y),Y=null),e||(Y&&clearTimeout(Y),Y=setTimeout(()=>{ot.value={},Y=null},300))});let dt=async()=>{if(!it.value||at.value)return;let e=U.editStates.modalEdit.editingRowKey.value,t=l(ot.value);at.value=!0;try{try{await it.value.validate()}catch{return}if(e!==U.editStates.modalEdit.editingRowKey.value||!c(t,ot.value))return;await U.editStates.modalEdit.saveEdit(t)}finally{at.value=!1}},ft=()=>{ot.value={},U.editStates.modalEdit.cancelEdit()},pt=e=>{ke.handleColumnChange(e),w(`column-change`,ke.reactiveColumns.value)},{edit:X,expand:mt,selection:Z,dynamicRows:Q}=U.stateManager,ht=()=>ne.value?.getFilteredAndSortedData?.().length??Le.processedData.value.length,gt={startEdit:X.start,cancelEdit:X.cancel,saveEdit:()=>U.editStates.modalEdit.isModalVisible.value?dt():X.save(),expandRow:mt.row,collapseRow:mt.collapse,toggleExpand:mt.toggle,retryExpand:e=>U.expandState.retryExpand(e),invalidateExpand:e=>U.expandState.invalidateExpand(e),expandAll:mt.all,collapseAll:mt.collapseAll,selectRow:e=>q.value?K.select(e):(Z.select(e),Z.isSelected(e)),unselectRow:e=>{q.value?K.unselect(e):Z.unselect(e)},selectAll:()=>{q.value?K.selectAll():Z.all()},clearSelection:Ge,isRowSelected:e=>q.value?K.isSelected(e):Z.isSelected(e),clearAllSelections:()=>{K.clearAll(),U.stateManager.clearAllSelections()},selectChildRow:U.stateManager.childSelection.select,unselectChildRow:U.stateManager.childSelection.unselect,selectAllChildren:U.stateManager.childSelection.selectAll,clearChildrenSelection:U.stateManager.childSelection.clear,getChildSelectedRows:U.stateManager.childSelection.getSelected,addRow:Q.add,insertRow:Q.insert,deleteRow:Q.delete,copyRow:Q.copy,moveRowUp:Q.moveUp,moveRowDown:Q.moveDown,clearRowSelection:Q?.clearSelection,getSelectedRowData:Q.getSelected,printTable:e=>Q.print(e??J.value),downloadTableScreenshot:(e,t)=>Q.download(e??J.value,t),resetToFirstPage:()=>{H.value?(Ce.value=1,ne.value?.page(1)):W.resetToFirstPage()},getTotalPages:()=>{if(!H.value)return W.getTotalPages();let e=S.pagination;if(!e)return 1;if(xe.value&&e.itemCount===void 0&&e.pageCount!==void 0)return Math.max(1,e.pageCount);let t=xe.value?e.itemCount??V.value.length:ht(),n=e.pageSize??Se.value;return Math.max(1,Math.ceil(t/Math.max(1,n)))},getSelectedRows:()=>q.value?K.getSelectedRows():Z.getSelected(),getEditingData:X.getEditingData,isEditing:X.isEditing,isExpanded:mt.isExpanded,getManager:()=>U.stateManager,exportData:Ze,crossPageSelection:{enabled:q,selectedKeys:K.selectedKeys,selectedCount:K.selectedCount,select:K.select,unselect:K.unselect,selectAll:K.selectAll,clearAll:K.clearAll,getSelectedRows:K.getSelectedRows}};return i(gt),ie(()=>{let e=S.crud?.tableRef;e&&(e.value=gt),nt(),J.value&&G.initRowDrag(J.value)}),I([()=>z.value.enableColumnDrag,()=>z.value.columnDragHandleClass,()=>_e.value,()=>Me.value.length],async()=>{await E(),await nt()},{immediate:!0,flush:`post`}),I([()=>z.value.rowDrag,()=>_e.value,()=>Re.value.length,()=>W.currentPage.value],async()=>{await E(),J.value&&await G.initRowDrag(J.value)},{immediate:!0,deep:!0,flush:`post`}),re(()=>{Y&&clearTimeout(Y),tt(),G.destroyRowDrag()}),(t,n)=>(O(),m(`div`,{ref_key:`tableWrapperRef`,ref:J,class:te([`c-table-wrapper`,[e.wrapperClass,{"c-table-wrapper--flex":e.flexHeight},z.value.density&&`c-table-wrapper--${z.value.density}`]]),"aria-busy":_e.value},[p(` 动态行工具栏 `),z.value.dynamicRows&&F(U).dynamicRowsState?(O(),f(se(F(U).dynamicRowsState.renderToolbar(J.value)),{key:0})):p(`v-if`,!0),p(` 表格工具栏 `),z.value.showToolbar?(O(),m(`div`,Fn,[h(`div`,In,[A(t.$slots,`toolbar-left`,{},void 0,!0),z.value.toolbarActions.length?(O(),f(s,{key:0,actions:z.value.toolbarActions,config:{...z.value.toolbarActionBarConfig}},null,8,[`actions`,`config`])):p(`v-if`,!0)]),h(`div`,Ln,[A(t.$slots,`toolbar-right`,{},void 0,!0),z.value.toolbarRightActions.length?(O(),f(s,{key:0,actions:z.value.toolbarRightActions,config:{align:`right`,...z.value.toolbarActionBarConfig}},null,8,[`actions`,`config`])):p(`v-if`,!0),z.value.exportConfig?(O(),f(r,{key:1,name:`mdi:download`,size:`18`,title:F(B)(`table.export`),clickable:``,class:`column-settings-btn`,onClick:n[0]||=e=>Ze()},null,8,[`title`])):p(`v-if`,!0),z.value.enableColumnSettings?(O(),f(r,{key:2,name:`mdi:cog`,size:`18`,title:F(B)(`table.settings`),clickable:``,class:`column-settings-btn`,onClick:n[1]||=e=>Ae.value=!0},null,8,[`title`])):p(`v-if`,!0)])])):p(`v-if`,!0),p(` 批量操作栏 `),z.value.batchActions?.enabled&&He.value>0?(O(),m(`div`,Rn,[h(`span`,zn,N(F(B)(`table.selectedCount`,{count:He.value})),1),v(F(ge),{size:8},{default:L(()=>[(O(!0),m(u,null,oe(z.value.batchActions.actions||[],e=>(O(),f(F(R),{key:e.key,type:e.type||`default`,size:z.value.controlSize,loading:F(Ue).isRunning(e.key),disabled:F(Ue).isRunning(e.key),onClick:t=>We(e)},g({default:L(()=>[_(` `+N(e.label),1)]),_:2},[e.icon?{name:`icon`,fn:L(()=>[v(r,{name:e.icon,size:`14`},null,8,[`name`])]),key:`0`}:void 0]),1032,[`type`,`size`,`loading`,`disabled`,`onClick`]))),128)),v(F(R),{size:z.value.controlSize,onClick:Ge},{default:L(()=>[_(N(F(B)(`table.cancelSelection`)),1)]),_:1},8,[`size`])]),_:1})])):p(`v-if`,!0),p(` 错误状态 `),z.value.error?.show?(O(),m(`div`,Bn,[A(t.$slots,`error`,{error:z.value.error},()=>[h(`div`,Vn,[v(r,{name:`mdi:alert-circle-outline`,size:`48`}),h(`p`,Hn,N(z.value.error.message||F(B)(`table.loadFailed`)),1),z.value.error.onRetry?(O(),f(F(R),{key:0,type:`primary`,size:z.value.controlSize,onClick:z.value.error.onRetry},{default:L(()=>[_(N(F(B)(`common.retry`)),1)]),_:1},8,[`size`,`onClick`])):p(`v-if`,!0)])],!0)])):p(`v-if`,!0),p(` 表格主体 `),z.value.error?.show?p(`v-if`,!0):(O(),f(F(le),T({key:4,ref_key:`tableRef`,ref:ne},{...rt.value,...t.$attrs},{"flex-height":e.flexHeight,columns:F(Me),data:H.value?V.value:F(W).paginatedData.value,pagination:H.value?S.pagination:!1,remote:H.value?xe.value:!0,"onUpdate:sorter":ze,"onUpdate:filters":Be,"onUpdate:pageSize":Te,"onUpdate:page":we,loading:_e.value,"row-key":j,"expanded-row-keys":F(U).expandedKeys.value,"checked-row-keys":Je.value??F(U).checkedKeys.value,"onUpdate:expandedRowKeys":F(U).expandState?.handleExpandChange,"onUpdate:checkedRowKeys":Ye,"scroll-x":F(Ne),"virtual-scroll":z.value.virtualScroll,"min-row-height":z.value.virtualScroll?z.value.virtualItemHeight:void 0,"max-height":z.value.virtualScroll?z.value.virtualMaxHeight:z.value.maxHeight,summary:Qe.value,"summary-placement":z.value.summaryPosition,"children-key":z.value.treeEnabled?z.value.treeChildrenKey:void 0,indent:z.value.treeEnabled?z.value.treeIndent:void 0,"default-expand-all":z.value.treeEnabled?z.value.treeDefaultExpandAll:void 0,style:{width:`100%`}}),{loading:L(()=>[A(t.$slots,`loading`,{},()=>[v(F(a),{label:F(B)(`table.loading`)},null,8,[`label`])],!0)]),_:3},16,[`flex-height`,`columns`,`data`,`pagination`,`remote`,`loading`,`expanded-row-keys`,`checked-row-keys`,`onUpdate:expandedRowKeys`,`scroll-x`,`virtual-scroll`,`min-row-height`,`max-height`,`summary`,`summary-placement`,`children-key`,`indent`,`default-expand-all`])),p(` 分页 `),!H.value&&F(W).paginationConfig.value?(O(),f(F(he),T({key:5},F(W).paginationConfig.value,{class:`pagination-wrapper`}),null,16)):p(`v-if`,!0),p(` 编辑弹窗 `),z.value.editMode===`modal`||z.value.editMode===`both`?(O(),f(F(me),{key:6,show:st.value,"onUpdate:show":n[3]||=e=>st.value=e,title:z.value.modalTitle,width:z.value.modalWidth,preset:`card`,"mask-closable":!1,"close-on-esc":!1,class:`w60%`,closable:!1},{action:L(()=>[v(F(ge),{justify:`end`},{default:L(()=>[v(F(R),{size:z.value.density?z.value.controlSize:`medium`,disabled:at.value,onClick:ft},{default:L(()=>[_(N(F(B)(`common.cancel`)),1)]),_:1},8,[`size`,`disabled`]),v(F(R),{type:`primary`,size:z.value.density?z.value.controlSize:`medium`,disabled:!it.value||at.value,loading:at.value,onClick:dt},{default:L(()=>[_(N(F(B)(`common.save`)),1)]),_:1},8,[`size`,`disabled`,`loading`])]),_:1})]),default:L(()=>[st.value&&ut.value.length?(O(),f(F(x),{ref_key:`editFormRef`,ref:it,key:lt.value,modelValue:ot.value,"onUpdate:modelValue":n[2]||=e=>ot.value=e,options:ut.value,config:{layout:`grid`,density:z.value.density,grid:{cols:2,...z.value.density?{}:{xGap:16,yGap:16}},showActions:!1}},null,8,[`modelValue`,`options`,`config`])):p(`v-if`,!0)]),_:1},8,[`show`,`title`,`width`])):p(`v-if`,!0),p(` 动态行确认删除弹窗 `),z.value.dynamicRows&&F(U).dynamicRowsState?(O(),f(se(F(U).dynamicRowsState.renderConfirmModal()),{key:7})):p(`v-if`,!0),p(` 列设置抽屉 `),v(F(ue),{show:F(Ae),"onUpdate:show":n[4]||=e=>ee(Ae)?Ae.value=e:null,width:420,placement:`right`,"mask-closable":!0},{default:L(()=>[v(F(de),{title:F(B)(`table.columnSettings`),closable:``},{default:L(()=>[v(Nn,{columns:F(je),"persist-key":z.value.persistKey,onChange:pt},null,8,[`columns`,`persist-key`])]),_:1},8,[`title`])]),_:1},8,[`show`])],10,Pn))}}),[[`__scopeId`,`data-v-8e3337e2`]]);const Wn=(e,t)=>Number.isFinite(e)?Math.max(1,Math.floor(e)):t;function Gn(e){let t=M([]),n=k(!1),r=M(),i=k(0),a=l(e.initialQuery),o=k(Wn(e.initialPage,1)),s=k(Wn(e.pageSize,20)),c=M(l(a)),u=0,f=null,p=async()=>{let a=++u;f?.abort(),f=new AbortController,n.value=!0,r.value=void 0;try{let n=await e.request({page:o.value,pageSize:s.value,query:l(c.value),signal:f.signal});if(a!==u||f.signal.aborted)return!1;if(!Array.isArray(n.data)||!Number.isFinite(n.total))throw TypeError(`[C_Table] request 必须返回 { data: T[], total: number }`);return t.value=l([...n.data]),i.value=Math.max(0,Math.floor(n.total)),e.onSuccess?.({data:t.value,total:i.value}),!0}catch(t){return a!==u||f.signal.aborted?!1:(r.value=t,e.onError?.(t),!1)}finally{a===u&&(n.value=!1)}},m=async(e,t=!0)=>(c.value=l(typeof e==`function`?e(c.value):{...c.value,...e}),o.value=1,t?p():!0),h=async(e,t)=>(o.value=Wn(e,o.value),s.value=Wn(t,s.value),p()),g=async(e=!0)=>(c.value=l(a),o.value=1,e?p():!0),_=d(()=>{let r=P(e.config)??{},a=typeof r.pagination==`object`?r.pagination:{};return{data:t.value,loading:n.value,columns:P(e.columns),rowKey:e.rowKey??`id`,config:{...r,pagination:{...a,enabled:!0,remote:!0,page:o.value,pageSize:s.value,total:i.value}}}}),v=d(()=>({..._.value,onPaginationChange:h})),y=()=>{u+=1,f?.abort(),f=null,n.value=!1};return e.immediate!==!1&&ie(()=>void p()),D(y),{data:t,loading:n,error:r,total:i,page:o,pageSize:s,query:c,tableProps:_,execute:p,reload:p,setQuery:m,resetQuery:g,handlePaginationChange:h,bindings:v,cancel:y}}export{Ve as C,K as S,Fe as T,at as _,en as a,Ke as b,Vt as c,Ft as d,Dt as f,yt as g,bt as h,tn as i,Wt as l,wt as m,Un as n,$t as o,Tt as p,un as r,It as s,Gn as t,Ht as u,We as v,Ie as w,q as x,Ge as y};
|
|
1
|
+
import{t as e}from"./density.js";import{t}from"./useComponentLocale.js";import{t as n}from"./feedback.js";import{t as r}from"./C_Icon2.js";import{t as i}from"./export-helper.js";import{t as a}from"./C_Loading2.js";import{t as o}from"./useActionTask.js";import{t as s}from"./C_ActionBar2.js";import{a as c,t as l}from"./data.js";import{Fragment as u,computed as d,createBlock as f,createCommentVNode as p,createElementBlock as m,createElementVNode as h,createSlots as g,createTextVNode as _,createVNode as v,defineAsyncComponent as y,defineComponent as b,getCurrentInstance as x,getCurrentScope as S,h as C,inject as w,isRef as ee,mergeProps as T,nextTick as E,normalizeClass as D,normalizeStyle as te,onBeforeUnmount as ne,onMounted as O,onScopeDispose as k,openBlock as A,reactive as re,ref as j,renderList as ie,renderSlot as M,resolveDynamicComponent as ae,shallowReactive as N,shallowRef as P,toDisplayString as F,toValue as I,unref as L,useAttrs as oe,watch as R,withCtx as z}from"vue";import{NButton as B,NButtonGroup as V,NCheckbox as se,NDataTable as ce,NDrawer as le,NDrawerContent as ue,NDropdown as H,NInput as de,NInputNumber as fe,NModal as pe,NPagination as me,NSelect as U,NSpace as he,NSpin as ge,NSwitch as _e,NTag as ve,NText as ye,NTooltip as W}from"naive-ui";const be={editable:!1,editMode:`none`,showRowActions:!1,modalTitle:`编辑数据`,modalWidth:600,onEditSave:void 0,onEditCancel:void 0,onEditError:void 0},xe=e=>{if(e===!1||e===void 0)return be;if(typeof e==`string`)return xe({mode:e});if(e===!0)return{editable:!0,editMode:`modal`,showRowActions:!0,modalTitle:`编辑数据`,modalWidth:600,onEditSave:void 0,onEditCancel:void 0,onEditError:void 0};let t=e.enabled!==!1&&e.mode!==`none`;return{editable:t,editMode:e.mode||`modal`,showRowActions:t&&e.showRowActions!==!1,modalTitle:e.modalTitle||`编辑数据`,modalWidth:e.modalWidth||600,onEditSave:e.onSave,onEditCancel:e.onCancel,onEditError:e.onError}},Se=e=>e?e===!0?{expandable:!0,defaultExpandedKeys:void 0,onLoadExpandData:void 0,onExpandError:void 0,renderExpandContent:void 0,rowExpandable:void 0}:{expandable:e.enabled!==!1,defaultExpandedKeys:e.defaultExpandedKeys,onLoadExpandData:e.onLoadData,onExpandError:e.onError,renderExpandContent:e.renderContent,rowExpandable:e.rowExpandable}:{expandable:!1,defaultExpandedKeys:void 0,onLoadExpandData:void 0,onExpandError:void 0,renderExpandContent:void 0,rowExpandable:void 0},Ce=e=>{if(!e)return{enableSelection:!1,defaultCheckedKeys:void 0,rowCheckable:void 0,maxSelection:void 0,enableChildSelection:!1,childRowCheckable:void 0,enableParentChildLink:!1,parentChildLinkMode:`loose`};if(e===!0)return{enableSelection:!0,defaultCheckedKeys:void 0,rowCheckable:void 0,maxSelection:void 0,enableChildSelection:!1,childRowCheckable:void 0,enableParentChildLink:!1,parentChildLinkMode:`loose`};let t=e.childSelection||{},n=e.parentChildLink||{};return{enableSelection:e.enabled!==!1,defaultCheckedKeys:e.defaultCheckedKeys,rowCheckable:e.rowCheckable,maxSelection:e.maxSelection,enableChildSelection:t.enabled||!1,childRowCheckable:t.childRowCheckable,enableParentChildLink:n.enabled||!1,parentChildLinkMode:n.mode||`loose`}},we=(t,n)=>{let r={enabled:!0,page:1,pageSize:10,showSizePicker:!0,showQuickJumper:!0,pageSizes:[10,20,50,100],simple:!1,size:n?e(n).size:`medium`};return t===!1?{pagination:null}:t===!0||t===void 0?{pagination:r}:{pagination:{...r,...t}}},G=e=>e?e===!0?{dynamicRows:{enableRadioSelection:!0,enableAdd:!0,enableInsert:!0,enableDelete:!0,enableCopy:!0,enableMove:!0,enablePrint:!0}}:{dynamicRows:e}:{dynamicRows:void 0},Te={striped:!0,bordered:!0,singleLine:!0,size:`medium`,maxHeight:void 0,scrollX:void 0,columnWidth:180};function Ee(t,n){let{size:r}=e(n);return t?{striped:t.striped??Te.striped,bordered:t.bordered??Te.bordered,singleLine:t.singleLine??Te.singleLine,size:t.size??r,maxHeight:t.maxHeight,scrollX:t.scrollX,columnWidth:t.columnWidth??Te.columnWidth}:{...Te,size:r}}const De=(t,n)=>({showToolbar:t?.show!==!1,enableColumnSettings:t?.columnSettings!==!1,toolbarActions:t?.actions??[],toolbarRightActions:t?.rightActions??[],toolbarActionBarConfig:{...n?{size:e(n).size,compact:n===`compact`}:{},...t?.actionBar}}),Oe=e=>e?e===!0?{virtualScroll:!0,virtualItemHeight:34,virtualMaxHeight:600}:{virtualScroll:e.enabled!==!1,virtualItemHeight:e.itemHeight??34,virtualMaxHeight:e.maxHeight??600}:{virtualScroll:!1,virtualItemHeight:34,virtualMaxHeight:600},ke=e=>e?{summaryPosition:e.position??`bottom`,summaryRender:e.render}:{summaryPosition:void 0,summaryRender:void 0},Ae=e=>e?e===!0?{enableColumnDrag:!0,columnDragHandleClass:void 0,columnDragAnimationDuration:150}:{enableColumnDrag:e.enabled!==!1,columnDragHandleClass:e.handleClass,columnDragAnimationDuration:e.animationDuration??150}:{enableColumnDrag:!1,columnDragHandleClass:void 0,columnDragAnimationDuration:150},je=e=>e?e===!0?{treeEnabled:!0,treeChildrenKey:`children`,treeIndent:16,treeDefaultExpandAll:!1}:{treeEnabled:e.enabled!==!1,treeChildrenKey:e.childrenKey??`children`,treeIndent:e.indent??16,treeDefaultExpandAll:e.defaultExpandAll??!1}:{treeEnabled:!1,treeChildrenKey:`children`,treeIndent:16,treeDefaultExpandAll:!1},Me=e=>e?e===!0?{rowDrag:{enabled:!0}}:{rowDrag:e.enabled===!1?void 0:e}:{rowDrag:void 0},Ne=e=>e?e===!0?{crossPageSelection:{enabled:!0}}:{crossPageSelection:e.enabled===!1?void 0:e}:{crossPageSelection:void 0};function Pe(t={}){return{density:t.density,controlSize:t.density?e(t.density).size:`small`,feedback:t.feedback,locale:t.locale,...xe(t.edit),...Se(t.expand),...Ce(t.selection),...we(t.pagination,t.density),...G(t.dynamicRows),...Ee(t.display,t.density),...De(t.toolbar,t.density),...Oe(t.virtualScroll),...ke(t.summary),...Ae(t.columnDrag),...je(t.tree),...Me(t.rowDrag),...Ne(t.crossPageSelection),exportConfig:t.export,persistKey:t.persistKey,formatterConfig:t.formatterConfig,error:t.error,batchActions:t.batchActions}}const Fe=e=>({isNonEditable:t=>!e.editable||t.editable===!1||e.editMode===`none`,isRowEditMode:()=>[`row`,`both`].includes(e.editMode),isCellEditMode:()=>[`cell`,`both`].includes(e.editMode)});function Ie(e,t){return(typeof e.message==`function`?e.message():e.message)||t}function K(e){return e==null||e===``||Array.isArray(e)&&e.length===0}function Le(e){if(typeof e==`number`)return e;if(typeof e==`string`||Array.isArray(e))return e.length}function Re(e,t){return e===!1?t:e instanceof Error?e.message||t:typeof e==`string`?e||t:Array.isArray(e)&&e.length>0?Re(e[0],t):null}async function ze(e,t,n,r){let i=Ie(e,`${n}校验失败`),a=e.transform?e.transform(t):t;if(e.required&&K(a))return Ie(e,`${n}不能为空`);if(!e.required&&K(a))return null;if(e.enum&&!e.enum.includes(a)||e.pattern&&!new RegExp(e.pattern).test(String(a)))return i;let o=Le(a);if(e.len!==void 0&&o!==e.len||e.min!==void 0&&o!==void 0&&o<e.min||e.max!==void 0&&o!==void 0&&o>e.max)return i;let s,c=e=>{s=e};try{if(e.validator){let t=Re(await e.validator(e,a,c,r,{}),i);if(t)return t}if(s||e.asyncValidator&&(await e.asyncValidator(e,a,c,r,{}),s))return Re(s,i)}catch(e){return e instanceof Error&&e.message?e.message:i}return null}function Be(e){let t=0,n=j(null),r=j({}),i=j(!1),a=j([]),o=()=>{t++,n.value=null,r.value={},a.value=[]},s=e=>n.value===e,c=t=>{let n=e.data();return!n||!Array.isArray(n)?null:n.find(n=>e.rowKey(n)===t)},u=e=>{let t=c(e);return!t||i.value?!1:(n.value=e,r.value={[String(e)]:l(t)},a.value=[],!0)},d=async()=>{if(n.value===null||i.value)return;let t=e.data();if(!t||!Array.isArray(t))return;let a=t.findIndex(t=>e.rowKey(t)===n.value);i.value=!0;try{a>-1&&await e.onCancel?.(t[a],a),n.value=null,r.value={}}finally{i.value=!1}},f=async(r,i)=>{let o=t,s=(e.columns?.()||[]).filter(e=>e.editable!==!1&&e.editProps?.rules?.length).map(async e=>{let t=typeof e.key==`string`?e.key:``;if(!t)return null;let n=(await Promise.all(e.editProps.rules.map(n=>ze(n,r[t],e.title||t,r)))).find(Boolean);return n?{field:t,message:n}:null}),c=(await Promise.all(s)).filter(Boolean);return t===o?(n.value===i&&(a.value=c),c.length===0):!1},p=async()=>{let e=n.value;if(e===null)return!0;let t=r.value[String(e)];return t?f(l(t),e):!0},m=async()=>{let a=n.value;if(a===null||i.value)return;let o=r.value[String(a)];if(!o)return;let s=l(o),u=t,d=c(a);i.value=!0;try{if(!await f(s,a)||t!==u)return;let i=e.data(),o=i.findIndex(t=>e.rowKey(t)===a);return o===-1||i[o]!==d||(await e.onSave?.(s,o,a),t!==u)?void 0:(n.value=null,r.value={},{updatedData:s,rowIndex:o})}finally{i.value=!1}},h=e=>{if(n.value===e)return r.value[String(e)]};return{editingRowKey:n,editingData:r,isSaving:i,isEditingRow:s,startEditRow:u,cancelEditRow:d,saveEditRow:m,validateRow:p,validationErrors:a,getEditingRowData:h,updateEditingRowData:(e,t,n)=>{let r=h(e);!r||i.value||(r[t]=l(n))},findRowData:c,invalidate:o}}function q(e,t){let n=String(e);return`${typeof e}:${n.length}:${n}|${t.length}:${t}`}function Ve(e){let t=0,n=j({rowKey:null,columnKey:null}),r=j({}),i=j(!1),a=j(null),o=()=>{t++,n.value={rowKey:null,columnKey:null},r.value={},a.value=null},s=(e,t)=>n.value.rowKey===e&&n.value.columnKey===t,c=t=>{let n=e.data();return!n||!Array.isArray(n)?null:n.find(n=>e.rowKey(n)===t)},u=(e,t)=>{let o=c(e);return!o||!t||i.value?!1:(n.value={rowKey:e,columnKey:t},r.value={[q(e,t)]:l(o[t])},a.value=null,!0)},d=t=>(e.columns?.()??[]).find(e=>e.key===t),f=async()=>{let e=t;a.value=null;let{rowKey:i,columnKey:o}=n.value;if(i===null||o===null)return!0;let s=d(o);if(!s||!s.editProps?.rules)return!0;let l=q(i,o),u=r.value[l],f=s.title||o,p={...c(i),[o]:u},m=await Promise.all(s.editProps.rules.map(e=>ze(e,u,f,p)));if(t!==e)return!1;let h=m.find(Boolean);return h?(a.value=h,!1):!0};return{editingCell:n,editingData:r,isSaving:i,isEditingCell:s,startEditCell:u,saveEditCell:async()=>{let{rowKey:a,columnKey:o}=n.value;if(a===null||o===null||i.value)return;let s=q(a,o),u=l(r.value[s]),d=t,p=c(a);i.value=!0;try{if(!await f()||t!==d)return;let i=e.data(),s=i.findIndex(t=>e.rowKey(t)===a);if(s===-1||i[s]!==p)return;let c={...i[s],[o]:u};return await e.onSave?.(l(c),s,o,a),t===d?(n.value={rowKey:null,columnKey:null},r.value={},{updatedData:c,rowIndex:s,columnKey:o}):void 0}finally{i.value=!1}},cancelEditCell:()=>{let{rowKey:e,columnKey:t}=n.value;i.value||(e!==null&&t!==null&&delete r.value[q(e,t)],n.value={rowKey:null,columnKey:null},a.value=null)},validateCell:f,cellValidationError:a,getEditingCellValue:(e,t)=>r.value[q(e,t)],updateEditingCellValue:(e,t,n)=>{!s(e,t)||i.value||(r.value[q(e,t)]=l(n))},findRowData:c,invalidate:o}}function He(e){let t=0,n=j(!1),r=j(!1),i=j(null),a=j({}),o=()=>{t++,n.value=!1,i.value=null,a.value={}},s=d(()=>{if(i.value===null)return-1;let t=e.data();return Array.isArray(t)?t.findIndex(t=>e.rowKey(t)===i.value):-1});return{isModalVisible:n,isSaving:r,editingData:a,editingRowKey:i,editingRowIndex:s,startEdit:(o,s)=>{if(r.value)return!1;let c=e.data();if(!Array.isArray(c))return!1;let u=c.findIndex(t=>e.rowKey(t)===o);return u===-1?!1:(t++,i.value=o,a.value=l(s??c[u]),n.value=!0,!0)},saveEdit:async o=>{if(r.value||i.value===null)return;let c=s.value;if(c===-1)return;let u=i.value,d=t,f=l(o??a.value);r.value=!0;try{return await e.onSave?.(f,c,u),t===d?(n.value=!1,i.value=null,a.value={},{updatedData:f,rowIndex:c}):void 0}finally{r.value=!1}},cancelEdit:async()=>{if(r.value)return!1;let o=t,c=s.value;try{if(i.value!==null&&c>-1){let t=e.data();t[c]&&await e.onCancel?.(t[c],c)}}finally{t===o&&(n.value=!1,i.value=null,a.value={})}return!0},updateEditingData:e=>r.value?!1:(a.value=l(e),!0),resetEditingState:()=>r.value?!1:(i.value=null,a.value={},!0),isEditingRow:e=>i.value===e&&n.value,getEditingRowData:e=>i.value===e?a.value:null,invalidate:o}}function Ue(e,t){try{let n=t(e);if(typeof n==`string`&&n!==``)return JSON.stringify([`string`,n]);if(typeof n==`number`&&Number.isFinite(n))return JSON.stringify([`number`,n])}catch{}}function We(e,t){if(!t)return e;let n=[],r=new WeakSet,i=[];for(let t=e.length-1;t>=0;t--)i.push(e[t]);for(;i.length;){let e=i.pop();if(r.has(e))continue;r.add(e),n.push(e);let a=e[t];if(Array.isArray(a))for(let e=a.length-1;e>=0;e--){let t=a[e];t&&typeof t==`object`&&i.push(t)}}return n}function Ge(e,t,n,r){let i=new WeakSet,a=e=>{if(e===t)return n;if(!r||i.has(e))return e;i.add(e);let o=e[r];if(!Array.isArray(o))return e;let s=o.map(e=>e&&typeof e==`object`?a(e):e);return s.some((e,t)=>e!==o[t])?{...e,[r]:s}:e};return e.map(a)}function J(e){return e}function Y(e){return e}function Ke(e,t){let n=new Map,r=[];return e.forEach((e,i)=>{let a;try{a=t(e)}catch(t){r.push({type:`error`,row:e,index:i,cause:t});return}if(a==null||a===``){r.push({type:`missing`,row:e,index:i});return}let o=n.get(a);if(o!==void 0){r.push({type:`duplicate`,row:e,index:i,key:a,firstIndex:o});return}n.set(a,i)}),r}function qe(e,t,n){let r=new Set,i=new WeakSet,a=[...e],o=e=>{try{return n(e)}catch{return}},s=e=>e!=null&&e!==``;for(;a.length;){let e=a.pop();if(i.has(e))continue;i.add(e);let n=e[t];if(!Array.isArray(n)||n.length===0)continue;let c=o(e);s(c)&&r.add(c);for(let e of n)e&&typeof e==`object`&&a.push(e)}return[...r]}const Je=e=>({expandedKeys:j([...e.defaultExpandedKeys||[]]),expandDataMap:j(new Map),loadingMap:j(new Map),errorMap:j(new Map),checkedKeys:e.enableSelection?j([...e.defaultCheckedKeys||[]]):j([]),childSelections:(e.enableChildSelection,j(new Map))}),Ye=e=>{let t=d(()=>We(L(e.data),e.childrenKey)),n=e.rowKey,r=d(()=>{let e=new Map;for(let r of t.value){let t=n(r);e.has(t)||e.set(t,r)}return e});return{data:t,getRowKey:n,getChildRowKey:e.childRowKey||(e=>e.id),findRow:e=>r.value.get(e),isRowExpandable:t=>e.rowExpandable?.(t)??!0,isRowCheckable:t=>e.rowCheckable?.(t)??!0,isChildRowCheckable:(t,n)=>e.childRowCheckable?.(t,n)??!0}},Xe=(e,t,n)=>{let r=new Map,i=new Map,a=!1,o=0,s=new Set(n.defaultExpandedKeys||[]),c=t=>{let n=t===void 0?new Set([...e.expandDataMap.value.keys(),...e.errorMap.value.keys(),...r.keys()]):new Set([t]);for(let t of n)r.delete(t),i.delete(t),e.expandDataMap.value.delete(t),e.errorMap.value.delete(t),e.loadingMap.value.delete(t),e.childSelections.value.delete(t)},l=async o=>{if(!n.onLoadData||a)return[];let s=t.getRowKey(o);if(e.expandDataMap.value.has(s))return e.expandDataMap.value.get(s);if(e.errorMap.value.has(s))return[];let c=r.get(s);if(c)return c.promise;let l={};i.set(s,o),e.loadingMap.value.set(s,!0);let u=()=>!a&&r.get(s)?.token===l,d,f=new Promise(e=>{d=e});return r.set(s,{token:l,promise:f}),(async()=>{try{let t=await n.onLoadData(o),r=Array.isArray(t)?t:[];return u()?(e.expandDataMap.value.set(s,r),n.enableChildSelection&&!e.childSelections.value.has(s)&&e.childSelections.value.set(s,[]),r):[]}catch(t){return u()&&(e.errorMap.value.set(s,t),n.onError?.(t,o)),[]}finally{u()&&(r.delete(s),e.loadingMap.value.set(s,!1))}})().then(d,()=>d([])),f};return R(t.data,n=>{if(i.size===0)return;let r=new Map(n.map(e=>[t.getRowKey(e),e]));for(let[t,n]of i){let i=r.get(t);i!==n&&(c(t),i&&e.expandedKeys.value.includes(t)&&l(i),i||s.delete(t))}e.expandedKeys.value=e.expandedKeys.value.filter(e=>r.has(e))}),S()&&k(()=>{a=!0,c()}),{loadData:l,retryExpand:async e=>{let n=t.findRow(e);n&&(c(e),await l(n))},invalidateExpand:c,handleRowExpand:async(r,i)=>{let a=t.getRowKey(r);if(o+=1,i){if(s.add(a),e.expandedKeys.value.includes(a)||(e.expandedKeys.value=[...e.expandedKeys.value,a]),await l(r),!s.has(a))return}else s.delete(a),e.expandedKeys.value=e.expandedKeys.value.filter(e=>e!==a);n.onExpandChange?.(e.expandedKeys.value,r,i)},expandAll:async()=>{let r=++o,i=t.data.value.filter(t.isRowExpandable);s=new Set(i.map(t.getRowKey)),e.expandedKeys.value=[...s],await Promise.allSettled(i.map(l)),r===o&&(e.expandedKeys.value=i.map(t.getRowKey),n.onExpandChange?.(e.expandedKeys.value))},collapseAll:()=>{o+=1,s.clear(),e.expandedKeys.value=[],e.childSelections.value.clear(),n.onExpandChange?.(e.expandedKeys.value)},handleExpandChange:async r=>{let i=++o;s=new Set(r);let a=new Set(e.expandedKeys.value),c=new Set(r),u=[...c].filter(e=>!a.has(e)),d=e.expandedKeys.value.filter(e=>!c.has(e));for(let t of d)e.childSelections.value.delete(t);e.expandedKeys.value=[...r],await Promise.all(u.map(async e=>{let n=t.findRow(e);n&&await l(n)})),i===o&&n.onExpandChange?.(r)}}},Ze=(e,t,n)=>{let r=[],i=[],a=(t,a)=>{let o=t.length===r.length&&t.every((e,t)=>e===r[t]),s=a.length===i.length&&a.every((e,t)=>e===i[t]);o&&s||(r=[...t],i=[...a],n.onSelectionChange?.(t,a,e.childSelections.value))},o=d(()=>t.data.value.filter(t.isRowCheckable));return{selectAll:()=>{if(!n.enableSelection)return;let r=o.value.map(t.getRowKey),i=n.maxSelection?r.slice(0,n.maxSelection):r;e.checkedKeys.value=i;let s=new Set(i);a(i,o.value.filter(e=>s.has(t.getRowKey(e))))},clearSelection:()=>{n.enableSelection&&(e.checkedKeys.value=[],a([],[]))},handleSelectionChange:r=>{if(!n.enableSelection)return;let i=new Set(o.value.map(e=>t.getRowKey(e))),s=[...new Set(r)].filter(e=>i.has(e)),c=n.maxSelection?s.slice(0,Math.max(0,n.maxSelection)):s;e.checkedKeys.value=c;let l=new Set(c);a(c,t.data.value.filter(e=>l.has(t.getRowKey(e))))},selectedRowsCount:d(()=>e.checkedKeys.value.length),selectableRows:o}},Qe=(e,t)=>{let n=()=>!!(t.enableParentChildLink&&t.enableSelection&&t.enableChildSelection);return{handleParentChildLink:(r,i,a)=>{if(!n())return;let o=t.parentChildLinkMode===`strict`?i.length===a&&a>0:i.length>0,s=[...e.checkedKeys.value],c=s.includes(r);o&&!c?e.checkedKeys.value=[...s,r]:!o&&c&&(e.checkedKeys.value=s.filter(e=>e!==r))},isLinkEnabled:n}},$e=(e,t,n,r)=>({totalChildSelections:d(()=>r.enableChildSelection?Array.from(e.childSelections.value.values()).reduce((e,t)=>e+t.length,0):0),clearAllSelections:()=>{e.checkedKeys.value=[],e.childSelections.value.clear(),r.onSelectionChange?.([],[],e.childSelections.value)},handleChildSelectionChange:(i,a)=>{if(!r.enableChildSelection)return;e.childSelections.value.set(i,a);let o=e.expandDataMap.value.get(i)||[],s=o.filter(e=>a.includes(t.getChildRowKey(e)));r.onChildSelectionChange?.(i,a,s),n.isLinkEnabled()&&n.handleParentChildLink(i,a,o.length)}}),et=(e,t,n,r,i)=>{if(!i.enableChildSelection)return;let a=t.childSelections.value.get(e)||[],o=t.expandDataMap.value.get(e)||[],s=n.findRow(e);if(!s)return;let c=o.filter(e=>n.isChildRowCheckable(e,s));return{selectedKeys:a,isAllChecked:c.length>0&&c.every(e=>a.includes(n.getChildRowKey(e))),selectAll:()=>{let t=c.map(e=>n.getChildRowKey(e));r.handleChildSelectionChange(e,t)},clearAll:()=>{r.handleChildSelectionChange(e,[])}}},tt=e=>C(`div`,{class:`flex justify-center items-center py-8`},e?[e()]:[C(ge,{size:`small`}),C(`span`,{class:`ml-2 text-gray-500`},`加载中...`)]),nt=()=>C(`div`,{class:`text-center py-8 text-gray-400`},`暂无数据`),X=e=>{if(!e.length)return[];let t=e[0];return!t||typeof t!=`object`?[]:[{title:`序号`,key:`_index`,width:60,align:`center`,titleAlign:`center`,render:(e,t)=>t+1},...Object.keys(t).filter(e=>![`id`,`key`].includes(e)).map(e=>({key:e,title:e.charAt(0).toUpperCase()+e.slice(1),width:120,align:`center`,titleAlign:`center`,ellipsis:{tooltip:!0}}))]},rt=(e,t,n,r,i,a)=>{let o=[];return a.enableChildSelection&&o.push({type:`selection`,multiple:!0}),o.push(...X(t)),C(`div`,{class:`p-4 bg-gray-50`},[C(`div`,{class:`mb-2 text-sm text-gray-600`},`详细信息 (${t.length} 条)`),C(ce,{data:t,columns:o,size:`small`,striped:!0,checkedRowKeys:n?.selectedKeys||[],rowKey:e=>r.getChildRowKey(e),onUpdateCheckedRowKeys:a.enableChildSelection?t=>{i.handleChildSelectionChange(e,t)}:void 0})])},it=(e,n,r,i,a)=>{let{t:o}=t(()=>a.locale),s=t=>{let s=n.getRowKey(t),c=e.expandDataMap.value.get(s)||[],l=e.loadingMap.value.get(s)||!1,u=et(s,e,n,r,a);return a.renderContent?a.renderContent(t,c,l,u):l?tt(a.renderLoading):e.errorMap.value.has(s)?C(`div`,{class:`c-table-expand-error`,role:`alert`},[C(`span`,o(`table.loadFailed`)),C(B,{size:`small`,onClick:()=>i.retryExpand(s)},()=>o(`common.retry`))]):c.length?rt(s,c,u,n,r,a):nt()};return{getTableColumns:e=>e.map(e=>{if(e.type===`selection`&&a.enableSelection){let t=`disabled`in e?e.disabled:void 0,r=`multiple`in e?e.multiple:void 0;return{...e,type:`selection`,disabled:e=>!!t?.(e)||!n.isRowCheckable(e),multiple:a.maxSelection===1?!1:r??!0}}return e.type===`expand`&&(a.onLoadData||a.renderContent)?{...e,type:`expand`,expandable:t=>n.isRowExpandable(t)&&(!(`expandable`in e)||e.expandable?.(t)!==!1),renderExpand:s}:e})}};function at(e){let t=Je(e),n=Ye(e),r=Xe(t,n,e),i=Ze(t,n,e),a=$e(t,n,Qe(t,e),e),o=it(t,n,a,r,e);return R(n.data,()=>{!e.enableSelection||t.checkedKeys.value.length===0||i.handleSelectionChange(t.checkedKeys.value)}),e.defaultExpandedKeys?.length&&E(async()=>{let i=e.defaultExpandedKeys||[];if(i.length===0)return;let a=i.map(async e=>{let i=n.findRow(e);i&&!t.expandDataMap.value.has(e)&&await r.loadData(i)});await Promise.allSettled(a)}),{expandedKeys:t.expandedKeys,checkedKeys:t.checkedKeys,childSelections:t.childSelections,selectedRowsCount:i.selectedRowsCount,totalChildSelections:a.totalChildSelections,expandAll:r.expandAll,collapseAll:r.collapseAll,expandRow:async e=>{if(t.expandedKeys.value.includes(e)&&!t.loadingMap.value.get(e))return;let i=n.findRow(e);i&&await r.handleRowExpand(i,!0)},handleExpandChange:r.handleExpandChange,selectAll:i.selectAll,clearSelection:i.clearSelection,clearAllSelections:a.clearAllSelections,handleSelectionChange:i.handleSelectionChange,getTableColumns:o.getTableColumns,expandDataMap:t.expandDataMap,loadingMap:t.loadingMap,errorMap:t.errorMap,retryExpand:r.retryExpand,invalidateExpand:r.invalidateExpand}}const ot={text:`Robot Admin`,textSize:16,textColor:`rgba(128, 128, 128, 0.3)`,font:`Microsoft JhengHei`,opacity:.3,rotate:-20,position:`repeat`,xGap:200,yGap:120},st={scale:1,quality:.92,format:`png`,backgroundColor:`#ffffff`,logging:!1,allowTaint:!0,useCORS:!0},ct={orientation:`portrait`,paperSize:`A4`,margin:`10mm 10mm 0 10mm`,style:`@page { margin: 10mm 10mm 0 10mm; } @media print { body { margin: 0; } }`,header:``,footer:``,showModal:!1,modalMessage:`正在准备打印...`,onLoadingStart:()=>{},onLoadingEnd:()=>{},onPrintDialogClose:()=>{}};function lt(e,t,n,r){e.save(),e.translate(t/2,n/2),e.rotate(r.rotate*Math.PI/180),e.fillText(r.text,0,0),e.restore()}function ut(e,t,n,r){[[50,50],[t-50,50],[50,n-50],[t-50,n-50]].forEach(([t,n])=>{e.save(),e.translate(t,n),e.rotate(r.rotate*Math.PI/180),e.fillText(r.text,0,0),e.restore()})}function dt(e,t,n,r){let i=Math.sqrt(t*t+n*n),a=t/2,o=n/2;e.save(),e.translate(a,o),e.rotate(Math.atan2(n,t));let s=Math.floor(i/r.xGap),c=-i/2;for(let t=0;t<=s;t++){let n=c+t*r.xGap;e.fillText(r.text,n,0)}e.restore()}function ft(e,t,n,r){let i=Math.ceil(t/r.xGap)+1,a=Math.ceil(n/r.yGap)+1;for(let t=0;t<a;t++)for(let n=0;n<i;n++){let i=n*r.xGap+r.xGap/2,a=t*r.yGap+r.yGap/2;e.save(),e.translate(i,a),e.rotate(r.rotate*Math.PI/180),e.fillText(r.text,0,0),e.restore()}}function pt(e,t){let n=e.getContext(`2d`);if(!n)return e;let r={...ot,...t},{width:i,height:a}=e;n.save(),n.globalAlpha=r.opacity,n.font=`${r.textSize}px ${r.font}`,n.fillStyle=r.textColor,n.textAlign=`center`,n.textBaseline=`middle`;let o={center:lt,corner:ut,diagonal:dt,repeat:ft};return(o[r.position]||o.repeat)(n,i,a,r),n.restore(),e}async function mt(e,t={}){if(typeof window>`u`)throw Error(`截图功能仅支持浏览器环境`);let n={...st,...t},{default:r}=await import(`html2canvas`);return await r(e,{logging:n.logging,scale:n.scale,allowTaint:n.allowTaint,useCORS:n.useCORS,backgroundColor:n.backgroundColor,onclone:e=>{let t=e.body;t.style.transform=`scale(1)`}})}function Z(e,t=`png`,n=.92){let r=`image/${t}`;return t===`png`?e.toDataURL(r):e.toDataURL(r,n)}function ht(e,t=`screenshot-${new Date().toISOString().slice(0,10)}.png`,n=`png`){let r=Z(e,n),i=document.createElement(`a`);i.download=t,i.href=r,document.body.appendChild(i),i.click(),document.body.removeChild(i)}async function gt(e,t={}){if(typeof window>`u`)throw Error(`打印功能仅支持浏览器环境`);let n={...ct,...t},{default:r}=await import(`print-js`);return new Promise((t,i)=>{try{n.onLoadingStart?.(),r({printable:e,type:`image`,style:n.style,showModal:n.showModal,modalMessage:n.modalMessage,onLoadingEnd:n.onLoadingEnd,onPrintDialogClose:()=>{n.onPrintDialogClose?.(),t()}})}catch(e){i(e)}})}function _t(e,t,n){let r=0,i=0;e.forEach(e=>{let{width:n,height:a}=e;t===`horizontal`?(r+=n,i=Math.max(i,a)):(r=Math.max(r,n),i+=a)});let a=(e.length-1)*n;return t===`horizontal`?r+=a:i+=a,{totalWidth:r,totalHeight:i}}function vt(e,t){let{orientation:n,spacing:r,backgroundColor:i,totalWidth:a,totalHeight:o}=t,s=document.createElement(`canvas`);s.width=a,s.height=o;let c=s.getContext(`2d`);if(!c)throw Error(`无法创建画布上下文`);c.fillStyle=i,c.fillRect(0,0,a,o);let l=0,u=0;return e.forEach(e=>{c.drawImage(e,l,u),n===`horizontal`?l+=e.width+r:u+=e.height+r}),s}function yt(e,t,n){return e.length?{orientation:t.orientation||`vertical`,spacing:t.spacing||20,backgroundColor:t.backgroundColor||`#ffffff`}:(n.warning(`没有要打印的元素`),null)}async function bt(e,t,n,r){let{orientation:i,spacing:a,backgroundColor:o}=n;r(10);let s=await Promise.all(e.map(e=>mt(e,t.capture)));r(50);let{totalWidth:c,totalHeight:l}=_t(s,i,a);return r(60),vt(s,{orientation:i,spacing:a,backgroundColor:o,totalWidth:c,totalHeight:l})}async function Q(e,t,n,r,i){r(70),t.watermark&&pt(e,t.watermark),r(90),await gt(Z(e,t.capture?.format,t.capture?.quality),t.print),r(100),i.success(`合并打印完成,共合并 ${n} 个元素`)}function xt(){let e=n(),t=j(!1),r=j(0),i=e=>{r.value=Math.max(0,Math.min(100,e))},a=async(e,t={})=>{try{i(0),i(30);let n=await mt(e,t.capture);i(60),t.watermark&&pt(n,t.watermark),i(90);let r=Z(n,t.capture?.format||`png`,t.capture?.quality||.92);return i(100),r}catch(e){throw Error(`截图失败: ${e instanceof Error?e.message:`未知错误`}`)}},o=async(n,r={})=>{t.value=!0,i(0);try{await E();let t=await a(n,r);i(95),await gt(t,r.print),i(100),e.success(`打印完成`)}catch(t){throw e.error(`打印失败: ${t instanceof Error?t.message:`未知错误`}`,t),t}finally{t.value=!1,i(0)}},s=async(n,r,i={})=>{t.value=!0;try{await E();let t=await mt(n,i.capture);i.watermark&&pt(t,i.watermark);let a=i.capture?.format||`png`,o=`screenshot-${new Date().toISOString().slice(0,19).replace(/:/g,`-`)}.${a}`;ht(t,r||o,a),e.success(`下载完成`)}catch(t){throw e.error(`下载失败`,t),t}finally{t.value=!1}},c=async(e,t=`Robot Admin`)=>o(e,{watermark:{text:t,position:`repeat`,textColor:`rgba(128, 128, 128, 0.3)`}}),l=async(e,t={})=>{let n=e.length;i(10);let r=e.map(async(e,r)=>{let o=await a(e,t);return i(10+(r+1)/n*70),o});return Promise.all(r)},u=async(e,t={})=>{await e.reduce(async(n,r,i)=>{await n,await gt(r,t),i<e.length-1&&await new Promise(e=>{setTimeout(()=>e(),1e3)})},Promise.resolve())};return{loading:t,progress:r,captureWithWatermark:a,printWithWatermark:o,downloadScreenshot:s,quickPrint:c,batchCapture:l,batchPrint:async(n,r={})=>{if(!n.length){e.warning(`没有要打印的元素`);return}t.value=!0;try{i(0);let t=await l(n,r);i(80),await u(t,r.print),i(100),e.success(`批量打印完成,共 ${n.length} 个元素`)}catch(t){throw e.error(`批量打印失败`,t),t}finally{t.value=!1,i(0)}},mergePrint:async(n,r={},a={})=>{let o=yt(n,a,e);if(o){t.value=!0;try{await Q(await bt(n,r,o,i),r,n.length,i,e)}catch(t){throw e.error(`合并打印失败`,t),t}finally{t.value=!1,i(0)}}},createPreset:(e,t)=>({use:e=>o(e,t),download:(e,n)=>s(e,n,t)}),updateProgress:i,utils:{captureElement:mt,drawWatermark:pt,canvasToDataURL:Z,downloadCanvas:ht,printImage:gt}}}const St={table:{watermark:{text:`Robot Admin - 数据表格`,position:`repeat`,textColor:`rgba(100, 100, 100, 0.25)`,textSize:14,xGap:250,yGap:120},capture:{scale:1.2},print:{orientation:`landscape`,style:`@page { margin: 8mm; } body { font-family: Arial, sans-serif; }`}},form:{watermark:{text:`Robot Admin - 表单数据`,position:`diagonal`,textColor:`rgba(150, 150, 150, 0.2)`,textSize:16},print:{orientation:`portrait`}},report:{watermark:{text:`Robot Admin - 机密报告`,position:`center`,textColor:`rgba(200, 50, 50, 0.15)`,textSize:24},capture:{quality:.95,format:`png`}}};function Ct(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?`row_${crypto.randomUUID()}`:`row_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}function wt(e,t){return typeof t==`function`?t(e):e[t]}function Tt(e,t){let n=l(e?.()||{}),r=typeof t==`string`?t:`id`;return{...n,[r]:Ct()}}function Et(e,i={}){let a={enabled:!0,rowKey:`id`,enableRadioSelection:!0,enableAdd:!0,enableInsert:!0,enableDelete:!0,enableCopy:!0,enableMove:!0,enablePrint:!0,confirmDelete:!0,deleteConfirmText:``,printPreset:`table`,printTargetSelector:`.c-table-wrapper`,defaultRowData:()=>({})},o=re({...a,...I(i)});R(()=>I(i),e=>{let t=o;Object.keys(t).forEach(e=>delete t[e]),Object.assign(t,a,e)},{deep:!0});let s=n(()=>o.feedback),{t:c}=t(()=>o.locale),u=`c-table-radio-${Ct()}`,f=j(null),p=j(!1),m=d(()=>f.value===null?null:e.value.find(e=>wt(e,o.rowKey)===f.value)||null),h=d(()=>m.value?e.value.findIndex(e=>e===m.value):-1),g=d(()=>h.value>0),_=d(()=>h.value>=0&&h.value<e.value.length-1),{loading:v,progress:y,printWithWatermark:b,downloadScreenshot:x,quickPrint:w}=xt(),ee=()=>{if(o.printOptions)return o.printOptions;let e=St[o.printPreset||`table`];return o.printWatermarkText&&e.watermark?{...e,watermark:{...e.watermark,text:o.printWatermarkText}}:e},T=e=>{o.onRowChange?.(e)},E=t=>{let n=wt(t,o.rowKey);return n!=null&&n!==``&&!e.value.some(e=>wt(e,o.rowKey)===n)?!0:(s.warning(c(`table.invalidRowKeys`,{count:1})),!1)},D=()=>{if(!o.enabled||!o.enableAdd)return;let t=Tt(o.defaultRowData,o.rowKey);E(t)&&(T([...e.value,t]),o.onRowAdd?.(t),s.success(c(`table.addRowSuccess`)))},te=()=>{if(!o.enabled||!o.enableInsert||!m.value){s.warning(c(`table.selectRowFirst`));return}let t=Tt(o.defaultRowData,o.rowKey);if(!E(t))return;let n=[...e.value];n.splice(h.value+1,0,t),T(n),o.onRowAdd?.(t),s.success(c(`table.insertRowSuccess`))},ne=()=>{if(!o.enabled||!o.enableDelete||!m.value){s.warning(c(`table.selectDeleteRowFirst`));return}o.confirmDelete?p.value=!0:O()},O=()=>{if(!m.value)return;let t=m.value,n=h.value;T(e.value.filter((e,t)=>t!==n)),f.value=null,o.onSelectionChange?.(null,null),o.onRowDelete?.(t,n),s.success(c(`table.deleteRowSuccess`)),p.value=!1},A=()=>{if(!o.enabled||!o.enableCopy||!m.value){s.warning(c(`table.selectCopyRowFirst`));return}let t=m.value,n=typeof o.rowKey==`string`?o.rowKey:`id`,{[n]:r,...i}=l(t),a={...i,[n]:Ct()};E(a)&&(T([...e.value,a]),o.onRowCopy?.(t,a),s.success(c(`table.copyRowSuccess`)))},ie=()=>{if(!o.enabled||!o.enableMove||!g.value)return;let t=h.value,n=[...e.value],r=n[t];[n[t],n[t-1]]=[n[t-1],n[t]],T(n),o.onRowMove?.(r,t,t-1),s.success(c(`table.moveUpSuccess`))},M=()=>{if(!o.enabled||!o.enableMove||!_.value)return;let t=h.value,n=[...e.value],r=n[t];[n[t],n[t+1]]=[n[t+1],n[t]],T(n),o.onRowMove?.(r,t,t+1),s.success(c(`table.moveDownSuccess`))},ae=t=>{if(!o.enabled)return;let n=e.value.find(e=>wt(e,o.rowKey)===t);n&&(f.value=t,o.onSelectionChange?.(t,n))},N=()=>{f.value=null,o.onSelectionChange?.(null,null)},F=async e=>{if(!e.value){s.error(c(`table.printTargetMissing`));return}let t=ee();await b(e.value,t)};return S()&&k(()=>{f.value=null,p.value=!1}),{selectedRowKey:f,selectedRowData:m,selectedRowIndex:h,canMoveUp:g,canMoveDown:_,deleteConfirmVisible:p,printLoading:v,printProgress:y,addRow:D,insertRow:te,deleteRow:ne,confirmDelete:O,copyRow:A,moveRowUp:ie,moveRowDown:M,selectRow:ae,clearSelection:N,handlePrint:F,handleDownload:async(e,t)=>{if(!e.value){s.error(c(`table.downloadTargetMissing`));return}let n=ee();await x(e.value,t,n)},handleQuickPrint:async e=>{if(!e.value){s.error(c(`table.printTargetMissing`));return}let t=o.printWatermarkText||`Robot Admin`;await w(e.value,t)},enhanceColumns:e=>{if(!o.enabled)return e;let t=[...e];return o.enabled&&o.enableRadioSelection&&t.unshift({key:`_radio_selection`,title:c(`common.select`),width:80,align:`center`,editable:!1,render:e=>{let t=wt(e,o.rowKey);return C(`div`,{class:`flex justify-center`},[C(`input`,{type:`radio`,name:u,"aria-label":c(`common.select`),checked:f.value===t,class:`cursor-pointer accent-blue-500 scale-110`,onChange:e=>{e.target.checked&&ae(t)}})])}}),t},renderToolbar:e=>{if(!o.enabled)return null;let t=[];o.enablePrint&&t.push(C(B,{loading:v.value,type:`primary`,ghost:!0,onClick:async()=>{try{let t=e??document.querySelector(o.printTargetSelector);t?await F(P(t)):s.warning(c(`table.printTargetMissing`))}catch(e){s.error(c(`table.printTargetMissing`),e)}}},{icon:()=>C(r,{name:`mdi:printer`,title:c(`common.print`)}),default:()=>c(`common.print`)}));let n=[];return o.enableAdd&&n.push(C(B,{onClick:D,type:`primary`},{icon:()=>C(r,{name:`mdi:plus`,title:c(`table.addRow`)}),default:()=>c(`table.addRow`)})),o.enableInsert&&n.push(C(W,{disabled:!!m.value},{trigger:()=>C(B,{onClick:te,disabled:!m.value,type:`primary`,ghost:!0},{icon:()=>C(r,{name:`mdi:table-row-plus-after`,title:c(`table.insertRow`)}),default:()=>c(`table.insertRow`)}),default:()=>c(`table.selectRowFirst`)})),o.enableDelete&&n.push(C(W,{disabled:!!m.value},{trigger:()=>C(B,{onClick:ne,disabled:!m.value,type:`error`,ghost:!0},{icon:()=>C(r,{name:`mdi:delete`,title:c(`table.deleteRow`)}),default:()=>c(`table.deleteRow`)}),default:()=>c(`table.selectDeleteRowFirst`)})),o.enableCopy&&n.push(C(W,{disabled:!!m.value},{trigger:()=>C(B,{onClick:A,disabled:!m.value,type:`info`,ghost:!0},{icon:()=>C(r,{name:`mdi:content-copy`,title:c(`table.copyRow`)}),default:()=>c(`table.copyRow`)}),default:()=>c(`table.selectCopyRowFirst`)})),o.enableMove&&n.push(C(W,{disabled:g.value},{trigger:()=>C(B,{onClick:ie,disabled:!g.value,type:`warning`,ghost:!0},{icon:()=>C(r,{name:`mdi:arrow-up`,title:c(`table.moveUp`)}),default:()=>c(`table.moveUp`)}),default:()=>m.value?c(`table.firstRow`):c(`table.selectRowFirst`)}),C(W,{disabled:_.value},{trigger:()=>C(B,{onClick:M,disabled:!_.value,type:`warning`,ghost:!0},{icon:()=>C(r,{name:`mdi:arrow-down`,title:c(`table.moveDown`)}),default:()=>c(`table.moveDown`)}),default:()=>m.value?c(`table.lastRow`):c(`table.selectRowFirst`)})),n.length>0&&t.push(C(V,{},()=>n)),C(`div`,{class:`dynamic-rows-toolbar mb-4 flex justify-end`},[C(he,{},()=>t)])},renderConfirmModal:()=>C(pe,{show:p.value,"onUpdate:show":e=>{p.value=e},preset:`dialog`,title:c(`table.deleteTitle`),content:o.deleteConfirmText||c(`table.deleteRowContent`),positiveText:c(`table.confirmDeleteRow`),negativeText:c(`common.cancel`),onPositiveClick:O})}}function Dt(e){let r=0,{data:i,rowKey:a,emit:o}=e,s=()=>I(e.config),c=()=>s().treeEnabled?s().treeChildrenKey??`children`:void 0,l=d(()=>We(i(),c())),u=()=>l.value,f=n(()=>s().feedback),{t:p}=t(()=>s().locale),m=(e,t,n)=>i()===e&&l.value.find(e=>a(e)===t)===n,h={onSave:async(e,t,n,u)=>{let d=i(),f=u??a(e),p=l.value.find(e=>a(e)===f);if(!p)return;let h=l.value.indexOf(p),g={...p,...e},_=r;if(s().editable)try{if(await s().onEditSave?.(g,h,n),r!==_||(await o(`save`,g,h,n),r!==_)||!m(d,f,p))return;o(`update:data`,Ge(i(),p,g,c()))}catch(e){throw s().onEditError?.(e),o(`edit-error`,e),e}},onCancel:async(e,t)=>{let n=r;try{if(await s().onEditCancel?.(e,t),r!==n)return;await o(`cancel`,e,t)}catch(e){throw s().onEditError?.(e),o(`edit-error`,e),e}},onExpandChange:(e,t,n)=>{o(`expand-change`,e,t,n)},onSelectionChange:(e,t,n)=>{o(`selection-change`,e,t,n)},onChildSelectionChange:(e,t,n)=>{o(`child-selection-change`,e,t,n)},onRowChange:e=>{o(`update:data`,e),s().dynamicRows?.onRowChange?.(e)},onRowSelectionChange:(e,t)=>{o(`row-selection-change`,e,t),s().dynamicRows?.onSelectionChange?.(e,t)},onRowAdd:e=>{o(`row-add`,e),s().dynamicRows?.onRowAdd?.(e)},onRowDelete:(e,t)=>{o(`row-delete`,e,t),s().dynamicRows?.onRowDelete?.(e,t)},onRowCopy:(e,t)=>{o(`row-copy`,e,t),s().dynamicRows?.onRowCopy?.(e,t)},onRowMove:(e,t,n)=>{o(`row-move`,e,t,n),s().dynamicRows?.onRowMove?.(e,t,n)}},g=()=>({rowEdit:Be({data:u,rowKey:a,onSave:(e,t,n)=>h.onSave(e,t,void 0,n),onCancel:h.onCancel,columns:e.columns}),cellEdit:Ve({data:u,rowKey:a,onSave:h.onSave,columns:e.columns}),modalEdit:He({data:u,rowKey:a,onSave:(e,t,n)=>h.onSave(e,t,void 0,n),onCancel:h.onCancel})}),_=()=>at({data:d(()=>i()),rowKey:a,get childrenKey(){return c()},childRowKey:e=>e.id,get locale(){return s().locale},renderLoading:e.renderLoading,get defaultExpandedKeys(){return s().defaultExpandedKeys},get onLoadData(){return s().onLoadExpandData},onError:(e,t)=>{let n=s().onExpandError;n?n(e,t):f.error(p(`table.loadFailed`),e)},get renderContent(){return s().renderExpandContent},get rowExpandable(){return s().rowExpandable},get enableSelection(){return s().enableSelection},get defaultCheckedKeys(){return s().defaultCheckedKeys},get rowCheckable(){return s().rowCheckable},get maxSelection(){return s().maxSelection},get enableChildSelection(){return s().enableChildSelection},get childRowCheckable(){return s().childRowCheckable},get enableParentChildLink(){return s().enableParentChildLink},get parentChildLinkMode(){return s().parentChildLinkMode},onExpandChange:h.onExpandChange,onSelectionChange:h.onSelectionChange,onChildSelectionChange:h.onChildSelectionChange}),v=()=>Et(d(()=>i()),d(()=>({...s().dynamicRows,rowKey:s().dynamicRows?.rowKey??I(e.rowKeyField)??a,enabled:!!s().dynamicRows,feedback:s().feedback,locale:s().locale,onRowChange:h.onRowChange,onSelectionChange:h.onRowSelectionChange,onRowAdd:h.onRowAdd,onRowDelete:h.onRowDelete,onRowCopy:h.onRowCopy,onRowMove:h.onRowMove}))),y=g(),b=()=>{r++,y.rowEdit.invalidate(),y.cellEdit.invalidate(),y.modalEdit.invalidate()};R([()=>s().editable,()=>s().editMode],b,{flush:`sync`}),S()&&k(b);let x=_(),C=v();return{editStates:y,expandState:x,dynamicRowsState:C,stateManager:{edit:{start(e,t){if(!s().editable)return;let n=s().editMode;n===`modal`?y.modalEdit.startEdit(e):n===`cell`&&t?y.cellEdit.startEditCell(e,t):(n===`row`||n===`both`)&&y.rowEdit.startEditRow(e)},cancel(){y.modalEdit.isModalVisible.value?y.modalEdit.cancelEdit():y.cellEdit.editingCell.value.rowKey===null?y.rowEdit.editingRowKey.value!==null&&y.rowEdit.cancelEditRow():y.cellEdit.cancelEditCell()},async save(){y.modalEdit.isModalVisible.value?await y.modalEdit.saveEdit():y.cellEdit.editingCell.value.rowKey===null?y.rowEdit.editingRowKey.value!==null&&await y.rowEdit.saveEditRow():await y.cellEdit.saveEditCell()},isEditing(e,t){return s().editMode===`modal`?y.modalEdit.isEditingRow(e):t?y.cellEdit.isEditingCell(e,t):y.rowEdit.isEditingRow(e)},getEditingData(){return y.modalEdit.isModalVisible.value?y.modalEdit.editingData.value:y.rowEdit.editingRowKey.value===null?null:y.rowEdit.getEditingRowData(y.rowEdit.editingRowKey.value)}},expand:{async row(e){if(x){let t=[...x.expandedKeys.value];t.includes(e)||(t.push(e),x.handleExpandChange(t))}},collapse(e){if(x){let t=x.expandedKeys.value.filter(t=>t!==e);x.handleExpandChange(t)}},async toggle(e){x?.expandedKeys.value.includes(e)?this.collapse(e):await this.row(e)},async all(){await x?.expandAll()},collapseAll(){x?.collapseAll()},isExpanded(e){return x?.expandedKeys.value.includes(e)??!1}},selection:{select(e){if(x?.checkedKeys.value&&!x.checkedKeys.value.includes(e)){let t=[...x.checkedKeys.value,e];x.handleSelectionChange(t)}},unselect(e){if(x?.checkedKeys.value){let t=x.checkedKeys.value.filter(t=>t!==e);x.handleSelectionChange(t)}},all(){x?.selectAll()},clear(){x?.clearSelection()},isSelected(e){return x?.checkedKeys.value.includes(e)??!1},getSelected(){if(!x?.checkedKeys.value)return[];let e=new Set(x.checkedKeys.value);return l.value.filter(t=>e.has(a(t)))}},childSelection:{select(e,t){if(x?.childSelections.value){let n=x.childSelections.value.get(e)||[];if(!n.includes(t)){let r=[...n,t];x.childSelections.value.set(e,r),o(`child-selection-change`,e,r,[])}}},unselect(e,t){if(x?.childSelections.value){let n=(x.childSelections.value.get(e)||[]).filter(e=>e!==t);x.childSelections.value.set(e,n),o(`child-selection-change`,e,n,[])}},selectAll(e){if(x?.childSelections.value&&x.expandDataMap?.value){let t=x.expandDataMap.value.get(e)||[],n=t.map(e=>e.id);x.childSelections.value.set(e,n),o(`child-selection-change`,e,n,t)}},clear(e){x?.childSelections.value&&(x.childSelections.value.set(e,[]),o(`child-selection-change`,e,[],[]))},getSelected(e){if(!x?.childSelections.value||!x.expandDataMap?.value)return[];let t=x.childSelections.value.get(e)||[];return(x.expandDataMap.value.get(e)||[]).filter(e=>t.includes(e.id))}},dynamicRows:{add(){C?.addRow()},insert(){C?.insertRow()},delete(){C?.deleteRow()},copy(){C?.copyRow()},moveUp(){C?.moveRowUp()},moveDown(){C?.moveRowDown()},clearSelection(){C?.clearSelection()},getSelected(){return C?.selectedRowData.value||null},async print(e){C&&e&&await C.handlePrint(P(e))},async download(e,t){C&&e&&await C.handleDownload(P(e),t)}},clearAllSelections(){x?.clearAllSelections()}},expandedKeys:d(()=>x?.expandedKeys.value??[]),checkedKeys:d(()=>x?.checkedKeys.value??[]),eventHandlers:h}}const $={page:1,pageSize:10,showSizePicker:!0,showQuickJumper:!0,pageSizes:[10,20,50,100],simple:!1,size:`medium`};function Ot(e,t){return!Number.isFinite(e)||(e??0)<=0?t:Math.max(1,Math.trunc(e))}function kt(e){let{data:t,config:n,emit:r}=e,i=j($.page),a=j($.pageSize),o=d(()=>{let e=typeof t==`function`?t():L(t);return Array.isArray(e)?e:[]}),s=d(()=>{let e=n.value;return e?.remote?Math.max(0,Math.trunc(e.total??o.value.length)):o.value.length}),c=()=>n.value?.enabled?Math.max(1,Math.ceil(s.value/a.value)):1,l=(e,t)=>{let n=Math.min(Ot(e,1),c());i.value!==n&&(i.value=n,t&&r?.(`pagination-change`,n,a.value))},u=e=>l(e,!0),f=e=>{let t=Ot(e,$.pageSize),n=a.value!==t;a.value=t,i.value=1,n&&r?.(`pagination-change`,1,t)},p=()=>l(1,!0),m=d(()=>{let e=n.value;if(!e?.enabled||e.remote)return o.value;let t=(i.value-1)*a.value;return o.value.slice(t,t+a.value)}),h=d(()=>{let e=n.value;return e?.enabled?{page:i.value,pageSize:a.value,itemCount:s.value,showSizePicker:e.showSizePicker??$.showSizePicker,showQuickJumper:e.showQuickJumper??$.showQuickJumper,pageSizes:e.pageSizes??$.pageSizes,simple:e.simple??$.simple,size:e.size??$.size,prefix:e=>`共 ${e.itemCount??0} 条`,suffix:e=>(e.itemCount??0)>0?`第 ${e.startIndex+1}-${e.endIndex} 条`:`暂无数据`,"onUpdate:page":u,"onUpdate:pageSize":f}:null});return R(()=>[n.value?.page,n.value?.pageSize],([e,t])=>{a.value=Ot(t,$.pageSize),i.value=Math.min(Ot(e,$.page),c())},{immediate:!0}),R([s,a],()=>{let e=Math.min(i.value,c());e!==i.value&&(i.value=e,r?.(`pagination-change`,e,a.value))}),{currentPage:i,currentPageSize:a,paginatedData:m,paginationConfig:h,handlePageChange:u,handlePageSizeChange:f,resetToFirstPage:p,getTotalPages:c}}function At(e){return e.flatMap(e=>e.visible===!1?[]:`children`in e&&Array.isArray(e.children)?At(e.children):`type`in e&&e.type?[]:[e])}function jt(e,t){return e==null?t==null?0:-1:t==null?1:typeof e==`number`&&typeof t==`number`?e-t:typeof e==`string`&&typeof t==`string`?e.localeCompare(t):0}function Mt(e,t,n){let{sorter:r}=e;return typeof r==`function`?r(t,n):r&&typeof r==`object`&&typeof r.compare==`function`?r.compare(t,n):r===`default`||typeof r==`object`&&r.compare===`default`?jt(t[e.key],n[e.key]):0}function Nt(e,t,n){let r=Array.isArray(t)?t:[t];if(t==null||r.length===0)return!0;let{filter:i}=e,a=t=>t==null?!0:typeof i==`function`?i(t,n):i===`default`?String(n[e.key]).includes(String(t)):!0;return e.filterMode===`and`?r.every(a):r.some(a)}function Pt(e,t){return e.filterOptionValues===void 0?e.filterOptionValue===void 0?Object.prototype.hasOwnProperty.call(t,e.key)?t[e.key]:e.defaultFilterOptionValues??e.defaultFilterOptionValue:e.filterOptionValue:e.filterOptionValues}function Ft(e){let t=P(),n=P({}),r=d(()=>At(I(e.columns))),i=d(()=>r.value.flatMap(e=>{if(e.filter!==`default`&&typeof e.filter!=`function`)return[];let t=Pt(e,n.value);return t==null||Array.isArray(t)&&t.length===0?[]:[{column:e,value:t}]})),a=d(()=>{let t=I(e.data);if(I(e.remote))return t;let n=i.value;return n.length?t.filter(e=>n.every(({column:t,value:n})=>Nt(t,n,e))):t}),o=d(()=>{let e=r.value.filter(e=>e.sortOrder===!1||e.sortOrder===`ascend`||e.sortOrder===`descend`);return e.length?e.map(e=>({columnKey:e.key,order:e.sortOrder})):t.value===void 0?r.value.map(e=>({columnKey:e.key,order:e.defaultSortOrder})):t.value?Array.isArray(t.value)?t.value:[t.value]:[]});return{processedData:d(()=>{if(I(e.remote))return I(e.data);let t=o.value.flatMap(e=>{let t=r.value.find(t=>t.key===e.columnKey);if(!t?.sorter||!e.order)return[];let n=typeof t.sorter==`object`?t.sorter.multiple??0:0;return[{column:t,direction:e.order===`ascend`?1:-1,priority:n}]}).sort((e,t)=>t.priority-e.priority);return t.length?a.value.slice().sort((e,n)=>{for(let r of t){let t=Mt(r.column,e,n)*r.direction;if(t)return t}return 0}):a.value}),setSorter:e=>{t.value=e},setFilters:e=>{n.value={...e}}}}const It=e=>e&&typeof e==`object`&&`error`in e?e.error:null;function Lt(e){let{actions:i,config:a,tableManager:s,rowKey:c,onRowDeleted:l,onViewDetail:u,isDeleteFeedbackHandled:d}=e,f=o(),p=!0;S()&&k(()=>{p=!1});let m=(e,t)=>JSON.stringify([typeof e,e,t]),h=n(()=>a.value.feedback),{t:g}=t(()=>a.value.locale),_=e=>e===`edit`?a.value.editable&&i.value?.edit!==!1:typeof i.value?.[e]==`function`,v=e=>e!==!1&&typeof e==`function`,y=e=>e&&typeof e==`object`&&`data`in e?e.data:e,b=(e,t,n=`primary`,i,o,s=!1)=>C(B,{size:a.value.controlSize??`small`,type:n,quaternary:!0,onClick:i,loading:s||(o?f.isRunning(o):!1),disabled:o?f.isRunning(o):!1},()=>[C(r,{name:e,size:14,title:t})]),x=async(e,t)=>{let n=c(e),r=i.value?.edit;if(v(r)){try{await r(e,t)}catch(e){h.error(g(`table.actionFailed`,{action:g(`common.edit`)}),e)}return}a.value.editMode===`modal`?s.editStates.modalEdit.startEdit(n,{...e}):s.editStates.rowEdit.startEditRow(n)},w=(e,t)=>{p&&!t&&h.error(g(`table.deleteFailed`),e)},ee=async(e,t,n)=>{let r=d?.(e)===!0;try{let i=await e(t,n);if(!p)return;let a=It(i);if(a!=null){w(a,r);return}r||h.success(g(`table.deleteSuccess`)),l?.(t,n)}catch(e){throw w(e,r),e}},T=async(e,t)=>{let n=i.value?.delete;v(n)&&await h.confirm({title:g(`table.deleteTitle`),content:g(`table.deleteContent`),positiveText:g(`common.confirm`),negativeText:g(`common.cancel`),type:`warning`})&&p&&await ee(n,e,t)},E=async(e,t)=>{let n=i.value?.detail;if(!v(n)){u?.(e);return}try{let r=await n(e,t);if(!p)return;let i=y(r);u?.(i||e)}catch(t){if(!p)return;h.error(g(`table.detailFailed`),t),u?.(e)}},D=(e,t)=>f.run(m(c(e),`edit`),()=>x(e,t)),te=(e,t)=>f.run(m(c(e),`delete`),()=>T(e,t)),ne=(e,t)=>f.run(m(c(e),`detail`),()=>E(e,t)),O=e=>s.editStates.rowEdit.isEditingRow(e)?[b(`mdi:check`,g(`common.save`),`primary`,()=>void f.run(m(e,`save`),()=>s.editStates.rowEdit.saveEditRow()).catch(e=>h.error(g(`table.actionFailed`,{action:g(`common.save`)}),e)),m(e,`save`)),b(`mdi:close`,g(`common.cancel`),`default`,()=>void f.run(m(e,`cancel`),()=>s.editStates.rowEdit.cancelEditRow()).catch(e=>h.error(g(`table.actionFailed`,{action:g(`common.cancel`)}),e)),m(e,`cancel`))]:[b(`mdi:pencil`,g(`common.edit`),`warning`,()=>s.editStates.rowEdit.startEditRow(e))],A=(e,t)=>{let n=[];return _(`detail`)&&n.push(b(`mdi:eye`,g(`common.detail`),`info`,()=>void ne(e,t),m(c(e),`detail`))),_(`edit`)&&(a.value.editMode===`modal`||v(i.value?.edit))&&n.push(b(`mdi:pencil`,g(`common.edit`),`warning`,()=>void D(e,t),m(c(e),`edit`))),_(`delete`)&&n.push(b(`mdi:delete`,g(`common.delete`),`error`,()=>void te(e,t).catch(()=>void 0),m(c(e),`delete`))),n},re=(e,t)=>{let n=i.value?.custom;if(!n?.length)return null;let a=n.filter(n=>n.show?n.show(e,t):!0);return a.length?C(H,{options:a.map(n=>{let i=typeof n.label==`function`?n.label(e,t):n.label,a=typeof n.icon==`function`?n.icon(e,t):n.icon;return{label:i,key:n.key,icon:()=>C(r,{name:a,size:14}),disabled:n.disabled?.(e,t)||f.isRunning(m(c(e),`custom:${n.key}`))}}),onSelect:n=>{let r=a.find(e=>e.key===n);if(!r)return;let i=typeof r.label==`function`?r.label(e,t):r.label;f.run(m(c(e),`custom:${r.key}`),()=>r.onClick(e,t),()=>!r.disabled?.(e,t)).catch(e=>h.error(g(`table.actionFailed`,{action:i}),e))}},()=>b(`mdi:dots-horizontal`,g(`table.moreActions`),`default`,()=>{},void 0,a.some(t=>f.isRunning(m(c(e),`custom:${t.key}`))))):null};return{renderActions:(e,t)=>{if(i.value?.render)return i.value.render(e,t);let n=c(e),r=a.value.editable&&[`row`,`both`].includes(a.value.editMode);if(r&&s.editStates.rowEdit.isEditingRow(n))return C(he,{size:2,wrap:!1},()=>O(n));let o=v(i.value?.edit),l=[...r&&!o?O(n):[],...A(e,t)],u=re(e,t);return u&&l.push(u),C(he,{size:2,wrap:!1},()=>l)},isActionEnabled:_}}const Rt=Symbol(`C_TABLE_GLOBAL_CONFIG`),zt={date:{format:`YYYY-MM-DD`},datetime:{format:`YYYY-MM-DD HH:mm:ss`},currency:{prefix:`¥`,precision:2},percent:{precision:2,suffix:`%`},number:{precision:0}};function Bt(e,t){if(e==null||e===``)return`-`;let n=new Date(typeof e==`number`?e:String(e));if(Number.isNaN(n.getTime()))return String(e);let r=e=>String(e).padStart(2,`0`);return t.replace(`YYYY`,String(n.getFullYear())).replace(`MM`,r(n.getMonth()+1)).replace(`DD`,r(n.getDate())).replace(`HH`,r(n.getHours())).replace(`mm`,r(n.getMinutes())).replace(`ss`,r(n.getSeconds()))}function Vt(e,t){if(e==null||e===``)return`-`;let n=Number(e);return Number.isNaN(n)?String(e):n.toLocaleString(`zh-CN`,{minimumFractionDigits:t,maximumFractionDigits:t})}const Ht={date:(e,t)=>Bt(e,t.format??`YYYY-MM-DD`),datetime:(e,t)=>Bt(e,t.format??`YYYY-MM-DD HH:mm:ss`),currency:(e,t)=>{let n=Vt(e,t.precision??2);return n===`-`?`-`:`${t.prefix??`¥`}${n}${t.suffix??``}`},percent:(e,t)=>{if(e==null||e===``)return`-`;let n=Number(e);return Number.isNaN(n)?String(e):`${(n*100).toFixed(t.precision??2)}${t.suffix??`%`}`},number:(e,t)=>Vt(e,t.precision??0)};function Ut(e,t,n,r){if(n.fn)return n.fn(e,t);if(n.type===`enum`)return n.mapping?n.mapping[String(e)]??String(e??`-`):String(e??`-`);let i=n.type&&Ht[n.type];return i?i(e,{...{...zt,...r}[n.type],...n.config}):String(e??`-`)}function Wt(){return x()?w(Rt,{}):{}}const Gt=(e,t)=>t===void 0?e:t&&e&&typeof t==`object`&&typeof e==`object`&&!Array.isArray(t)&&!Array.isArray(e)?{...e,...t}:t;function Kt(e,t){let n=t.defaults??{},r={...n,...e};if([`edit`,`pagination`,`expand`,`selection`,`dynamicRows`,`toolbar`,`display`,`virtualScroll`,`summary`,`columnDrag`,`tree`,`rowDrag`,`crossPageSelection`,`export`,`formatterConfig`,`error`,`batchActions`].forEach(t=>{let i=e=>t===`edit`&&typeof e==`string`?{mode:e}:e,a=Gt(i(n[t]),i(e[t]));a!==void 0&&(r[t]=a)}),t.display){let e=typeof r.display==`object`?r.display:{};r.display={...t.display,...e}}if(t.pageSize&&r.pagination!==!1){let e=typeof r.pagination==`object`?r.pagination:{};e.pageSize||(r.pagination={...e,pageSize:t.pageSize})}return r}const qt=y(()=>import(`./date-picker.js`)),Jt={number:fe,switch:_e,input:de,email:de,mobile:de,date:e=>C(qt,{...e,type:`date`,format:`yyyy-MM-dd`}),select:e=>C(U,{...e,options:e.options||[]}),textarea:e=>C(de,{...e,type:`textarea`,rows:3})},Yt={number:`inputNumber`,date:`datePicker`,textarea:`textarea`,select:`select`,switch:`switch`},Xt=e=>e.map(e=>{let t=e.required?[{required:!0,message:`请输入${e.title}`,trigger:[`blur`,`input`],validator:async(t,n)=>{if(!n&&n!==0&&n!==!1)throw Error(`请输入${e.title}`)}}]:[];return{prop:e.key,label:e.title||e.key,type:Yt[e.editType||`input`]||`input`,placeholder:`请输入${e.title}`,rules:t,attrs:e.editProps||{},layout:{span:1},show:!0}});function Zt(e,t,n,r={},i=0,a){if(e.editRender)return e.editRender(t,r,i,{onUpdate:n});let o=e,s={value:t,"onUpdate:value":n,placeholder:`请输入${o.title??``}`,style:{width:`100%`},...a?{size:a}:{},...e.editProps};return C(Jt[e.editType||`input`]||Jt.input,s)}function Qt(e,t,n,r,i){return e.render?e.render(t,n)??String(r??``):e.formatter?Ut(r,t,e.formatter,i):String(r??``)}function $t(e,t,n,i,a,o={rowData:{},rowIndex:0}){let s=(e,t,n)=>C(`button`,{class:`cell-action-btn cell-action-${e}`,title:t,type:`button`,onClick:e=>{e.stopPropagation(),e.preventDefault(),n(e)}},[C(r,{name:`mdi:${e===`save`?`check`:`close`}`,title:e===`save`?`保存`:`取消`,size:12})]);return C(`div`,{class:`cell-editing-container`},[C(`div`,{class:`cell-editing-input`},[Zt(e,t,n,o.rowData,o.rowIndex,o.size)]),C(`div`,{class:`cell-editing-actions`},[s(`save`,`保存`,i),s(`cancel`,`取消`,a)])])}function en(e,t,n,i,a,o){let s;return s=e.render?e.render(t,n)??String(i??``):e.formatter?Ut(i,t,e.formatter,o):String(i??``),C(`div`,{class:`cell-edit-wrapper`},[C(`span`,{class:`cell-value`},s),C(r,{name:`mdi:square-edit-outline`,title:`编辑`,class:`cell-edit-icon`,size:14,clickable:!0,onClick:e=>{e.stopPropagation(),a()}})])}function tn(e){let{rawColumns:t,config:n,rowKey:r,tableManager:i,actionsRenderer:a,editModeChecker:o,showActionsColumn:s}=e,c=j([]),l=j(!1),u=e=>{let t=e.find(e=>e.key===`_actions`),n=c.value.find(e=>e.key===`_actions`),r=e.filter(e=>e.key!==`_actions`);c.value=s.value?[...r,t||n||{key:`_actions`,title:`操作`,width:180,editable:!1,visible:!0,fixed:`right`}]:r};R([t,s],([e])=>{e?.length?u(e):c.value=[]},{deep:!0,immediate:!0});let f=(e,t,r,a)=>{let o=e.key??``,s=t[o],{isEditingCell:c,getEditingCellValue:l,updateEditingCellValue:u,saveEditCell:d,cancelEditCell:f,startEditCell:p}=i.editStates.cellEdit;return c(a,o)?$t(e,l(a,o),e=>u(a,o,e),()=>d(),()=>f(),{rowData:t,rowIndex:r,size:n.value.density?n.value.controlSize:void 0}):en(e,t,r,s,()=>p(a,o),n.value.formatterConfig)},p=(e,t,a)=>{let s=e.key??``,c=t[s],l=r(t),u=o.value;if(u.isNonEditable(e))return Qt(e,t,a,c,n.value.formatterConfig);if(u.isRowEditMode()&&i.editStates.rowEdit.isEditingRow(l)){let r=i.editStates.rowEdit.getEditingRowData(l);return Zt(e,r?.[s],e=>i.editStates.rowEdit.updateEditingRowData(l,s,e),r??t,a,n.value.density?n.value.controlSize:void 0)}return u.isCellEditMode()?f(e,t,a,l):Qt(e,t,a,c,n.value.formatterConfig)},m=t=>t.width===void 0?t.type===`selection`||t.type===`expand`?40:t.type===`index`?50:e.columnWidth??180:t.width,h=e=>{let t=e;return{...t,type:void 0,key:`_index`,title:t.title??`序号`,width:m(e),className:[t.className,`c-table-index-column`].filter(Boolean).join(` `),titleAlign:t.titleAlign??`center`,align:t.align??`center`,render:(e,t)=>t+1,fixed:e.fixed}},g=t=>{let n=t,r=!n.fixed&&n.width===void 0&&n.maxWidth===void 0&&e.columnWidthExplicit===!1,i={...n,width:r?void 0:m(t),minWidth:n.minWidth??(r?e.columnWidth:void 0),titleAlign:n.titleAlign||`center`,align:n.align||`center`,render:(e,n)=>p(t,e,n)};return t.fixed&&(i.fixed=t.fixed),t.resizable&&typeof i.width==`number`&&(i.resizable=!0,i.minWidth=t.minWidth??80,i.maxWidth=t.maxWidth??500),i},_=d(()=>{let e=c.value.filter(e=>{let t=e;return t.visible!==!1&&t.key!==`_actions`}).map(e=>{let t=e;return e.type===`index`?h(e):e.type===`selection`||e.type===`expand`?{...t,width:m(e)}:g(e)});if(i.dynamicRowsState&&(e=i.dynamicRowsState.enhanceColumns(e)),i.expandState&&(n.value.expandable||n.value.enableSelection)&&(e=i.expandState.getTableColumns(e)),s.value){let t=c.value.find(e=>e.key===`_actions`);e.push({...t,type:void 0,key:`_actions`,title:t?.title??`操作`,width:t?.width??180,className:[t?.className,`c-table-actions-column`].filter(Boolean).join(` `),align:t?.align??`center`,titleAlign:t?.titleAlign??`center`,render:a,fixed:t?.fixed})}return e});return{reactiveColumns:c,showSettingsPanel:l,computedColumns:_,computedScrollX:d(()=>{if(e.scrollX!==void 0)return e.scrollX;let t=_.value.some(e=>e.fixed),n=_.value.some(e=>e.type===`selection`||e.type===`expand`||e.key===`_index`),r=_.value.some(e=>!e.type&&!e.fixed&&e.key!==`_index`&&e.key!==`_actions`&&e.width===void 0);if(!(!t&&!(n&&r)))return _.value.reduce((e,t)=>{let n=t.width;return e+(typeof n==`number`?n:typeof n==`string`&&/^\s*\d+(?:\.\d+)?(?:px)?\s*$/.test(n)?Number.parseFloat(n):typeof t.minWidth==`number`?t.minWidth:180)},0)}),handleColumnChange:e=>{c.value=e.map(e=>{let t=e;return{...e,visible:t.visible!==!1,fixed:e.fixed,width:t.width??(t.type?m(e):void 0),align:t.align||`center`,titleAlign:t.titleAlign||`center`}})}}}function nn(e){let{data:t,onReorder:n,onSort:r}=e,i=j(!1),a=null,o=0,s=!1,c,l=null,u,d,f=null,p,m=t=>t.map(t=>Ue(t,e.rowKey)),h=()=>{p?.parentNode!==l||!l||f&&f.parentNode!==l||l.insertBefore(p,f)},g=()=>{a?.destroy(),a=null,l=null,u=void 0,d=void 0,p=void 0,f=null,i.value=!1},_=(e,t,n)=>{if(!u||u.length!==e.length||u.some((t,n)=>t!==e[n])||t.some((e,t)=>e===void 0||e!==d?.[t])||n.length!==t.length||new Set(n).size!==t.length)return!1;let r=new Set(t);return n.every(e=>r.has(e))},v=e=>{i.value=!1;let{item:a}=e,o=a.getAttribute(`data-c-table-row-key`),s=[...t.value],c=m(s),g=l?[...l.children].map(e=>e.getAttribute(`data-c-table-row-key`)).filter(e=>e!==null):[],v=a===p&&_(s,c,g);if(h(),u=void 0,d=void 0,p=void 0,f=null,!v||!o)return;let y=c.indexOf(o),b=g.indexOf(o);if(y<0||b<0||y===b)return;let[x]=s.splice(y,1);s.splice(b,0,x),n?.(s),r?.(x,y,b)},y=async n=>{let r=++o;c?.disconnect(),c=void 0,g();let h=I(e.config);if(!(!h||h.enabled===!1||!n||s))try{let{default:e}=await import(`sortablejs`);if(s||r!==o)return;let _=()=>{if(s||r!==o)return;let c=n.querySelector(`.n-data-table-tbody`);c!==l&&(g(),c&&(l=c,a=new e(c,{animation:h.animationDuration??150,handle:h.handleSelector,draggable:`> tr[data-c-table-row-key]`,ghostClass:h.ghostClass??`row-drag-ghost`,chosenClass:h.chosenClass??`row-drag-chosen`,onMove:e=>e.related.hasAttribute(`data-c-table-row-key`),onStart:e=>{u=[...t.value],d=m(u),p=e.item,f=e.item.nextSibling,i.value=!0},onEnd:v})))};c=new MutationObserver(_),c.observe(n,{childList:!0,subtree:!0}),_()}catch{}},b=()=>{o+=1,c?.disconnect(),c=void 0,g()};return ne(()=>{s=!0,b()}),{initRowDrag:y,destroyRowDrag:b,isDragging:i}}function rn(e){let t=j(new Set),n=N(new Map),r=()=>I(e.config)?.enabled===!0,i=(t=e.allData.value)=>We(t,I(e.childrenKey)),a=d(()=>{let t=new Map,n=new Map;for(let r of i()){let i=e.rowKey(r),a=t.get(i);if(!a)t.set(i,r);else{let e=n.get(i);e?e.push(r):n.set(i,[a,r])}}return{index:t,duplicates:n}}),o=t=>e.rowCheckable?.(t)!==!1,s=()=>{let t=I(e.config)?.maxSelection;return Number.isFinite(t)&&(t??0)>0?Math.trunc(t):void 0},c=d(()=>t.value.size),l=()=>[...t.value].flatMap(e=>{let t=n.get(e);return t?[t]:[]}),u=e=>{let t=s(),n=new Set;for(let r of e){if(t&&n.size>=t)break;n.add(r)}return n},f=(r,i=[])=>{let a=u(r);for(let t of i){let r=e.rowKey(t);a.has(r)&&n.set(r,t)}for(let e of n.keys())a.has(e)||n.delete(e);let o=t.value;o.size===a.size&&[...o].every(e=>a.has(e))||(t.value=a,e.onSelectionChange?.([...a],l()))},p=n=>i(n).map(e.rowKey).filter(e=>t.value.has(e)),m=(n,a)=>{if(!r())return;let s=i(a),c=new Set(s.filter(o).map(e.rowKey)),l=new Set(t.value);s.forEach(t=>l.delete(e.rowKey(t))),n.forEach(e=>{c.has(e)&&l.add(e)}),f(l,s)},h=()=>{if(!r())return;let n=i().filter(o),a=n.map(e.rowKey);f(I(e.remote)?[...t.value,...a]:a,n)},g=e=>{if(!r())return!1;if(t.value.has(e))return!0;let{index:n,duplicates:i}=a.value,c=i.get(e),l=c?c.find(o):n.get(e);if(!l||!c&&!o(l))return!1;let u=s();return u&&t.value.size>=u?!1:(f([...t.value,e],[l]),!0)},_=e=>{if(!t.value.has(e))return;let n=new Set(t.value);n.delete(e),f(n)},v=()=>f([]);return R(e.allData,a=>{if(!r()||t.value.size===0)return;let o=i(a);if(I(e.remote)){for(let r of o){let i=e.rowKey(r);t.value.has(i)&&n.set(i,r)}return}let s=new Set(o.map(e.rowKey));f([...t.value].filter(e=>s.has(e)),o)}),R(()=>[r(),s()],([e])=>{e?f(t.value):v()}),{selectedKeys:t,selectedCount:c,getPageCheckedKeys:p,handlePageSelectionChange:m,selectAll:h,select:g,unselect:_,clearAll:v,getSelectedRows:l,isSelected:e=>t.value.has(e)}}function an(e,t){return e.filter(e=>typeof e.key!=`string`||e.key.startsWith(`_`)||e.type===`selection`||e.type===`expand`?!1:t?.length?t.includes(e.key):e.visible!==!1)}function on(e,t,n){let r=e[t.key];return t.formatter?Ut(r,e,t.formatter,n):r==null?``:typeof r==`boolean`?r?`是`:`否`:String(r)}function sn(e,t,n){let r=n&&/^[=+\-@\t\r]/.test(e)?`'${e}`:e;return r.includes(t)||r.includes(`"`)||r.includes(`
|
|
2
|
+
`)||r.includes(`\r`)?`"${r.replace(/"/g,`""`)}"`:r}function cn(e){return[...e||`export`].map(e=>e.charCodeAt(0)<32||`<>:"/\\|?*`.includes(e)?`_`:e).join(``).trim()||`export`}function ln(e,t,n){let r=n.csvSeparator??`,`,i=n.preventFormulaInjection!==!1,a=an(t,n.columnKeys),o=[];n.includeHeader!==!1&&o.push(a.map(e=>sn(e.title??``,r,i)).join(r));for(let t of e){let e=a.map(e=>sn(on(t,e,n.formatterConfig),r,i));o.push(e.join(r))}dn(new Blob([``+o.join(`
|
|
3
|
+
`)],{type:`text/csv;charset=utf-8;`}),`${cn(n.filename)}.csv`)}async function un(e,t,n){let r=an(t,n.columnKeys),i;try{i=await import(`xlsx`)}catch(r){n.onFallback?.(`xlsx`,`csv`,r),ln(e,t,{...n,format:`csv`});return}let a=r.map(e=>e.title??e.key??``),o=e.map(e=>r.map(t=>on(e,t,n.formatterConfig))),s=n.includeHeader===!1?o:[a,...o],c=i.utils.aoa_to_sheet(s),l=i.utils.book_new();i.utils.book_append_sheet(l,c,`Sheet1`),i.writeFile(l,`${cn(n.filename)}.xlsx`)}function dn(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.style.display=`none`,document.body.appendChild(r),r.click(),document.body.removeChild(r),setTimeout(()=>URL.revokeObjectURL(n),0)}async function fn(e,t,n={}){n.format===`xlsx`?await un(e,t,n):ln(e,t,n)}const pn=e=>[{label:e.fixed?`✓ 取消固定`:`不固定`,key:`none`,disabled:!e.fixed},{label:e.fixed===`left`?`✓ 固定左侧`:`固定左侧`,key:`left`,disabled:!1},{label:e.fixed===`right`?`✓ 固定右侧`:`固定右侧`,key:`right`,disabled:!1}],mn=[`_actions`],hn=[`selection`,`expand`],gn=e=>mn.includes(e.key)||hn.includes(e.type),_n=e=>typeof e==`string`||typeof e==`number`&&Number.isFinite(e),vn=e=>typeof e==`number`&&Number.isFinite(e)&&e>=0||typeof e==`string`&&e.trim().length>0&&e.length<=128,yn=e=>e.map(e=>({...e})),bn=e=>{let t;try{t=JSON.parse(e)}catch{return[]}return Array.isArray(t)?t.flatMap((e,t)=>{if(!e||typeof e!=`object`||Array.isArray(e))return[];let n=e;return _n(n.key)?[{key:n.key,order:t,...typeof n.visible==`boolean`&&{visible:n.visible},...vn(n.width)&&{width:n.width},...(n.fixed===`left`||n.fixed===`right`)&&{fixed:n.fixed}}]:[]}):[]},xn=(e,t)=>{let n=new Map(bn(t).map(e=>[e.key,e]));return yn(e).map(e=>{let t=_n(e.key)?n.get(e.key):void 0;return t?{...e,visible:t.visible??e.visible,width:t.width??e.width,fixed:t.fixed??e.fixed}:e}).sort((e,t)=>{let r=_n(e.key)?n.get(e.key)?.order:void 0,i=_n(t.key)?n.get(t.key)?.order:void 0;return(r??1/0)-(i??1/0)})},Sn=e=>JSON.stringify(e.filter(e=>_n(e.key)).map(e=>({key:e.key,visible:e.visible,width:e.width,fixed:e.fixed}))),Cn={class:`column-management-tab`},wn={class:`search-row`},Tn={class:`resizable-control`},En={class:`top-actions-bar`},Dn={class:`stats-info`},On={class:`quick-actions`},kn=[`draggable`,`onDragstart`,`onDragover`,`onDrop`],An={class:`column-info`},jn={class:`column-controls`},Mn={class:`column-details`},Nn={class:`column-actions`},Pn={class:`drag-controls`};var Fn=i(b({name:`ColumnSettings`,__name:`index`,props:{columns:{},persistKey:{}},emits:[`change`],setup(e,{emit:t}){let n=e,i=t,a=e=>{if(!n.persistKey)return yn(e);try{let t=localStorage.getItem(`c_table_cols_${n.persistKey}`);return t?xn(e,t):yn(e)}catch{return yn(e)}},o=e=>{if(n.persistKey)try{localStorage.setItem(`c_table_cols_${n.persistKey}`,Sn(e))}catch{}},s=j(a(n.columns)),c=j(``),l=j(),g=j(null),y=j(null),b=j(!1);O(()=>{b.value=s.value.some(e=>e.resizable===!0),n.persistKey&&i(`change`,[...s.value])}),R(()=>n.columns,e=>{s.value=a(e),b.value=s.value.some(e=>e.resizable===!0)},{deep:!0});let x=d(()=>{if(!c.value)return s.value;let e=c.value.toLowerCase();return s.value.filter(t=>String(t.title??``).toLowerCase().includes(e)||String(t.key??``).toLowerCase().includes(e))}),S=d(()=>s.value.filter(e=>e.visible!==!1).length),C=d(()=>s.value.length),w=e=>{s.value.forEach(t=>{t.key!==`_actions`&&(t.visible=e)}),M()},ee=()=>w(!0),T=()=>w(!1),E=e=>{let t=x.value[e];return s.value.findIndex(e=>e.key===t.key)},ne=(e,t)=>{let n=E(e);n!==-1&&(t(s.value[n]),M())},k=(e,t)=>{ne(e,e=>{e.visible=t})},re=(e,t)=>{ne(e,e=>{e.fixed=t===`none`?void 0:t})},M=()=>{o(s.value),i(`change`,[...s.value])},ae=()=>{s.value=yn(n.columns),M()},N=e=>{s.value.forEach(t=>{gn(t)||(t.resizable=e,e&&(t.minWidth=t.minWidth||80,t.maxWidth=t.maxWidth||500))}),M()},P=(e,t)=>{let n=E(e),r=E(t);if(n!==-1&&r!==-1){let[e]=s.value.splice(n,1);s.value.splice(r,0,e),M()}},I=(e,t)=>{if(x.value[e].key===`_actions`){t.preventDefault();return}g.value=e,t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`)},oe=(e,t)=>{t.preventDefault(),!(g.value===null||x.value[e].key===`_actions`)&&(y.value=e,t.dataTransfer&&(t.dataTransfer.dropEffect=`move`))},V=e=>{g.value===null||x.value[e].key===`_actions`||(P(g.value,e),g.value=null,y.value=null)},ce=()=>{g.value=null,y.value=null};return(e,t)=>(A(),m(`div`,Cn,[p(` 搜索框和列宽调整开关 `),h(`div`,wn,[v(L(de),{value:c.value,"onUpdate:value":t[0]||=e=>c.value=e,placeholder:`搜索列名...`,clearable:``,class:`search-input`},{prefix:z(()=>[v(r,{name:`mdi:magnify`})]),_:1},8,[`value`]),h(`div`,Tn,[v(r,{name:`mdi:arrow-split-vertical`,size:`14`,title:b.value?`开启后可拖拽列边界调整宽度`:`允许调整列宽`},null,8,[`title`]),v(L(ye),{style:{fontSize:`12px`,marginLeft:`4px`}},{default:z(()=>[...t[2]||=[_(` 列宽调整 `,-1)]]),_:1}),v(L(_e),{value:b.value,"onUpdate:value":[t[1]||=e=>b.value=e,N],size:`small`,style:{"margin-left":`6px`}},null,8,[`value`])])]),p(` 顶部操作栏:统计信息和快捷操作按钮 `),h(`div`,En,[h(`div`,Dn,[v(L(ye),{depth:`3`,style:{fontSize:`13px`}},{default:z(()=>[_(` 已选 `+F(S.value)+` / 总共 `+F(C.value)+` 列 `,1)]),_:1})]),h(`div`,On,[v(L(he),{size:6},{default:z(()=>[v(L(B),{size:`tiny`,onClick:ee},{default:z(()=>[...t[3]||=[_(` 全选 `,-1)]]),_:1}),v(L(B),{size:`tiny`,onClick:T},{default:z(()=>[...t[4]||=[_(` 全不选 `,-1)]]),_:1}),v(L(B),{size:`tiny`,onClick:ae},{default:z(()=>[...t[5]||=[_(` 重置 `,-1)]]),_:1})]),_:1})])]),p(` 列列表 `),h(`div`,{ref_key:`listRef`,ref:l,class:`column-list`},[(A(!0),m(u,null,ie(x.value,(e,n)=>(A(),m(`div`,{key:e.key,class:D([`column-item`,{disabled:e.key===`_actions`,"fixed-left":e.fixed===`left`,"fixed-right":e.fixed===`right`}]),draggable:e.key!==`_actions`,onDragstart:e=>I(n,e),onDragover:e=>oe(n,e),onDragend:ce,onDrop:e=>V(n)},[h(`div`,An,[h(`div`,jn,[v(r,{name:`mdi:drag`,size:`16`,class:D([`drag-handle`,{disabled:e.key===`_actions`}])},null,8,[`class`]),v(L(se),{checked:e.visible!==!1,disabled:e.key===`_actions`,"onUpdate:checked":e=>k(n,e)},null,8,[`checked`,`disabled`,`onUpdate:checked`])]),h(`div`,Mn,[v(L(he),{align:`center`,size:6},{default:z(()=>[v(L(ye),{strong:``,style:{fontSize:`13px`}},{default:z(()=>[_(F(e.title||e.key),1)]),_:2},1024),e.fixed===`left`?(A(),f(L(ve),{key:0,size:`tiny`,type:`info`},{default:z(()=>[...t[6]||=[_(` 左固定 `,-1)]]),_:1})):p(`v-if`,!0),e.fixed===`right`?(A(),f(L(ve),{key:1,size:`tiny`,type:`warning`},{default:z(()=>[...t[7]||=[_(` 右固定 `,-1)]]),_:1})):p(`v-if`,!0)]),_:2},1024),v(L(ye),{depth:`3`,style:{fontSize:`11px`}},{default:z(()=>[_(F(e.key),1)]),_:2},1024)])]),h(`div`,Nn,[h(`div`,Pn,[v(r,{name:`mdi:chevron-up`,size:`14`,title:`上移`,clickable:n!==0,class:D({disabled:n===0}),onClick:e=>n!==0&&P(n,n-1)},null,8,[`clickable`,`class`,`onClick`]),v(r,{name:`mdi:chevron-down`,size:`14`,title:`下移`,clickable:n!==x.value.length-1,class:D({disabled:n===x.value.length-1}),onClick:e=>n!==x.value.length-1&&P(n,n+1)},null,8,[`clickable`,`class`,`onClick`])]),v(L(H),{options:L(pn)(e),onSelect:e=>re(n,e)},{default:z(()=>[v(r,{name:`mdi:pin`,size:`14`,title:`固定列`,clickable:``,style:te({color:e.fixed?`var(--n-primary-color)`:void 0})},null,8,[`style`])]),_:2},1032,[`options`,`onSelect`])])],42,kn))),128))],512)]))}}),[[`__scopeId`,`data-v-92119048`]]);const In=[`aria-busy`],Ln={key:1,class:`table-toolbar`},Rn={class:`toolbar-left`},zn={class:`toolbar-right`},Bn={key:2,class:`batch-actions-bar`},Vn={class:`batch-info`},Hn={key:3,class:`table-error-state`},Un={class:`error-content`},Wn={class:`error-message`};var Gn=i(b({name:`C_Table`,inheritAttrs:!1,__name:`index`,props:{wrapperClass:{},flexHeight:{type:Boolean},virtualScrollX:{type:Boolean},columns:{},data:{},loading:{},rowKey:{type:[String,Function],default:`id`},config:{default:()=>({})},pagination:{type:[Object,Boolean],default:void 0},remote:{type:Boolean,default:void 0},crud:{}},emits:[`pagination-change`,`row-delete`,`batch-action-error`,`row-key-error`,`expand-change`,`selection-change`,`child-selection-change`,`parent-child-link-change`,`update:data`,`save`,`cancel`,`edit-error`,`row-add`,`row-copy`,`row-move`,`row-selection-change`,`view-detail`,`column-change`],setup(e,{expose:i,emit:b}){let x=y(()=>import(`./C_Form.js`).then(e=>e.C_Form)),S=e,w=b,te=j(null),k=(e,...t)=>{if(w(e,...t),S.crud)return{save:S.crud.save,cancel:S.crud.handleCancel,"pagination-change":S.crud.handlePaginationChange,"row-delete":S.crud.handleRowDelete,"view-detail":S.crud.detail?.show}[e]?.(...t)},re=Wt(),N=e=>typeof S.rowKey==`function`?S.rowKey(e):e[S.rowKey],P=d(()=>{let e=S.config||{};if(S.crud){let t={};if(S.crud.actions){let e=S.crud.actions.value;t.actions={...e,...S.crud.save&&typeof e.edit==`function`?{edit:void 0}:{}}}S.crud.pagination&&(t.pagination=S.crud.pagination.value??void 0),e={...t,...e}}return Kt(e,re)}),I=d(()=>S.columns??S.crud?.columns.value??[]),V=d(()=>Pe(P.value)),se=n(()=>V.value.feedback),{t:H}=t(()=>V.value.locale),de=d(()=>Fe(V.value)),fe=e=>e&&typeof e==`object`&&`value`in e?e.value:e,U=d(()=>fe(S.data)??S.crud?.data.value??[]),ge=d(()=>fe(S.loading)??S.crud?.loading.value??!1),_e=d(()=>V.value.treeEnabled&&V.value.treeDefaultExpandAll?qe(U.value,V.value.treeChildrenKey,N):[]),ve=d(()=>({...V.value,defaultExpandedKeys:[...new Set([...V.value.defaultExpandedKeys??[],..._e.value])]})),ye=``;R(()=>P.value.validateRowKeys===!1?[]:U.value.map(e=>{try{return N(e)}catch{return}}),()=>{if(P.value.validateRowKeys===!1){ye=``;return}let e=Ke(U.value,N);if(e.length===0){ye=``;return}let t=e.map(e=>[e.type,e.index,e.firstIndex,String(e.key)].join(`:`)).join(`|`);t!==ye&&(ye=t,se.warning(H(`table.invalidRowKeys`,{count:e.length})),w(`row-key-error`,e))},{immediate:!0});let W=d(()=>S.pagination!==void 0),be=d(()=>S.remote??V.value.pagination?.remote??!1),xe=j((e=>{if(!e)return 10;if(e.defaultPageSize!==void 0)return e.defaultPageSize;let t=e.pageSizes?.[0];return typeof t==`number`?t:t?.value||10})(S.pagination)),Se=j(S.pagination?S.pagination.defaultPage??1:1),Ce=e=>{Se.value=e},we=e=>{xe.value=e},G=Dt({config:ve,data:()=>U.value,rowKey:N,rowKeyField:()=>typeof S.rowKey==`string`?S.rowKey:void 0,emit:k,columns:()=>I.value,renderLoading:()=>C(a,{size:32,label:H(`table.loading`)})}),Te=new Set;R(_e,e=>{if(!V.value.treeEnabled||!V.value.treeDefaultExpandAll){Te.clear();return}let t=e.filter(e=>!Te.has(e));e.forEach(e=>Te.add(e));let n=G.expandedKeys.value,r=t.filter(e=>!n.includes(e));r.length&&G.expandState?.handleExpandChange([...n,...r])},{immediate:!0});let Ee=Lt({actions:d(()=>P.value.actions||{}),config:V,tableManager:G,rowKey:N,onRowDeleted:(e,t)=>w(`row-delete`,e,t),isDeleteFeedbackHandled:e=>S.crud?.actions?.value.delete===e,onViewDetail:e=>k(`view-detail`,e)}),De=d(()=>{let{actions:e}=P.value;return!!(V.value.showRowActions||e?.delete||e?.detail||e?.custom?.length||e?.render)}),Oe=tn({rawColumns:I,config:V,get columnWidth(){return V.value.columnWidth},get columnWidthExplicit(){return S.virtualScrollX===!0||P.value.display?.columnWidth!==void 0},get scrollX(){return V.value.scrollX},rowKey:N,tableManager:G,actionsRenderer:Ee.renderActions,editModeChecker:de,showActionsColumn:De}),{showSettingsPanel:ke,reactiveColumns:Ae,computedColumns:je,computedScrollX:Me}=Oe,Ne=Ft({data:U,columns:Ae,remote:()=>W.value||V.value.pagination?.remote===!0}),Ie=Ft({data:U,columns:Ae,remote:be}),K=kt({data:Ne.processedData,config:d(()=>W.value?null:V.value.pagination),emit:k}),Le=d(()=>{if(W.value){let e=te.value?.getCurrentPageData?.();if(e)return e;let t=Ie.processedData.value;if(!S.pagination||be.value)return t;let n=S.pagination.pageSize??xe.value,r=Math.max(1,Math.min(S.pagination.page??Se.value,Math.ceil(t.length/Math.max(1,n))));return t.slice((r-1)*n,r*n)}return K.paginatedData.value}),Re=e=>{Ne.setSorter(e),Ie.setSorter(e)},ze=e=>{Ne.setFilters(e),Ie.setFilters(e),!W.value&&!V.value.pagination?.remote&&K.resetToFirstPage()},Be=oe(),q=d(()=>V.value.rowDrag!==void 0&&V.value.rowDrag.enabled!==!1&&!V.value.virtualScroll&&S.virtualScrollX!==!0),Ve=d(()=>{let e=Le.value,t=e.map(e=>[Ue(e,N),e]),n=new Set(t.map(([e])=>e));return t.some(([e])=>e===void 0)||n.size!==e.length?new Map:new Map(t)}),He=(e,t)=>{let n=Be.rowProps??Be[`row-props`],r=typeof n==`function`?n(e,t):void 0;if(!q.value)return r;let i=Ue(e,N);return{...r,"data-c-table-row-key":i!==void 0&&Ve.value.get(i)===e?i:void 0}},We,Ge=nn({data:Le,rowKey:N,config:d(()=>q.value?V.value.rowDrag:void 0),onReorder:e=>{let t=new Map(U.value.map((e,t)=>[N(e),t]));if(We=Le.value.map(e=>t.get(N(e))),W.value?be.value:V.value.pagination?.remote===!0){k(`update:data`,e);return}let n=[...U.value];We.forEach((t,r)=>{t!==void 0&&(n[t]=e[r])}),k(`update:data`,n)},onSort:(e,t,n)=>{let r=We?.[t]??t,i=We?.[n]??n;We=void 0,w(`row-move`,e,r,i)}}),J=rn({allData:U,rowKey:N,config:d(()=>V.value.crossPageSelection),remote:()=>W.value?be.value:V.value.pagination?.remote===!0,childrenKey:()=>V.value.treeEnabled?V.value.treeChildrenKey:void 0,rowCheckable:e=>V.value.rowCheckable?.(e)??!0,onSelectionChange:(e,t)=>w(`selection-change`,e,t,new Map)}),Y=d(()=>V.value.crossPageSelection?.enabled===!0),Je=d(()=>Y.value?J.selectedCount.value:G.checkedKeys?.value?.length??0),Ye=o(),Xe=async e=>{if(Ye.isRunning(e.key))return;let t=Y.value?[...J.selectedKeys.value]:G.checkedKeys?.value??[],n=new Set(t),r=Y.value?J.getSelectedRows():U.value.filter(e=>n.has(N(e)));try{if(!(await Ye.run(e.key,()=>e.onClick(t,r))).executed)return;V.value.batchActions?.clearSelectionOnSuccess&&Ze()}catch(t){V.value.batchActions?.onError?.(t,e.key),w(`batch-action-error`,t,e.key)}},Ze=()=>{Y.value?J.clearAll():G.stateManager.selection.clear()},Qe=d(()=>Y.value?J.getPageCheckedKeys(Le.value):null),$e=e=>{if(Y.value){J.handlePageSelectionChange(e,Le.value);return}G.expandState?.handleSelectionChange?.(e)},et=o(),tt=async()=>{let e=V.value.exportConfig??{};await et.run(`export`,async()=>{let t=()=>Y.value?J.getSelectedRows():G.stateManager.selection.getSelected(),n=e.scope===`page`?Le.value:U.value;await fn(e.requestData?await e.requestData():e.scope===`selected`?t():n,e.scope&&e.scope!==`source`?Ae.value:I.value,{...e,formatterConfig:V.value.formatterConfig})})},nt=d(()=>V.value.summaryRender),X=j(),rt=null,it=0,at=()=>{it+=1,rt?.destroy(),rt=null},ot=async()=>{let e=++it;if(rt?.destroy(),rt=null,!(!V.value.enableColumnDrag||!X.value))try{let{default:t}=await import(`sortablejs`);if(e!==it||!X.value)return;let n=X.value.querySelector(`.n-data-table-thead tr`);if(!n)return;rt=new t(n,{animation:V.value.columnDragAnimationDuration,handle:V.value.columnDragHandleClass?`.${V.value.columnDragHandleClass}`:void 0,filter:`.c-table-actions-column`,preventOnFilter:!0,ghostClass:`column-drag-ghost`,onEnd:e=>{if(e.oldIndex==null||e.newIndex==null)return;let t=[...Ae.value],n=t.filter(e=>e.visible!==!1&&e.key!==`_actions`),r=n[e.oldIndex],i=n[e.newIndex];if(!r||!i||r===i)return;let a=t.indexOf(r),o=t.indexOf(i);t.splice(a,1),t.splice(o,0,r),Oe.handleColumnChange(t),w(`column-change`,t)}})}catch{}},st=d(()=>({striped:V.value.striped,bordered:V.value.bordered,singleLine:V.value.singleLine,size:V.value.size,maxHeight:V.value.maxHeight,tableLayout:je.value.some(e=>e.type===`selection`||e.type===`expand`||e.key===`_index`)&&je.value.some(e=>!e.type&&!e.fixed&&e.key!==`_index`&&e.key!==`_actions`&&e.width===void 0)?`fixed`:void 0})),ct=j(),lt=j(!1),ut=j({}),dt=d({get:()=>G.editStates.modalEdit.isModalVisible.value,set:e=>{G.editStates.modalEdit.isModalVisible.value=e}}),ft=d(()=>I.value.filter(e=>e.editable!==!1)),pt=d(()=>`edit-form-${G.editStates.modalEdit.editingRowKey.value??`new`}`),mt=d(()=>Xt(ft.value));R(()=>G.editStates.modalEdit.editingData.value,e=>{e&&Object.keys(e).length>0&&(ut.value=l(e))},{immediate:!0,deep:!0});let Z=null;R(dt,e=>{e&&Z&&(clearTimeout(Z),Z=null),e||(Z&&clearTimeout(Z),Z=setTimeout(()=>{ut.value={},Z=null},300))});let ht=async()=>{if(!ct.value||lt.value)return;let e=G.editStates.modalEdit.editingRowKey.value,t=l(ut.value);lt.value=!0;try{try{await ct.value.validate()}catch{return}if(e!==G.editStates.modalEdit.editingRowKey.value||!c(t,ut.value))return;await G.editStates.modalEdit.saveEdit(t)}finally{lt.value=!1}},gt=()=>{ut.value={},G.editStates.modalEdit.cancelEdit()},_t=e=>{Oe.handleColumnChange(e),w(`column-change`,Oe.reactiveColumns.value)},{edit:vt,expand:yt,selection:bt,dynamicRows:Q}=G.stateManager,xt=()=>te.value?.getFilteredAndSortedData?.().length??Ie.processedData.value.length,St={startEdit:vt.start,cancelEdit:vt.cancel,saveEdit:()=>G.editStates.modalEdit.isModalVisible.value?ht():vt.save(),expandRow:yt.row,collapseRow:yt.collapse,toggleExpand:yt.toggle,retryExpand:e=>G.expandState.retryExpand(e),invalidateExpand:e=>G.expandState.invalidateExpand(e),expandAll:yt.all,collapseAll:yt.collapseAll,selectRow:e=>Y.value?J.select(e):(bt.select(e),bt.isSelected(e)),unselectRow:e=>{Y.value?J.unselect(e):bt.unselect(e)},selectAll:()=>{Y.value?J.selectAll():bt.all()},clearSelection:Ze,isRowSelected:e=>Y.value?J.isSelected(e):bt.isSelected(e),clearAllSelections:()=>{J.clearAll(),G.stateManager.clearAllSelections()},selectChildRow:G.stateManager.childSelection.select,unselectChildRow:G.stateManager.childSelection.unselect,selectAllChildren:G.stateManager.childSelection.selectAll,clearChildrenSelection:G.stateManager.childSelection.clear,getChildSelectedRows:G.stateManager.childSelection.getSelected,addRow:Q.add,insertRow:Q.insert,deleteRow:Q.delete,copyRow:Q.copy,moveRowUp:Q.moveUp,moveRowDown:Q.moveDown,clearRowSelection:Q?.clearSelection,getSelectedRowData:Q.getSelected,printTable:e=>Q.print(e??X.value),downloadTableScreenshot:(e,t)=>Q.download(e??X.value,t),resetToFirstPage:()=>{W.value?(Se.value=1,te.value?.page(1)):K.resetToFirstPage()},getTotalPages:()=>{if(!W.value)return K.getTotalPages();let e=S.pagination;if(!e)return 1;if(be.value&&e.itemCount===void 0&&e.pageCount!==void 0)return Math.max(1,e.pageCount);let t=be.value?e.itemCount??U.value.length:xt(),n=e.pageSize??xe.value;return Math.max(1,Math.ceil(t/Math.max(1,n)))},getSelectedRows:()=>Y.value?J.getSelectedRows():bt.getSelected(),getEditingData:vt.getEditingData,isEditing:vt.isEditing,isExpanded:yt.isExpanded,getManager:()=>G.stateManager,exportData:tt,crossPageSelection:{enabled:Y,selectedKeys:J.selectedKeys,selectedCount:J.selectedCount,select:J.select,unselect:J.unselect,selectAll:J.selectAll,clearAll:J.clearAll,getSelectedRows:J.getSelectedRows}};return i(St),O(()=>{let e=S.crud?.tableRef;e&&(e.value=St),ot(),X.value&&Ge.initRowDrag(X.value)}),R([()=>V.value.enableColumnDrag,()=>V.value.columnDragHandleClass,()=>ge.value,()=>je.value.length],async()=>{await E(),await ot()},{immediate:!0,flush:`post`}),R([()=>V.value.rowDrag,q,()=>ge.value,()=>Le.value.length,()=>K.currentPage.value],async()=>{await E(),X.value&&await Ge.initRowDrag(X.value)},{immediate:!0,deep:!0,flush:`post`}),ne(()=>{Z&&clearTimeout(Z),at(),Ge.destroyRowDrag()}),(t,n)=>(A(),m(`div`,{ref_key:`tableWrapperRef`,ref:X,class:D([`c-table-wrapper`,[e.wrapperClass,{"c-table-wrapper--flex":e.flexHeight},V.value.density&&`c-table-wrapper--${V.value.density}`]]),"aria-busy":ge.value},[p(` 动态行工具栏 `),V.value.dynamicRows&&L(G).dynamicRowsState?(A(),f(ae(L(G).dynamicRowsState.renderToolbar(X.value)),{key:0})):p(`v-if`,!0),p(` 表格工具栏 `),V.value.showToolbar?(A(),m(`div`,Ln,[h(`div`,Rn,[M(t.$slots,`toolbar-left`,{},void 0,!0),V.value.toolbarActions.length?(A(),f(s,{key:0,actions:V.value.toolbarActions,config:{...V.value.toolbarActionBarConfig}},null,8,[`actions`,`config`])):p(`v-if`,!0)]),h(`div`,zn,[M(t.$slots,`toolbar-right`,{},void 0,!0),V.value.toolbarRightActions.length?(A(),f(s,{key:0,actions:V.value.toolbarRightActions,config:{align:`right`,...V.value.toolbarActionBarConfig}},null,8,[`actions`,`config`])):p(`v-if`,!0),V.value.exportConfig?(A(),f(r,{key:1,name:`mdi:download`,size:`18`,title:L(H)(`table.export`),clickable:``,class:`column-settings-btn`,onClick:n[0]||=e=>tt()},null,8,[`title`])):p(`v-if`,!0),V.value.enableColumnSettings?(A(),f(r,{key:2,name:`mdi:cog`,size:`18`,title:L(H)(`table.settings`),clickable:``,class:`column-settings-btn`,onClick:n[1]||=e=>ke.value=!0},null,8,[`title`])):p(`v-if`,!0)])])):p(`v-if`,!0),p(` 批量操作栏 `),V.value.batchActions?.enabled&&Je.value>0?(A(),m(`div`,Bn,[h(`span`,Vn,F(L(H)(`table.selectedCount`,{count:Je.value})),1),v(L(he),{size:8},{default:z(()=>[(A(!0),m(u,null,ie(V.value.batchActions.actions||[],e=>(A(),f(L(B),{key:e.key,type:e.type||`default`,size:V.value.controlSize,loading:L(Ye).isRunning(e.key),disabled:L(Ye).isRunning(e.key),onClick:t=>Xe(e)},g({default:z(()=>[_(` `+F(e.label),1)]),_:2},[e.icon?{name:`icon`,fn:z(()=>[v(r,{name:e.icon,size:`14`},null,8,[`name`])]),key:`0`}:void 0]),1032,[`type`,`size`,`loading`,`disabled`,`onClick`]))),128)),v(L(B),{size:V.value.controlSize,onClick:Ze},{default:z(()=>[_(F(L(H)(`table.cancelSelection`)),1)]),_:1},8,[`size`])]),_:1})])):p(`v-if`,!0),p(` 错误状态 `),V.value.error?.show?(A(),m(`div`,Hn,[M(t.$slots,`error`,{error:V.value.error},()=>[h(`div`,Un,[v(r,{name:`mdi:alert-circle-outline`,size:`48`}),h(`p`,Wn,F(V.value.error.message||L(H)(`table.loadFailed`)),1),V.value.error.onRetry?(A(),f(L(B),{key:0,type:`primary`,size:V.value.controlSize,onClick:V.value.error.onRetry},{default:z(()=>[_(F(L(H)(`common.retry`)),1)]),_:1},8,[`size`,`onClick`])):p(`v-if`,!0)])],!0)])):p(`v-if`,!0),p(` 表格主体 `),V.value.error?.show?p(`v-if`,!0):(A(),f(L(ce),T({key:4,ref_key:`tableRef`,ref:te},{...st.value,...t.$attrs},{"flex-height":e.flexHeight,columns:L(je),data:W.value?U.value:L(K).paginatedData.value,pagination:W.value?S.pagination:!1,remote:W.value?be.value:!0,"onUpdate:sorter":Re,"onUpdate:filters":ze,"onUpdate:pageSize":we,"onUpdate:page":Ce,loading:ge.value,"row-key":N,"row-props":He,"expanded-row-keys":L(G).expandedKeys.value,"checked-row-keys":Qe.value??L(G).checkedKeys.value,"onUpdate:expandedRowKeys":L(G).expandState?.handleExpandChange,"onUpdate:checkedRowKeys":$e,"scroll-x":L(Me),"virtual-scroll":V.value.virtualScroll,"virtual-scroll-x":S.virtualScrollX,"min-row-height":V.value.virtualScroll?V.value.virtualItemHeight:void 0,"max-height":V.value.virtualScroll?V.value.virtualMaxHeight:V.value.maxHeight,summary:nt.value,"summary-placement":V.value.summaryPosition,"children-key":V.value.treeEnabled?V.value.treeChildrenKey:void 0,indent:V.value.treeEnabled?V.value.treeIndent:void 0,"default-expand-all":V.value.treeEnabled?V.value.treeDefaultExpandAll:void 0,style:{width:`100%`}}),{loading:z(()=>[M(t.$slots,`loading`,{},()=>[v(L(a),{label:L(H)(`table.loading`)},null,8,[`label`])],!0)]),_:3},16,[`flex-height`,`columns`,`data`,`pagination`,`remote`,`loading`,`expanded-row-keys`,`checked-row-keys`,`onUpdate:expandedRowKeys`,`scroll-x`,`virtual-scroll`,`virtual-scroll-x`,`min-row-height`,`max-height`,`summary`,`summary-placement`,`children-key`,`indent`,`default-expand-all`])),p(` 分页 `),!W.value&&L(K).paginationConfig.value?(A(),f(L(me),T({key:5},L(K).paginationConfig.value,{class:`pagination-wrapper`}),null,16)):p(`v-if`,!0),p(` 编辑弹窗 `),V.value.editMode===`modal`||V.value.editMode===`both`?(A(),f(L(pe),{key:6,show:dt.value,"onUpdate:show":n[3]||=e=>dt.value=e,title:V.value.modalTitle,width:V.value.modalWidth,preset:`card`,"mask-closable":!1,"close-on-esc":!1,class:`w60%`,closable:!1},{action:z(()=>[v(L(he),{justify:`end`},{default:z(()=>[v(L(B),{size:V.value.density?V.value.controlSize:`medium`,disabled:lt.value,onClick:gt},{default:z(()=>[_(F(L(H)(`common.cancel`)),1)]),_:1},8,[`size`,`disabled`]),v(L(B),{type:`primary`,size:V.value.density?V.value.controlSize:`medium`,disabled:!ct.value||lt.value,loading:lt.value,onClick:ht},{default:z(()=>[_(F(L(H)(`common.save`)),1)]),_:1},8,[`size`,`disabled`,`loading`])]),_:1})]),default:z(()=>[dt.value&&mt.value.length?(A(),f(L(x),{ref_key:`editFormRef`,ref:ct,key:pt.value,modelValue:ut.value,"onUpdate:modelValue":n[2]||=e=>ut.value=e,options:mt.value,config:{layout:`grid`,density:V.value.density,grid:{cols:2,...V.value.density?{}:{xGap:16,yGap:16}},showActions:!1}},null,8,[`modelValue`,`options`,`config`])):p(`v-if`,!0)]),_:1},8,[`show`,`title`,`width`])):p(`v-if`,!0),p(` 动态行确认删除弹窗 `),V.value.dynamicRows&&L(G).dynamicRowsState?(A(),f(ae(L(G).dynamicRowsState.renderConfirmModal()),{key:7})):p(`v-if`,!0),p(` 列设置抽屉 `),v(L(le),{show:L(ke),"onUpdate:show":n[4]||=e=>ee(ke)?ke.value=e:null,width:420,placement:`right`,"mask-closable":!0},{default:z(()=>[v(L(ue),{title:L(H)(`table.columnSettings`),closable:``},{default:z(()=>[v(Fn,{columns:L(Ae),"persist-key":V.value.persistKey,onChange:_t},null,8,[`columns`,`persist-key`])]),_:1},8,[`title`])]),_:1},8,[`show`])],10,In))}}),[[`__scopeId`,`data-v-f168596c`]]);const Kn=(e,t)=>Number.isFinite(e)?Math.max(1,Math.floor(e)):t;function qn(e){let t=P([]),n=j(!1),r=P(),i=j(0),a=l(e.initialQuery),o=j(Kn(e.initialPage,1)),s=j(Kn(e.pageSize,20)),c=P(l(a)),u=0,f=null,p=async()=>{let a=++u;f?.abort(),f=new AbortController,n.value=!0,r.value=void 0;try{let n=await e.request({page:o.value,pageSize:s.value,query:l(c.value),signal:f.signal});if(a!==u||f.signal.aborted)return!1;if(!Array.isArray(n.data)||!Number.isFinite(n.total))throw TypeError(`[C_Table] request 必须返回 { data: T[], total: number }`);return t.value=l([...n.data]),i.value=Math.max(0,Math.floor(n.total)),e.onSuccess?.({data:t.value,total:i.value}),!0}catch(t){return a!==u||f.signal.aborted?!1:(r.value=t,e.onError?.(t),!1)}finally{a===u&&(n.value=!1)}},m=async(e,t=!0)=>(c.value=l(typeof e==`function`?e(c.value):{...c.value,...e}),o.value=1,t?p():!0),h=async(e,t)=>(o.value=Kn(e,o.value),s.value=Kn(t,s.value),p()),g=async(e=!0)=>(c.value=l(a),o.value=1,e?p():!0),_=d(()=>{let r=I(e.config)??{},a=typeof r.pagination==`object`?r.pagination:{};return{data:t.value,loading:n.value,columns:I(e.columns),rowKey:e.rowKey??`id`,config:{...r,pagination:{...a,enabled:!0,remote:!0,page:o.value,pageSize:s.value,total:i.value}}}}),v=d(()=>({..._.value,onPaginationChange:h})),y=()=>{u+=1,f?.abort(),f=null,n.value=!1};return e.immediate!==!1&&O(()=>void p()),k(y),{data:t,loading:n,error:r,total:i,page:o,pageSize:s,query:c,tableProps:_,execute:p,reload:p,setQuery:m,resetQuery:g,handlePaginationChange:h,bindings:v,cancel:y}}export{Be as C,Ve as S,Pe as T,at as _,nn as a,Ke as b,Ut as c,Lt as d,kt as f,xt as g,St as h,rn as i,Kt as l,Et as m,Gn as n,tn as o,Dt as p,fn as r,Rt as s,qn as t,Wt as u,J as v,Fe as w,He as x,Y as y};
|
|
@@ -59,11 +59,10 @@ declare const __VLS_export: vue.DefineComponent<TimeProps, TimeExpose, {}, {}, {
|
|
|
59
59
|
"onChange-end"?: ((time: number | null) => any) | undefined;
|
|
60
60
|
}>, {
|
|
61
61
|
placeholder: string;
|
|
62
|
-
format: string;
|
|
63
62
|
mode: TimeMode;
|
|
64
|
-
attrs: Record<string, any>;
|
|
65
63
|
startPlaceholder: string;
|
|
66
64
|
endPlaceholder: string;
|
|
65
|
+
format: string;
|
|
67
66
|
useHours: boolean;
|
|
68
67
|
useMinutes: boolean;
|
|
69
68
|
useSeconds: boolean;
|
|
@@ -72,6 +71,7 @@ declare const __VLS_export: vue.DefineComponent<TimeProps, TimeExpose, {}, {}, {
|
|
|
72
71
|
secondStep: number;
|
|
73
72
|
startTimeProps: Record<string, any>;
|
|
74
73
|
endTimeProps: Record<string, any>;
|
|
74
|
+
attrs: Record<string, any>;
|
|
75
75
|
defaultStartTime: number | null;
|
|
76
76
|
defaultEndTime: number | null;
|
|
77
77
|
defaultSingleTime: number | null;
|