|
|
@@ -2,7 +2,7 @@
|
|
|
<BasicModal
|
|
|
v-bind="$attrs"
|
|
|
@register="register"
|
|
|
- :title="t('component.cropper.modalTitle')"
|
|
|
+ :title="title || t('component.cropper.modalTitle')"
|
|
|
width="800px"
|
|
|
:canFullscreen="false"
|
|
|
@ok="handleOk"
|
|
|
@@ -121,13 +121,15 @@
|
|
|
import { dataURLtoBlob } from '/@/utils/file/base64Conver';
|
|
|
import { isFunction } from '/@/utils/is';
|
|
|
import { useI18n } from '/@/hooks/web/useI18n';
|
|
|
+ import { useMessage } from '/@/hooks/web/useMessage';
|
|
|
|
|
|
type apiFunParams = { file: Blob; name: string; filename: string };
|
|
|
|
|
|
const props = {
|
|
|
circled: { type: Boolean, default: true },
|
|
|
src: { type: String, default: '' },
|
|
|
-
|
|
|
+ title: { type: String },
|
|
|
+ maxSize: { type: Number, default: 5 },
|
|
|
uploadApi: {
|
|
|
type: Function as PropType<(params: apiFunParams) => Promise<any>>,
|
|
|
},
|
|
|
@@ -142,6 +144,7 @@
|
|
|
let filename = '';
|
|
|
const src = ref('');
|
|
|
const previewSource = ref('');
|
|
|
+ const { createMessage } = useMessage();
|
|
|
const cropper = ref<Cropper>();
|
|
|
let scaleX = 1;
|
|
|
let scaleY = 1;
|
|
|
@@ -158,6 +161,12 @@
|
|
|
|
|
|
// Block upload
|
|
|
function handleBeforeUpload(file: File) {
|
|
|
+ const { size } = file;
|
|
|
+ const { maxSize } = props;
|
|
|
+ if (maxSize && size / 1024 / 1024 >= maxSize) {
|
|
|
+ createMessage.error(t('component.upload.maxSizeMultiple', [maxSize]));
|
|
|
+ return false;
|
|
|
+ }
|
|
|
const reader = new FileReader();
|
|
|
reader.readAsDataURL(file);
|
|
|
src.value = '';
|