@dazhicheng/ui 1.5.42 → 1.5.43

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.
@@ -12,4 +12,4 @@ type TtExtendedFormApi = ExtendedFormApi;
12
12
  export type { BaseFormComponentMap, BaseFormComponentType, FormSlotSchema, InferredComponentPropsType, TtExtendedFormApi, TtFormProps, TtFormRenderProps, TtFormSchema, };
13
13
  export * as z from 'zod';
14
14
  export { useGroupForm } from './src/group-form';
15
- export type { FormGroupSchema, GroupFormSchema, UseGroupFormOptions } from './src/group-form';
15
+ export type { FormGroupSchema, GroupFormNavAnchorProps, GroupFormSchema, UseGroupFormNavAnchorProps, UseGroupFormOptions, } from './src/group-form';
@@ -1,4 +1,4 @@
1
- import { GroupFormSchema, GroupFormSectionProps } from './types';
1
+ import { GroupFormSectionProps } from './types';
2
2
  /**
3
3
  * @description 滚动到指定分组(通过 data-group-key 定位 DOM)。
4
4
  * 滚动期间暂停 LazyFormField 渲染,滚动结束后才恢复,
@@ -22,21 +22,7 @@ declare const __VLS_component: import('vue').DefineComponent<GroupFormSectionPro
22
22
  title: string;
23
23
  }[]>;
24
24
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<GroupFormSectionProps> & Readonly<{}>, {
25
- scrollToFirstError: boolean;
26
25
  commonConfig: import('../types').FormCommonConfig;
27
- compact: boolean;
28
- layout: import('../types').FormLayout;
29
- virtual: boolean;
30
- containerHeight: number | string;
31
- rootMargin: string;
32
- estimateFieldHeight: number;
33
- showNav: boolean;
34
- navTitle: string;
35
- autoScrollToGroup: import('./types').AutoScrollPosition;
36
- groupSchema: GroupFormSchema[];
37
- errorCacheMap: Map<string, string>;
38
- resetSignal: import('vue').Ref<number>;
39
- navErrorCounts: Record<string, number>;
40
26
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
41
27
  scrollRef: HTMLDivElement;
42
28
  }, any>;
@@ -1,7 +1,7 @@
1
1
  import { FormState, GenericObject, ResetFormOpts, ValidationOptions } from 'vee-validate';
2
2
  import { FormApi } from '../formApi';
3
3
  import { TtFormProps } from '../types';
4
- import { GroupFormApiOptions, GroupFormSchema } from './types';
4
+ import { AutoScrollPosition, GroupFormApiOptions, GroupFormSchema, UseGroupFormNavAnchorProps } from './types';
5
5
  import { InsertPosition } from './utils';
6
6
  /**
7
7
  * @description 分组表单 API 类,继承 {@link FormApi},封装分组场景下的校验、导航错误计数、
@@ -9,10 +9,18 @@ import { InsertPosition } from './utils';
9
9
  export declare class GroupFormApi extends FormApi {
10
10
  /** 是否启用虚拟化(IntersectionObserver 懒渲染) */
11
11
  readonly enableVirtual: boolean;
12
- /** 是否显示悬浮导航锚点 */
13
- readonly showNav: boolean;
12
+ /** 导航锚点配置(含 show、title 等),由构造参数合并默认值后保存 */
13
+ readonly navAnchorProps: Required<Pick<UseGroupFormNavAnchorProps, "show">> & UseGroupFormNavAnchorProps;
14
14
  /** 校验失败时是否自动滚动到第一个有错误的分组 */
15
15
  readonly enableScrollToFirstError: boolean;
16
+ /** 滚动容器高度 */
17
+ readonly containerHeight: number | string;
18
+ /** IntersectionObserver rootMargin */
19
+ readonly rootMargin: string;
20
+ /** 预估每个表单项高度(px) */
21
+ readonly estimateFieldHeight: number;
22
+ /** 初始化后自动滚动到的分组位置 */
23
+ readonly autoScrollToGroup: AutoScrollPosition;
16
24
  /** 各分组折叠状态(key → 是否折叠) */
17
25
  readonly collapseStates: Record<string, boolean>;
18
26
  /** 导航各分组的错误数量,validate 后自动更新 */
@@ -1,4 +1,4 @@
1
1
  export { GroupFormApi } from './groupFormApi';
2
2
  export { useGroupForm } from './useGroupForm';
