소스 검색

数据质检部分更新

wan.dequan 3 년 전
부모
커밋
b790e1fcf0
43개의 변경된 파일862개의 추가작업 그리고 276개의 파일을 삭제
  1. 20 0
      package-lock.json
  2. 1 0
      package.json
  3. BIN
      src/assets/images/layerZJImage/excelImport.jpg
  4. BIN
      src/assets/images/layerZJImage/fujianZJ.png
  5. BIN
      src/assets/images/layerZJImage/fujianZJ_back.png
  6. BIN
      src/assets/images/layerZJImage/geojsonImport.jpg
  7. BIN
      src/assets/images/layerZJImage/jiekouZJ.png
  8. BIN
      src/assets/images/layerZJImage/jiekouZJ_back.png
  9. BIN
      src/assets/images/layerZJImage/layer.jpg
  10. BIN
      src/assets/images/layerZJImage/shapefile.jpg
  11. BIN
      src/assets/images/layerZJImage/singleData.jpg
  12. 1 1
      src/components/Currency/Aside.vue
  13. 1 1
      src/components/Currency/DataTable/MetadataListContainer.vue
  14. 0 23
      src/components/DataQualityInspection/AccessoryDiagram.vue
  15. 0 23
      src/components/DataQualityInspection/DataIntegrityCheck.vue
  16. 0 23
      src/components/DataQualityInspection/ImportExcelQualityInspectionRules.vue
  17. 0 23
      src/components/DataQualityInspection/ImportGeojsonQualityInspectionRules.vue
  18. 0 23
      src/components/DataQualityInspection/ImportShapefileQualityInspectionRules.vue
  19. 0 23
      src/components/DataQualityInspection/InterfaceAccessDiagram.vue
  20. 0 23
      src/components/DataQualityInspection/LayerQualityInspectionRules.vue
  21. 36 0
      src/components/DataQualityInspection/Process/AccessoryDiagram.vue
  22. 0 0
      src/components/DataQualityInspection/Process/ExcelQualityInspection.vue
  23. 0 0
      src/components/DataQualityInspection/Process/GeojsonQualityInspection.vue
  24. 36 0
      src/components/DataQualityInspection/Process/InterfaceAccessDiagram.vue
  25. 0 0
      src/components/DataQualityInspection/Process/ShapefileQualityInspection.vue
  26. 66 0
      src/components/DataQualityInspection/Rules/DataIntegrityCheck.vue
  27. 68 0
      src/components/DataQualityInspection/Rules/ImportExcelQualityInspectionRules.vue
  28. 142 0
      src/components/DataQualityInspection/Rules/ImportGeojsonQualityInspectionRules.vue
  29. 142 0
      src/components/DataQualityInspection/Rules/ImportShapefileQualityInspectionRules.vue
  30. 68 0
      src/components/DataQualityInspection/Rules/LayerQualityInspectionRules.vue
  31. 72 0
      src/components/DataQualityInspection/Rules/SingleDataQualityInspectionRules.vue
  32. 0 23
      src/components/DataQualityInspection/SingleDataQualityInspectionRules.vue
  33. 6 0
      src/main.js
  34. 1 1
      src/store/index.js
  35. 9 6
      src/views/DataAccess.vue
  36. 23 5
      src/views/DataDisplay.vue
  37. 25 9
      src/views/DataLayer.vue
  38. 24 15
      src/views/DataQualityInspection.vue
  39. 24 6
      src/views/DataServices.vue
  40. 61 26
      src/views/Home.vue
  41. 22 14
      src/views/SecondaryDevelopment.vue
  42. 7 4
      src/views/SystemManagement.vue
  43. 7 4
      src/views/Utilities.vue

+ 20 - 0
package-lock.json

@@ -18,6 +18,7 @@
         "qs": "^6.10.3",
         "vue": "^2.6.11",
         "vue-cli-plugin-style-resources-loader": "^0.1.5",
+        "vue-json-viewer": "^2.2.22",
         "vue-ls": "^3.2.2",
         "vue-router": "^3.5.2",
         "vuex": "^3.4.0"
@@ -14397,6 +14398,17 @@
       "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==",
       "dev": true
     },
+    "node_modules/vue-json-viewer": {
+      "version": "2.2.22",
+      "resolved": "https://registry.npmmirror.com/vue-json-viewer/-/vue-json-viewer-2.2.22.tgz",
+      "integrity": "sha512-3oPH5BxoUWva/qp7wNJj+15FBXyi9Yu5VDW4mCWivjHR1pUpMv34fjqqxML7jh2uOqm1S/3Xks5nQ5JjC5+OWw==",
+      "dependencies": {
+        "clipboard": "^2.0.4"
+      },
+      "peerDependencies": {
+        "vue": "^2.6.9"
+      }
+    },
     "node_modules/vue-loader": {
       "version": "15.9.8",
       "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.9.8.tgz",
@@ -27547,6 +27559,14 @@
       "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==",
       "dev": true
     },
