Browse Source

建筑楼层3.8升级

haojianlong 4 years ago
parent
commit
3742ed9ef3

+ 1 - 1
src/api/scan/config.js

@@ -18,7 +18,7 @@ export const message = baseUrl + '/message-center'
 
 export const shaft = object + '/shaft'
 export const tenant = dataCenter + '/tenant'
-export const floor = dataCenter + '/floor'
+export const floor = object + '/floor'
 export const dict = dataCenter + '/dict'
 export const classDef = dataCenter + '/class-def'
 export const locationPoint = dataCenter + '/location-point'

+ 3 - 14
src/api/scan/request.js

@@ -1655,11 +1655,6 @@ export function floorQuery(param, success) {
 }
 
 //查询楼层信息+sign
-// export function floorQueryAndSign(param, success) {
-//   let url = `${baseUrl}${component}/floor/query`;
-//   http.postJson(url, param, success)
-// }
-//查询楼层信息+sign
 export function floorQueryAndSign(param, success) {
   let url = `${baseUrl}${component}/floor/query`;
   http.postJson(url, param, success)
@@ -1790,12 +1785,8 @@ export function manageCreateFloor(param, success) {
 }
 
 //建筑楼层管理-删除楼层
-// export function manageDeleteFloor(param, success) {
-//   let url = `${baseUrl}${floor}/delete`;
-//   http.postJson(url, param, success)
-// }
 export function manageDeleteFloor(param, success) {
-  let url = `${baseUrl}${object}/floor/delete`;
+  let url = `${baseUrl}${floor}/delete`;
   http.postJson(url, param, success)
 }
 
@@ -1829,15 +1820,13 @@ export function floorUpdate(param, success) {
 
 //楼层接口-----更新楼层轮廓
 export function floorUpdateOutline(param, success) {
-  // let url = `${baseUrl}${object}/floor/update-outline`;
-  let url = `${baseUrl}${object}/floor/outline/update`;
+  let url = `${baseUrl}${floor}/outline/update`;
   http.postJson(url, param, success)
 }
 
 //楼层接口-----查询楼层轮廓
 export function floorQueryOutline(param, success) {
-  // let url = `${baseUrl}${object}/floor/query-outline`;
-  let url = `${baseUrl}${object}/floor/outline/query`;
+  let url = `${baseUrl}${floor}/outline/query`;
   http.postJson(url, param, success)
 }
 

+ 73 - 40
src/views/ready/buildfloor/drawGraphy/drawFloor.vue

@@ -2,7 +2,7 @@
   <div :id="`drawFloor${id}`" class="drawFloor" v-loading="canvasLoading">
     <canvas :id="`floorCanvas${id}`" :width="cadWidth" :height="cadHeight" ref="canvas" tabindex="0"></canvas>
     <div class="operate" v-if="showTools">
-      <canvasFun @fit="fit" @savePng="savePng" @saveSvg="saveSvg" @divide="divide" @clearDivide="clearDivide" @undo="undo" @redo="redo" @scale="scale"
+      <canvasFun @fit="fit" @savePng="savePng" @saveSvg="saveSvg" @divide="divide" @clearDivide="clearDivide" @scale="scale"
         @changeAbsorb="changeAbsorb" :config="config" ref="canvasFun" @saveJson="saveJson"></canvasFun>
     </div>
   </div>
@@ -12,8 +12,10 @@
 import { DivideFloorScene, FloorView, Opt } from "@saga-web/cad-engine/lib"
 import { SColor, SPoint } from "@saga-web/draw/lib";
 import canvasFun from "@/components/business_space/newGraphy/canvasFun"
-import { floorQueryOutline } from "@/api/scan/request";
+import { floorQueryOutline, floorQueryAndSign } from "@/api/scan/request";
+import { EditLineItem } from "@saga-web/cad-engine"
 import { mapGetters } from "vuex";
+import { floorQuery } from "@/api/object/floor.js"
 export default {
   components: {
     canvasFun
@@ -26,7 +28,6 @@ export default {
       cadWidth: 800,
       cadHeight: 600,
       canvasLoading: false,
-      modelId: '',
       FloorID: '',
       Outline: [],
       floorData: {},
@@ -84,8 +85,9 @@ export default {
     initGraphy(Id, type) {
       // type=1 => id:模型id
       // type=2 => id:floormap
+      // type=3 => id:图片的key
       let that = this;
-      that.modelId = Id;
+      that.type = type;
       that.clearGraphy()
       that.drawMainScene = new DivideFloorScene();
       that.canvasLoading = true;
@@ -99,11 +101,9 @@ export default {
         })
       }else if(type==3){
         that.drawMainScene.loadImg(`/image-service/common/image_get?systemId=dataPlatform&key=${Id}`, res=>{
-        // fdfd
           that.getGraphtSuc(res)
-      })
+        })
       }
-
     },
     // 获取底图成功
     getGraphtSuc(res) {
@@ -122,6 +122,18 @@ export default {
       this.view.fitSceneToView();
       this.drawMainScene.isSpaceSelectable = false;
 
+      if (this.type == 3) {
+        this.addScaleItem(this.floorData.properties)
+        this.$emit('getGraphSuc');
+        if (this.floorData.properties) {
+          const x = this.floorData.properties.X;
+          const y = this.floorData.properties.Y;
+          if (x != 0 || y != 0) {
+            this.drawMainScene.imgList[0].moveTo(x, y);
+          }
+        }
+      }
+
       if (this.$refs.canvasFun) {
         this.view.minScale = this.view.scale;
         this.$refs.canvasFun.everyScale = this.view.scale;
@@ -136,38 +148,65 @@ export default {
     // 获取楼层数据
     getFloorData() {
       let pa = {
-        filters: `id='${this.FloorID}'`
+        filters: `id='${this.FloorID}'`,
+        cascader: [{ name: 'floorOutline' }]
+      }
+      // 先用 floorQuery 级联 floorOutline  以后与 floorQueryOutline 一块使用
+      console.log(this.urlModelId);
+      const temp = this.urlModelId && this.urlModelId.split('.')[1].toLowerCase()
+      if (temp == 'png' || temp == 'jpg') { //底图为图片且已经绑定过图片
+        floorQueryAndSign(pa, res => {
+          this.floorData = res.content[0];
+          if (this.floorData.infos && this.floorData.infos.floorMap) {
+            let floorMap = this.floorData.infos.floorMap
+            this.initGraphy(floorMap, 3)
+          }
+        })
+      } else {
+        // floorQueryOutline
+        floorQuery(pa, res => {
+          this.floorData = res.content[0];
+          if (this.floorData.infos && this.floorData.infos.FloorMap) {
+            this.getOtherFloorOutLine();
+            let floorMap = this.floorData.infos.FloorMap
+            this.initGraphy(floorMap, 2)
+          }
+        })
       }
-      floorQueryOutline(pa, res => {
-        this.floorData = res.Content[0];
-        this.getOtherFloorOutLine();
-        let floorMap = this.floorData.StructureInfo.FloorMap
-        if(floorMap.split('.')[1].toString() == 'png' || floorMap.split('.')[1].toString() == 'jpg'){
-           this.initGraphy(floorMap, 3)
-        }else{
-           this.initGraphy(floorMap, 2)
-        }
-      })
     },
     // 获取绑定该模型id的其他楼层轮廓线
     getOtherFloorOutLine() {
-      let modelid = this.floorData.ModelId;
-      let pa = {
-        Filters: `ModelId='${modelid}'`
-      }
-      this.shadeList = [];
-      floorQueryOutline(pa, res => {
-        res.Content.map(t => {
-          if (t.FloorID != this.FloorID && t.Outline && t.Outline.length) {
-            let line = t.Outline.map(item => {
-              return new SPoint(item.X, item.Y);
-            })
-            this.shadeList.push(line);
-          }
+      let modelid = this.floorData.modelId;
+      if (modelid) {
+        let pa = {
+          filters: `modelId='${modelid}'`
+        }
+        this.shadeList = [];
+        floorQueryOutline(pa, res => {
+          res.content.map(t => {
+            if (t.id != this.FloorID && t.outline && t.outline.length) {
+              let line = t.outline.map(item => {
+                return new SPoint(item.X, item.Y);
+              })
+              this.shadeList.push(line);
+            }
+          });
+          this.drawMainScene.addAllShade(this.shadeList);
+          this.$emit('changeSign', res.content.length > 1);
         });
-        this.drawMainScene.addAllShade(this.shadeList);
-        this.$emit('changeSign', res.Content.length > 1);
-      });
+      }
+    },
+    // 添加比例尺item 当楼层图为图片类型时 回显比例尺
+    addScaleItem(data) {
+      this.scaleItem = new EditLineItem(null)
+      this.scaleItem.strokeColor = SColor.Red;
+      this.drawMainScene.addItem(this.scaleItem)
+      if (data && data.Line && data.Line.length == 2) {
+        this.scaleItem.line = data.Line;
+        this.scaleItem.text = data.Text;
+        // todo
+        this.scaleItem.pointChange();
+      }
     },
     // 清空平面图
     clearGraphy() {
@@ -211,12 +250,6 @@ export default {
     changeAbsorb(isAbsorbing) {
       this.drawMainScene.isAbsorbing = isAbsorbing;
     },
-    // 撤销
-    undo() {
-
-    },
-    // 反撤销
-    redo() { },
     // 缩放
     scale(val) {
       if (!this.view) {

+ 20 - 21
src/views/ready/buildfloor/repetitionGraphy.vue

@@ -32,9 +32,8 @@
         <ul class="floorList" v-if="step==1">
           <template v-if="floorList.length > 1">
             <li style="border-bottom:1px solid #ccc;text-align: center;padding: 0">选择对齐楼层</li>
-            <li v-for="t in floorList" :key="t.FloorID">
-              <el-radio v-model="floorRadio" :label="t" @change="changeFloor" :disabled="t.FloorID == FloorID">{{t.FloorLocalID || t.FloorLocalName}}
-              </el-radio>
+            <li v-for="t in floorList" :key="t.id">
+              <el-radio v-model="floorRadio" :label="t" @change="changeFloor" :disabled="t.id == FloorID">{{t.localId || t.localName}}</el-radio>
             </li>
           </template>
           <template v-else>
@@ -80,6 +79,7 @@ export default {
     return {
       modelId: '', //
       isEdit: false, // 是否编辑模式
+      FloorID: '',
       file: {},
       alreadyRelatedModel: [],
       sign: false,
@@ -117,8 +117,7 @@ export default {
     }
     this.getCountModel()
   },
-  mounted() {
-  },
+  mounted() {},
   methods: {
     init() {
       this.getFileName(this.modelId)
@@ -203,15 +202,16 @@ export default {
     // 获取楼层
     getFloorData() {
       let floorParam = {
-        PageSize: 1000,
-        Filters: `buildId='${this.BuildID}'`,
+        pageSize: 1000,
+        filters: `buildingId='${this.BuildID}'`,
+        orders: 'floorSequenceID desc'
       }
       floorQueryAndSign(floorParam, (res) => {
         this.floorList = res.content;
         // todo
         this.floorRadio = res.content[0];
-        this.alreadyRelatedModel = res.Content.map((t) => {
-          if (t.floorID != this.FloorID) return t.ModelId
+        this.alreadyRelatedModel = res.content.map((t) => {
+          if (t.floorID != this.FloorID) return t.modelId
           this.sign = t.Sign > 0
           this.FloorName = t.localName || t.name
           this.$refs.drawFloor.buildFloorName = `${this.BuildName}-${this.FloorName}`
@@ -223,7 +223,7 @@ export default {
     },
     // 统计项目下是否有模型文件
     getCountModel() {
-      countModel({}, res => {
+      countModel({Filters:"Status in [4]"}, res => {
         this.hasModel = res.Count > 0
       })
     },
@@ -273,17 +273,17 @@ export default {
         return { x: t.x + this.baseImgItem.x, y: t.y + this.baseImgItem.y }
       })
       let Param = {
-        Content: [{
-          FloorId: this.FloorID,
-          StructureInfo: { FloorMap: this.key },
-          Properties: {
+        content: [{
+          id: this.FloorID,
+          infos: { floorMap: this.key },
+          properties: {
             X: this.baseImgItem.x,
             Y: this.baseImgItem.y,
             Line: line,
             Text: scaleItem.text
           }
         }],
-        Projection: ['StructureInfo', 'Properties'],
+        // projection: ['infos', 'properties'],
       }
       manageUpdateFloor(Param, (res) => {
         this.$message.success('更新成功')
@@ -415,12 +415,11 @@ export default {
   },
   watch: {
     modelId(n, o) {
-      if (o && n != o) {
-        console.log(n.split('.')[1])
-        if (n.split('.')[1].toString() == 'png' || n.split('.')[1].toString() == 'jpg') {
-          this.$refs.drawFloor.initGraphy(n, 3)
-        } else {
-          this.$refs.drawFloor.initGraphy(n, 1)
+      if (n != o) {
+        if (n) {
+          this.$nextTick(()=>{
+            this.initFromModelId(n)
+          })
         }
       }
     },