3
- export type { FormGroupSchema, FormRowSchema, GroupFormApiOptions, GroupFormSchema, UseGroupFormOptions, } from './types';
3
+ export type { FormGroupSchema, FormRowSchema, GroupFormApiOptions, GroupFormNavAnchorProps, GroupFormSchema, UseGroupFormNavAnchorProps, UseGroupFormOptions, } from './types';
4
4
  export { isGroupSchema, isRowSchema, isSlotSchema, extractFlatSchemas } from './utils';
@@ -1,5 +1,5 @@
1
1
  import { ExtendedFormApi, FormActions, FormCommonConfig, FormLayout, FormSchema, FormSlotSchema, TtFormProps, WrapperClassType } from '../types';
2
- import { Ref } from 'vue';
2
+ import { TtNavAnchorProps } from '../../../tt-nav-anchor';
3
3
  export type CollapsibleType = boolean | ((values: Record<string, any>, actions: FormActions) => boolean | PromiseLike<boolean>);
4
4
  /** 控制 group / row / slot 是否显示,支持布尔值或函数(接收表单值与 formActions,可返回 Promise) */
5
5
  export type IfShowConditionType = boolean | ((values: Record<string, any>, actions: FormActions) => boolean | PromiseLike<boolean>);
@@ -41,10 +41,25 @@ export interface FormRowSchema {
41
41
  ifShow?: IfShowConditionType;
42
42
  }
43
43
  export type GroupFormSchema = FormGroupSchema | FormRowSchema | FormSlotSchema | FormSchema;
44
+ /**
45
+ * 导航锚点基础配置:排除由内部维护的 `items` 与 `modelValue`,增加 `show` 控制是否渲染。
46
+ * @property {boolean} [show] - 是否显示悬浮导航,默认 true
47
+ */
48
+ type NavAnchorPropsBase = Omit<Partial<TtNavAnchorProps>, "items" | "modelValue"> & {
49
+ show?: boolean;
50
+ };
51
+ /**
52
+ * useGroupForm 调用方传入的导航配置;`badgeCounts` 由 formApi 内部注入,调用方无需传入。
53
+ */
54
+ export type UseGroupFormNavAnchorProps = Omit<NavAnchorPropsBase, "badgeCounts">;
55
+ /**
56
+ * VirtualGroupForm 组件接收的导航配置;`badgeCounts` 由 useGroupForm 绑定 `api.navErrorCounts` 注入。
57
+ */
58
+ export type GroupFormNavAnchorProps = NavAnchorPropsBase;
44
59
  /** 分组表单组件选项 */
