From b6996c39226e8c057e9f9372223df69a6f49336c Mon Sep 17 00:00:00 2001 From: lizw-2015 <1183409807@qq.com> Date: Mon, 23 Jun 2025 12:03:26 +0800 Subject: [PATCH] =?UTF-8?q?feat(workbench):=20=E6=96=B0=E5=A2=9E=E6=A5=BC?= =?UTF-8?q?=E5=B1=82=E6=95=B0=E6=8D=AE=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 LccModelFloor 实体类和 QLccModelFloor 查询类 - 在 LccModelManager 中实现楼层数据的获取和更新方法 - 更新 WorldModel 中的 getCatalogData 方法,支持从服务器获取楼层数据 - 修改 FileMenu 中的保存逻辑,支持将编辑结果保存到服务器 - 优化 CatalogDefine 组件中的目录树数据获取 - 调整 config.ts 中的错误消息处理逻辑 --- src/config.ts | 2 +- src/core/manager/WorldModel.ts | 23 ++++++++++++++++++++--- src/editor/CatalogDefine.vue | 4 ++-- src/editor/menus/FileMenu.ts | 13 +++++++++---- 4 files changed, 32 insertions(+), 10 deletions(-) diff --git a/src/config.ts b/src/config.ts index e3838b9..0c8fb1e 100644 --- a/src/config.ts +++ b/src/config.ts @@ -42,7 +42,7 @@ function globalConfig() { const { data: { message, validMessageList } } = response; if (validMessageList) { err.message = "请求参数校验失败"; - } else if (message) { + } else { err.message = message ?? Constant.defHttpErrorMsg[response.status] ?? "服务器异常"; } } diff --git a/src/core/manager/WorldModel.ts b/src/core/manager/WorldModel.ts index 9576343..07bf596 100644 --- a/src/core/manager/WorldModel.ts +++ b/src/core/manager/WorldModel.ts @@ -1,5 +1,6 @@ -import _, { cloneDeep } from 'lodash' -import { reactive, watch } from 'vue' +import _ from 'lodash' +import { reactive } from 'vue' +import { Request } from "@ease-forge/shared"; import EventBus from '@/runtime/EventBus' import StateManager from '@/core/manager/StateManager.ts' import { getQueryParams, setQueryParam } from '@/utils/webutils.ts' @@ -187,6 +188,22 @@ export default class WorldModel { * 从服务器获取当前目录楼层的所有数据 */ async getCatalogData(catalogCode: string): Promise { + if(true) { + const res = await Request.request.get("/api/workbench/LccModelManager@getFloor", { params: {catalogCode,project_uuid:this.state.project_uuid} }); + let items :Array=[]; + if(res?.items) items = JSON.parse(res.items) ?? []; + const vdata: any = { + items: items as ItemJson[], + infos: {catalogCode, t: "floor" }, + isChanged: false, + catalog: _.cloneDeep(this.state.catalog), + server: this.state.server, + project_uuid: this.state.project_uuid, + catalogCode: catalogCode, + worldData: _.cloneDeep(this.state.worldData) + } + return Promise.resolve(vdata) + } const _____veryBigItemsData: any = await localforage.getItem('_____veryBigItemsData') if (!_____veryBigItemsData) { return Promise.reject('楼层数据未加载, catalogCode=' + catalogCode) @@ -200,7 +217,7 @@ export default class WorldModel { const items = _.cloneDeep(floor.items) delete floor.items - + console.log("floor", floor); const vdata: VData = { items: items as ItemJson[], infos: floor, diff --git a/src/editor/CatalogDefine.vue b/src/editor/CatalogDefine.vue index a0dc1e5..150adf8 100644 --- a/src/editor/CatalogDefine.vue +++ b/src/editor/CatalogDefine.vue @@ -3,7 +3,7 @@ import { computed, createVNode, reactive, useTemplateRef } from "vue"; import { ElButton, ElSpace, ElTree } from "element-plus"; import YvSrcEditor from "@/components/YvSrcEditor.vue"; import DataForm from "@/components/data-form/DataForm.vue"; -import {worldModel} from '@/core/manager/WorldModel.ts' +import { worldModel } from '@/core/manager/WorldModel.ts' import lodash from "lodash"; defineOptions({ @@ -42,7 +42,7 @@ const data: CatalogDefineData = {}; const tree = useTemplateRef>("treeRef"); const catalog = computed>(() => { // state.forceUpdateForCatalog; - return worldModel.value?.state?.catalog; + return worldModel?.state?.catalog; }); const catalogTree = computed(() => { const array = catalog.value; diff --git a/src/editor/menus/FileMenu.ts b/src/editor/menus/FileMenu.ts index 5f106fd..5789b72 100644 --- a/src/editor/menus/FileMenu.ts +++ b/src/editor/menus/FileMenu.ts @@ -60,7 +60,7 @@ export default defineMenu((menus) => { [ { name: 'open', label: '打开', icon: SvgCode.open, order: 1, tip: 'Ctrl+O', - click: async () => { + click2: async () => { worldModel.state.isOpened = false worldModel.state.isDraft = false worldModel.state.catalog = [] @@ -80,7 +80,7 @@ export default defineMenu((menus) => { system.clearLoading() } }, - click2: async () => { + click: async () => { let dialog: any = null system.showDialog(createVNode(OpenProject, { onCancel: () => dialog?.onClose(), @@ -88,7 +88,7 @@ export default defineMenu((menus) => { dialog?.onClose() const veryBigData = JSON.parse(row.otherData) veryBigData.catalog = JSON.parse(row.directoryData) - veryBigData.items = [] + if(!veryBigData.items) veryBigData.items = [] worldModel.state.isOpened = false worldModel.state.isDraft = false worldModel.state.catalog = [] @@ -126,7 +126,12 @@ export default defineMenu((menus) => { click: async () => { const viewport: Viewport = window['viewport'] const vdata: any = await viewport.stateManager.save() - console.log(system.json5.stringify(vdata.items)) + console.log(system.json5.stringify(vdata.items)); + await Request.request.post("/api/workbench/LccModelManager@addOrUpdateFloor", { + projectUuid: worldModel.state.project_uuid, + catalogCode: worldModel.state.catalogCode, + items: JSON.stringify(vdata.items), + }); } }, {