From ba3f4338070b930bc2b5b50bcd483aba1a37d7b9 Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期一, 21 十一月 2022 20:37:07 +0800
Subject: [PATCH] 数据管理,界面修改,接口对接,功能开发

---
 src/views/datamanage/dataLoader.vue |  555 +++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 470 insertions(+), 85 deletions(-)

diff --git a/src/views/datamanage/dataLoader.vue b/src/views/datamanage/dataLoader.vue
index 7bbaadf..026ee29 100644
--- a/src/views/datamanage/dataLoader.vue
+++ b/src/views/datamanage/dataLoader.vue
@@ -14,7 +14,7 @@
         <el-form :inline="true" :model="formInline" class="demo-form-inline">
           <el-form-item :label="$t('dataManage.dataUpObj.catalogue')">
             <el-cascader
-              v-model="formInline.catalog"
+              v-model="formInline.dirid"
               :options="catalogOption"
               @change="catalogChange"
               :props="cascader"
@@ -22,15 +22,25 @@
           </el-form-item>
           <el-form-item :label="$t('dataManage.dataUpObj.company')">
             <el-cascader
-              v-model="formInline.company"
+              v-model="formInline.depid"
               :options="companyOption"
               @change="companyChange"
               :props="cascader"
             ></el-cascader>
           </el-form-item>
+          <el-form-item :label="$t('dataManage.dataUpObj.versionNo')">
+              <el-select v-model="formInline.verid" :placeholder="$t('common.choose')">
+              <el-option
+                v-for="item in verOption"
+                :key="item.id"
+                :label="item.name"
+                :value="item.id">
+              </el-option>
+              </el-select>
+          </el-form-item>
           <el-form-item :label="$t('dataManage.dataUpObj.entryTime')">
             <el-date-picker
-              v-model.trim="formInline.monitorTime"
+              v-model.trim="formInline.gather"
               :picker-options="pickerOptions"
               type="datetime"
               placeholder="璇烽�夋嫨"
@@ -38,7 +48,7 @@
             />
           </el-form-item>
           <el-form-item>
-            <input id="uploadfile" @change= "handleFileChange" type="file"  name="file" multiple="multiple"  style="display: none"></input>
+            <input id="uploadfile" @change= "handleFileChange" type="file"  name="file" multiple="multiple" accept=".xls,.xlsx,.mdb,.shp.zip,.gdb.zip"  style="display: none"></input>
             <el-button icon="el-icon-document-add" @click="fileSelect" class="primary">{{
               $t('common.file')
             }}</el-button>
@@ -47,17 +57,16 @@
           <el-form-item :label="$t('dataManage.dataUpObj.describe')">
             <el-input
               type="textarea"
-              v-model="formInline.desc"
+              v-model="formInline.descr"
               maxlength="50"
               class="nm-skin-pretty"
               show-word-limit
-:rows="2"  resize='none'
+              :rows="2"  resize='none'
               style="width: 460px"
             ></el-input>
           </el-form-item>
           <el-form-item>
             <el-button icon="el-icon-upload" @click="setFileUpload"
-
              type="success">{{
               $t('common.upload')
             }}</el-button>
@@ -85,7 +94,7 @@
      :data="tableData"
         border
         style="width: 100%"
-        height="92%"
+        height="99%"
         @selection-change="handleSelectionChange">
        <el-table-column type="selection" width="55" />
         <el-table-column
@@ -95,15 +104,15 @@
           width="70px"
           fixed
         />
-
-        <el-table-column
+          <el-table-column
           align="center"
           prop="name"
-          :label="$t('userManage.userInfoObj.uname')"
+          :label="$t('common.name')"
           fixed
         />
+
     </el-table>
-      <div style="margin-top: 10px" class="pagination_box">
+      <!-- <div style="margin-top: 10px" class="pagination_box">
     <el-pagination
           @size-change="handleSizeChange"
           @current-change="handleCurrentChange"
@@ -114,17 +123,67 @@
           :total="count"
         >
         </el-pagination>
-      </div>
+      </div> -->
       </div>
 
     </div>
