npm package: @netease-ehr/base
Description: yarn add @netease-ehr/base
Author: zhangz
Latest version: 1.7.4


## EHR 业务组件库


# 安装依赖
yarn add @netease-ehr/base

# 引用

### 任务导出组件

```
// 1、任务开始层
import { getImproveExport } from '@/axios'; // 导出函数 promise 函数
import { useDownloadTask } from '@netease-ehr/base';
const { downloadTask, loading } = useDownloadTask(getImproveExport); // 导出任务

<Button
    type="primary"
    loading={loading}
    onClick={() => {
        downloadTask(ExportParams);
    }}
>
    导出
</Button>

// 2、任务UI
import { TaskUi } from '@netease-ehr/base';
import { getTaskProcess } from '@/axios'; // 导出进度查询函数 promise 函数

// interface TaskUiProps {
//    style?: React.CSSProperties;
//    downloadProcessFunctionApi: (req: any) => Promise<any>; // 查询导出任务进度 promise 函数
// }

// style 主要是设置 UI的位置
<TaskUi downloadProcessFunctionApi={getTaskProcess} style={{ right: '16px', bottom: '136px' } } />

```

### 文件列表
```
// + 文件列表组件

const links = [
    {
        name: 'new.pptx',
        url:'',
        nosKey: 'xxx',
        transformId: 'xxx',
        transformType: 'KM',
        canDownload: true,
        kmTransformType: 'SUCCESS'
    },
];

return (
    <div className="m-file-link">
        {
            links.map(item=>
                <FileLink
                    key={item.url}
                    prefix={<span className="tag">{ChapterTypeName[item.type]}</span>}
                    {...item.file}
                    name={item.name}
                />)
        }
    </div>
)
       
```


### 预览组件
+ PreviewModal
```
// 渲染标题
const blank = () =>{
    return (
        <>
            {canDownload ? (
                <LinkOutlined />
            ) : (
                <Tooltip title="文档加密，用户不可下载">
                    <LockOutlined />
                </Tooltip>
            )}
            <span className="u-title">{name}</span>
        </>
    )
}

const renderAction = () => <a>{blank()}</a>

return (
    <PreviewModal 
        className="class"
        file={{ transformId, name, url, transformType }} 
        allowDownload={canDownload} 
        action={renderAction()} 
    />
)

```

+ Preview

```
// 参数说明：
/**
 * @param {File} 文件类型 参考下面栗子
 * @param {string} host 公共服务域名
 */
<Preview file={{ transformId, name, url, transformType }} />
```

### 上传组件

使用说明：文档参照antd  export { Upload, SimpleUpload, EncryUpload };
+ Upload：点击上传
+ SimpleUpload：普通上传
+ EncryUpload：加密上传
```
// 参数说明：
/**
 * 大附件直传
 * @param {Boolean} dragger 是否为拖拽上传组件
 * @param {Boolean} canRepeat 是否能重复上传相同附件
 * @param {String} text 上传按钮文件
 * @param {Number} trunkSize 分片附件大小 默认5M（5 * 1024 * 1024）
 * @param {Array} validFileType 支持上传的附件类型
 * @param {Array | Object} fileList 附件
 * @param {Number} maxCount 最大上传个数
 * @param {Boolean} transfrom 加密-转换
 * @param {Number} maxSize 最大上传文件大小
 * @param {ReactNode} extra 额外展示内容
 * @param {string} SERVICE_HOST 公共服务域名
 * @param {string} SERVICE_HOST BUCKET_NAME 桶名
 * @param {Function} onStatusChange 分片上传状态变更时调用 0-上传失败 1-正在上传 2-上传成功
 */

export { Upload, SimpleUpload, EncryUpload };

import { EncryUpload } from '@netease-ehr/base';

<EncryUpload
    extra="上传视频、音频、PDF文件(暂不支持加密上传)"
    maxCount={1}
    validFileType={[...videoType, ...audioType, ...documentType]}
/>

```