import type { FileAccess } from './fileAccess';
|
import type { fileItem } from './props';
|
|
import { allowsFileAction } from './fileAccess';
|
import { units } from './props';
|
|
export function canReplaceWithTemplate(access: FileAccess | undefined, count: number) {
|
return count === 0 ? allowsFileAction(access, 'ADD') : allowsFileAction(access, 'REPLACE') && (count <= 1 || allowsFileAction(access, 'REMOVE'));
|
}
|
export function templateFileError(file: fileItem, props: { accept: string; fileSize: number; sizeUnit: string }) {
|
if (!file.fileId || !/\.docx$/i.test(file.name)) return '请选择 DOCX 模板文件';
|
const accepts = props.accept
|
.toLowerCase()
|
.split(',')
|
.map((s) => s.trim().replace(/^\./, ''));
|
if (
|
props.accept &&
|
props.accept !== '*' &&
|
!accepts.includes('docx') &&
|
!accepts.includes('application/vnd.openxmlformats-officedocument.wordprocessingml.document')
|
)
|
return '模板文件不符合当前上传组件的文件类型限制';
|
const size = Number(file.fileSize);
|
const unit = units[props.sizeUnit as keyof typeof units];
|
if (!Number.isFinite(size) || size < 0 || !unit) return '模板文件大小信息无效';
|
if (props.fileSize && size / unit >= props.fileSize) return `模板文件须小于 ${props.fileSize} ${props.sizeUnit}`;
|
return '';
|
}
|