From 8e40a69fcfe8bc799fee141fec953a2b0892dbd4 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期一, 09 十月 2023 15:54:26 +0800
Subject: [PATCH] 修改wifi扫描的交互

---
 src/pages/ai/FileUpload/index.vue |  608 +++++++++++++++++++++++++++---------------------------
 1 files changed, 306 insertions(+), 302 deletions(-)

diff --git a/src/pages/ai/FileUpload/index.vue b/src/pages/ai/FileUpload/index.vue
index 2a8ccf2..a7b8311 100644
--- a/src/pages/ai/FileUpload/index.vue
+++ b/src/pages/ai/FileUpload/index.vue
@@ -1,302 +1,306 @@
-<template>
-  <div class="file-uploader">
-    <uploader
-      v-if="single"
-      ref="uploader"
-      :options="options"
-      :file-status-text="statusText"
-      class="uploader-single"
-      @file-added="onFileAdded"
-      @complete="onComplete"
-    >
-      <!-- <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">
-            <div class="open-file-btn">
-              <span class="icon iconfont">&#xe712;</span>
-            </div>
-          </el-tooltip>
-        </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 />
-    </uploader>
-
-    <uploader
-      v-else
-      ref="uploader"
-      :options="options"
-      :file-status-text="statusText"
-      class="uploader-example"
-      @file-added="onFileAdded"
-      @file-complete="fileComplete"
-      @complete="onComplete"
-      @close="closeHandle"
-    >
-      <uploader-btn ref="button" :sourceType="sourceType">
-        <i class="el-icon-upload2" style="font-size: 18px; color: #0088ff"></i>
-        涓婁紶
-      </uploader-btn>
-      <uploader-list />
-    </uploader>
-  </div>
-</template>
-
-<script>
-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,
-    UploaderDrop,
-  },
-  props: {
-    sourceType: {
-      type: Number,
-    },
-    tip: {
-      type: Boolean,
-      default: false,
-    },
-    tipWords: {
-      type: String,
-      default: "",
-    },
-    single: {
-      type: Boolean,
-      default: false,
-    },
-    uploadPlaceholder: {
-      type: String,
-      default: "",
-    },
-    isDrag: {
-      type: Boolean,
-      default: false,
-    },
-    url: {
-      type: String,
-      default: "/data/api-f/file/upload",
-    },
-    attrs: {
-      type: Object,
-      default() {
-        return {};
-      },
-    },
-  },
-  data() {
-    return {
-      fileName: "",
-      fileMd5: "",
-      statusText: {
-        success: "涓婁紶鎴愬姛",
-        error: "涓婁紶澶辫触",
-        uploading: "涓婁紶涓�",
-        paused: "鏆傚仠涓�",
-        waiting: "绛夊緟涓�",
-      },
-    };
-  },
-  computed: {
-    uploader() {
-      return this.$refs.uploader.uploader;
-    },
-    options() {
-      return {
-        target: this.url,
-        testChunks: true,
-        headers: {
-          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.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 currentChunk = 0;
-      const chunkSize = 10 * 1024 * 1000;
-      let chunks = Math.ceil(file.size / chunkSize);
-      let spark = new SparkMD5.ArrayBuffer();
-      // 鏂囦欢鐘舵�佽涓�"璁$畻MD5"
-      this.statusText.paused = "鍑嗗涓婁紶,姝e湪妫�鏌ユ枃浠�";
-      file.pause();
-      loadNext();
-      fileReader.onload = (e) => {
-        spark.append(e.target.result);
-        if (currentChunk < chunks) {
-          currentChunk++;
-          loadNext();
-        } else {
-          let md5 = spark.end();
-          this.computeMD5Success(md5, file);
-          this.fileName = file.name;
-          this.fileMd5 = md5;
-        }
-      };
-      fileReader.onerror = function () {
-        this.error(`鏂囦欢${file.name}璇诲彇鍑洪敊锛岃妫�鏌ヨ鏂囦欢`);
-        file.cancel();
-      };
-      function loadNext() {
-        let start = currentChunk * chunkSize;
-        let end =
-          start + chunkSize >= file.size ? file.size : start + chunkSize;
-        fileReader.readAsArrayBuffer(blobSlice.call(file.file, start, end));
-      }
-    },
-    computeMD5Success(md5, file) {
-      //灏嗚嚜瀹氫箟鍙傛暟鐩存帴鍔犺浇uploader瀹炰緥鐨刼pts涓�
-      if (location.href.indexOf("dataStack") >= 0) {
-        Object.assign(this.uploader.opts, {
-          query: {
-            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,
-      });
-    },
-    fileComplete() {},
-    closeHandle() {
-      this.$emit("close");
-    },
-  },
-  mounted() {
-    this.isDrag;
-    this.$nextTick(() => {
-      window.uploader = this.$refs.uploader.uploader;
-    });
-  },
-};
-</script>
-
-<style lang="scss">
-.file-uploader {
-  .el-input__suffix,
-  .el-input__suffix-inner {
-    outline: none !important;
-  }
-  .el-tooltip.focusing {
-    outline: none;
-  }
-  .uploader-example {
-    width: 99%;
-    // padding: 15px;
-    // margin: 40px auto 0;
-    font-size: 12px;
-    // box-shadow: 0 0 10px rgba(0, 0, 0, 0.4);
-    background-color: #fff;
-  }
-  .uploader-example .uploader-btn {
-    position: relative;
-    display: none;
-    // float: right;
-    // top: -45px;
-  }
-  .uploader-example .uploader-list {
-    max-height: 440px;
-    overflow: auto;
-    overflow-x: hidden;
-    overflow-y: auto;
-  }
-  .uploader-single {
-    position: unset;
-    .close {
-      display: none;
-    }
-    .uploader-btn {
-      border: 0px;
-    }
-    .uploader-file {
-      // height: 2px;
-      .uploader-file-progress {
-        // background: #3d68e1;
-      }
-      .uploader-file-info {
-        // display: none;
-      }
-    }
-
-    .up-bar {
-      height: 30px;
-      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>>
+<template>
+  <div class="file-uploader">
+    <uploader
+      v-if="single"
+      ref="uploader"
+      :options="options"
+      :file-status-text="statusText"
+      class="uploader-single"
+      :sourceType="sourceType"
+      @file-added="onFileAdded"
+      @complete="onComplete"
+    >
+      <div class="up-bar" v-if="isDrag == true">
+        <div class="name">{{ fileName || uploadPlaceholder }}</div>
+        <uploader-btn slot="suffix" :attrs="attrs">
+          <el-tooltip :content="tipWords" placement="top" v-if="tip">
+            <div class="open-file-btn">
+              <span class="icon iconfont">&#xe712;</span>
+            </div>
+          </el-tooltip>
+        </uploader-btn>
+      </div>
+      <el-input
+        :placeholder="uploadPlaceholder"
+        v-if="isDrag == false"
+        size="small"
+        :readonly="true"
+        v-model="fileName"
+      >
+        <uploader-btn slot="suffix" :attrs="attrs">
+          <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 />
+    </uploader>
+
+    <uploader
+      v-else
+      ref="uploader"
+      :options="options"
+      :file-status-text="statusText"
+      class="uploader-example"
+      @file-added="onFileAdded"
+      @file-complete="fileComplete"
+      @complete="onComplete"
+      @close="closeHandle"
+    >
+      <uploader-btn ref="button" :sourceType="sourceType">
+        <i class="el-icon-upload2" style="font-size: 18px; color: #0088ff"></i>
+        涓婁紶
+      </uploader-btn>
+      <uploader-list />
+    </uploader>
+  </div>
+</template>
+
+<script>
+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,
+    UploaderDrop,
+  },
+  props: {
+    sourceType: {
+      type: Number,
+    },
+    tip: {
+      type: Boolean,
+      default: false,
+    },
+    tipWords: {
+      type: String,
+      default: "",
+    },
+    single: {
+      type: Boolean,
+      default: false,
+    },
+    uploadPlaceholder: {
+      type: String,
+      default: "",
+    },
+    isDrag: {
+      type: Boolean,
+      default: false,
+    },
+    url: {
+      type: String,
+      default: "/data/api-f/file/upload",
+    },
+    attrs: {
+      type: Object,
+      default() {
+        return {};
+      },
+    },
+  },
+  data() {
+    return {
+      fileName: "",shouldStop:false,
+      fileMd5: "",
+      statusText: {
+        success: "涓婁紶鎴愬姛",
+        error: "涓婁紶澶辫触",
+        uploading: "涓婁紶涓�",
+        paused: "鏆傚仠涓�",
+        waiting: "绛夊緟涓�",
+      },
+    };
+  },
+  computed: {
+    uploader() {
+      return this.$refs.uploader.uploader;
+    },
+    options() {
+      return {
+        target: this.url,
+        testChunks: true,
+        headers: {
+          Authorization:
+            sessionStorage.getItem("loginedInfo") &&
+            JSON.parse(sessionStorage.getItem("loginedInfo")).access_token,
+        },
+      };
+    },
+  },
+  methods: {
+    onFileAdded(file) {
+      // if (this.sourceType == 3) {
+      //   if (
+      //     !file.name.endsWith(".tar") ||
+      //     !file.name.endsWith(".gz") ||
+      //     !file.name.endsWith(".tar.gz")
+      //   ) {
+      //     this.shouldStop = true
+      //     this.$notify.warning("浠呮敮鎸�.tar/.gz/.tar.gz涓夌鏍煎紡鏂囦欢");
+      //     return
+      //   }
+      // }
+      if (this.single) {
+        this.uploader.fileList = this.uploader.fileList.slice([-1]);
+        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 currentChunk = 0;
+      const chunkSize = 10 * 1024 * 1000;
+      let chunks = Math.ceil(file.size / chunkSize);
+      let spark = new SparkMD5.ArrayBuffer();
+      // 鏂囦欢鐘舵�佽涓�"璁$畻MD5"
+      this.statusText.paused = "鍑嗗涓婁紶,姝e湪妫�鏌ユ枃浠�";
+      file.pause();
+      loadNext();
+      fileReader.onload = (e) => {
+        spark.append(e.target.result);
+        if (currentChunk < chunks) {
+          currentChunk++;
+          loadNext();
+        } else {
+          let md5 = spark.end();
+          this.computeMD5Success(md5, file);
+          this.fileName = file.name;
+          this.fileMd5 = md5;
+        }
+      };
+      fileReader.onerror = function () {
+        this.error(`鏂囦欢${file.name}璇诲彇鍑洪敊锛岃妫�鏌ヨ鏂囦欢`);
+        file.cancel();
+      };
+      function loadNext() {
+        let start = currentChunk * chunkSize;
+        let end =
+          start + chunkSize >= file.size ? file.size : start + chunkSize;
+        fileReader.readAsArrayBuffer(blobSlice.call(file.file, start, end));
+      }
+    },
+    computeMD5Success(md5, file) {
+      //灏嗚嚜瀹氫箟鍙傛暟鐩存帴鍔犺浇uploader瀹炰緥鐨刼pts涓�
+      if (location.href.indexOf("dataStack") >= 0) {
+        Object.assign(this.uploader.opts, {
+          query: {
+            stackId: this.DataStackPool.selectedDir.id,
+            // ...this.params,
+          },
+        });
+      }
+      file.uniqueIdentifier = md5;
+      file.resume();
+      this.statusText.paused = "鏆傚仠涓�";
+    },
+    onComplete() {
+      if (this.shouldStop) {
+        return
+      }
+      this.$emit("complete", {
+        filename: this.fileName,
+        identifier: this.fileMd5,
+      });
+    },
+    fileComplete() {},
+    closeHandle() {
+      this.$emit("close");
+    },
+  },
+  mounted() {
+    this.isDrag;
+    this.$nextTick(() => {
+      window.uploader = this.$refs.uploader.uploader;
+    });
+  },
+};
+</script>
+
+<style lang="scss">
+.file-uploader {
+  .el-input__suffix,
+  .el-input__suffix-inner {
+    outline: none !important;
+  }
+  .el-tooltip.focusing {
+    outline: none;
+  }
+  .uploader-example {
+    width: 99%;
+    // padding: 15px;
+    // margin: 40px auto 0;
+    font-size: 12px;
+    // box-shadow: 0 0 10px rgba(0, 0, 0, 0.4);
+    background-color: #fff;
+  }
+  .uploader-example .uploader-btn {
+    position: relative;
+    display: none;
+    // float: right;
+    // top: -45px;
+  }
+  .uploader-example .uploader-list {
+    max-height: 440px;
+    overflow: auto;
+    overflow-x: hidden;
+    overflow-y: auto;
+  }
+  .uploader-single {
+    position: unset;
+    .close {
+      display: none;
+    }
+    .uploader-btn {
+      border: 0px;
+    }
+    .uploader-file {
+      // height: 2px;
+      .uploader-file-progress {
+        // background: #3d68e1;
+      }
+      .uploader-file-info {
+        // display: none;
+      }
+    }
+
+    .up-bar {
+      height: 30px;
+      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