45
60
  export interface UseGroupFormOptions extends Omit<TtFormProps, "schema" | "showDefaultActions"> {
46
61
  schema: GroupFormSchema[];
47
- /** 是否启用表单项级别的虚拟化(IntersectionObserver 懒渲染),默认 true */
62
+ /** 是否启用虚拟化,默认 true */
48
63
  virtual?: boolean;
49
64
  /** 滚动容器高度,默认 '100%' */
50
65
  containerHeight?: number | string;
@@ -52,10 +67,11 @@ export interface UseGroupFormOptions extends Omit<TtFormProps, "schema" | "showD
52
67
  rootMargin?: string;
53
68
  /** 预估每个表单项高度(px),用于占位,默认 52(仅 virtual 为 true 时生效) */
54
69
  estimateFieldHeight?: number;
55
- /** 是否显示悬浮导航锚点,默认 true */
56
- showNav?: boolean;
57
- /** 导航栏标题,默认 '导航' */
58
- navTitle?: string;
70
+ /**
71
+ * 悬浮导航锚点:是否显示、标题、定位等;默认 `{ show: true, title: '导航' }`。
72
+ * `badgeCounts` formApi 维护,无需在此传入。
73
+ */
74
+ navAnchorProps?: UseGroupFormNavAnchorProps;
59
75
  /** 自动滚动到指定分组,默认 'top' */
60
76
  autoScrollToGroup?: AutoScrollPosition;
61
77
  /** 校验失败时是否自动滚动到第一个有错误的分组,默认 true */
@@ -80,44 +96,21 @@ export interface LazyFormFieldProps {
80
96
  /** 骨架屏是否开启动画,默认 true */
81
97
  skeletonAnimated?: boolean;
82
98
  }
83
- /** 分组表单组件 props */
99
+ /**
100
+ * 分组表单组件 props:仅保留 `formApi`(数据入口)和少量模板侧可覆盖项。
101
+ * 其余内部数据(collapseStates、errorCacheMap、resetSignal、virtual 等)均从 `formApi`(GroupFormApi 实例)读取。
102
+ */
84
103
  export interface GroupFormSectionProps {
85
- /** 分组表单定义(可选,优先从 store 读取) */
86
- groupSchema?: GroupFormSchema[];
87
- /** 表单 API */
104
+ /** 表单 API(必传,所有内部数据的入口) */
88
105
  formApi: ExtendedFormApi;
89
- /** 分组折叠状态 */
90
- collapseStates: Record<string, boolean>;
91
- /** 滚动容器高度 */
92
- containerHeight?: number | string;
93
- /** 通用配置 */
94
- commonConfig?: FormCommonConfig;
95
- /** 布局 */
106
+ /** 模板侧覆盖:导航锚点配置(与 api.navAnchorProps 合并,模板优先) */
107
+ navAnchorProps?: GroupFormNavAnchorProps;
108
+ /** 模板侧覆盖:布局方向 */
96
109
  layout?: FormLayout;
97
- /** 紧凑模式 */
110
+ /** 模板侧覆盖:紧凑模式 */
98
111
  compact?: boolean;
99
- /** IntersectionObserver rootMargin,控制提前渲染距离 */
100
- rootMargin?: string;
101
- /** 预估每个表单项高度(px) */
102
- estimateFieldHeight?: number;
103
- /** 是否启用表单项级别的虚拟化,默认 true */
104
- virtual?: boolean;
105
- /** 共享的字段错误缓存,由 useGroupForm 创建 */
106
- errorCacheMap?: Map<string, string>;
107
- /** 重置信号,由 useGroupForm 创建 */
108
- resetSignal?: Ref<number>;
109
- /** 是否显示悬浮导航 */
110
- showNav?: boolean;
111
- /** 导航标题 */
112
- navTitle?: string;
113
- /** 导航各分组错误数量 */
114
- navErrorCounts?: Record<string, number>;
115
- /** 自动滚动到指定分组 */
116
- autoScrollToGroup?: AutoScrollPosition;
117
- /** 校验失败时是否自动滚动到第一个有错误的分组,默认 true */
118
- scrollToFirstError?: boolean;
119
- /** 切换分组折叠状态 */
120
- toggleCollapse?: (key: string) => void;
112
+ /** 模板侧覆盖:通用配置(与 store.commonConfig 合并) */
113
+ commonConfig?: FormCommonConfig;
121
114
  }
122
115
  /** GroupSection 递归组件 props */
123
116
  export interface GroupSectionProps {
@@ -149,16 +142,29 @@ export type AutoScrollPosition = "top" | "bottom";
149
142
  * @description GroupFormApi 构造函数的分组配置选项
150
143
  * @property {GroupFormSchema[]} groupSchema - 分组 schema 树形结构
151
144
  * @property {boolean} [enableVirtual] - 是否启用虚拟化(IntersectionObserver 懒渲染),默认 true
152
- * @property {boolean} [showNav] - 是否显示悬浮导航锚点,默认 true
145
+ * @property {UseGroupFormNavAnchorProps} [navAnchorProps] - 导航锚点配置(含 show、title 等),默认 `{ show: true }`
153
146
  * @property {boolean} [enableScrollToFirstError] - 校验失败时是否自动滚动到第一个有错误的分组,默认 true
147
+ * @property {number | string} [containerHeight] - 滚动容器高度,默认 '100%'
148
+ * @property {string} [rootMargin] - IntersectionObserver rootMargin,默认 '400px 0px'
149
+ * @property {number} [estimateFieldHeight] - 预估每个表单项高度(px),默认 52
150
+ * @property {AutoScrollPosition} [autoScrollToGroup] - 初始化后自动滚动到的分组位置,默认 'top'
154
151
  */
155
152
  export interface GroupFormApiOptions {
156
153
  /** 分组 schema 树形结构 */
157
154
  groupSchema: GroupFormSchema[];
158
155
  /** 是否启用虚拟化(IntersectionObserver 懒渲染),默认 true */
159
156
  enableVirtual?: boolean;
160
- /** 是否显示悬浮导航锚点,默认 true */
161
- showNav?: boolean;
157
+ /** 导航锚点配置(含 show、title 等),默认 `{ show: true }`;`items`、`modelValue`、`badgeCounts` 由内部注入 */
158
+ navAnchorProps?: UseGroupFormNavAnchorProps;
162
159
  /** 校验失败时是否自动滚动到第一个有错误的分组,默认 true */
163
160
  enableScrollToFirstError?: boolean;
161
+ /** 滚动容器高度,默认 '100%' */
162
+ containerHeight?: number | string;
163
+ /** IntersectionObserver rootMargin,控制提前渲染的距离,默认 '400px 0px' */
164
+ rootMargin?: string;
165
+ /** 预估每个表单项高度(px),用于占位,默认 52 */
166
+ estimateFieldHeight?: number;
167
+ /** 初始化后自动滚动到的分组位置,默认 'top' */
168
+ autoScrollToGroup?: AutoScrollPosition;
164
169
  }
170
+ export {};
@@ -1,15 +1,7 @@
1
+ import { DefineComponent } from 'vue';
1
2
  import { ExtendedFormApi } from '../types';
2
3
  import { UseGroupFormOptions } from './types';
3
4
  /**
4
- * @description 创建分组表单:返回可渲染的包装组件、扩展后的表单 API,以及分组折叠状态对象。
5
- * @param {UseGroupFormOptions} options - 分组 schema 与表单配置;`schema` 为树形结构,内部会展平后写入底层 store
6
- * @returns {readonly [import("vue").DefineComponent, ExtendedFormApi, Record<string, boolean>]} 元组:`[GroupForm, formApi, collapseStates]`
7
- * @example
8
- * const [GroupForm, formApi] = useGroupForm({
9
- * schema: [{ type: "group", key: "basic", title: "基础", children: [{ fieldName: "name", component: "ElInput", label: "姓名" }] }],
10
- * layout: "horizontal",
11
- * });
5
+ * @description 返回可渲染的包装组件、扩展后的表单 API,以及分组折叠状态对象。
12
6
  */
13
- export declare function useGroupForm(options: UseGroupFormOptions): readonly [import('vue').DefineComponent<{}, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
14
- [key: string]: any;
15
- }>, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>, ExtendedFormApi, Record<string, boolean>];
7
+ export declare function useGroupForm(options: UseGroupFormOptions): readonly [DefineComponent<Partial<Omit<UseGroupFormOptions, "schema">>>, ExtendedFormApi];
@@ -1,7 +1,7 @@
1
- export declare const TtNavAnchor: import('../../../../utils/src').SFCWithInstall<import('vue').DefineComponent<import('./src/types').TtNavAnchorProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
1
+ export declare const TtNavAnchor: import('../../../../utils/src').SFCWithInstall<import('vue').DefineComponent<import('.').TtNavAnchorProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
2
2
  change: (key: string) => any;
3
3
  "update:modelValue": (key: string) => any;
4
- }, string, import('vue').PublicProps, Readonly<import('./src/types').TtNavAnchorProps> & Readonly<{
4
+ }, string, import('vue').PublicProps, Readonly<import('.').TtNavAnchorProps> & Readonly<{
5
5
  onChange?: ((key: string) => any) | undefined;
6
6
  "onUpdate:modelValue"?: ((key: string) => any) | undefined;
7
7
  }>, {
@@ -15,5 +15,5 @@ export declare const TtNavAnchor: import('../../../../utils/src').SFCWithInstall
15
15
  navRef: HTMLDivElement;
16
16
  headerRef: HTMLDivElement;
17
17
  }, any>> & Record<string, any>;