+    "vue-json-viewer": {
+      "version": "2.2.22",
+      "resolved": "https://registry.npmmirror.com/vue-json-viewer/-/vue-json-viewer-2.2.22.tgz",
+      "integrity": "sha512-3oPH5BxoUWva/qp7wNJj+15FBXyi9Yu5VDW4mCWivjHR1pUpMv34fjqqxML7jh2uOqm1S/3Xks5nQ5JjC5+OWw==",
+      "requires": {
+        "clipboard": "^2.0.4"
+      }
+    },
     "vue-loader": {
       "version": "15.9.8",
       "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.9.8.tgz",

+ 1 - 0
package.json

@@ -18,6 +18,7 @@
     "qs": "^6.10.3",
     "vue": "^2.6.11",
     "vue-cli-plugin-style-resources-loader": "^0.1.5",
+    "vue-json-viewer": "^2.2.22",
     "vue-ls": "^3.2.2",
     "vue-router": "^3.5.2",
     "vuex": "^3.4.0"

BIN
src/assets/images/layerZJImage/excelImport.jpg


BIN
src/assets/images/layerZJImage/fujianZJ.png


BIN
src/assets/images/layerZJImage/fujianZJ_back.png


BIN
src/assets/images/layerZJImage/geojsonImport.jpg


BIN
src/assets/images/layerZJImage/jiekouZJ.png


BIN
src/assets/images/layerZJImage/jiekouZJ_back.png


BIN
src/assets/images/layerZJImage/layer.jpg


BIN
src/assets/images/layerZJImage/shapefile.jpg


BIN
src/assets/images/layerZJImage/singleData.jpg


+ 1 - 1
src/components/Currency/Aside.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-aside :class="'every_aside'">
+  <el-aside :class="'every_aside'" v-if="showMenuIndex.substr(0, 1) != '-'">
     <el-menu
       :default-active="showMenuIndex"
       class="el-menu-vertical-demo"

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

@@ -48,7 +48,7 @@
         </el-upload>
       </div>
       <el-button type="primary" v-if="type == 3" @click="openShareData">
-        数据分享
+        数据发布
       </el-button>
     </el-header>
     <el-main>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

+ 36 - 0
src/components/DataQualityInspection/Process/AccessoryDiagram.vue

@@ -0,0 +1,36 @@
+<template>
+  <el-container>
+    <el-image :src="showImg" :preview-src-list="srcList"></el-image>
+  </el-container>
+</template>
+
+<script>
+import showImg from "@/assets/images/layerZJImage/fujianZJ.png";
+import showImg2 from "@/assets/images/layerZJImage/fujianZJ_back.png";
+export default {
+  data() {
+    return {
+      showImg: showImg,
+      srcList: [showImg2],
+    };
+  },
+  components: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+.el-container {
+  display: block;
+  width: 100%;
+  padding: 10px 20px;
+  box-sizing: border-box;
+  background: #ffffff;
+  overflow: hidden;
+  overflow-y: auto;
+  .el-image { 
+    margin: 0 auto;
+    display: block;
+  }
+}
+</style>

+ 0 - 0
src/components/DataQualityInspection/ExcelQualityInspection.vue → src/components/DataQualityInspection/Process/ExcelQualityInspection.vue


+ 0 - 0
src/components/DataQualityInspection/GeojsonQualityInspection.vue → src/components/DataQualityInspection/Process/GeojsonQualityInspection.vue


+ 36 - 0
src/components/DataQualityInspection/Process/InterfaceAccessDiagram.vue

@@ -0,0 +1,36 @@
+<template>
+  <el-container>
+    <el-image :src="showImg" :preview-src-list="srcList"></el-image>
+  </el-container>
+</template>
+
+<script>
+import showImg from "@/assets/images/layerZJImage/jiekouZJ.png";
+import showImg2 from "@/assets/images/layerZJImage/jiekouZJ_back.png";
+export default {
+  data() {
+    return {
+      showImg: showImg,
+      srcList: [showImg2],
+    };
+  },
+  components: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+.el-container {
+  display: block;
+  width: 100%;
+  padding: 10px 20px;
+  box-sizing: border-box;
+  background: #ffffff;
+  overflow: hidden;
+  overflow-y: auto;
+  .el-image {
+    margin: 0 auto;
+    display: block;
+  }
+}
+</style>

+ 0 - 0
src/components/DataQualityInspection/ShapefileQualityInspection.vue → src/components/DataQualityInspection/Process/ShapefileQualityInspection.vue


+ 66 - 0
src/components/DataQualityInspection/Rules/DataIntegrityCheck.vue

@@ -0,0 +1,66 @@
+<template>
+  <el-container>
+    <el-row class="center_title">数据完整性检查</el-row>
+    <el-row class="main_body" v-for="(str, index) in textArr" :key="index">
+      {{ index + 1 }}. {{ str }}
+    </el-row>
+  </el-container>
+</template>
+
+<script> 
+export default {
+  data() {
+    return { 
+      textArr: [
+        "数据内容应包含所有不为空数据。",
+        "单条数据内容符合数据字段限制。",
+        "附件数据格式支持:geojson文件、shape文件zip格式压缩包、excel文件且第一列数据应为字段名称。",
+        "目录及文件规范性检查,数据组织目录及文件命名规范。",
+        "数据有效性检查,所有数据及文件必须能正常打开。",
+        "属性数据完整性检查,确保数据库表示据完整。",
+        "必填字段是否为空检查,要求各要素层中必填字段值必须有值。",
+      ],
+    };
+  },
+  components: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+.el-container {
+  display: block;
+  width: 100%;
+  padding: 10px 20px;
+  box-sizing: border-box;
+  background: #ffffff;
+  overflow: hidden;
+  overflow-y: auto;
+  .el-row {
+    // margin-bottom: 10px;
+    line-height: 40px;
+    &:last-child {
+      // margin-bottom: 10px;
+    }
+    &::before {
+      display: unset;
+    }
+  }
+  .center_title {
+    font-size: 20px;
+    font-weight: bold;
+    text-align: center;
+  }
+  .main_body {
+    display: block;
+    font-size: 16px;
+    text-indent: 25px;
+  }
+  .el-image {
+    width: 62.5%;
+    height: 100%;
+    margin: 0 auto;
+    display: block;
+  }
+}
+</style>

+ 68 - 0
src/components/DataQualityInspection/Rules/ImportExcelQualityInspectionRules.vue

@@ -0,0 +1,68 @@
+<template>
+  <el-container>
+    <el-row class="first_level_title">字段限制</el-row>
+    <el-row class="main_body" v-for="(str, index) in textArr" :key="index">
+      {{ index + 1 }}. {{ str }}
+    </el-row>
+    <!-- <el-row class="first_level_title">示例截图</el-row> -->
+    <el-image :src="showImg" :preview-src-list="srcList"></el-image>
+  </el-container>
+</template>
+
+<script>
+import showImg from "@/assets/images/layerZJImage/excelImport.jpg";
+export default {
+  data() {
+    return {
+      showImg: showImg,
+      srcList: [showImg],
+      textArr: [
+        "标题字段不能为空,且导入附件中包含该字段,字段内容不为空。",
+        "经度字段不能为空,且导入附件中包含该字段,字段内容不为空,符合纬度标准。",
+        "纬度字段不能为空,且导入附件中包含该字段,字段内容不为空,符合经度标准。",
+        "描述字段不能为空,且导入附件中包含该字段,字段内容不为空。",
+        "内容描述字段可以为空,导入附件中包含内容描述对应字段,字段内容不为空。",
+      ],
+    };
+  },
+  components: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+.el-container {
+  display: block;
+  width: 100%;
+  padding: 10px 20px;
+  box-sizing: border-box;
+  background: #ffffff;
+  overflow: hidden;
+  overflow-y: auto;
+  .el-row {
+    // margin-bottom: 10px;
+    line-height: 40px;
+    &:last-child {
+      // margin-bottom: 10px;
+    }
+    &::before {
+      display: unset;
+    }
+  }
+  .first_level_title {
+    font-size: 18px;
+    font-weight: bold;
+  }
+  .main_body {
+    display: block;
+    font-size: 16px;
+    text-indent: 25px;
+  }
+  .el-image {
+    width: 62.5%;
+    height: 100%;
+    margin: 0 auto;
+    display: block;
+  }
+}
+</style>

+ 142 - 0
src/components/DataQualityInspection/Rules/ImportGeojsonQualityInspectionRules.vue

@@ -0,0 +1,142 @@
+<template>
+  <el-container>
+    <el-row class="first_level_title">文件构成</el-row>
+    <el-row
+      class="main_body"
+      v-for="(str, index) in textObj.textArr"
+      :key="index"
+    >
+      {{ str }}
+    </el-row>
+    <el-row class="must_tips">{{ textObj.attention }}</el-row>
+    <el-row class="first_level_title">示例数据</el-row>
+    <json-viewer
+      :value="textObj.exampleData"
+      :expand-depth="5"
+      :copyable="{ copyText: '复制', copiedText: '复制成功', timeout: 1000 }"
+      theme="my-awesome-json-theme"
+    ></json-viewer>
+    <el-image :src="showImg" :preview-src-list="srcList"></el-image>
+  </el-container>
+</template>
+
+<script>
+import showImg from "@/assets/images/layerZJImage/geojsonImport.jpg";
+export default {
+  data() {
+    return {
+      showImg: showImg,
+      srcList: [showImg],
+      textObj: {
+        textArr: [
+          "json文件中内容有两部分组成,分别为model与content,其中:",
+          "model为图层描述,用来定位excel中数据应当在哪个图层进行数据新增或更新使用;",
+          "content为excel的字段描述,用来指向哪些数据作为什么类型、什么功能进行描述。",
+        ],
+        attention:
+          "注:model中如果填写id字段,其他字段可以不填写,如无id字段,则其他字段必须都填写。id字段与其他字段作为互斥关系,必须有一组要填写!!!",
+        exampleData: {
+          model: {
+            threeId: "CXJSGL",
+            tableName: "CXJSGL.T_ZTQ_CXJSGL_VIEW_JCSJ_QIYE",
+            title: "供热企业分布",
+            content: "供热企业基本信息",
+            type: 3,
+            id: 24,
+          },
+          content: {
+            titlePara: "HEATSTATIONNAME",
+            contentPara: "S_EXT_DEPTNUM",
+            lonPara: "MAPX",
+            latPara: "MAPY",
+            areaCodePara: "HEATSOURCEID",
+            threeIdPara: "HEATSTATIONID",
+            jsonStrPara: [
+              {
+                paraName: "ADDRESS",
+                name: "地址",
+                unit: "",
+              },
+              {
+                paraName: "S_EXT_SYSNUM",
+                name: "服务中心",
+                unit: "",
+              },
+              {
+                paraName: "S_EXT_DEPTNUM",
+                name: "供热平台",
+                unit: "",
+              },
+              {
+                paraName: "HEATINGAREA",
+                name: "实际供热面积",
+                unit: "㎡",
+              },
+              {
+                paraName: "HEATINGAREAMAX",
+                name: "额定供热面积",
+                unit: "㎡",
+              },
+              {
+                paraName: "AREAPUBLIC",
+                name: "实际公建供热面积",
+                unit: "㎡",
+              },
+            ],
+          },
+        },
+      },
+    };
+  },
+  components: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+.el-container {
+  display: block;
+  width: 100%;
+  padding: 10px 20px;
+  box-sizing: border-box;
+  background: #ffffff;
+  overflow: hidden;
+  overflow-y: auto;
+  .el-row {
+    // margin-bottom: 10px;
+    line-height: 40px;
+    &:last-child {
+      // margin-bottom: 10px;
+    }
+    &::before {
+      display: unset;
+    }
+  }
+  .first_level_title {
+    font-size: 18px;
+    font-weight: bold;
+  }
+  .main_body {
+    display: block;
+    font-size: 16px;
+    text-indent: 25px;
+  }
+  .el-image {
+    width: 62.5%;
+    height: 100%;
+    margin: 0 auto;
+    display: block;
+  }
+  .must_tips {
+    font-size: 14px;
+    color: #ff0000;
+  }
+  .jv-container {
+    font-size: 14px;
+    /deep/ .jv-code {
+      padding: 0px 20px 30px 20px;
+      line-height: 20px;
+    }
+  }
+}
+</style>

+ 142 - 0
src/components/DataQualityInspection/Rules/ImportShapefileQualityInspectionRules.vue

@@ -0,0 +1,142 @@
+<template>
+  <el-container>
+    <el-row class="first_level_title">文件构成</el-row>
+    <el-row
+      class="main_body"
+      v-for="(str, index) in textObj.textArr"
+      :key="index"
+    >
+      {{ str }}
+    </el-row>
+    <el-row class="must_tips">{{ textObj.attention }}</el-row>
+    <el-row class="first_level_title">示例数据</el-row>
+    <json-viewer
+      :value="textObj.exampleData"
+      :expand-depth="5"
+      :copyable="{ copyText: '复制', copiedText: '复制成功', timeout: 1000 }"
+      theme="my-awesome-json-theme"
+    ></json-viewer>
+    <el-image :src="showImg" :preview-src-list="srcList"></el-image>
+  </el-container>
+</template>
+
+<script>
+import showImg from "@/assets/images/layerZJImage/shapefile.jpg";
+export default {
+  data() {
+    return {
+      showImg: showImg,
+      srcList: [showImg],
+      textObj: {
+        textArr: [
+          "Shapefile文件中内容有两部分组成,分别为model与content,其中:",
+          "model为图层描述,用来定位excel中数据应当在哪个图层进行数据新增或更新使用;",
+          "content为excel的字段描述,用来指向哪些数据作为什么类型、什么功能进行描述。",
+        ],
+        attention:
+          "注:model中如果填写id字段,其他字段可以不填写,如无id字段,则其他字段必须都填写。id字段与其他字段作为互斥关系,必须有一组要填写!!!",
+        exampleData: {
+          model: {
+            threeId: "CXJSGL",
+            tableName: "CXJSGL.T_ZTQ_CXJSGL_VIEW_JCSJ_QIYE",
+            title: "供热企业分布",
+            content: "供热企业基本信息",
+            type: 3,
+            id: 24,
+          },
+          content: {
+            titlePara: "HEATSTATIONNAME",
+            contentPara: "S_EXT_DEPTNUM",
+            lonPara: "MAPX",
+            latPara: "MAPY",
+            areaCodePara: "HEATSOURCEID",
+            threeIdPara: "HEATSTATIONID",
+            jsonStrPara: [
+              {
+                paraName: "ADDRESS",
+                name: "地址",
+                unit: "",
+              },
+              {
+                paraName: "S_EXT_SYSNUM",
+                name: "服务中心",
+                unit: "",
+              },
+              {
+                paraName: "S_EXT_DEPTNUM",
+                name: "供热平台",
+                unit: "",
+              },
+              {
+                paraName: "HEATINGAREA",
+                name: "实际供热面积",
+                unit: "㎡",
+              },
+              {
+                paraName: "HEATINGAREAMAX",
+                name: "额定供热面积",
+                unit: "㎡",
+              },
+              {
+                paraName: "AREAPUBLIC",
+                name: "实际公建供热面积",
+                unit: "㎡",
+              },
+            ],
+          },
+        },
+      },
+    };
+  },
+  components: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+.el-container {
+  display: block;
+  width: 100%;
+  padding: 10px 20px;
+  box-sizing: border-box;
+  background: #ffffff;
+  overflow: hidden;
+  overflow-y: auto;
+  .el-row {
+    // margin-bottom: 10px;
+    line-height: 40px;
+    &:last-child {
+      // margin-bottom: 10px;
+    }
+    &::before {
+      display: unset;
+    }
+  }
+  .first_level_title {
+    font-size: 18px;
+    font-weight: bold;
+  }
+  .main_body {
+    display: block;
+    font-size: 16px;
+    text-indent: 25px;
+  }
+  .el-image {
+    width: 62.5%;
+    height: 100%;
+    margin: 0 auto;
+    display: block;
+  }
+  .must_tips {
+    font-size: 14px;
+    color: #ff0000;
+  }
+  .jv-container {
+    font-size: 14px;
+    /deep/ .jv-code {
+      padding: 0px 20px 30px 20px;
+      line-height: 20px;
+    }
+  }
+}
+</style>

+ 68 - 0
src/components/DataQualityInspection/Rules/LayerQualityInspectionRules.vue

@@ -0,0 +1,68 @@
+<template>
+  <el-container>
+    <el-row class="first_level_title">字段限制</el-row>
+    <el-row class="main_body" v-for="(str, index) in textArr" :key="index">
+      {{ index + 1 }}. {{ str }}
+    </el-row>
+    <!-- <el-row class="first_level_title">示例截图</el-row> -->
+    <el-image :src="showImg" :preview-src-list="srcList"></el-image>
+  </el-container>
+</template>
+
+<script>
+import showImg from "@/assets/images/layerZJImage/layer.jpg";
+export default {
+  data() {
+    return {
+      showImg: showImg,
+      srcList: [showImg],
+      textArr: [
+        "第三方表名(TABLE_NAME)不能为空,长度100字符。",
+        "标题(TITLE)不能为空,长度20个字符。",
+        "描述(CONTENT)不能为空,长度100个字符。",
+        "内容描述(JSON_STR)可以为空,长度64KB。",
+        "几何类型不能为空。",
+      ],
+    };
+  },
+  components: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+.el-container {
+  display: block;
+  width: 100%;
+  padding: 10px 20px;
+  box-sizing: border-box;
+  background: #ffffff;
+  overflow: hidden;
+  overflow-y: auto;
+  .el-row {
+    // margin-bottom: 10px;
+    line-height: 40px;
+    &:last-child {
+      // margin-bottom: 10px;
+    }
+    &::before {
+      display: unset;
+    }
+  }
+  .first_level_title {
+    font-size: 18px;
+    font-weight: bold;
+  }
+  .main_body {
+    display: block;
+    font-size: 16px;
+    text-indent: 25px;
+  }
+  .el-image {
+    width: 62.5%;
+    height: 100%;
+    margin: 0 auto;
+    display: block;
+  }
+}
+</style>

+ 72 - 0
src/components/DataQualityInspection/Rules/SingleDataQualityInspectionRules.vue

@@ -0,0 +1,72 @@
+<template>
+  <el-container>
+    <el-row class="first_level_title">字段限制</el-row>
+    <el-row class="main_body" v-for="(str, index) in textArr" :key="index">
+      {{ index + 1 }}. {{ str }}
+    </el-row>
+    <!-- <el-row class="first_level_title">示例截图</el-row> -->
+    <el-image :src="showImg" :preview-src-list="srcList"></el-image>
+  </el-container>
+</template>
+
+<script>
+import showImg from "@/assets/images/layerZJImage/singleData.jpg";
+export default {
+  data() {
+    return {
+      showImg: showImg,
+      srcList: [showImg],
+      textArr: [
+        "第三方ID(THREE_ID)不能为空,长度100字符。",
+        "标题(TITLE)不能为空,长度20字符。",
+        "几何类型与模型一致。",
+        "中心点经度(CENTER_LON)不能为空,长度20字符,经度范围-180至180。",
+        "中心点纬度(CENTER_LAT)不能为空,长度20字符,纬度范围-85至85。",
+        "描述(CONTENT)不能为空,长度100字符。",
+        "内容描述(JSON_STR)可以为空,长度64KB,用来展示业务数据。",
+        "geometry数据(locations)可以为空,长度64KB,必须是WKT格式数据,支持多种几何类型。",
+        "行政区划代码(AREA_CODE)可以为空,长度20。", 
+      ],
+    };
+  },
+  components: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+.el-container {
+  display: block;
+  width: 100%;
+  padding: 10px 20px;
+  box-sizing: border-box;
+  background: #ffffff;
+  overflow: hidden;
+  overflow-y: auto;
+  .el-row {
+    // margin-bottom: 10px;
+    line-height: 40px;
+    &:last-child {
+      // margin-bottom: 10px;
+    }
+    &::before {
+      display: unset;
+    }
+  }
+  .first_level_title {
+    font-size: 18px;
+    font-weight: bold;
+  }
+  .main_body {
+    display: block;
+    font-size: 16px;
+    text-indent: 25px;
+  }
+  .el-image {
+    width: 62.5%;
+    height: 100%;
+    margin: 0 auto;
+    display: block;
+  }
+}
+</style>

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

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

+ 6 - 0
src/main.js

@@ -4,6 +4,8 @@ import ElementUI from 'element-ui';
 import 'element-ui/lib/theme-chalk/index.css';
 Vue.use(ElementUI);
 
+
+
 import App from "./App.vue";
 import router from "./router";
 import store from "./store";
@@ -12,6 +14,10 @@ import "./assets/less/fonts.less";
 import VueStorage from 'vue-ls'
 Vue.use(VueStorage)
 
+import JsonViewer from 'vue-json-viewer'
+// Import JsonViewer as a Vue.js plugin
+Vue.use(JsonViewer)
+
 Vue.config.productionTip = false;
 Vue.prototype.$elDatePickerAlign = "right";
 Vue.prototype.$checkRequestCode = (result) => {

+ 1 - 1
src/store/index.js

@@ -179,7 +179,7 @@ export default new Vuex.Store({
           permission: 60,
           children: [
             {
-              label: "数据共享",
+              label: "数据发布",
               name: "DataTable",
               index: "1", permission: 61,
             },

+ 9 - 6
src/views/DataAccess.vue

@@ -25,28 +25,31 @@
 <script>
 export default {
   props: {
-    index: {
+    permission: {
       type: Number,
     },
   },
   data() {
     return {
       menuList: null,
-      showIndex: "1",
-      showMenuIndex: "1",
+      showIndex: "-1",
+      showMenuIndex: "-1",
     };
   },
   components: {
     Aside: () => import("@/components/Currency/Aside.vue"),
     DataTable: () => import("@/components/Currency/DataTable/DataTable.vue"),
     DataLog: () => import("@/components/DataAccess/DataLog.vue"),
-    Feedback: () => import("@/components/DataAccess/Feedback.vue")
+    Feedback: () => import("@/components/DataAccess/Feedback.vue"),
   },
-    
+
   created() {
     let that = this;
     this.menuList =
-      this.$store.getters.getMenuListTotal[this.index - 1].children;
+      this.$store.getters.getMenuListTotal.filter(function (item) {
+      return item.permission == that.permission
+    })[0].children ;
+    if (this.menuList.length == 0) return;
     t("", this.menuList);
     function t(beforeindex, arr) {
       if (beforeindex == "") {

+ 23 - 5
src/views/DataDisplay.vue

@@ -24,15 +24,18 @@
 <script>
 export default {
   props: {
-    index: {
+    permission: {
+      type: Number,
+    },
+    defaultPermission: {
       type: Number,
     },
   },
   data() {
     return {
       menuList: null,
-      showIndex: "1",
-      showMenuIndex: "1",
+      showIndex: "-1",
+      showMenuIndex: "-1",
     };
   },
   components: {
@@ -42,8 +45,16 @@ export default {
   },
   created() {
     let that = this;
-    this.menuList =
-      this.$store.getters.getMenuListTotal[this.index - 1].children;
+    this.menuList = this.$store.getters.getMenuListTotal.filter(function (
+      item
+    ) {
+      return item.permission == that.permission;
+    })[0].children;
+    if (this.menuList.length == 0) return;
+    if (this.defaultPermission != -1) {
+      d(this.defaultPermission, this.menuList);
+      return;
+    }
     t("", this.menuList);
     function t(beforeindex, arr) {
       if (beforeindex == "") {
@@ -58,6 +69,13 @@ export default {
         that.showMenuIndex = beforeindex;
       }
     }
+    function d(defaultPermission, arr) {
+      let index = arr.filter(function (item) {
+        return item.permission == defaultPermission;
+      })[0].index;
+      that.showIndex = index;
+      that.showMenuIndex = index;
+    }
   },
   methods: {
     handleMenuSelect(index) {

+ 25 - 9
src/views/DataLayer.vue

@@ -9,9 +9,7 @@
         }"
       ></Aside>
       <el-main>
-        <IconLibraryManagement
-          v-show="showIndex == '1'"
-        ></IconLibraryManagement>
+        <IconLibraryManagement v-if="showIndex == '1'"></IconLibraryManagement>
         <LayerManagement v-show="showIndex == '2'"></LayerManagement>
       </el-main>
     </el-container>
@@ -21,15 +19,18 @@
 <script>
 export default {
   props: {
-    index: {
+    permission: {
+      type: Number,
+    },
+    defaultPermission: {
       type: Number,
     },
   },
   data() {
     return {
       menuList: null,
-      showIndex: "1",
-      showMenuIndex: "1",
+      showIndex: "-1",
+      showMenuIndex: "-1",
     };
   },
   components: {
@@ -40,8 +41,16 @@ export default {
   },
   created() {
     let that = this;
-    this.menuList =
-      this.$store.getters.getMenuListTotal[this.index - 1].children;
+    this.menuList = this.$store.getters.getMenuListTotal.filter(function (
+      item
+    ) {
+      return item.permission == that.permission;
+    })[0].children;
+    if (this.menuList.length == 0) return;
+    if (this.defaultPermission != -1) {
+      d(this.defaultPermission, this.menuList);
+      return;
+    }
     t("", this.menuList);
     function t(beforeindex, arr) {
       if (beforeindex == "") {
@@ -56,6 +65,13 @@ export default {
         that.showMenuIndex = beforeindex;
       }
     }
+    function d(defaultPermission, arr) {
+      let index = arr.filter(function (item) {
+        return item.permission == defaultPermission;
+      })[0].index;
+      that.showIndex = index;
+      that.showMenuIndex = index;
+    }
   },
   methods: {
     handleMenuSelect(index) {
@@ -73,7 +89,7 @@ export default {
     height: 100%;
     .el-main {
       padding: 0 0;
-      margin-left: 20px; 
+      margin-left: 20px;
     }
   }
 }

+ 24 - 15
src/views/DataQualityInspection.vue

@@ -47,53 +47,59 @@
 <script>
 export default {
   props: {
-    index: {
+    permission: {
       type: Number,
     },
   },
   data() {
     return {
       menuList: null,
-      showIndex: "1",
-      showMenuIndex: "1-1",
+      showIndex: "-1",
+      showMenuIndex: "-1-1",
     };
   },
   components: {
     Aside: () => import("@/components/Currency/Aside.vue"),
     LayerQualityInspectionRules: () =>
       import(
-        "@/components/DataQualityInspection/LayerQualityInspectionRules.vue"
+        "@/components/DataQualityInspection/Rules/LayerQualityInspectionRules.vue"
       ),
     SingleDataQualityInspectionRules: () =>
       import(
-        "@/components/DataQualityInspection/SingleDataQualityInspectionRules.vue"
+        "@/components/DataQualityInspection/Rules/SingleDataQualityInspectionRules.vue"
       ),
     ImportExcelQualityInspectionRules: () =>
       import(
-        "@/components/DataQualityInspection/ImportExcelQualityInspectionRules.vue"
+        "@/components/DataQualityInspection/Rules/ImportExcelQualityInspectionRules.vue"
       ),
     ImportShapefileQualityInspectionRules: () =>
       import(
-        "@/components/DataQualityInspection/ImportShapefileQualityInspectionRules.vue"
+        "@/components/DataQualityInspection/Rules/ImportShapefileQualityInspectionRules.vue"
       ),
     ImportGeojsonQualityInspectionRules: () =>
       import(
-        "@/components/DataQualityInspection/ImportGeojsonQualityInspectionRules.vue"
+        "@/components/DataQualityInspection/Rules/ImportGeojsonQualityInspectionRules.vue"
       ),
     DataIntegrityCheck: () =>
-      import("@/components/DataQualityInspection/DataIntegrityCheck.vue"),
+      import("@/components/DataQualityInspection/Rules/DataIntegrityCheck.vue"),
+
+
+
+
+
+
     InterfaceAccessDiagram: () =>
-      import("@/components/DataQualityInspection/InterfaceAccessDiagram.vue"),
+      import("@/components/DataQualityInspection/Process/InterfaceAccessDiagram.vue"),
     AccessoryDiagram: () =>
-      import("@/components/DataQualityInspection/AccessoryDiagram.vue"),
+      import("@/components/DataQualityInspection/Process/AccessoryDiagram.vue"),
     ExcelQualityInspection: () =>
-      import("@/components/DataQualityInspection/ExcelQualityInspection.vue"),
+      import("@/components/DataQualityInspection/Process/ExcelQualityInspection.vue"),
     ShapefileQualityInspection: () =>
       import(
-        "@/components/DataQualityInspection/ShapefileQualityInspection.vue"
+        "@/components/DataQualityInspection/Process/ShapefileQualityInspection.vue"
       ),
     GeojsonQualityInspection: () =>
-      import("@/components/DataQualityInspection/GeojsonQualityInspection.vue"),
+      import("@/components/DataQualityInspection/Process/GeojsonQualityInspection.vue"),
   },
 
   created() {
@@ -112,7 +118,10 @@ export default {
     // ];
     let that = this;
     this.menuList =
-      this.$store.getters.getMenuListTotal[this.index - 1].children;
+      this.$store.getters.getMenuListTotal.filter(function (item) {
+      return item.permission == that.permission
+    })[0].children ;
+    if (this.menuList.length == 0) return;
     t("", this.menuList);
     function t(beforeindex, arr) {
       if (beforeindex == "") {

+ 24 - 6
src/views/DataServices.vue

@@ -26,15 +26,18 @@
 <script>
 export default {
   props: {
-    index: {
+    permission: {
+      type: Number,
+    },
+    defaultPermission: {
       type: Number,
     },
   },
   data() {
     return {
       menuList: null,
-      showIndex: "1",
-      showMenuIndex: "1",
+      showIndex: "-1",
+      showMenuIndex: "-1",
     };
   },
   components: {
@@ -47,8 +50,16 @@ export default {
   },
   created() {
     let that = this;
-    this.menuList =
-      this.$store.getters.getMenuListTotal[this.index - 1].children;
+    this.menuList = this.$store.getters.getMenuListTotal.filter(function (
+      item
+    ) {
+      return item.permission == that.permission;
+    })[0].children;
+    if (this.menuList.length == 0) return;
+    if (this.defaultPermission != -1) { 
+      d(this.defaultPermission, this.menuList);
+      return;
+    }
     t("", this.menuList);
     function t(beforeindex, arr) {
       if (beforeindex == "") {
@@ -63,6 +74,13 @@ export default {
         that.showMenuIndex = beforeindex;
       }
     }
+    function d(defaultPermission, arr) {
+      let index = arr.filter(function (item) {
+        return item.permission == defaultPermission;
+      })[0].index;
+      that.showIndex = index;
+      that.showMenuIndex = index;
+    }
   },
   methods: {
     handleMenuSelect(index) {
@@ -80,7 +98,7 @@ export default {
     height: 100%;
     .el-main {
       padding: 0 0;
-      margin-left: 20px; 
+      margin-left: 20px;
     }
   }
 }

+ 61 - 26
src/views/Home.vue

@@ -5,7 +5,11 @@
         <div class="banner">
           <div class="login_content">
             <div class="before_login" v-if="!loginStatus">
-              用户名:<el-input v-model="username" placeholder="请输入用户名"></el-input> 密码:<el-input
+              用户名:<el-input
+                v-model="username"
+                placeholder="请输入用户名"
+              ></el-input>
+              密码:<el-input
                 v-model="password"
                 placeholder="请输入密码"
                 show-password
@@ -20,8 +24,18 @@
         </div>
         <div class="func">
           <div>
-            <el-menu :default-active="showMenuIndex" class="el-menu-demo" mode="horizontal" @select="handleMenuSelect">
-              <el-menu-item v-for="(item, index) in funcArr" :key="index" :index="item.index">{{ item.label }}</el-menu-item>
+            <el-menu
+              :default-active="showMenuIndex"
+              class="el-menu-demo"
+              mode="horizontal"
+              @select="handleMenuSelect"
+            >
+              <el-menu-item
+                v-for="(item, index) in funcArr"
+                :key="index"
+                :index="item.index"
+                >{{ item.label }}</el-menu-item
+              >
             </el-menu>
           </div>
         </div>
@@ -37,55 +51,58 @@
           <ComprehensiveDisplay
             v-if="showIndex == '1'"
             v-bind="{
-              index: 1
+              permission: 10,
             }"
           ></ComprehensiveDisplay>
           <DataLayer
             v-if="showIndex == '2'"
             v-bind="{
-              index: 2
+              permission: 20,
+              defaultPermission: defaultPermission,
             }"
           ></DataLayer>
           <DataQualityInspection
             v-if="showIndex == '3'"
             v-bind="{
-              index: 3
+              permission: 30,
             }"
           ></DataQualityInspection>
           <DataAccess
             v-if="showIndex == '4'"
             v-bind="{
-              index: 4
+              permission: 40,
             }"
           ></DataAccess>
           <DataDisplay
             v-if="showIndex == '5'"
             v-bind="{
-              index: 5
+              permission: 50,
+              defaultPermission: defaultPermission,
             }"
           ></DataDisplay>
           <DataServices
             v-if="showIndex == '6'"
             v-bind="{
-              index: 6
+              permission: 60,
+              defaultPermission: defaultPermission,
             }"
           ></DataServices>
           <Utilities
             v-if="showIndex == '7'"
             v-bind="{
-              index: 7
+              permission: 70,
             }"
           ></Utilities>
           <SecondaryDevelopment
             v-if="showIndex == '8'"
             v-bind="{
-              index: 8
+              permission: 80,
             }"
           ></SecondaryDevelopment>
           <SystemManagement
             v-if="showIndex == '9'"
             v-bind="{
-              index: 9
+              permission: 90,
             }"
           ></SystemManagement>
         </el-main>
@@ -106,13 +123,11 @@ export default {
       loginStatus: false,
       userInfo: null,
       requestCode: systemConfig.requestCode,
-      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,
-        84, 90, 91, 92
-      ],
+      permissionUnlogin: [10, 20, 30, 31, 50, 60, 70, 71, 72, 73, 74, 75],
       funcArr: null,
       showMenuIndex: "1",
-      showIndex: "1"
+      showIndex: "1",
+      defaultPermission: -1,
     };
   },
   components: {
@@ -124,7 +139,7 @@ export default {
     DataServices: () => import("@/views/DataServices.vue"),
     Utilities: () => import("@/views/Utilities.vue"),
     SecondaryDevelopment: () => import("@/views/SecondaryDevelopment.vue"),
-    SystemManagement: () => import("@/views/SystemManagement.vue")
+    SystemManagement: () => import("@/views/SystemManagement.vue"),
     // 综合展示
     // ComprehensiveDisplay
     // 数据图层
@@ -149,6 +164,7 @@ export default {
     window.loginFunc = this.loginFunc;
     window.getMenu = this.getMenu;
     window.getIcon = this.getIcon;
+    window.jumpModule = this.jumpModule;
 
     let that = this;
     if (this.$store.getters.getUserState) {
@@ -172,6 +188,7 @@ export default {
   mounted() {},
   methods: {
     handleMenuSelect(index) {
+      this.defaultPermission = -1;
       this.showIndex = index;
     },
 
@@ -260,7 +277,11 @@ export default {
           let obj = that.getParams();
           let autologin1 = obj.autologin;
           let autologin2 = localStorage.getItem("autologin");
-          if (autologin1 == 1 || autologin2 != null || autologin2 != undefined) {
+          if (
+            autologin1 == 1 ||
+            autologin2 != null ||
+            autologin2 != undefined
+          ) {
             that.loginFunc();
           } else {
             that.$store.commit("setToken", "");
@@ -270,12 +291,12 @@ export default {
           let code = that.requestCode[result.code];
           if (code == 206 || code == 207 || code == 208) {
             this.$router.push({
-              path: "/error"
+              path: "/error",
             });
           } else {
             that.$message({
               type: "warning",
-              message: that.requestCode[result.code]
+              message: that.requestCode[result.code],
             });
           }
         }
@@ -302,10 +323,10 @@ export default {
             this.$checkRequestCode(result);
           }
         })
-        .catch(err => {
+        .catch((err) => {
           that.$message({
             type: "error",
-            message: err
+            message: err,
           });
         });
     },
@@ -315,7 +336,7 @@ export default {
       let that = this;
       icon
         .getIcon()
-        .then(result => {
+        .then((result) => {
           if (result.code == 200) {
             that.$store.commit("setIconList", result.content);
           } else {
@@ -323,18 +344,32 @@ export default {
             this.$checkRequestCode(result);
           }
         })
-        .catch(err => {
+        .catch((err) => {
           that.$message({
             type: "error",
-            message: err
+            message: err,
           });
         });
     },
+
+    // 跳转模块
+    jumpModule(index, permission) {
+      this.showMenuIndex = index;
+      this.showIndex = index;
+      this.defaultPermission = permission;
+      // jumpModule("2",22) // 跳转图层管理(数据管理)
+      // jumpModule("6",61) // 跳转数据发布(专题发布)
+      // jumpModule("5",52) // 跳转GIS图层管理(数据可视化)
+     
+    },
   },
   computed: {
     menuListTotalData() {
       return this.$store.state.menuListTotal;
     },
+    menuListDeafaultTotal() {
+      return this.$store.state.menuListDeafaultTotal;
+    },
   },
   watch: {
     menuListTotalData: {

+ 22 - 14
src/views/SecondaryDevelopment.vue

@@ -5,7 +5,7 @@
         v-bind="{
           showMenuIndex: showMenuIndex,
           menuList: menuList,
-          handleMenuSelect: handleMenuSelect
+          handleMenuSelect: handleMenuSelect,
         }"
       ></Aside>
       <el-main>
@@ -21,27 +21,35 @@
 <script>
 export default {
   props: {
-    index: {
-      type: Number
-    }
+    permission: {
+      type: Number,
+    },
   },
   data() {
     return {
       menuList: null,
-      showIndex: "1",
-      showMenuIndex: "1"
+      showIndex: "-1",
+      showMenuIndex: "-1",
     };
   },
   components: {
     Aside: () => import("@/components/Currency/Aside.vue"),
-    ManualDrawingTool: () => import("@/components/SecondaryDevelopment/ManualDrawingTool.vue"),
-    GraphicsDrawingTool: () => import("@/components/SecondaryDevelopment/GraphicsDrawingTool.vue"),
-    MeasureTool: () => import("@/components/SecondaryDevelopment/MeasureTool.vue"),
-    IntegratedDescription: () => import("@/components/SecondaryDevelopment/IntegratedDescription.vue")
+    ManualDrawingTool: () =>
+      import("@/components/SecondaryDevelopment/ManualDrawingTool.vue"),
+    GraphicsDrawingTool: () =>
+      import("@/components/SecondaryDevelopment/GraphicsDrawingTool.vue"),
+    MeasureTool: () =>
+      import("@/components/SecondaryDevelopment/MeasureTool.vue"),
+    IntegratedDescription: () =>
+      import("@/components/SecondaryDevelopment/IntegratedDescription.vue"),
   },
   created() {
     let that = this;
-    this.menuList = this.$store.getters.getMenuListTotal[this.index - 1].children;
+    this.menuList =
+      this.$store.getters.getMenuListTotal.filter(function (item) {
+      return item.permission == that.permission
+    })[0].children ;
+    if (this.menuList.length == 0) return;
     t("", this.menuList);
     function t(beforeindex, arr) {
       if (beforeindex == "") {
@@ -60,8 +68,8 @@ export default {
   methods: {
     handleMenuSelect(index) {
       this.showIndex = index;
-    }
-  }
+    },
+  },
 };
 </script>
 
@@ -73,7 +81,7 @@ export default {
     height: 100%;
     .el-main {
       padding: 0 0;
-      margin-left: 20px; 
+      margin-left: 20px;
     }
   }
 }

+ 7 - 4
src/views/SystemManagement.vue

@@ -19,15 +19,15 @@
 <script>
 export default {
   props: {
-    index: {
+    permission: {
       type: Number,
     },
   },
   data() {
     return {
       menuList: null,
-      showIndex: "1",
-      showMenuIndex: "1",
+      showIndex: "-1",
+      showMenuIndex: "-1",
     };
   },
   components: {
@@ -40,7 +40,10 @@ export default {
   created() {
     let that = this;
     this.menuList =
-      this.$store.getters.getMenuListTotal[this.index - 1].children;
+      this.$store.getters.getMenuListTotal.filter(function (item) {
+      return item.permission == that.permission
+    })[0].children ;
+    if (this.menuList.length == 0) return;
     t("", this.menuList);
     function t(beforeindex, arr) {
       if (beforeindex == "") {

+ 7 - 4
src/views/Utilities.vue

@@ -26,15 +26,15 @@
 <script>
 export default {
   props: {
-    index: {
+    permission: {
       type: Number,
     },
   },
   data() {
     return {
       menuList: null,
-      showIndex: "1",
-      showMenuIndex: "1",
+      showIndex: "-1",
+      showMenuIndex: "-1",
     };
   },
   components: {
@@ -52,7 +52,10 @@ export default {
   created() {
     let that = this;
     this.menuList =
-      this.$store.getters.getMenuListTotal[this.index - 1].children;
+      this.$store.getters.getMenuListTotal.filter(function (item) {
+      return item.permission == that.permission
+    })[0].children ;
+    if (this.menuList.length == 0) return;
     t("", this.menuList);
     function t(beforeindex, arr) {
       if (beforeindex == "") {