Parcourir la source

Merge branch 'dev' of http://39.106.8.246:3003/web/ibms into dev

 Conflicts:
	src/assets/style/iconfont/iconfont.css
	src/assets/style/iconfont/iconfont.svg
shaun-sheep il y a 5 ans
Parent
commit
bdb032060f

+ 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', () => {})          //文件上传成功后的回调
+```

+ 1 - 1
src/components/business_space/business/handsontable.vue

@@ -60,7 +60,7 @@ export default {
     showTypes() {
       return this.onlyRead ?
         [{ value: "Visible", label: '只看采集信息' }, { value: "all", label: '全部' }] :
-        [{ value: "partInfo", label: '隐藏信息点' }, { value: "all", label: '全部' }]
+        [{ value: "partInfo", label: '隐藏信息点' }, { value: "all", label: '全部' }, { value: "Visible", label: '只看采集信息' }]
     }
   },
   data() {

+ 3 - 2
src/components/data_admin/zoneInput.vue

@@ -22,6 +22,7 @@
 </template>
 
 <script>
+import tools from "@/utils/scan/tools";
 export default {
   data() {
     return {
@@ -107,10 +108,10 @@ export default {
         this.inputTypeList[key].map(item => {
           if (item.inputValue != '' && item.inputValue != null) {
             if (item.inputValue instanceof Array) {
-              f[item.InfoPointCode] = item.inputValue.pop();
+              tools.setDataForKey(f, item.Path, item.inputValue.pop());
             }
             else {
-              f[item.InfoPointCode] = item.inputValue;
+              tools.setDataForKey(f, item.Path, item.inputValue);
             }
           }
         })

+ 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: {

+ 10 - 4
src/views/data_admin/buildGraphy/updatePointZone.vue

@@ -18,9 +18,13 @@
               @click="deleteZone(item.RoomID)"></i>
           </div>
           <div class="zone-item" style="border:none;border-left:-4px;width:auto;">
-            <el-cascader :props="zoneCascader" :show-all-levels="false" v-model="zoneCa" @change="changeCascader" filterable style="float:left;">
+            <el-cascader v-show="plusZone" :props="zoneCascader" :show-all-levels="false" v-model="zoneCa" @change="changeCascader" filterable
+              style="float:left;">
             </el-cascader>
-            <el-button type="primary" icon="el-icon-plus" circle style="float:right;margin:2px 10px;" size="mini" @click="addZone"></el-button>
+            <el-button v-show="plusZone" type="success" icon="el-icon-check" circle style="float:right;margin:2px 10px;" size="mini" @click="addZone">
+            </el-button>
+            <el-button v-show="!plusZone" type="primary" icon="el-icon-plus" circle style="float:left;margin:2px 0;" size="mini"
+              @click="plusZone=true"></el-button>
           </div>
         </div>
         <div class="item">
@@ -51,7 +55,8 @@ export default {
         }
       },
       newZoneObj: {},//当前新建业务空间
-      zoneCa: []
+      zoneCa: [],
+      plusZone: false
     }
   },
   computed: {
@@ -189,6 +194,7 @@ export default {
     addZone() {
       if (this.newZoneObj.RoomID && this.zoneList.findIndex((item) => (item.RoomID == this.newZoneObj.RoomID)) == -1) {
         this.zoneList.push(this.newZoneObj)
+        this.plusZone = false;
       }
       else if (!this.newZoneObj.RoomID) {
         this.$message("请选择业务空间后添加")
@@ -197,7 +203,7 @@ export default {
         this.$message("已有业务空间,请重新选择");
       }
       this.zoneCa = [];
-      this.newZoneObj = {}
+      this.newZoneObj = {};
     },
     //选择业务空间
     changeCascader(val) {

+ 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;

+ 4 - 5
src/views/screen/splitscreen/spaceledger/index.vue

@@ -40,8 +40,8 @@
                   <img :src="`/image-service/common/image_get?systemId=dataPlatform&key=${item.key}`" alt="空间图片">
                 </div>
               </div>
-              <!-- <div class="space-img" v-if="!spaceDetails.Pic">
-                <div class="img-box">
+              <div class="space-img" v-if="!spaceDetails.Pic">
+                <!-- <div class="img-box">
                   <img src="https://hbimg.huabanimg.com/2787ad434fc2bc819a5d7deda3855d897a99d528ab4a-e3HRgR_fw658" alt="空间图片">
                 </div>
                 <div class="img-box">
@@ -52,8 +52,8 @@
                 </div>
                 <div class="img-box">
                   <img src="https://hbimg.huabanimg.com/2ea712954c75ff1b1e13329e7e4209f0691b88945c73-JCmkXX_fw658" alt="空间图片">
-                </div>
-              </div> -->
+                </div> -->
+              </div>
               <div v-show="!spaceDetails.Pic" style="height:100%;transform: translateY(50%);textAlign:center;">
                 <i class="icon-wushuju iconfont"></i>
                 数据暂无
@@ -355,7 +355,6 @@ export default {
   .space-img {
     width: 100%;
     .img-box {
-      border: 1px solid orange;
       margin-bottom: 20px;
       float: left;
       position: relative;