fix: 统一上传响应与表单校验处理
- 上传组件统一解析后端响应并暴露错误事件 - AI 资源、模型提供商和工作流表单补齐程序化字段校验同步 - 修正 MinIO 对外访问域名配置
This commit is contained in:
@@ -7,7 +7,9 @@ import { useAppConfig } from '@easyflow/hooks';
|
||||
import { useAccessStore } from '@easyflow/stores';
|
||||
|
||||
import { UploadFilled } from '@element-plus/icons-vue';
|
||||
import { ElIcon, ElUpload } from 'element-plus';
|
||||
import { ElIcon, ElMessage, ElUpload } from 'element-plus';
|
||||
|
||||
import { normalizeUploadError, resolveUploadPath } from '#/utils/upload-response';
|
||||
|
||||
const props = defineProps({
|
||||
action: {
|
||||
@@ -20,7 +22,7 @@ const props = defineProps({
|
||||
},
|
||||
});
|
||||
|
||||
const emit = defineEmits(['success', 'onChange']);
|
||||
const emit = defineEmits(['success', 'error', 'onChange']);
|
||||
const accessStore = useAccessStore();
|
||||
const headers = ref({
|
||||
'easyflow-token': accessStore.accessToken,
|
||||
@@ -32,7 +34,18 @@ const uploadRef = ref<InstanceType<typeof ElUpload>>();
|
||||
|
||||
// 上传成功回调
|
||||
const handleSuccess: UploadProps['onSuccess'] = (response) => {
|
||||
emit('success', response.data.path);
|
||||
try {
|
||||
emit('success', resolveUploadPath(response));
|
||||
} catch (error) {
|
||||
const normalizedError = normalizeUploadError(error);
|
||||
ElMessage.error(normalizedError.message);
|
||||
emit('error', normalizedError);
|
||||
}
|
||||
};
|
||||
const handleError: UploadProps['onError'] = (error) => {
|
||||
const normalizedError = normalizeUploadError(error);
|
||||
ElMessage.error(normalizedError.message);
|
||||
emit('error', normalizedError);
|
||||
};
|
||||
|
||||
// 文件状态变化回调
|
||||
@@ -66,6 +79,7 @@ defineExpose({
|
||||
:headers="headers"
|
||||
:action="`${apiURL}${props.action}`"
|
||||
:on-success="handleSuccess"
|
||||
:on-error="handleError"
|
||||
:on-change="handleChange"
|
||||
multiple
|
||||
:style="{ display: props.visible ? 'block' : 'none' }"
|
||||
|
||||
Reference in New Issue
Block a user