From 6f07da9344da3c3a2c099c33c3e98fb9e247fdeb Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期三, 09 八月 2023 15:48:43 +0800
Subject: [PATCH] 项目管理修改批量上传功能

---
 src/views/datamanage/catalogueManage.vue |  180 ++++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 162 insertions(+), 18 deletions(-)

diff --git a/src/views/datamanage/catalogueManage.vue b/src/views/datamanage/catalogueManage.vue
index b591f71..a6a4fe1 100644
--- a/src/views/datamanage/catalogueManage.vue
+++ b/src/views/datamanage/catalogueManage.vue
@@ -21,8 +21,19 @@
             :expand-on-click-node="false"
             :default-expanded-keys="expandData"
             @node-click="handleNodeClick"
+            @node-contextmenu="openTreeMenu"
           >
           </el-tree>
+          <div
+            class="right_menu box_divm"
+            id="menu"
+            v-show="showRightMenu"
+          >
+            <ul>
+              <li @click="setMenuDataCopy">澶嶅埗</li>
+              <li @click="setMenuDataPaste">绮樿创</li>
+            </ul>
+          </div>
         </div>
       </div>
       <div class="cataLog_rightContent right subpage_Div">
@@ -53,7 +64,7 @@
                     type="info"
                     size="small"
                     @click="setDirectoryDownload"
-                  >{{ $t("shuJuGuanLi.butten.directoryDownload") }}</el-button>
+                  >{{ $t("shuJuGuanLi.butten.folderDownload") }}</el-button>
                 </el-form-item>
                 <el-form-item>
 
@@ -77,7 +88,7 @@
                       type="success"
                       icon="el-icon-plus"
                       size="small"
-                    >{{ $t("shuJuGuanLi.butten.uploadFile") }}</el-button>
+                    >{{ $t("shuJuGuanLi.butten.uploads") }}</el-button>
                   </el-upload>
                 </el-form-item>
                 <el-form-item>
@@ -399,11 +410,32 @@
         >{{ $t("common.preservation") }}</el-button>
       </div>
     </el-dialog>
+
     <iframe
       id="Iframe1"
       src=""
       style="display: none; border: 0; padding: 0; height: 0; width: 0"
     ></iframe>
+    <div
+      class="loadBox"
+      v-if="loadDialogVisible"
+    >
+      <div style="widht:100%; margin:20px; color:white">
+        <div style="margin-left:99%">
+          <!-- <el-link
+            @click="setloadDialogVisible()"
+            style="color:white"
+          > X</el-link> -->
+        </div>
+      </div>
+      <div
+        v-loading="true"
+        element-loading-background="rgba(0, 0, 0, 0.0) "
+        element-loading-text="鐩綍涓婁紶涓�,璇风瓑寰�..."
+        style="margin: 0px 20px;widht:100%;height:calc(100% - 80px); "
+      >
+      </div>
+    </div>
   </div>
 </template>
 
@@ -525,9 +557,83 @@
 
       ],
       currentData: null,
