刘光辉
4 小时以前 cf11e63b659afcc9792ab3e395f1b45d844431a8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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 '';
}