浏览代码

项目结构细化,配置目录权限,并与页面渲染结合,针对各类权限改变默认展示内容,

wan.dequan 3 年之前
父节点
当前提交
0052b36ea2
共有 55 个文件被更改,包括 1184 次插入541 次删除
  1. 二进制
      src/assets/images/banner-.png
  2. 二进制
      src/assets/images/banner.png
  3. 1 1
      src/assets/less/variable.less
  4. 37 7
      src/components/Currency/Aside.vue
  5. 10 9
      src/components/Currency/DataTable/DataTable.vue
  6. 9 10
      src/components/Currency/DataTable/MetadataListContainer.vue
  7. 1 1
      src/components/Currency/DataTable/MetadataListContainer/CenterLocation.vue
  8. 1 1
      src/components/Currency/DataTable/MetadataListContainer/FileImport.vue
  9. 1 1
      src/components/Currency/DataTable/MetadataListContainer/MetadataList.vue
  10. 2 2
      src/components/Currency/DataTable/MetadataListContainer/SingleData.vue
  11. 0 0
      src/components/Currency/ListContainer.vue
  12. 1 1
      src/components/DataAccess/DataLog.vue
  13. 14 0
      src/components/DataAccess/ResultFeedback.vue
  14. 1 1
      src/components/DataDisplay/LayerDisplay/Buffer.vue
  15. 2 2
      src/components/DataDisplay/LayerDisplay/ContentList.vue
  16. 7 7
      src/components/DataDisplay/LayerDisplay/LayerControl.vue
  17. 5 5
      src/components/DataDisplay/LayerDisplay/Map.vue
  18. 8 8
      src/components/DataDisplay/LayerDisplay/Mark.vue
  19. 6 6
      src/components/DataDisplay/LayerDisplay/Menu.vue
  20. 2 2
      src/components/DataDisplay/LayerDisplay/PlaceList.vue
  21. 10 10
      src/components/DataDisplay/LayerDisplay/Tool.vue
  22. 23 0
      src/components/DataQualityInspection/AccessoryDiagram.vue
  23. 23 0
      src/components/DataQualityInspection/DataIntegrityCheck.vue
  24. 23 0
      src/components/DataQualityInspection/ExcelQualityInspection.vue
  25. 23 0
      src/components/DataQualityInspection/GeojsonQualityInspection.vue
  26. 23 0
      src/components/DataQualityInspection/ImportExcelQualityInspectionRules.vue
  27. 23 0
      src/components/DataQualityInspection/ImportGeojsonQualityInspectionRules.vue
  28. 23 0
      src/components/DataQualityInspection/ImportShapefileQualityInspectionRules.vue
  29. 23 0
      src/components/DataQualityInspection/InterfaceAccessDiagram.vue
  30. 23 0
      src/components/DataQualityInspection/LayerQualityInspectionRules.vue
  31. 0 85
      src/components/DataQualityInspection/QualityInspectionProcessManagement.vue
  32. 0 79
      src/components/DataQualityInspection/QualityInspectionRules.vue
  33. 23 0
      src/components/DataQualityInspection/ShapefileQualityInspection.vue
  34. 23 0
      src/components/DataQualityInspection/SingleDataQualityInspectionRules.vue
  35. 1 1
      src/components/DataServices/DataService.vue
  36. 1 1
      src/components/DataServices/ServiceMonitoring.vue
  37. 13 0
      src/components/DataServices/TileService.vue
  38. 1 1
      src/components/SecondaryDevelopment/GraphicsDrawingTool.vue
  39. 1 1
      src/components/SecondaryDevelopment/ManualDrawingTool.vue
  40. 1 1
      src/components/SecondaryDevelopment/MeasureTool.vue
  41. 5 5
      src/components/Utilities/MeasureTool/Map.vue
  42. 10 10
      src/components/Utilities/MeasureTool/Tool.vue
  43. 1 1
      src/router/index.js
  44. 272 0
      src/store/index.js
  45. 1 1
      src/utils/ol_plugins/layer_control.js
  46. 30 27
      src/views/DataAccess.vue
  47. 30 14
      src/views/DataDisplay.vue
  48. 30 12
      src/views/DataLayer.vue
  49. 105 21
      src/views/DataQualityInspection.vue
  50. 0 78
      src/views/DataService.vue
  51. 86 0
      src/views/DataServices.vue
  52. 144 80
      src/views/Home.vue
  53. 27 15
      src/views/SecondaryDevelopment.vue
  54. 27 11
      src/views/SystemManagement.vue
  55. 27 23
      src/views/Utilities.vue

二进制
src/assets/images/banner-.png


二进制
src/assets/images/banner.png


+ 1 - 1
src/assets/less/variable.less

@@ -4,7 +4,7 @@
 @router_background: #F0F2F5;
 
 // header
-@header_height: 330px;
+@header_height: 260px;
 
 // breadcrumb_part
 // @breadcrumb_height: 72px;

+ 37 - 7
src/components/Currency/Aside.vue

@@ -1,14 +1,39 @@
 <template>
   <el-aside :class="'every_aside'">
     <el-menu
-      :default-active="showIndex"
+      :default-active="showMenuIndex"
       class="el-menu-vertical-demo"
       @select="handleMenuSelect"
     >
-      <div v-for="(item, index) in menuList" :key="index">
-        <el-menu-item v-if="!item.children" :index="item.index">
-          <span slot="title">{{ item.name }}</span>
+      <div v-for="(item1, index1) in menuList" :key="index1">
+        <el-menu-item :index="item1.index" v-if="!item1.children">
+          <span slot="title">{{ item1.label }}</span>
         </el-menu-item>
+        <el-submenu :index="item1.index" v-else>
+          <template slot="title">
+            <span>{{ item1.label }}</span>
+          </template>
+          <div v-for="(item2, index2) in item1.children" :key="index2">
+            <el-menu-item
+              :index="item1.index + '-' + item2.index"
+              v-if="!item2.children"
+            >
+              {{ item2.label }}
+            </el-menu-item>
+            <el-submenu :index="item1.index + '-' + item2.index" v-else>
+              <template slot="title">
+                <span>{{ item2.label }}</span>
+              </template>
+              <div v-for="(item3, index3) in item2.children" :key="index3">
+                <el-menu-item
+                  :index="item1.index + '-' + item2.index + '-' + item3.index"
+                >
+                  {{ item3.label }}
+                </el-menu-item>
+              </div>
+            </el-submenu>
+          </div>
+        </el-submenu>
       </div>
     </el-menu>
   </el-aside>
