|
|
|
@ -1,6 +1,6 @@ |
|
|
|
import _ from 'lodash' |
|
|
|
import { reactive } from 'vue' |
|
|
|
import { Request } from "@ease-forge/shared"; |
|
|
|
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' |
|
|
|
@ -15,6 +15,7 @@ export interface WorldModelState { |
|
|
|
catalog: Catalog // 当前世界模型目录数据
|
|
|
|
server: string // 当前楼层服务器地址
|
|
|
|
project_uuid: string // 当前楼层所在项目ID
|
|
|
|
project_label: string // 项目名称
|
|
|
|
catalogCode: string // 当前楼层的目录代码
|
|
|
|
|
|
|
|
stateManagerId: string // 当前楼层的状态管理器id
|
|
|
|
@ -163,12 +164,10 @@ export default class WorldModel { |
|
|
|
/** |
|
|
|
* 从远程服务器读取世界地图数据目录 |
|
|
|
*/ |
|
|
|
async loadWorldFromRemoting(veryBigData) { |
|
|
|
const worldData = veryBigData |
|
|
|
const catalog = veryBigData.catalog |
|
|
|
const items = veryBigData.items |
|
|
|
delete veryBigData.catalog |
|
|
|
delete veryBigData.items |
|
|
|
async loadWorldFromRemoting(lccModelWorld) { |
|
|
|
const worldData = lccModelWorld |
|
|
|
const catalog = lccModelWorld.directoryData |
|
|
|
delete lccModelWorld.directoryData |
|
|
|
|
|
|
|
this.state.isOpened = true |
|
|
|
this.state.worldData = worldData |
|
|
|
@ -176,53 +175,25 @@ export default class WorldModel { |
|
|
|
// 没有打开楼层,不加载 this.state.infos
|
|
|
|
// 没有打开楼层,不加载 this.state.isChanged
|
|
|
|
this.state.catalog = catalog |
|
|
|
this.state.server = veryBigData.server |
|
|
|
this.state.project_uuid = veryBigData.project_uuid |
|
|
|
this.state.server = lccModelWorld.server |
|
|
|
this.state.project_uuid = lccModelWorld.projectUuid |
|
|
|
|
|
|
|
// 没有打开楼层,不加载 this.state.catalogCode
|
|
|
|
this.state.isDraft = false |
|
|
|
|
|
|
|
await localforage.setItem('_____veryBigItemsData', items) |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 从服务器获取当前目录楼层的所有数据 |
|
|
|
*/ |
|
|
|
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) |
|
|
|
const items = await Request.request.get('/api/workbench/LccModelManager@getFloor', { params: { catalogCode, project_uuid: this.state.project_uuid } }) |
|
|
|
if (!items) { |
|
|
|
system.showErrorDialog('can\'t get floor data') |
|
|
|
return Promise.reject('can\'t get floor data') |
|
|
|
} |
|
|
|
return Promise.resolve(vdata) |
|
|
|
} |
|
|
|
const _____veryBigItemsData: any = await localforage.getItem('_____veryBigItemsData') |
|
|
|
if (!_____veryBigItemsData) { |
|
|
|
return Promise.reject('楼层数据未加载, catalogCode=' + catalogCode) |
|
|
|
} |
|
|
|
|
|
|
|
const floor = _.find(_____veryBigItemsData, r => r.catalogCode === this.state.catalogCode && r.t === 'floor') |
|
|
|
if (floor) { |
|
|
|
if (!floor.items) { |
|
|
|
floor.items = [] |
|
|
|
} |
|
|
|
|
|
|
|
const items = _.cloneDeep(floor.items) |
|
|
|
delete floor.items |
|
|
|
console.log("floor", floor); |
|
|
|
//@ts-ignore
|
|
|
|
const vdata: VData = { |
|
|
|
const vdata: any = { |
|
|
|
items: items as ItemJson[], |
|
|
|
infos: floor, |
|
|
|
infos: { catalogCode, t: 'floor' }, |
|
|
|
isChanged: false, |
|
|
|
catalog: _.cloneDeep(this.state.catalog), |
|
|
|
server: this.state.server, |
|
|
|
@ -230,12 +201,8 @@ export default class WorldModel { |
|
|
|
catalogCode: catalogCode, |
|
|
|
worldData: _.cloneDeep(this.state.worldData) |
|
|
|
} |
|
|
|
|
|
|
|
console.log('从服务器返回数据, 一共' + vdata.items.length + '个') |
|
|
|
return Promise.resolve(vdata) |
|
|
|
} |
|
|
|
return Promise.reject('楼层不存在, catalogCode=' + catalogCode) |
|
|
|
} |
|
|
|
|
|
|
|
clear() { |
|
|
|
this.currentStateManager = null |
|
|
|
|