18
- export type { NavAnchorItem } from './src/types';
18
+ export type { NavAnchorItem, TtNavAnchorProps } from './src/types';
19
19
  export default TtNavAnchor;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * 导航锚点根节点宽度(px)。
3
+ */
4
+ export declare const TT_NAV_ANCHOR_ROOT_WIDTH_PX = 164;
@@ -29,6 +29,10 @@ export declare const TtUpload: import('../../../../utils/src').SFCWithInstall<im
29
29
  readonly type: import('vue').PropType<(file: File) => Promise<import('.').OssSignatureResult>>;
30
30
  readonly default: undefined;
31
31
  };
32
+ readonly uploadOssViewApi: {
33
+ readonly type: import('vue').PropType<(key: string) => Promise<string>>;
34
+ readonly default: undefined;
35
+ };
32
36
  readonly uploadTip: {
33
37
  readonly type: import('vue').PropType<string>;
34
38
  readonly default: "可以上传pdf、excel、word、图片格式";
@@ -211,6 +215,10 @@ export declare const TtUpload: import('../../../../utils/src').SFCWithInstall<im
211
215
  readonly type: import('vue').PropType<(file: File) => Promise<import('.').OssSignatureResult>>;
212
216
  readonly default: undefined;
213
217
  };
218
+ readonly uploadOssViewApi: {
219
+ readonly type: import('vue').PropType<(key: string) => Promise<string>>;
220
+ readonly default: undefined;
221
+ };
214
222
  readonly uploadTip: {
215
223
  readonly type: import('vue').PropType<string>;
216
224
  readonly default: "可以上传pdf、excel、word、图片格式";
@@ -390,6 +398,7 @@ export declare const TtUpload: import('../../../../utils/src').SFCWithInstall<im
390
398
  readonly accept: string;
391
399
  readonly modal: boolean;
392
400
  readonly uploadOssApi: (file: File) => Promise<import('.').OssSignatureResult>;
401
+ readonly uploadOssViewApi: (key: string) => Promise<string>;
393
402
  readonly uploadTip: string;
394
403
  readonly maxSize: number;
395
404
  readonly showFileList: boolean;
@@ -1,4 +1,3 @@
1
- import { UploadFile, UploadFiles } from 'element-plus';
2
1
  import { SlotsType, VNode } from 'vue';
3
2
  import { OssSignatureResult, TtUploadFileItem } from './typing';
4
3
  declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
@@ -30,6 +29,10 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
30
29
  readonly type: import('vue').PropType<(file: File) => Promise<OssSignatureResult>>;
31
30
  readonly default: undefined;
32
31
  };
