Преглед на файлове

合并修改,图标库更新

zhangyu преди 5 години
родител
ревизия
719f330174

+ 8 - 0
README.md

@@ -145,3 +145,11 @@ export default {
 this.$store.dispatch('setBreadcrumb', [{ label: 'Demo' }, { label: 'Form'  ])
 this.$store.dispatch('setBreadcrumb', [{ label: 'Demo', path: '' }, { label: 'Form' , path: ''}])
 ```
+#### 上传管理器调用方法(上传较大文件时使用)
+
+```
+在组件中引入Bus中央时间总线
+    Bus.$emit('openUploader', query, file)    //添加文件到上传管理器中, query为参数, file为H5原生的文件对象
+    Bus.$on('fileAdded', () => {})            //文件选择后的回调
+    Bus.$on('fileSuccess', () => {})          //文件上传成功后的回调
+```

Файловите разлики са ограничени, защото са твърде много
+ 42 - 6
src/assets/style/iconfont/iconfont.css


Файловите разлики са ограничени, защото са твърде много
+ 27 - 0
src/assets/style/iconfont/iconfont.svg


+ 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;
         // 根据是否有夹层拼接楼层名

+ 10 - 2
src/components/model/file/floorTable.vue

@@ -3,12 +3,20 @@
     <el-table ref="filterTable" :data="tableData" style="width: 100%" height="100%" :header-cell-style="{background:'#d9d9d9',color:'#2b2b2b'}">
       <el-table-column prop="FloorName" label="模型文件" width="180">
         <template slot-scope="scope">
-          <i class="el-icon-document-checked icon_font"></i>
+          <i v-if="scope.row.Status == 4" class="iconfont icon-yun--tianchong" style="color:#67C23A;cursor:pointer;fontSize:18px;" title="模型校验完成..."></i>
+          <i v-else-if="scope.row.Status == 31" class="iconfont icon-yun--tianchong1" style="color:#F56C6C;cursor:pointer;fontSize:18px;" title="同步到数据中心出问题..."></i>
+          <i v-else-if="scope.row.Status == 21" class="iconfont icon-yun--tianchong1" style="color:#F56C6C;cursor:pointer;fontSize:18px;" title="模型数据导出出问题..."></i>
+          <i v-else class="iconfont icon-yun--tianchong2" style="color:#E6A23C;cursor:pointer;fontSize:18px;" title="模型校验进行中..."></i>
           <span style="margin-left: 10px">{{ scope.row.FloorName }}</span>
         </template>
       </el-table-column>
       <el-table-column prop="Note" label="备注" width="180"></el-table-column>
-      <el-table-column prop="Version" label="版本号"></el-table-column>
+      <el-table-column label="版本号">
+        <template slot-scope="scope">
+          <span style="margin-right: 5px">{{ scope.row.Version }}</span>
+          <i v-show="scope.row.Version" class="iconfont icon-warn" style="cursor:pointer;" title="查看版本更新信息"></i>
+        </template>
+      </el-table-column>
       <el-table-column prop="AcceptTime" label="上传时间"></el-table-column>
       <el-table-column prop="UserName" label="上传人"></el-table-column>
       <el-table-column prop="address" align="center" label="操作" width="240">

+ 6 - 1
src/components/model/file/modelLog.vue

@@ -6,7 +6,12 @@
         <el-tabs v-model="activeName" type="card" @tab-click="changeModel">
           <el-tab-pane label="上传日志" name="first">
             <el-table :data="filterlogData" stripe height="300px" style="width: 100%">
-              <el-table-column prop="Version" label="版本"></el-table-column>
+              <el-table-column label="版本">
+                <template slot-scope="scope">
+                  <span style="margin-right: 5px">{{ scope.row.Version }}</span>
+                  <i v-show="scope.row.Version" class="iconfont icon-warn" style="cursor:pointer;" title="查看版本更新信息"></i>
+                </template>
+              </el-table-column>
               <el-table-column prop="AcceptTime" label="上传时间"></el-table-column>
               <el-table-column prop="UserName" label="上传人"></el-table-column>
               <el-table-column prop="address" label="操作">

+ 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)
@@ -82,6 +84,9 @@ export default {
                     localStorage.setItem('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;