|
@@ -131,7 +131,7 @@ import {
|
|
|
queryZone,
|
|
|
zoneCount,
|
|
|
zoneCreate,
|
|
|
- zoneQueryOutline,
|
|
|
+ zoneQuery,
|
|
|
zoneUpdate,
|
|
|
zoneUpdateOutline,
|
|
|
handleZoneUpdateBd
|
|
@@ -183,11 +183,17 @@ export default {
|
|
|
options: [], //其他分区类型
|
|
|
OtherValue: '',
|
|
|
showOtherFlag: false, //是否显示其他分区类型添加
|
|
|
- fileName: '', // 下载文件名称
|
|
|
+ buildFloorName: "", //建筑楼层名称
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
|
- ...mapGetters('layout', ['projectId'])
|
|
|
+ ...mapGetters("layout", ["projectId", "projects"]),
|
|
|
+ projectName() {
|
|
|
+ let projectObj = this.projects.find(item => {
|
|
|
+ return item.id == this.projectId
|
|
|
+ })
|
|
|
+ return projectObj ? projectObj.name ? projectObj.name : projectObj.id : this.projectId
|
|
|
+ }
|
|
|
},
|
|
|
created() {
|
|
|
Opt.sceneMarkColor = new SColor('#ffffff');
|
|
@@ -222,7 +228,7 @@ export default {
|
|
|
this.config = {
|
|
|
isEdit: false,
|
|
|
divide: true,
|
|
|
- groupSelect: true
|
|
|
+ groupSelect: true,
|
|
|
}
|
|
|
// 获取当前楼层的元空间
|
|
|
this.getFloorISpace();
|
|
@@ -283,16 +289,16 @@ export default {
|
|
|
this.view.fitSelectedToView();
|
|
|
},
|
|
|
// 父组件调用
|
|
|
- getData(buildFloor, FloorObj, tab, name) {
|
|
|
+ getData(buildFloor, FloorObj, tab) {
|
|
|
let initType = 1;
|
|
|
if (FloorObj.FloorID == this.FloorObj.FloorID) {
|
|
|
initType = 2;
|
|
|
}
|
|
|
this.buildFloor = buildFloor;
|
|
|
this.FloorObj = FloorObj;
|
|
|
- this.FloorMap = FloorObj.StructureInfo ? FloorObj.StructureInfo.FloorMap : ''
|
|
|
- this.fileName = name
|
|
|
+ this.FloorMap = FloorObj.StructureInfo ? FloorObj.StructureInfo.FloorMap : '';
|
|
|
this.tab = tab;
|
|
|
+ this.buildFloorName = `${FloorObj.buildName}-${FloorObj.label}`;
|
|
|
console.log(arguments);
|
|
|
if (tab.code == "OtherZone") {
|
|
|
// 其他分区
|
|
@@ -386,7 +392,7 @@ export default {
|
|
|
pa.BuildingId = this.buildFloor[0];
|
|
|
pa.FloorId = this.buildFloor[1];
|
|
|
}
|
|
|
- zoneQueryOutline(pa, res => {
|
|
|
+ zoneQuery(pa, res => {
|
|
|
// 所有业务空间
|
|
|
this.businessSpaceList = res.Content;
|
|
|
// 已关联元空间的业务空间
|
|
@@ -1124,15 +1130,15 @@ export default {
|
|
|
},
|
|
|
// 保存为png
|
|
|
savePng() {
|
|
|
- this.view.saveImage(`${this.fileName}.png`, 'png');
|
|
|
+ this.view.saveImage(`${this.projectName}-${this.buildFloorName}.png`, 'png');
|
|
|
},
|
|
|
// 保存为svg
|
|
|
saveSvg() {
|
|
|
- this.view.saveSceneSvg(`${this.fileName}.svg`, 6400, 4800);
|
|
|
+ this.view.saveSceneSvg(`${this.projectName}-${this.buildFloorName}.svg`, 6400, 4800);
|
|
|
},
|
|
|
// 保存json
|
|
|
saveJson() {
|
|
|
- this.view.saveFloorJson(`${this.fileName}.json`)
|
|
|
+ this.view.saveFloorJson(`${this.projectName}-${this.buildFloorName}.json`)
|
|
|
},
|
|
|
// 切割划分
|
|
|
divide() {
|
|
@@ -1154,7 +1160,7 @@ export default {
|
|
|
let scale = this.view.scale;
|
|
|
this.view.scaleByPoint(val / scale, this.canvasWidth / 2, this.canvasHeight / 2);
|
|
|
},
|
|
|
- // 给定多个轮廓线的数据,计算得到面积最大值,并把它放置数组第一项
|
|
|
+ // 给定多个轮廓线的数据,计算得到面积最大值,并把它放置数组第一项,并将第一项顺时针处理,第一项以后的每一项做逆时针处理
|
|
|
// list {XYZ}[][]
|
|
|
makeMaxAreaFirst(list) {
|
|
|
let arr = [], area = 0;
|
|
@@ -1166,7 +1172,39 @@ export default {
|
|
|
arr.push(list[i])
|
|
|
}
|
|
|
}
|
|
|
+ arr.map((t, i) => {
|
|
|
+ if (!i) {
|
|
|
+ if (this.clockDir(t) > 0) {
|
|
|
+ return t
|
|
|
+ } else {
|
|
|
+ return t.reverse()
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (this.clockDir(t) > 0) {
|
|
|
+ return t.reverse()
|
|
|
+ } else {
|
|
|
+ return t
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
return arr;
|
|
|
+ },
|
|
|
+ // 数组为顺时针or逆时针 顺时针非负 逆时针为 负
|
|
|
+ clockDir(pointList) {
|
|
|
+ if (pointList.length < 3) {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ let index = 0;
|
|
|
+ let len = pointList.length;
|
|
|
+ for (let i = 1; i < len; i++) {
|
|
|
+ if (pointList[i].X > pointList[index].X) {
|
|
|
+ index = i;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ let p1 = pointList[index == 0 ? len - 1 : index - 1];
|
|
|
+ let p2 = pointList[index];
|
|
|
+ let p3 = pointList[(index + 1) % len];
|
|
|
+ return (p2.X - p1.X) * (p3.Y - p2.Y) - (p2.Y - p1.Y) * (p3.X - p2.X);
|
|
|
}
|
|
|
},
|
|
|
filters: {
|