From 4bb9efa49533317ed1a536af9c4b1665bc65c687 Mon Sep 17 00:00:00 2001 From: claw_bot Date: Sat, 14 Mar 2026 10:11:57 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=BC=96=E8=BE=91=E7=AD=96=E7=95=A5?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E8=B5=84=E4=BA=A7=E9=85=8D=E7=BD=AE=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=A1=AB=E5=85=85=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 使用 splice/push 替代直接赋值,保持 Vue 响应式引用 - 修复 tags 字段类型不一致(数组 -> 字符串) - 使用 String() 安全转换 targetWeight 数字类型 - 添加 Array.isArray 检查增强健壮性 --- pages/strategies/edit/edit.vue | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/pages/strategies/edit/edit.vue b/pages/strategies/edit/edit.vue index f29ed58..61d7819 100755 --- a/pages/strategies/edit/edit.vue +++ b/pages/strategies/edit/edit.vue @@ -273,7 +273,7 @@ const formData = ref({ name: '', description: '', riskLevel: 'medium', - tags: [], + tags: '', maType: 'SMA', shortPeriod: '', longPeriod: '', @@ -529,12 +529,16 @@ const loadStrategyDetail = async (id) => { formData.value.lookbackPeriod = params.lookbackPeriod?.toString() || ''; formData.value.rebalanceThreshold = params.rebalanceThreshold?.toString() || ''; console.log('📊 再平衡策略 assets:', params.assets); - if (params.assets && params.assets.length > 0) { - formData.value.assets = params.assets.map(asset => ({ - symbol: asset.symbol || '', - targetWeight: asset.targetWeight?.toString() || '' - })); - console.log('📊 填充后的 formData.assets:', formData.value.assets); + if (params.assets && Array.isArray(params.assets) && params.assets.length > 0) { + // 使用 splice 保持响应式引用 + formData.value.assets.splice(0, formData.value.assets.length); + params.assets.forEach(asset => { + formData.value.assets.push({ + symbol: asset.symbol || '', + targetWeight: asset.targetWeight != null ? String(asset.targetWeight) : '' + }); + }); + console.log('📊 填充后的 formData.assets:', JSON.stringify(formData.value.assets)); } break; case 'chandelier_exit':