From 6c086fae275e7f3579654e374cadb85e7e054949 Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期二, 07 二月 2023 19:16:54 +0800
Subject: [PATCH] 目录管理添加批量添加

---
 src/store/index.js                                          |    1 
 src/views/datamanage/styleDirTree.vue                       |   32 --
 src/assets/css/configure.css                                |   42 ++
 src/assets/css/content.css                                  |    4 
 src/views/AuthorizationManagement/roleMenuAuthorization.vue |    5 
 src/views/maintenance/mochaitmo.vue                         |   45 +++
 src/views/datamanage/dataUpdata.vue                         |   43 +-
 src/views/datamanage/SpatialData.vue                        |   19 
 src/assets/css/config.css                                   |  196 +++++++++++++
 src/main.js                                                 |    1 
 package.json                                                |   10 
 src/views/datamanage/catalogueManage.vue                    |  252 +++++++++++++--
 src/views/maintenance/menuSettings.vue                      |    6 
 src/components/navMenu.vue                                  |   39 +
 src/views/userManage/resourceManage.vue                     |  180 +++++------
 src/App.vue                                                 |   24 
 16 files changed, 666 insertions(+), 233 deletions(-)

diff --git a/package.json b/package.json
index 537873f..45359f6 100644
--- a/package.json
+++ b/package.json
@@ -10,7 +10,7 @@
   },
   "dependencies": {
     "@turf/turf": "^6.5.0",
-    "@vue/cli-shared-utils": "^5.0.8",
+    "aws-sdk": "^2.963.0",
     "axios": "^0.21.1",
     "cesium": "^1.84.0",
     "core-js": "^3.6.5",
@@ -20,17 +20,23 @@
     "element-theme-chalk": "^2.15.10",
     "element-ui": "^2.14.1",
     "esri-loader": "^2.14.0",
+    "install": "^0.13.0",
     "jquery": "^3.6.0",
     "moment": "^2.29.4",
     "node-sass": "^7.0.3",
+    "npm": "^8.15.1",
     "object-assign": "^4.1.1",
     "ol": "^6.15.1",
+    "sql.js": "^1.5.0",
+    "sqlite3": "^5.0.2",
     "terraformer-wkt-parser": "^1.2.1",
     "theme-vue": "0.0.8",
+    "vant": "^2.12.25",
     "vue": "^2.6.11",
     "vue-i18n": "^8.27.2",
     "vue-router": "^3.2.0",
-    "vuex": "^3.4.0"
+    "vuex": "^3.4.0",
+    "xlsx": "^0.18.5"
   },
   "devDependencies": {
     "@vue/cli-plugin-babel": "~4.5.0",
diff --git a/src/App.vue b/src/App.vue
index 8f2dea6..f9b33bf 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,5 +1,8 @@
 <template>
-  <div id="app">
+  <div
+    id="app"
+
+  >
     <router-view />
   </div>
 </template>
@@ -14,12 +17,12 @@
     return {};
   },
   created() {
-
+ 
   },
-  beforeDestroy() {},
+  beforeDestroy() { },
 };
 </script>
-<style lang="less">
+<style lang="less" scoped>
 // #app {
 //   font-family: Avenir, Helvetica, Arial, sans-serif;
 //   -webkit-font-smoothing: antialiased;
@@ -34,14 +37,9 @@
   scrollbar-face-color: #dfebff;
   /*婊氬姩鏉℃暣浣撻鑹�*/
   scrollbar-track-color: #536c97;
+  
 }
-// ::-webkit-scrollbar-thumb {
-//   //婊戝潡閮ㄥ垎
-//   background-color: #dfebff;
-// }
-// ::-webkit-scrollbar-track {
-//   //杞ㄩ亾閮ㄥ垎
-//   box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
-//   background: #536c97;
-// }
+
+ 
+
 </style>
