优化资产元数据处理逻辑,支持数组和对象两种格式的元数据解析与提交
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user