Procházet zdrojové kódy

解决刷新楼层文件,进度条消失的问题

YaolongHan před 5 roky
rodič
revize
b4179600d9

+ 51 - 25
src/api/model/file.js

@@ -90,6 +90,7 @@ let api = {
         }
         return httputils.postJson(`${baseUrl}/model-floor/query-list`, params, success)
     },
+    // 查询模型文件夹下的单个模型文件
     queryFloorItem(data, success) {
 
         let Filters = `FolderId='${data.FolderId}'`;
@@ -122,7 +123,7 @@ let api = {
                                 // ProjectId: params.ProjectId,      //项目id
                                 FloorModelId: res.EntityList[0].Id, //模型id
                                 ModelName: params.Form.file.name,        //模型名字
-                                UserName: '123',
+                                UserName: params.userName,
                                 Note: params.Form.desc,
                                 ReplaceReason: 0
                             }]
@@ -136,11 +137,12 @@ let api = {
                                     CurrentModelId: createModelRes.EntityList[0].Id
                                 }]
                             }
-                            this.upDateModelFile(upDateModelData, (upDateModelSucess) => {
+                            this.updateFloorName(upDateModelData, (upDateModelSucess) => {
                                 if (upDateModelSucess.Result == "success") {
                                     resolve({
                                         Result: 'success',
                                         FloorModelId: res.EntityList[0].Id,   //楼层模型文件
+                                        CurrentModelId: createModelRes.EntityList[0].Id //模型文件id
                                     })
                                 }
                             })
@@ -160,8 +162,8 @@ let api = {
         return httputils.postJson(`${baseUrl}/model-floor/delete`, data)
     },
     //编辑楼层文件得名字
-    updateFloorName(data) {
-        return httputils.postJson(`${baseUrl}/model-floor/update`, data)
+    updateFloorName(data, success) {
+        return httputils.postJson(`${baseUrl}/model-floor/update`, data, success)
     },
 
 
@@ -171,10 +173,21 @@ let api = {
     createModelFile(data, success) {
         return httputils.postJson(`${baseUrl}/model-file/create`, data, success)
     },
-    //删除模型文件
+    //删除模型文件(只有记录,文件不动)
     deleteModelFile(data, success) {
         return httputils.postJson(`${baseUrl}/model-file/delete`, data, success)
     },
+    /**
+     * 
+     * @param {*} params string 模型文件的id 
+     * @param {*} success  成功的回调函数
+     */
+    deleteModelFileList(params, success) {
+        let data = {
+            Id:params
+        } 
+        return httputils.postJson(`${baseUrl}/model-file/delete-file`, data, success)
+    },
     //查询模型文件 
     queryModelFile(FloorModelId, success) {
         let params = {
@@ -184,7 +197,7 @@ let api = {
         return httputils.postJson(`${baseUrl}/model-file/query`, params, success)
     },
     // 上传模型文件
-    uploadModelFile(payload, ProjectId, callback1, callback2) {
+    uploadModelFile(payload, ProjectId,callback1, callback2) {
         axios({
             url: baseUrl + '/model-file/upload',
             method: 'post',
@@ -207,26 +220,39 @@ let api = {
         })
     },
     // 更新模型文件
-    upDateModelFile(payload, ProjectId, callback1, callback2) {
-        axios({
-            url: baseUrl + '/model-floor/update',
-            method: 'post',
-            headers: {
-                ProjectId: ProjectId
-            },
-            onUploadProgress: function (progressEvent) { //原生获取上传进度的事件
-                if (progressEvent.lengthComputable) {
-                    //属性lengthComputable主要表明总共需要完成的工作量和已经完成的工作是否可以被测量
-                    //如果lengthComputable为false,就获取不到progressEvent.total和progressEvent.loaded
-                    callback1(progressEvent);
+    upDateModelFile(data, ProjectId,UserName, callback1, callback2) {
+        let modelFile = {
+            Content: [{
+                FloorModelId:data.replaceModelItem.Id, //模型id
+                ModelName: data.Form.file.name,        //模型名字
+                UserName: UserName,
+                Note: data.replaceModelItem.Note
+            }]
+        }
+        // //创建模型文件
+        this.createModelFile(modelFile, (createModelRes) => {
+            // 与此楼文件进行绑定
+            let upDateModelData = {
+                Content: [{
+                    Id:data.replaceModelItem.Id, //楼层
+                    CurrentModelId: createModelRes.EntityList[0].Id
+                }]
+            }
+            this.updateFloorName(upDateModelData, (upDateModelSucess) => {
+                if (upDateModelSucess.Result == "success") {
+                    // 处理数据
+                    let formData = new FormData();
+                    formData.append(
+                      "model",
+                      JSON.stringify({
+                        FloorModelId: data.replaceModelItem.Id,
+                        Id:createModelRes.EntityList[0].Id
+                      })
+                    );
+                    formData.append("file", data.Form.file.raw);
+                    this.uploadModelFile(formData,ProjectId,callback1,callback2)
                 }
-            },
-            data: payload
-        }).then(res => {
-            callback2(res);
-        }).then(error => {
-            console.log('this is a catch')
-            console.log(error)
+            })
         })
     }
 

+ 28 - 8
src/components/model/file/addFloorDialog.vue

@@ -7,7 +7,7 @@
       width="40%"
       :before-close="handleClose"
     >
-      <el-form ref="form" :model="form" label-width="120px">
+      <el-form ref="addfloorform" :model="form" label-width="120px">
         <el-form-item label="模型文件:">
           <el-upload
             class="upload-demo"
@@ -81,7 +81,7 @@ export default {
     FolderId: String
   },
   computed: {
-    ...mapGetters("layout", ["projectId", "userId", "secret"])
+    ...mapGetters("layout", ["projectId", "userInfo","userId", "secret"])
   },
   data() {
     return {
@@ -122,7 +122,6 @@ export default {
           label: "夹层M3"
         }
       ],
-      value: "",
       //请求头
       headers: {
         ProjectId: ""
@@ -157,12 +156,17 @@ export default {
           ProjectId: this.projectId,
           FolderId: this.FolderId,
           FloorName: FloorName,
-          Form: this.form
+          Form: this.form,
+          userName:this.userInfo.username
         };
         request.createFloor(data).then(res => {
           if (res.Result == "success") {
             //  创建成功
-            this.$emit("finishCreateFloor", {FloorModelId:res.FloorModelId,Form:this.form});
+            this.$emit("finishCreateFloor", {
+              FloorModelId: res.FloorModelId,
+              CurrentModelId:res.CurrentModelId,
+              Form: this.form
+            });
             this.handleClose();
             // this.submitUpload(res.FloorModelId);
           }
@@ -178,6 +182,7 @@ export default {
     },
     // 删除上传文件
     handleRemove(file, fileList) {
+      this.fileList = []
       this.form.file = null;
     },
     handlePreview(file, fileList) {
@@ -194,10 +199,25 @@ export default {
       }
     }
   },
-  mounted() {
-      this.fileList = [];
-      this.form.file = null
+  watch: {
+    addFloorFileVisible(val) {
+      if (val) {
+        this.handleRemove();
+        this.form = {
+          desc: "", //描述
+          floorTypeVal: "F", //楼层类型得值
+          interlayerTypeVal: "M1", //夹层类型得值
+          haveInterlayer: false, //是否有夹层
+          file: null, //上传文件
+          floorNum: 1 //楼层
+        };
+      }
+    }
   },
+  mounted() {
+    this.fileList = [];
+    this.form.file = null;
+  }
 };
 </script>
 <style lang="less">

+ 25 - 12
src/components/model/file/floorTable.vue

@@ -31,7 +31,7 @@
             :text-inside="true"
             :stroke-width="20"
             :percentage="scope.row.precent"
-             status="success"
+            status="success"
           ></el-progress>
         </div>
       </template>
@@ -41,7 +41,8 @@
 <script>
 export default {
   props: {
-    tableData: Array
+    tableData: Array,
+    ceshiList: Array
   },
   data() {
     return {};
@@ -51,7 +52,6 @@ export default {
     queryModelLog(item) {
       this.$emit("openModelLog", item);
     },
-
     // 替换日志
     repliaceModel(item) {
       this.$emit("replaceModel", item);
@@ -67,19 +67,32 @@ export default {
             item.precent = precent;
           }
         }
-      })
+      });
     },
     // 下载模型文件
     downloadModel(item) {
       console.log(item);
-      // if (item.Url) {
-      //   window.open(item.Url);
-      // } else {
-      //   this.$message({
-      //     message: "该文件夹下没有资源",
-      //     type: "error"
-      //   });
-      // }
+      if (item.Url) {
+        window.open(item.Url);
+      } else {
+        this.$message({
+          message: "该文件夹下没有资源",
+          type: "error"
+        });
+      }
+    }
+  },
+  watch: {
+    ceshiList: {
+      immediate: true,
+      deep: true,
+      handler: function(val, oldVal) {
+        val.map(item=>{
+          if(item.precent != 0){
+                this.filterTag(item.Id,item.precent)
+          }
+        })
+      }
     }
   },
   mounted() {}

+ 44 - 21
src/components/model/file/modelLog.vue

@@ -3,8 +3,7 @@
   <div id="modelLog">
     <el-dialog title="模型日志" :visible.sync="modelLogVisible" width="30%" :before-close="handleClose">
       <div class="bodys">
-        <el-button plain icon="el-icon-delete" v-show="logData.length == 1" class="delete-model" @click="deleteModel">删除模型</el-button>
-        <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
+        <el-tabs v-model="activeName" type="card" @tab-click="changeModel">
           <el-tab-pane label="上传日志" name="first">
             <el-table :data="logData" stripe style="width: 100%">
               <el-table-column prop="Version" label="版本"></el-table-column>
@@ -13,6 +12,7 @@
               <el-table-column prop="address" label="操作">
                 <template slot-scope="scope">
                   <el-button @click="handleClick(scope.row)" type="text" size="small">下载</el-button>
+                  <el-button @click="deleteModel(scope.row)" type="text" size="small"><span style="color:#F56C6C">删除</span></el-button>
                 </template>
               </el-table-column>
             </el-table>
@@ -26,42 +26,65 @@
 <script>
 import request from "@/api/model/file.js";
 export default {
-  props:{
-   modelLogVisible:Boolean,
-   logData:Array
+  props: {
+    modelLogVisible: Boolean,
+    logData: Array
   },
   data() {
     return {
       dialogVisible: false, //是否显示该弹窗
-      activeName: "first",  //默认选择上传日志
-      tableData: []          //列表数据]
+      activeName: "first", //默认选择上传日志
+      tableData: [] //列表数据]
     };
   },
   methods: {
     handleClose(done) {
-      this.$emit('CloseModelLogDia')
+      this.$emit("CloseModelLogDia");
     },
-    handleClick() {},
+    handleClick(item) {
+      console.log(item);
+      if (item.Url) {
+        window.open(item.Url);
+      } else {
+        this.$message({
+          message: "该文件夹下没有资源",
+          type: "error"
+        });
+      }
+    },
+    changeModel() {},
     /**
      * 删除模型
      *
      */
-    deleteModel() {
-      this.$confirm("此操作只可删除楼层模型文件,已经识别的对象及关系等,暂不可删除。确定删除?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning"
-      })
+    deleteModel(item) {
+      this.$confirm(
+        "此操作只可删除楼层模型文件,已经识别的对象及关系等,暂不可删除。确定删除?",
+        "提示",
+        {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }
+      )
         .then(() => {
-          
-          request.deleteModelFile()
-          this.$message({
-            type: "success",
-            message: "删除成功!"
+          request.deleteModelFileList(item.Id, res => {
+            if (res.Result == "success") {
+              //  刷新页面
+              this.$emit("deleteFinish");
+              this.$message({
+                type: "success",
+                message: "删除成功!"
+              });
+            } else {
+              this.$message({
+                type: "error",
+                message: res.Result
+              });
+            }
           });
         })
         .catch(() => {
-
           this.$message({
             type: "info",
             message: "已取消删除"

+ 1 - 1
src/components/model/file/replaceModelDialog.vue

@@ -71,7 +71,7 @@ export default {
       if (this.form.file == null) {
         this.$message.error("模型文件不能为空!");
       } else {
-        this.$emit("updataModel", {Form:this.form,FloorModelId:this.replaceModelItem.Id});
+        this.$emit("updataModel", {Form:this.form,replaceModelItem:this.replaceModelItem});
         this.handleClose()
       }
     },

+ 82 - 50
src/views/model/file/index.vue

@@ -46,7 +46,7 @@
         <!-- 顶部操作栏 -->
         <div class="top_hand right_top_hand">
           <el-button @click="addFloorFile">添加楼层文件</el-button>
-          <el-button>刷新</el-button>
+          <el-button @click="queryFloorFile(currentFolderId)">刷新</el-button>
         </div>
         <!-- 列表 -->
         <floorTable
@@ -54,6 +54,7 @@
           :tableData="tableData"
           @openModelLog="queryModelLog"
           @replaceModel="repliaceModel"
+          :ceshiList="ceshiList"
         ></floorTable>
       </el-card>
     </el-col>
@@ -62,6 +63,7 @@
     <!-- 模型日志弹窗 -->
     <modelLog
       :modelLogVisible="modelLogVisible"
+      @deleteFinish="updataLog"
       @CloseModelLogDia="modelLogVisible=false"
       :logData="logData"
     ></modelLog>
@@ -111,7 +113,7 @@ import changeFolderName from "@/components/model/file/changeFolderName"; //编
 import floorTable from "@/components/model/file/floorTable"; //右侧list表
 export default {
   computed: {
-    ...mapGetters("layout", ["projectId", "userId", "secret"])
+    ...mapGetters("layout", ["projectId", "userInfo", "userId", "secret"])
   },
   components: {
     dasBoard,
@@ -138,6 +140,7 @@ export default {
       choiceIndex: 0, //当前文件夹index
       currentFolderId: "", //当前选择的文件夹id
       currentFolderName: "", //当前选择文件夹的Name
+      currentFloorModelId: "", //当前选择的楼层文件id
       tableData: [],
       loading: false, //加载loading
       logData: [], //楼层文件对应的模型日志
@@ -149,7 +152,17 @@ export default {
       },
       updataData: {
         model: {}
-      }
+      },
+      ceshiList: [
+        {
+          Id: "239ce3d4c33811e993aceb3be9a05be5",
+          precent: 0
+        },
+        {
+          Id: "7d30fd76c33b11e993ac11710b8cb126",
+          precent: 0
+        }
+      ]
     };
   },
   methods: {
@@ -227,14 +240,25 @@ export default {
       return new Promise((resolve, reject) => {
         request.queryFloorList(data, res => {
           res.Content.map(item => {
-           Object.assign(item, { isDown: false,precent:0});
+            Object.assign(item, { isDown: false, precent: 0 });
           });
           this.tableData = res.Content;
           this.loading = false;
           resolve();
+          //测试代码
+          this.ceshi();
         });
       });
     },
+    ceshi() {
+      // let a = setInterval(() => {
+      //  this.ceshiList[0].precent += 5 ;
+      //    this.ceshiList[1].precent += 8
+      //   if (this.ceshiList[0] >= 100) {
+      //     clearInterval(a);
+      //   }
+      // }, 1000);
+    },
     //添加楼层文件
     addFloorFile() {
       this.addFloorFileVisible = true;
@@ -249,18 +273,26 @@ export default {
     },
     // 上传模型文件
     uploadModelFIle(data) {
+      // 在列表中添加
+      this.ceshiList.push({
+        Id: data.FloorModelId,
+        precent: 0
+      });
       // 获取当前文件夹下所有模型文件
       this.queryFloorFile(this.currentFolderId).then(() => {
         // 开始上传文件
-        // 处理数据
+        // 开始处理数据
         let formData = new FormData();
         formData.append(
           "model",
           JSON.stringify({
-            FloorModelId: data.FloorModelId
+            FloorModelId: data.FloorModelId,
+            Id: data.CurrentModelId
           })
         );
         formData.append("file", data.Form.file.raw);
+        // 处理数据结束
+
         // 修改isdown得值
         this.tableData.map(item => {
           if (item.Id == data.FloorModelId) {
@@ -268,6 +300,7 @@ export default {
             item.precent = 0;
           }
         });
+
         // 开始上传
         request.uploadModelFile(
           formData,
@@ -276,9 +309,13 @@ export default {
             let loaded = res.loaded, //加载量
               total = res.total; //文件大小
             this.$nextTick(() => {
-              let precent =Math.round((loaded / total) * 100);
-              this.$refs.floorTable.filterTag(data.FloorModelId,precent)
-
+              let precent = Math.round((loaded / total) * 100);
+              // this.$refs.floorTable.filterTag(data.FloorModelId, precent);
+              this.ceshiList.map(item => {
+                if (item.Id == data.FloorModelId) {
+                     item.precent = precent
+                }
+              });
             });
           },
           res => {
@@ -294,54 +331,49 @@ export default {
     },
     //更新模型文件;
     updateModelFile(data) {
-
-        // 开始上传文件
-        // 处理数据
-        let formData = new FormData();
-        formData.append(
-          "model",
-          JSON.stringify({
-            FloorModelId: data.FloorModelId
-          })
-        );
-        formData.append("file", data.Form.file.raw);
-        // 修改isdown得值
-        this.tableData.map(item => {
-          if (item.Id == data.FloorModelId) {
-            item.isDown = true;
-            item.precent = 0;
-          }
-        });
-        // 开始上传
-        request.upDateModelFile(
-          formData,
-          this.projectId,
-          res => {
-            let loaded = res.loaded, //加载量
-              total = res.total; //文件大小
-            this.$nextTick(() => {
-              let precent =Math.round((loaded / total) * 100);
-              this.$refs.floorTable.filterTag(data.FloorModelId,precent)
-
+      // 修改isdown得值
+      this.tableData.map(item => {
+        if (item.Id == data.FloorModelId) {
+          item.isDown = true;
+          item.precent = 0;
+        }
+      });
+      // 开始上传
+      request.upDateModelFile(
+        data,
+        this.projectId,
+        this.userInfo.username,
+        res => {
+          let loaded = res.loaded, //加载量
+            total = res.total; //文件大小
+          this.$nextTick(() => {
+            let precent = Math.round((loaded / total) * 100);
+            this.$refs.floorTable.filterTag(data.FloorModelId, precent);
+          });
+        },
+        res => {
+          if (res.code === "200") {
+            this.$message({
+              message: "文件上传成功",
+              type: "success"
             });
-          },
-          res => {
-            if (res.code === "200") {
-              this.$message({
-                message: "文件上传成功",
-                type: "success"
-              });
-            }
           }
-        );
+        }
+      );
     },
     //查看模型日志
     queryModelLog(item) {
-      let FloorModelId = item.Id; //楼层模型文件
-      request.queryModelFile(FloorModelId, res => {
+      this.FloorModelId = item.Id; //楼层模型文件
+      request.queryModelFile(this.FloorModelId, res => {
         this.logData = res.Content;
         this.modelLogVisible = true;
       });
+    },
+    // 刷新日志
+    updataLog() {
+      request.queryModelFile(this.FloorModelId, res => {
+        this.logData = res.Content;
+      });
     }
   },
   mounted() {
@@ -353,7 +385,7 @@ export default {
 #file_moddle_manage {
   width: 100%;
   .box-card {
-    min-height: 800px;
+    min-height: 700px;
   }
   .grid-left {
     padding-right: 10px;