+      showRightMenu: false,
+      checksData: null,
+      checksCopyData: null,
+      loadDialogVisible: false
     };
   },
   methods: {
+    // 澶嶅埗
+    setMenuDataCopy() {
+      this.checksCopyData = this.checksData;
+    },
+    //绮樿创
+    setMenuDataPaste() {
+      if (!this.checksCopyData) {
+        return this.$message('鏈�変腑瑕佸鍒剁殑鑺傜偣');
+      }
+      var val = this.$refs.tree.getNode(this.checksCopyData).data;
+
+      var level = this.$refs.tree.getNode(this.checksData).data.level + 1;
+      this.setInsertCopyData([val], this.checksData, level);
+    },
+    setInsertCopyData(val, pid, level) {
+      for (var i in val) {
+        var data = val[i];
+        var pchildNodes = [];
+
+        if (this.$refs.tree.getNode(pid) && this.$refs.tree.getNode(pid).childNodes) {
+          pchildNodes = this.$refs.tree.getNode(pid).childNodes
+        }
+        var orderNum = this.getMaxOrderNum(pchildNodes);
+        var obj = {
+          bak: data.bak,
+          level: level,
+          orderNum: orderNum + 1,
+          pid: pid,
+          checks: data.checks,
+          name: data.name,
+          descr: data.descr,
+          exts: data.exts,
+        }
+        insertDir(obj).then((res) => {
+          if (res.code == 200) {
+            this.getDirTree();
+            if (data.children && data.children.length > 0) {
+
+              this.setInsertCopyData(data.children, res.result, level + 1)
+            }
+          }
+        })
+      }
+    },
+
+
+
+
+
+    handleNodeClick(data, node) {
+      this.showRightMenu = false;
+      document.removeEventListener('click', this.closeRightMenu)
+      this.layerFormInline(data)
+
+    },
+    //鍙抽敭鑿滃崟
+    openTreeMenu(event, data, node, obj) {
+      this.showRightMenu = true;
+      let menu = document.getElementById('menu')
+      menu.style.left = event.clientX + 20 + 'px'
+      menu.style.top = event.clientY + 'px'
+      document.addEventListener('click', this.closeRightMenu)
+      this.checksData = data.id;
+      console.log(this.checksData)
+    },
+    closeRightMenu() {
+      this.showRightMenu = false;
+      document.removeEventListener('click', this.closeRightMenu)
+
+    },
     setTemplateDownload() {
       var url = window.location.href;
       var testurl = window.location.origin + "/";
@@ -594,9 +700,8 @@
       }
 
       this.tableData = arr;
+
       this.setInsertData(this.tableData);
-
-
     },
     getNameAndPname(res, result, flag) {
       var chLevel = null;
@@ -622,26 +727,22 @@
       }
     },
     setInsertData(res) {
-
       var list = this.excelData(res);
-
       if (list.length != 0) {
         if (list[0].pname != null) {
           return this.$message.error("涓婁紶鏁版嵁閿欒锛岀涓�鏉℃暟鎹笉涓虹┖");
         }
-
         this.getAllNodeId(res);
       }
     },
     async getAllNodeId(res) {
+      this.loadDialogVisible = true;
       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.tid == val.sid) {
               val.pid = child.id;
@@ -652,6 +753,9 @@
 
         const data = await insertDir(val);
         if (data.code != 200) {
+          this.$message.error("鐩綍涓婁紶澶辫触" + data.msg);
+          this.loadDialogVisible = false;
+          break;
         }
 
         this.tableData.filter((child) => {
@@ -661,12 +765,15 @@
           }
         });
         this.itemaName = data.result;
-        this.getDirTree();
+        // this.getDirTree();
 
         // if (res[i].children) {
         //   this.getAllNodeId(res[i].children);
         // }
       }
+      this.getDirTree();
+      this.loadDialogVisible = false;
+
     },
     excelData(source) {
       let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕
@@ -713,7 +820,7 @@
         var rs = JSON.parse(this.currentData);
         cdata = this.$refs.tree.getNode(rs.id).data;
       } else {
-        cdata = this.dirList[0]
+        cdata = this.dirList[this.dirList.length - 1]
       }
       this.$nextTick(() => {
         this.expandData = [cdata.id];
@@ -1137,7 +1244,7 @@
       var val = this.$refs.tree.getNode(data.id).data;
       this.itemdetail = val;
       this.currentData = JSON.stringify(data)
-      debugger
+
       var checks = [];
       if (val.checks) {
         if (val.checks.indexOf(',') > -1) {
@@ -1156,12 +1263,7 @@
       }
     },
 
-    handleNodeClick(data, node) {
-      this.layerFormInline(data)
-      // console.log(data);
 
-
-    },
     async updCata(formName) {
       this.fullscreenLoading = true;
       var val = JSON.parse(JSON.stringify(this.itemdetail));
@@ -1191,7 +1293,7 @@
       //       var val = this.itemdetail
       //       var value = this.itemdetail.checks.toString()
       //       val.checks = value;
-      //       debugger
+      //       
       //       let res = JSON.parse(JSON.stringify(this.itemdetail));
       //       this.itemdetail = res;
       //       
@@ -1341,6 +1443,48 @@
       }
     }
   }
+  .right_menu {
+    position: fixed;
+    display: block;
+    z-index: 10000;
+    padding: 10px;
+    border: 1px solid #ebeef5;
+    border-radius: 4px;
+    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+    ul {
+      width: 100%;
+      height: 100%;
+      list-style: none;
+      margin: 0;
+      padding: 0;
+      border-radius: 2%;
+      li {
+        margin: 0 0 1px 0;
+        color: rgb(77, 77, 73);
+        text-align: center;
+        font-size: 14px;
+        padding: 4%;
+        width: 100%;
+        height: 9.7%;
+        float: left;
+      }
+      li:hover {
+        color: #409eff !important;
+      }
+    }
+  }
+}
+.loadBox {
+  z-index: 2002;
+  background: rgba(0, 0, 0, 0.2);
+  width: 100%;
+  height: 100%;
+  top: 0;
+  left: 0;
+  position: absolute;
+  .el-loading-mask {
+    background: transparent !important;
+  }
 }
 .btnBox {
   position: absolute;

--
Gitblit v1.9.3