From 9a90f1258bbba52721bb368ab6e9f22db77cd52a Mon Sep 17 00:00:00 2001 From: Azure <983547216@qq.com> Date: Fri, 10 Oct 2025 13:49:55 +0800 Subject: [PATCH] 1 --- .../system-business-decoupling-design.md | 2 +- src/services/WindowFormService.ts | 32 +++++++++++-------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/.qoder/quests/system-business-decoupling-design.md b/.qoder/quests/system-business-decoupling-design.md index 060e124..b4cea10 100644 --- a/.qoder/quests/system-business-decoupling-design.md +++ b/.qoder/quests/system-business-decoupling-design.md @@ -94,7 +94,7 @@ stateDiagram-v2 | 服务方法 | 参数 | 返回值 | 描述 | | -------------- | ----------------------- | -------------- | ------------ | -| createWindow | appId, config | WindowInstance | 创建新窗体 | +| createWindow | appId, config | WindowFormInstance | 创建新窗体 | | destroyWindow | windowId | boolean | 销毁指定窗体 | | minimizeWindow | windowId | boolean | 最小化窗体 | | maximizeWindow | windowId | boolean | 最大化窗体 | diff --git a/src/services/WindowFormService.ts b/src/services/WindowFormService.ts index 104edf5..c6c4602 100644 --- a/src/services/WindowFormService.ts +++ b/src/services/WindowFormService.ts @@ -94,7 +94,7 @@ export interface WindowConfig { /** * 窗体实例接口 */ -export interface WindowInstance { +export interface WindowFormInstance { /** * 窗体唯一标识符 */ @@ -156,7 +156,7 @@ export interface WindowEvents extends IEventMap { * 窗体管理服务类 */ export class WindowFormService { - private windowsForm = reactive(new Map()) + private windowsForm = reactive(new Map()) private activeWindowId = ref(null) private nextZIndex = 1000 private eventBus: IEventBuilder @@ -169,11 +169,11 @@ export class WindowFormService { /** * 创建新窗体 */ - async createWindow(appId: string, config: WindowConfig): Promise { + async createWindow(appId: string, config: WindowConfig): Promise { const windowId = uuidv4() const now = new Date() - const windowInstance: WindowInstance = { + const windowInstance: WindowFormInstance = { id: windowId, appId, config, @@ -220,6 +220,9 @@ export class WindowFormService { if (window.element) { window.element.remove() } + if (window.iframe) { + window.iframe.remove() + } // 从集合中移除 this.windowsForm.delete(windowId) @@ -405,14 +408,14 @@ export class WindowFormService { /** * 获取窗体实例 */ - getWindow(windowId: string): WindowInstance | undefined { + getWindow(windowId: string): WindowFormInstance | undefined { return this.windowsForm.get(windowId) } /** * 获取所有窗体 */ - getAllWindows(): WindowInstance[] { + getAllWindows(): WindowFormInstance[] { return Array.from(this.windowsForm.values()) } @@ -448,7 +451,7 @@ export class WindowFormService { /** * 创建窗体DOM元素 */ - private async createWindowElement(windowInstance: WindowInstance): Promise { + private async createWindowElement(windowInstance: WindowFormInstance): Promise { const { id, config, appId } = windowInstance // 创建窗体容器 @@ -549,7 +552,7 @@ export class WindowFormService { /** * 创建窗体标题栏 */ - private createTitleBar(windowInstance: WindowInstance): HTMLElement { + private createTitleBar(windowInstance: WindowFormInstance): HTMLElement { const titleBar = document.createElement('div') titleBar.className = 'window-title-bar' titleBar.style.cssText = ` @@ -659,7 +662,7 @@ export class WindowFormService { /** * 添加窗体拖拽功能 */ - private addDragFunctionality(titleBar: HTMLElement, windowInstance: WindowInstance): void { + private addDragFunctionality(titleBar: HTMLElement, windowInstance: WindowFormInstance): void { let isDragging = false let startX = 0 let startY = 0 @@ -744,7 +747,10 @@ export class WindowFormService { /** * 添加窗体调整尺寸功能 */ - private addResizeFunctionality(windowElement: HTMLElement, windowInstance: WindowInstance): void { + private addResizeFunctionality( + windowElement: HTMLElement, + windowInstance: WindowFormInstance + ): void { // 初始化调整尺寸状态 windowInstance.resizeState = { isResizing: false, @@ -873,7 +879,7 @@ export class WindowFormService { private addResizeHandleEvents( handle: HTMLElement, windowElement: HTMLElement, - windowInstance: WindowInstance + windowInstance: WindowFormInstance ): void { const direction = handle.className .split(' ') @@ -930,7 +936,7 @@ export class WindowFormService { private updateCursorForResize( e: MouseEvent, windowElement: HTMLElement, - windowInstance: WindowInstance + windowInstance: WindowFormInstance ): void { if (!windowInstance.resizeState) return @@ -1150,7 +1156,7 @@ export class WindowFormService { /** * 加载应用 */ - private async loadApplication(windowInstance: WindowInstance): Promise { + private async loadApplication(windowInstance: WindowFormInstance): Promise { // 动态导入 AppRegistry 检查是否为内置应用 try { // 如果是内置应用,直接返回,不需要等待