diff --git a/src/assets/css/config.css b/src/assets/css/config.css
new file mode 100644
index 0000000..c8338f3
--- /dev/null
+++ b/src/assets/css/config.css
@@ -0,0 +1,196 @@
+.Black_theme {
+    color: white;
+}
+
+.Black_theme .box_div {
+    background: #303030;
+}
+
+.Black_theme .el-menu-item {
+    color: white;
+}
+
+.Black_theme .el-menu-item:hover {
+    background: transparent !important;
+}
+
+.Black_theme .el-submenu__title {
+    color: white;
+}
+
+.Black_theme .el-submenu :hover {
+    background: transparent !important;
+}
+
+.Black_theme .el-menu-item.is-active {
+    color: #409eff;
+}
+
+.Black_theme .el-tree {
+    color: #FFF;
+    background: transparent !important;
+}
+
+.Black_theme .el-tree .el-tree-node:focus>.el-tree-node__content {
+    background-color: transparent;
+}
+
+.Black_theme .el-tree .el-tree-node__content:hover {
+    background: transparents !important;
+}
+
+.Black_theme .el-tree .el-tree-node__content {
+    background: transparents !important;
+}
+
+.Black_theme .el-form-item__label {
+    color: #FFF !important;
+}
+
+.Black_theme .el-tree-node__content:hover {
+    background: transparent !important;
+}
+
+.Black_theme .el-tree-node__content:hover {
+    background: transparent !important;
+}
+
+.Black_theme .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
+    background: transparent !important;
+}
+
+.Black_theme li:hover {
+    background: transparent !important;
+}
+
+.Black_theme .el-input__inner {
+    background-color: transparent !important;
+    border: 1px solid;
+    color: white;
+}
+
+.Black_theme .el-pagination__total {
+    color: white;
+}
+
+.Black_theme .el-pagination__jump {
+    color: white;
+}
+
+.Black_theme .el-pager li.active {
+    color: #409eff;
+}
+
+.Black_theme .el-pager li {
+    color: white;
+    background: transparent;
+}
+
+.Black_theme .el-pager li {
+    color: white;
+}
+
+.Black_theme .btn-prev {
+    background: transparent !important;
+}
+
+.Black_theme .btn-next {
+    background: transparent !important;
+}
+
+.Black_theme .btn-next i {
+    color: white;
+}
+
+.Black_theme .btn-prev i {
+    color: white;
+}
+
+.Black_theme .el-dialog {
+    background: #303030;
+
+}
+
+.Black_theme .el-dialog {
+    background: #303030;
+
+}
+
+.Black_theme .el-dialog__title {
+    color: #FFF;
+}
+
+.Black_theme .el-table {
+    background: transparent;
+}
+
+.Black_theme .el-table {
+    background: transparent;
+}
+
+.Black_theme .el-table td {
+    background-color: #303030;
+    color: white;
+}
+
+.Black_theme .el-table th {
+    background-color: #303030;
+    color: white;
+}
+
+.Black_theme .el-table--enable-row-transition .el-table__body td.el-table__cell {
+    background-color: #303030;
+}
+
+
+.Black_theme .el-table tr:hover>td {
+    background-color: rgba(255, 255, 255, 0.1) !important;
+}
+
+.Black_theme .el-table tbody tr:hover {
+    background-color: rgba(255, 255, 255, 0.1) !important;
+
+}
+
+.Black_theme .el-select-dropdown {
+    background: #303030 !important;
+    color: white;
+    z-index: 99999999 !important;
+    position: absolute;
+}
+
+.Black_theme .el-select-dropdown__item {
+
+    color: white;
+}
+
+.Black_theme .el-select-dropdown__item.selected {
+
+    color: #409eff;
+}
+
+.Black_theme .el-select-dropdown__item.hover {
+    background: transparent;
+}
+
+
+.Black_theme .el-textarea__inner {
+    background: #303030 !important;
+    border: 1px solid white;
+    color: white;
+}
+
+.Black_theme .el-cascader__panel {
+    background: #303030 !important;
+}
+.Black_theme .el-icon-close {
+    color: #FFF !important;
+}
+
+.Black_theme .el-icon-plus {
+    color: #FFF !important;
+}
+.Black_theme .el-icon-upload2 {
+    color: #FFF !important;
+}
+ 
diff --git a/src/assets/css/configure.css b/src/assets/css/configure.css
index 8a8bb3e..e8f2264 100644
--- a/src/assets/css/configure.css
+++ b/src/assets/css/configure.css
@@ -1,21 +1,25 @@
 /*  婊氬姩鏉℃牱寮� */
