refactor: 更新point-detail-card组件,整合BinTaskManagerService的调用,优化数据处理逻辑,提升代码可读性

This commit is contained in:
xudan 2025-09-11 10:14:11 +08:00
parent 7863867a5c
commit 360294c6a1
3 changed files with 26 additions and 26 deletions

View File

@ -1,7 +1,6 @@
<script setup lang="ts">
import { MapAreaType, type MapPen, type MapPointInfo, MapPointType, type Rect } from '@api/map';
import type { StorageLocationInfo } from '@api/scene';
import { BinTaskManagerService } from '@core/bintask-manager.service';
import type { EditorService } from '@core/editor.service';
import sTheme from '@core/theme.service';
import { isNil } from 'lodash-es';
@ -14,7 +13,6 @@ type Props = {
};
const props = defineProps<Props>();
const editor = inject(props.token)!;
const binTaskManager = new BinTaskManagerService(editor.value);
const pen = computed<MapPen | undefined>(() => editor.value.getPenById(props.current));
const point = computed<MapPointInfo | null>(() => {
@ -95,7 +93,7 @@ const binTaskData = computed(() => {
const currentPointName = pen.value?.label || pen.value?.id;
if (!currentPointName) return [];
return binTaskManager.getPointBinTaskDataForDisplay(currentPointName);
return editor.value.getBinTaskManager().getPointBinTaskDataForDisplay(currentPointName);
});
</script>
@ -217,7 +215,7 @@ const binTaskData = computed(() => {
<div class="bin-tasks">
<div v-for="(task, taskIndex) in binLocation.binTasks" :key="taskIndex" class="bin-task-item">
<div
v-for="(operation, operationType) in binTaskManager.getTaskOperations(task)"
v-for="(operation, operationType) in editor.getBinTaskManager().getTaskOperations(task)"
:key="operationType"
class="task-operation"
>

View File

@ -390,7 +390,7 @@ export class BinTaskManagerService {
* @returns
*/
private getBinLocationGroups(): BinLocationGroup[] {
const rawData = this.editor.getBinLocationsList();
const rawData = this.getBinLocationsList();
if (!rawData) return [];
const binLocationGroups = Array.isArray(rawData)
@ -454,13 +454,26 @@ export class BinTaskManagerService {
);
}
/**
*
* @returns
*/
public getBinLocationsList(): unknown {
return this.editor.getBinLocationsList();
}
/**
*
* @param binLocationGroups
*/
private updateOriginalSceneData(binLocationGroups: BinLocationGroup[]): void {
// 通过EditorService的公共方法更新原始场景数据
this.editor.updateOriginalSceneBinLocations(binLocationGroups);
// 通过反射访问和设置私有属性
let originalSceneData = (this.editor as any)['#originalSceneData'];
if (!originalSceneData) {
originalSceneData = {};
(this.editor as any)['#originalSceneData'] = originalSceneData;
}
(originalSceneData as Record<string, unknown>).binLocationsList = binLocationGroups;
}
//#endregion

View File

@ -135,11 +135,11 @@ export class EditorService extends Meta2d {
private readonly binTaskManager: BinTaskManagerService;
/**
*
* @returns
* BinTask管理服务实例
* @returns BinTask管理服务实例
*/
public getBinLocationsList(): unknown {
return (this.#originalSceneData as Record<string, unknown>)?.binLocationsList;
public getBinTaskManager(): BinTaskManagerService {
return this.binTaskManager;
}
/**
@ -182,22 +182,11 @@ export class EditorService extends Meta2d {
}
/**
* BinTask管理服务实例
* @returns BinTask管理服务实例
*
* @returns
*/
public getBinTaskManager(): BinTaskManagerService {
return this.binTaskManager;
}
/**
* binLocationsList
* @param binLocationGroups
*/
public updateOriginalSceneBinLocations(binLocationGroups: any[]): void {
if (!this.#originalSceneData) {
this.#originalSceneData = {};
}
(this.#originalSceneData as Record<string, unknown>).binLocationsList = binLocationGroups;
public getBinLocationsList(): unknown {
return (this.#originalSceneData as Record<string, unknown>)?.binLocationsList;
}
/**