浏览代码

叠置分析功能修改

Bella 2 年之前
父节点
当前提交
f4355b06ae
共有 3 个文件被更改,包括 89 次插入48 次删除
  1. 59 26
      src/components/common/BottomForm/CustomModelDialog.vue
  2. 5 2
      src/utils/request.js
  3. 25 20
      src/views/ComprehensiveAnalysis.vue

+ 59 - 26
src/components/common/BottomForm/CustomModelDialog.vue

@@ -104,17 +104,10 @@
         </el-checkbox-group>
       </div>
     </div>
-    <!-- <TreeTransfer ref="transferRef">
-      <el-checkbox-group v-model="checkedList">
-        <div class="inner-group" v-for="item in checkArr" :key="item">
-          <el-checkbox :key="item" :label="item"></el-checkbox>
-        </div>
-      </el-checkbox-group>
-    </TreeTransfer> -->
-
     <div
       v-if="overlayBtnShow"
       class="overlay-container"
+      :class="{ forbidden: forbidOverlayBtn }"
       @click="executeOverlay"
     >
       <div
@@ -146,6 +139,7 @@ export default {
   components: {},
   data() {
     return {
+      uploadBaseUrl: "http://121.43.55.7:10081/dms",
       classTextToIndex: {},
       overlayBtnChecked: false,
       outerDialogVisible: false,
@@ -185,17 +179,17 @@ export default {
         cursor: "pointer",
       },
       currentModifiedModelId: "",
+      currentOverlayFile: "",
+      forbidOverlayBtn: "",
     };
   },
   watch: {
     checkedKeysArr: {
       handler(val) {
         if (val.length === 0) {
-          // btn.style.cursor = "not-allowed";
           this.isRightTransferBtn = false;
         }
         if (val.length > 0) {
-          // btn.style.cursor = "pointer";
           this.isRightTransferBtn = true;
         }
       },
@@ -235,9 +229,22 @@ export default {
     this.$bus.$off("updateModel");
     this.$bus.$on("updateModel", (node) => {
       console.log("监听模型中");
+      this.overlayBtnChecked = false;
       console.log(node, "节点数据");
+      if (node.data.c_dzfx_file) {
+        console.log("已有叠置分析结果");
+        this.forbidOverlayBtn = true;
+      }
+
+      if (!node.data.c_dzfx_file) {
+        console.log("未进行叠置分析");
+        this.forbidOverlayBtn = false;
+      }
       this.currentModifiedModelId = node.data.id;
-      this.overlayBtnChecked = false;
+      this.currentOverlayFile = node.data.c_dzfx_file;
+      console.log(this.currentModifiedModelId, "currentModifiedModelId");
+      console.log(this.currentOverlayFile, "currentOverlayFile");
+
       this.$nextTick(() => {
         if (this.$refs.transferTree) {
           this.$refs.transferTree.setCheckedKeys([]);
@@ -479,20 +486,16 @@ export default {
         });
     },
     // 修改模型 -- 直接调用修改模型接口
-    modifyModel() {
+    modifyModel(type, bindData) {
       console.log("这一步是修改模型");
-      let newData = this.checkedList.filter((v) => {
-        if (layerAuthorityMap.has(v) && layerAuthorityMap.get(v) === "有权限") {
-          return v;
-        }
-      });
+
       console.log(this.currentModifiedModelId, "model id");
       let obj = {
         id: this.currentModifiedModelId,
         title: this.inputName,
         content: this.inputName,
         c_level: "1",
-        c_bind_layer: JSON.stringify(newData),
+        c_bind_layer: JSON.stringify(bindData),
         c_user_id: localStorage.getItem("USER_ID"),
       };
       let modifyParams = new FormData();
@@ -509,10 +512,16 @@ export default {
             });
             this.$store.state.customModelsArr.push({
               name: this.inputName,
-              data: newData,
+              data: bindData,
             });
-            this.$message.success("模型修改成功");
             this.clearDialogVisible();
+            if (type === "alreadyOverlay") {
+              this.$message.success("系统已完成叠置分析,数据已保存!");
+            }
+
+            if (type === "notOverlay") {
+              this.$message.success("模型修改成功");
+            }
           }
         }
       );
@@ -604,7 +613,15 @@ export default {
       this.$confirm("确认保存吗?").then(() => {
         // modify -- 改变数组类型
         if (this.$store.state.modelStatus === "modify") {
-          this.modifyModel();
+          let newData = this.checkedList.filter((v) => {
+            if (
+              layerAuthorityMap.has(v) &&
+              layerAuthorityMap.get(v) === "有权限"
+            ) {
+              return v;
+            }
+          });
+          this.modifyModel("notOverlay", newData);
         }
 
         // console.log(this.$store.state.customModelsArr, "先获取的模型数据");
@@ -617,12 +634,25 @@ export default {
     // 执行叠置分析
     executeOverlay() {
       this.overlayBtnChecked = !this.overlayBtnChecked;
-      if (this.overlayBtnChecked) {
-        this.clearDialogVisible();
-        this.$message.success("系统已完成叠置分析,数据已保存!");
-        let tagretUrl = `${this.urlsCollection.overlayAnalysis}?modelId=${this.currentModifiedModelId}`;
+      if (this.overlayBtnChecked && !this.forbidOverlayBtn) {
+        // 进行叠置分析后,叠置分析结果会自动保存
+        // 当前勾选的图层并未自动保存,需要重新调用一次保存接口
+        let newData = this.checkedList.filter((v) => {
+          if (
+            layerAuthorityMap.has(v) &&
+            layerAuthorityMap.get(v) === "有权限"
+          ) {
+            return v;
+          }
+        });
+        let bindLayer = newData.join(",");
+        let tagretUrl = `${this.urlsCollection.overlayAnalysis}?modelId=${this.currentModifiedModelId}&bindLayer=${bindLayer}`;
         this.$Get(tagretUrl).then((res) => {
-          console.log(JSON.parse(res), "叠置分析的结果");
+          if (res.code === 200) {
+            console.log(res, "叠置分析的结果");
+            let address = this.uploadBaseUrl+res.content;
+            this.modifyModel("alreadyOverlay", newData);
+          }
         });
       }
     },
@@ -853,6 +883,9 @@ export default {
   justify-content: center;
   position: relative;
   top: 14px;
+  &.forbidden {
+    cursor: not-allowed;
+  }
   &-icon {
     width: 25px;
     height: 25px;

+ 5 - 2
src/utils/request.js

@@ -6,7 +6,7 @@ import { VueAxios } from "./axios";
 // 创建 axios 实例
 const service = axios.create({
   // baseURL: 'http://121.43.55.7:8888',
-  timeout: 6000, // 请求超时时间,
+  timeout: 8000, // 请求超时时间,
   headers: {
     "Content-Type": "application/form-data",
   },
@@ -14,7 +14,7 @@ const service = axios.create({
 
 const fileService = axios.create({
   baseURL: "",
-  timeout: 60000, // 请求超时时间,
+  timeout: 80000, // 请求超时时间,
   headers: {
     "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
   },
@@ -73,6 +73,9 @@ function get(url, params) {
       method: "GET",
       url,
       params: params,
+      headers: {
+        token: localStorage.getItem("TOKEN"),
+      },
     })
       .then((res) => {
         resolve(res);

+ 25 - 20
src/views/ComprehensiveAnalysis.vue

@@ -98,7 +98,6 @@
               node-key="id"
               ref="tree"
               :filter-node-method="filterNode"
-              @node-click="handleNodeClick"
             >
               <span class="custom-tree-node" slot-scope="{ node }">
                 <template
@@ -118,7 +117,9 @@
                 </template>
                 <template
                   v-else-if="
-                    node.level === 4 || node.parent.label === '预设模型'
+                    node.level === 4 ||
+                    node.parent.label === '预设模型' ||
+                    node.parent.label === '我的模型'
                   "
                 >
                   <el-checkbox v-model="node.checked" style="position: relative"
@@ -132,15 +133,32 @@
                         style="position: absolute; right: -30px; top: -12px"
                       ></el-button
                     ></span>
+                    <span style="position:absolute;right: -80px; top: -9px">
+                      <el-button
+                        v-if="node.parent.label === '我的模型'"
+                        size="small"
+                        type="text"
+                        icon="el-icon-edit"
+                        @click="handleUpdate(node)"
+                      ></el-button>
+                      <el-button
+                        v-if="node.parent.label === '我的模型'"
+                        size="small"
+                        type="text"
+                        icon="el-icon-delete"
+                        @click="handleDelete(node)"
+                      ></el-button>
+                    </span>
                   </el-checkbox>
                 </template>
-                <template v-else-if="node.parent.label === '我的模型'">
+                <!-- <template v-else-if="node.parent.label === '我的模型'">
                   <div
                     :class="{
                       'tree-arrow': !node.expanded,
                       'tree-arrow-expanded': node.expanded,
                     }"
                   ></div>
+                  <el-checkbox style="position: relative">
                   <span
                     >{{ node.label }}
                     <el-button
@@ -158,7 +176,8 @@
                       @click="handleDelete(node)"
                     ></el-button>
                   </span>
-                </template>
+                  </el-checkbox>
+                </template> -->
                 <template v-else>
                   <div
                     :class="{
@@ -385,19 +404,6 @@ export default {
       handler(val) {
         console.log(val, "目前存在的自定义模型");
         this.getMyModelData();
-        // let myModelRef = this.$refs.tree.data[2];
-        // if (myModelRef.label === "我的模型") {
-        //   this.$refs.tree.data[2].children = val.map((ele) => {
-        //     let firstId = publicFun.buildGuid();
-        //     treeIdMap.set(ele.name, firstId);
-        //     return {
-        //       id: firstId,
-        //       label: ele.name,
-        //       data: ele.data,
-        //     };
-        //   });
-        //   console.log(myModelRef.children, "最新的数据");
-        // }
       },
       deep: true,
     },
@@ -675,6 +681,7 @@ export default {
                 state: ele.state,
                 mainType: "我的模型",
                 c_bind_layer: ele.c_bind_layer,
+                c_dzfx_file: ele.c_dzfx_file || "",
               };
             });
             if (this.modelData.length > 0) {
@@ -799,9 +806,7 @@ export default {
         }
       });
     },
-    handleNodeClick(node) {
-      // console.log(node, "node");
-    },
+
     // 节点change事件
     handleCheckChange(data, checked) {
       if (data.mainType && data.mainType !== "我的模型") {