- 
-::-webkit-scrollbar{
-    width:8px;
-    height:8px;
+
+::-webkit-scrollbar {
+    width: 8px;
+    height: 8px;
     background-color: #409eff;
 }
-::-webkit-scrollbar-track{
+
+::-webkit-scrollbar-track {
     background: #eee;
 }
-::-webkit-scrollbar-thumb{
+
+::-webkit-scrollbar-thumb {
     background: #409eff;
-    border-radius:100px;
+    border-radius: 100px;
 }
-::-webkit-scrollbar-thumb:hover{
+
+::-webkit-scrollbar-thumb:hover {
     background: #409eff;
 }
-::-webkit-scrollbar-corner{
+
+::-webkit-scrollbar-corner {
     background: #409eff;
 }
 
@@ -23,7 +27,7 @@
 .box_div {
     background: #F4F8FF;
 }
- 
+
 .subpage_Div {
     border: 1px solid #dcdfe6;
 }
@@ -33,7 +37,10 @@
 }
 
 .el-tree {
-    background: transparent;
+    background: transparent !important;
+}
+.el-tree {
+    background: transparent !important;
 }
 
 .el-tree-node.is-current>.el-tree-node__content {
@@ -44,4 +51,17 @@
 .el-tree-node__content :hover {
 
     background-color: transparent !important;
+}
+
+.el-pager li {
+
+    background: transparent;
+}
+
+.btn-prev {
+    background: transparent !important;
+}
+
+.btn-next {
+    background: transparent !important;
 }
\ No newline at end of file
diff --git a/src/assets/css/content.css b/src/assets/css/content.css
index 4883579..e3e18d9 100644
--- a/src/assets/css/content.css
+++ b/src/assets/css/content.css
@@ -183,9 +183,7 @@
 .infoBox .contentBox {
     margin: 0 aotu 10px;
     overflow: auto;
-    height: 500px;
-    background-color: white;
-
+    height: 90%;
 }
 
 .infoBox p {
diff --git a/src/components/navMenu.vue b/src/components/navMenu.vue
index 1c83a75..347341b 100644
--- a/src/components/navMenu.vue
+++ b/src/components/navMenu.vue
@@ -51,17 +51,22 @@
           </div>
 
         </div>
-        <div
-          @click="switchLang"
-          class="userLanguage"
-        >
+        <div class="userLanguage">
           <div class="userImage user2"></div>
           <div class="TextLanguage">
             <el-link
+              @click="switchLang"
               :underline="false"
               class="elLink"
             >{{$t("common.language")}}</el-link>
           </div>
+          <!-- <div class="TextLanguage">
+            <el-link
+              @click="themeChange"
+              :underline="false"
+              class="elLink"
+            > 涓婚鍒囨崲</el-link>
+          </div> -->
         </div>
 
       </div>
@@ -78,6 +83,7 @@
 import colorChange from '../views/maintenance/colorChange.vue';
 import { containsCoordinate } from 'ol/extent';
 import Vue from 'vue';
+import $ from 'jquery'
 export default {
   name: 'navMenu',
   //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
@@ -87,6 +93,7 @@
   },
   data() {
     return {
+
       themeColor: true,
       oriData: [], //鍘熷鏍戞暟鎹�
       dirData: [], //el鏍戞暟鎹�
@@ -109,7 +116,8 @@
       changeSelectdiv: false,
       listMenu: [],
       showFlag: null,
-      language: true
+      language: true,
+
     };
   },
   created() { },
@@ -118,6 +126,16 @@
   },
   computed: {},
   methods: {
+    themeChange() {
+          this.$store.state.themeflag = !this.$store.state.themeflag;
+      if (this.$store.state.themeflag == true) {
+        $("#app").addClass("Black_theme");
+
+      } else {
+        $("#app").removeClass("Black_theme");
+      }
+
+    },
     async getCookies() {
       var boolean = this.getTimeCookies();
       if (boolean != true) {
@@ -128,11 +146,11 @@
         const data = await getPerms();
         this.$store.state.permsEntity = data.result;
       }
- 
+
       this.$store.state.uname = JSON.parse(
         localStorage.getItem('LFToken')
       ).uname;
-        this.$store.state.unid = JSON.parse(
+      this.$store.state.unid = JSON.parse(
         localStorage.getItem('LFToken')
       ).userid;
       this.$router.push('/');
@@ -238,7 +256,7 @@
         res[i].show = false; //鎺у埗鏄鹃殣
         if (res[i].perms == null) {
           const result = await selectMenuRecursive({ id: res[i].id });
-
+ 
           if (result.code == 200) {
             res[i].children = result.result.filter((value) => {
               return value.pid == res[i].id;
@@ -356,6 +374,5 @@
   },
 };
 </script>
-<style lang="less" scoped>
-
-</style>
+ 
+ 
\ No newline at end of file
diff --git a/src/main.js b/src/main.js
index f6f7305..f977b1b 100644
--- a/src/main.js
+++ b/src/main.js
@@ -14,6 +14,7 @@
 import '@/assets/css/index.css'
 import '@/assets/css/content.css'
 import '@/assets/css/configure.css'
+import '@/assets/css/config.css'
 Vue.prototype.$echarts = echarts;
 import * as echarts from 'echarts';
 Vue.use(ElementUI, { locale });
diff --git a/src/store/index.js b/src/store/index.js
index 1a9853d..d49aa1c 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -52,6 +52,7 @@
     pipelineEntity: [],
     reporturl: null,
     layerMnage: false,
+    themeflag:false,
   },
   mutations: {
     //鑾峰彇鏉冮檺鍚堥泦
diff --git a/src/views/AuthorizationManagement/roleMenuAuthorization.vue b/src/views/AuthorizationManagement/roleMenuAuthorization.vue
index cc0d6ff..e2b163e 100644
--- a/src/views/AuthorizationManagement/roleMenuAuthorization.vue
+++ b/src/views/AuthorizationManagement/roleMenuAuthorization.vue
@@ -45,7 +45,6 @@
           style="width: 100%"
           @row-click="singleElection"
           highlight-current-row
-   
         >
           <el-table-column
             align="center"
@@ -533,8 +532,8 @@
       padding: 10px;
       width: 30%;
       height: 94%;
- overflow-y: auto;
- overflow-x: hidden;
+      overflow-y: auto;
+      overflow-x: hidden;
       border-radius: 5px;
     }
   }
diff --git a/src/views/datamanage/SpatialData.vue b/src/views/datamanage/SpatialData.vue
index 09bee04..6f6be2a 100644
--- a/src/views/datamanage/SpatialData.vue
+++ b/src/views/datamanage/SpatialData.vue
@@ -392,6 +392,7 @@
           tabDesc: '鍩虹鏁版嵁',
           label: '鍩虹鏁版嵁',
           value: 'BD',
+          ns: 'bd',
           id: 1,
           children: [],
         },
@@ -400,12 +401,14 @@
           tabDesc: '涓氬姟鏁版嵁',
           label: '涓氬姟鏁版嵁',
           value: 'BS',
+          ns: 'bs',
           children: [],
         }, {
           id: 3,
           tabDesc: '鍏冩暟鎹�',
           label: '鍏冩暟鎹�',
           value: 'MD',
+          ns: 'md',
           children: [],
         },
       ],
@@ -614,12 +617,17 @@
         // val_Data.label = val_Data.tabDesc + "(" + val_Data.tab + ")"
         val_Data.label = val_Data.tabDesc
         option[i].id = parseInt(option[i].id)
-        if (option[i].ns == 'bd') {
-
-          this.tree[0].children.push(val_Data);
-        } else {
-          this.tree[1].children.push(val_Data);
+        for (var j in this.tree) {
+          if (this.tree[j].ns == option[i].ns) {
+            this.tree[j].children.push(val_Data);
+          }
         }
+        // if (option[i].ns == 'bd') {
+
+        //   this.tree[0].children.push(val_Data);
+        // } else {
+        //   this.tree[1].children.push(val_Data);
+        // }
       }
       this.handleNodeClick(this.tree[0].children[0])
     },
@@ -1116,6 +1124,5 @@
       overflow-y: auto;
     }
   }
- 
 }
 </style>
diff --git a/src/views/datamanage/catalogueManage.vue b/src/views/datamanage/catalogueManage.vue
index 1a79c33..8804a46 100644
--- a/src/views/datamanage/catalogueManage.vue
+++ b/src/views/datamanage/catalogueManage.vue
@@ -30,46 +30,84 @@
           }}</el-breadcrumb-item>
           </el-breadcrumb>
           <div>