+    <!--  -->
+   <el-dialog
+  :title="$t('dataManage.datawarehousing')"
+  :visible.sync="dialogWarehousing"
+  width="50%"
+  :before-close="handleWareClose"
+  >
+  <div  class="dialogBox">
+  <div class="transFarBox">
+    <ul>
+      <li @click="singleElection(item)" v-for="(item, i) in tableWareOne"  :class="{ active: activeName == item.tab }">{{item.tab}} ({{item.type}})</li>
+    </ul>
+  </div>
+  <div class="tarnsbtton">
+   <div><div style="padding:2%"> <el-link><i class="el-icon-plus"></i></el-link></div></div>
+
+
+  </div>
+  <div class="transFarBox">
+ <ul>
+      <li @click="singleElection2(item)" v-for="(item, i) in tableWareTwo"  :class="{ active: activeName2 == item.entity }">{{item.tabDesc}} (  {{item.tab}})</li>
+    </ul>
+  </div>
+   <div class="tarnsbtton">
+     <div><div style="padding:2%"> <el-link @click="setWareTableChangeLeft"  ><i class="el-icon-d-arrow-left"></i></el-link></div><br/> <div style="padding:2%">
+    <el-link><i class="el-icon-d-arrow-right" @click="setWareTableChangeRight"></i></el-link></div></div>
+   </div>
+   <div class="transFarBox">
+     <ul>
+      <li @click="singleElection3(i)" v-for="(item, i) in tableWareThree"  :class="{ active: activeName3 ==( item.tab+i)}">{{item.tab}} ( {{item.tabDesc}}:{{item.entity}} )</li>
+    </ul>
+   </div>
+  </div>
+  <span slot="footer" class="dialog-footer">
+        <el-button  class="primary" @click="autoMatchWare">鑷姩鍖归厤</el-button>
+    <el-button @click="dialogVisible = false">鍙� 娑�</el-button>
+    <el-button class="primary" @click="setInsrtWareTable">纭� 瀹�</el-button>
+  </span>
+</el-dialog>
   </div>
 </template>
 
 <script>
 import $ from 'jquery';
 import MyBread from '../../components/MyBread.vue';
-import { selectdirTab, queryDepTree } from '../../api/api';
+import { getToken } from '@/utils/auth';
+import {
+  dataLoader_selectDirAll,
+  dataLoader_selectDepAll,
+  dataLoader_selectPath,
+  dataLoader_selectVerByDirid,
+  dataLoader_selectFiles,
+  dataUploadDeleteFiles,
+  dataUploadInsertFiles,
+  dataLoader_selectMappers,
+  dataLoader_SelectTabs
+} from '../../api/api';
 export default {
   name: 'dataUpdata',
   components: {
@@ -132,15 +191,21 @@
   },
   data() {
     return {
+      wareStatus: false,
+      dialogWarehousing: false,
       btnStatus: 0,
       count: 0,
       formInline: {
-        monitorTime: '',
+        verid: '',
+        gather: '',
       },
+      tableWareOne: [],
+      tableWareTwo: [],
       catalogOption: [],
       companyOption: [],
       tableData: [],
-      listTable: [],
+      listTableWare: [],
+      tableWareThree: [],
       multipleSelection: [],
       fullscreenLoading: false,
       listData: {
@@ -153,6 +218,7 @@
         },
         selectableRange: '00:00:00 - 23:59:59',
       },
+      verOption: [],
       cascader: {
         label: 'name',
         value: 'id',
@@ -160,6 +226,13 @@
         checkStrictly: true,
         emitPath: false,
       },
+      wareSelectOne: null,
+      wareSelectTwo: null,
+      listWare: [],
+      activeName: '',
+      activeName2: '',
+      activeName3: '',
+      wareTableFlag: null,
     };
   },
 
@@ -168,9 +241,10 @@
     this.getQueryDepTree();
     this.timeDefault();
     this.getFilePath();
