diff --git a/out/panels/ConfigPanel.js b/out/panels/ConfigPanel.js index 7cc9796..b723574 100644 --- a/out/panels/ConfigPanel.js +++ b/out/panels/ConfigPanel.js @@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.ConfigPanel = void 0; // src/panels/ConfigPanel.ts const vscode = require("vscode"); -const ProjectManagementView_1 = require("./views/ProjectManagementView"); -const ProjectListView_1 = require("./views/ProjectListView"); -const AircraftConfigView_1 = require("./views/AircraftConfigView"); -const ContainerConfigView_1 = require("./views/ContainerConfigView"); +const ProjectView_1 = require("./views/ProjectView"); +const AircraftView_1 = require("./views/AircraftView"); +const ContainerView_1 = require("./views/ContainerView"); +const ConfigView_1 = require("./views/ConfigView"); class ConfigPanel { static createOrShow(extensionUri) { const column = vscode.window.activeTextEditor?.viewColumn || vscode.ViewColumn.One; @@ -14,7 +14,7 @@ class ConfigPanel { ConfigPanel.currentPanel.panel.reveal(column); return; } - const panel = vscode.window.createWebviewPanel('dockerConfigTest', 'Docker配置测试', column, { + const panel = vscode.window.createWebviewPanel('DCSP', '数字卫星构建平台', column, { enableScripts: true, localResourceRoots: [extensionUri], retainContextWhenHidden: true @@ -22,39 +22,24 @@ class ConfigPanel { ConfigPanel.currentPanel = new ConfigPanel(panel, extensionUri); } constructor(panel, extensionUri) { - this.currentView = 'management'; + this.currentView = 'projects'; this.currentProjectId = ''; this.currentAircraftId = ''; this.currentContainerId = ''; // 数据存储 - this.projects = [ - { id: 'p1', name: '项目1' }, - { id: 'p2', name: '项目2' } - ]; - this.aircrafts = [ - { id: 'a1', name: '飞行器配置1', projectId: 'p1' }, - { id: 'a2', name: '飞行器配置2', projectId: 'p2' } - ]; - this.containers = [ - { id: 'c1', name: '容器1', aircraftId: 'a1' }, - { id: 'c2', name: '容器2', aircraftId: 'a1' }, - { id: 'c3', name: '容器1', aircraftId: 'a2' } - ]; - this.configs = [ - { id: 'cfg1', name: '配置1', fileName: 'config.yaml', content: '# 配置1内容', containerId: 'c1' }, - { id: 'cfg2', name: '配置2', fileName: 'settings.json', content: '# 配置2内容', containerId: 'c1' }, - { id: 'cfg3', name: '配置1', fileName: 'docker-compose.yml', content: '# 配置1内容', containerId: 'c2' }, - { id: 'cfg4', name: '配置1', fileName: 'config.yaml', content: '# 配置1内容', containerId: 'c3' } - ]; + this.projects = []; + this.aircrafts = []; + this.containers = []; + this.configs = []; // 项目存储路径映射 this.projectPaths = new Map(); this.panel = panel; this.extensionUri = extensionUri; // 初始化各个视图 - this.projectManagementView = new ProjectManagementView_1.ProjectManagementView(extensionUri); - this.projectListView = new ProjectListView_1.ProjectListView(extensionUri); - this.aircraftConfigView = new AircraftConfigView_1.AircraftConfigView(extensionUri); - this.containerConfigView = new ContainerConfigView_1.ContainerConfigView(extensionUri); + this.projectView = new ProjectView_1.ProjectView(extensionUri); + this.aircraftView = new AircraftView_1.AircraftView(extensionUri); + this.containerView = new ContainerView_1.ContainerView(extensionUri); + this.configView = new ConfigView_1.ConfigView(extensionUri); this.updateWebview(); this.setupMessageListener(); this.panel.onDidDispose(() => { @@ -67,50 +52,53 @@ class ConfigPanel { case 'configureProject': const selectedPath = await this.selectProjectPath(data.projectId, data.projectName); if (selectedPath) { - this.currentView = 'projects'; + this.currentView = 'aircrafts'; this.currentProjectId = data.projectId; this.updateWebview(); } break; case 'openProject': // 已配置的项目直接打开 - this.currentView = 'projects'; + this.currentView = 'aircrafts'; this.currentProjectId = data.projectId; this.updateWebview(); break; case 'openAircraftConfig': - this.currentView = 'aircrafts'; + this.currentView = 'containers'; this.currentProjectId = data.projectId; - // 找到对应的飞行器ID - const aircraft = this.aircrafts.find(a => a.projectId === data.projectId); - if (aircraft) { - this.currentAircraftId = aircraft.id; - } + this.currentAircraftId = data.aircraftId; this.updateWebview(); break; case 'openContainerConfig': - this.currentView = 'container'; + this.currentView = 'configs'; this.currentContainerId = data.containerId; this.updateWebview(); break; - case 'goBackToManagement': - this.currentView = 'management'; - this.updateWebview(); - break; + // 修复返回按钮的消息处理 case 'goBackToProjects': this.currentView = 'projects'; this.updateWebview(); break; - case 'goBackToAircraft': + case 'goBackToAircrafts': this.currentView = 'aircrafts'; this.updateWebview(); break; + case 'goBackToContainers': + this.currentView = 'containers'; + this.updateWebview(); + break; case 'updateProjectName': this.updateProjectName(data.projectId, data.name); break; case 'createProject': this.createProject(data.name); break; + case 'updateAircraftName': + this.updateAircraftName(data.aircraftId, data.name); + break; + case 'createAircraft': + this.createAircraft(data.name); + break; case 'updateContainerName': this.updateContainerName(data.containerId, data.name); break; @@ -135,6 +123,9 @@ class ConfigPanel { case 'deleteProject': this.deleteProject(data.projectId); break; + case 'deleteAircraft': + this.deleteAircraft(data.aircraftId); + break; case 'deleteContainer': this.deleteContainer(data.containerId); break; @@ -144,10 +135,11 @@ class ConfigPanel { } }); } + // ... 其余方法保持不变(selectProjectPath, updateProjectName, createProject等) // === 项目路径选择 === async selectProjectPath(projectId, projectName) { try { - // 提供两种方式:选择现有路径或输入新路径 + // 选择现有路径或输入新路径 const choice = await vscode.window.showQuickPick([ { label: '$(folder) 选择现有文件夹', @@ -215,7 +207,7 @@ class ConfigPanel { return null; } } - // === 项目相关方法 === + // 更新项目名 updateProjectName(projectId, newName) { const project = this.projects.find(p => p.id === projectId); if (project) { @@ -224,6 +216,7 @@ class ConfigPanel { this.updateWebview(); } } + // 创建新项目 createProject(name) { const newId = 'p' + (this.projects.length + 1); const newProject = { @@ -231,18 +224,14 @@ class ConfigPanel { name: name }; this.projects.push(newProject); - // 同时创建一个默认的飞行器配置 - const newAircraftId = 'a' + (this.aircrafts.length + 1); - this.aircrafts.push({ - id: newAircraftId, - name: `${name}配置`, - projectId: newId - }); vscode.window.showInformationMessage(`新建项目: ${name}`); this.updateWebview(); } + // 删除项目 deleteProject(projectId) { - // 删除项目 + const project = this.projects.find(p => p.id === projectId); + if (!project) + return; this.projects = this.projects.filter(p => p.id !== projectId); // 删除相关的飞行器 const relatedAircrafts = this.aircrafts.filter(a => a.projectId === projectId); @@ -255,10 +244,49 @@ class ConfigPanel { this.configs = this.configs.filter(cfg => !containerIds.includes(cfg.containerId)); // 删除项目路径映射 this.projectPaths.delete(projectId); - vscode.window.showInformationMessage(`删除项目: ${projectId}`); + vscode.window.showInformationMessage(`删除项目: ${project.name}`); this.updateWebview(); } - // === 容器相关方法 === + // 更新飞行器名 + updateAircraftName(aircraftId, newName) { + const aircraft = this.aircrafts.find(a => a.id === aircraftId); + if (aircraft) { + aircraft.name = newName; + vscode.window.showInformationMessage(`飞行器名称更新: ${newName}`); + this.updateWebview(); + } + } + // 创建新飞行器 + createAircraft(name) { + if (!this.currentProjectId) { + vscode.window.showErrorMessage('无法创建飞行器:未找到当前项目'); + return; + } + const newId = 'a' + (this.aircrafts.length + 1); + const newAircraft = { + id: newId, + name: name, + projectId: this.currentProjectId + }; + this.aircrafts.push(newAircraft); + vscode.window.showInformationMessage(`新建飞行器: ${name}`); + this.updateWebview(); + } + // 删除飞行器 + deleteAircraft(aircraftId) { + const aircraft = this.aircrafts.find(a => a.id === aircraftId); + if (!aircraft) + return; + this.aircrafts = this.aircrafts.filter(a => a.id !== aircraftId); + // 删除相关的容器 + this.containers = this.containers.filter(c => c.aircraftId !== aircraftId); + // 删除相关的配置 + const containerIds = this.containers.filter(c => c.aircraftId === aircraftId).map(c => c.id); + this.configs = this.configs.filter(cfg => !containerIds.includes(cfg.containerId)); + vscode.window.showInformationMessage(`删除飞行器: ${aircraft.name}`); + this.updateWebview(); + } + // 更新容器名 updateContainerName(containerId, newName) { const container = this.containers.find(c => c.id === containerId); if (container) { @@ -267,6 +295,7 @@ class ConfigPanel { this.updateWebview(); } } + // 创建新容器 createContainer(name) { console.log('创建容器,当前飞行器ID:', this.currentAircraftId); if (!this.currentAircraftId) { @@ -282,34 +311,38 @@ class ConfigPanel { this.containers.push(newContainer); // 创建两个默认配置文件 const configCount = this.configs.length; - // 第一个配置文件:Dockerfile + // 第一个配置文件 this.configs.push({ id: 'cfg' + (configCount + 1), - name: 'Docker配置', - fileName: 'Dockerfile', + name: '配置1', + fileName: 'config.sh', content: `# ${name} 的 Dockerfile\nFROM ubuntu:20.04\n\n# 设置工作目录\nWORKDIR /app\n\n# 复制文件\nCOPY . .\n\n# 安装依赖\nRUN apt-get update && apt-get install -y \\\n python3 \\\n python3-pip\n\n# 暴露端口\nEXPOSE 8080\n\n# 启动命令\nCMD ["python3", "app.py"]`, containerId: newId }); - // 第二个配置文件:docker-compose.yml + // 第二个配置文件 this.configs.push({ id: 'cfg' + (configCount + 2), - name: '编排配置', - fileName: 'docker-compose.yml', + name: '配置2', + fileName: 'config.sh', content: `# ${name} 的 Docker Compose 配置\nversion: '3.8'\n\nservices:\n ${name.toLowerCase().replace(/\\s+/g, '-')}:\n build: .\n container_name: ${name}\n ports:\n - "8080:8080"\n environment:\n - NODE_ENV=production\n volumes:\n - ./data:/app/data\n restart: unless-stopped`, containerId: newId }); vscode.window.showInformationMessage(`新建容器: ${name} (包含2个默认配置文件)`); this.updateWebview(); } + // 删除容器 deleteContainer(containerId) { + const container = this.containers.find(c => c.id === containerId); + if (!container) + return; // 删除容器 this.containers = this.containers.filter(c => c.id !== containerId); // 删除相关的配置 this.configs = this.configs.filter(cfg => cfg.containerId !== containerId); - vscode.window.showInformationMessage(`删除容器: ${containerId}`); + vscode.window.showInformationMessage(`删除容器: ${container.name}`); this.updateWebview(); } - // === 配置相关方法 === + // 更新配置名 updateConfigName(configId, newName) { const config = this.configs.find(c => c.id === configId); if (config) { @@ -318,6 +351,7 @@ class ConfigPanel { this.updateWebview(); } } + // 更新文件名 async updateConfigFileName(configId, fileName) { const config = this.configs.find(c => c.id === configId); if (config) { @@ -326,7 +360,7 @@ class ConfigPanel { this.updateWebview(); } } - // 创建配置文件 + // 创建新配置文件 createConfig(name) { const newId = 'cfg' + (this.configs.length + 1); const newConfig = { @@ -426,35 +460,32 @@ class ConfigPanel { } getWebviewContent() { switch (this.currentView) { - case 'management': - return this.projectManagementView.render({ + case 'projects': + return this.projectView.render({ projects: this.projects, projectPaths: this.projectPaths }); - case 'projects': - return this.projectListView.render({ - projects: this.projects - }); case 'aircrafts': + const projectAircrafts = this.aircrafts.filter(a => a.projectId === this.currentProjectId); + return this.aircraftView.render({ + aircrafts: projectAircrafts + }); + case 'containers': const currentProject = this.projects.find(p => p.id === this.currentProjectId); - const projectAircraft = this.aircrafts.find(a => a.projectId === this.currentProjectId); - if (projectAircraft) { - this.currentAircraftId = projectAircraft.id; - } const projectContainers = this.containers.filter(c => c.aircraftId === this.currentAircraftId); - return this.aircraftConfigView.render({ + return this.containerView.render({ project: currentProject, containers: projectContainers }); - case 'container': + case 'configs': const currentContainer = this.containers.find(c => c.id === this.currentContainerId); const containerConfigs = this.configs.filter(cfg => cfg.containerId === this.currentContainerId); - return this.containerConfigView.render({ + return this.configView.render({ container: currentContainer, configs: containerConfigs }); default: - return this.projectManagementView.render({ + return this.projectView.render({ projects: this.projects, projectPaths: this.projectPaths }); diff --git a/out/panels/ConfigPanel.js.map b/out/panels/ConfigPanel.js.map index ee4da3e..ecb3d5c 100644 --- a/out/panels/ConfigPanel.js.map +++ b/out/panels/ConfigPanel.js.map @@ -1 +1 @@ -{"version":3,"file":"ConfigPanel.js","sourceRoot":"","sources":["../../src/panels/ConfigPanel.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ConfigPanel.js","sourceRoot":"","sources":["../../src/panels/ConfigPanel.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/out/panels/views/AircraftView.js b/out/panels/views/AircraftView.js new file mode 100644 index 0000000..abdc96a --- /dev/null +++ b/out/panels/views/AircraftView.js @@ -0,0 +1,204 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AircraftView = void 0; +// src/panels/views/AircraftView.ts +const BaseView_1 = require("./BaseView"); +class AircraftView extends BaseView_1.BaseView { + render(data) { + const aircrafts = data?.aircrafts || []; + // 生成飞行器列表的 HTML + const aircraftsHtml = aircrafts.map((aircraft) => { + return ` + + + 🛸 ${aircraft.name} + + + 配置 + + + + + + `; + }).join(''); + return ` + + + + + 飞行器管理 + ${this.getStyles()} + + +
+

