From 44a3abe105e9b9b4d1a7173772fc9d18c9b59529 Mon Sep 17 00:00:00 2001
From: heyujie <516346543@qq.com>
Date: 星期六, 18 九月 2021 16:24:02 +0800
Subject: [PATCH] 应用中心ui改动

---
 src/components/subComponents/FileUpload/index.vue |  173 +++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 117 insertions(+), 56 deletions(-)

diff --git a/src/components/subComponents/FileUpload/index.vue b/src/components/subComponents/FileUpload/index.vue
index 796d99f..2068da8 100644
--- a/src/components/subComponents/FileUpload/index.vue
+++ b/src/components/subComponents/FileUpload/index.vue
@@ -9,12 +9,46 @@
       @file-added="onFileAdded"
       @complete="onComplete"
     >
-      <el-input :placeholder="uploadPlaceholder" size="small" :readonly="true" v-model="fileName">
+      <!-- <uploader-drop v-if="isDrag == true">
+        <div class="drag-txt">鎷栨嫿鏂囦欢鍒拌繖閲�</div>
+        <span class="icon iconfont" @click.stop="showUpload = false"
+          >&#xe70b;</span
+        >
+        <uploader-btn>閫夋嫨鏂囦欢</uploader-btn>
+      </uploader-drop> -->
+
+      <div class="up-bar" v-if="isDrag == true">
+        <div class="name">{{ fileName || uploadPlaceholder }}</div>
         <uploader-btn slot="suffix">
           <el-tooltip :content="tipWords" placement="top" v-if="tip">
-            <i class="el-icon-upload2" style="font-size:18px; color:#0088ff"></i>
+            <div class="open-file-btn">
+              <span class="icon iconfont">&#xe712;</span>
+            </div>
           </el-tooltip>
-          <i v-else class="el-icon-upload2" style="font-size:18px; color:#0088ff"></i>
+        </uploader-btn>
+        <!-- <div class="open-file-btn">
+          <span class="icon iconfont">&#xe712;</span>
+        </div> -->
+      </div>
+      <el-input
+        :placeholder="uploadPlaceholder"
+        v-if="isDrag == false"
+        size="small"
+        :readonly="true"
+        v-model="fileName"
+      >
+        <uploader-btn slot="suffix">
+          <el-tooltip :content="tipWords" placement="top" v-if="tip">
+            <i
+              class="el-icon-upload2"
+              style="font-size: 18px; color: #0088ff"
+            ></i>
+          </el-tooltip>
+          <i
+            v-else
+            class="el-icon-upload2"
+            style="font-size: 18px; color: #0088ff"
+          ></i>
         </uploader-btn>
       </el-input>
       <uploader-list />
@@ -32,7 +66,7 @@
       @close="closeHandle"
     >
       <uploader-btn ref="button" :sourceType="sourceType">
-        <i class="el-icon-upload2" style="font-size:18px; color:#0088ff"></i>
+        <i class="el-icon-upload2" style="font-size: 18px; color: #0088ff"></i>
         涓婁紶
       </uploader-btn>
       <uploader-list />
@@ -41,16 +75,18 @@
 </template>
 
 <script>
