Bläddra i källkod

1. 自定义模型设为层级结构; 2. 我的模型查看接口调试

Bella 2 år sedan
förälder
incheckning
d42a1ae710

+ 2 - 2
public/static/config/config.js

@@ -36,8 +36,8 @@ var map2DViewer = {
   analysisGroups: {},
 };
 
-// 存放tree中图层node id
-var treeIdMap = new Map();
+// 预设模型图层名称
+var defaultModelNameMap = new Map();
 
 // 存放我的标记名称
 // key:疑点名称;data:stringify后的geojson数据

+ 53 - 0
public/static/uploadTestData/testGeojson.json

@@ -0,0 +1,53 @@
+{
+  "geometry": {
+    "bbox": [
+      121.6264445930153, 31.181166170414, 121.62689803009111, 31.181201690732838
+    ],
+    "coordinates": [
+      [
+        [121.62689671774127, 31.18120169236651],
+        [121.62689800164475, 31.181184799626518],
+        [121.62644818597815, 31.18116616595391],
+        [121.62644464561657, 31.181197493099013],
+        [121.62689671774127, 31.18120169236651]
+      ]
+    ],
+    "type": "Polygon"
+  },
+  "type": "Feature",
+  "properties": {
+    "ZZSXDM": "",
+    "QSXZ": "20",
+    "GDPDJB": "",
+    "TBXHDM": "",
+    "GDLX": "",
+    "FRDBS": "0",
+    "YSDM": "2001010100",
+    "TBDLMJ": 115.2,
+    "TBYBH": "310115125F01791",
+    "OBJECTID": 51307,
+    "XZDWKD": 0,
+    "TBBH": "1",
+    "QSDWDM": "3101151252150000000",
+    "ZZSXMC": "",
+    "KCMJ": 0,
+    "TBXHMC": "",
+    "BZ": "",
+    "SHAPE_Leng": 91.3915306482,
+    "BSM": "310115211000224881",
+    "KCDLBM": "",
+    "QSDWMC": "劳动村",
+    "MSSM": "00",
+    "SJNF": 2019,
+    "TBMJ": 115.2,
+    "ZLDWDM": "3101151252150000000",
+    "SHAPE_Area": 115.201328239,
+    "KCXS": 0,
+    "DLBM": "0702",
+    "HDMC": "",
+    "CZCSXM": "201",
+    "ZLDWMC": "劳动村",
+    "GDDB": 0,
+    "DLMC": "农村宅基地"
+  }
+}

+ 128 - 167
src/components/common/BottomForm/CustomModelDialog.vue

@@ -39,12 +39,7 @@
             :filter-node-method="filterNode"
           >
             <span class="custom-tree-node" slot-scope="{ node }">
-              <template
-                v-if="
-                  node.data.mainType === '所有图层' ||
-                  node.data.mainType === '预设模型'
-                "
-              >
+              <template v-if="node.data.mainType === '所有图层'">
                 <el-checkbox v-model="node.checked" style="position: relative"
                   >{{ node.label }}
                 </el-checkbox>
@@ -155,6 +150,7 @@ export default {
         label: "label",
       },
       transferData: [],