-            <el-button
-              v-if="menuStatus.update"
-              :disabled="itemdetail.pid == null ? true : false"
-              @click="setEditNode(1)"
-              type="info"
-              icon="el-icon-top"
-              size="small"
-            >鍚戜笂绉诲姩</el-button>
-            <el-button
-              v-if="menuStatus.update"
-              :disabled="itemdetail.pid == null ? true : false"
-              @click="setEditNode(2)"
-              type="info"
-              icon="el-icon-bottom"
-              size="small"
-            >鍚戜笅绉诲姩</el-button>
-            <el-button
-              v-if="menuStatus.insert"
-              :disabled="itemdetail.pid == null ? true : false"
-              @click="setNewNode(1)"
-              type="success"
-              icon="el-icon-plus"
-              size="small"
-            >鏂板鍚岀骇</el-button>
-            <el-button
-              v-if="menuStatus.insert"
-              :disabled="itemdetail.pid == null ? true : false"
-              @click="setNewNode(2)"
-              type="success"
-              icon="el-icon-plus"
-              size="small"
-            >鏂板瀛愮骇</el-button>
-            <el-button
-              v-if="menuStatus.delete"
-              @click="setDelNode()"
-              :disabled="itemdetail.pid == null ? true : false"
-              type="danger"
-              icon="el-icon-delete"
-              size="small"
-            >鍒犻櫎</el-button>
+
+            <div class="menuTop">
+              <el-form
+                :inline="true"
+                class="demo-form-inline"
+              >
+                <el-form-item>
+
+                  <el-upload
+                    action
+                    accept=".xlsx, .xls"
+                    :auto-upload="false"
+                    :show-file-list="false"
+                    :on-change="handleChange"
+                    :file-list="fileList"
+                  >
+                    <el-button
+                      type="info"
+                      icon="el-icon-plus"
+                      size="small"
+                    >涓婁紶鏂囦欢</el-button>
+                  </el-upload>
+
+                </el-form-item>
+                <el-form-item>
+                  <el-button
+                    v-if="menuStatus.update"
+                    :disabled="itemdetail.pid == null ? true : false"
+                    @click="setEditNode(1)"
+                    type="info"
+                    icon="el-icon-top"
+                    size="small"
+                  >鍚戜笂绉诲姩</el-button>
+                </el-form-item>
+                <el-form-item>
+                  <el-button
+                    v-if="menuStatus.update"
+                    :disabled="itemdetail.pid == null ? true : false"
+                    @click="setEditNode(2)"
+                    type="info"
+                    icon="el-icon-bottom"
+                    size="small"
+                  >鍚戜笅绉诲姩</el-button>
+                </el-form-item>
+                <el-form-item>
+                  <el-button
+                    v-if="menuStatus.insert"
+                    :disabled="itemdetail.pid == null ? true : false"
+                    @click="setNewNode(1)"
+                    type="success"
+                    icon="el-icon-plus"
+                    size="small"
+                  >鏂板鍚岀骇</el-button>
+                </el-form-item>
+                <el-form-item>
+                  <el-button
+                    v-if="menuStatus.insert"
+                    :disabled="itemdetail.pid == null ? true : false"
+                    @click="setNewNode(2)"
+                    type="success"
+                    icon="el-icon-plus"
+                    size="small"
+                  >鏂板瀛愮骇</el-button>
+                </el-form-item>
+                <el-form-item>
+                  <el-button
+                    v-if="menuStatus.delete"
+                    @click="setDelNode()"
+                    :disabled="itemdetail.pid == null ? true : false"
+                    type="danger"
+                    icon="el-icon-delete"
+                    size="small"
+                  >鍒犻櫎</el-button>
+                </el-form-item>
+
+              </el-form>
+            </div>
+
           </div>
         </div>
         <el-divider />
@@ -207,7 +245,9 @@
   deleteDir,
   getPerms,
 } from '../../api/api';
+import * as XSLX from 'xlsx';
 import MyBread from '../../components/MyBread.vue';