+
   },
   watch: {
-    'detailData.monitorTime': {
+    'detailData.gather': {
       handler(newValue, oldValue) {
         if (newValue) {
           let date = new Date();
@@ -184,7 +258,7 @@
           ) {
             let hh1 = moment(newValue).format('HH:mm:ss');
             if (hh1 > nowDate) {
-              this.detailData.monitorTime = new Date();
+              this.detailData.gather = new Date();
             }
             st = nowDate;
           } else {
@@ -200,58 +274,183 @@
   },
 
   methods: {
-    //鏂囦欢涓婁紶
-    setFileUpload() {
-      this.handlerLoading(true);
-      setTimeout(() => {
-        this.handlerLoading(false);
-      }, 2000);
+   async setInsrtWareTable(){
+      var obj = {
+                  metaEntity: this.formInline,
+                  fileEntities: this.tableWareThree
+                };
+                debugger
+            const res = await dataUploadInsertFiles(JSON.stringify(obj));
+             if (res.code != 200) {
+        this.$message.error('鏁版嵁鍏ュ簱澶辫触');
+        return;
+      }else{
+        debugger
+         this.$message({
+          message: '鏁版嵁鍏ュ簱鎴愬姛',
+          type: 'success'
+        });
+        this.dialogWarehousing = false;
+        this.getFileLength();
+        this.setClearAttartch();
+      }
 
-      this.getFileLength();
+    },
+    setClearAttartch(){
+       this.activeName = '';
+      this.activeName2 = '';
+      this.activeName3 = '';
+      this.tableWareThree =[];
+      this.tableWareTwo=[];
+      this.tableWareOne=[];
+    },
+    autoMatchWare() {
+      var val1 = this.tableWareOne;
+      var val2 = this.tableWareTwo;
+      var std = [];
+      for (var i = 0; i < val1.length; i++) {
+
+        const stdTab = this.setSplitWare(val1[i].tab)
+        for (var j = 0; j < val2.length; j++) {
+          if (val2[j].tab == stdTab) {
+            std.push(val1[i].tab)
+            val1[i].entity = val2[j].entity;
+            val1[i].tabDesc= val2[j].tabDesc;
+            this.tableWareThree.push(val1[i]);
+          }
+        }
+      }
+ std.forEach(item => {
+          this.tableWareOne = this.tableWareOne.filter(items => items.tab!== item);
+        });
+
+    },
+    setSplitWare(res) {
+      if (res.indexOf(".shp") != -1) {
+        return res.split(".shp").join("");
+      }else if (res.indexOf(".mdb") != -1){
+ return res.split(".mdb").join("");
+      }else if (res.indexOf(".gdb") != -1){
+ return res.split(".gdb").join("");
+      }else{
+        return res;
+      }
+    },
+    handleWareClose(done) {
+      this.$confirm('纭鍏抽棴锛�')
+        .then(_ => {
+          done();
+          this.setClearAttartch();
+        })
+        .catch(_ => { });
+    },
+    setWareTableChangeLeft() {
+      var res = this.wareTableFlag;
+      var value1 = this.tableWareThree[res];
+      value1.entity = null;
+        value1.tabDesc= null;
+      this.tableWareOne.push(value1);
+      this.tableWareThree.splice(res, 1)
+      this.activeName = '';
+      this.activeName2 = '';
+      this.activeName3 = '';
+    },
+    setWareTableChangeRight() {
+
+      this.wareSelectOne.entity = this.wareSelectTwo.entity;
+          this.wareSelectOne.tabDesc = this.wareSelectTwo.tabDesc;
+
+      this.tableWareThree.push(this.wareSelectOne)
+
+      this.tableWareOne.forEach((value, index, array) => {
+        if (value.tab == this.wareSelectOne.tab) {
+          this.tableWareOne.splice(index, 1)
+        }
+
+      })
+   this.activeName = '';
+      this.activeName2 = '';
+      this.activeName3 = '';
+    },
+    singleElection(row) {
+      this.wareSelectOne = row;
+      this.activeName = row.tab
+
+    },
+    singleElection2(row) {
+      this.wareSelectTwo = row;
+      this.activeName2 = row.entity
+
+    },
+    singleElection3(res) {
+
+      this.wareTableFlag = res;
+      this.activeName3 = this.tableWareThree[res].tab + res;
+
+    },
+
+    //鏌ヨ鎵�鏈夌殑琛�
+    async getDataLoaderSelectTabs() {
+      const res = await dataLoader_SelectTabs();
+      if (res.code != 200) {
+        this.$message.error('鏁版嵁璇锋眰澶辫触');
+        return;
+      }
+      this.tableWareTwo = res.result;
+    },
+    //鏌ヨ鏄犲皠
+    async getDataLoaderSelectMappers(res) {
+      const data = await dataLoader_selectMappers(res);
+
+      if (data.code != 200) {
+        this.$message.error('鏁版嵁璇锋眰澶辫触');
+        return;
+      }
+      debugger
+      this.tableWareOne = data.result;
     },
     //鏁版嵁鍒犻櫎
-    setFileDelete() {
+    async setFileDelete() {
       this.handlerLoading(true);
-
-
-
-      this.multipleSelection.forEach(item => {
-        this.listTable = this.listTable.filter((items) => {
-
-          if (items.name != item.name && item.id != items.id) {
-            return items;
-          }
-
-        });
-      });
-      this.listData.pageIndex= 1;
-      this.listData.pageSize = 10;
-      this.count = this.listTable.length;
-      this.setViewTable();
+      var data = JSON.stringify(this.multipleSelection);
+      const res = await dataUploadDeleteFiles(data);
+      if (res.code != 200) {
+        this.$message.error('鍒犻櫎澶辫触');
+        return;
+      }
       this.getFileLength();
+
+
+
       this.handlerLoading(false);
     },
     //鏁版嵁鍏ュ簱
-    setFileWare() {
-      this.handlerLoading(true);
-      setTimeout(() => {
-        this.handlerLoading(false);
-      }, 2000);
-      this.getFilePath();
+    async setFileWare() {
+      this.tableWareThree = [];
+      this.listTableWare = [];
+      this.getDataLoaderSelectTabs();
+      this.getDataLoaderSelectMappers(this.formInline.path);
+      this.dialogWarehousing = true;
+      //     if(this.multipleSelection.length==0){
+      //      this.$message.error('璇烽�夋嫨瑕佸叆搴撶殑鏁版嵁');
+      //       return
+      //     }
+      //       var obj = {
+      //             metaEntity: this.formInline,
+      //             fileEntities: this.multipleSelection
+      //           };
+
+      //       const res = await dataUploadInsertFiles(JSON.stringify(obj));
+
+      //        if (res.code != 200) {
+      //       this.$message.error('鏂囦欢鍏ュ簱澶辫触');
+      //       return;
+      //     }
+
+      //
+
     },
-    //鑾峰彇鏂囦欢涓婁紶璺緞
-    getFilePath() {
-      for (var i = 0; i < 20; i++) {
-        this.listTable.push({
-          id: i,
-          name: 'value' + i
-        })
-      }
-      this.count = this.listTable.length;
-      this.listData.pageIndex = 1;
-      this.listData.pageSize = 10;
-      this.setViewTable();
-    },
+
     //鏄剧ず琛ㄦ牸鏁版嵁
     setViewTable() {
       var index = this.listData.pageIndex - 1;
@@ -262,20 +461,71 @@
         if (this.listTable[i] != null) {
           std.push(this.listTable[i])
         }
-
       }
-
       this.tableData = std;
     },
-    //鑾峰彇鏂囦欢涓婁紶鏁版嵁
-    getFileLength() {
+    //鏂囦欢涓婁紶
+    setFileUpload() {
+      this.handlerLoading(true);
+      var token = getToken();
+      var formData = new FormData();
 
+
+      var fs = document.getElementById("uploadfile");
+      for (var i = 0, c = fs.files.length; i < c; i++) {
+        formData.append(fs.files[i].name, fs.files[i]); // fs.files[i].name,file
+      }
+
+
+      $.ajax(BASE_URL + "/dataLoader/uploadFiles?token=" + token + "&path=" + this.formInline.path, {
+        type: "post",
+        data: formData,
+        async: true,
+        cache: false,
+        processData: false,
+        contentType: false,
+        success: (rs) => {
+
+          this.getFileLength();
+
+          alert("code = " + rs.code + ", msg = " + rs.msg + ", result = " + rs.result);
+
+        },
+        error: (rs) => {
+          alert("涓婁紶鏂囦欢澶辫触锛�");
+        }
+      });
+
+      this.handlerLoading(false);
+    },
+    //鑾峰彇鏂囦欢涓婁紶鏁版嵁
+    async getFileLength() {
+      const res = await dataLoader_selectFiles(this.formInline.path);
+      if (res.code != 200) {
+        this.$message.error('鏂囦欢涓婁紶鏁版嵁鑾峰彇澶辫触');
+        return;
+      }
+
+      if (res.result == null) {
+        this.count = 0;
+        this.setClearTableData();
+      } else {
+        this.count = res.result.length;
+        this.tableData = res.result;
+      }
+
+
+      // this.listData.pageIndex = 1;
+      // this.listData.pageSize = 10;
+      // this.setViewTable();
     },
     //娓呴櫎琛ㄦ牸淇℃伅
     setClearTableData() {
       this.tableData = [];
       this.listTable = [];
     },
+
+
     //鍒嗛〉鎺у埗
     handleSizeChange(res) {
       this.listData.pageIndex = 1;
@@ -295,13 +545,8 @@
       $("#uploadfile").click();
     },
     handleFileChange() {
-      var val = document.getElementById("uploadfile").files;
-      if (!val || !val.length) return;
-      var formData = new FormData();
-      for (var i = 0; i < val.length; i++) {
-        formData.append(val[i].name, val[i]);
-      }
-      console.log(formData)
+      var fs = document.getElementById("uploadfile");
+
     },
     //褰撳墠鏃堕棿鑾峰彇
     timeDefault() {
@@ -322,7 +567,7 @@
         minutes +
         sign2 +
         seconds;
-      this.formInline.monitorTime = s1;
+      this.formInline.gather = s1;
     },
 
     //Loading鏄鹃殣
@@ -331,32 +576,57 @@
     },
     //鐩綍鍒囨崲
     catalogChange(value) {
-      this.formInline.catalog = value;
+      this.formInline.dirid = value;
+      this.getselectVerByDirid();
     },
     //鍗曚綅鍒囨崲
     companyChange(value) {
-      this.formInline.company = value;
+      this.formInline.depid = value;
     },
-
-    //鍗曚綅鍒楄〃鑾峰彇
-    async getQueryDepTree() {
-      const res = await queryDepTree();
+    //鑾峰彇鏂囦欢涓婁紶璺緞
+    async getFilePath() {
+      const res = await dataLoader_selectPath();
       if (res.code != 200) {
         this.$message.error('鍗曚綅鍒楄〃鑾峰彇澶辫触');
         return;
       }
-      this.formInline.company = 1;
+      this.formInline.path = res.result;
+    },
+    //鍗曚綅鍒楄〃鑾峰彇
+    async getQueryDepTree() {
+      const res = await dataLoader_selectDepAll();
+      if (res.code != 200) {
+        this.$message.error('鍗曚綅鍒楄〃鑾峰彇澶辫触');
+        return;
+      }
+      this.formInline.depid = 1;
       this.companyOption = this.treeData(res.result);
     },
+    //鐗堟湰鍙疯幏鍙�
+    async getselectVerByDirid() {
+      this.verOption = [];
+      this.formInline.verid = "";
+      const res = await dataLoader_selectVerByDirid(this.formInline.dirid);
+
+      if (res.code != 200) {
+        this.$message.error('鐗堟湰鍒楄〃鑾峰彇澶辫触');
+        return;
+      }
+      this.verOption = res.result;
+      this.formInline.verid = res.result[0].id;
+    },
+
+
     //鐩綍鍒楄〃鑾峰彇
     async getSelectdirTab() {
-      const res = await selectdirTab();
+      const res = await dataLoader_selectDirAll();
       if (res.code != 200) {
         this.$message.error('鐩綍鍒楄〃鑾峰彇澶辫触');
         return;
       }
-      this.formInline.catalog = 1;
+      this.formInline.dirid = 1;
       this.catalogOption = this.treeData(res.result);
+      this.getselectVerByDirid()
     },
     //鏍戝垪琛ㄧ敓鎴�
     treeData(source) {
@@ -485,11 +755,11 @@
         /deep/.btn-next {
           background: transparent;
         }
-         /deep/.btn-next i {
-          color:white;
+        /deep/.btn-next i {
+          color: white;
         }
         /deep/.btn-prev i {
-          color:white;
+          color: white;
         }
       }
     }
@@ -530,5 +800,120 @@
   /deep/.el-loading-spinner i {
     color: #1890ff !important;
   }
+  /deep/ .el-dialog {
+    background: #303030;
+  }
+  /deep/.el-range-editor.is-active,
+  .el-range-editor.is-active:hover,
+  .el-select .el-input.is-focus .el-input__inner {
+    border: 1px solid;
+  }
+  /deep/.el-dialog__title {
+    color: white;
+  }
+  .dialogBox {
+    width: 100%;
+    height: 500px;
+    display: flex;
+    justify-content: space-between;
+    .transFarBox {
+      width: 30%;
+      height: 100%;
+      border: 1px solid white;
+      border-radius: 5px;
+      max-height: 500px;
+      overflow-y: auto;
+      li {
+        color: white;
+        border-bottom: 1px solid white;
+        line-height: 30px;
+        text-align: center;
+      }
+      li:hover {
+        background: rgba(255, 255, 255, 0.3);
+      }
+      .active {
+        color: #409eff;
+      }
+    }
+    .tarnsbtton {
+      width: 6%;
+      height: 100%;
+
+      /*flex 甯冨眬*/
+      display: flex;
+      /*瀹炵幇鍨傜洿灞呬腑*/
+      align-items: center;
+      /*瀹炵幇姘村钩灞呬腑*/
+      justify-content: center;
+    }
+  }
+  .el-icon-d-arrow-right {
+    color: white;
+  }
+  .el-icon-d-arrow-left {
+    color: #fff;
+  }
+  .el-icon-plus {
+    color: white;
+  }
+  /*淇敼table 琛ㄤ綋鐨勮儗鏅鑹插拰鏂囧瓧棰滆壊*/
+  /deep/ .el-table {
+    background-color: transparent;
+
+    th,
+    td {
+      background-color: transparent;
+    }
+    .el-table__expanded-cell {
+      background-color: transparent !important;
+    }
+
+    // 琛ㄥご鑳屾櫙鑹�
+    th.el-table__cell {
+      background-color: #303030 !important;
+      color: #fff;
+    }
+    tr > td {
+      background-color: #303030 !important;
+      color: #fff;
+    }
+
+    // hover鏁堟灉
+    tr:hover > td {
+      background-color: rgba(255, 255, 255, 0.3) !important;
+    }
+
+    tbody tr:hover {
+      background-color: rgba(255, 255, 255, 0.3) !important;
+      // text-align: center;
+    }
+
+    // 婊氬姩鏉″楂�
+    .el-table__body-wrapper::-webkit-scrollbar {
+      width: 5px;
+      height: 5px;
+    }
+
+    .el-table__body-wrapper::-webkit-scrollbar {
+      width: 5px;
+      /*婊氬姩鏉″搴�*/
+      height: 5px;
+      /*婊氬姩鏉¢珮搴�*/
+    }
+    /*瀹氫箟婊氬姩鏉¤建閬� 鍐呴槾褰�+鍦嗚*/
+    .el-table__body-wrapper::-webkit-scrollbar-track {
+      box-shadow: 0px 1px 3px #216fe6 inset;
+      /*婊氬姩鏉$殑鑳屾櫙鍖哄煙鐨勫唴闃村奖*/
+      border-radius: 10px;
+    }
+
+    /*瀹氫箟婊戝潡 鍐呴槾褰�+鍦嗚*/
+    .el-table__body-wrapper::-webkit-scrollbar-thumb {
+      box-shadow: 0px 1px 3px #216fe6 inset;
+      border-radius: 6px;
+      background-color: #216fe6;
+    }
+  }
 }
 </style>

--
Gitblit v1.9.3