🚀 飞行器管理

+ +
+ + + + + + + + + + ${aircraftsHtml} + + + + +
飞行器配置操作
+ +
+ + + +`; + } +} +exports.AircraftView = AircraftView; +//# sourceMappingURL=AircraftView.js.map \ No newline at end of file diff --git a/out/panels/views/AircraftView.js.map b/out/panels/views/AircraftView.js.map new file mode 100644 index 0000000..1ffca0e --- /dev/null +++ b/out/panels/views/AircraftView.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AircraftView.js","sourceRoot":"","sources":["../../../src/panels/views/AircraftView.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AACnC,yCAAsC;AAEtC,MAAa,YAAa,SAAQ,mBAAQ;IACtC,MAAM,CAAC,IAA2B;QAC9B,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;QAExC,gBAAgB;QAChB,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAa,EAAE,EAAE;YAClD,OAAO;;;wEAGqD,QAAQ,CAAC,EAAE,OAAO,QAAQ,CAAC,IAAI,UAAU,QAAQ,CAAC,IAAI;;;2EAGnD,QAAQ,CAAC,EAAE;;;0EAGZ,QAAQ,CAAC,EAAE;;;aAGxE,CAAC;QACN,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEZ,OAAO;;;;;;MAMT,IAAI,CAAC,SAAS,EAAE;;;;;;;;;;;;;;;;cAgBR,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAyJnB,CAAC;IACL,CAAC;CACJ;AAtMD,oCAsMC"} \ No newline at end of file diff --git a/out/panels/views/ConfigView.js b/out/panels/views/ConfigView.js new file mode 100644 index 0000000..b1bfba6 --- /dev/null +++ b/out/panels/views/ConfigView.js @@ -0,0 +1,271 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ConfigView = void 0; +// src/panels/views/ConfigView.ts +const BaseView_1 = require("./BaseView"); +class ConfigView extends BaseView_1.BaseView { + render(data) { + const container = data?.container; + const configs = data?.configs || []; + // 生成配置列表的 HTML - 添加文件名编辑功能 + const configsHtml = configs.map((config) => ` + + + 🔧 ${config.name} + + + 📄 ${config.fileName} + + + + + + `).join(''); + return ` + + + + + 配置管理 + ${this.getStyles()} + + +
+

