Browse Source

上传管理器调试

zhangyu 5 years ago
parent
commit
73d3339778

+ 3 - 1
README.md

@@ -149,5 +149,7 @@ this.$store.dispatch('setBreadcrumb', [{ label: 'Demo', path: '' }, { label: 'Fo
 
 ```
 在组件中引入Bus中央时间总线
-    Bus.$emit('openUploader', query, file)    //
+    Bus.$emit('openUploader', query, file)    //添加文件到上传管理器中, query为参数, file为H5原生的文件对象
+    Bus.$on('fileAdded', () => {})            //文件选择后的回调
+    Bus.$on('fileSuccess', () => {})          //文件上传成功后的回调
 ```

+ 39 - 24
src/components/globaluploader/index.vue

@@ -2,7 +2,7 @@
  * @Author: zhangyu
  * @Date: 2019-11-28 10:05:28
  * @Info: 
- * @LastEditTime: 2019-11-30 18:28:18
+ * @LastEditTime: 2019-12-05 17:37:36
  -->
 <template>
   <div id="global-uploader">
@@ -63,6 +63,7 @@ import Bus from '@/utils/bus.js';
 import SparkMD5 from 'spark-md5';
 import { getUploadId, mergeMultipart } from '@/api/uploader';
 import request from "@/api/model/file.js";
+import { mapGetters, mapMutations } from 'vuex'
 
 export default {
   data() {
@@ -93,32 +94,44 @@ export default {
       panelShow: false,   //选择文件后,展示上传panel
       collapse: false,
     }
-  },   
+  },
   mounted() {
     Bus.$on('openUploader', (query, file) => {
-      if(query.uploadId){
+      if(!this.uploaderList.some(item => {return item.name === file.name})){
+        if(query.uploadId){
         // this.params = query || {};
-        file.uploadId = query.uploadId
-        file.modelId = query.modelId? query.modelId: ''
-        this.uploader.addFile(file)
-      } else {
-        getUploadId({
-          systemId: query.systemId?query.systemId:'revit', 
-          secret: query.secret?query.secret:'63afbef6906c342b', 
-          overwrite: query.overwrite? query.overwrite: false,
-          key: file.name
-        }, res => {
-          if(res.UploadId){
-            // this.params = Object.assign(query, { uploadId: res.UploadId }) || {};
-            file = Object.assign(file, {
-              ...query,
-              uploadId: res.UploadId 
-            })
-            this.uploader.addFile(file)
-          } else {
-            this.$message.error(`请求分片上传接口失败!`);
-          }
-        })
+          file.uploadId = query.uploadId
+          file.modelId = query.modelId? query.modelId: ''
+          this.uploader.addFile(file)
+          this.setUploaderList(this.uploader.files.map(item => {
+            item.modelId = item.file.modelId?item.file.modelId:''
+            return item
+          }))
+        } else {
+          getUploadId({
+            systemId: query.systemId?query.systemId:'revit', 
+            secret: query.secret?query.secret:'63afbef6906c342b', 
+            overwrite: query.overwrite? query.overwrite: false,
+            key: file.name
+          }, res => {
+            if(res.UploadId){
+              // this.params = Object.assign(query, { uploadId: res.UploadId }) || {};
+              file = Object.assign(file, {
+                ...query,
+                uploadId: res.UploadId 
+              })
+              this.uploader.addFile(file)
+              this.setUploaderList(this.uploader.files.map(item => {
+                item.modelId = item.file.modelId?item.file.modelId:''
+                return item
+              }))
+            } else {
+              this.$message.error(`请求分片上传接口失败!`);
+            }
+          })
+        }
+      }else {
+        this.$message.error(`该文件在上传列表中已存在!`);
       }
 
       // if (this.$refs.uploadBtn) {
@@ -128,12 +141,14 @@ export default {
     });
   },
   computed: {
+    ...mapGetters('layout', ['uploaderList']),
     //Uploader实例
     uploader() {
       return this.$refs.uploader.uploader;
     }
   },
   methods: {
+    ...mapMutations('layout', ['setUploaderList']),
     onFileAdded(file) {
       this.panelShow = true;
       this.collapse = true;

+ 3 - 1
src/components/model/file/addFloorDialog.vue

@@ -82,7 +82,7 @@ export default {
     FolderId: String
   },
   computed: {
-    ...mapGetters("layout", ["projectId", "userInfo","userId", "secret"])
+    ...mapGetters("layout", ["projectId", "userInfo","userId", "secret", "uploaderList"])
   },
   data() {
     return {
@@ -137,6 +137,8 @@ export default {
       let FloorName = null;
       if (this.form.file == null) {
         this.$message.error("模型文件不能为空!");
+      } else if (this.uploaderList.some(item => {return item.name === this.form.file.name})) {
+        this.$message.error("该文件在上传列表中已存在!");
       } else {
         let FloorName = null;
         // 根据是否有夹层拼接楼层名

+ 6 - 0
src/components/model/file/replaceModelDialog.vue

@@ -50,6 +50,7 @@
   </div>
 </template>
 <script>
+import { mapGetters } from "vuex";
 export default {
   props: {
     repliceModelVisible: Boolean,
@@ -66,10 +67,15 @@ export default {
       fileList: []
     };
   },
+  computed: {
+    ...mapGetters("layout", ["uploaderList"])
+  },
   methods: {
     onSubmit() {
       if (this.form.file == null) {
         this.$message.error("模型文件不能为空!");
+      } else if (this.uploaderList.some(item => {return item.name === this.form.file.name})) {
+        this.$message.error("该文件在上传列表中已存在!");
       } else {
         this.$emit("updataModel", {
           file: this.form.file,

+ 5 - 0
src/framework/layout/layout-store.js

@@ -18,6 +18,7 @@ export default {
         projectId: '',
         projects: [],
         breadcrumb: [],
+        uploaderList: [], //当前上传文件列表
         secret: "", //项目密码
         userId: "", //用户id
     },
@@ -38,6 +39,7 @@ export default {
         userInfo: state => state.userInfo,
         permissions: state => state.permissions,
         projects: state => state.projects,
+        uploaderList: state => state.uploaderList,
         projectId: state => {
             if (!state.projectId) {
                 let pid = storage.get(KEY_PROJECT_SELECTED)
@@ -81,6 +83,9 @@ export default {
                     state.secret = item.pwd
                 }
             })
+        },
+        setUploaderList: (state, val) => {
+            state.uploaderList = val?val:[]
         }
     },
     actions: {

+ 7 - 1
src/views/model/file/index.vue

@@ -83,7 +83,7 @@ import changeFolderName from "@/components/model/file/changeFolderName"; //编
 import floorTable from "@/components/model/file/floorTable"; //右侧list表
 export default {
   computed: {
-    ...mapGetters("layout", ["projectId", "userInfo", "userId", "secret"])
+    ...mapGetters("layout", ["projectId", "userInfo", "userId", "secret", "uploaderList"])
   },
   components: {
     dasBoard,
@@ -242,6 +242,12 @@ export default {
                   });
                 }
               }
+
+              //删除错误模型(多人登录会有问题)
+              /****状态为0,上传人为本人并且上传列表无对应的模型文件 */
+              // if (item.Status == 0 && item.UserName == this.userInfo.userName && !this.uploaderList.some(file => {return file.modelId == item.CurrentModelId})) {
+              //   request.deleteModelFileList(item.CurrentModelId, res => {console.log('删除错误模型:',item.CurrentModelId)})
+              // }
             });
             this.tableData = res.Content;
             this.loading = false;