From 32c54768a2db9e667274b4969685709f96be5219 Mon Sep 17 00:00:00 2001 From: Eternity <1972751073@qq.com> Date: Sun, 31 May 2026 23:55:00 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=A1=A5=E5=85=A8=E8=88=B0=E9=98=9F?= =?UTF-8?q?=E9=A2=84=E8=AE=BE=E4=B8=AD=E7=BC=BA=E5=A4=B1=E7=9A=844?= =?UTF-8?q?=E7=A7=8D=E8=88=B0=E8=88=B9=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit selectedFleet 和 jumpGateFleet 共用 createEmptyFleet 工厂函数初始化, 遍历 Object.values(ShipType) 确保覆盖全部 15 种舰船类型,修复此前遗漏的 Battlecruiser、Bomber、Destroyer 和 SolarSatellite。 loadPreset 也改为遍历 Object.values(ShipType),确保所有预设值都能正确恢复。 --- src/views/FleetView.vue | 41 +++++++++++++---------------------------- 1 file changed, 13 insertions(+), 28 deletions(-) diff --git a/src/views/FleetView.vue b/src/views/FleetView.vue index ad20566..1ef80ad 100644 --- a/src/views/FleetView.vue +++ b/src/views/FleetView.vue @@ -652,6 +652,15 @@ const { SHIPS } = useGameConfig() const planet = computed(() => gameStore.currentPlanet) + // 创建默认空舰队映射 + const createEmptyFleet = (): Partial => { + const fleet: Partial = {} + for (const type of Object.values(ShipType)) { + fleet[type] = 0 + } + return fleet + } + // AlertDialog 状态 const alertDialogOpen = ref(false) const alertDialogTitle = ref('') @@ -690,19 +699,7 @@ // 跳跃门相关 const selectedJumpGateTarget = ref(null) - const jumpGateFleet = ref>({ - [ShipType.LightFighter]: 0, - [ShipType.HeavyFighter]: 0, - [ShipType.Cruiser]: 0, - [ShipType.Battleship]: 0, - [ShipType.SmallCargo]: 0, - [ShipType.LargeCargo]: 0, - [ShipType.ColonyShip]: 0, - [ShipType.Recycler]: 0, - [ShipType.EspionageProbe]: 0, - [ShipType.DarkMatterHarvester]: 0, - [ShipType.Deathstar]: 0 - }) + const jumpGateFleet = ref>(createEmptyFleet()) // 是否显示跳跃门标签页(当前在月球上且有跳跃门) const showJumpGateTab = computed(() => { @@ -800,19 +797,7 @@ }) // 选择的舰队 - const selectedFleet = ref>({ - [ShipType.LightFighter]: 0, - [ShipType.HeavyFighter]: 0, - [ShipType.Cruiser]: 0, - [ShipType.Battleship]: 0, - [ShipType.SmallCargo]: 0, - [ShipType.LargeCargo]: 0, - [ShipType.ColonyShip]: 0, - [ShipType.Recycler]: 0, - [ShipType.EspionageProbe]: 0, - [ShipType.DarkMatterHarvester]: 0, - [ShipType.Deathstar]: 0 - }) + const selectedFleet = ref>(createEmptyFleet()) // 目标坐标 const targetPosition = ref({ galaxy: 1, system: 1, position: 1 }) @@ -1008,8 +993,8 @@ // 加载预设 const loadPreset = (preset: FleetPreset) => { // 加载舰队配置 - Object.keys(selectedFleet.value).forEach(key => { - selectedFleet.value[key as ShipType] = preset.fleet[key as ShipType] || 0 + Object.values(ShipType).forEach(key => { + selectedFleet.value[key] = preset.fleet[key] || 0 }) // 不再加载坐标,保留用户当前输入的坐标