⚙️ 配置管理 - ${container?.name || '未知容器'}

+ +
+ + + + + + + + + + + ${configsHtml} + + + + +
配置文件操作
+ +
+ + + + + + +`; + } +} +exports.ConfigView = ConfigView; +//# sourceMappingURL=ConfigView.js.map \ No newline at end of file diff --git a/out/panels/views/ConfigView.js.map b/out/panels/views/ConfigView.js.map new file mode 100644 index 0000000..a6e293a --- /dev/null +++ b/out/panels/views/ConfigView.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ConfigView.js","sourceRoot":"","sources":["../../../src/panels/views/ConfigView.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,yCAAsC;AAGtC,MAAa,UAAW,SAAQ,mBAAQ;IACpC,MAAM,CAAC,IAA0B;QAC7B,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;QAEpC,2BAA2B;QAC3B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAsB,EAAE,EAAE,CAAC;;;sEAGE,MAAM,CAAC,EAAE,OAAO,MAAM,CAAC,IAAI,UAAU,MAAM,CAAC,IAAI;;;oEAGlD,MAAM,CAAC,EAAE,OAAO,MAAM,CAAC,QAAQ,UAAU,MAAM,CAAC,QAAQ;;;wEAGpD,MAAM,CAAC,EAAE;;;SAGxE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEZ,OAAO;;;;;;MAMT,IAAI,CAAC,SAAS,EAAE;;;;gFAI0D,SAAS,EAAE,IAAI,IAAI,MAAM;;;;;;;;;;;;;cAa3F,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4NjB,CAAC;IACL,CAAC;CACJ;AAzQD,gCAyQC"} \ No newline at end of file diff --git a/out/panels/views/ContainerView.js b/out/panels/views/ContainerView.js new file mode 100644 index 0000000..f9562b8 --- /dev/null +++ b/out/panels/views/ContainerView.js @@ -0,0 +1,204 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ContainerView = void 0; +// src/panels/views/ContainerView.ts +const BaseView_1 = require("./BaseView"); +class ContainerView extends BaseView_1.BaseView { + render(data) { + const project = data?.project; + const containers = data?.containers || []; + // 生成容器列表的 HTML + const containersHtml = containers.map((container) => ` + + + 📦 ${container.name} + + + 配置文件 + + + + + + `).join(''); + return ` + + + + + 容器管理 + ${this.getStyles()} + + +
+

