fix: 统一上传响应与表单校验处理

- 上传组件统一解析后端响应并暴露错误事件

- AI 资源、模型提供商和工作流表单补齐程序化字段校验同步

- 修正 MinIO 对外访问域名配置
This commit is contained in:
2026-03-24 18:38:42 +08:00
parent 799174406e
commit da536ea742
9 changed files with 201 additions and 46 deletions

View File

@@ -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' }"