Browse Source

修改上传文件模板系统组件

ai_dev
zhouhaibin 2 months ago
parent
commit
38fc9e10f2
  1. 1
      src/api/upload/index.ts
  2. 33
      src/components/Upload/src/components/UploadModal.vue
  3. 5
      src/components/Upload/src/props.ts

1
src/api/upload/index.ts

@ -15,6 +15,7 @@ export function uploadApi(
// 固定url地址 // 固定url地址
url: '/resource/oss/upload', url: '/resource/oss/upload',
onUploadProgress, onUploadProgress,
timeout: 1000 * 60 * 10,
}, },
params, params,
); );

33
src/components/Upload/src/components/UploadModal.vue

@ -67,6 +67,8 @@
import FileList from './FileList.vue'; import FileList from './FileList.vue';
import { useI18n } from '@/hooks/web/useI18n'; import { useI18n } from '@/hooks/web/useI18n';
import { get } from 'lodash-es'; import { get } from 'lodash-es';
import { Modal } from 'ant-design-vue';
import { createVNode } from 'vue';
const props = defineProps({ const props = defineProps({
...basicProps, ...basicProps,
@ -74,6 +76,10 @@
type: Array as PropType<string[] | any[]>, type: Array as PropType<string[] | any[]>,
default: () => [], default: () => [],
}, },
beforeUploadPrompt: {
type: String as PropType<string>,
default: null,
},
}); });
const emit = defineEmits(['change', 'register', 'delete']); const emit = defineEmits(['change', 'register', 'delete']);
@ -124,9 +130,31 @@
}); });
// //
function beforeUpload(file: File) { async function beforeUpload(file: File) {
const { size, name } = file; const { size, name } = file;
const { maxSize } = props; const { maxSize, beforeUploadPrompt } = props;
if (beforeUploadPrompt) {
//
try {
await new Promise((resolve, reject) => {
Modal.confirm({
title: '提醒',
content: (
createVNode('div', { style: 'color:red;font-weight: bold;font-size: 22px' }, beforeUploadPrompt) ),
onOk() {
resolve(true);
},
onCancel() {
reject(false);
},
});
});
//
} catch (error) {
//
return false;
}
}
// //
if (maxSize && file.size / 1024 / 1024 >= maxSize) { if (maxSize && file.size / 1024 / 1024 >= maxSize) {
createMessage.error(t('component.upload.maxSizeMultiple', [maxSize])); createMessage.error(t('component.upload.maxSizeMultiple', [maxSize]));
@ -195,6 +223,7 @@
item.status = UploadResultStatus.SUCCESS; item.status = UploadResultStatus.SUCCESS;
// retcode msg datadata!!! // retcode msg datadata!!!
item.response = ret; item.response = ret;
console.log('item', item, ret);
if (props.resultField) { if (props.resultField) {
// //
item.response = { item.response = {

5
src/components/Upload/src/props.ts

@ -8,6 +8,7 @@ import { propTypes } from '@/utils/propTypes';
import { BasicColumn } from '@/components/Table'; import { BasicColumn } from '@/components/Table';
import { IconEnum } from '@/enums/appEnum'; import { IconEnum } from '@/enums/appEnum';
import { uploadApi } from '@/api/upload'; import { uploadApi } from '@/api/upload';
import { s } from 'node_modules/vite/dist/node/types.d-aGj9QkWt';
type SortableOptions = Merge< type SortableOptions = Merge<
Omit<Options, 'onEnd'>, Omit<Options, 'onEnd'>,
@ -127,6 +128,10 @@ export const uploadContainerProps = {
type: Boolean as PropType<boolean>, type: Boolean as PropType<boolean>,
default: false, default: false,
}, },
beforeUploadPrompt:{
type:String as PropType<string>,
default:null,
},
...previewType, ...previewType,
}; };

Loading…
Cancel
Save