📋 容器管理 - ${project?.name || '未知项目'}

+ +
+ + + + + + + + + + + ${containersHtml} + + + + +
容器配置文件操作
+ +
+ + + +`; + } +} +exports.ContainerView = ContainerView; +//# sourceMappingURL=ContainerView.js.map \ No newline at end of file diff --git a/out/panels/views/ContainerView.js.map b/out/panels/views/ContainerView.js.map new file mode 100644 index 0000000..b8d9c99 --- /dev/null +++ b/out/panels/views/ContainerView.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ContainerView.js","sourceRoot":"","sources":["../../../src/panels/views/ContainerView.ts"],"names":[],"mappings":";;;AAAA,oCAAoC;AACpC,yCAAsC;AAGtC,MAAa,aAAc,SAAQ,mBAAQ;IACvC,MAAM,CAAC,IAAyB;QAC5B,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,EAAE,CAAC;QAE1C,eAAe;QACf,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAA4B,EAAE,EAAE,CAAC;;;yEAGP,SAAS,CAAC,EAAE,OAAO,SAAS,CAAC,IAAI,UAAU,SAAS,CAAC,IAAI;;;4EAGtD,SAAS,CAAC,EAAE;;;2EAGb,SAAS,CAAC,EAAE;;;SAG9E,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEZ,OAAO;;;;;;MAMT,IAAI,CAAC,SAAS,EAAE;;;;gFAI0D,OAAO,EAAE,IAAI,IAAI,MAAM;;;;;;;;;;;;;cAazF,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAyJpB,CAAC;IACL,CAAC;CACJ;AAtMD,sCAsMC"} \ No newline at end of file diff --git a/out/panels/views/ProjectListView.js b/out/panels/views/ProjectListView.js index e026734..1de2436 100644 --- a/out/panels/views/ProjectListView.js +++ b/out/panels/views/ProjectListView.js @@ -6,11 +6,16 @@ const BaseView_1 = require("./BaseView"); class ProjectListView extends BaseView_1.BaseView { render(data) { const projects = data?.projects || []; - // 生成项目列表的 HTML - const projectsHtml = projects.map((project) => ` + const aircrafts = data?.aircrafts || []; + // 生成项目列表的 HTML - 显示飞行器名称 + const projectsHtml = projects.map((project) => { + // 找到对应的飞行器 - 使用内联类型定义 + const aircraft = aircrafts.find((a) => a.projectId === project.id); + const displayName = aircraft ? aircraft.name : project.name; + return ` - 🛸 ${project.name} + 🛸 ${displayName} 配置 @@ -19,7 +24,8 @@ class ProjectListView extends BaseView_1.BaseView { - `).join(''); + `; + }).join(''); return ` diff --git a/out/panels/views/ProjectListView.js.map b/out/panels/views/ProjectListView.js.map index 9f9050a..e57e213 100644 --- a/out/panels/views/ProjectListView.js.map +++ b/out/panels/views/ProjectListView.js.map @@ -1 +1 @@ -{"version":3,"file":"ProjectListView.js","sourceRoot":"","sources":["../../../src/panels/views/ProjectListView.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACtC,yCAAsC;AAGtC,MAAa,eAAgB,SAAQ,mBAAQ;IACzC,MAAM,CAAC,IAAsB;QACzB,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC;QAEtC,eAAe;QACf,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAwB,EAAE,EAAE,CAAC;;;uEAGD,OAAO,CAAC,EAAE,OAAO,OAAO,CAAC,IAAI,UAAU,OAAO,CAAC,IAAI;;;2EAG/C,OAAO,CAAC,EAAE;;;yEAGZ,OAAO,CAAC,EAAE;;;SAG1E,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEZ,OAAO;;;;;;MAMT,IAAI,CAAC,SAAS,EAAE;;;;;;;;;;;;;;;;cAgBR,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAyJlB,CAAC;IACL,CAAC;CACJ;AApMD,0CAoMC"} \ No newline at end of file +{"version":3,"file":"ProjectListView.js","sourceRoot":"","sources":["../../../src/panels/views/ProjectListView.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACtC,yCAAsC;AAGtC,MAAa,eAAgB,SAAQ,mBAAQ;IACzC,MAAM,CAAC,IAAsB;QACzB,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;QAExC,yBAAyB;QACzB,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAwB,EAAE,EAAE;YAC3D,sBAAsB;YACtB,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;YACxE,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;YAE5D,OAAO;;;uEAGoD,OAAO,CAAC,EAAE,OAAO,OAAO,CAAC,IAAI,UAAU,WAAW;;;2EAG9C,OAAO,CAAC,EAAE;;;yEAGZ,OAAO,CAAC,EAAE;;;aAGtE,CAAC;QACN,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEZ,OAAO;;;;;;MAMT,IAAI,CAAC,SAAS,EAAE;;;;;;;;;;;;;;;;cAgBR,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAyJlB,CAAC;IACL,CAAC;CACJ;AA3MD,0CA2MC"} \ No newline at end of file diff --git a/out/panels/views/ProjectView.js b/out/panels/views/ProjectView.js new file mode 100644 index 0000000..fba0196 --- /dev/null +++ b/out/panels/views/ProjectView.js @@ -0,0 +1,256 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ProjectView = void 0; +// src/panels/views/ProjectView.ts +const BaseView_1 = require("./BaseView"); +class ProjectView extends BaseView_1.BaseView { + render(data) { + const projects = data?.projects || []; + const projectPaths = data?.projectPaths || new Map(); + const projectsHtml = projects.map((project) => { + const isConfigured = projectPaths.has(project.id); + const statusIcon = isConfigured ? '✅' : '⚙️'; + const statusText = isConfigured ? '已配置' : '待配置'; + return ` + + + ${statusIcon} ${project.name} +
+ ${statusText}${isConfigured ? ` - ${projectPaths.get(project.id)}` : ''} +
+ + + + ${isConfigured ? '打开' : '配置'} + + + + + + + `; + }).join(''); + return ` + + + + + 数字卫星构建平台 + ${this.getStyles()} + + + +

