Bella %!s(int64=2) %!d(string=hai) anos
pai
achega
5574c98090

+ 1 - 0
public/static/config/config.js

@@ -33,6 +33,7 @@ var map2DViewer = {
   // 我的标记
   myLabels: {},
   overlay:{},
+  analysisGroups:{}
 };
 
 // 存放tree中图层node id

+ 9 - 9
public/static/json/home/layout_water.json

@@ -3,15 +3,15 @@
     "pid":310115105000,
     "data":[{
         "year":2019,
-        "type":"水域数量",
+        "type":"水域面积",
         "area":150
     },{
         "year":2020,
-        "type":"水域数量",
+        "type":"水域面积",
         "area":160
     },{
         "year":2021,
-        "type":"水域数量",
+        "type":"水域面积",
         "area":170
     },{
         "year":2019,
@@ -43,15 +43,15 @@
     "pid":310115105000,
     "data":[{
         "year":2019,
-        "type":"水域数量",
+        "type":"水域面积",
         "area":150
     },{
         "year":2020,
-        "type":"水域数量",
+        "type":"水域面积",
         "area":160
     },{
         "year":2021,
-        "type":"水域数量",
+        "type":"水域面积",
         "area":170
     },{
         "year":2019,
@@ -83,15 +83,15 @@
     "pid":310115105000,
     "data":[{
         "year":2019,
-        "type":"水域数量",
+        "type":"水域面积",
         "area":130
     },{
         "year":2020,
-        "type":"水域数量",
+        "type":"水域面积",
         "area":160
     },{
         "year":2021,
-        "type":"水域数量",
+        "type":"水域面积",
         "area":170
     },{
         "year":2019,

+ 1 - 0
src/assets/global.css

@@ -2,6 +2,7 @@
 /*滚动条整体部分*/
 ::-webkit-scrollbar {
   width: 0;
+  height: 10px;
 }
 /*正常情况下滑块的样式*/
 ::-webkit-scrollbar-thumb {

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

@@ -40,8 +40,16 @@
           >
             <span class="custom-tree-node" slot-scope="{ node }">
               <template
-                v-if="node.level < 4 && node.parent.label !== '预设模型'"
+                v-if="
+                  node.data.mainType === '所有图层' ||
+                  node.data.mainType === '预设模型'
+                "
               >
+                <el-checkbox v-model="node.checked" style="position: relative"
+                  >{{ node.label }}
+                </el-checkbox>
+              </template>
+              <template v-else>
                 <div
                   :class="{
                     'tree-arrow': !node.expanded,
@@ -50,13 +58,6 @@
                 ></div>
                 <span>{{ node.label }}</span>
               </template>
-              <template
-                v-else-if="node.level === 4 || node.parent.label === '预设模型'"
-              >
-                <el-checkbox v-model="node.checked" style="position: relative"
-                  >{{ node.label }}
-                </el-checkbox>
-              </template>
             </span>
           </el-tree>
         </div>
@@ -358,8 +359,18 @@ export default {
                         return {
                           id: `${item2.title}_${item2.id}`,
                           label: item2.title,
-                          children: [],
-                          mainType: item1.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,
+                                  };
+                                }),
                         };
                       }),
               };
@@ -387,7 +398,9 @@ export default {
             let targetTown = this.classTextToIndex["浦东新区行政区划"].get(
               data.town
             );
-            let targetType = this.classTextToIndex["任务类型"].get(data.type);
+            let targetType = this.classTextToIndex["任务类型"].get(
+              data.type + "审计"
+            );
             let paramUser = {
               field: "c_user_id",
               searchType: "2",
@@ -501,8 +514,8 @@ export default {
       };
       let modifyParams = new FormData();
       modifyParams = {
-        columnId: 89,
-        modelId: 94,
+        columnId: 49,
+        modelId: 53,
         content: JSON.stringify(obj),
       };
       this.$Post(this.urlsCollection.updateContent, modifyParams).then(
@@ -528,29 +541,21 @@ export default {
       );
     },
     deleteCheckList() {
-      // console.log("点击左侧按钮");
       if (
         this.checkedList.length < this.checkArr.length &&
         this.isLeftTransferBtn
       ) {
-        // console.log("可以进行左移操作");
         this.checkArr = this.checkedList;
         this.isLeftTransferBtn = false;
       }
-
-      // if (this.checkedList.length === this.checkArr.length) {
-      //   console.log("不可以进行左移操作");
-      // }
     },
     addCheckList() {
       this.$nextTick(() => {
         if (this.$refs.transferTree) {
-          // console.log(this.checkedKeysArr, "checkedKeysArr");
           this.checkArr = [];
           this.checkedList = [];
           this.checkArr = this.checkedKeysArr;
           this.checkedList = this.checkedKeysArr;
-          // console.log("当前选中的keys");
         }
       });
     },

+ 4 - 5
src/components/common/BottomForm/SameScreenComparison.vue

@@ -134,8 +134,7 @@ export default {
       // 底部文本域
       textarea1: "",
       // 地图底图列表
-      mapList: [
-      ],
+      mapList: [],
     };
   },
   created() {
@@ -178,14 +177,14 @@ export default {
         if (res.code === 200 && res.content.data.length > 0) {
           let data = res.content.data;
           data.forEach((v) => {
-            this.mapList.push({
+            this.mapList.unshift({
               mapName: v.title,
               mapUrl: v.c_url + localStorage.getItem("TOKEN"),
               active: false,
             });
           });
-          this.mapList[0].active = true
-          console.log(this.mapList);
+          this.mapList[0].active = true;
+          // console.log(this.mapList);
         }
       });
     },

+ 19 - 11
src/components/map/MapHolder.vue

@@ -30,6 +30,7 @@ export default {
       // 标记疑点
       currentLabelCid: null,
       currentLabelHtml: null,
+      tableObj: {},
     };
   },
   created() {},
@@ -58,6 +59,7 @@ export default {
       deletePolygonLayer: this.deletePolygonLayer,
       addSinglePolygon: this.addSinglePolygon,
       deleteSinglePolygon: this.deleteSinglePolygon,
+      deleteGroupFromMap: this.deleteGroupFromMap,
       drawGeometry: this.drawGeometry,
       deleteGeometry: this.deleteGeometry,
     });
@@ -142,12 +144,8 @@ export default {
       }
     },
     // 常规图层弹窗
-    createAuditDiv(str) {
-      // 相关属性数据
-      // 表格里的数据
-      let popuppef = this.$refs.auditRef;
-      let tableArr = popuppef.tableArr;
-      // console.log(tableArr, "shuju");
+    createAuditDiv(str, properties) {
+      debugger;
       // 根据ref获取组件的dom元素
       this.currentHtml = this.$refs.auditRef.$el.innerHTML;
       if (this.currentHtml) {
@@ -157,6 +155,8 @@ export default {
         // 动态创建div后赋值模板样式
         div.innerHTML = this.currentHtml;
         $(() => {
+          // console.log($(`#${str}_id .center-table-item-normal`).find(".leftcell"), "first");
+          // console.log($(`#${str}_id .center-table-item-normal`).lastChild(), "last");
           // 法律法规点击事件
           if ($(`#${str}_id a`)) {
             $(`#${str}_id a`).click((e) => {
@@ -546,9 +546,11 @@ export default {
         return "#00ffd5";
       }
     },
-    addSinglePolygon(geometry, cid, color,uniqueId) {
+    addSinglePolygon(geometry, cid, color, uniqueId) {
+      // debugger;
       // console.log(geometry[2], "打印出第一个");
       let coordinates = JSON.parse(geometry).geometry.coordinates[0];
+      let properties = JSON.parse(geometry).properties;
       // 纬经度
       // [22474.568725585938, -16689.47381591797]
       // x,y转换
@@ -563,13 +565,13 @@ export default {
         fillColor: color,
         opacity: 1,
         fillOpacity: 0.4,
-      }).addTo(map2DViewer.map);
-      map2DViewer.polygons[uniqueId].push(polygon);
+      }).addTo(map2DViewer.analysisGroups[uniqueId]);
+
       polygon.on("click", (e) => {
         this.auditPopupShow = true;
         this.popup = L.popup({ maxWidth: 700, maxHeight: 600 })
           .setLatLng(e.latlng)
-          .setContent(this.createAuditDiv("cid"));
+          .setContent(this.createAuditDiv("cid", properties));
         this.auditPopupShow = false;
         this.popup.openOn(map2DViewer.map);
         this.currentCid = cid;
@@ -608,9 +610,15 @@ export default {
     deleteSinglePolygon(polygon) {
       map2DViewer.map.removeLayer(polygon);
     },
+    // 综合分析 - 图层显示
+    deleteGroupFromMap(uniqueId) {
+      if (map2DViewer.analysisGroups[uniqueId]) {
+        map2DViewer.map.removeLayer(map2DViewer.analysisGroups[uniqueId]);
+      }
+    },
     //综合分析 - 标记疑点 - 删除面
     deletePolygonLayer(layer) {
-      console.log(layer,"layer");
+      console.log(layer, "layer");
       map2DViewer.polygons[layer].forEach((polygon) => {
         map2DViewer.map.removeLayer(polygon);
       });

+ 85 - 23
src/components/popup/AttributePopup.vue

@@ -4,29 +4,22 @@
     :style="{ width: boxWidth + 'px', height: boxHeight + 'px' }"
   >
     <div class="close-btn" @click="closeEvent"></div>
-    <el-table :data="tableData" v-if="tableType === 'normal'" height="100%">
-      <el-table-column
-        label="名称"
-        prop="name"
-        align="center"
-      ></el-table-column>
-      <el-table-column
-        label="性质"
-        prop="nature"
-        align="center"
-      ></el-table-column>
-      <el-table-column
-        label="shape-area"
-        prop="area"
-        align="center"
-      ></el-table-column>
+    <div class="attribute-table" v-if="tableType === 'normal'">
+      <div class="attribute-table-top">详细信息</div>
+      <div class="attribute-table-bottom">
+        <div class="attribute-table-bottom-inner">
+          <div
+            class="attribute-table-bottom-inner-item"
+            v-for="(key, value) in tableData[0]"
+            :key="value"
+          >
+            <div class="left">{{ value }}</div>
+            <div class="right">{{ key }}</div>
+          </div>
+        </div>
+      </div>
+    </div>
 
-      <el-table-column
-        label="类型"
-        prop="columnName"
-        align="center"
-      ></el-table-column>
-    </el-table>
     <el-table height="100%" v-if="tableType === 'personal'" :data="tableData">
       <el-table-column label="名称" prop="name"></el-table-column>
       <el-table-column label="类别" prop="type"></el-table-column>
@@ -67,6 +60,75 @@ export default {
   display: flex;
   align-items: center;
   justify-content: center;
+  &-table {
+    width: 98%;
+    height: 98%;
+    border: 1px solid @borderColor;
+    display: flex;
+    align-items: center;
+    flex-direction: column;
+    &-top {
+      width: 100%;
+      height: 30px;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      color: #fff;
+      font-size: 16px;
+      background-image: --webkit-linear-gradient(
+        to left,
+        #002f56,
+        #00aaff,
+        #002f56
+      );
+      background-image: --moz-linear-gradient(
+        to left,
+        #002f56,
+        #00aaff,
+        #002f56
+      );
+      background-image: linear-gradient(to left, #002f56, #00aaff, #002f56);
+    }
+    &-bottom {
+      width: 100%;
+      height: calc(100% - 30px);
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      &-inner {
+        width: 100%;
+        height: 100%;
+        background: #74ffff;
+        overflow: auto;
+        &-item {
+          width: 100%;
+          height: 25%;
+          background: rgb(18, 43, 66, 0.5);
+          display: flex;
+          color: #fff;
+          border-bottom: 1px solid #2fb8ff;
+          .left {
+            width: 40%;
+            height: 100%;
+            // background: red;
+            border-right: 1px solid #2fb8ff;
+            text-align: center;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+          }
+          .right {
+            width: 60%;
+            height: 100%;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            // background: orange;
+          }
+        }
+      }
+    }
+  }
 
   .close-btn {
     cursor: pointer;
@@ -76,7 +138,7 @@ export default {
     width: 40px;
     height: 40px;
     background: url("../../assets/image/close.png") no-repeat center;
-    z-index: 1;
+    z-index: 9999;
   }
   /deep/.el-table__empty-text {
     color: #fff;

+ 27 - 14
src/components/popup/CaseAuditPopup.vue

@@ -8,22 +8,22 @@
       <div v-if="status === 'normal'" class="center-table" style="height: 91%">
         <div
           class="center-table-item-normal"
-          v-for="item in tableArr"
-          :key="item.id"
+          v-for="(value, key) in tableObj"
+          :key="key"
         >
-          <div class="leftcell">{{ item.name }}</div>
-          <div class="rightcell">{{ item.content }}</div>
+          <div class="leftcell">{{ key }}</div>
+          <div class="rightcell">{{ value }}</div>
         </div>
       </div>
       <!-- 激活疑点审计 -->
       <div v-if="status === 'special'" class="center-table">
         <div
           class="center-table-item-special"
-          v-for="item in tableArr"
-          :key="item.id"
+          v-for="(value, key) in tableObj"
+          :key="key"
         >
-          <div class="leftcell">{{ item.name }}</div>
-          <div class="rightcell">{{ item.content }}</div>
+          <div class="leftcell">{{ key }}</div>
+          <div class="rightcell">{{ value }}</div>
         </div>
         <div class="center-table-item-special">
           <div class="leftcell">疑点性质</div>
@@ -78,12 +78,12 @@ export default {
         boxHeight: "320",
       },
       status: "normal",
-      tableArr: [
-        { id: 1, name: "版本", content: "2017年部" },
-        { id: 2, name: "面积", content: "888.4567" },
-        { id: 3, name: "性质", content: "林地 硬化地表" },
-        { id: 4, name: "异常", content: "疑似基本农田被侵占" },
-      ],
+      tableObj: {
+        版本: "2017年部",
+        面积: "888.4567",
+        性质: "林地 硬化地表",
+        异常: "疑似基本农田被侵占",
+      },
       selectVal: "疑点",
       selectOptions: [
         { value: "疑点", label: "疑点" },
@@ -91,6 +91,19 @@ export default {
       ],
     };
   },
+  // props: {
+  //   tableObj: {
+  //     type: Object,
+  //     default() {
+  //       return {
+  //         版本: "2017年部",
+  //         面积: "888.4567",
+  //         性质: "林地 硬化地表",
+  //         异常: "疑似基本农田被侵占",
+  //       };
+  //     },
+  //   },
+  // },
   computed: {
     getPopupStatus() {
       //疑点审计 1,0

+ 2 - 2
src/config/common.js

@@ -623,7 +623,7 @@ export const menusMap = {
         commonData: [
           {
             type: "tb",
-            title: "水域数量",
+            title: "水域面积",
             unit: "条",
             categoryData: ["2019", "2020", "2021"],
             valueData: [40, 420, 654],
@@ -737,7 +737,7 @@ export const menusMap = {
     [{
       type: "imageMenu",
       index: 0,
-      title: "水域数量",
+      title: "水域面积",
       titleWidth: 81,
       boxHeight: 236,
       imageUrl: "/static/images/2.png",

+ 237 - 201
src/views/ComprehensiveAnalysis.vue

@@ -93,24 +93,12 @@
             <el-tree
               :data="modelData"
               :props="defaultProps"
-              default-expand-all
               @check-change="handleCheckChange"
               node-key="id"
               ref="tree"
               :filter-node-method="filterNode"
             >
               <span class="custom-tree-node" slot-scope="{ node }">
-                <!-- <template
-                  v-if="node.level < 4 && node.parent.label !== '我的模型'"
-                >
-                  <div
-                    :class="{
-                      'tree-arrow': !node.expanded,
-                      'tree-arrow-expanded': node.expanded,
-                    }"
-                  ></div>
-                  <span>{{ node.label }}</span>
-                </template> -->
                 <template
                   v-if="
                     node.data.mainType === '所有图层' ||
@@ -194,11 +182,15 @@
               >
                 <div
                   class="panel-list-item"
-                  v-for="i in originalData[key]"
-                  :key="i.id"
-                  @click.stop="listItemClick('default', i)"
+                  v-for="(v, i) in originalData[key]"
+                  :key="v.id"
+                  @click.stop="listItemClick('default', v)"
                 >
-                  {{ i.name }}
+                  <!-- {{ v.column_name + "_" + (i + 1) }} -->
+                  {{ v.title + "_" + (i + 1) }}
+                </div>
+                <div class="panel-footer" @mouseenter="mouseenter(key)">
+                  <Pagination :paginationData="paginationData" />
                 </div>
               </el-collapse-item>
 
@@ -243,12 +235,12 @@
 // 综合分析 this.$store.state.leftMenuTitle
 import MenuCard from "@/components/layout/MenuCard.vue";
 import Legend from "@/components/map/Legend.vue";
+import Pagination from "@/components/common/Pagination.vue";
 import publicFun from "@/utils/publicFunction.js";
 import { treeModel, defaultLayers } from "@/config/common";
 import AttributePopup from "@/components/popup/AttributePopup.vue";
 import LabelCasePopup from "@/components/popup/LabelCasePopup.vue";
 import LawPopup from "@/components/popup/LawPopup.vue";
-import { get } from "@/utils/request";
 import { nextTick } from "vue";
 export default {
   name: "ComprehensiveAnalysis",
@@ -258,9 +250,12 @@ export default {
     AttributePopup,
     LawPopup,
     LabelCasePopup,
+    Pagination,
   },
   data() {
     return {
+      enteredPanelId: "",
+      enteredColumnId: "",
       uploadBaseUrl: "/dms",
       classTextToIndex: {},
       addressInput: "",
@@ -295,6 +290,23 @@ export default {
       randomColor: new Map(),
       isLeftLock: true,
       isRightLock: true,
+      currentPage: 1,
+      currentPageSize: 10,
+      paginationData: {
+        pageSize: 10,
+        pagerCount: 5,
+        currentPage: 1,
+        pageSizes: [5, 10, 20, 30],
+        total: 50,
+        currentChange: (val) => {
+          let columnId = this.enteredColumnId;
+          let panelId = this.enteredPanelId;
+          this.changeSingleLayer(columnId, panelId, val);
+        },
+        handleSizeChange: (val) => {
+          this.handleSizeChange(val);
+        },
+      },
     };
   },
   computed: {
@@ -426,11 +438,12 @@ export default {
     uploadDataIdArr = [];
     this.treeCoordMap.clear();
     map2DViewer.map.off("move");
-    if (Object.getOwnPropertyNames(map2DViewer.polygons).length > 0) {
-      for (let layer in map2DViewer.polygons) {
+    if (Object.getOwnPropertyNames(map2DViewer.analysisGroups).length > 0) {
+      for (let group in map2DViewer.analysisGroups) {
         this.$store.state.mapMethodsCollection
           .get("RENDER")
-          .deletePolygonLayer(map2DViewer.polygons[layer]);
+          .deleteGroupFromMap(group);
+        map2DViewer.analysisGroups[group].remove();
       }
     }
 
@@ -441,15 +454,161 @@ export default {
           .deleteGeometry(map2DViewer.myLabels[label]);
       }
     }
-
+    map2DViewer.analysisGroups = {};
     map2DViewer.polygons = {};
     map2DViewer.myLabels = {};
     this.attrTableShow = false;
     this.updateCasePopupShow = false;
   },
   methods: {
-    handleNodeClick(node) {
-      console.log(node);
+    mouseenter(val) {
+      if (this.rightPanelDataMap.has(val)) {
+        // 方便获取
+        this.enteredPanelId = val;
+        this.enteredColumnId = this.rightPanelDataMap.get(val);
+        // console.log("当前的columnId", this.enteredColumnId);
+      }
+    },
+    handleSizeChange(val) {
+      console.log(`每页 ${val} 条`);
+      this.currentPageSize = val;
+      this.changeSingleLayer(
+        this.enteredColumnId,
+        this.enteredPanelId,
+        this.currentPage
+      );
+      // this.getTableData(this.currentPage);
+    },
+    getTableData() {},
+    /**
+     * 获取图层信息 -- 所有模型和预设模型
+     */
+    displaySingleLayer(columnId, id) {
+      // console.log(columnId, "columnId");
+      let layerParams = new FormData();
+      layerParams = {
+        columnId: columnId,
+        states: "0,1,2,3",
+        pageSize: 10,
+        page: 0,
+      };
+      this.$Post(this.urlsCollection.selectContentList, layerParams).then(
+        (res) => {
+          if (res.code === 202 && res.content === "数据不存在") {
+            this.$message.info("暂无数据!");
+          }
+          if (res.code === 200 && res.content.data.length > 0) {
+            let uniqueId = id;
+            map2DViewer.analysisGroups[uniqueId] = L.featureGroup();
+            map2DViewer.analysisGroups[uniqueId].addTo(map2DViewer.map);
+            this.legendTitle.push({
+              name: uniqueId,
+              info: uniqueId,
+            });
+            this.legendIcon.push({
+              name: uniqueId,
+              background: "transparent",
+              border: `1px solid ${this.randomColor.get(uniqueId)}`,
+            });
+            this.originalData[uniqueId] = res.content.data.map((ele) => {
+              let cid = ele.id;
+              let geometry = ele.c_content;
+              this.layerIdMap.set(uniqueId, uniqueId);
+              // 激活当前展开面板
+              this.activeNames = ["myLabel", uniqueId];
+              this.$store.state.mapMethodsCollection
+                .get("RENDER")
+                .addSinglePolygon(
+                  geometry,
+                  cid,
+                  this.randomColor.get(uniqueId),
+                  uniqueId
+                );
+              return {
+                id: ele.id,
+                // "垃圾堆放点"
+                column_name: ele.column_name,
+                // 是否疑点
+                c_boolean: ele.c_boolean ? "是" : "否",
+                // 行政区划
+                c_xzqh: ele.c_xzqh,
+                // 空间信息
+                c_content: ele.c_content,
+                // 疑点修改时间
+                c_date_time: ele.c_date_time,
+                // 修改人员名称
+                // c_editor_name: ele.c_editor_name,
+                // 标题
+                title: ele.title,
+                column_id: ele.column_id,
+                content: ele.content,
+                secret_level: ele.secret_level,
+              };
+            });
+          }
+        }
+      );
+    },
+    /**
+     * 切换页时改变图层数据
+     */
+    changeSingleLayer(columnId, id, val) {
+      let layerParams = new FormData();
+      layerParams = {
+        columnId: columnId,
+        states: "0,1,2,3",
+        pageSize: 10,
+        page: val - 1,
+      };
+      this.$Post(this.urlsCollection.selectContentList, layerParams).then(
+        (res) => {
+          console.log(res, "changeSingeLayer");
+          if (res.code === 200 && res.content.data.length > 0) {
+            this.paginationData.currentPage = val;
+            this.paginationData.total = res.content.count;
+            let uniqueId = id;
+            if (map2DViewer.analysisGroups[uniqueId]) {
+              console.log("当前的analysisGroups有数据");
+              // map2DViewer.analysisGroups[uniqueId].remove()
+              map2DViewer.analysisGroups[uniqueId].clearLayers();
+              this.originalData[uniqueId] = res.content.data.map((ele) => {
+                let cid = ele.id;
+                let geometry = ele.c_content;
+                this.layerIdMap.set(uniqueId, uniqueId);
+                this.activeNames = ["myLabel", uniqueId];
+                this.$store.state.mapMethodsCollection
+                  .get("RENDER")
+                  .addSinglePolygon(
+                    geometry,
+                    cid,
+                    this.randomColor.get(uniqueId),
+                    uniqueId
+                  );
+                return {
+                  id: ele.id,
+                  // "垃圾堆放点"
+                  column_name: ele.column_name,
+                  // 是否疑点
+                  c_boolean: ele.c_boolean ? "是" : "否",
+                  // 行政区划
+                  c_xzqh: ele.c_xzqh,
+                  // 空间信息
+                  c_content: ele.c_content,
+                  // 疑点修改时间
+                  c_date_time: ele.c_date_time,
+                  // 修改人员名称
+                  // c_editor_name: ele.c_editor_name,
+                  // 标题
+                  title: ele.title,
+                  column_id: ele.column_id,
+                  content: ele.content,
+                  secret_level: ele.secret_level,
+                };
+              });
+            }
+          }
+        }
+      );
     },
     // 数据字典查询 -- 根据内容获取对应的index
     // this.classTextToIndex["任务类型"]
@@ -465,8 +624,6 @@ export default {
           res.content.forEach((v) => {
             this.classTextToIndex[keyName].set(v.name, v.index + "");
           });
-
-          // console.log(this.classTextToIndex[keyName], keyName);
         }
       });
     },
@@ -475,7 +632,6 @@ export default {
       this.modelData = [];
       this.$Post(this.urlsCollection.getColumnList).then((res) => {
         if (res.code === 200 && res.content.length > 0) {
-          // debugger
           let data = res.content.map((item1) => {
             if (item1.title === "所有图层" && item1.columnList.length > 0) {
               treeIdMap.set(
@@ -520,12 +676,12 @@ export default {
                                               `${item4.title}_${item4.id}`
                                             );
                                             this.rightPanelDataMap.set(
-                                              item4.title,
-                                              item4.children
+                                              `${item4.title}_${item4.id}`,
+                                              item4.id
                                             );
 
                                             this.randomColor.set(
-                                              `${item4.title}_${item2.title}`,
+                                              `${item4.title}_${item4.id}`,
                                               publicFun.getRandomColor()
                                             );
 
@@ -577,6 +733,10 @@ export default {
                                     `${item3.title}_${item3.id}`,
                                     `${item3.title}_${item3.id}`
                                   );
+                                  this.rightPanelDataMap.set(
+                                    `${item3.title}_${item3.id}`,
+                                    item3.id
+                                  );
                                   this.randomColor.set(
                                     `${item3.title}_${item3.id}`,
                                     publicFun.getRandomColor()
@@ -586,6 +746,7 @@ export default {
                                     label: item3.title,
                                     children: [],
                                     mainType: item1.title,
+                                    columnId: item3.id,
                                   };
                                 }),
                         };
@@ -767,18 +928,21 @@ export default {
     locateEvent(node) {
       if (this.layerIdMap.has(node.data.id)) {
         let layer = this.layerIdMap.get(node.data.id);
-        console.log(layer, "layer");
-        map2DViewer.map.fitBounds(map2DViewer.polygons[layer][0].getBounds());
+        // console.log(layer, "layer");
+        map2DViewer.map.fitBounds(
+          map2DViewer.analysisGroups[node.data.id].getBounds()
+        );
       }
     },
     handleUpdate(node) {
       this.$bus.$emit("updateModel", node);
     },
     handleDelete(node) {
+      debugger;
       // console.log(node, "删除节点");
       let deleteParams = {
         id: customModelIdMap.get(node.data.label).id,
-        columnId: 89,
+        columnId: 49,
         state: 4,
       };
       this.$Post(this.urlsCollection.updateAudit, deleteParams).then((res) => {
@@ -799,30 +963,19 @@ export default {
     handleCheckChange(data, checked) {
       if (data.mainType && data.mainType !== "我的模型") {
         if (checked) {
-          // console.log(data, "选中的数据");
           this.showRightBox = true;
           // 第一级菜单是所有图层
           if (data.mainType === "所有图层") {
-            this.rightPanelTitle = data.label;
-            this.originalData[`${data.label}_${data.town}`] =
-              this.rightPanelDataMap.get(data.label);
+            this.rightPanelTitle = data.id;
             let searchParam = [];
 
             let targetTown = this.classTextToIndex["浦东新区行政区划"].get(
               data.town
             );
 
-            let targetType = "";
-            if (data.type !== "林资源" && data.type !== "林地资源") {
-              targetType = this.classTextToIndex["任务类型"].get(
-                data.type + "审计"
-              );
-            }
-            if (data.type === "林资源" || data.type === "林地资源") {
-              targetType =
-                this.classTextToIndex["任务类型"].get("林地资源审计");
-            }
-            console.log(targetTown, targetType, "target");
+            let targetType = this.classTextToIndex["任务类型"].get(
+              data.type + "审计"
+            );
 
             let paramUser = {
               field: "c_user_id",
@@ -857,12 +1010,9 @@ export default {
               page: 0,
               search: JSON.stringify(searchParam),
             };
-            // console.log(params, "所有图层不显示");
-
             this.$Post(this.urlsCollection.selectContentList, params).then(
               (res) => {
-                // console.log(res, "获取数据");
-                // debugger
+                console.log(res, "res");
                 if (res.code === 202 && res.content === "数据不存在") {
                   this.$message.info("当前用户无权限!");
                   layerAuthorityMap.set(data.id, "无权限");
@@ -870,61 +1020,12 @@ export default {
 
                 if (res.code === 200 && res.content.data.length > 0) {
                   layerAuthorityMap.set(data.id, "有权限");
-                  console.log("有权限");
-                  console.log(data, "有权限的图层");
                   this.$store.state.treeDataCollection.set(data.id, {
                     mainType: data.mainType,
-                    town: data.town,
-                    type: data.type,
-                  });
-
-                  let layerParams = new FormData();
-                  layerParams = {
-                    columnId: data.columnId,
-                    states: "0,1,2,3",
-                    pageSize: 10,
-                    page: 0,
-                  };
-                  this.$Post(
-                    this.urlsCollection.selectContentList,
-                    layerParams
-                  ).then((res) => {
-                    console.log(res, "最终res");
-                    if (res.code === 200 && res.content.data.length > 0) {
-                      console.log(res.content, "获取到的数据");
-                      let uniqueId = `${data.label}_${data.town}`;
-                      this.originalData[uniqueId] = res.content.data.map(
-                        (ele) => {
-                          let cid = `${data.label}_${ele.id}`;
-
-                          let geometry = ele.c_geometry;
-                          map2DViewer.polygons[`${cid}_polygon`] = [];
-                          this.layerIdMap.set(data.id, `${cid}_polygon`);
-                          // 激活当前展开面板
-                          this.activeNames = [
-                            "myLabel",
-                            `${data.label}_${data.town}`,
-                          ];
-                          this.$store.state.mapMethodsCollection
-                            .get("RENDER")
-                            .addSinglePolygon(
-                              geometry,
-                              cid,
-                              this.randomColor.get(uniqueId)
-                            );
-                          return {
-                            id: ele.id,
-                            name: ele.c_yichang,
-                            columnName: ele.column_name,
-                            town: data.town,
-                            area: ele.c_c_shui_area,
-                            nature: ele.c_yichang,
-                            // year: ele.c_c_year,
-                          };
-                        }
-                      );
-                    }
+                    // town: data.town,
+                    // type: data.type,
                   });
+                  this.displaySingleLayer(data.columnId, data.id);
                 }
               }
             );
@@ -932,65 +1033,20 @@ export default {
           // 第一级菜单是预设模型
           if (data.mainType === "预设模型") {
             layerAuthorityMap.set(data.id, "有权限");
-            this.rightPanelTitle = `${data.label}(${data.mainType})`;
-            let params = new FormData();
-            params = {
-              columnId: data.id.split("_")[1],
-              states: "0,1,2,3",
-              pageSize: 10,
-              page: 0,
-            };
-
-            this.$Post(this.urlsCollection.selectContentList, params).then(
-              (res) => {
-                if (res.code === 200 && res.content.data.length > 0) {
-                  console.log(res.content.data, "点击预设模型后获取到的数据");
-                  this.$store.state.treeDataCollection.set(data.id, {
-                    mainType: data.mainType,
-                  });
-                  // id: "水资源_88"
-                  console.log(data, "预设模型下的单独数据");
-                  let uniqueId = data.id;
-                  map2DViewer.polygons[uniqueId] = [];
-                  this.layerIdMap.set(data.id, data.id);
-                  this.originalData[uniqueId] = res.content.data.map((ele) => {
-                    let cid = ele.id;
-                    let geometry = ele.c_content;
-
-                    let attrContent = JSON.parse(ele.c_content).properties;
-                    console.log(attrContent, "attrContent");
-
-                    // 激活当前展开面板
-                    this.activeNames = ["myLabel", data.id];
-
-                    this.$store.state.mapMethodsCollection
-                      .get("RENDER")
-                      .addSinglePolygon(
-                        geometry,
-                        cid,
-                        this.randomColor.get(uniqueId),
-                        uniqueId
-                      );
-
-                    return {
-                      id: ele.id,
-                      name: ele.title || "--",
-                      columnName: ele.column_name || "--",
-                      area: ele.c_c_shui_area || "--",
-                      nature: ele.c_xingzhi || "--",
-                    };
-                  });
-                }
-              }
-            );
+            this.rightPanelTitle = data.id;
+            this.displaySingleLayer(data.columnId, data.id);
           }
         } else {
-          // 设置右侧折叠面板item数量
-          if (data.mainType === "所有图层") {
-            delete this.originalData[`${data.label}_${data.town}`];
-          }
-          if (data.mainType === "预设模型") {
-            delete this.originalData[data.id];
+          delete this.originalData[data.id];
+
+          // 移除图例
+          if (this.legendTitle.length > 0) {
+            this.legendTitle = this.legendTitle.filter((v) => {
+              return v.name !== data.id;
+            });
+            this.legendIcon = this.legendIcon.filter((v) => {
+              return v.name !== data.id;
+            });
           }
 
           this.layerIdMap.delete(data.id);
@@ -1001,20 +1057,8 @@ export default {
           this.activeNames = ["myLabel"];
           this.$store.state.mapMethodsCollection
             .get("RENDER")
-            .deletePolygonLayer(data.id);
+            .deleteGroupFromMap(data.id);
         }
-        debugger
-
-        this.legendTitle = Object.keys(this.originalData).map((v) => {
-          return { name: v, info: v };
-        });
-        this.legendIcon = this.legendTitle.map((c) => {
-          let a = this.randomColor.get(c.name);
-          return {
-            background: "transparent",
-            border: `1px solid ${this.randomColor.get(c.name)}`,
-          };
-        });
       }
 
       // 第一级菜单是我的模型
@@ -1025,13 +1069,6 @@ export default {
     },
     displayOverlayData(data) {
       if (data.c_dzfx_file) {
-        // this.uploadBaseUrl + data.c_dzfx_file
-        // this.$Get(this.uploadBaseUrl + data.c_dzfx_file, "").then(
-        //   (response) => {
-        //     console.log(response, "response");
-        //   }
-        // );
-        // 测试数据
         this.$Get(this.uploadBaseUrl + data.c_dzfx_file, "").then(
           (response) => {
             if (response.features.length > 0) {
@@ -1069,21 +1106,13 @@ export default {
       this.tableData = [];
       if (type === "default") {
         this.tableType = "normal";
-        this.boxWidth = "600";
-        this.boxHeight = "200";
-        this.tableData.push({
-          nature: data.nature,
-          area: data.area,
-          town: data.town,
-          year: this.$dayjs(data.year).format("YYYY"),
-          name: data.name,
-          columnName: data.columnName,
-          // version: data.properties["版本"],
-          // nature: data.properties["性质"],
-          // area: data.properties["面积"],
-          // long: data.properties["周长"] || "--",
-        });
-        console.log(this.tableData);
+        this.boxWidth = "400";
+        this.boxHeight = "250";
+        if (data.c_content) {
+          let obj = JSON.parse(data.c_content).properties;
+          console.log(obj);
+          this.tableData.push(obj);
+        }
       }
       if (type === "new") {
         this.rightLabelData.forEach((item) => {
@@ -1584,12 +1613,12 @@ export default {
       &-innerbox {
         width: 90%;
         height: 98%;
-        /deep/.el-icon-arrow-right:before {
-          content: "";
-        }
-        /deep/.el-icon-arrow-right:after {
-          content: "";
-        }
+        // /deep/.el-icon-arrow-right:before {
+        //   content: "";
+        // }
+        // /deep/.el-icon-arrow-right:after {
+        //   content: "";
+        // }
         .panel-list-item {
           position: relative;
           margin: 0 auto;
@@ -1629,6 +1658,13 @@ export default {
             }
           }
         }
+        .panel-footer {
+          border: none;
+          width: 100%;
+          height: 50px;
+          margin-top: 10px;
+          overflow-x: auto;
+        }
       }
     }
   }

+ 1 - 1
src/views/FrequencyView.vue

@@ -79,7 +79,7 @@
 import NewSelect from "@/components/common/NewSelect.vue";
 import Pagination from "@/components/common/Pagination.vue";
 /**
- * 频发问题 dialog -- 智能辅助
+ * 频发问题 -- 智能辅助
  * @author: Gao Lu
  * @Date: 2022.11.24
  */