32
+ readonly uploadOssViewApi: {
33
+ readonly type: import('vue').PropType<(key: string) => Promise<string>>;
34
+ readonly default: undefined;
35
+ };
33
36
  readonly uploadTip: {
34
37
  readonly type: import('vue').PropType<string>;
35
38
  readonly default: "可以上传pdf、excel、word、图片格式";
@@ -84,62 +87,62 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
84
87
  readonly prototype: any;
85
88
  })[], unknown, unknown, () => void, boolean>;
86
89
  readonly beforeRemove: {
87
- readonly type: import('vue').PropType<(uploadFile: UploadFile, uploadFiles: UploadFiles) => import('element-plus/es/utils/typescript.mjs').Awaitable<boolean>>;
90
+ readonly type: import('vue').PropType<(uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => import('element-plus/es/utils/typescript.mjs').Awaitable<boolean>>;
88
91
  readonly required: false;
89
92
  readonly validator: ((val: unknown) => boolean) | undefined;
90
93
  __epPropKey: true;
91
94
  };
92
- readonly onRemove: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
93
- (): (uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
95
+ readonly onRemove: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | (() => (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | {
96
+ (): (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
94
97
  new (): any;
95
98
  readonly prototype: any;
96
- } | ((new (...args: any[]) => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
97
- (): (uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
99
+ } | ((new (...args: any[]) => (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | (() => (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | {
100
+ (): (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
98
101
  new (): any;
99
102
  readonly prototype: any;
100
103
  })[], unknown, unknown, () => void, boolean>;
101
- readonly onChange: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
102
- (): (uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
104
+ readonly onChange: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | (() => (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | {
105
+ (): (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
103
106
  new (): any;
104
107
  readonly prototype: any;
105
- } | ((new (...args: any[]) => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
106
- (): (uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
108
+ } | ((new (...args: any[]) => (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | (() => (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | {
109
+ (): (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
107
110
  new (): any;
108
111
  readonly prototype: any;
109
112
  })[], unknown, unknown, () => void, boolean>;
110
- readonly onPreview: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (uploadFile: UploadFile) => void) | (() => (uploadFile: UploadFile) => void) | {
111
- (): (uploadFile: UploadFile) => void;
113
+ readonly onPreview: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (uploadFile: import('element-plus').UploadFile) => void) | (() => (uploadFile: import('element-plus').UploadFile) => void) | {
114
+ (): (uploadFile: import('element-plus').UploadFile) => void;
112
115
  new (): any;
113
116
  readonly prototype: any;
114
- } | ((new (...args: any[]) => (uploadFile: UploadFile) => void) | (() => (uploadFile: UploadFile) => void) | {
115
- (): (uploadFile: UploadFile) => void;
117
+ } | ((new (...args: any[]) => (uploadFile: import('element-plus').UploadFile) => void) | (() => (uploadFile: import('element-plus').UploadFile) => void) | {
118
+ (): (uploadFile: import('element-plus').UploadFile) => void;
116
119
  new (): any;
117
120
  readonly prototype: any;
118
121
  })[], unknown, unknown, () => void, boolean>;
119
- readonly onSuccess: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
120
- (): (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
122
+ readonly onSuccess: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (response: any, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | (() => (response: any, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | {
123
+ (): (response: any, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
121
124
  new (): any;
122
125
  readonly prototype: any;
123
- } | ((new (...args: any[]) => (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
124
- (): (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
126
+ } | ((new (...args: any[]) => (response: any, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | (() => (response: any, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | {
127
+ (): (response: any, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
125
128
  new (): any;
126
129
  readonly prototype: any;
127
130
  })[], unknown, unknown, () => void, boolean>;
128
- readonly onProgress: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (evt: import('element-plus').UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (evt: import('element-plus').UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
129
- (): (evt: import('element-plus').UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
131
+ readonly onProgress: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (evt: import('element-plus').UploadProgressEvent, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | (() => (evt: import('element-plus').UploadProgressEvent, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | {
132
+ (): (evt: import('element-plus').UploadProgressEvent, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
130
133
  new (): any;
131
134
  readonly prototype: any;
132
- } | ((new (...args: any[]) => (evt: import('element-plus').UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (evt: import('element-plus').UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
133
- (): (evt: import('element-plus').UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
135
+ } | ((new (...args: any[]) => (evt: import('element-plus').UploadProgressEvent, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | (() => (evt: import('element-plus').UploadProgressEvent, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | {
136
+ (): (evt: import('element-plus').UploadProgressEvent, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
134
137
  new (): any;
135
138
  readonly prototype: any;
136
139
  })[], unknown, unknown, () => void, boolean>;
137
- readonly onError: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
138
- (): (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
140
+ readonly onError: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (error: Error, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | (() => (error: Error, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | {
141
+ (): (error: Error, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
139
142
  new (): any;
140
143
  readonly prototype: any;
141
- } | ((new (...args: any[]) => (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
142
- (): (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
144
+ } | ((new (...args: any[]) => (error: Error, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | (() => (error: Error, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | {
145
+ (): (error: Error, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
143
146
  new (): any;
144
147
  readonly prototype: any;
145
148
  })[], unknown, unknown, () => void, boolean>;
@@ -212,6 +215,10 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
212
215
  readonly type: import('vue').PropType<(file: File) => Promise<OssSignatureResult>>;
213
216
  readonly default: undefined;
214
217
  };
218
+ readonly uploadOssViewApi: {
219
+ readonly type: import('vue').PropType<(key: string) => Promise<string>>;
220
+ readonly default: undefined;
221
+ };
215
222
  readonly uploadTip: {
216
223
  readonly type: import('vue').PropType<string>;
217
224
  readonly default: "可以上传pdf、excel、word、图片格式";
@@ -266,62 +273,62 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
266
273
  readonly prototype: any;
267
274
  })[], unknown, unknown, () => void, boolean>;
268
275
  readonly beforeRemove: {
269
- readonly type: import('vue').PropType<(uploadFile: UploadFile, uploadFiles: UploadFiles) => import('element-plus/es/utils/typescript.mjs').Awaitable<boolean>>;
276
+ readonly type: import('vue').PropType<(uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => import('element-plus/es/utils/typescript.mjs').Awaitable<boolean>>;
270
277
  readonly required: false;
271
278
  readonly validator: ((val: unknown) => boolean) | undefined;
272
279
  __epPropKey: true;
273
280
  };
274
- readonly onRemove: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
275
- (): (uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
281
+ readonly onRemove: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | (() => (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | {
282
+ (): (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
276
283
  new (): any;
277
284
  readonly prototype: any;
278
- } | ((new (...args: any[]) => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
279
- (): (uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
285
+ } | ((new (...args: any[]) => (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | (() => (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | {
286
+ (): (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
280
287
  new (): any;
281
288
  readonly prototype: any;
282
289
  })[], unknown, unknown, () => void, boolean>;
283
- readonly onChange: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
284
- (): (uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
290
+ readonly onChange: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | (() => (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | {
291
+ (): (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
285
292
  new (): any;
286
293
  readonly prototype: any;
287
- } | ((new (...args: any[]) => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
288
- (): (uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
294
+ } | ((new (...args: any[]) => (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | (() => (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | {
295
+ (): (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
289
296
  new (): any;
290
297
  readonly prototype: any;
291
298
  })[], unknown, unknown, () => void, boolean>;
292
- readonly onPreview: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (uploadFile: UploadFile) => void) | (() => (uploadFile: UploadFile) => void) | {
293
- (): (uploadFile: UploadFile) => void;
299
+ readonly onPreview: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (uploadFile: import('element-plus').UploadFile) => void) | (() => (uploadFile: import('element-plus').UploadFile) => void) | {
300
+ (): (uploadFile: import('element-plus').UploadFile) => void;
294
301
  new (): any;
295
302
  readonly prototype: any;
296
- } | ((new (...args: any[]) => (uploadFile: UploadFile) => void) | (() => (uploadFile: UploadFile) => void) | {
297
- (): (uploadFile: UploadFile) => void;
303
+ } | ((new (...args: any[]) => (uploadFile: import('element-plus').UploadFile) => void) | (() => (uploadFile: import('element-plus').UploadFile) => void) | {
304
+ (): (uploadFile: import('element-plus').UploadFile) => void;
298
305
  new (): any;
299
306
  readonly prototype: any;
300
307
  })[], unknown, unknown, () => void, boolean>;
301
- readonly onSuccess: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
302
- (): (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
308
+ readonly onSuccess: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (response: any, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | (() => (response: any, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | {
309
+ (): (response: any, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
303
310
  new (): any;
304
311
  readonly prototype: any;
305
- } | ((new (...args: any[]) => (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
306
- (): (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
312
+ } | ((new (...args: any[]) => (response: any, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | (() => (response: any, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | {
313
+ (): (response: any, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
307
314
  new (): any;
308
315
  readonly prototype: any;
309
316
  })[], unknown, unknown, () => void, boolean>;
310
- readonly onProgress: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (evt: import('element-plus').UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (evt: import('element-plus').UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
311
- (): (evt: import('element-plus').UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
317
+ readonly onProgress: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (evt: import('element-plus').UploadProgressEvent, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | (() => (evt: import('element-plus').UploadProgressEvent, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | {
318
+ (): (evt: import('element-plus').UploadProgressEvent, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
312
319
  new (): any;
313
320
  readonly prototype: any;
314
- } | ((new (...args: any[]) => (evt: import('element-plus').UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (evt: import('element-plus').UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
315
- (): (evt: import('element-plus').UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
321
+ } | ((new (...args: any[]) => (evt: import('element-plus').UploadProgressEvent, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | (() => (evt: import('element-plus').UploadProgressEvent, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | {
322
+ (): (evt: import('element-plus').UploadProgressEvent, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
316
323
  new (): any;
317
324
  readonly prototype: any;
318
325
  })[], unknown, unknown, () => void, boolean>;
319
- readonly onError: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
320
- (): (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
326
+ readonly onError: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (error: Error, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | (() => (error: Error, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | {
327
+ (): (error: Error, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
321
328
  new (): any;
322
329
  readonly prototype: any;
323
- } | ((new (...args: any[]) => (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
324
- (): (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
330
+ } | ((new (...args: any[]) => (error: Error, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | (() => (error: Error, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void) | {
331
+ (): (error: Error, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
325
332
  new (): any;
326
333
  readonly prototype: any;
327
334
  })[], unknown, unknown, () => void, boolean>;
@@ -379,9 +386,9 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
379
386
  readonly method: string;
380
387
  readonly withCredentials: boolean;
381
388
  readonly drag: boolean;
382
- readonly onError: (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
383
- readonly onProgress: (evt: import('element-plus').UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
384
- readonly onChange: (uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
389
+ readonly onError: (error: Error, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
390
+ readonly onProgress: (evt: import('element-plus').UploadProgressEvent, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
391
+ readonly onChange: (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
385
392
  readonly disabled: import('element-plus/es/utils/index.mjs').EpPropMergeType<BooleanConstructor, unknown, unknown>;
386
393
  readonly name: string;
387
394
  readonly modelValue: TtUploadFileItem[];
@@ -391,6 +398,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
391
398
  readonly accept: string;
392
399
  readonly modal: boolean;
393
400
  readonly uploadOssApi: (file: File) => Promise<OssSignatureResult>;
401
+ readonly uploadOssViewApi: (key: string) => Promise<string>;
394
402
  readonly uploadTip: string;
395
403
  readonly maxSize: number;
396
404
  readonly showFileList: boolean;
@@ -402,9 +410,9 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
402
410
  readonly gridColumns: number;
403
411
  readonly showCount: boolean;
404
412
  readonly beforeUpload: (rawFile: import('element-plus').UploadRawFile) => import('element-plus/es/utils/typescript.mjs').Awaitable<void | undefined | null | boolean | File | Blob>;
405
- readonly onRemove: (uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
406
- readonly onPreview: (uploadFile: UploadFile) => void;
407
- readonly onSuccess: (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
413
+ readonly onRemove: (uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
414
+ readonly onPreview: (uploadFile: import('element-plus').UploadFile) => void;
415
+ readonly onSuccess: (response: any, uploadFile: import('element-plus').UploadFile, uploadFiles: import('element-plus').UploadFiles) => void;
408
416
  readonly onExceed: (files: File[], uploadFiles: import('element-plus').UploadUserFile[]) => void;
409
417
  readonly fileList: import('element-plus').UploadUserFile[];
410
418
  readonly autoUpload: import('element-plus/es/utils/index.mjs').EpPropMergeType<BooleanConstructor, unknown, unknown>;
@@ -1,6 +1,5 @@
1
1
  import { ExtractPropTypes, PropType } from 'vue';
2
2
  import { UploadRawFile } from 'element-plus';
3
- /** 后端返回的阿里云 OSS V4 签名信息(服务端签名直传) */
4
3
  export interface OssSignatureResult {
5
4
  /** HMAC-SHA256 签名 */
6
5
  signature: string;
@@ -22,20 +21,20 @@ export interface OssSignatureResult {
22
21
  policy: string;
23
22
  }
24
23
  export interface TtUploadFileItem {
25
- /** 文件唯一标识 */
26
- id: string | number;
27
24
  /** 文件名 */
28
- name: string;
29
- /** 文件URL(用于预览/下载) */
30
- url?: string;
25
+ fileName: string;
26
+ /** 后端存储到oss的文件目录名称 */
27
+ ossUploadBaseDir?: string;
28
+ /** 后端存储到 OSS 的文件 key*/
29
+ ossKey?: string;
31
30
  /** 文件大小(字节) */
32
- size?: number;
33
- /** 文件类型 */
34
- type?: string;
35
- /** 上传时间 */
36
- uploadTime?: string;
31
+ fileSize?: number;
32
+ /** 文件后缀 */
33
+ fileSuffix?: string;
37
34
  /** 原始文件对象 */
38
- raw?: UploadRawFile;
35
+ file?: UploadRawFile;
36
+ /** 文件唯一标识 */
37
+ uid?: number;
39
38
  /** 扩展数据 */
40
39
  [key: string]: unknown;
41
40
  }
@@ -78,6 +77,11 @@ export declare const ttUploadProps: {
78
77
  readonly type: PropType<(file: File) => Promise<OssSignatureResult>>;
79
78
  readonly default: undefined;
80
79
  };
80
+ /** 根据 ossKey 获取文件预览/下载 URL 的接口,不传则使用全局 setup 的 uploadOssViewApi */
81
+ readonly uploadOssViewApi: {
82
+ readonly type: PropType<(key: string) => Promise<string>>;
83
+ readonly default: undefined;
84
+ };
81
85
  /** 上传提示文字 */
82
86
  readonly uploadTip: {
83
87
  readonly type: PropType<string>;
@@ -11,6 +11,8 @@ export type TtUiGlobalConfig = {
11
11
  userId?: string | number;
12
12
  /** 获取 OSS 签名信息的接口(服务端签名直传) */
13
13
  uploadOssApi?: (file: File) => Promise<OssSignatureResult>;
14
+ /** 根据 ossKey 获取文件预览/下载 URL 的接口 */
15
+ uploadOssViewApi?: (key: string) => Promise<string>;
14
16
  table?: {
15
17
  /** 自定义列服务端配置的key,支持函数动态获取 */
16
18
  columnsKey?: string | (() => string);