+import clone from '@turf/clone';
 export default {
   name: 'catalogueManage',
   components: {
@@ -256,9 +296,129 @@
       },
       newNode: null,
       expandData: [],
+      fileList: [],
+      file: null,
+      tableData: [],
     };
   },
   methods: {
+    handleChange(file, fileList) {
+      this.file = file;
+      if (fileList.length > 0) {
+        this.fileList = [fileList[fileList.length - 1]]; //杩欎竴姝ワ紝鏄� 灞曠ず鏈�鍚庝竴娆¢�夋嫨鏂囦欢;
+        this.handle();
+      }
+    },
+    async handle() {
+      let file = this.file?.raw;
+      if (!this.file) {
+        console.log("鏂囦欢鎵撳紑澶辫触");
+        return;
+      } else {
+        const reader = new FileReader();
+        let that = this;
+        reader.readAsArrayBuffer(file);
+        reader.onload = function () {
+          const buffer = reader.result;
+          const bytes = new Uint8Array(buffer);
+          const length = bytes.byteLength;
+          let binary = "";
+          for (let i = 0; i < length; i++) {
+            binary += String.fromCharCode(bytes[i]);
+          }
+          const XLSX = require("xlsx");
+          const wb = XLSX.read(binary, {
+            type: "binary"
+          });
+          const outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]], { defval: null }); // 榛樿绗竴琛屼笅涓虹┖涔熻兘瑙f瀽鍑虹涓�鍥涜
+          var data = [...outdata];
+          const arr = [];
+          data.map(v => {
+            const obj = {};
+            obj.name = v.name;
+            obj.pname = v.pname;
+            obj.descr = v.explain;
+            obj.bak = v.bak;
+            obj.orderNum = null;
+            obj.pid = null;
+            arr.push(obj);
+          });
+          that.tableData = arr
+          that.setInsertData(that.tableData)
+        }
+      }
+    },
+    setInsertData(res) {
+      var list = this.excelData(res);
+
+      if (list.length != 0) {
+        if (list[0].pname != null) {
+          return this.$message.error('涓婁紶鏁版嵁閿欒锛岀涓�鏉℃暟鎹笉涓虹┖');
+        }
+
+        this.getAllNodeId(list)
+      }
+    },
+    async getAllNodeId(res) {
+      for (let i = 0; i < res.length; i++) {
+
+        var val = res[i];
+
+        if (val.pname == null) {
+          val.orderNum = this.dirList[this.dirList.length - 1].orderNum + 1;
+          val.pid = 0;
+        } else {
+          this.tableData.filter((child) => {
+            if (child.name == val.pname) {
+
+              val.pid = child.id;
+              val.orderNum = i + 1;
+            }
+          })
+        }
+
+        const data = await insertDir(val);
+        if (data.code != 200) {
+
+        }
+        this.tableData.filter((child) => {
+          if (child.name == val.name && child.pname == val.pname) {
+            child.id = data.result;
+          }
+        })
+        this.itemaName = data.result;
+        this.getDirTree();
+
+
+
+        if (res[i].children) {
+          this.getAllNodeId(res[i].children)
+        }
+      }
+    },
+    excelData(source) {
+      let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕
+      return cloneData.filter((father) => {
+        // 寰幆鎵�鏈夐」
+        let branchArr = cloneData.filter((child) => father.name == child.pname); // 瀵规瘮ID锛屽垎鍒笂涓嬬骇鑿滃崟锛屽苟杩斿洖鏁版嵁
+
+        branchArr.length > 0 ? (father.children = branchArr) : ''; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊�
+        // 灞炰簬鍚屼竴瀵硅薄闂锛屼緥濡傦細浠� a=b銆乧=1 锛岀劧鍚庡啀浠� b.c=c 锛� 閭d箞 a.c=b.c=c=1 锛涘悓鐞嗭紝鍚庣画浠� c.d=2 ,閭d箞 a.c.d 涔熸槸=2锛�
+        // 鐢辨寰幆澶氭鍚庯紝灏辫兘褰㈡垚鐩稿簲鐨勬爲褰㈡暟鎹粨鏋�
+        return father.pname == null; // 杩斿洖涓�绾ц彍鍗�
+      });
+    },
+    readFile(file) {
+      //鏂囦欢璇诲彇
+      return new Promise(resolve => {
+        let reader = new FileReader();
+        reader.readAsBinaryString(file); //浠ヤ簩杩涘埗鐨勬柟寮忚鍙�
+        reader.onload = ev => {
+          resolve(ev.target.result);
+        };
+      });
+    },
+
     // 璇锋眰鐩綍鏍�
     getDirTree() {
       //鑾峰彇鐩綍鏍戞渶澶D锛屾柊寤鸿妭鐐逛娇鐢�
@@ -461,8 +621,8 @@
       });
     },
     remove(node, data) {
-      this.itemaName =node.parent.data.id;
- 
+      this.itemaName = node.parent.data.id;
+
       this.$confirm('姝ゆ搷浣滃皢鍒犻櫎璇ヨ妭鐐�, 鏄惁缁х画?', '鎻愮ず', {
         confirmButtonText: '纭畾',
         cancelButtonText: '鍙栨秷',
@@ -505,7 +665,6 @@
               this.$message.error('鍒犻櫎澶辫触');
               this.itemdetail = {};
             });
-
           //閲嶇疆瑕佸垹闄ょ殑瀛怚D
           this.delChildIDs = [];
         })
@@ -673,7 +832,7 @@
       }
       for (var i = 0; i < permsEntity.length; i++) {
         if (val === permsEntity[i].perms) {
-          console.log(i, permsEntity[i])
+
           this.showPermsMenu(permsEntity[i]);
         }
       }
@@ -708,6 +867,11 @@
       height: 91%;
       border-radius: 5px;
       padding: 1%;
+      .menuTop {
+        /deep/ .el-form-item {
+          margin-bottom: 0px;
+        }
+      }
     }
   }
 }
diff --git a/src/views/datamanage/dataUpdata.vue b/src/views/datamanage/dataUpdata.vue
index 286df8e..bd3467a 100644
--- a/src/views/datamanage/dataUpdata.vue
+++ b/src/views/datamanage/dataUpdata.vue
@@ -30,6 +30,8 @@
                 :disabled="tableData.length == 0 ? false : true"
                 v-model="formInline.uploadType"
                 @change="uploadTypeChange"
+
+                :popper-append-to-body="false"
                 placeholder="璇烽�夋嫨"
               >
                 <el-option
