Bladeren bron

调试接口

YaolongHan 5 jaren geleden
bovenliggende
commit
6d7f4ba979

+ 129 - 56
src/api/model/file.js

@@ -5,8 +5,8 @@
  */
 import httputils from '@/api/scan/httpUtil'
 import { Message } from 'element-ui';
-const baseUrl = '/modelapi'
-
+const baseUrl = '/modelapi';
+import axios from 'axios'
 let api = {
     // 新建模型文件夹
     /**
@@ -15,16 +15,16 @@ let api = {
      */
     createModel(params, success) {
         let Name = params.Name;
-        this.queryModel(Name,(res)=>{
-            if(res.Total == 0){
+        this.queryModel(Name, (res) => {
+            if (res.Total == 0) {
                 let data = {
                     Content: [params]
                 };
                 // 查询是否有该模型文件夹
                 // 创建
                 httputils.postJson(`${baseUrl}/model-folder/create`, data, success)
-            }else{
-                Message.error({message:'该文件夹已经存在!'});
+            } else {
+                Message.error({ message: '该文件夹已经存在!' });
             }
         })
     },
@@ -44,15 +44,15 @@ let api = {
     */
     updateModelName(params, success) {
         let Name = params.Name;
-        this.queryModel(Name,(res)=>{
-            if(res.Total == 0){
+        this.queryModel(Name, (res) => {
+            if (res.Total == 0) {
                 let data = {
                     Content: [params]
                 };
                 // 更改文件夹名称
                 httputils.postJson(`${baseUrl}/model-folder/update`, data, success)
-            }else{
-                Message.error({message:'该文件夹已经存在!'});
+            } else {
+                Message.error({ message: '该文件夹已经存在!' });
             }
         })
     },
@@ -79,10 +79,22 @@ let api = {
     //以下是楼层文件接口
 
     // 查询模型文件夹下的所有模型文件
-    queryFloor(data, success) {
-        let Filters = `FolderId='${data.folderId}'`;
-        if(data.FloorName){
-            Filters = `FolderId='${data.folderId}';FloorName='${data.FloorName}';ProjectId='${data.ProjectId}'`;
+    queryFloorList(data, success) {
+
+        let Filters = `FolderId='${data.FolderId}'`;
+        if (data.FloorName) {
+            Filters = `FolderId='${data.FolderId}';FloorName='${data.FloorName}';ProjectId='${data.ProjectId}'`;
+        }
+        let params = {
+            Filters: Filters
+        }
+        return httputils.postJson(`${baseUrl}/model-floor/query-list`, params, success)
+    },
+    queryFloorItem(data, success) {
+
+        let Filters = `FolderId='${data.FolderId}'`;
+        if (data.FloorName) {
+            Filters = `FolderId='${data.FolderId}';FloorName='${data.FloorName}';ProjectId='${data.ProjectId}'`;
         }
         let params = {
             Filters: Filters
@@ -90,34 +102,57 @@ let api = {
         return httputils.postJson(`${baseUrl}/model-floor/query`, params, success)
     },
     // 创建楼层文件
-    createFloor(params, success) {
+    createFloor(params) {
         // 判断该楼层文件是否存在
-        // let Name = params.Name;
-                  let data = {
-                    Content: [params]
-                };
-        this.queryFloor(params,(res)=>{
-            if(res.Total == 0){
-                // let data = {
-                //     Content: [params]
-                // };
-                let modelFile = {
-                    Content:{
-                       ProjectId:params.ProjectId,
-                       FolderId:params.folderId,
-                       FloorName:params.FloorName
-                    }
+
+        let data = {
+            Content: [{
+                FolderId: params.FolderId,
+                FloorName: params.FloorName,
+                ProjectId: params.ProjectId,      //项目id
+            }]
+        };
+        return new Promise((resolve, preject) => {
+            this.queryFloorItem(params, (res) => {
+                if (res.Total == 0) {
+                    // 创建楼层文件
+                    httputils.postJson(`${baseUrl}/model-floor/create`, data, (res) => {
+                        let modelFile = {
+                            Content: [{
+                                // ProjectId: params.ProjectId,      //项目id
+                                FloorModelId: res.EntityList[0].Id, //模型id
+                                ModelName: params.Form.file.name,        //模型名字
+                                UserName: '123',
+                                Note: params.Form.desc,
+                                ReplaceReason: 0
+                            }]
+                        }
+                        //创建模型文件
+                        this.createModelFile(modelFile, (createModelRes) => {
+                            // 与此楼文件进行绑定
+                            let upDateModelData = {
+                                Content: [{
+                                    Id: res.EntityList[0].Id, //楼层
+                                    CurrentModelId: createModelRes.EntityList[0].Id
+                                }]
+                            }
+                            this.upDateModelFile(upDateModelData, (upDateModelSucess) => {
+                                if (upDateModelSucess.Result == "success") {
+                                    resolve({
+                                        Result: 'success',
+                                        FloorModelId: res.EntityList[0].Id,   //楼层模型文件
+                                    })
+                                }
+                            })
+                        })
+
+                    })
+
+
+                } else {
+                    Message.error({ message: '该楼层文件已经存在,请选择其他楼层!' });
                 }
-                // 创建模型文件
-                this.createModelFile(modelFile,(res)=>{
-                // 创建楼层文件(传入模型文件id)
-                console.log('/创建楼层文件(传入模型文件id)',res)
-                //  httputils.postJson(`${baseUrl}/model-floor/create`, data, success)
-                })
-            
-            }else{
-                Message.error({message:'该楼层文件已经存在,请选择其他楼层!'});
-            }
+            })
         })
     },
     // 删除楼层文件
@@ -133,28 +168,66 @@ let api = {
     //一下是楼层文件接口
 
     // 创建楼层文件
-    createModelFile(data,success) {
-        return httputils.postJson(`${baseUrl}/model-floor/create`, data,success)
+    createModelFile(data, success) {
+        return httputils.postJson(`${baseUrl}/model-file/create`, data, success)
     },
     //删除模型文件
-    deleteModelFile(data) {
-        return httputils.postJson(`${baseUrl}/model-file/delete`, data)
-    },
-    // 上传模型文件
-    uploadModelFile(data) {
-        return httputils.postJson(`${baseUrl}/model-file/upload`, data)
-    },
-    //更新楼层文件
-    upDateModelFile() {
-        return httputils.postJson(`${baseUrl}/model-floor/update`, data)
+    deleteModelFile(data, success) {
+        return httputils.postJson(`${baseUrl}/model-file/delete`, data, success)
     },
     //查询模型文件 
-    queryModelFile(FloorModelId,success) {
+    queryModelFile(FloorModelId, success) {
         let params = {
-            Distince:true,
-            Filters : `FloorModelId='${FloorModelId}'`
+            Distince: true,
+            Filters: `FloorModelId='${FloorModelId}'`
         }
-        return httputils.postJson(`${baseUrl}/model-floor/query`, params,success)
+        return httputils.postJson(`${baseUrl}/model-file/query`, params, success)
+    },
+    // 上传模型文件
+    uploadModelFile(payload, ProjectId, callback1, callback2) {
+        axios({
+            url: baseUrl + '/model-file/upload',
+            method: 'post',
+            headers: {
+                ProjectId: ProjectId
+            },
+            onUploadProgress: function (progressEvent) { //原生获取上传进度的事件
+                if (progressEvent.lengthComputable) {
+                    //属性lengthComputable主要表明总共需要完成的工作量和已经完成的工作是否可以被测量
+                    //如果lengthComputable为false,就获取不到progressEvent.total和progressEvent.loaded
+                    callback1(progressEvent);
+                }
+            },
+            data: payload
+        }).then(res => {
+            callback2(res);
+        }).then(error => {
+            console.log('this is a catch')
+            console.log(error)
+        })
+    },
+    // 更新模型文件
+    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);
+                }
+            },
+            data: payload
+        }).then(res => {
+            callback2(res);
+        }).then(error => {
+            console.log('this is a catch')
+            console.log(error)
+        })
     }
 
 }

+ 24 - 25
src/components/model/file/addFloorDialog.vue

@@ -140,14 +140,14 @@ export default {
         let FloorName = null;
         // 根据是否有夹层拼接楼层名
         if (this.haveInterlayer) {
-          if (floorTypeVal == "RF") {
+          if (this.form.floorTypeVal == "RF") {
             FloorName = this.form.floorTypeVal + interlayerType;
           } else {
             FloorName =
               this.form.floorTypeVal + this.form.floorNum + interlayerType;
           }
         } else {
-          if (floorTypeVal == "RF") {
+          if (this.form.floorTypeVal == "RF") {
             FloorName = this.form.floorTypeVal;
           } else {
             FloorName = this.form.floorTypeVal + this.form.floorNum;
@@ -155,30 +155,22 @@ export default {
         }
         let data = {
           ProjectId: this.projectId,
-          folderId: this.FolderId,
-          FloorName: FloorName
+          FolderId: this.FolderId,
+          FloorName: FloorName,
+          Form: this.form
         };
-        request.createFloor(data, res => {
-          // let data1 = {
-          //   form: this.form,
-          //   res: res.data
-          // };
-          // this.$emit("finishCreateFloor", data1);
-          // this.handleClose();
-          this.headers.ProjectId = this.projectId;
-          this.updataData.model = JSON.stringify({
-            floorModelId: res.EntityList[0].Id,
-            modelName: this.FolderName,
-            userId: this.userId,
-            note: this.form.desc,
-            userName: ""
-          });
-          // this.$refs.upload.submit();
+        request.createFloor(data).then(res => {
+          if (res.Result == "success") {
+            //  创建成功
+            this.$emit("finishCreateFloor", {FloorModelId:res.FloorModelId,Form:this.form});
+            this.handleClose();
+            // this.submitUpload(res.FloorModelId);
+          }
         });
       }
     },
     // /上传到服务器/
-    submitUpload() {
+    submitUpload(FloorModelId) {
       this.$refs.upload.submit();
     },
     handleClose() {
@@ -188,17 +180,24 @@ export default {
     handleRemove(file, fileList) {
       this.form.file = null;
     },
-    handlePreview(file) {
-      console.log(file);
+    handlePreview(file, fileList) {
+      console.log(file, fileList);
+    },
+    handleChange(file, fileList) {
+      console.log(file, fileList);
     },
-    handleChange() {},
     // 获取上传文件
     onChangeUpLoad(file, fileList) {
+      console.log(file, fileList);
       if (fileList.length) {
         this.form.file = file;
       }
     }
-  }
+  },
+  mounted() {
+      this.fileList = [];
+      this.form.file = null
+  },
 };
 </script>
 <style lang="less">

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

@@ -1,5 +1,6 @@
 <template>
   <el-table
+    ref="filterTable"
     :data="tableData"
     style="width: 100%"
     :header-cell-style="{background:'#ccc',color:'#000'}"
@@ -10,15 +11,29 @@
         <span style="margin-left: 10px">{{ scope.row.FloorName }}</span>
       </template>
     </el-table-column>
-    <el-table-column prop="name" label="备注" width="180"></el-table-column>
-    <el-table-column prop="address" label="版本号"></el-table-column>
-    <el-table-column prop="address" label="上传时间"></el-table-column>
-    <el-table-column prop="address" label="上传人"></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 prop="AcceptTime" label="上传时间"></el-table-column>
+    <el-table-column prop="UserName" label="上传人"></el-table-column>
     <el-table-column prop="address" label="操作">
       <template slot-scope="scope">
-        <el-button type="primary" class="iconfont icon-download"></el-button>
-        <el-button type="primary" class="iconfont icon-replace" @click="repliaceModel(scope.row)"></el-button>
-        <el-button type="primary" class="iconfont icon-Log" @click="queryModelLog(scope.row)"></el-button>
+        <div class="operate" v-show="!scope.row.isDown">
+          <el-button
+            type="primary"
+            class="iconfont icon-download"
+            @click="downloadModel(scope.row)"
+          ></el-button>
+          <el-button type="primary" class="iconfont icon-replace" @click="repliaceModel(scope.row)"></el-button>
+          <el-button type="primary" class="iconfont icon-Log" @click="queryModelLog(scope.row)"></el-button>
+        </div>
+        <div class="upLoad" v-show="scope.row.isDown">
+          <el-progress
+            :text-inside="true"
+            :stroke-width="20"
+            :percentage="scope.row.precent"
+             status="success"
+          ></el-progress>
+        </div>
       </template>
     </el-table-column>
   </el-table>
@@ -34,12 +49,40 @@ export default {
   methods: {
     // 查看日志
     queryModelLog(item) {
-      this.$emit('openModelLog',item)
+      this.$emit("openModelLog", item);
     },
+
+    // 替换日志
     repliaceModel(item) {
-      this.$emit('replaceModel',item)
+      this.$emit("replaceModel", item);
+    },
+    filterTag(Id, precent) {
+      this.$refs.filterTable.data.map(item => {
+        if (item.Id == Id) {
+          if (precent >= 97) {
+            item.precent = 100;
+            item.isDown = false;
+            return;
+          } else {
+            item.precent = precent;
+          }
+        }
+      })
+    },
+    // 下载模型文件
+    downloadModel(item) {
+      console.log(item);
+      // if (item.Url) {
+      //   window.open(item.Url);
+      // } else {
+      //   this.$message({
+      //     message: "该文件夹下没有资源",
+      //     type: "error"
+      //   });
+      // }
     }
-  }
+  },
+  mounted() {}
 };
 </script>
 <style scoped>

+ 9 - 5
src/components/model/file/modelLog.vue

@@ -3,13 +3,13 @@
   <div id="modelLog">
     <el-dialog title="模型日志" :visible.sync="modelLogVisible" width="30%" :before-close="handleClose">
       <div class="bodys">
-        <el-button plain icon="el-icon-delete" class="delete-model" @click="deleteModel">删除模型</el-button>
+        <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-tab-pane label="上传日志" name="first">
-            <el-table :data="tableData" stripe style="width: 100%">
-              <el-table-column prop="date" label="版本"></el-table-column>
-              <el-table-column prop="name" label="上传时间"></el-table-column>
-              <el-table-column prop="address" label="上传人"></el-table-column>
+            <el-table :data="logData" stripe style="width: 100%">
+              <el-table-column prop="Version" label="版本"></el-table-column>
+              <el-table-column prop="CreateTime" label="上传时间"></el-table-column>
+              <el-table-column prop="UserName" label="上传人"></el-table-column>
               <el-table-column prop="address" label="操作">
                 <template slot-scope="scope">
                   <el-button @click="handleClick(scope.row)" type="text" size="small">下载</el-button>
@@ -24,6 +24,7 @@
   </div>
 </template>
 <script>
+import request from "@/api/model/file.js";
 export default {
   props:{
    modelLogVisible:Boolean,
@@ -52,12 +53,15 @@ export default {
         type: "warning"
       })
         .then(() => {
+          
+          request.deleteModelFile()
           this.$message({
             type: "success",
             message: "删除成功!"
           });
         })
         .catch(() => {
+
           this.$message({
             type: "info",
             message: "已取消删除"

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

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

+ 117 - 15
src/views/model/file/index.vue

@@ -49,13 +49,22 @@
           <el-button>刷新</el-button>
         </div>
         <!-- 列表 -->
-        <floorTable :tableData="tableData" @openModelLog="queryModelLog" @replaceModel="repliaceModel"></floorTable>
+        <floorTable
+          ref="floorTable"
+          :tableData="tableData"
+          @openModelLog="queryModelLog"
+          @replaceModel="repliaceModel"
+        ></floorTable>
       </el-card>
     </el-col>
     <!-- 弹窗 开始-->
 
     <!-- 模型日志弹窗 -->
-    <modelLog :modelLogVisible="modelLogVisible" @CloseModelLogDia="modelLogVisible=false" :logData="logData"></modelLog>
+    <modelLog
+      :modelLogVisible="modelLogVisible"
+      @CloseModelLogDia="modelLogVisible=false"
+      :logData="logData"
+    ></modelLog>
     <!-- 替换模型弹窗 -->
     <repliceModel
       :repliceModelVisible="repliceModelVisible"
@@ -131,8 +140,16 @@ export default {
       currentFolderName: "", //当前选择文件夹的Name
       tableData: [],
       loading: false, //加载loading
-      logData:[],      //楼层文件对应的模型日志
-      replaceModelItem:null   //替换文件的item
+      logData: [], //楼层文件对应的模型日志
+      replaceModelItem: null, //替换文件的item
+      uploadFloorModelIdList: [], //上传楼层文件得数组,上传完成则为空
+      //请求头
+      headers: {
+        ProjectId: ""
+      },
+      updataData: {
+        model: {}
+      }
     };
   },
   methods: {
@@ -204,12 +221,18 @@ export default {
      */
     queryFloorFile(currentFolderId) {
       let data = {
-        folderId: currentFolderId,
+        FolderId: currentFolderId,
         ProjectId: this.projectId
       };
-      request.queryFloor(data, res => {
-        this.tableData = res.Content;
-        this.loading = false;
+      return new Promise((resolve, reject) => {
+        request.queryFloorList(data, res => {
+          res.Content.map(item => {
+           Object.assign(item, { isDown: false,precent:0});
+          });
+          this.tableData = res.Content;
+          this.loading = false;
+          resolve();
+        });
       });
     },
     //添加楼层文件
@@ -221,23 +244,102 @@ export default {
 
     //打开替换文件模型
     repliaceModel(item) {
-      this.replaceModelItem = item
+      this.replaceModelItem = item;
       this.repliceModelVisible = true;
     },
     // 上传模型文件
     uploadModelFIle(data) {
-      // request.uploadModelFile(0);
-      // this.queryFloorFile();
+      // 获取当前文件夹下所有模型文件
+      this.queryFloorFile(this.currentFolderId).then(() => {
+        // 开始上传文件
+        // 处理数据
+        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.uploadModelFile(
+          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)
+
+            });
+          },
+          res => {
+            if (res.code === "200") {
+              this.$message({
+                message: "文件上传成功",
+                type: "success"
+              });
+            }
+          }
+        );
+      });
     },
     //更新模型文件;
-    updateModelFile(data){
-      
+    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)
+
+            });
+          },
+          res => {
+            if (res.code === "200") {
+              this.$message({
+                message: "文件上传成功",
+                type: "success"
+              });
+            }
+          }
+        );
     },
     //查看模型日志
     queryModelLog(item) {
-      let FloorModelId = item.CurrentModelId; //楼层模型文件
+      let FloorModelId = item.Id; //楼层模型文件
       request.queryModelFile(FloorModelId, res => {
-        this.logData = res.EntityList
+        this.logData = res.Content;
         this.modelLogVisible = true;
       });
     }