-import uploader from "./uploader"
-import SparkMD5 from 'spark-md5';
-import UploaderBtn from "./btn"
-import UploaderList from "./list"
+import uploader from "./uploader";
+import SparkMD5 from "spark-md5";
+import UploaderBtn from "./btn";
+import UploaderList from "./list";
+import UploaderDrop from "./drop";
 
 export default {
   components: {
     uploader,
     UploaderBtn,
-    UploaderList
+    UploaderList,
+    UploaderDrop,
   },
   props: {
     sourceType: {
@@ -58,48 +94,47 @@
     },
     tip: {
       type: Boolean,
-      default: false
+      default: false,
     },
     tipWords: {
       type: String,
-      default: ''
+      default: "",
     },
     single: {
       type: Boolean,
-      default: false
+      default: false,
     },
     uploadPlaceholder: {
       type: String,
-      default: ''
+      default: "",
+    },
+    isDrag: {
+      type: Boolean,
+      default: false,
     },
     url: {
       type: String,
-      default: "/data/api-f/file/upload" //"//192.168.20.10:3000/upload"
+      default: "/data/api-f/file/upload",
     },
     attrs: {
       type: Object,
-      default () {
-        return {
-
-        }
-      }
-    }
+      default() {
+        return {};
+      },
+    },
   },
   data() {
     return {
       fileName: "",
       fileMd5: "",
-      // attrs: {
-      //   accept: 'image/*'
-      // },
       statusText: {
-        success: '涓婁紶鎴愬姛',
-        error: '涓婁紶澶辫触',
-        uploading: '涓婁紶涓�',
-        paused: '鏆傚仠涓�',
-        waiting: '绛夊緟涓�'
-      }
-    }
+        success: "涓婁紶鎴愬姛",
+        error: "涓婁紶澶辫触",
+        uploading: "涓婁紶涓�",
+        paused: "鏆傚仠涓�",
+        waiting: "绛夊緟涓�",
+      },
+    };
   },
   computed: {
     uploader() {
@@ -110,32 +145,37 @@
         target: this.url,
         testChunks: true,
         headers: {
-          Authorization: sessionStorage.getItem('loginedInfo') && JSON.parse(sessionStorage.getItem('loginedInfo')).access_token
-        }
-      }
-    }
+          Authorization:
+            sessionStorage.getItem("loginedInfo") &&
+            JSON.parse(sessionStorage.getItem("loginedInfo")).access_token,
+        },
+      };
+    },
   },
   methods: {
     onFileAdded(file) {
       if (this.single) {
         this.uploader.fileList = this.uploader.fileList.slice([-1]);
-        this.$emit("file-added")
+        this.$emit("file-added");
       }
       this.computeMD5(file);
     },
     computeMD5(file) {
       let fileReader = new FileReader();
       let time = new Date().getTime();
-      let blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;
+      let blobSlice =
+        File.prototype.slice ||
+        File.prototype.mozSlice ||
+        File.prototype.webkitSlice;
       let currentChunk = 0;
       const chunkSize = 10 * 1024 * 1000;
       let chunks = Math.ceil(file.size / chunkSize);
       let spark = new SparkMD5.ArrayBuffer();
       // 鏂囦欢鐘舵�佽涓�"璁$畻MD5"
-      this.statusText.paused = "鍑嗗涓婁紶,姝e湪妫�鏌ユ枃浠�"
+      this.statusText.paused = "鍑嗗涓婁紶,姝e湪妫�鏌ユ枃浠�";
       file.pause();
       loadNext();
-      fileReader.onload = (e => {
+      fileReader.onload = (e) => {
         spark.append(e.target.result);
         if (currentChunk < chunks) {
           currentChunk++;
@@ -145,16 +185,16 @@
           this.computeMD5Success(md5, file);
           this.fileName = file.name;
           this.fileMd5 = md5;
-          // console.log(`MD5璁$畻瀹屾瘯锛�${file.name} \nMD5锛�${md5} \n鍒嗙墖锛�${chunks} 澶у皬:${file.size} 鐢ㄦ椂锛�${new Date().getTime() - time} ms`);
         }
-      });
+      };
       fileReader.onerror = function () {
-        this.error(`鏂囦欢${file.name}璇诲彇鍑洪敊锛岃妫�鏌ヨ鏂囦欢`)
+        this.error(`鏂囦欢${file.name}璇诲彇鍑洪敊锛岃妫�鏌ヨ鏂囦欢`);
         file.cancel();
       };
       function loadNext() {
         let start = currentChunk * chunkSize;
-        let end = ((start + chunkSize) >= file.size) ? file.size : start + chunkSize;
+        let end =
+          start + chunkSize >= file.size ? file.size : start + chunkSize;
         fileReader.readAsArrayBuffer(blobSlice.call(file.file, start, end));
       }
     },
@@ -163,32 +203,33 @@
       if (location.href.indexOf("dataStack") >= 0) {
         Object.assign(this.uploader.opts, {
           query: {
-            stackId: this.DataStackPool.selectedDir.id
+            stackId: this.DataStackPool.selectedDir.id,
             // ...this.params,
-          }
-        })
+          },
+        });
       }
       file.uniqueIdentifier = md5;
       file.resume();
       this.statusText.paused = "鏆傚仠涓�";
     },
     onComplete() {
-      this.$emit("complete", { filename: this.fileName, identifier: this.fileMd5 });
+      this.$emit("complete", {
+        filename: this.fileName,
+        identifier: this.fileMd5,
+      });
     },
-    fileComplete() {
-      // console.log('file complete', arguments)
-    },
+    fileComplete() {},
     closeHandle() {
-      this.$emit("close")
-    }
+      this.$emit("close");
+    },
   },
   mounted() {
+    this.isDrag;
     this.$nextTick(() => {
-      console.log(this.sourceType)
-      window.uploader = this.$refs.uploader.uploader
-    })
-  }
-}
+      window.uploader = this.$refs.uploader.uploader;
+    });
+  },
+};
 </script>
 
 <style lang="scss">
@@ -237,6 +278,26 @@
         display: none;
       }
     }
+
+    .up-bar {
+      height: 30px;
+      margin: 25px;
+      background: #f2f2f7;
+      border-radius: 2px;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      box-sizing: border-box;
+      padding: 0 20px;
+      .iconfont {
+        font-size: 16px;
+        color: #333;
+      }
+      .name {
+        color: #bdbdbd;
+        font-size: 14px;
+      }
+    }
   }
 }
 </style>>

--
Gitblit v1.8.0