@@ -17,7 +42,7 @@
 <script>
 export default {
   props: {
-    showIndex: {
+    showMenuIndex: {
       type: String,
     },
     menuList: {
@@ -32,7 +57,7 @@ export default {
 
 <style lang="less" scoped>
 .every_aside {
-  width: 200px !important;
+  width: 250px !important;
   height: 100%;
   background: #ffffff;
   .el-menu {
@@ -40,13 +65,18 @@ export default {
     .el-menu-item {
       font-family: Source Han Sans CN VF;
       font-size: 16px;
-      font-weight: bold;
       color: #000;
     }
     .el-menu-item.is-active {
+      font-weight: bold;
       color: #409eff;
       background-color: #ecf5ff;
     }
+    /deep/ .el-submenu__title {
+      font-family: Source Han Sans CN VF;
+      font-size: 16px;
+      color: #000;
+    }
   }
 }
 </style>

+ 10 - 9
src/components/DataAccess/Container.vue → src/components/Currency/DataTable/DataTable.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-container :class="'data_access'">
+  <el-container :class="'data_table'">
     <el-aside width="200px">
       <el-menu ref="menu" class="first_menu">
         <el-submenu
@@ -36,8 +36,7 @@
 <script>
 export default {
   components: {
-    MetadataListContainer: () =>
-      import("@/components/Currency/MetadataListContainer.vue"),
+    MetadataListContainer: () => import("./MetadataListContainer.vue"),
   },
   props: {
     index: {
@@ -91,9 +90,11 @@ export default {
 </script>
 
 <style lang="less" scoped>
+.data_table {
+  padding-left: 20px;
+}
 .el-main {
   padding: 0 0;
-  padding-left: 20px;
 }
 .el-aside {
   background: #ffffff;
@@ -167,23 +168,23 @@ export default {
   }
 
   .index0 /deep/.el-submenu__title {
-    background: url(../../assets/images/layer/1.png) no-repeat 20px center;
+    background: url(~@/assets/images/layer/1.png) no-repeat 20px center;
   }
 
   .index1 /deep/.el-submenu__title {
-    background: url(../../assets/images/layer/2.png) no-repeat 20px center;
+    background: url(~@/assets/images/layer/2.png) no-repeat 20px center;
   }
 
   .index2 /deep/.el-submenu__title {
-    background: url(../../assets/images/layer/3.png) no-repeat 20px center;
+    background: url(~@/assets/images/layer/3.png) no-repeat 20px center;
   }
 
   .index3 /deep/.el-submenu__title {
-    background: url(../../assets/images/layer/4.png) no-repeat 20px center;
+    background: url(~@/assets/images/layer/4.png) no-repeat 20px center;
   }
 
   .index4 /deep/.el-submenu__title {
-    background: url(../../assets/images/layer/5.png) no-repeat 20px center;
+    background: url(~@/assets/images/layer/5.png) no-repeat 20px center;
   }
 }
 </style>

+ 9 - 10
src/components/Currency/MetadataListContainer.vue → src/components/Currency/DataTable/MetadataListContainer.vue

@@ -206,21 +206,20 @@ export default {
     };
   },
   created() {
-    console.log(this.params);
+    // console.log(this.params);
   },
   components: {
-    SingleData: () =>
-      import("@/components/Currency/MetadataListContainer/SingleData.vue"),
-    FileImport: () =>
-      import("@/components/Currency/MetadataListContainer/FileImport.vue"),
-    MetadataList: () =>
-      import("@/components/Currency/MetadataListContainer/MetadataList.vue"),
+    SingleData: () => import("./MetadataListContainer/SingleData.vue"),
+    FileImport: () => import("./MetadataListContainer/FileImport.vue"),
+    MetadataList: () => import("./MetadataListContainer/MetadataList.vue"),
   },
   created() {
     let that = this;
-    $.getJSON("./static/config/hebei.json", function (result) {
-      that.regionList = result;
-    });
+    if (this.type == 3) {
+      $.getJSON("./static/config/hebei.json", function (result) {
+        that.regionList = result;
+      });
+    }
     this.searchData();
   },
   methods: {

+ 1 - 1
src/components/Currency/MetadataListContainer/CenterLocation.vue → src/components/Currency/DataTable/MetadataListContainer/CenterLocation.vue

@@ -21,7 +21,7 @@
 </template>
 
 <script>
-import marker from "../../../assets/images/marker-icon.png";
+import marker from "@/assets/images/marker-icon.png";
 
 import Map from "ol/Map";
 import View from "ol/View";

+ 1 - 1
src/components/Currency/MetadataListContainer/FileImport.vue → src/components/Currency/DataTable/MetadataListContainer/FileImport.vue

@@ -139,7 +139,7 @@
 import api from "@/api/content";
 export default {
   components: {
-    CenterLocation: () => import("@/components/Currency/MetadataListContainer/CenterLocation.vue"),
+    CenterLocation: () => import("./CenterLocation.vue"),
   },
   props: {
     isShow: {

+ 1 - 1
src/components/Currency/MetadataListContainer/MetadataList.vue → src/components/Currency/DataTable/MetadataListContainer/MetadataList.vue

@@ -177,7 +177,7 @@
 import api from "@/api/content";
 export default {
   components: {
-    SingleData: () => import("@/components/Currency/MetadataListContainer/SingleData.vue"),
+    SingleData: () => import("./SingleData.vue"),
   },
   props: {
     tableLoading: {

+ 2 - 2
src/components/Currency/MetadataListContainer/SingleData.vue → src/components/Currency/DataTable/MetadataListContainer/SingleData.vue

@@ -178,8 +178,8 @@
 import api from "@/api/content";
 export default {
   components: {
-    CenterLocation1: () => import("@/components/Currency/MetadataListContainer/CenterLocation.vue"),
-    CenterLocation2: () => import("@/components/Currency/MetadataListContainer/CenterLocation.vue"),
+    CenterLocation1: () => import("./CenterLocation.vue"),
+    CenterLocation2: () => import("./CenterLocation.vue"),
   },
   props: {
     isShow: {

+ 0 - 0
src/components/Currency/MetadataListContainer/ListContainer.vue → src/components/Currency/ListContainer.vue


+ 1 - 1
src/components/DataService/TileSerivce.vue → src/components/DataAccess/DataLog.vue

@@ -8,6 +8,6 @@ export default {
 }
 </script>
 
-<style>
+<style lang="less" scoped>
 
 </style>

+ 14 - 0
src/components/DataAccess/ResultFeedback.vue

@@ -0,0 +1,14 @@
+<template>
+  
+</template>
+
+<script>
+export default {
+
+}
+</script>
+
+<style lang="less" scoped>
+
+</style>
+ 

+ 1 - 1
src/components/DataDisplay/LayerDisplay/Buffer.vue

@@ -71,7 +71,7 @@ import { Style, Fill, Stroke, Icon } from "ol/style";
 import GeoJSON from "ol/format/GeoJSON";
 import DrawTool from "@/utils/ol_plugins/draw";
 
-import focusMaker from "../../../assets/images/poi/focus_maker.png";
+import focusMaker from "@/assets/images/poi/focus_maker.png";
 
 export default {
   props: {

+ 2 - 2
src/components/DataDisplay/LayerDisplay/ContentList.vue

@@ -30,8 +30,8 @@ import Feature from "ol/Feature";
 import Point from "ol/geom/Point";
 import { Icon, Style } from "ol/style";
 
-import marker from "../../../assets/images/poi/marker-icon.png";
-import focusMaker from "../../../assets/images/poi/focus_maker.png";
+import marker from "@/assets/images/poi/marker-icon.png";
+import focusMaker from "@/assets/images/poi/focus_maker.png";
 
 export default {
   props: {

+ 7 - 7
src/components/DataDisplay/LayerDisplay/LayerControl.vue

@@ -257,11 +257,11 @@ export default {
             }
           }
           .up .bg {
-            background: url(../../../assets/images/layercontrol/layer_up.png)
+            background: url(~@/assets/images/layercontrol/layer_up.png)
               center center no-repeat;
           }
           .down .bg {
-            background: url(../../../assets/images/layercontrol/layer_down.png)
+            background: url(~@/assets/images/layercontrol/layer_down.png)
               center center no-repeat;
           }
         }
@@ -275,23 +275,23 @@ export default {
           margin: 3px 4px 3px 3px;
         }
         .remove {
-          background: url(../../../assets/images/layercontrol/remove1.png)
+          background: url(~@/assets/images/layercontrol/remove1.png)
             center center no-repeat;
         }
         .layershow {
-          background: url(../../../assets/images/layercontrol/show1.png) center
+          background: url(~@/assets/images/layercontrol/show1.png) center
             center no-repeat;
         }
         .layerhide {
-          background: url(../../../assets/images/layercontrol/hide1.png) center
+          background: url(~@/assets/images/layercontrol/hide1.png) center
             center no-repeat;
         }
         .opacityShow {
-          background: url(../../../assets/images/layercontrol/opacity_show1.png)
+          background: url(~@/assets/images/layercontrol/opacity_show1.png)
             center center no-repeat;
         }
         .opacityHide {
-          background: url(../../../assets/images/layercontrol/opacity_hide1.png)
+          background: url(~@/assets/images/layercontrol/opacity_hide1.png)
             center center no-repeat;
         }
       }

+ 5 - 5
src/components/DataDisplay/LayerDisplay/Map.vue

@@ -668,10 +668,10 @@ export default {
       background-position-x: center;
       background-position-y: center;
       background-repeat: no-repeat;
-      background-image: url(../../../assets/images/tool/mapchange1.png);
+      background-image: url(~@/assets/images/tool/mapchange1.png);
       &:hover,
       &.active {
-        background-image: url(../../../assets/images/tool/mapchange_active1.png);
+        background-image: url(~@/assets/images/tool/mapchange_active1.png);
       }
     }
     .mapChangeIsShow {
@@ -709,13 +709,13 @@ export default {
             }
           }
           &.vector {
-            background-image: url(../../../assets/images/maptype/xianhua.png);
+            background-image: url(~@/assets/images/maptype/xianhua.png);
           }
           &.raster {
-            background-image: url(../../../assets/images/maptype/raster.png);
+            background-image: url(~@/assets/images/maptype/raster.png);
           }
           &.dixing {
-            background-image: url(../../../assets/images/maptype/dixing.png);
+            background-image: url(~@/assets/images/maptype/dixing.png);
           }
         }
         span {

+ 8 - 8
src/components/DataDisplay/LayerDisplay/Mark.vue

@@ -755,38 +755,38 @@ export default {
     }
 
     &.OwnMark .bg {
-      background-image: url(../assets/images/mark/own_mark1.png);
+      background-image: url(~@/assets/images/mark/own_mark1.png);
 
       &:hover,
       &.active {
-        background-image: url(../assets/images/mark/own_mark_active1.png);
+        background-image: url(~@/assets/images/mark/own_mark_active1.png);
       }
     }
 
     &.Point .bg {
-      background-image: url(../assets/images/mark/point1.png);
+      background-image: url(~@/assets/images/mark/point1.png);
 
       &:hover,
       &.active {
-        background-image: url(../assets/images/mark/point_active1.png);
+        background-image: url(~@/assets/images/mark/point_active1.png);
       }
     }
 
     &.LineString .bg {
-      background-image: url(../assets/images/mark/polyline1.png);
+      background-image: url(~@/assets/images/mark/polyline1.png);
 
       &:hover,
       &.active {
-        background-image: url(../assets/images/mark/polyline_active1.png);
+        background-image: url(~@/assets/images/mark/polyline_active1.png);
       }
     }
 
     &.Polygon .bg {
-      background-image: url(../assets/images/mark/polygon1.png);
+      background-image: url(~@/assets/images/mark/polygon1.png);
 
       &:hover,
       &.active {
-        background-image: url(../assets/images/mark/polygon_active1.png);
+        background-image: url(~@/assets/images/mark/polygon_active1.png);
       }
     }
   }

+ 6 - 6
src/components/DataDisplay/LayerDisplay/Menu.vue

@@ -654,27 +654,27 @@ export default {
     }
 
     .singlepoint {
-      background: url(../../../assets/images/menu/singlepoint1.png) center center
+      background: url(~@/assets/images/menu/singlepoint1.png) center center
         no-repeat;
     }
     .aggregation {
-      background: url(../../../assets/images/menu/aggregation1.png) center center
+      background: url(~@/assets/images/menu/aggregation1.png) center center
         no-repeat;
     }
     .heatmap {
-      background: url(../../../assets/images/menu/heatmap1.png) center center
+      background: url(~@/assets/images/menu/heatmap1.png) center center
         no-repeat;
     }
     .singlepoint.active {
-      background: url(../../../assets/images/menu/singlepoint_active1.png) center
+      background: url(~@/assets/images/menu/singlepoint_active1.png) center
         center no-repeat;
     }
     .aggregation.active {
-      background: url(../../../assets/images/menu/aggregation_active1.png) center
+      background: url(~@/assets/images/menu/aggregation_active1.png) center
         center no-repeat;
     }
     .heatmap.active {
-      background: url(../../../assets/images/menu/heatmap_active1.png) center center
+      background: url(~@/assets/images/menu/heatmap_active1.png) center center
         no-repeat;
     }
   }

+ 2 - 2
src/components/DataDisplay/LayerDisplay/PlaceList.vue

@@ -28,8 +28,8 @@ import Feature from "ol/Feature";
 import Point from "ol/geom/Point";
 import { Icon, Style } from "ol/style";
 
-import marker from "../../../assets/images/poi/marker-icon.png";
-import focusMaker from "../../../assets/images/poi/focus_maker.png";
+import marker from "@/assets/images/poi/marker-icon.png";
+import focusMaker from "@/assets/images/poi/focus_maker.png";
 
 export default {
   props: {

+ 10 - 10
src/components/DataDisplay/LayerDisplay/Tool.vue

@@ -197,31 +197,31 @@ export default {
         background-repeat: no-repeat;
       }
       &.mark .bg {
-        background-image: url(../../../assets/images/tool/mark1.png);
+        background-image: url(~@/assets/images/tool/mark1.png);
         &.active,
         &:hover {
-          background-image: url(../../../assets/images/tool/mark_active1.png);
+          background-image: url(~@/assets/images/tool/mark_active1.png);
         }
       }
       &.measure_length .bg {
-        background-image: url(../../../assets/images/tool/measure_length1.png);
+        background-image: url(~@/assets/images/tool/measure_length1.png);
         &.active,
         &:hover {
-          background-image: url(../../../assets/images/tool/measure_length_active1.png);
+          background-image: url(~@/assets/images/tool/measure_length_active1.png);
         }
       }
       &.measure_area .bg {
-        background-image: url(../../../assets/images/tool/measure_area1.png);
+        background-image: url(~@/assets/images/tool/measure_area1.png);
         &.active,
         &:hover {
-          background-image: url(../../../assets/images/tool/measure_area_active1.png);
+          background-image: url(~@/assets/images/tool/measure_area_active1.png);
         }
       }
       &.buffer_analysis .bg {
-        background-image: url(../../../assets/images/tool/buffer_analysis1.png);
+        background-image: url(~@/assets/images/tool/buffer_analysis1.png);
         &.active,
         &:hover {
-          background-image: url(../../../assets/images/tool/buffer_analysis_active1.png);
+          background-image: url(~@/assets/images/tool/buffer_analysis_active1.png);
         }
       }
     }
@@ -240,9 +240,9 @@ export default {
       background-position-y: center;
       background-repeat: no-repeat;
       &.bg {
-        background-image: url(../../../assets/images/tool/clear1.png);
+        background-image: url(~@/assets/images/tool/clear1.png);
         &:hover {
-          background-image: url(../../../assets/images/tool/clear_active1.png);
+          background-image: url(~@/assets/images/tool/clear_active1.png);
         }
       }
     }

+ 23 - 0
src/components/DataQualityInspection/AccessoryDiagram.vue

@@ -0,0 +1,23 @@
+<template>
+  <el-container>
+    <el-main> </el-main>
+  </el-container>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+    };
+  },
+  components: {
+  },
+  methods: {
+
+  },
+};
+</script>
+
+<style lang="less" scoped>
+
+</style>

+ 23 - 0
src/components/DataQualityInspection/DataIntegrityCheck.vue

@@ -0,0 +1,23 @@
+<template>
+  <el-container>
+    <el-main> </el-main>
+  </el-container>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+    };
+  },
+  components: {
+  },
+  methods: {
+
+  },
+};
+</script>
+
+<style lang="less" scoped>
+
+</style>

+ 23 - 0
src/components/DataQualityInspection/ExcelQualityInspection.vue

@@ -0,0 +1,23 @@
+<template>
+  <el-container>
+    <el-main> </el-main>
+  </el-container>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+    };
+  },
+  components: {
+  },
+  methods: {
+
+  },
+};
+</script>
+
+<style lang="less" scoped>
+
+</style>

+ 23 - 0
src/components/DataQualityInspection/GeojsonQualityInspection.vue

@@ -0,0 +1,23 @@
+<template>
+  <el-container>
+    <el-main> </el-main>
+  </el-container>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+    };
+  },
+  components: {
+  },
+  methods: {
+
+  },
+};
+</script>
+
+<style lang="less" scoped>
+
+</style>

+ 23 - 0
src/components/DataQualityInspection/ImportExcelQualityInspectionRules.vue

@@ -0,0 +1,23 @@
+<template>
+  <el-container>
+    <el-main> </el-main>
+  </el-container>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+    };
+  },
+  components: {
+  },
+  methods: {
+
+  },
+};
+</script>
+
+<style lang="less" scoped>
+
+</style>

+ 23 - 0
src/components/DataQualityInspection/ImportGeojsonQualityInspectionRules.vue

@@ -0,0 +1,23 @@
+<template>
+  <el-container>
+    <el-main> </el-main>
+  </el-container>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+    };
+  },
+  components: {
+  },
+  methods: {
+
+  },
+};
+</script>
+
+<style lang="less" scoped>
+
+</style>

+ 23 - 0
src/components/DataQualityInspection/ImportShapefileQualityInspectionRules.vue

@@ -0,0 +1,23 @@
+<template>
+  <el-container>
+    <el-main> </el-main>
+  </el-container>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+    };
+  },
+  components: {
+  },
+  methods: {
+
+  },
+};
+</script>
+
+<style lang="less" scoped>
+
+</style>

