组件 · 数据录入

Imports 导入

Imports 公开入口。 外层已有 Provider 时直接渲染;否则用 props 自建 Provider。

入口 @selrux/ui/imports · 源码 src/components/imports/index.ts · 2 个组件

引入

tsx
import {
  ImportContextProvider,
  Imports,
  formatDate,
  handleImportError,
  isImportResultLike,
  isTerminalImportResult,
  // …共 13 个导出
} from '@selrux/ui/imports';

代码演示

完整模拟

下载模板、上传导入、导入记录与失败明细均可点通;新导入会插入记录列表顶部。

可先下载模板,再选文件导入;或点「导入记录」查看历史。

基础用法

注入上传与进度查询;点击「导入」走四步流程。

自定义进度区

importProgressStepRender 完全替换默认 Spin 文案。

同步导入

上传后 onImport 一次返回终态,不轮询。

自定义上传步

renderUploadStep 可组合 defaultNode 或完全替换。

Context 共享配置

Provider 注入历史查询,子树 Imports 可少传 props。

API

属性覆盖:示例用到 9 / 29 个自有属性(31%)

由 scripts/demo-coverage.mjs 统计,不含 className / style / 原生透传属性与纯转发事件。

ImportContextProvider

提供导入配置;子树内 Imports / 历史详情可读。

属性说明类型默认值
value *-ImportContextValue-

另有 1 项原生属性与事件继承自 ,原样透传。

Imports

Imports 公开入口。 外层已有 Provider 时直接渲染;否则用 props 自建 Provider。

属性说明类型默认值
primaryText主按钮文案;默认取语言包「导入」。string-
secondaryText次按钮文案;默认取语言包「导入记录」。string-
primaryButtonProps-Omit<ButtonProps, "children" | "onClick">-
secondaryButtonProps-Omit<ButtonProps, "children" | "onClick">-
dialogProps主流程 Dialog 透传。ImportsDialogProps-
mode同步 / 异步模式;默认 auto。 auto:有 queryProgress → async,否则 → sync。"auto" | "sync" | "async"auto
onImport上传后创建任务(异步)或一次出终态(同步)。OnImport-
queryProgress-QueryImportProgress-
cancelImport-CancelImport-
confirmImportwaiting_confirm 时继续。ConfirmImport-
cancelUpload-CancelUpload-
onDialogClose主 Dialog 关闭回调。(() => void)-
taskKey上传结果中的任务 ID 字段名,默认 id。stringid
importProgressStepRender 已弃用-ImportProgressStepRender-
renderUploadStep上传步整段替换。RenderUploadStep-
renderUploadingStep上传中整段替换。RenderUploadingStep-
renderImportingStep导入中整段替换(优先于 importProgressStepRender)。RenderImportingStep-
renderResultStep结果步整段替换。RenderResultStep-
onDownloadTemplate-(() => Promise<void> | void)-
onFileSelect-((file: File, config?: UploadConfig) => Promise<UploadResult> | UploadResult)-
onDownloadFailure结果步下载失败文件(宿主实现)。((result: ImportResult) => Promise<void> | void)-
tips-string[]-
uploadStepConfig-UploadStepConfig-
pollInterval进度轮询间隔(毫秒),默认 2000。number2000
queryImportRecords-QueryImportRecords-
importRecordColumns-TableColumnType<ImportRecord>[]-
importRecordTableProps-Record<string, unknown>-
queryImportErrors-QueryImportErrors-
importErrorColumns-TableColumnType<ImportErrorItem>[]-
importErrorTableProps-Record<string, unknown>-
importDetailContentRender-ImportDetailContentRender-
className根节点 className。string-

另有 1 项原生属性与事件继承自 ,原样透传。

导出类型:CancelImport、CancelUpload、ConfirmImport、ImportContextProviderProps、ImportContextValue、ImportDetailContentRender、ImportErrorItem、ImportMode、ImportProgress、ImportProgressStepItem、ImportProgressStepRender、ImportRecord、ImportResult、ImportsDialogProps、ImportsProps、ImportStatus、ImportStep、OnImport、QueryImportErrors、QueryImportProgress、QueryImportRecords、RenderImportingStep、RenderResultStep、RenderUploadingStep、RenderUploadStep、UploadConfig、UploadProgressEvent、UploadResult、UploadStepConfig

函数与常量

名称说明签名 / 类型
formatDate简易日期格式化(YYYY / MM / DD / HH / mm / ss)。(date: Date | number, format?: string) => string
handleImportError统一提取导入错误文案。(error: unknown, defaultMessage: string) => string
isImportResultLike判断回调返回值是否已是 ImportResult 形态(含计数字段)。(value: unknown) => value is ImportResult
isTerminalImportResultImportResult 是否可视为已结束(无 status 时按同步终态处理)。(result: ImportResult) => boolean
isTerminalImportStatus是否为导入终态(离开 importing / 可进 result)。(status: ImportStatus | undefined) => boolean
normalizeImportResult规范化结果 status: - 显式 cancelled / partial / failed 保留 - completed / 缺省 / processing 按计数推导 partial / completed / failed(result: ImportResult) => ImportResult
resolveImportMode解析 ImportMode;auto 时有 queryProgress 为 async,否则 sync。(mode: ImportMode | undefined, queryProgress: QueryImportProgress | undefined) => "sync" | "async"
toImportResult将类结果对象转为 ImportResult。(value: ImportResult | Record<string, unknown>, fallbackId: string) => ImportResult
useImportContext读取 ImportContext;不在 Provider 内时抛错。() => ImportContextValue
useImportContextOptional可选读取 ImportContext;无 Provider 时返回 null。() => ImportContextValue | null
validateUploadResult校验上传结果是否包含 taskKey 字段。(result: Record<string, unknown>, taskKey: string) => boolean