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

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) {
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) {
// 过滤掉 blob url避免传给后端
const metadataToSend = { ...ruleForm.metadata };
Object.keys(metadataToSend).forEach((key) => {
if (typeof metadataToSend[key] === 'string' && metadataToSend[key].startsWith('blob:')) {
// 如果有对应的文件在 attrImageFiles 中,则置空或不传,这里选择置空
metadataToSend[key] = '';
if (categoryAttrs.value.length > 0) {
const metadataArray = categoryAttrs.value.map((attr) => {
const key = getAttrKey(attr);
let value = ruleForm.metadata[key];
// 过滤掉 blob url避免传给后端
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;