优化资产元数据处理逻辑,支持数组和对象两种格式的元数据解析与提交

This commit is contained in:
WUSIJIAN
2025-12-23 17:07:32 +08:00
parent b910584019
commit f6a5313037

View File

@@ -777,7 +777,15 @@ const openDialog = (row?: any, edit?: boolean) => {
// 元数据 // 元数据
if (data.metadata) { if (data.metadata) {
Object.assign(ruleForm.metadata, data.metadata); if (Array.isArray(data.metadata)) {
data.metadata.forEach((item: any) => {
if (item.name) {
ruleForm.metadata[item.name] = item.value;
}
});
} else {
Object.assign(ruleForm.metadata, data.metadata);
}
} }
// 加载分类属性 // 加载分类属性
@@ -865,16 +873,24 @@ const buildFormData = (): FormData => {
}); });
// 元数据(分类属性值) // 元数据(分类属性值)
if (Object.keys(ruleForm.metadata).length > 0) { if (categoryAttrs.value.length > 0) {
// 过滤掉 blob url避免传给后端 const metadataArray = categoryAttrs.value.map((attr) => {
const metadataToSend = { ...ruleForm.metadata }; const key = getAttrKey(attr);
Object.keys(metadataToSend).forEach((key) => { let value = ruleForm.metadata[key];
if (typeof metadataToSend[key] === 'string' && metadataToSend[key].startsWith('blob:')) {
// 如果有对应的文件在 attrImageFiles 中,则置空或不传,这里选择置空 // 过滤掉 blob url避免传给后端
metadataToSend[key] = ''; if (typeof value === 'string' && value.startsWith('blob:')) {
value = '';
} }
return {
name: attr.name,
type: attr.type,
value: value,
options: attr.options || [],
};
}); });
formData.append('metadata', JSON.stringify(metadataToSend)); formData.append('metadata', JSON.stringify(metadataArray));
} }
return formData; return formData;