+      customTreeMap: new Map(),
       filterText: "",
       createModelParams: {
         title: "",
@@ -167,6 +163,7 @@ export default {
         c_isOverlay: false,
         // 绑定图层(json图层数组)
         c_bind_layer: "",
+        c_layer_name: "",
         // 用户id
         c_user_id: "",
       },
@@ -243,8 +240,6 @@ export default {
       }
       this.currentModifiedModelId = node.data.id;
       this.currentOverlayFile = node.data.c_dzfx_file;
-      // console.log(this.currentModifiedModelId, "currentModifiedModelId");
-      // console.log(this.currentOverlayFile, "currentOverlayFile");
 
       this.$nextTick(() => {
         if (this.$refs.transferTree) {
@@ -255,11 +250,9 @@ export default {
       this.checkArr = [];
       this.checkedList = [];
       this.outerDialogVisible = true;
-      if (node.data.c_bind_layer) {
-        let bindLayerArr = JSON.parse(node.data.c_bind_layer).map((v) => {
-          return `${v.columnName}_${v.columnId}`;
-        });
-        // console.log(bindLayerArr, "c_bind_layer");
+      // 根据图层名称确定勾选的图层
+      if (node.data.c_layer_name) {
+        let bindLayerArr = JSON.parse(node.data.c_layer_name);
         if (bindLayerArr.length > 0) {
           this.checkArr = bindLayerArr;
           this.checkedList = bindLayerArr;
@@ -285,6 +278,9 @@ export default {
     this.overlayBtnShow = false;
   },
   methods: {
+    /**
+     * 生成数据字典
+     */
     classDictQuery(type, cName, keyName) {
       let params = new FormData();
       params = {
@@ -300,6 +296,67 @@ export default {
         }
       });
     },
+    /**
+     * 数据转换 -- 数组对象转为树状结构
+     *
+     * 应用 -- bindLayer存储图层id
+     */
+    createTree(arr) {
+      // 设置树状结构需要的分级字段
+      const paramsArr = [
+        {
+          field: "townId",
+          // 用来生成一个当前层级对象
+          obj: (o) => ({
+            column_id: o.townId,
+            column_name: o.townType,
+            child: [],
+          }),
+          // 如何生成下一层的对象
+          child: (o) => {
+            let copy = { ...o };
+            delete copy.townId;
+            delete copy.townType;
+            return copy;
+          },
+        },
+        {
+          field: "sourceId",
+          // 用来生成一个当前层级对象
+          obj: (o) => ({
+            column_id: o.sourceId,
+            column_name: o.sourceType,
+            child: [],
+          }),
+          // 如何生成下一层的对象
+          child: (o) => {
+            let copy = { ...o };
+            delete copy.sourceId;
+            delete copy.sourceType;
+            return copy;
+          },
+        },
+        {
+          field: "layerId",
+          // 用来生成一个当前层级对象
+          obj: (o) => ({ column_id: o.layerId, column_name: o.layerName }),
+          // 如何生成下一层的对象
+          child: (o) => {
+            let copy = { ...o };
+            delete copy.layerId;
+            delete copy.layerName;
+            return copy;
+          },
+        },
+      ];
+
+      let finalData = publicFun.convertTree(paramsArr, arr);
+      return finalData;
+    },
+
+    /**
+     * 获取分级列表
+     */
     getColumnList() {
       this.transferData = [];
       this.$Post(this.urlsCollection.getColumnList).then((res) => {
@@ -311,7 +368,7 @@ export default {
                 label: item1.title,
                 // 镇
                 children:
-                  item1.columnList.length === 0
+                  !item1.columnList || item1.columnList.length === 0
                     ? []
                     : item1.columnList.map((item2) => {
                         return {
@@ -319,7 +376,7 @@ export default {
                           label: item2.title,
                           // 水资源,土地资源,林地资源
                           children:
-                            item2.columnList.length === 0
+                            !item2.columnList || item2.columnList.length === 0
                               ? []
                               : item2.columnList.map((item3) => {
                                   return {
@@ -327,20 +384,31 @@ export default {
                                     label: item3.title,
                                     tag: item3.tag,
                                     children:
+                                      !item3.columnList ||
                                       item3.columnList.length === 0
                                         ? []
                                         : item3.columnList.map((item4) => {
+                                            this.customTreeMap.set(
+                                              `${item4.title}_${item4.id}`,
+                                              {
+                                                townId: item2.id,
+                                                townType: item2.title,
+                                                sourceId: item3.id,
+                                                sourceType: item3.title,
+                                                layerId: item4.id,
+                                                layerName: item4.title,
+                                              }
+                                            );
                                             return {
                                               id: `${item4.title}_${item4.id}`,
                                               label: item4.title,
                                               children: [],
                                               columnId: item4.id,
-                                              modelName: item4.modelName,
-                                              modelId: item4.modelId,
-                                              tag: item4.tag,
-                                              type: item3.title,
-                                              town: item2.title,
                                               mainType: item1.title,
+                                              townId: item2.id,
+                                              townType: item2.title,
+                                              sourceId: item3.id,
+                                              sourceType: item3.title,
                                             };
                                           }),
                                   };
@@ -349,33 +417,6 @@ export default {
                       }),
               };
             }
-            // if (item1.title === "预设模型" && item1.columnList.length > 0) {
-            //   return {
-            //     id: `${item1.title}_${item1.id}`,
-            //     label: item1.title,
-            //     children:
-            //       item1.columnList.length === 0
-            //         ? []
-            //         : item1.columnList.map((item2) => {
-            //             return {
-            //               id: `${item2.title}_${item2.id}`,
-            //               label: item2.title,
-            //               children:
-            //                 item2.columnList.length === 0
-            //                   ? []
-            //                   : item2.columnList.map((item3) => {
-            //                       return {
-            //                         id: `${item3.title}_${item3.id}`,
-            //                         label: item3.title,
-            //                         children: [],
-            //                         mainType: item1.title,
-            //                         columnId: item3.id,
-            //                       };
-            //                     }),
-            //             };
-            //           }),
-            //   };
-            // }
           });
 
           data.forEach((c) => {
@@ -392,68 +433,6 @@ export default {
           if (!this.checkedKeysArr.includes(data.id)) {
             this.checkedKeysArr.push(data.id);
           }
-
-          // 判断图层是否有权限
-          if (data.mainType === "所有图层") {
-            let searchParam = [];
-            let targetTown = this.classTextToIndex["浦东新区行政区划"].get(
-              data.town
-            );
-            let targetType = this.classTextToIndex["任务类型"].get(
-              data.type + "审计"
-            );
-            let paramUser = {
-              field: "c_user_id",
-              searchType: "1",
-              content: {
-                value: localStorage.getItem("USER_ID"),
-              },
-            };
-            searchParam.push(paramUser);
-            let paramTown = {
-              field: "c_area_code",
-              searchType: "1",
-              content: {
-                value: targetTown,
-              },
-            };
-            searchParam.push(paramTown);
-            let paramType = {
-              field: "c_task_type",
-              searchType: "1",
-              content: {
-                value: targetType,
-              },
-            };
-            searchParam.push(paramType);
-            let params = new FormData();
-            // dms - 我的任务
-            params = {
-              columnId: 48,
-              states: "2,3",
-              pageSize: 10,
-              page: 0,
-              search: JSON.stringify(searchParam),
-            };
-            this.$Post(this.urlsCollection.selectContentList, params)
-              .then((res) => {
-                if (res.code === 202 && res.content === "数据不存在") {
-                  this.$message.info("当前图层无权限!");
-                  layerAuthorityMap.set(data.id, "无权限");
-                }
-                if (res.code === 200 && res.content.data.length > 0) {
-                  layerAuthorityMap.set(data.id, "有权限");
-                  // console.log("有权限");
-                }
-              })
-              .catch((err) => {
-                console.log(err, "接口请求失败,我的任务 - selectContentList");
-              });
-          }
-
-          if (data.mainType === "预设模型") {
-            layerAuthorityMap.set(data.id, "有权限");
-          }
         } else {
           if (this.checkedKeysArr.includes(data.id)) {
             this.checkedKeysArr = this.checkedKeysArr.filter((v) => {
@@ -463,13 +442,13 @@ export default {
         }
       }
     },
-    transferCheckChange1(data, checked) {
-      if (data.mainType === "所有图层") {
-        if (checked) {
-          // if
-        }
-      }
-    },
+    // transferCheckChange1(data, checked) {
+    //   if (data.mainType === "所有图层") {
+    //     if (checked) {
+    //       // if
+    //     }
+    //   }
+    // },
     // 添加模型
     addModel() {
       if (customModelIdMap.has(this.inputName)) {
@@ -479,18 +458,19 @@ export default {
         this.createModelParams.title = this.inputName;
         this.createModelParams.content = this.inputName;
         this.createModelParams.c_user_id = localStorage.getItem("USER_ID") || 4;
-        let newData = [
-          {
-            columnName: "公益林",
-            columnId: 60,
-          },
-          {
-            columnName: "建设用地",
-            columnId: 51,
-          },
-        ];
+        console.log(this.customTreeMap);
+        // 获取数组对象
+        let treeArr = [];
+        this.customTreeMap.forEach((v, i) => {
+          if (this.checkedList.includes(i)) {
+            treeArr.push(v);
+          }
+        });
 
-        this.createModelParams.c_bind_layer = JSON.stringify(newData);
+        // 转为树结构的数据格式
+        let finalData = this.createTree(treeArr);
+        this.createModelParams.c_layer_name = JSON.stringify(this.checkedList);
+        this.createModelParams.c_bind_layer = JSON.stringify(finalData);
         let params = new FormData();
         params = {
           columnId: 49,
@@ -499,12 +479,13 @@ export default {
         };
         this.$Post(this.urlsCollection.addContent, params)
           .then((res) => {
+            debugger;
             // console.log(res, "保存自定义模型的res");
             if (res.code === 200) {
               this.$message.success("模型已保存");
               this.$store.state.customModelsArr.push({
                 name: this.inputName,
-                data: this.checkedList,
+                data: JSON.stringify(finalData),
               });
               this.clearDialogVisible();
             }
@@ -513,24 +494,16 @@ export default {
             this.$message.info("模型保存失败");
           });
       }
-
-      // let newData = this.checkedList.filter((v) => {
-      //   if (layerAuthorityMap.has(v) && layerAuthorityMap.get(v) === "有权限") {
-      //     return v;
-      //   }
-      // });
-      // console.log(newData, "可以进行叠置分析的图层");
     },
     // 修改模型 -- 直接调用修改模型接口
     modifyModel(type, bindData) {
-      // console.log("这一步是修改模型");
-
-      // console.log(this.currentModifiedModelId, "model id");
+      debugger;
       let obj = {
         id: this.currentModifiedModelId,
         title: this.inputName,
         content: this.inputName,
-        c_level: "1",
+        // c_level: "1",
+        c_layer_name: JSON.stringify(this.checkedList),
         c_bind_layer: JSON.stringify(bindData),
         c_user_id: localStorage.getItem("USER_ID"),
       };
@@ -548,7 +521,7 @@ export default {
             });
             this.$store.state.customModelsArr.push({
               name: this.inputName,
-              data: bindData,
+              data: JSON.stringify(bindData),
             });
             this.clearDialogVisible();
             if (type === "alreadyOverlay") {
@@ -609,7 +582,6 @@ export default {
       this.overlayBtnShow = false;
       this.$store.state.modelStatus = "create";
       this.outerDialogVisible = true;
-      // console.log(this.$store.state.treeDataCollection, "treeDataCollection");
       this.checkedList = [];
       this.checkArr = [];
       // this.transferCheckedKeys = [];
@@ -619,12 +591,11 @@ export default {
           this.checkedList.push(i);
         });
         this.$nextTick((e) => {
-          // console.log(this.$refs.transferTree, "this.$refs.transferTre");
           this.$refs.transferTree.setCheckedKeys(this.checkedList);
         });
       }
 
-      this.inputName = "自定义模型1";
+      this.inputName = `自定义模型${Math.round(Math.random() * 100)}`;
     },
     saveModel() {
       if (this.checkedList.length < 2) {
@@ -641,18 +612,14 @@ export default {
       this.$confirm("确认保存吗?").then(() => {
         // modify -- 改变数组类型
         if (this.$store.state.modelStatus === "modify") {
-          let newData = this.checkedList.filter((v) => {
-            if (
-              layerAuthorityMap.has(v) &&
-              layerAuthorityMap.get(v) === "有权限"
-            ) {
-              return {
-                columnName: v.split("_")[0],
-                columnId: v.split("_")[1],
-              };
+          let treeArr = [];
+          this.customTreeMap.forEach((v, i) => {
+            if (this.checkedList.includes(i)) {
+              treeArr.push(v);
             }
           });
-          this.modifyModel("notOverlay", newData);
+          let bindLayer = this.createTree(treeArr);
+          this.modifyModel("notOverlay", bindLayer);
         }
 
         // console.log(this.$store.state.customModelsArr, "先获取的模型数据");
@@ -675,24 +642,18 @@ export default {
       if (this.overlayBtnChecked && !this.forbidOverlayBtn) {
         // 进行叠置分析后,叠置分析结果会自动保存
         // 当前勾选的图层并未自动保存,需要重新调用一次保存接口
-        // let newData = this.checkedList.filter((v) => {
-        //   if (
-        //     layerAuthorityMap.has(v) &&
-        //     layerAuthorityMap.get(v) === "有权限"
-        //   ) {
-        //     return v;
-        //   }
-        // });
-        let bindLayer = this.checkedList.map((v) => {
-          return {
-            columnName: v.split("_")[0],
-            columnId: v.split("_")[1],
-          };
+        let treeArr = [];
+        this.customTreeMap.forEach((v, i) => {
+          if (this.checkedList.includes(i)) {
+            treeArr.push(v);
+          }
         });
+
+        let bindLayer = this.createTree(treeArr);
         let params = new FormData();
         params = {
           modelId: this.currentModifiedModelId,
-          bindLayer: JSON.stringify(bindLayer),
+          userId: localStorage.getItem("USER_ID"),
         };
         this.$Post(this.urlsCollection.overlayAnalysis, params).then((res) => {
           console.log(res, "res");

+ 1 - 0
src/components/common/BottomForm/UploadingData.vue

@@ -123,6 +123,7 @@ export default {
     },
     // 根据上传的文件渲染到地图中
     uploadRENDER(geoJson) {
+      debugger
       map2DViewer.polygons[`upload_layer`] = [];
       // let cid = "upload";
       // let color = "#67C23A";

+ 0 - 12
src/components/popup/LawPopup.vue

@@ -139,7 +139,6 @@ export default {
           res.content.forEach((v) => {
             this.classDictMap[keyName].set(v.name, v.index + "");
           });
-          console.log(this.classDictMap[keyName]);
         }
       });
     },
@@ -151,15 +150,8 @@ export default {
         name: "法律法规",
       });
     },
-    queryEvent() {
-      console.log("查询");
-    },
-    resetEvent() {
-      console.log("重置");
-    },
     // 切换页
     getTableData(val) {
-      // console.log(`当前页: ${val}`)
       if (this.$store.state.lawSourceType) {
         this.tableData = [];
         let searchParam = [];
@@ -217,9 +209,7 @@ export default {
 
         this.$Post(this.urlsCollection.selectContentList, params).then(
           (res) => {
-            // console.log(res, "当前的法律法规");
             if (res.code === 200 && res.content.data.length > 0) {
-              // console.log(res.content, "查询到的法律法规相关的数据");
               this.paginationData.currentPage = val;
               this.paginationData.total = res.content.count;
               this.tableData = res.content.data.map((v) => {
@@ -246,7 +236,6 @@ export default {
     },
     // 切换条数
     handleSizeChange(val) {
-      console.log(`每页 ${val} 条`);
       this.currentPageSize = val;
       this.getTableData(this.currentPage);
     },
@@ -260,7 +249,6 @@ export default {
     },
     // 选中当前行
     handleRowChange(val) {
-      console.log(val, "currentRow");
       this.currentRow = val;
       this.$refs.lawDetailsRef.title = val.title;
       this.$refs.lawDetailsRef.time = val.date;

+ 1 - 0
src/store/index.js

@@ -38,6 +38,7 @@ export default new Vuex.Store({
     baseMapRight: 23,
     // 我的标记中的疑点数据
     myLabelPointsArr: [],
+    // 存储所有图层中的层级数据结构 -- 方便自定义模型传数据
     treeDataCollection: new Map(),
     // 用户信息(登录成功后保存)
     userInfo: {},

+ 53 - 2
src/utils/publicFunction.js

@@ -77,7 +77,7 @@ const getRandomColor = function () {
  *
  * 类型: 0 点;1 线;2 面;3 矩形;4 圆形;5 其他;
  */
-const generateGeoJSON = (title, desc, featureType, coords,geoName) => {
+const generateGeoJSON = (title, desc, featureType, coords, geoName) => {
   let dataType = "LineString";
   let propertiesType = "面";
   switch (featureType) {
@@ -104,7 +104,7 @@ const generateGeoJSON = (title, desc, featureType, coords,geoName) => {
       desc: desc || "",
       featureType: propertiesType,
       featureTypeIndex: featureType,
-      name:geoName
+      name: geoName,
     },
     geometry: {
       coordinates: coords,
@@ -139,6 +139,56 @@ const standardGeojson = (coordinates, type) => {
   return data;
 };
 
+/**
+ * 转化为树结构
+ * @param {*} params
+ * @param {*} arr
+ * @param {*} depth
+ * @returns
+ */
+let convertTree = (params, arr, depth = 0) => {
+  if (arr.length == 0 || depth >= params.length) return arr;
+  let res = [];
+  let v = params[depth];
+  let map = group(arr, v.field);
+  map.forEach((val, key) => {
+    // 生成当前层的节点
+    let o = v.obj(val[0]);
+    // 生成所有的子节点
+    let child = val.map((cv) => v.child(cv));
+    o.child = child;
+    // 递归生成
+    if (child.length > 0) {
+      o.child = convertTree(params, child, depth + 1);
+      if (depth + 1 === params.length) {
+        delete o.child;
+      }
+    }
+    res.push(o);
+  });
+  return res;
+};
+
+/**
+ * 根据字段分类
+ * @param {*} arr
+ * @param {*} field
+ * @returns
+ */
+let group = (arr, field) => {
+  let map = new Map();
+  arr.forEach((v) => {
+    // 没有的话就创建一个新数组
+    if (!map.has(v[field])) {
+      map.set(v[field], [v]);
+      return;
+    }
+    // 放入同类中
+    map.get(v[field]).push(v);
+  });
+  return map;
+};
+
 export default {
   buildGuid,
   compare,
@@ -147,4 +197,5 @@ export default {
   Decrypt,
   generateGeoJSON,
   standardGeojson,
+  convertTree,
 };

+ 54 - 60
src/views/ComprehensiveAnalysis.vue

@@ -81,6 +81,7 @@
             v-model="townSelectVal"
             :options="townOptions"
             :value="townSelectVal"
+            @selectEvent="changeTownEvent"
           />
           <el-tooltip
             effect="light"
@@ -103,6 +104,7 @@
               node-key="id"
               ref="tree"
               :filter-node-method="filterNode"
+              :default-expanded-keys="expandedKeys"
             >
               <span class="custom-tree-node" slot-scope="{ node }">
                 <template
@@ -276,6 +278,9 @@ export default {
   },
   data() {
     return {
+      expandedKeys: [],
+      myModelIdMap: new Map(),
+      townSelectTreeMap: new Map(),
       labelAllVisibleChecked: true,
       townSelectVal: "",
       townOptions: [],
@@ -381,12 +386,6 @@ export default {
         if (val) {
           this.labelAllLocate();
         }
-
-        // if (map2DViewer.groups["我的标记图层组"]) {
-        //   map2DViewer.map.fitBounds(
-        //     map2DViewer.groups["我的标记图层组"].getBounds()
-        //   );
-        // }
       }
     },
     "$store.state.navSelect": {
@@ -430,10 +429,11 @@ export default {
     getLeftMenuTitle: {
       handler(val) {
         this.$nextTick(() => {
-          if (treeIdMap.has(val)) {
+          // 从疑点筛查进入综合分析页面默认勾选
+          if (defaultModelNameMap.has(val)) {
             // console.log(val, "678");
             // 设置默认勾选项
-            this.$refs.tree.setCheckedKeys([treeIdMap.get(val)]);
+            this.$refs.tree.setCheckedKeys([defaultModelNameMap.get(val)]);
           }
         });
       },
@@ -561,9 +561,16 @@ export default {
   //   this.clearAllData();
   // },
   methods: {
+    // 勾选镇时默认展开当前镇
+    changeTownEvent(val) {
+      if (this.townSelectTreeMap.has(val)) {
+        this.expandedKeys = [];
+        this.expandedKeys.push(this.townSelectTreeMap.get(val).id);
+        console.log(this.expandedKeys);
+      }
+    },
     // 清除页面所有数据
     clearAllData() {
-      // treeIdMap.clear();
       // uploadDataIdArr = [];
       // this.treeCoordMap.clear();
       map2DViewer.map.off("move");
@@ -786,7 +793,7 @@ export default {
           if (keyName === "浦东新区行政区划") {
             this.classTextToIndex[keyName].forEach((v, i) => {
               this.townOptions.push({
-                value: v,
+                value: i,
                 label: i,
               });
             });
@@ -801,47 +808,35 @@ export default {
         if (res.code === 200 && res.content.length > 0) {
           let data = res.content.map((item1) => {
             if (item1.title === "所有图层" && item1.columnList.length > 0) {
-              treeIdMap.set(
-                `${item1.title}_${item1.id}`,
-                `${item1.title}_${item1.id}`
-              );
               return {
                 id: `${item1.title}_${item1.id}`,
                 label: item1.title,
                 // 镇
                 children:
-                  item1.columnList.length === 0
+                  !item1.columnList || item1.columnList.length === 0
                     ? []
                     : item1.columnList.map((item2) => {
-                        treeIdMap.set(
-                          `${item2.title}_${item2.id}`,
-                          `${item2.title}_${item2.id}`
-                        );
+                        this.townSelectTreeMap.set(item2.title, {
+                          id: `${item2.title}_${item2.id}`,
+                        });
+
                         return {
                           id: `${item2.title}_${item2.id}`,
                           label: item2.title,
                           // 水资源,土地资源,林地资源
                           children:
-                            item2.columnList.length === 0
+                            !item2.columnList || item2.columnList.length === 0
                               ? []
                               : item2.columnList.map((item3) => {
-                                  treeIdMap.set(
-                                    `${item3.title}_${item3.id}`,
-                                    `${item3.title}_${item3.id}`
-                                  );
                                   return {
                                     id: `${item3.title}_${item3.id}`,
                                     label: item3.title,
                                     tag: item3.tag,
                                     children:
-                                      item3.columnList &&
+                                      !item3.columnList ||
                                       item3.columnList.length === 0
                                         ? []
                                         : item3.columnList.map((item4) => {
-                                            treeIdMap.set(
-                                              `${item4.title}_${item4.id}`,
-                                              `${item4.title}_${item4.id}`
-                                            );
                                             this.rightPanelDataMap.set(
                                               `${item4.title}_${item4.id}`,
 
@@ -862,11 +857,10 @@ export default {
                                               label: item4.title,
                                               children: [],
                                               columnId: item4.id,
-                                              modelName: item4.modelName,
-                                              modelId: item4.modelId,
-                                              tag: item4.tag,
+                                              townId: item2.id,
+                                              townType: item2.title,
+                                              sourceId: item3.id,
                                               sourceType: item3.title,
-                                              town: item2.title,
                                               mainType: item1.title,
                                               color: publicFun.getRandomColor(),
                                             };
@@ -878,10 +872,6 @@ export default {
               };
             }
             if (item1.title === "预设模型" && item1.columnList.length > 0) {
-              treeIdMap.set(
-                `${item1.title}_${item1.id}`,
-                `${item1.title}_${item1.id}`
-              );
               return {
                 id: `${item1.title}_${item1.id}`,
                 label: item1.title,
@@ -889,11 +879,6 @@ export default {
                   item1.columnList.length === 0
                     ? []
                     : item1.columnList.map((item2) => {
-                        treeIdMap.set(
-                          `${item2.title}_${item2.id}`,
-                          `${item2.title}_${item2.id}`
-                        );
-
                         return {
                           id: `${item2.title}_${item2.id}`,
                           label: item2.title,
@@ -901,10 +886,6 @@ export default {
                             item2.columnList.length === 0
                               ? []
                               : item2.columnList.map((item3) => {
-                                  treeIdMap.set(
-                                    `${item3.title}_${item3.id}`,
-                                    `${item3.title}_${item3.id}`
-                                  );
                                   this.rightPanelDataMap.set(
                                     `${item3.title}_${item3.id}`,
                                     {
@@ -917,13 +898,17 @@ export default {
                                     `${item3.title}_${item3.id}`,
                                     publicFun.getRandomColor()
                                   );
+                                  defaultModelNameMap.set(
+                                    item3.label,
+                                    `${item3.title}_${item3.id}`
+                                  );
                                   return {
                                     id: `${item3.title}_${item3.id}`,
                                     label: item3.title,
-                                    children: [],
                                     sourceType: item2.title,
                                     mainType: item1.title,
                                     columnId: item3.id,
+                                    children: [],
                                   };
                                 }),
                         };
@@ -932,8 +917,7 @@ export default {
             }
 
             if (item1.title === "我的模型") {
-              // treeIdMap.set(item1.title, `${item1.title}_${item1.id}`);
-              treeIdMap.set(
+              this.myModelIdMap.set(
                 `${item1.title}_${item1.id}`,
                 `${item1.title}_${item1.id}`
               );
@@ -988,6 +972,7 @@ export default {
                 state: ele.state,
                 mainType: "我的模型",
                 c_bind_layer: ele.c_bind_layer,
+                c_layer_name: ele.c_layer_name,
                 c_dzfx_file: ele.c_dzfx_file || "",
               };
             });
@@ -1130,11 +1115,20 @@ export default {
           this.showRightBox = true;
           // 第一级菜单是所有图层
           if (data.mainType === "所有图层") {
+            this.$store.state.treeDataCollection.set(data.id, {
+              // mainType: data.mainType,
+              townId: data.townId,
+              townType: data.townType,
+              sourceId: data.sourceId,
+              sourceType: data.sourceType,
+              layerId: data.id,
+              layerName: data.label,
+            });
             this.rightPanelTitle = data.id;
             let searchParam = [];
 
             let targetTown = this.classTextToIndex["浦东新区行政区划"].get(
-              data.town
+              data.townType
             );
 
             let targetType = this.classTextToIndex["任务类型"].get(
@@ -1184,9 +1178,7 @@ export default {
 
                 if (res.code === 200 && res.content.data.length > 0) {
                   layerAuthorityMap.set(data.id, "有权限");
-                  this.$store.state.treeDataCollection.set(data.id, {
-                    mainType: data.mainType,
-                  });
+
                   this.displaySingleLayer(
                     data.columnId,
                     data.id,
@@ -1201,11 +1193,6 @@ export default {
           if (data.mainType === "预设模型") {
             layerAuthorityMap.set(data.id, "有权限");
             this.rightPanelTitle = data.id;
-            this.$store.state.treeDataCollection.set(data.id, {
-              mainType: data.mainType,
-              // town: data.town,
-              // type: data.type,
-            });
             this.displaySingleLayer(
               data.columnId,
               data.id,
@@ -1232,9 +1219,12 @@ export default {
             });
           }
 
-          this.layerIdMap.delete(data.id);
+          this.layerIdMap.has(data.id) && this.layerIdMap.delete(data.id);
+
           //关联自定义模型
-          this.$store.state.treeDataCollection.delete(data.id);
+
+          this.$store.state.treeDataCollection.has(data.id) &&
+            this.$store.state.treeDataCollection.delete(data.id);
 
           // 只激活我的标记
           this.activeNames = ["myLabel"];
@@ -1251,6 +1241,7 @@ export default {
       }
     },
     displayMyModelData(data) {
+      debugger;
       // 如果有叠置分析文件 -- 呈现叠置分析内容
       if (data.c_dzfx_file) {
         debugger;
@@ -1274,6 +1265,9 @@ export default {
         // 调用我的模型查看接口读取所有图层数据
         this.$Post(this.urlsCollection.getModelCoverAgeInfo, params).then(
           (res) => {
+            if (res.code === 201 && res.message === "未申请任务权限") {
+              this.$message.info("暂无数据!");
+            }
             if (res.code === 200 && res.content.length > 0) {
               debugger;
               console.log(res.content, "查看我的模型图层数据");