🛰️数字卫星构建平台

+ + + + + + + + + + ${projectsHtml} + + + + +
项目配置操作
+ +
+ + + +`; + } +} +exports.ProjectView = ProjectView; +//# sourceMappingURL=ProjectView.js.map \ No newline at end of file diff --git a/out/panels/views/ProjectView.js.map b/out/panels/views/ProjectView.js.map new file mode 100644 index 0000000..8212267 --- /dev/null +++ b/out/panels/views/ProjectView.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProjectView.js","sourceRoot":"","sources":["../../../src/panels/views/ProjectView.ts"],"names":[],"mappings":";;;AAAA,kCAAkC;AAClC,yCAAsC;AAGtC,MAAa,WAAY,SAAQ,mBAAQ;IACrC,MAAM,CAAC,IAA0E;QAC7E,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC;QACtC,MAAM,YAAY,GAAG,IAAI,EAAE,YAAY,IAAI,IAAI,GAAG,EAAE,CAAC;QAErD,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAwB,EAAE,EAAE;YAC3D,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7C,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YAEhD,OAAO;;;kEAG+C,OAAO,CAAC,EAAE,KAAK,UAAU,IAAI,OAAO,CAAC,IAAI;;0BAEjF,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;;;;yEAItB,OAAO,CAAC,EAAE,OAAO,OAAO,CAAC,IAAI,MAAM,YAAY;0BAC9F,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;;;;yEAIqB,OAAO,CAAC,EAAE;;;SAG1E,CAAA;QAAA,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEb,OAAO;;;;;;MAMT,IAAI,CAAC,SAAS,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAuCR,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA8KlB,CAAC;IACL,CAAC;CACJ;AA1PD,kCA0PC"} \ No newline at end of file diff --git a/src/panels/ConfigPanel.ts b/src/panels/ConfigPanel.ts index c1fd61b..31d8a0f 100644 --- a/src/panels/ConfigPanel.ts +++ b/src/panels/ConfigPanel.ts @@ -1,9 +1,9 @@ // src/panels/ConfigPanel.ts import * as vscode from 'vscode'; -import { ProjectManagementView } from './views/ProjectManagementView'; -import { ProjectListView } from './views/ProjectListView'; -import { AircraftConfigView } from './views/AircraftConfigView'; -import { ContainerConfigView } from './views/ContainerConfigView'; +import { ProjectView } from './views/ProjectView'; +import { AircraftView } from './views/AircraftView'; +import { ContainerView } from './views/ContainerView'; +import { ConfigView } from './views/ConfigView'; // 数据模型接口 interface Project { @@ -36,43 +36,25 @@ export class ConfigPanel { private readonly panel: vscode.WebviewPanel; private readonly extensionUri: vscode.Uri; - private currentView: 'management' | 'projects' | 'aircrafts' | 'container' = 'management'; + private currentView: 'projects' | 'aircrafts' | 'containers' | 'configs' = 'projects'; private currentProjectId: string = ''; private currentAircraftId: string = ''; private currentContainerId: string = ''; // 数据存储 - private projects: Project[] = [ - { id: 'p1', name: '项目1' }, - { id: 'p2', name: '项目2' } - ]; - - private aircrafts: Aircraft[] = [ - { id: 'a1', name: '飞行器配置1', projectId: 'p1' }, - { id: 'a2', name: '飞行器配置2', projectId: 'p2' } - ]; - - private containers: Container[] = [ - { id: 'c1', name: '容器1', aircraftId: 'a1' }, - { id: 'c2', name: '容器2', aircraftId: 'a1' }, - { id: 'c3', name: '容器1', aircraftId: 'a2' } - ]; - - private configs: Config[] = [ - { id: 'cfg1', name: '配置1', fileName: 'config.yaml', content: '# 配置1内容', containerId: 'c1' }, - { id: 'cfg2', name: '配置2', fileName: 'settings.json', content: '# 配置2内容', containerId: 'c1' }, - { id: 'cfg3', name: '配置1', fileName: 'docker-compose.yml', content: '# 配置1内容', containerId: 'c2' }, - { id: 'cfg4', name: '配置1', fileName: 'config.yaml', content: '# 配置1内容', containerId: 'c3' } - ]; + private projects: Project[] = []; + private aircrafts: Aircraft[] = []; + private containers: Container[] = []; + private configs: Config[] = []; // 项目存储路径映射 private projectPaths: Map = new Map(); // 视图实例 - private readonly projectManagementView: ProjectManagementView; - private readonly projectListView: ProjectListView; - private readonly aircraftConfigView: AircraftConfigView; - private readonly containerConfigView: ContainerConfigView; + private readonly projectView: ProjectView; + private readonly aircraftView: AircraftView; + private readonly containerView: ContainerView; + private readonly configView: ConfigView; public static createOrShow(extensionUri: vscode.Uri) { const column = vscode.window.activeTextEditor?.viewColumn || vscode.ViewColumn.One; @@ -83,8 +65,8 @@ export class ConfigPanel { } const panel = vscode.window.createWebviewPanel( - 'dockerConfigTest', - 'Docker配置测试', + 'DCSP', + '数字卫星构建平台', column, { enableScripts: true, @@ -101,10 +83,10 @@ export class ConfigPanel { this.extensionUri = extensionUri; // 初始化各个视图 - this.projectManagementView = new ProjectManagementView(extensionUri); - this.projectListView = new ProjectListView(extensionUri); - this.aircraftConfigView = new AircraftConfigView(extensionUri); - this.containerConfigView = new ContainerConfigView(extensionUri); + this.projectView = new ProjectView(extensionUri); + this.aircraftView = new AircraftView(extensionUri); + this.containerView = new ContainerView(extensionUri); + this.configView = new ConfigView(extensionUri); this.updateWebview(); this.setupMessageListener(); @@ -120,7 +102,7 @@ export class ConfigPanel { case 'configureProject': const selectedPath = await this.selectProjectPath(data.projectId, data.projectName); if (selectedPath) { - this.currentView = 'projects'; + this.currentView = 'aircrafts'; this.currentProjectId = data.projectId; this.updateWebview(); } @@ -128,43 +110,40 @@ export class ConfigPanel { case 'openProject': // 已配置的项目直接打开 - this.currentView = 'projects'; + this.currentView = 'aircrafts'; this.currentProjectId = data.projectId; this.updateWebview(); break; case 'openAircraftConfig': - this.currentView = 'aircrafts'; + this.currentView = 'containers'; this.currentProjectId = data.projectId; - // 找到对应的飞行器ID - const aircraft = this.aircrafts.find(a => a.projectId === data.projectId); - if (aircraft) { - this.currentAircraftId = aircraft.id; - } + this.currentAircraftId = data.aircraftId; this.updateWebview(); break; case 'openContainerConfig': - this.currentView = 'container'; + this.currentView = 'configs'; this.currentContainerId = data.containerId; this.updateWebview(); break; - case 'goBackToManagement': - this.currentView = 'management'; - this.updateWebview(); - break; - + // 修复返回按钮的消息处理 case 'goBackToProjects': this.currentView = 'projects'; this.updateWebview(); break; - case 'goBackToAircraft': + case 'goBackToAircrafts': this.currentView = 'aircrafts'; this.updateWebview(); break; + case 'goBackToContainers': + this.currentView = 'containers'; + this.updateWebview(); + break; + case 'updateProjectName': this.updateProjectName(data.projectId, data.name); break; @@ -173,6 +152,14 @@ export class ConfigPanel { this.createProject(data.name); break; + case 'updateAircraftName': + this.updateAircraftName(data.aircraftId, data.name); + break; + + case 'createAircraft': + this.createAircraft(data.name); + break; + case 'updateContainerName': this.updateContainerName(data.containerId, data.name); break; @@ -205,6 +192,10 @@ export class ConfigPanel { this.deleteProject(data.projectId); break; + case 'deleteAircraft': + this.deleteAircraft(data.aircraftId); + break; + case 'deleteContainer': this.deleteContainer(data.containerId); break; @@ -216,10 +207,11 @@ export class ConfigPanel { }); } + // ... 其余方法保持不变(selectProjectPath, updateProjectName, createProject等) // === 项目路径选择 === private async selectProjectPath(projectId: string, projectName: string): Promise { try { - // 提供两种方式:选择现有路径或输入新路径 + // 选择现有路径或输入新路径 const choice = await vscode.window.showQuickPick( [ { @@ -294,7 +286,7 @@ export class ConfigPanel { } } - // === 项目相关方法 === + // 更新项目名 private updateProjectName(projectId: string, newName: string) { const project = this.projects.find(p => p.id === projectId); if (project) { @@ -304,6 +296,7 @@ export class ConfigPanel { } } + // 创建新项目 private createProject(name: string) { const newId = 'p' + (this.projects.length + 1); const newProject: Project = { @@ -311,43 +304,79 @@ export class ConfigPanel { name: name }; this.projects.push(newProject); - - // 同时创建一个默认的飞行器配置 - const newAircraftId = 'a' + (this.aircrafts.length + 1); - this.aircrafts.push({ - id: newAircraftId, - name: `${name}配置`, - projectId: newId - }); - + vscode.window.showInformationMessage(`新建项目: ${name}`); this.updateWebview(); } + // 删除项目 private deleteProject(projectId: string) { - // 删除项目 + const project = this.projects.find(p => p.id === projectId); + if (!project) return; + this.projects = this.projects.filter(p => p.id !== projectId); - // 删除相关的飞行器 const relatedAircrafts = this.aircrafts.filter(a => a.projectId === projectId); const aircraftIds = relatedAircrafts.map(a => a.id); this.aircrafts = this.aircrafts.filter(a => a.projectId !== projectId); - // 删除相关的容器 this.containers = this.containers.filter(c => !aircraftIds.includes(c.aircraftId)); - // 删除相关的配置 const containerIds = this.containers.filter(c => aircraftIds.includes(c.aircraftId)).map(c => c.id); this.configs = this.configs.filter(cfg => !containerIds.includes(cfg.containerId)); - // 删除项目路径映射 this.projectPaths.delete(projectId); - vscode.window.showInformationMessage(`删除项目: ${projectId}`); + vscode.window.showInformationMessage(`删除项目: ${project.name}`); this.updateWebview(); } - // === 容器相关方法 === + // 更新飞行器名 + private updateAircraftName(aircraftId: string, newName: string) { + const aircraft = this.aircrafts.find(a => a.id === aircraftId); + if (aircraft) { + aircraft.name = newName; + vscode.window.showInformationMessage(`飞行器名称更新: ${newName}`); + this.updateWebview(); + } + } + + // 创建新飞行器 + private createAircraft(name: string) { + if (!this.currentProjectId) { + vscode.window.showErrorMessage('无法创建飞行器:未找到当前项目'); + return; + } + + const newId = 'a' + (this.aircrafts.length + 1); + const newAircraft: Aircraft = { + id: newId, + name: name, + projectId: this.currentProjectId + }; + this.aircrafts.push(newAircraft); + + vscode.window.showInformationMessage(`新建飞行器: ${name}`); + this.updateWebview(); + } + + // 删除飞行器 + private deleteAircraft(aircraftId: string) { + const aircraft = this.aircrafts.find(a => a.id === aircraftId); + if (!aircraft) return; + + this.aircrafts = this.aircrafts.filter(a => a.id !== aircraftId); + // 删除相关的容器 + this.containers = this.containers.filter(c => c.aircraftId !== aircraftId); + // 删除相关的配置 + const containerIds = this.containers.filter(c => c.aircraftId === aircraftId).map(c => c.id); + this.configs = this.configs.filter(cfg => !containerIds.includes(cfg.containerId)); + + vscode.window.showInformationMessage(`删除飞行器: ${aircraft.name}`); + this.updateWebview(); + } + + // 更新容器名 private updateContainerName(containerId: string, newName: string) { const container = this.containers.find(c => c.id === containerId); if (container) { @@ -357,6 +386,7 @@ export class ConfigPanel { } } + // 创建新容器 private createContainer(name: string) { console.log('创建容器,当前飞行器ID:', this.currentAircraftId); @@ -377,20 +407,20 @@ export class ConfigPanel { // 创建两个默认配置文件 const configCount = this.configs.length; - // 第一个配置文件:Dockerfile + // 第一个配置文件 this.configs.push({ id: 'cfg' + (configCount + 1), - name: 'Docker配置', - fileName: 'Dockerfile', + name: '配置1', + fileName: 'config.sh', content: `# ${name} 的 Dockerfile\nFROM ubuntu:20.04\n\n# 设置工作目录\nWORKDIR /app\n\n# 复制文件\nCOPY . .\n\n# 安装依赖\nRUN apt-get update && apt-get install -y \\\n python3 \\\n python3-pip\n\n# 暴露端口\nEXPOSE 8080\n\n# 启动命令\nCMD ["python3", "app.py"]`, containerId: newId }); - // 第二个配置文件:docker-compose.yml + // 第二个配置文件 this.configs.push({ id: 'cfg' + (configCount + 2), - name: '编排配置', - fileName: 'docker-compose.yml', + name: '配置2', + fileName: 'config.sh', content: `# ${name} 的 Docker Compose 配置\nversion: '3.8'\n\nservices:\n ${name.toLowerCase().replace(/\\s+/g, '-')}:\n build: .\n container_name: ${name}\n ports:\n - "8080:8080"\n environment:\n - NODE_ENV=production\n volumes:\n - ./data:/app/data\n restart: unless-stopped`, containerId: newId }); @@ -399,18 +429,22 @@ export class ConfigPanel { this.updateWebview(); } + // 删除容器 private deleteContainer(containerId: string) { + const container = this.containers.find(c => c.id === containerId); + if (!container) return; + // 删除容器 this.containers = this.containers.filter(c => c.id !== containerId); // 删除相关的配置 this.configs = this.configs.filter(cfg => cfg.containerId !== containerId); - vscode.window.showInformationMessage(`删除容器: ${containerId}`); + vscode.window.showInformationMessage(`删除容器: ${container.name}`); this.updateWebview(); } - // === 配置相关方法 === + // 更新配置名 private updateConfigName(configId: string, newName: string) { const config = this.configs.find(c => c.id === configId); if (config) { @@ -420,6 +454,7 @@ export class ConfigPanel { } } + // 更新文件名 private async updateConfigFileName(configId: string, fileName: string): Promise { const config = this.configs.find(c => c.id === configId); if (config) { @@ -429,7 +464,7 @@ export class ConfigPanel { } } - // 创建配置文件 + // 创建新配置文件 private createConfig(name: string) { const newId = 'cfg' + (this.configs.length + 1); const newConfig: Config = { @@ -540,39 +575,34 @@ export class ConfigPanel { private getWebviewContent(): string { switch (this.currentView) { - case 'management': - return this.projectManagementView.render({ + case 'projects': + return this.projectView.render({ projects: this.projects, projectPaths: this.projectPaths }); - case 'projects': - return this.projectListView.render({ - projects: this.projects - }); case 'aircrafts': + const projectAircrafts = this.aircrafts.filter(a => a.projectId === this.currentProjectId); + return this.aircraftView.render({ + aircrafts: projectAircrafts + }); + case 'containers': const currentProject = this.projects.find(p => p.id === this.currentProjectId); - const projectAircraft = this.aircrafts.find(a => a.projectId === this.currentProjectId); - - if (projectAircraft) { - this.currentAircraftId = projectAircraft.id; - } - const projectContainers = this.containers.filter(c => c.aircraftId === this.currentAircraftId); - return this.aircraftConfigView.render({ + return this.containerView.render({ project: currentProject, containers: projectContainers }); - case 'container': + case 'configs': const currentContainer = this.containers.find(c => c.id === this.currentContainerId); const containerConfigs = this.configs.filter(cfg => cfg.containerId === this.currentContainerId); - return this.containerConfigView.render({ + return this.configView.render({ container: currentContainer, configs: containerConfigs }); default: - return this.projectManagementView.render({ + return this.projectView.render({ projects: this.projects, projectPaths: this.projectPaths }); diff --git a/src/panels/types/ViewTypes.ts b/src/panels/types/ViewTypes.ts index 8e8aa94..dee98b5 100644 --- a/src/panels/types/ViewTypes.ts +++ b/src/panels/types/ViewTypes.ts @@ -17,8 +17,16 @@ export interface ConfigViewData { containerId: string; } +export interface AircraftViewData { + id: string; + name: string; + projectId: string; +} + export interface ProjectListData { + aircrafts?: AircraftViewData[]; projects: ProjectViewData[]; + } export interface AircraftConfigData { diff --git a/src/panels/views/ProjectListView.ts b/src/panels/views/AircraftView.ts similarity index 73% rename from src/panels/views/ProjectListView.ts rename to src/panels/views/AircraftView.ts index 92b1a0c..69bd7a5 100644 --- a/src/panels/views/ProjectListView.ts +++ b/src/panels/views/AircraftView.ts @@ -1,52 +1,53 @@ -// src/panels/views/ProjectListView.ts +// src/panels/views/AircraftView.ts import { BaseView } from './BaseView'; -import { ProjectListData, ProjectViewData } from '../types/ViewTypes'; -export class ProjectListView extends BaseView { - render(data?: ProjectListData): string { - const projects = data?.projects || []; +export class AircraftView extends BaseView { + render(data?: { aircrafts: any[] }): string { + const aircrafts = data?.aircrafts || []; - // 生成项目列表的 HTML - const projectsHtml = projects.map((project: ProjectViewData) => ` + // 生成飞行器列表的 HTML + const aircraftsHtml = aircrafts.map((aircraft: any) => { + return ` - 🛸 ${project.name} + 🛸 ${aircraft.name} - 配置 + 配置 - + - `).join(''); + `; + }).join(''); return ` - 飞行器项目管理 + 飞行器管理 ${this.getStyles()}
-

🚀 飞行器项目管理

- +

🚀 飞行器管理

+
- + - ${projectsHtml} + ${aircraftsHtml} @@ -55,16 +56,16 @@ export class ProjectListView extends BaseView {
项目飞行器 配置 操作
- +