Browse Source

feat(workbench): 新增楼层数据管理功能

- 添加 LccModelFloor 实体类和 QLccModelFloor 查询类
- 在 LccModelManager 中实现楼层数据的获取和更新方法
- 更新 WorldModel 中的 getCatalogData 方法,支持从服务器获取楼层数据
- 修改 FileMenu 中的保存逻辑,支持将编辑结果保存到服务器
- 优化 CatalogDefine 组件中的目录树数据获取
- 调整 config.ts 中的错误消息处理逻辑
master
lizw-2015 6 months ago
parent
commit
b6996c3922
  1. 2
      src/config.ts
  2. 23
      src/core/manager/WorldModel.ts
  3. 4
      src/editor/CatalogDefine.vue
  4. 13
      src/editor/menus/FileMenu.ts

2
src/config.ts

@ -42,7 +42,7 @@ function globalConfig() {
const { data: { message, validMessageList } } = response; const { data: { message, validMessageList } } = response;
if (validMessageList) { if (validMessageList) {
err.message = "请求参数校验失败"; err.message = "请求参数校验失败";
} else if (message) { } else {
err.message = message ?? Constant.defHttpErrorMsg[response.status] ?? "服务器异常"; err.message = message ?? Constant.defHttpErrorMsg[response.status] ?? "服务器异常";
} }
} }

23
src/core/manager/WorldModel.ts

@ -1,5 +1,6 @@
import _, { cloneDeep } from 'lodash' import _ from 'lodash'
import { reactive, watch } from 'vue' import { reactive } from 'vue'
import { Request } from "@ease-forge/shared";
import EventBus from '@/runtime/EventBus' import EventBus from '@/runtime/EventBus'
import StateManager from '@/core/manager/StateManager.ts' import StateManager from '@/core/manager/StateManager.ts'
import { getQueryParams, setQueryParam } from '@/utils/webutils.ts' import { getQueryParams, setQueryParam } from '@/utils/webutils.ts'
@ -187,6 +188,22 @@ export default class WorldModel {
* *
*/ */
async getCatalogData(catalogCode: string): Promise<VData> { async getCatalogData(catalogCode: string): Promise<VData> {
if(true) {
const res = await Request.request.get("/api/workbench/LccModelManager@getFloor", { params: {catalogCode,project_uuid:this.state.project_uuid} });
let items :Array<any>=[];
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') const _____veryBigItemsData: any = await localforage.getItem('_____veryBigItemsData')
if (!_____veryBigItemsData) { if (!_____veryBigItemsData) {
return Promise.reject('楼层数据未加载, catalogCode=' + catalogCode) return Promise.reject('楼层数据未加载, catalogCode=' + catalogCode)
@ -200,7 +217,7 @@ export default class WorldModel {
const items = _.cloneDeep(floor.items) const items = _.cloneDeep(floor.items)
delete floor.items delete floor.items
console.log("floor", floor);
const vdata: VData = { const vdata: VData = {
items: items as ItemJson[], items: items as ItemJson[],
infos: floor, infos: floor,

4
src/editor/CatalogDefine.vue

@ -3,7 +3,7 @@ import { computed, createVNode, reactive, useTemplateRef } from "vue";
import { ElButton, ElSpace, ElTree } from "element-plus"; import { ElButton, ElSpace, ElTree } from "element-plus";
import YvSrcEditor from "@/components/YvSrcEditor.vue"; import YvSrcEditor from "@/components/YvSrcEditor.vue";
import DataForm from "@/components/data-form/DataForm.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"; import lodash from "lodash";
defineOptions({ defineOptions({
@ -42,7 +42,7 @@ const data: CatalogDefineData = {};
const tree = useTemplateRef<InstanceType<typeof ElTree>>("treeRef"); const tree = useTemplateRef<InstanceType<typeof ElTree>>("treeRef");
const catalog = computed<Array<any>>(() => { const catalog = computed<Array<any>>(() => {
// state.forceUpdateForCatalog; // state.forceUpdateForCatalog;
return worldModel.value?.state?.catalog; return worldModel?.state?.catalog;
}); });
const catalogTree = computed(() => { const catalogTree = computed(() => {
const array = catalog.value; const array = catalog.value;

13
src/editor/menus/FileMenu.ts

@ -60,7 +60,7 @@ export default defineMenu((menus) => {
[ [
{ {
name: 'open', label: '打开', icon: SvgCode.open, order: 1, tip: 'Ctrl+O', name: 'open', label: '打开', icon: SvgCode.open, order: 1, tip: 'Ctrl+O',
click: async () => { click2: async () => {
worldModel.state.isOpened = false worldModel.state.isOpened = false
worldModel.state.isDraft = false worldModel.state.isDraft = false
worldModel.state.catalog = [] worldModel.state.catalog = []
@ -80,7 +80,7 @@ export default defineMenu((menus) => {
system.clearLoading() system.clearLoading()
} }
}, },
click2: async () => { click: async () => {
let dialog: any = null let dialog: any = null
system.showDialog(createVNode(OpenProject, { system.showDialog(createVNode(OpenProject, {
onCancel: () => dialog?.onClose(), onCancel: () => dialog?.onClose(),
@ -88,7 +88,7 @@ export default defineMenu((menus) => {
dialog?.onClose() dialog?.onClose()
const veryBigData = JSON.parse(row.otherData) const veryBigData = JSON.parse(row.otherData)
veryBigData.catalog = JSON.parse(row.directoryData) veryBigData.catalog = JSON.parse(row.directoryData)
veryBigData.items = [] if(!veryBigData.items) veryBigData.items = []
worldModel.state.isOpened = false worldModel.state.isOpened = false
worldModel.state.isDraft = false worldModel.state.isDraft = false
worldModel.state.catalog = [] worldModel.state.catalog = []
@ -126,7 +126,12 @@ export default defineMenu((menus) => {
click: async () => { click: async () => {
const viewport: Viewport = window['viewport'] const viewport: Viewport = window['viewport']
const vdata: any = await viewport.stateManager.save() 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),
});
} }
}, },
{ {

Loading…
Cancel
Save