+ 23 - 0
src/components/DataQualityInspection/InterfaceAccessDiagram.vue

@@ -0,0 +1,23 @@
+<template>
+  <el-container>
+    <el-main> </el-main>
+  </el-container>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+    };
+  },
+  components: {
+  },
+  methods: {
+
+  },
+};
+</script>
+
+<style lang="less" scoped>
+
+</style>

+ 23 - 0
src/components/DataQualityInspection/LayerQualityInspectionRules.vue

@@ -0,0 +1,23 @@
+<template>
+  <el-container>
+    <el-main> </el-main>
+  </el-container>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+    };
+  },
+  components: {
+  },
+  methods: {
+
+  },
+};
+</script>
+
+<style lang="less" scoped>
+
+</style>

+ 0 - 85
src/components/DataQualityInspection/QualityInspectionProcessManagement.vue

@@ -1,85 +0,0 @@
-<template>
-  <div class="quality_inspection_process_management">
-    <el-container>
-      <Aside
-        v-bind="{
-          showIndex: showIndex,
-          menuList: menuList,
-          handleMenuSelect: handleMenuSelect,
-        }"
-      ></Aside>
-      <el-main> </el-main>
-    </el-container>
-  </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      menuList: [
-        {
-          name: "质检流程图",
-          index: "1",
-          children: [
-            {
-              name: "接口接入流程图",
-              index: "2",
-            },
-          ],
-        },
-        {
-          name: "单条数据规则",
-          index: "2",
-        },
-        {
-          name: "数据导入规则",
-          index: "3",
-          children: [
-            {
-              name: "Excel导入规则",
-              index: "3",
-            },
-            {
-              name: "Shapefile导入规则",
-              index: "3",
-            },
-            {
-              name: "GeoJSON导入规则",
-              index: "3",
-            },
-          ],
-        },
-        {
-          name: "数据完整性检查",
-          index: "4",
-        },
-      ],
-      showIndex: "1",
-    };
-  },
-  components: {
-    Aside: () => import("@/components/Currency/Aside.vue"),
-  },
-  methods: {
-    handleMenuSelect(index) {
-      this.showIndex = index;
-    },
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.quality_inspection_process_management {
-  height: 100%;
-  width: 100%;
-  .el-container {
-    height: 100%;
-    .el-main {
-      padding: 0 0;
-      margin-left: 20px;
-      background: #ffffff;
-    }
-  }
-}
-</style>

+ 0 - 79
src/components/DataQualityInspection/QualityInspectionRules.vue

@@ -1,79 +0,0 @@
-<template>
-  <div class="data_services">
-    <el-container>
-      <Aside
-        v-bind="{
-          showIndex: showIndex,
-          menuList: menuList,
-          handleMenuSelect: handleMenuSelect,
-        }"
-      ></Aside>
-      <el-main> </el-main>
-    </el-container>
-  </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      menuList: [
-        {
-          name: "图层质检规则",
-          index: "1",
-        },
-        {
-          name: "单条数据规则",
-          index: "2",
-        },
-        {
-          name: "数据导入规则",
-          index: "3",
-          children: [
-            {
-              name: "Excel导入规则",
-              index: "3",
-            },
-            {
-              name: "Shapefile导入规则",
-              index: "3",
-            },
-            {
-              name: "GeoJSON导入规则",
-              index: "3",
-            },
-          ],
-        },
-        {
-          name: "数据完整性检查",
-          index: "4",
-        },
-      ],
-      showIndex: "1",
-    };
-  },
-  components: {
-    Aside: () => import("@/components/Currency/Aside.vue"),
-  },
-  methods: {
-    handleMenuSelect(index) {
-      this.showIndex = index;
-    },
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.data_services {
-  height: 100%;
-  width: 100%;
-  .el-container {
-    height: 100%;
-    .el-main {
-      padding: 0 0;
-      margin-left: 20px;
-      background: #ffffff;
-    }
-  }
-}
-</style>

+ 23 - 0
src/components/DataQualityInspection/ShapefileQualityInspection.vue

@@ -0,0 +1,23 @@
+<template>
+  <el-container>
+    <el-main> </el-main>
+  </el-container>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+    };
+  },
+  components: {
+  },
+  methods: {
+
+  },
+};
+</script>
+
+<style lang="less" scoped>
+
+</style>

