fix: 编辑策略页面资产配置自动填充问题

- 使用 splice/push 替代直接赋值,保持 Vue 响应式引用
- 修复 tags 字段类型不一致(数组 -> 字符串)
- 使用 String() 安全转换 targetWeight 数字类型
- 添加 Array.isArray 检查增强健壮性
This commit is contained in:
claw_bot 2026-03-14 10:11:57 +00:00
parent fc05840e40
commit 4bb9efa495

View File

@ -273,7 +273,7 @@ const formData = ref({
name: '', name: '',
description: '', description: '',
riskLevel: 'medium', riskLevel: 'medium',
tags: [], tags: '',
maType: 'SMA', maType: 'SMA',
shortPeriod: '', shortPeriod: '',
longPeriod: '', longPeriod: '',
@ -529,12 +529,16 @@ const loadStrategyDetail = async (id) => {
formData.value.lookbackPeriod = params.lookbackPeriod?.toString() || ''; formData.value.lookbackPeriod = params.lookbackPeriod?.toString() || '';
formData.value.rebalanceThreshold = params.rebalanceThreshold?.toString() || ''; formData.value.rebalanceThreshold = params.rebalanceThreshold?.toString() || '';
console.log('📊 再平衡策略 assets:', params.assets); console.log('📊 再平衡策略 assets:', params.assets);
if (params.assets && params.assets.length > 0) { if (params.assets && Array.isArray(params.assets) && params.assets.length > 0) {
formData.value.assets = params.assets.map(asset => ({ // 使 splice
formData.value.assets.splice(0, formData.value.assets.length);
params.assets.forEach(asset => {
formData.value.assets.push({
symbol: asset.symbol || '', symbol: asset.symbol || '',
targetWeight: asset.targetWeight?.toString() || '' targetWeight: asset.targetWeight != null ? String(asset.targetWeight) : ''
})); });
console.log('📊 填充后的 formData.assets:', formData.value.assets); });
console.log('📊 填充后的 formData.assets:', JSON.stringify(formData.value.assets));
} }
break; break;
case 'chandelier_exit': case 'chandelier_exit':