@@ -950,16 +952,20 @@
       :close-on-click-modal="false"
       title="涓婁紶杩涘害"
       :visible.sync="jindudialogVisible"
-      width="30%">
+      width="30%"
+    >
       <div>
         <div>
           鏂囦欢浼犺緭杩涘害锛�
         </div>
         <div>
-          <el-progress :percentage="jindutiao" :format="format"></el-progress>
+          <el-progress
+            :percentage="jindutiao"
+            :format="format"
+          ></el-progress>
         </div>
       </div>
-      
+
     </el-dialog>
   </div>
 </template>
@@ -1807,24 +1813,24 @@
           this.$message.error('鏁版嵁涓婁紶澶辫触');
         },
         xhr: function () {
-            var myXhr = $.ajaxSettings.xhr();
-            if (myXhr.upload) { //妫�鏌pload灞炴�ф槸鍚﹀瓨鍦�
-                myXhr.upload.addEventListener('progress', that.progressHandlingFunction, false); //缁戝畾progress浜嬩欢鐨勫洖璋冨嚱鏁�
-            }
-            return myXhr; //xhr瀵硅薄杩斿洖缁檍Query浣跨敤
+          var myXhr = $.ajaxSettings.xhr();
+          if (myXhr.upload) { //妫�鏌pload灞炴�ф槸鍚﹀瓨鍦�
+            myXhr.upload.addEventListener('progress', that.progressHandlingFunction, false); //缁戝畾progress浜嬩欢鐨勫洖璋冨嚱鏁�
+          }
+          return myXhr; //xhr瀵硅薄杩斿洖缁檍Query浣跨敤
         }
       });
     },
-      progressHandlingFunction(event) {
-        var loaded = event.loaded;//宸蹭笂浼�
-        var loaded = Math.floor(100 * (event.loaded / event.total) - 1); //璁$畻宸茬粡涓婁紶鐨勭櫨鍒嗘瘮
-        $("#prog").html(loaded + "%"); //搴旂敤鍒版樉绀篣I锛屽彲鏍规嵁鑷繁闇�瑕佷慨鏀�
-        this.jindutiao = loaded
-        this.$set(this, 'jindutiao', loaded)
-      },
-      format(percentage) {
-        return percentage === 100 ? '涓婁紶瀹屾瘯' : `${percentage}%`;
-      },
+    progressHandlingFunction(event) {
+      var loaded = event.loaded;//宸蹭笂浼�
+      var loaded = Math.floor(100 * (event.loaded / event.total) - 1); //璁$畻宸茬粡涓婁紶鐨勭櫨鍒嗘瘮
+      $("#prog").html(loaded + "%"); //搴旂敤鍒版樉绀篣I锛屽彲鏍规嵁鑷繁闇�瑕佷慨鏀�
+      this.jindutiao = loaded
+      this.$set(this, 'jindutiao', loaded)
+    },
+    format(percentage) {
+      return percentage === 100 ? '涓婁紶瀹屾瘯' : `${percentage}%`;
+    },
     //鑾峰彇鏂囦欢涓婁紶璺緞
     async getFilePath() {
       const res = await dataUploadSelectPath();
@@ -2248,3 +2254,4 @@
   }
 };
 </script>
+ 
\ No newline at end of file
diff --git a/src/views/datamanage/styleDirTree.vue b/src/views/datamanage/styleDirTree.vue
index 573ac76..89ea89e 100644
--- a/src/views/datamanage/styleDirTree.vue
+++ b/src/views/datamanage/styleDirTree.vue
@@ -318,37 +318,7 @@
     height: 94%;
     overflow: auto;
 
-    .el-tree {
-      background: transparent;
-      font-size: 15px;
-      font-family: Microsoft YaHei;
-      font-weight: 400;
-      color: #000000;
-
-      // /deep/ .el-tree-node__label {
-      //   font-size: 18px;
-      // }
-      /deep/ .el-tree-node {
-        padding-top: 10px;
-        // padding-bottom: 10px;
-      }
-
-      /deep/ .el-tree-node:focus > .el-tree-node__content {
-        background-color: #b9b9b9;
-      }
-
-      /deep/ .el-tree-node__content:hover {
-        background-color: rgb(153, 153, 153);
-      }
-
-      .btnBox {
-        margin-left: 5px;
-
-        .el-button + .el-button {
-          margin-left: 5px;
-        }
-      }
-    }
+    
   }
 }
 </style>
diff --git a/src/views/maintenance/menuSettings.vue b/src/views/maintenance/menuSettings.vue
index 8a477e2..30cd4ce 100644
--- a/src/views/maintenance/menuSettings.vue
+++ b/src/views/maintenance/menuSettings.vue
@@ -121,6 +121,7 @@
             >
               <el-select
                 style="width: 400px"
+                :popper-append-to-body="false"
                 v-model="itemdetail.isShow"
                 placeholder=""
               >
@@ -158,6 +159,7 @@
             >
               <el-select
                 style="width: 400px"
+                :popper-append-to-body="false"
                 v-model="itemdetail.type"
                 :placeholder="$t('common.choose')"
               >
@@ -246,6 +248,8 @@
           :label-width="formLabelWidth"
         >
           <el-select
+            :popper-append-to-body="false"
+            style="width:100%"
             v-model="ruleForm.isShow"
             placeholder=""
           >
@@ -282,6 +286,8 @@
           :label-width="formLabelWidth"
         >
           <el-select
+            :popper-append-to-body="false"
+            style="width:100%"
             v-model="ruleForm.type"
             :placeholder="$t('common.choose')"
           >