+ 23 - 0
src/components/DataQualityInspection/SingleDataQualityInspectionRules.vue

@@ -0,0 +1,23 @@
+<template>
+  <el-container>
+    <el-main> </el-main>
+  </el-container>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+    };
+  },
+  components: {
+  },
+  methods: {
+
+  },
+};
+</script>
+
+<style lang="less" scoped>
+
+</style>

+ 1 - 1
src/components/DataService/DataSerivce.vue → src/components/DataServices/DataService.vue

@@ -8,6 +8,6 @@ export default {
 }
 </script>
 
-<style>
+<style lang="less" scoped>
 
 </style>

+ 1 - 1
src/components/DataService/ServiceMonitoring.vue → src/components/DataServices/ServiceMonitoring.vue

@@ -54,7 +54,7 @@
 import api from "@/api/log"
 export default {
     components: { 
-        ListContainer: () => import("@/components/Currency/MetadataListContainer/ListContainer.vue")
+        ListContainer: () => import("@/components/Currency/ListContainer.vue")
     },
     data() {
         return {

+ 13 - 0
src/components/DataServices/TileService.vue

@@ -0,0 +1,13 @@
+<template>
+  
+</template>
+
+<script>
+export default {
+
+}
+</script>
+
+<style lang="less" scoped>
+
+</style>

+ 1 - 1
src/components/SecondaryDevelopment/GraphicsDrawingTool.vue

@@ -8,6 +8,6 @@ export default {
 }
 </script>
 
-<style>
+<style lang="less" scoped>
 
 </style>

+ 1 - 1
src/components/SecondaryDevelopment/ManualDrawingTool.vue

@@ -8,6 +8,6 @@ export default {
 }
 </script>
 
-<style>
+<style lang="less" scoped>
 
 </style>

+ 1 - 1
src/components/SecondaryDevelopment/MeasureTool.vue

@@ -8,6 +8,6 @@ export default {
 }
 </script>
 
-<style>
+<style lang="less" scoped>
 
 </style>

+ 5 - 5
src/components/Utilities/MeasureTool/Map.vue

@@ -668,10 +668,10 @@ export default {
       background-position-x: center;
       background-position-y: center;
       background-repeat: no-repeat;
-      background-image: url(../../../assets/images/tool/mapchange1.png);
+      background-image: url(~@/assets/images/tool/mapchange1.png);
       &:hover,
       &.active {
-        background-image: url(../../../assets/images/tool/mapchange_active1.png);
+        background-image: url(~@/assets/images/tool/mapchange_active1.png);
       }
     }
     .mapChangeIsShow {
@@ -709,13 +709,13 @@ export default {
             }
           }
           &.vector {
-            background-image: url(../../../assets/images/maptype/xianhua.png);
+            background-image: url(~@/assets/images/maptype/xianhua.png);
           }
           &.raster {
-            background-image: url(../../../assets/images/maptype/raster.png);
+            background-image: url(~@/assets/images/maptype/raster.png);
           }
           &.dixing {
-            background-image: url(../../../assets/images/maptype/dixing.png);
+            background-image: url(~@/assets/images/maptype/dixing.png);
           }
         }
         span {

+ 10 - 10
src/components/Utilities/MeasureTool/Tool.vue

@@ -127,31 +127,31 @@ export default {
         background-repeat: no-repeat;
       }
       &.mark .bg {
-        background-image: url(../../../assets/images/tool/mark1.png);
+        background-image: url(~@/assets/images/tool/mark1.png);
         &.active,
         &:hover {
-          background-image: url(../../../assets/images/tool/mark_active1.png);
+          background-image: url(~@/assets/images/tool/mark_active1.png);
         }
       }
       &.measure_length .bg {
-        background-image: url(../../../assets/images/tool/measure_length1.png);
+        background-image: url(~@/assets/images/tool/measure_length1.png);
         &.active,
         &:hover {
-          background-image: url(../../../assets/images/tool/measure_length_active1.png);
+          background-image: url(~@/assets/images/tool/measure_length_active1.png);
         }
       }
       &.measure_area .bg {
-        background-image: url(../../../assets/images/tool/measure_area1.png);
+        background-image: url(~@/assets/images/tool/measure_area1.png);
         &.active,
         &:hover {
-          background-image: url(../../../assets/images/tool/measure_area_active1.png);
+          background-image: url(~@/assets/images/tool/measure_area_active1.png);
         }
       }
       &.buffer_analysis .bg {
-        background-image: url(../../../assets/images/tool/buffer_analysis1.png);
+        background-image: url(~@/assets/images/tool/buffer_analysis1.png);
         &.active,
         &:hover {
-          background-image: url(../../../assets/images/tool/buffer_analysis_active1.png);
+          background-image: url(~@/assets/images/tool/buffer_analysis_active1.png);
         }
       }
     }
@@ -170,9 +170,9 @@ export default {
       background-position-y: center;
       background-repeat: no-repeat;
       &.bg {
-        background-image: url(../../../assets/images/tool/clear1.png);
+        background-image: url(~@/assets/images/tool/clear1.png);
         &:hover {
-          background-image: url(../../../assets/images/tool/clear_active1.png);
+          background-image: url(~@/assets/images/tool/clear_active1.png);
         }
       }
     }

+ 1 - 1
src/router/index.js

@@ -10,7 +10,7 @@ const routes = [
     // route level code-splitting
     // this generates a separate chunk (home.[hash].js) for this route
     // which is lazy-loaded when the route is visited.
-    component: () => import(/* webpackChunkName: "home" */ '../views/Home.vue')
+    component: () => import(/* webpackChunkName: "home" */ '@/views/Home.vue')
   }
 
 ]

+ 272 - 0
src/store/index.js

@@ -10,6 +10,272 @@ export default new Vuex.Store({
     token: "",
     userState: false,
     userInfo: null,
+    menuListTotal: [
+      {
+        label: "综合展示",
+        name: "ComprehensiveDisplay",
+        index: "1",
+        permission: 10,
+      },
+      {
+        label: "数据图层",
+        name: "DataLayer",
+        index: "2",
+        permission: 20,
+        children: [
+          {
+            label: "图标库管理",
+            name: "IconLibraryManagement",
+            index: "1",
+            permission: 21,
+          },
+          {
+            label: "图层管理",
+            name: "LayerManagement",
+            index: "2",
+            permission: 22,
+          },
+        ],
+      },
+      {
+        label: "数据质检",
+        name: "DataQualityInspection",
+        index: "3",
+        permission: 30,
+        children: [
+          {
+            label: "质检规则",
+            name: "QualityInspectionRules",
+            index: "1",
+            permission: 31,
+            children: [
+              {
+                label: "图层质检规则",
+                index: "1",
+              },
+              {
+                label: "单条数据规则",
+                index: "2",
+              },
+              {
+                label: "数据导入规则",
+                index: "3",
+                children: [
+                  {
+                    label: "Excel导入规则",
+                    index: "1",
+                  },
+                  {
+                    label: "Shapefile导入规则",
+                    index: "2",
+                  },
+                  {
+                    label: "Geojson导入规则",
+                    index: "3",
+                  },
+                ]
+              },
+              {
+                label: "数据完整性检查",
+                index: "4",
+              },
+            ]
+          },
+          {
+            label: "质检流程管理",
+            name: "QualityInspectionProcessManagement",
+            index: "2",
+            permission: 32,
+            children: [
+              {
+                label: "质检流程图",
+                index: "1",
+                children:[
+                  {
+                    label: "接口接入质检流程图",
+                    index: "1",
+                  },
+                  {
+                    label: "附件流程图",
+                    index: "2",
+                  },
+                ],
+              },
+              {
+                label: "附件质检",
+                index: "2",
+                children:[
+                  {
+                    label: "Excel质检",
+                    index: "1",
+                  },
+                  {
+                    label: "Shapefile质检",
+                    index: "2",
+                  },
+                  {
+                    label: "Geojson质检",
+                    index: "3",
+                  },
+                ],
+              },
+            ]
+          },
+        ],
+      },
+      {
+        label: "数据接入",
+        name: "DataAccess",
+        index: "4",
+        permission: 40,
+        children: [
+          {
+            label: "数据录入",
+            name: "DataTable",
+            index: "1", permission: 41,
+          },
+          {
+            label: "数据导入",
+            name: "DataTable",
+            index: "2", permission: 42,
+          },
+          {
+            label: "数据日志",
+            name: "DataLog",
+            index: "3", permission: 43,
+          },
+          {
+            label: "结果反馈",
+            name: "ResultFeedback",
+            index: "4", permission: 44,
+          },
+        ],
+      },
+      {
+        label: "数据展示",
+        name: "DataDisplay",
+        index: "5",
+        permission: 50,
+        children: [
+          {
+            label: "入库数据展示",
+            name: "DataTable",
+            index: "1",
+            permission: 51,
+          },
+          {
+            label: "GIS图层展示",
+            name: "LayerDisplay",
+            index: "2",
+            permission: 52,
+          },
+        ],
+      },
+      {
+        label: "数据服务",
+        name: "DataServices",
+        index: "6",
+        permission: 60,
+        children: [
+          {
+            label: "数据共享",
+            name: "DataTable",
+            index: "1", permission: 61,
+          },
+          {
+            label: "数据服务接口",
+            name: "DataService",
+            index: "2", permission: 62,
+          },
+          {
+            label: "瓦片服务接口",
+            name: "TileSerivce",
+            index: "3", permission: 63,
+          },
+          {
+            label: "服务监控",
+            name: "ServiceMonitoring",
+            index: "4", permission: 64,
+          },
+        ],
+      },
+      {
+        label: "实用工具",
+        name: "Utilities",
+        index: "7",
+        permission: 70,
+        children: [
+          {
+            label: "地址转换工具",
+            name: "AddressTranslationTool",
+            index: "1", permission: 71,
+          },
+          {
+            label: "坐标转换工具",
+            name: "CoordinateConversionTool",
+            index: "2", permission: 72,
+          },
+          {
+            label: "手动落图工具",
+            name: "ManualDrawingTool",
+            index: "3", permission: 73,
+          },
+          {
+            label: "图形绘制工具",
+            name: "GraphicsDrawingTool",
+            index: "4", permission: 74,
+          },
+          {
+            label: "测量工具",
+            name: "MeasureTool",
+            index: "5", permission: 75,
+          },
+        ],
+      },
+      {
+        label: "二次开发",
+        name: "SecondaryDevelopment",
+        index: "8",
+        permission: 80,
+        children: [
+          {
+            label: "手动落图工具",
+            name: "ManualDrawingTool",
+            index: "1", permission: 81,
+          },
+          {
+            label: "图形绘制工具",
+            name: "GraphicsDrawingTool",
+            index: "2", permission: 82,
+          },
+          {
+            label: "测量工具",
+            name: "MeasureTool",
+            index: "3", permission: 83,
+          },
+        ],
+      },
+      {
+        label: "系统管理",
+        name: "SystemManagement",
+        index: "9",
+        permission: 90,
+        children: [
+          {
+            label: "用户管理",
+            name: "UserManagement",
+            index: "1",
+            permission: 91,
+          },
+          {
+            label: "权限管理",
+            name: "AuthorityManagement",
+            index: "2",
+            permission: 92,
+          },
+        ],
+      },
+    ],
 
     isShowChart: false,
     layers: [],
@@ -28,6 +294,9 @@ export default new Vuex.Store({
     getUserInfo: function (state) {
       return JSON.parse(Vue.ls.get("userInfo"))
     },
+    getMenuListTotal: function (state) {
+      return state.menuListTotal
+    },
   },
   mutations: {
     setToken(state, str) {
@@ -67,6 +336,9 @@ export default new Vuex.Store({
     },
     setChartIsShow(state, bool) {
       state.isShowChart = bool
+    },
+    setMenuListTotal(state, obj) {
+      state.menuListTotal = JSON.parse(JSON.stringify(obj))
     }
   },
   actions: {

+ 1 - 1
src/utils/ol_plugins/layer_control.js

@@ -3,7 +3,7 @@ import VectorLayer from "ol/layer/Vector";
 import Heatmap from "ol/layer/Heatmap";
 import Cluster from "ol/source/Cluster";
 import { Fill, Stroke, Circle, Text, Icon, Style } from "ol/style";
-import marker from "../../assets/images/poi/marker-icon.png";
+import marker from "@/assets/images/poi/marker-icon.png";
 
 function createHeatMapLayer(source, blur, radius, zIndex) {
     return new Heatmap({

+ 30 - 27
src/views/DataAccess.vue

@@ -3,18 +3,18 @@
     <el-container>
       <Aside
         v-bind="{
-          showIndex: showIndex,
+          showMenuIndex: showMenuIndex,
           menuList: menuList,
           handleMenuSelect: handleMenuSelect,
         }"
       ></Aside>
       <el-main>
-        <Container
+        <DataTable
           v-show="showIndex == '1' || showIndex == '2'"
           v-bind="{
             index: Number(showIndex),
           }"
-        ></Container>
+        ></DataTable>
       </el-main>
     </el-container>
   </div>
@@ -22,43 +22,46 @@
 
 <script>
 export default {
+  props: {
+    index: {
+      type: Number,
+    },
+  },
   data() {
     return {
-      menuList: [
-        {
-          name: "数据录入",
-          index: "1",
-        },
-        {
-          name: "数据导入",
-          index: "2",
-        },
-        {
-          name: "数据日志",
-          index: "3",
-        },
-        {
-          name: "结果反馈",
-          index: "4",
-        },
-      ],
-      metadataListType: 1,
+      menuList: null,
       showIndex: "1",
+      showMenuIndex: "1",
     };
   },
   components: {
     Aside: () => import("@/components/Currency/Aside.vue"),
-    Container: () => import("@/components/DataAccess/Container.vue"),
+    DataTable: () => import("@/components/Currency/DataTable/DataTable.vue"),
+    DataLog: () => import("@/components/DataAccess/DataLog.vue"),
+    ResultFeedback: () => import("@/components/DataAccess/ResultFeedback.vue"),
   },
   created() {
-    this.metadataListType = Number(this.showIndex);
+    let that = this;
+    this.menuList =
+      this.$store.getters.getMenuListTotal[this.index - 1].children;
+    t("", this.menuList);
+    function t(beforeindex, arr) {
+      if (beforeindex == "") {
+        beforeindex = arr[0].index;
+      } else {
+        beforeindex = beforeindex + "-" + arr[0].index;
+      }
+      if (arr[0].children) {
+        t(beforeindex, arr[0].children);
+      } else {
+        that.showIndex = beforeindex;
+        that.showMenuIndex = beforeindex;
+      }
+    }
   },
   methods: {
     handleMenuSelect(index) {
       this.showIndex = index;
-      if (Number(index) <= 2) {
-        this.metadataListType = Number(index);
-      }
     },
   },
 };

+ 30 - 14
src/views/DataDisplay.vue

@@ -3,18 +3,18 @@
     <el-container>
       <Aside
         v-bind="{
-          showIndex: showIndex,
+          showMenuIndex: showMenuIndex,
           menuList: menuList,
           handleMenuSelect: handleMenuSelect,
         }"
       ></Aside>
       <el-main>
-        <Container
+        <DataTable
           v-show="showIndex == '1'"
           v-bind="{
             index: 0,
           }"
-        ></Container>
+        ></DataTable>
         <LayerDisplay v-if="showIndex == '2'"></LayerDisplay>
       </el-main>
     </el-container>
@@ -23,26 +23,42 @@
 
 <script>
 export default {
+  props: {
+    index: {
+      type: Number,
+    },
+  },
   data() {
     return {
-      menuList: [
-        {
-          name: "入库数据展示",
-          index: "1",
-        },
-        {
-          name: "GIS图层展示",
-          index: "2",
-        },
-      ],
+      menuList: null,
       showIndex: "1",
+      showMenuIndex: "1",
     };
   },
   components: {
     Aside: () => import("@/components/Currency/Aside.vue"),
-    Container: () => import("@/components/DataAccess/Container.vue"),
+    DataTable: () => import("@/components/Currency/DataTable/DataTable.vue"),
     LayerDisplay: () => import("@/components/DataDisplay/LayerDisplay.vue"),
   },
+  created() {
+    let that = this;
+    this.menuList =
+      this.$store.getters.getMenuListTotal[this.index - 1].children;
+    t("", this.menuList);
+    function t(beforeindex, arr) {
+      if (beforeindex == "") {
+        beforeindex = arr[0].index;
+      } else {
+        beforeindex = beforeindex + "-" + arr[0].index;
+      }
+      if (arr[0].children) {
+        t(beforeindex, arr[0].children);
+      } else {
+        that.showIndex = beforeindex;
+        that.showMenuIndex = beforeindex;
+      }
+    }
+  },
   methods: {
     handleMenuSelect(index) {
       this.showIndex = index;

+ 30 - 12
src/views/DataLayer.vue

@@ -3,13 +3,15 @@
     <el-container>
       <Aside
         v-bind="{
-          showIndex: showIndex,
+          showMenuIndex: showMenuIndex,
           menuList: menuList,
           handleMenuSelect: handleMenuSelect,
         }"
       ></Aside>
       <el-main>
-        <IconLibraryManagement v-show="showIndex == '1'"></IconLibraryManagement>
+        <IconLibraryManagement
+          v-show="showIndex == '1'"
+        ></IconLibraryManagement>
         <LayerManagement v-show="showIndex == '2'"></LayerManagement>
       </el-main>
     </el-container>
@@ -18,19 +20,16 @@
 
 <script>
 export default {
+  props: {
+    index: {
+      type: Number,
+    },
+  },
   data() {
     return {
-      menuList: [
-        {
-          name: "图标库管理",
-          index: "1",
-        },
-        {
-          name: "图层管理",
-          index: "2",
-        },
-      ],
+      menuList: null,
       showIndex: "1",
+      showMenuIndex: "1",
     };
   },
   components: {
@@ -39,6 +38,25 @@ export default {
       import("@/components/DataLayer/IconLibraryManagement.vue"),
     LayerManagement: () => import("@/components/DataLayer/LayerManagement.vue"),
   },
+  created() {
+    let that = this;
+    this.menuList =
+      this.$store.getters.getMenuListTotal[this.index - 1].children;
+    t("", this.menuList);
+    function t(beforeindex, arr) {
+      if (beforeindex == "") {
+        beforeindex = arr[0].index;
+      } else {
+        beforeindex = beforeindex + "-" + arr[0].index;
+      }
+      if (arr[0].children) {
+        t(beforeindex, arr[0].children);
+      } else {
+        that.showIndex = beforeindex;
+        that.showMenuIndex = beforeindex;
+      }
+    }
+  },
   methods: {
     handleMenuSelect(index) {
       this.showIndex = index;

+ 105 - 21
src/views/DataQualityInspection.vue

@@ -3,18 +3,42 @@
     <el-container>
       <Aside
         v-bind="{
-          showIndex: showIndex,
+          showMenuIndex: showMenuIndex,
           menuList: menuList,
           handleMenuSelect: handleMenuSelect,
         }"
       ></Aside>
+
       <el-main>
-        <QualityInspectionRules
-          v-if="showIndex == '1'"
-        ></QualityInspectionRules>
-        <QualityInspectionProcessManagement
-          v-if="showIndex == '2'"
-        ></QualityInspectionProcessManagement>
+        <LayerQualityInspectionRules
+          v-show="showIndex == '1-1'"
+        ></LayerQualityInspectionRules>
+        <SingleDataQualityInspectionRules
+          v-show="showIndex == '1-2'"
+        ></SingleDataQualityInspectionRules>
+        <ImportExcelQualityInspectionRules
+          v-show="showIndex == '1-3-1'"
+        ></ImportExcelQualityInspectionRules>
+        <ImportShapefileQualityInspectionRules
+          v-show="showIndex == '1-3-2'"
+        ></ImportShapefileQualityInspectionRules>
+        <ImportGeojsonQualityInspectionRules
+          v-show="showIndex == '1-3-3'"
+        ></ImportGeojsonQualityInspectionRules>
+        <DataIntegrityCheck v-show="showIndex == '1-4'"></DataIntegrityCheck>
+        <InterfaceAccessDiagram
+          v-show="showIndex == '2-1-1'"
+        ></InterfaceAccessDiagram>
+        <AccessoryDiagram v-show="showIndex == '2-1-2'"></AccessoryDiagram>
+        <ExcelQualityInspection
+          v-show="showIndex == '2-2-1'"
+        ></ExcelQualityInspection>
+        <ShapefileQualityInspection
+          v-show="showIndex == '2-2-2'"
+        ></ShapefileQualityInspection>
+        <GeojsonQualityInspection
+          v-show="showIndex == '2-2-3'"
+        ></GeojsonQualityInspection>
       </el-main>
     </el-container>
   </div>
@@ -22,27 +46,87 @@
 
 <script>
 export default {
+  props: {
+    index: {
+      type: Number,
+    },
+  },
   data() {
     return {
-      menuList: [
-        {
-          name: "质检规则",
-          index: "1",
-        },
-        {
-          name: "质检流程管理",
-          index: "2",
-        },
-      ],
+      menuList: null,
       showIndex: "1",
+      showMenuIndex: "1-1",
     };
   },
   components: {
     Aside: () => import("@/components/Currency/Aside.vue"),
-    QualityInspectionRules: () =>
-      import("@/components/DataQualityInspection/QualityInspectionRules.vue"),
-    QualityInspectionProcessManagement: () =>
-      import("@/components/DataQualityInspection/QualityInspectionProcessManagement.vue"),
+    LayerQualityInspectionRules: () =>
+      import(
+        "@/components/DataQualityInspection/LayerQualityInspectionRules.vue"
+      ),
+    SingleDataQualityInspectionRules: () =>
+      import(
+        "@/components/DataQualityInspection/SingleDataQualityInspectionRules.vue"
+      ),
+    ImportExcelQualityInspectionRules: () =>
+      import(
+        "@/components/DataQualityInspection/ImportExcelQualityInspectionRules.vue"
+      ),
+    ImportShapefileQualityInspectionRules: () =>
+      import(
+        "@/components/DataQualityInspection/ImportShapefileQualityInspectionRules.vue"
+      ),
+    ImportGeojsonQualityInspectionRules: () =>
+      import(
+        "@/components/DataQualityInspection/ImportGeojsonQualityInspectionRules.vue"
+      ),
+    DataIntegrityCheck: () =>
+      import("@/components/DataQualityInspection/DataIntegrityCheck.vue"),
+    InterfaceAccessDiagram: () =>
+      import("@/components/DataQualityInspection/InterfaceAccessDiagram.vue"),
+    AccessoryDiagram: () =>
+      import("@/components/DataQualityInspection/AccessoryDiagram.vue"),
+    ExcelQualityInspection: () =>
+      import("@/components/DataQualityInspection/ExcelQualityInspection.vue"),
+    ShapefileQualityInspection: () =>
+      import(
+        "@/components/DataQualityInspection/ShapefileQualityInspection.vue"
+      ),
+    GeojsonQualityInspection: () =>
+      import("@/components/DataQualityInspection/GeojsonQualityInspection.vue"),
+  },
+
+  created() {
+    // [
+    //   "1-1",
+    //   "1-2",
+    //   "1-3-1",
+    //   "1-3-2",
+    //   "1-3-3",
+    //   "1-4",
+    //   "2-1-1",
+    //   "2-1-2",
+    //   "2-2-1",
+    //   "2-2-2",
+    //   "2-2-3",
+    // ];
+    let that = this;
+    this.menuList =
+      this.$store.getters.getMenuListTotal[this.index - 1].children;
+    t("", this.menuList);
+    function t(beforeindex, arr) {
+      if (beforeindex == "") {
+        beforeindex = arr[0].index;
+      } else {
+        beforeindex = beforeindex + "-" + arr[0].index;
+      }
+      if (arr[0].children) {
+        t(beforeindex, arr[0].children);
+      } else {
+        that.showIndex = beforeindex;
+        that.showMenuIndex = beforeindex;
+      }
+    }
   },
   methods: {
     handleMenuSelect(index) {

+ 0 - 78
src/views/DataService.vue

@@ -1,78 +0,0 @@
-<template>
-  <div class="data_services">
-    <el-container>
-      <Aside
-        v-bind="{
-          showIndex: showIndex,
-          menuList: menuList,
-          handleMenuSelect: handleMenuSelect,
-        }"
-      ></Aside>
-      <el-main>
-        <Container
-          v-if="showIndex == '1'"
-          v-bind="{
-            index: 3,
-          }"
-        ></Container>
-        <DataSerivce v-if="showIndex == '2'"></DataSerivce>
-        <TileSerivce v-if="showIndex == '3'"></TileSerivce>
-        <ServiceMonitoring v-if="showIndex == '4'"></ServiceMonitoring>
-      </el-main>
-    </el-container>
-  </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      menuList: [
-        {
-          name: "数据共享",
-          index: "1",
-        },
-        {
-          name: "数据服务接口",
-          index: "2",
-        },
-        {
-          name: "瓦片服务接口",
-          index: "3",
-        },
-        {
-          name: "服务监控",
-          index: "4",
-        },
-      ],
-      showIndex: "1",
-    };
-  },
-  components: {
-    Aside: () => import("@/components/Currency/Aside.vue"),
-    Container: () => import("@/components/DataAccess/Container.vue"),
-    DataSerivce: () => import("@/components/DataService/DataSerivce.vue"),
-    TileSerivce: () => import("@/components/DataService/TileSerivce.vue"),
-    ServiceMonitoring: () =>
-      import("@/components/DataService/ServiceMonitoring.vue"),
-  },
-  methods: {
-    handleMenuSelect(index) {
-      this.showIndex = index;
-    },
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.data_services {
-  height: 100%;
-  width: 100%;
-  .el-container {
-    height: 100%;
-    .el-main {
-      padding: 0 0;
-    }
-  }
-}
-</style>

+ 86 - 0
src/views/DataServices.vue

@@ -0,0 +1,86 @@
+<template>
+  <div class="data_services">
+    <el-container>
+      <Aside
+        v-bind="{
+          showMenuIndex: showMenuIndex,
+          menuList: menuList,
+          handleMenuSelect: handleMenuSelect,
+        }"
+      ></Aside>
+      <el-main>
+        <DataTable
+          v-if="showIndex == '1'"
+          v-bind="{
+            index: 3,
+          }"
+        ></DataTable>
+        <DataSerivce v-if="showIndex == '2'"></DataSerivce>
+        <TileService v-if="showIndex == '3'"></TileService>
+        <ServiceMonitoring v-if="showIndex == '4'"></ServiceMonitoring>
+      </el-main>
+    </el-container>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    index: {
+      type: Number,
+    },
+  },
+  data() {
+    return {
+      menuList: null,
+      showIndex: "1",
+      showMenuIndex: "1",
+    };
+  },
+  components: {
+    Aside: () => import("@/components/Currency/Aside.vue"),
+    DataTable: () => import("@/components/Currency/DataTable/DataTable.vue"),
+    DataSerivce: () => import("@/components/DataServices/DataService.vue"),
+    TileService: () => import("@/components/DataServices/TileService.vue"),
+    ServiceMonitoring: () =>
+      import("@/components/DataServices/ServiceMonitoring.vue"),
+  },
+  created() {
+    let that = this;
+    this.menuList =
+      this.$store.getters.getMenuListTotal[this.index - 1].children;
+    t("", this.menuList);
+    function t(beforeindex, arr) {
+      if (beforeindex == "") {
+        beforeindex = arr[0].index;
+      } else {
+        beforeindex = beforeindex + "-" + arr[0].index;
+      }
+      if (arr[0].children) {
+        t(beforeindex, arr[0].children);
+      } else {
+        that.showIndex = beforeindex;
+        that.showMenuIndex = beforeindex;
+      }
+    }
+  },
+  methods: {
+    handleMenuSelect(index) {
+      this.showIndex = index;
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.data_services {
+  height: 100%;
+  width: 100%;
+  .el-container {
+    height: 100%;
+    .el-main {
+      padding: 0 0;
+    }
+  }
+}
+</style>

+ 144 - 80
src/views/Home.vue

@@ -14,18 +14,18 @@
                 placeholder="请输入密码"
                 show-password
               ></el-input>
-              <el-button @click="loginFunc">登 录</el-button>
+              <el-button @click="loginFunc">登录</el-button>
             </div>
             <div class="after_login" v-if="loginStatus">
               {{ userInfo.username }}
-              <el-button @click="logoutFunc">退 出</el-button>
+              <el-button @click="logoutFunc">退出</el-button>
             </div>
           </div>
         </div>
         <div class="func">
           <div>
             <el-menu
-              :default-active="showIndex"
+              :default-active="showMenuIndex"
               class="el-menu-demo"
               mode="horizontal"
               @select="handleMenuSelect"
@@ -34,7 +34,7 @@
                 v-for="(item, index) in funcArr"
                 :key="index"
                 :index="item.index"
-                >{{ item.name }}</el-menu-item
+                >{{ item.label }}</el-menu-item
               >
             </el-menu>
           </div>
@@ -42,24 +42,67 @@
       </el-header>
       <el-container class="router_container">
         <el-main>
-          <ComprehensiveDisplay v-if="showIndex == '1'"></ComprehensiveDisplay>
-          <DataLayer v-if="showIndex == '2'"></DataLayer>
+          <ComprehensiveDisplay
+            v-if="showIndex == '1'"
+            v-bind="{
+              index: 1,
+            }"
+          ></ComprehensiveDisplay>
+          <DataLayer
+            v-if="showIndex == '2'"
+            v-bind="{
+              index: 2,
+            }"
+          ></DataLayer>
           <DataQualityInspection
             v-if="showIndex == '3'"
+            v-bind="{
+              index: 3,
+            }"
           ></DataQualityInspection>
-          <DataAccess v-if="showIndex == '4'"></DataAccess>
-          <DataDisplay v-if="showIndex == '5'"></DataDisplay>
-          <DataService v-if="showIndex == '6'"></DataService>
-          <Utilities v-if="showIndex == '7'"></Utilities>
-          <SecondaryDevelopment v-if="showIndex == '8'"></SecondaryDevelopment>
-          <SystemManagement v-if="showIndex == '9'"></SystemManagement>
+          <DataAccess
+            v-if="showIndex == '4'"
+            v-bind="{
+              index: 4,
+            }"
+          ></DataAccess>
+          <DataDisplay
+            v-if="showIndex == '5'"
+            v-bind="{
+              index: 5,
+            }"
+          ></DataDisplay>
+          <DataServices
+            v-if="showIndex == '6'"
+            v-bind="{
+              index: 6,
+            }"
+          ></DataServices>
+          <Utilities
+            v-if="showIndex == '7'"
+            v-bind="{
+              index: 7,
+            }"
+          ></Utilities>
+          <SecondaryDevelopment
+            v-if="showIndex == '8'"
+            v-bind="{
+              index: 8,
+            }"
+          ></SecondaryDevelopment>
+          <SystemManagement
+            v-if="showIndex == '9'"
+            v-bind="{
+              index: 9,
+            }"
+          ></SystemManagement>
         </el-main>
       </el-container>
     </el-container>
   </div>
 </template>
 <script>
-import login from "../utils/login";
+import login from "@/utils/login";
 import general from "@/api/general";
 import icon from "@/api/icon";
 export default {
@@ -71,63 +114,19 @@ export default {
       loginStatus: false,
       userInfo: null,
       requestCode: systemConfig.requestCode,
-
-      funcArr: [
-        {
-          name: "综合展示",
-          index: "1",
-          show: true,
-          active: false,
-        },
-        {
-          name: "数据图层",
-          index: "2",
-          show: true,
-          active: false,
-        },
-        {
-          name: "数据质检",
-          index: "3",
-          show: true,
-          active: false,
-        },
-        {
-          name: "数据接入",
-          index: "4",
-          show: true,
-          active: false,
-        },
-        {
-          name: "数据展示",
-          index: "5",
-          show: true,
-          active: false,
-        },
-        {
-          name: "数据服务",
-          index: "6",
-          show: true,
-          active: false,
-        },
-        {
-          name: "实用工具",
-          index: "7",
-          show: true,
-          active: false,
-        },
-        {
-          name: "二次开发",
-          index: "8",
-          show: true,
-          active: false,
-        },
-        {
-          name: "系统管理",
-          index: "9",
-          show: true,
-          active: false,
-        },
+      permissionUnlogin: [
+        10, 
+        20, 21, 22, 
+        30, 31, 32, 
+        40, 41, 42, 43, 44, 
+        50, 51, 52, 
+        60, 61, 62,63, 64, 
+        70, 71, 72, 73, 74, 75, 
+        80, 81, 82, 83, 
+        90, 91, 92,
       ],
+      funcArr: null,
+      showMenuIndex: "1",
       showIndex: "1",
     };
   },
@@ -137,7 +136,7 @@ export default {
     DataQualityInspection: () => import("@/views/DataQualityInspection.vue"),
     DataAccess: () => import("@/views/DataAccess.vue"),
     DataDisplay: () => import("@/views/DataDisplay.vue"),
-    DataService: () => import("@/views/DataService.vue"),
+    DataServices: () => import("@/views/DataServices.vue"),
     Utilities: () => import("@/views/Utilities.vue"),
     SecondaryDevelopment: () => import("@/views/SecondaryDevelopment.vue"),
     SystemManagement: () => import("@/views/SystemManagement.vue"),
@@ -152,7 +151,7 @@ export default {
     // 数据展示
     // DataDisplay
     // 数据服务
-    // DataService
+    // DataServices
     // 实用工具
     // Utilities
     // 二次开发
@@ -170,10 +169,20 @@ export default {
     if (this.$store.getters.getUserState) {
       this.userInfo = this.$store.getters.getUserInfo;
       this.loginStatus = true;
+      this.permissionFiltering([
+        10, 20, 21, 30, 31, 32, 40, 41, 42, 43, 44, 50, 51, 52, 60, 61, 62, 63,
+        64, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 90, 91, 92,
+      ]);
+    } else {
+      this.permissionFilteringUnlogin();
     }
+
     this.getMenu();
     this.getIcon();
   },
+  mounted() {
+    this.funcArr = this.$store.getters.getMenuListTotal;
+  },
   methods: {
     handleMenuSelect(index) {
       this.showIndex = index;
@@ -208,6 +217,41 @@ export default {
       // 页面刷新
       location.reload();
     },
+    // 权限筛选
+    permissionFiltering(permissionArr) {
+      let list = JSON.parse(
+        JSON.stringify(this.$store.getters.getMenuListTotal)
+      );
+      list = list.filter(function (item) {
+        if (permissionArr.indexOf(item.permission) > -1) {
+          let children = null;
+          if (item.children) {
+            children = item.children.filter(function (_item) {
+              if (!_item.permission) {
+                return true; // 未有权限字段,不做判断
+              }
+              if (permissionArr.indexOf(_item.permission) > -1) {
+                return true;
+              } else {
+                return false;
+              }
+            });
+            item.children = children;
+            return true;
+          } else {
+            return true;
+          }
+        } else {
+          return false;
+        }
+      });
+      this.$store.commit("setMenuListTotal", list);
+    },
+    //
+    permissionFilteringUnlogin() {
+      this.permissionFiltering(this.permissionUnlogin);
+    },
+    // 访问接口反馈
     checkRequestCode(result) {
       let that = this;
       return new Promise((resolve, reject) => {
@@ -240,6 +284,7 @@ export default {
         }
       });
     },
+    // 获取url参数
     getQueryString(name) {
       var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
       var r = window.location.search.substr(1).match(reg);
@@ -309,10 +354,10 @@ export default {
   box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.12);
   z-index: 1;
   .banner {
-    height: 270px;
+    height: 200px;
     width: 100%;
     position: relative;
-    background: url(../assets/images/banner.png);
+    background: url(~@/assets/images/banner.png);
     .login_content {
       position: absolute;
       top: 20px;
@@ -322,8 +367,12 @@ export default {
       .before_login {
         .el-input {
           width: 150px;
+          height: 30px;
+          line-height: 30px;
           margin-right: 10px;
           /deep/ .el-input__inner {
+            height: 30px;
+            line-height: 30px;
             background: #ffffff33;
             border: 0px;
             color: #ffffff;
@@ -341,9 +390,10 @@ export default {
             }
             &::placeholder {
               color: #ffffff;
-            }
+            } 
           }
           /deep/ .el-input__clear {
+            line-height: 30px;
             color: #e3e3e3;
             &:hover {
               color: #ffffff;
@@ -351,10 +401,12 @@ export default {
           }
         }
         .el-button {
+          height: 30px;
+          width: 60px;
+          padding: 0 10px;
           background: #ffcc42; //#ffcc42
           color: #ffffff;
           border: 0px;
-          height: 40px;
           font-size: 16px;
           vertical-align: bottom;
           &:hover {
@@ -364,10 +416,12 @@ export default {
       }
       .after_login {
         .el-button {
+          height: 30px;
+          width: 60px;
+          padding: 0 10px;
           background: #ffcc42; //#ffcc42
           color: #ffffff;
           border: 0px;
-          height: 40px;
           font-size: 16px;
           margin-left: 20px;
           &:hover {
@@ -379,17 +433,27 @@ export default {
   }
   .func {
     height: 60px;
+    background: #40a2ff;
     .el-menu {
+      background: transparent;
       width: fit-content;
       margin: 0 auto;
       border-bottom: 0px;
-      li {
+      .el-menu-item {
         font-family: Source Han Sans CN VF;
         font-size: 20px;
-        font-weight: bold;
-        color: #000;
-        width: 140px;
+        color: #ffffff;
+        width: 180px;
         text-align: center;
+        border-bottom-color: transparent;
+        &.is-active {
+          font-weight: bold;
+          background: transparent;
+        }
+        &:hover {
+          font-weight: bold;
+          background: transparent;
+        }
       }
     }
   }

+ 27 - 15
src/views/SecondaryDevelopment.vue

@@ -3,7 +3,7 @@
     <el-container>
       <Aside
         v-bind="{
-          showIndex: showIndex,
+          showMenuIndex: showMenuIndex,
           menuList: menuList,
           handleMenuSelect: handleMenuSelect,
         }"
@@ -19,23 +19,16 @@
 
 <script>
 export default {
+  props: {
+    index: {
+      type: Number,
+    },
+  },
   data() {
     return {
-      menuList: [
-        {
-          name: "手动落图工具",
-          index: "1",
-        },
-        {
-          name: "图形绘制工具",
-          index: "2",
-        },
-        {
-          name: "测量工具",
-          index: "3",
-        },
-      ],
+      menuList: null,
       showIndex: "1",
+      showMenuIndex: "1",
     };
   },
   components: {
@@ -47,6 +40,25 @@ export default {
     MeasureTool: () =>
       import("@/components/SecondaryDevelopment/MeasureTool.vue"),
   },
+  created() {
+    let that = this;
+    this.menuList =
+      this.$store.getters.getMenuListTotal[this.index - 1].children;
+    t("", this.menuList);
+    function t(beforeindex, arr) {
+      if (beforeindex == "") {
+        beforeindex = arr[0].index;
+      } else {
+        beforeindex = beforeindex + "-" + arr[0].index;
+      }
+      if (arr[0].children) {
+        t(beforeindex, arr[0].children);
+      } else {
+        that.showIndex = beforeindex;
+        that.showMenuIndex = beforeindex;
+      }
+    }
+  },
   methods: {
     handleMenuSelect(index) {
       this.showIndex = index;

+ 27 - 11
src/views/SystemManagement.vue

@@ -3,7 +3,7 @@
     <el-container>
       <Aside
         v-bind="{
-          showIndex: showIndex,
+          showMenuIndex: showMenuIndex,
           menuList: menuList,
           handleMenuSelect: handleMenuSelect,
         }"
@@ -18,19 +18,16 @@
 
 <script>
 export default {
+  props: {
+    index: {
+      type: Number,
+    },
+  },
   data() {
     return {
-      menuList: [
-        {
-          name: "用户管理",
-          index: "1",
-        },
-        {
-          name: "权限管理",
-          index: "2",
-        },
-      ],
+      menuList: null,
       showIndex: "1",
+      showMenuIndex: "1",
     };
   },
   components: {
@@ -40,6 +37,25 @@ export default {
     AuthorityManagement: () =>
       import("@/components/SystemManagement/AuthorityManagement.vue"),
   },
+  created() {
+    let that = this;
+    this.menuList =
+      this.$store.getters.getMenuListTotal[this.index - 1].children;
+    t("", this.menuList);
+    function t(beforeindex, arr) {
+      if (beforeindex == "") {
+        beforeindex = arr[0].index;
+      } else {
+        beforeindex = beforeindex + "-" + arr[0].index;
+      }
+      if (arr[0].children) {
+        t(beforeindex, arr[0].children);
+      } else {
+        that.showIndex = beforeindex;
+        that.showMenuIndex = beforeindex;
+      }
+    }
+  },
   methods: {
     handleMenuSelect(index) {
       this.showIndex = index;

+ 27 - 23
src/views/Utilities.vue

@@ -3,7 +3,7 @@
     <el-container>
       <Aside
         v-bind="{
-          showIndex: showIndex,
+          showMenuIndex: showMenuIndex,
           menuList: menuList,
           handleMenuSelect: handleMenuSelect,
         }"
@@ -25,31 +25,16 @@
 
 <script>
 export default {
+  props: {
+    index: {
+      type: Number,
+    },
+  },
   data() {
     return {
-      menuList: [
-        {
-          name: "地址转换工具",
-          index: "1",
-        },
-        {
-          name: "坐标转换工具",
-          index: "2",
-        },
-        {
-          name: "手动落图工具",
-          index: "3",
-        },
-        {
-          name: "图形绘制工具",
-          index: "4",
-        },
-        {
-          name: "测量工具",
-          index: "5",
-        },
-      ],
+      menuList: null,
       showIndex: "1",
+      showMenuIndex: "1",
     };
   },
   components: {
@@ -64,6 +49,25 @@ export default {
       import("@/components/Utilities/GraphicsDrawingTool.vue"),
     MeasureTool: () => import("@/components/Utilities/MeasureTool.vue"),
   },
+  created() {
+    let that = this;
+    this.menuList =
+      this.$store.getters.getMenuListTotal[this.index - 1].children;
+    t("", this.menuList);
+    function t(beforeindex, arr) {
+      if (beforeindex == "") {
+        beforeindex = arr[0].index;
+      } else {
+        beforeindex = beforeindex + "-" + arr[0].index;
+      }
+      if (arr[0].children) {
+        t(beforeindex, arr[0].children);
+      } else {
+        that.showIndex = beforeindex;
+        that.showMenuIndex = beforeindex;
+      }
+    }
+  },
   methods: {
     handleMenuSelect(index) {
       this.showIndex = index;