diff --git a/src/views/maintenance/mochaitmo.vue b/src/views/maintenance/mochaitmo.vue
index a393c28..d312f21 100644
--- a/src/views/maintenance/mochaitmo.vue
+++ b/src/views/maintenance/mochaitmo.vue
@@ -117,8 +117,53 @@
   created() { },
   mounted() {
     this.getTreeData();
+    //宸﹀彸鎷栧嫊
+    this.dragControllerDiv();
   },
   methods: {
+    //宸﹀彸鎷栧嫊
+    dragControllerDiv: function () {
+      var resize = document.getElementsByClassName('resize');
+      var left = document.getElementsByClassName('left');
+      var mid = document.getElementsByClassName('mid');
+      var box = document.getElementsByClassName('box');
+      for (let i = 0; i < resize.length; i++) {
+        // 榧犳爣鎸変笅浜嬩欢
+        resize[i].onmousedown = function (e) {
+          //棰滆壊鏀瑰彉鎻愰啋
+          resize[i].style.background = '#818181';
+          var startX = e.clientX;
+          resize[i].left = resize[i].offsetLeft;
+          // 榧犳爣鎷栧姩浜嬩欢
+          document.onmousemove = function (e) {
+            var endX = e.clientX;
+            var moveLen = resize[i].left + (endX - startX); // 锛坋ndx-startx锛�=绉诲姩鐨勮窛绂汇�俽esize[i].left+绉诲姩鐨勮窛绂�=宸﹁竟鍖哄煙鏈�鍚庣殑瀹藉害
+            var maxT = box[i].clientWidth - resize[i].offsetWidth; // 瀹瑰櫒瀹藉害 - 宸﹁竟鍖哄煙鐨勫搴� = 鍙宠竟鍖哄煙鐨勫搴�
+
+            if (moveLen < 205) moveLen = 205; // 宸﹁竟鍖哄煙鐨勬渶灏忓搴︿负32px
+            if (moveLen > maxT - 300) moveLen = maxT - 300; //鍙宠竟鍖哄煙鏈�灏忓搴︿负150px
+
+            resize[i].style.left = moveLen; // 璁剧疆宸︿晶鍖哄煙鐨勫搴�
+
+            for (let j = 0; j < left.length; j++) {
+              left[j].style.width = moveLen + 'px';
+              mid[j].style.width = (box[i].clientWidth - moveLen - 10) + 'px';
+            }
+          };
+          // 榧犳爣鏉惧紑浜嬩欢
+          document.onmouseup = function (evt) {
+            //棰滆壊鎭㈠
+            resize[i].style.background = '#d6d6d6';
+            document.onmousemove = null;
+            document.onmouseup = null;
+            resize[i].releaseCapture && resize[i].releaseCapture(); //褰撲綘涓嶅湪闇�瑕佺户缁幏寰楅紶鏍囨秷鎭氨瑕佸簲璇ヨ皟鐢≧eleaseCapture()閲婃斁鎺�
+          };
+          resize[i].setCapture && resize[i].setCapture(); //璇ュ嚱鏁板湪灞炰簬褰撳墠绾跨▼鐨勬寚瀹氱獥鍙i噷璁剧疆榧犳爣鎹曡幏
+          return false;
+        };
+      }
+    },
+
     async getCookies() {
       var boolean = this.getTimeCookies();
       if (boolean != true) {
diff --git a/src/views/userManage/resourceManage.vue b/src/views/userManage/resourceManage.vue
index 8965229..9a09cad 100644
--- a/src/views/userManage/resourceManage.vue
+++ b/src/views/userManage/resourceManage.vue
@@ -144,93 +144,93 @@
       class="infoBox box_div "
       v-show="showinfoBox"
     >
-      <el-card class="box-card">
+
+      <div
+        slot="header"
+        class="clearfix"
+      >
+        <span>{{ $t('dataManage.styleObj.deInformation') }}</span>
         <div
-          slot="header"
-          class="clearfix"
+          style="float: right; cursor: pointer"
+          @click="closeDetial"
         >
-          <span>{{ $t('dataManage.styleObj.deInformation') }}</span>
-          <div
-            style="float: right; cursor: pointer"
-            @click="closeDetial"
-          >
-            <i class="el-icon-close"></i>
-          </div>
+          <i class="el-icon-close"></i>
         </div>
+      </div>
+      <el-divider></el-divider>
+      <div class="contentBox">
+        <p>
+          <label> {{ $t('userManage.resManageObj.name') }}:</label>
+          <label class="boxlabel">{{ itemdetail.name }}</label>
+        </p>
         <el-divider></el-divider>
-        <div class="contentBox">
-          <p>
-            <label> {{ $t('userManage.resManageObj.name') }}:</label>
-            <label class="boxlabel">{{ itemdetail.name }}</label>
-          </p>
-          <el-divider></el-divider>
-          <p>
-          <p>
-            <label> {{ $t('userManage.resManageObj.server') }}:</label>
-            <label class="boxlabel">{{ itemdetail.server }}</label>
-          </p>
-          </p>
-          <el-divider></el-divider>
-          <p>
-            <label> {{ $t('userManage.resManageObj.source') }}:</label>
-            <label class="boxlabel">{{ itemdetail.source }}</label>
-          </p>
-          <el-divider></el-divider>
-          <p>
-            <label> {{ $t('userManage.resManageObj.depid') }}:</label>
-            <label class="boxlabel">{{ itemdetail.depName }}</label>
-          </p>
-          <el-divider></el-divider>
-          <p>
-            <label> {{ $t('userManage.resManageObj.dirid') }}:</label>
-            <label class="boxlabel">{{ itemdetail.dirName }}</label>
-          </p>
-          <el-divider></el-divider>
-          <p>
-            <label> {{ $t('userManage.resManageObj.descr') }}:</label>
-            <label class="boxlabel">{{ itemdetail.descr }}</label>
-          </p>
-          <el-divider></el-divider>
-          <p>
-            <label> {{ $t('userManage.resManageObj.img') }}:</label>
-            <label class="boxlabel">
-              <div style="width:440px;height:200px;">
-                <img
-                  style="width:100%; height:100%"
-                  :src="itemdetail.imageFile"
-                  alt=""
-                />
-              </div>
-            </label>
-          </p>
-          <el-divider></el-divider>
-          <p>
-            <label> {{ $t('userManage.resManageObj.createUser') }}:</label>
-            <label class="boxlabel">{{ itemdetail.createUser }}</label>
-          </p>
-          <el-divider></el-divider>
-          <p>
-            <label> {{ $t('userManage.resManageObj.createTime') }}:</label>
-            <label class="boxlabel">{{ itemdetail.createTime }}</label>
-          </p>
-          <el-divider></el-divider>
-          <p>
-            <label> {{ $t('userManage.resManageObj.updateUser') }}:</label>
-            <label class="boxlabel">{{ itemdetail.updateUser }}</label>
-          </p>
-          <el-divider></el-divider>
-          <p>
-            <label> {{ $t('userManage.resManageObj.updateTime') }}:</label>
-            <label class="boxlabel">{{ itemdetail.updateTime }}</label>
-          </p>
-          <el-divider></el-divider>
-          <p>
-            <label> {{ $t('userManage.resManageObj.bak') }}:</label>
-            <label class="boxlabel">{{ itemdetail.bak }}</label>
-          </p>
-          <el-divider></el-divider>
-        </div>
-      </el-card>
+        <p>
+        <p>
+          <label> {{ $t('userManage.resManageObj.server') }}:</label>
+          <label class="boxlabel">{{ itemdetail.server }}</label>
+        </p>
+        </p>
+        <el-divider></el-divider>
+        <p>
+          <label> {{ $t('userManage.resManageObj.source') }}:</label>
+          <label class="boxlabel">{{ itemdetail.source }}</label>
+        </p>
+        <el-divider></el-divider>
+        <p>
+          <label> {{ $t('userManage.resManageObj.depid') }}:</label>
+          <label class="boxlabel">{{ itemdetail.depName }}</label>
+        </p>
+        <el-divider></el-divider>
+        <p>
+          <label> {{ $t('userManage.resManageObj.dirid') }}:</label>
+          <label class="boxlabel">{{ itemdetail.dirName }}</label>
+        </p>
+        <el-divider></el-divider>
+        <p>
+          <label> {{ $t('userManage.resManageObj.descr') }}:</label>
+          <label class="boxlabel">{{ itemdetail.descr }}</label>
+        </p>
+        <el-divider></el-divider>
+        <p>
+          <label> {{ $t('userManage.resManageObj.img') }}:</label>
+          <label class="boxlabel">
+            <div style="width:440px;height:200px;">
+              <img
+                style="width:100%; height:100%"
+                :src="itemdetail.imageFile"
+                alt=""
+              />
+            </div>
+          </label>
+        </p>
+        <el-divider></el-divider>
+        <p>
+          <label> {{ $t('userManage.resManageObj.createUser') }}:</label>
+          <label class="boxlabel">{{ itemdetail.createUser }}</label>
+        </p>
+        <el-divider></el-divider>
+        <p>
+          <label> {{ $t('userManage.resManageObj.createTime') }}:</label>
+          <label class="boxlabel">{{ itemdetail.createTime }}</label>
+        </p>
+        <el-divider></el-divider>
+        <p>
+          <label> {{ $t('userManage.resManageObj.updateUser') }}:</label>
+          <label class="boxlabel">{{ itemdetail.updateUser }}</label>
+        </p>
+        <el-divider></el-divider>
+        <p>
+          <label> {{ $t('userManage.resManageObj.updateTime') }}:</label>
+          <label class="boxlabel">{{ itemdetail.updateTime }}</label>
+        </p>
+        <el-divider></el-divider>
+        <p>
+          <label> {{ $t('userManage.resManageObj.bak') }}:</label>
+          <label class="boxlabel">{{ itemdetail.bak }}</label>
+        </p>
+        <el-divider></el-divider>
+      </div>
+
     </div>
     <el-dialog
       :title="dialogTitle"
@@ -894,16 +894,16 @@
   height: 98%;
   width: 98%;
   padding: 1%;
- 
+
   .el-input {
     width: 730px;
   }
- 
+
   .power_quire {
     padding: 10px;
 
     border-radius: 5px;
-    
+
     margin-bottom: 10px;
     .el-form-item {
       margin: 5px;
@@ -912,8 +912,7 @@
       width: 467px;
     }
   }
- 
- 
+
   .leftTree {
     position: absolute;
     z-index: 10;
@@ -922,19 +921,18 @@
     left: 800px;
     width: 400px;
     height: 600px;
-  
+
     .treeBox {
       height: 550px;
       overflow: auto;
-    
     }
     .btnBox {
       width: 160px;
       margin: 10px auto 0;
       // background-color: red;
     }
+   
   }
- 
  
 }
 </style>

--
Gitblit v1.9.3