Browse Source

Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	src/api/scan/httpUtil.js
#	src/api/scan/request.js
shaun-sheep 4 years ago
parent
commit
ac79402210

+ 90 - 89
src/api/framework.js

@@ -6,106 +6,107 @@ import httputils from '@/utils/httputils'
 // const userInfo = { username: 'admin', permissions: ['demo'] }
 
 const userInfo = null
+
 function toLogin() {
-    router.push('/login')
+  router.push('/login')
 }
 
 function checkMenu(menu, ps) {
-    let result = { name: menu.name, icon: menu.icon, path: menu.path, disabled: menu.disabled }
-    if (menu.children) {
-        // 如果有下级菜单权限,则自动拥有上级菜单权限
-        result.children = []
-        menu.children.forEach(child => {
-            let submenu = checkMenu(child, ps)
-            if (submenu) {
-                result.children.push(submenu)
-            }
-        })
-        return result.children.length > 0 ? result : null
-    } else if (menu.opts) {
-        return menu.opts.some(opt => ps[opt.permission]) ? result : null
-    } else {
-        // 如果没有下级菜单且没有opts属性, 菜单可以直接访问,不需要权限
-        return result
-    }
+  let result = { name: menu.name, icon: menu.icon, path: menu.path, disabled: menu.disabled }
+  if (menu.children) {
+    // 如果有下级菜单权限,则自动拥有上级菜单权限
+    result.children = []
+    menu.children.forEach(child => {
+      let submenu = checkMenu(child, ps)
+      if (submenu) {
+        result.children.push(submenu)
+      }
+    })
+    return result.children.length > 0 ? result : null
+  } else if (menu.opts) {
+    return menu.opts.some(opt => ps[opt.permission]) ? result : null
+  } else {
+    // 如果没有下级菜单且没有opts属性, 菜单可以直接访问,不需要权限
+    return result
+  }
 }
 
 export default {
-    /**
-     *  路由守卫, 每次路由跳转时验证登录
-     * @param {*} to
-     * @param {*} from
-     * @param {*} next
-     */
-    routerBeforeEach: async function(to, from, next) {
-        console.log('router before ', to)
-        if (to.path == '/auth' || to.path == '/login') {
-            next()
-        } else {
-            if (to.meta.breadcrumbs) {
-                store.dispatch('setBreadcrumb', to.meta.breadcrumbs)
-            } else {
-                store.dispatch('setBreadcrumb', [])
-            }
-            // next()
-            let userInfo = store.getters['layout/userInfo']
-            if (!userInfo) {
-                // 本地是未登录状态, 保存目标页面地址, 去登录
-                let lastRoute = { path: to.path, params: to.params, query: to.query }
-                store.commit('setLastRoute', lastRoute)
-                toLogin()
-            } else {
-                if (to.meta.breadcrumbs) {
-                    store.dispatch('setBreadcrumb', to.meta.breadcrumbs)
-                }
-                next()
-            }
-            return true
+  /**
+   *  路由守卫, 每次路由跳转时验证登录
+   * @param {*} to
+   * @param {*} from
+   * @param {*} next
+   */
+  routerBeforeEach: async function (to, from, next) {
+    console.log('router before ', to)
+    if (to.path == '/auth' || to.path == '/login') {
+      next()
+    } else {
+      if (to.meta.breadcrumbs) {
+        store.dispatch('setBreadcrumb', to.meta.breadcrumbs)
+      } else {
+        store.dispatch('setBreadcrumb', [])
+      }
+      // next()
+      let userInfo = store.getters['layout/userInfo']
+      if (!userInfo) {
+        // 本地是未登录状态, 保存目标页面地址, 去登录
+        let lastRoute = { path: to.path, params: to.params, query: to.query }
+        store.commit('setLastRoute', lastRoute)
+        toLogin()
+      } else {
+        if (to.meta.breadcrumbs) {
+          store.dispatch('setBreadcrumb', to.meta.breadcrumbs)
         }
-    },
+        next()
+      }
+      return true
+    }
+  },
 
-    getMenus(permissions) {
-        let result = []
-        let allMenus = []
-        // 开发环境下展示demo页面
-        // if (process.env.NODE_ENV === 'development') {
-        //     allMenus = demoMenus
-        // }
-        allMenus = allMenus.concat(menus)
-        let ps = !permissions ? {} : permissions
-        console.log(ps)
-        allMenus.forEach(item => {
-            let menu = checkMenu(item, ps)
-            if (menu) {
-                result.push(menu)
-            }
-        })
-        return result
-    },
+  getMenus(permissions) {
+    let result = []
+    let allMenus = []
+    // 开发环境下展示demo页面
+    // if (process.env.NODE_ENV === 'development') {
+    //     allMenus = demoMenus
+    // }
+    allMenus = allMenus.concat(menus)
+    let ps = !permissions ? {} : permissions
+    console.log(ps)
+    allMenus.forEach(item => {
+      let menu = checkMenu(item, ps)
+      if (menu) {
+        result.push(menu)
+      }
+    })
+    return result
+  },
 
-    login(username, password) {
-        return new Promise((resolve, reject) => {
-            if (username == 'admin') {
-                resolve({ result: 'success', ssoToken: 'admin-token' })
-            } else {
-                resolve({ result: 'fail', message: 'username or password error' })
-            }
-        })
-    },
+  login(username, password) {
+    return new Promise((resolve, reject) => {
+      if (username == 'admin') {
+        resolve({ result: 'success', ssoToken: 'admin-token' })
+      } else {
+        resolve({ result: 'fail', message: 'username or password error' })
+      }
+    })
+  },
 
-    loadUserInfo() {
-        // return new Promise((resolve, reject) => resolve({ result: 'success', ...userInfo }))
-        return httputils.getJson(`/admin/ibms/user/userInfo`)
-    },
+  loadUserInfo() {
+    // return new Promise((resolve, reject) => resolve({ result: 'success', ...userInfo }))
+    return httputils.getJson(`/admin/ibms/user/userInfo`)
+  },
 
-    toLogout() {
-        // TODO
-        router.push('/auth')
-        store.commit('setSsoToken', null)
-        let ssoServer = process.env.SSO_SERVER
-        let redirectUrl = window.location.protocol + '//' + window.location.host + '/'
-        window.location.href = `${ssoServer}/logout?redirectUrl=${redirectUrl}`
-    },
+  toLogout() {
+    // TODO
+    router.push('/auth')
+    store.commit('setSsoToken', null)
+    let ssoServer = process.env.SSO_SERVER
+    let redirectUrl = window.location.protocol + '//' + window.location.host + '/'
+    window.location.href = `${ssoServer}/logout?redirectUrl=${redirectUrl}`
+  },
 
-    toLoginPage: toLogin
+  toLoginPage: toLogin
 }

+ 298 - 300
src/api/model/file.js

@@ -1,347 +1,345 @@
 import httputils from '@/api/scan/httpUtil'
 import { Message } from 'element-ui';
 import axios from 'axios'
+
 const baseUrl = '/modelapi';
 const revitUrl = '/schedulerapi';
 
 let api = {
-    // 新建模型文件夹
-    /**
-     * 
-     * @param {Name:string,ProjectId:string} params 
-     */
-    createModel(params, success) {
-        let Name = params.Name;
-        this.queryModel(Name, (res) => {
-            if (res.Total == 0) {
-                let data = {
-                    Content: [params]
-                };
-                // 查询是否有该模型文件夹
-                // 创建
-                httputils.postJson(`${baseUrl}/model-folder/create`, data, success)
-            } else {
-                Message.error({ message: '该文件夹已经存在!' });
-            }
-        })
-    },
-    //删除模型文件夹
-    /**
-     * 
-     * @param {Id:string} params 
-     */
-    deleteModel(params, success) {
-        let Content = [params];
-        httputils.postJson(`${baseUrl}/model-folder/delete`, Content, success)
-    },
-    //修改模型文件夹名称
-    /**
-    * 
-    * @param {Name:string,ProjectId:string} params 
-    */
-    updateModelName(params, success) {
-        let Name = params.Name;
-        this.queryModel(Name, (res) => {
-            if (res.Total == 0) {
-                let data = {
-                    Content: [params]
-                };
-                // 更改文件夹名称
-                httputils.postJson(`${baseUrl}/model-folder/update`, data, success)
-            } else {
-                Message.error({ message: '该文件夹已经存在!' });
-            }
-        })
-    },
-    //查询模型文件夹
-    /** 
-     * @param Name string  注:查询多个 Name = '' 
-    */
-    queryModel(Name, success) {
-        let data = null;
-        if (Name) {
-            // 单个查询
-            data = {
-                Filters: `Name='${Name}'`,
-                Orders: "Name asc"
-            }
-        } else {
-            // 多个查询
-            data = {
-                Orders: "Name asc"
-            }
-        }
-        return httputils.postJson(`${baseUrl}/model-folder/query`, data, success)
-    },
-
-
-
-    //以下是楼层文件接口
+  // 新建模型文件夹
+  /**
+   *
+   * @param {Name:string,ProjectId:string} params
+   */
+  createModel(params, success) {
+    let name = params.name;
+    this.queryModel(name, (res) => {
+      if (res.total == 0) {
+        let data = {
+          content: [params]
+        };
+        // 查询是否有该模型文件夹
+        // 创建
+        httputils.postJson(`${baseUrl}/model-folder/create`, data, success)
+      } else {
+        Message.error({ message: '该文件夹已经存在!' });
+      }
+    })
+  },
+  //删除模型文件夹
+  /**
+   *
+   * @param {Id:string} params
+   */
+  deleteModel(params, success) {
+    let content = [params];
+    httputils.postJson(`${baseUrl}/model-folder/delete`, content, success)
+  },
+  //修改模型文件夹名称
+  /**
+   *
+   * @param {Name:string,ProjectId:string} params
+   */
+  updateModelName(params, success) {
+    let name = params.name;
+    this.queryModel(name, (res) => {
+      if (res.total == 0) {
+        let data = {
+          content: [params]
+        };
+        // 更改文件夹名称
+        httputils.postJson(`${baseUrl}/model-folder/update`, data, success)
+      } else {
+        Message.error({ message: '该文件夹已经存在!' });
+      }
+    })
+  },
+  //查询模型文件夹
+  /**
+   * @param Name string  注:查询多个 Name = ''
+   */
+  queryModel(Name, success) {
+    let data = null;
+    if (Name) {
+      // 单个查询
+      data = {
+        filters: `name='${Name}'`,
+        orders: "name asc"
+      }
+    } else {
+      // 多个查询
+      data = {
+        orders: "name asc"
+      }
+    }
+    return httputils.postJson(`${baseUrl}/model-folder/query`, data, success)
+  },
 
-    // 查询模型文件夹下的所有模型文件
-    queryFloorList(data, success) {
 
-        let Filters = `FolderId='${data.FolderId}'`;
-        if (data.FloorName) {
-            Filters = `FolderId='${data.FolderId}';FloorName='${data.FloorName}';ProjectId='${data.ProjectId}'`;
-        }
-        if (data.Status) {
-            Filters += `;Status in [${data.Status}]`
-        }
-        let params = {
-            Filters: Filters,
-            PageNumber: 1,
-            PageSize: 500
-        }
-        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
-        }
-        return httputils.postJson(`${baseUrl}/model-floor/query`, params, success)
-    },
-    // 创建楼层
-    // createFloor(params) {
-    //     // 判断该楼层是否存在
+  // 查询模型文件夹下的所有模型文件
+  queryFloorList(data, success) {
+    let filters = `folderId='${data.folderId}'`;
+    if (data.floorName) {
+      filters = `folderId='${data.folderId}';floorName='${data.floorName}';projectId='${data.projectId}'`;
+    }
+    if (data.status) {
+      filters += `;status in [${data.status}]`
+    }
+    let params = {
+      filters: filters,
+      pageNumber: 1,
+      pageSize: 500
+    }
+    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
+    }
+    return httputils.postJson(`${baseUrl}/model-floor/query`, params, success)
+  },
+  // 创建楼层
+  // createFloor(params) {
+  //     // 判断该楼层是否存在
 
-    //     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, //模型所属楼层(FloorModel外键)
-    //                             ModelName: params.Form.file.name,        //模型文件名
-    //                             UserName: params.userName,
-    //                             UserId: params.userId,
-    //                             Note: params.Form.desc
-    //                             // ReplaceReason: 0
-    //                         }]
-    //                     }
-    //                     //创建模型文件
-    //                     this.createModelFile(modelFile, (createModelRes) => {
-    //                         // 与此楼文件进行绑定
-    //                         let upDateModelData = {
-    //                             Content: [{
-    //                                 Id: res.EntityList[0].Id, //id
-    //                                 CurrentModelId: createModelRes.EntityList[0].Id //该楼层当前的模型id
-    //                             }]
-    //                         }
-    //                         this.updateFloorName(upDateModelData, (upDateModelSucess) => {
-    //                             if (upDateModelSucess.Result == "success") {
-    //                                 resolve({
-    //                                     Result: 'success',
-    //                                     FloorModelId: res.EntityList[0].Id,   //楼层模型文件
-    //                                     CurrentModelId: createModelRes.EntityList[0].Id //模型文件id
-    //                                 })
-    //                             }
-    //                         })
-    //                     })
-    //                 })
-    //             } else {
-    //                 let modelFile = {
-    //                     Content: [{
-    //                         // ProjectId: params.ProjectId,      //项目id
-    //                         FloorModelId: res.Content[0].Id, //模型所属楼层(FloorModel外键)
-    //                         ModelName: params.Form.file.name,        //模型文件名
-    //                         UserName: params.userName,
-    //                         UserId: params.userId,
-    //                         Note: params.Form.desc
-    //                         // ReplaceReason: 0
-    //                     }]
-    //                 }
-    //                 //创建模型文件
-    //                 this.createModelFile(modelFile, (createModelRes) => {
-    //                     // 与此楼文件进行绑定
-    //                     let upDateModelData = {
-    //                         Content: [{
-    //                             Id: res.Content[0].Id, //id
-    //                             CurrentModelId: createModelRes.EntityList[0].Id //该楼层当前的模型id
-    //                         }]
-    //                     }
-    //                     this.updateFloorName(upDateModelData, (upDateModelSucess) => {
-    //                         if (upDateModelSucess.Result == "success") {
-    //                             resolve({
-    //                                 Result: 'success',
-    //                                 FloorModelId: res.Content[0].Id,   //楼层模型文件
-    //                                 CurrentModelId: createModelRes.EntityList[0].Id //模型文件id
-    //                             })
-    //                         }
-    //                     })
-    //                 })
-    //             }
-    //         })
-    //     })
-    // },
-    // 删除楼层文件
-    deleteFloor(data) {
-        return httputils.postJson(`${baseUrl}/model-floor/delete`, data)
-    },
-    //编辑楼层文件的名字
-    updateFloorName(data, success) {
-        return httputils.postJson(`${baseUrl}/model-floor/update`, data, success)
-    },
+  //     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, //模型所属楼层(FloorModel外键)
+  //                             ModelName: params.Form.file.name,        //模型文件名
+  //                             UserName: params.userName,
+  //                             UserId: params.userId,
+  //                             Note: params.Form.desc
+  //                             // ReplaceReason: 0
+  //                         }]
+  //                     }
+  //                     //创建模型文件
+  //                     this.createModelFile(modelFile, (createModelRes) => {
+  //                         // 与此楼文件进行绑定
+  //                         let upDateModelData = {
+  //                             Content: [{
+  //                                 Id: res.EntityList[0].Id, //id
+  //                                 CurrentModelId: createModelRes.EntityList[0].Id //该楼层当前的模型id
+  //                             }]
+  //                         }
+  //                         this.updateFloorName(upDateModelData, (upDateModelSucess) => {
+  //                             if (upDateModelSucess.Result == "success") {
+  //                                 resolve({
+  //                                     Result: 'success',
+  //                                     FloorModelId: res.EntityList[0].Id,   //楼层模型文件
+  //                                     CurrentModelId: createModelRes.EntityList[0].Id //模型文件id
+  //                                 })
+  //                             }
+  //                         })
+  //                     })
+  //                 })
+  //             } else {
+  //                 let modelFile = {
+  //                     Content: [{
+  //                         // ProjectId: params.ProjectId,      //项目id
+  //                         FloorModelId: res.Content[0].Id, //模型所属楼层(FloorModel外键)
+  //                         ModelName: params.Form.file.name,        //模型文件名
+  //                         UserName: params.userName,
+  //                         UserId: params.userId,
+  //                         Note: params.Form.desc
+  //                         // ReplaceReason: 0
+  //                     }]
+  //                 }
+  //                 //创建模型文件
+  //                 this.createModelFile(modelFile, (createModelRes) => {
+  //                     // 与此楼文件进行绑定
+  //                     let upDateModelData = {
+  //                         Content: [{
+  //                             Id: res.Content[0].Id, //id
+  //                             CurrentModelId: createModelRes.EntityList[0].Id //该楼层当前的模型id
+  //                         }]
+  //                     }
+  //                     this.updateFloorName(upDateModelData, (upDateModelSucess) => {
+  //                         if (upDateModelSucess.Result == "success") {
+  //                             resolve({
+  //                                 Result: 'success',
+  //                                 FloorModelId: res.Content[0].Id,   //楼层模型文件
+  //                                 CurrentModelId: createModelRes.EntityList[0].Id //模型文件id
+  //                             })
+  //                         }
+  //                     })
+  //                 })
+  //             }
+  //         })
+  //     })
+  // },
+  // 删除楼层文件
+  deleteFloor(data) {
+    return httputils.postJson(`${baseUrl}/model-floor/delete`, data)
+  },
+  //编辑楼层文件的名字
+  updateFloorName(data, success) {
+    return httputils.postJson(`${baseUrl}/model-floor/update`, data, success)
+  },
 
 
-    //以下是楼层文件接口
+  //以下是楼层文件接口
 
-    // 创建模型文件
-    createModelFile(data, success) {
-        return httputils.postJson(`${baseUrl}/model-file/create`, data, success)
-    },
-    //删除模型文件(只有记录,文件不动)
-    deleteModelFile(data, success) {
-        return httputils.postJson(`${baseUrl}/model-file/delete`, data, success)
-    },
-    /**
-     * info: 删除模型文件
-     * @param {*} params string 模型文件的id 
-     * @param {*} success  成功的回调函数
-     */
-    deleteModelFileList(params, success) {
-        let data = {
-            Id:params.Id,
-            Force: params.Force?params.Force:false
-        } 
-        return httputils.postJson(`${baseUrl}/model-file/delete-file`, data, success)
-    },
-    //查询模型文件 
-    queryModelFile(FloorModelId, success) {
-        let params = {
-            Distince: true,
-            Filters: `FloorModelId='${FloorModelId}';Removed=false`
-        }
-        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);
-    //     }).catch(error => {
-    //         console.log('this is a catch')
-    //         console.log(error)
-    //     })
-    // },
+  // 创建模型文件
+  createModelFile(data, success) {
+    return httputils.postJson(`${baseUrl}/model-file/create`, data, success)
+  },
+  //删除模型文件(只有记录,文件不动)
+  deleteModelFile(data, success) {
+    return httputils.postJson(`${baseUrl}/model-file/delete`, data, success)
+  },
+  /**
+   * info: 删除模型文件
+   * @param {*} params string 模型文件的id
+   * @param {*} success  成功的回调函数
+   */
+  deleteModelFileList(params, success) {
+    let data = {
+      id: params.Id,
+      force: params.Force ? params.Force : false
+    }
+    return httputils.postJson(`${baseUrl}/model-file/delete-file`, data, success)
+  },
+  //查询模型文件
+  queryModelFile(FloorModelId, success) {
+    let params = {
+      distince: true,
+      filters: `floorModelId='${FloorModelId}';removed=false`
+    }
+    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);
+  //     }).catch(error => {
+  //         console.log('this is a catch')
+  //         console.log(error)
+  //     })
+  // },
 
-    //准备分片上传模型文件接口
-    modelFileUpload(data, success) {
-        return httputils.postJson(`${baseUrl}/model-file/upload`, data, success)
-    },
+  //准备分片上传模型文件接口
+  modelFileUpload(data, success) {
+    return httputils.postJson(`${baseUrl}/model-file/upload`, data, success)
+  },
 
-    mergeModelFile(data, success) {
-        return httputils.postJson(`${baseUrl}/model-file/merge`, data, success)
-    }
+  mergeModelFile(data, success) {
+    return httputils.postJson(`${baseUrl}/model-file/merge`, data, success)
+  }
 
-    // 更新模型文件
-    // upDateModelFile(data, ProjectId, UserName, UserId, callback1, callback2) {
-    //     let modelFile = {
-    //         Content: [{
-    //             FloorModelId:data.replaceModelItem.Id, //模型id
-    //             ModelName: data.Form.file.name,        //模型名字
-    //             UserName: UserName,
-    //             UserId: UserId,
-    //             Note: data.replaceModelItem.Note,
-    //             ReplaceReason: data.Form.ReplaceReason
-    //         }]
-    //     }
-    //     // //创建模型文件
-    //     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)
-    //             }
-    //         })
-    //     })
-    // }
+  // 更新模型文件
+  // upDateModelFile(data, ProjectId, UserName, UserId, callback1, callback2) {
+  //     let modelFile = {
+  //         Content: [{
+  //             FloorModelId:data.replaceModelItem.Id, //模型id
+  //             ModelName: data.Form.file.name,        //模型名字
+  //             UserName: UserName,
+  //             UserId: UserId,
+  //             Note: data.replaceModelItem.Note,
+  //             ReplaceReason: data.Form.ReplaceReason
+  //         }]
+  //     }
+  //     // //创建模型文件
+  //     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)
+  //             }
+  //         })
+  //     })
+  // }
 
 }
 export default api
 
 //楼层与平面图绑定
 export function bindFloorModel(param, success) {
-    let url = `${baseUrl}/model-floor/bind`;
-    httputils.postJson(url, param, success)
+  let url = `${baseUrl}/model-floor/bind`;
+  httputils.postJson(url, param, success)
 }
 
 //根据模型id 获取模型文件夹及文件名
 export function getFileNameById(param, success) {
-    let url = `${baseUrl}/model-folder/get-name`;
-    httputils.postJson(url, param, success)
+  let url = `${baseUrl}/model-folder/get-name`;
+  httputils.postJson(url, param, success)
 }
 
 // 根据条件查询统计数量
 export function countSyncLogCount(param, success) {
-    let url = `${baseUrl}/sync-log/count`;
-    httputils.postJson(url, param, success)
+  let url = `${baseUrl}/sync-log/count`;
+  httputils.postJson(url, param, success)
 }
 
 // 查询同步日志
 export function querySyncLogCount(param, success) {
-    let url = `${baseUrl}/sync-log/query`;
-    httputils.postJson(url, param, success)
+  let url = `${baseUrl}/sync-log/query`;
+  httputils.postJson(url, param, success)
 }
 
 // 查询模型文件
 export function queryFileByModelId(param, success) {
-    let url = `${baseUrl}/model-file/query`;
-    httputils.postJson(url, param, success)
+  let url = `${baseUrl}/model-file/query`;
+  httputils.postJson(url, param, success)
 }
 
 // 模型流程监控
 export function modelPathControl(param, success) {
-    let url = `${baseUrl}/model-monitor/query`;
-    httputils.postJson(url, param, success)
+  let url = `${baseUrl}/model-monitor/query`;
+  httputils.postJson(url, param, success)
 }
 
 // 模型流程监控-获取待分配模型数量
 export function unassignQuery(param, success) {
-    let url = `${revitUrl}/task/query`;
-    httputils.postJson(url, param, success)
-}
+  let url = `${revitUrl}/task/query`;
+  httputils.postJson(url, param, success)
+}

+ 4 - 2
src/api/scan/request.js

@@ -22,7 +22,8 @@ import {
   tenant,
   dataCenter,
   classDef,
-  rel
+  rel,
+  component
 } from './config.js'
 import http from './httpUtil'
 import storage from '@/framework/utils/storage'
@@ -1953,7 +1954,8 @@ export function linkSysSh(param, success) {
 
 //根据对象删除系统和设备的关系,只针对一个对象
 export function eqInSysUnlink(param, success) {
-  let url = `${baseUrl}${dataCenter}/sy-in-eq/unlink`;
+  // let url = `${baseUrl}${dataCenter}/sy-in-eq/unlink`;
+  let url = `${baseUrl}${rel}/sy-in-eq/unlink`;
   http.postJson(url, param, success)
 }
 

+ 1 - 1
src/components/business_space/newAddDialogs/addEquipDialog.vue

@@ -120,7 +120,7 @@ export default {
           } else {
             t.Floor = []
           }
-          t.Floor.unshift({ BuildID: 'all', BuildLocalName: '全部' }, { BuildID: 'isNull', BuildLocalName: '未明确楼层' })
+          t.floor.unshift({ BuildID: 'all', BuildLocalName: '全部' }, { BuildID: 'isNull', BuildLocalName: '未明确楼层' })
           return t;
         })
         this.options.unshift({ BuildID: 'all', BuildLocalName: '全部' }, { BuildID: 'isNull', BuildLocalName: '未明确楼层' })

+ 1 - 1
src/components/business_space/newGraphy/unRelateBSP.vue

@@ -125,7 +125,7 @@ export default {
           } else {
             t.Floor = []
           }
-          t.Floor.unshift({ BuildID: 'all', BuildLocalName: '全部' }, { BuildID: 'isNull', BuildLocalName: '未明确楼层' })
+          t.floor.unshift({ BuildID: 'all', BuildLocalName: '全部' }, { BuildID: 'isNull', BuildLocalName: '未明确楼层' })
           return t;
         })
         this.options.unshift({ BuildID: 'all', BuildLocalName: '全部' }, { BuildID: 'isNull', BuildLocalName: '未明确建筑' })

+ 8 - 8
src/components/globaluploader/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: zhangyu
  * @Date: 2019-11-28 10:05:28
- * @Info: 
+ * @Info:
  * @LastEditTime : 2020-01-03 15:31:04
  -->
 <template>
@@ -131,8 +131,8 @@ export default {
         }))
       } else {
         getUploadId({
-          systemId: query.systemId?query.systemId:'revit', 
-          secret: query.secret?query.secret:'63afbef6906c342b', 
+          systemId: query.systemId?query.systemId:'revit',
+          secret: query.secret?query.secret:'63afbef6906c342b',
           overwrite: query.overwrite? query.overwrite: false,
           key: file.name
         }, res => {
@@ -140,7 +140,7 @@ export default {
             // this.params = Object.assign(query, { uploadId: res.UploadId }) || {};
             file = Object.assign(file, {
               ...query,
-              uploadId: res.UploadId 
+              uploadId: res.UploadId
             })
             this.uploader.addFile(file)
             this.setUploaderList(this.uploader.files.map(item => {
@@ -195,7 +195,7 @@ export default {
         this.statusSet(file.id, 'merging');
         if(file.file.modelId){
           //模型文件合并专用接口
-          request.mergeModelFile({ ModelId: file.file.modelId, UploadId: file.file.uploadId, Md5: file.file.md5 }, res => {
+          request.mergeModelFile({ modelId: file.file.modelId, uploadId: file.file.uploadId, md5: file.file.md5 }, res => {
             Bus.$emit('modelStatusChange')
             // 文件合并成功
             Bus.$emit('fileSuccess');
@@ -203,8 +203,8 @@ export default {
           })
         } else {
           mergeMultipart({
-            systemId: file.file.systemId?file.file.systemId:'revit', 
-            secret: file.file.secret?file.file.secret:'63afbef6906c342b', 
+            systemId: file.file.systemId?file.file.systemId:'revit',
+            secret: file.file.secret?file.file.secret:'63afbef6906c342b',
             uploadId: file.file.uploadId
           }, res => {
             // 文件合并成功
@@ -534,4 +534,4 @@ export default {
   position: absolute;
   clip: rect(0, 0, 0, 0);
 }
-</style>
+</style>

+ 2 - 2
src/components/ledger/cenote/dialog/addEquipDialog.vue

@@ -106,8 +106,8 @@ export default {
       let params = {
         data: {
           cascade: [{ name: 'equipCategory' }, { name: 'shaftList' }],
-          filters: `not equipId isNull`,
-          orders: "createTime desc, equipId desc",
+          filters: `not id isNull`,
+          orders: "createTime desc, id desc",
           pageNumber: this.page.pageNumber,
           pageSize: this.page.pageSize,
         },

+ 4 - 3
src/components/ledger/system/table/deviceTable.vue

@@ -88,7 +88,8 @@ export default {
         ]
       }
       queryLinkSys(params, res => {
-        this.tableData = res.content[0].equipment || []
+        this.tableData = res.content[0].equipmentList || []
+
       })
     },
     // 删除关系
@@ -100,8 +101,8 @@ export default {
         type: 'warning'
       }).then(() => {
         let params = {
-          EquipId: row.EquipID,
-          SysId: sysId
+          equipId: row.id,
+          sysId: sysId
         }
         this.deleteEqInSh(params);
       }).catch(() => {

+ 12 - 12
src/components/model/file/addFloorDialog.vue

@@ -188,22 +188,22 @@
           this.$message.error('该楼层名称已存在,请勿重复创建!');
         } else {
           let data = {
-            FileName: this.form.file.name,
-            FloorName: FloorName,
-            FolderId: this.FolderId,
-            RevitVersion: this.form.revitVersion,
-            Note: this.form.desc,
-            ProjectId: this.projectId,
-            ReplaceReason: null,
-            Size: this.form.file.size,
-            UserName: this.userInfo.userName,
-            UserId: this.userInfo.userId
+            fileName: this.form.file.name,
+            floorName: FloorName,
+            folderId: this.FolderId,
+            revitVersion: this.form.revitVersion,
+            note: this.form.desc,
+            projectId: this.projectId,
+            replaceReason: null,
+            size: this.form.file.size,
+            userName: this.userInfo.userName,
+            userId: this.userInfo.userId
           };
           request.modelFileUpload(data, res => {
             //  创建成功
             this.$emit("finishCreateFloor", {
-              modelId: res.ModelId,
-              uploadId: res.UploadId,
+              modelId: res.modelId,
+              uploadId: res.uploadId,
               floorId: res.floorId,
               file: this.form.file
             });

+ 3 - 3
src/components/model/file/addFolder.vue

@@ -53,7 +53,7 @@ export default {
     addFolder() {
       this.$refs["addFolderModel"].validate(valid => {
         if (valid) {
-          request.createModel({ ProjectId: this.projectId, Name:this.ruleForm.name },res => {
+          request.createModel({ projectId: this.projectId, name:this.ruleForm.name },res => {
               this.$message({
                 message: "模型文件夹创建成功",
                 type: "success"
@@ -72,7 +72,7 @@ export default {
       this.$refs["addFolderModel"].resetFields();
     },
     createModel(Name) {
-      return request.createModel({ ProjectId: this.projectId, Name });
+      return request.createModel({ projectId: this.projectId, name:Name });
     }
   },
   watch: {
@@ -81,4 +81,4 @@ export default {
     }
   }
 };
-</script>
+</script>

+ 3 - 3
src/components/model/file/changeFolderName.vue

@@ -63,7 +63,7 @@ export default {
             this.$message({ message: "文件夹名字不可与原来相同!",type:'error' });
           } else {
             request.updateModelName(
-              { Name: this.ruleForm.name, Id: this.currentFolderId },
+              { name: this.ruleForm.name, id: this.currentFolderId },
               () => {
                 this.$message({
                   message: "模型文件夹创建成功",
@@ -93,6 +93,6 @@ export default {
 </script>
 <style scoped >
 .dialog-footer {
-  
+
 }
-</style>
+</style>

+ 17 - 17
src/components/model/file/floorTable.vue

@@ -1,44 +1,44 @@
 <template>
   <div class="filterTable-container">
     <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">
+      <el-table-column prop="floorName" label="模型文件" width="180">
         <template slot-scope="scope">
-          <i v-if="scope.row.Status == 4" class="iconfont icon-yun--tianchong" style="color:#67C23A;cursor:pointer;fontSize:18px;" title="模型校验完成..."
+          <i v-if="scope.row.status == 4" class="iconfont icon-yun--tianchong" style="color:#67C23A;cursor:pointer;fontSize:18px;" title="模型校验完成..."
             @click="toPathControl(scope.row)"></i>
-          <i v-else-if="scope.row.Status == 31" class="iconfont icon-yun--tianchong1" style="color:#F56C6C;cursor:pointer;fontSize:18px;"
+          <i v-else-if="scope.row.status == 31" class="iconfont icon-yun--tianchong1" style="color:#F56C6C;cursor:pointer;fontSize:18px;"
             title="同步到数据中心出问题..." @click="toPathControl(scope.row)"></i>
-          <i v-else-if="scope.row.Status == 21" class="iconfont icon-yun--tianchong1" style="color:#F56C6C;cursor:pointer;fontSize:18px;"
+          <i v-else-if="scope.row.status == 21" class="iconfont icon-yun--tianchong1" style="color:#F56C6C;cursor:pointer;fontSize:18px;"
             title="模型数据导出出问题..." @click="toPathControl(scope.row)"></i>
           <i v-else class="iconfont icon-yun--tianchong2" style="color:#E6A23C;cursor:pointer;fontSize:18px;" title="模型校验进行中..."
             @click="toPathControl(scope.row)"></i>
-          <span style="margin-left: 10px">{{ scope.row.FloorName }}</span>
+          <span style="margin-left: 10px">{{ scope.row.floorName }}</span>
         </template>
       </el-table-column>
-      <el-table-column prop="Note" label="备注" width="240"></el-table-column>
+      <el-table-column prop="note" label="备注" width="240"></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 && scope.row.Status == 4" class="iconfont icon-warn" style="cursor:pointer;position:relative;top:1px;" title="查看版本更新信息" @click="handleClickVersion(scope.row)"></i>
+          <span style="margin-right: 5px">{{ scope.row.version }}</span>
+          <i v-show="scope.row.version && scope.row.status == 4" class="iconfont icon-warn" style="cursor:pointer;position:relative;top:1px;" title="查看版本更新信息" @click="handleClickVersion(scope.row)"></i>
         </template>
       </el-table-column>
-      <el-table-column prop="RevitVersion" label="revit版本"></el-table-column>
-      <el-table-column prop="AcceptTime" label="上传时间" width="200"></el-table-column>
-      <el-table-column prop="UserName" label="上传人"></el-table-column>
+      <el-table-column prop="revitVersion" label="revit版本"></el-table-column>
+      <el-table-column prop="acceptTime" label="上传时间" width="200"></el-table-column>
+      <el-table-column prop="userName" label="上传人"></el-table-column>
       <el-table-column prop="address" align="center" label="操作" width="240">
         <template slot-scope="scope">
-          <div class="operate" v-show="scope.row.Status == 4">
+          <div class="operate" v-show="scope.row.status == 4">
             <el-button title="下载模型" type="primary" size="mini" class="iconfont icon-download" @click="downloadModel(scope.row)"></el-button>
             <el-button title="替换模型" type="primary" size="mini" class="iconfont icon-replace" @click="repliaceModel(scope.row)"></el-button>
             <el-button title="查看版本日志" type="primary" size="mini" class="iconfont icon-Log" @click="queryModelLog(scope.row)"></el-button>
             <el-button title="下载BIMID模型" type="primary" size="mini" class="el-icon-download" @click="downloadModelBIMID(scope.row)"></el-button>
           </div>
-          <div :class="['upLoad-loading']" v-show="scope.row.Status != 4">
+          <div :class="['upLoad-loading']" v-show="scope.row.status != 4">
             <div class="progress">
-              <el-progress :text-inside="false" :stroke-width="20" :percentage="100" :color="scope.row.Status?'#909399':'#67C23A'"></el-progress>
+              <el-progress :text-inside="false" :stroke-width="20" :percentage="100" :color="scope.row.status?'#909399':'#67C23A'"></el-progress>
             </div>
             <div class="progress-right">
-              <span v-if="!scope.row.Status">上传中...</span>
-              <span v-else-if="scope.row.Status == 1">等待检查...</span>
+              <span v-if="!scope.row.status">上传中...</span>
+              <span v-else-if="scope.row.status == 1">等待检查...</span>
               <span v-else>模型检查中...</span>
 
               <!-- <span v-show="!scope.row.Status">上传中...</span>
@@ -258,4 +258,4 @@ export default {
 /deep/ .el-progress-bar__inner {
   text-align: center;
 }
-</style>
+</style>

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

@@ -3,22 +3,26 @@
   <div id="modelLog">
     <el-dialog title="模型日志" :visible.sync="modelLogVisible" width="40%" :before-close="handleClose">
       <div class="bodys">
-        <el-button v-show="filterlogData.length == 1" class="delete-model" @click="deleteModel(filterlogData[0])"><i class="iconfont icon-delete el-icon--left"></i>删除模型</el-button>
+        <el-button v-show="filterlogData.length == 1" class="delete-model" @click="deleteModel(filterlogData[0])"><i
+          class="iconfont icon-delete el-icon--left"></i>删除模型
+        </el-button>
         <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 label="版本">
                 <template slot-scope="scope">
-                  <span style="margin-right: 5px">{{ scope.row.Version }}</span>
-                  <i v-show="scope.row.Version && scope.row.Status == 4" class="iconfont icon-warn" style="cursor:pointer;" title="查看版本更新信息" @click="handleClickVersion(scope.row)"></i>
+                  <span style="margin-right: 5px">{{ scope.row.version }}</span>
+                  <i v-show="scope.row.version && scope.row.status == 4" class="iconfont icon-warn"
+                     style="cursor:pointer;" title="查看版本更新信息" @click="handleClickVersion(scope.row)"></i>
                 </template>
               </el-table-column>
-              <el-table-column prop="RevitVersion" label="revit版本"></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="revitVersion" label="revit版本"></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 title="下载模型" @click="handleClick(scope.row)" v-if="!scope.row.Removed" type='primary' size="mini" class="iconfont icon-download"></el-button>
+                  <el-button title="下载模型" @click="handleClick(scope.row)" v-if="!scope.row.removed" type='primary'
+                             size="mini" class="iconfont icon-download"></el-button>
                   <!-- 需求:先不支持删除 -->
                   <!-- <el-button @click="deleteModel(scope.row)" v-if="!scope.row.Removed" type='danger' plain size="mini">删除</el-button> -->
                 </template>
@@ -35,6 +39,7 @@
 <script>
 import request from "@/api/model/file.js";
 import versionDialog from "@/components/model/file/versionDialog";
+
 export default {
   components: {
     versionDialog
@@ -54,7 +59,7 @@ export default {
     };
   },
   computed: {
-    filterlogData: function() {
+    filterlogData: function () {
       let newLogData = [];
       if (this.logData.length) {
         this.logData.forEach(item => {
@@ -75,11 +80,11 @@ export default {
     },
     handleClick(item) {
       console.log(item);
-      let url = item.Url.match(/(\/image-service\S*)$/g)?item.Url.match(/(\/image-service\S*)$/g)[0]:''
+      let url = item.Url.match(/(\/image-service\S*)$/g) ? item.Url.match(/(\/image-service\S*)$/g)[0] : ''
       if (item.Url) {
         let a = document.createElement("a");
         a.href = url;
-        a.download =`${this.modelFolderName}${item.FloorName}模型文件v${item.Version}.rvt`;
+        a.download = `${this.modelFolderName}${item.FloorName}模型文件v${item.Version}.rvt`;
         a.click();
       } else {
         this.$message({
@@ -88,7 +93,8 @@ export default {
         });
       }
     },
-    changeModel() {},
+    changeModel() {
+    },
     /**
      * 删除模型
      *
@@ -104,8 +110,8 @@ export default {
         }
       )
         .then(() => {
-          request.deleteModelFileList({Id: item.Id}, res => {
-            if (res.Result == "success") {
+          request.deleteModelFileList({ Id: item.Id }, res => {
+            if (res.result == "success") {
               //  刷新页面
               this.$emit("deleteFinish");
               this.$message({
@@ -115,7 +121,7 @@ export default {
             } else {
               this.$message({
                 type: "error",
-                message: res.Result
+                message: res.result
               });
             }
           });
@@ -135,6 +141,7 @@ export default {
   .bodys {
     position: relative;
     padding-bottom: 30px;
+
     .delete-model {
       position: absolute;
       right: 0;

+ 96 - 62
src/components/model/file/versionDialog.vue

@@ -2,60 +2,93 @@
   <el-dialog :title="title" :visible.sync="dialog" :before-close="handleClose" width="900px">
     <div v-loading="loading" class="content">
       <el-scrollbar style="height:100%;">
-        <span>上传人:{{versionData.userName}}</span>
-        <span style="marginLeft:30px;">上传时间:{{versionData.acceptTime}}</span>
+        <span>上传人:{{ versionData.userName }}</span>
+        <span style="marginLeft:30px;">上传时间:{{ versionData.acceptTime }}</span>
         <p style="marginTop:15px;">更新内容:</p>
-        <div v-if="Object.keys(versionData.createData).length || Object.keys(versionData.deleteData).length || versionData.buildList.length">
+        <div
+          v-if="Object.keys(versionData.createData).length || Object.keys(versionData.deleteData).length || versionData.buildList.length">
           <!-- 新增设备概要内容 -->
           <el-divider v-if="Object.keys(versionData.createData).length">新增设备概要内容</el-divider>
-          <p v-if="Object.keys(versionData.createData).length" style="marginBottom:10px;">于【{{versionData.acceptTime}}】上传模型文件,新增设备实例如下:</p>
-          <p v-for="(item, key) in versionData.createData" :key="'C'+key">【{{mapType[key]}}】:【{{item.length}}】个</p>
+          <p v-if="Object.keys(versionData.createData).length" style="marginBottom:10px;">
+            于【{{ versionData.acceptTime }}】上传模型文件,新增设备实例如下:</p>
+          <p v-for="(item, key) in versionData.createData" :key="'C'+key">【{{ mapType[key] }}】:【{{ item.length }}】个</p>
           <!-- 删除设备概要内容 -->
           <el-divider v-if="Object.keys(versionData.deleteData).length">删除设备概要内容</el-divider>
-          <p v-if="Object.keys(versionData.deleteData).length" style="marginBottom:10px;">于【{{versionData.acceptTime}}】上传模型文件,删除设备实例如下:</p>
-          <p v-for="(item, key) in versionData.deleteData" :key="'D'+key">【{{mapType[key]}}】:【{{item.length}}】个</p>
+          <p v-if="Object.keys(versionData.deleteData).length" style="marginBottom:10px;">
+            于【{{ versionData.acceptTime }}】上传模型文件,删除设备实例如下:</p>
+          <p v-for="(item, key) in versionData.deleteData" :key="'D'+key">【{{ mapType[key] }}】:【{{ item.length }}】个</p>
           <!-- 土建设备概要内容 -->
           <el-divider v-if="versionData.buildList.length">土建设备概要内容</el-divider>
-          <p v-if="versionData.buildList.length" style="marginBottom:10px;">于【{{versionData.acceptTime}}】上传模型文件,增删土建设备实例如下:</p>
-          <p v-if="versionData.createWall.length">【新增实体墙】:【{{versionData.createWall.length}}】个</p>
-          <p v-if="versionData.deleteWall.length">【删除实体墙】:【{{versionData.deleteWall.length}}】个</p>
-          <p v-if="versionData.createVirtualWall.length">【新增虚拟墙】:【{{versionData.createVirtualWall.length}}】个</p>
-          <p v-if="versionData.deleteVirtualWall.length">【删除虚拟墙】:【{{versionData.deleteVirtualWall.length}}】个</p>
-          <p v-if="versionData.createColumn.length">【新增柱体】:【{{versionData.createColumn.length}}】个</p>
-          <p v-if="versionData.deleteColumn.length">【删除柱体】:【{{versionData.deleteColumn.length}}】个</p>
+          <p v-if="versionData.buildList.length" style="marginBottom:10px;">
+            于【{{ versionData.acceptTime }}】上传模型文件,增删土建设备实例如下:</p>
+          <p v-if="versionData.createWall.length">【新增实体墙】:【{{ versionData.createWall.length }}】个</p>
+          <p v-if="versionData.deleteWall.length">【删除实体墙】:【{{ versionData.deleteWall.length }}】个</p>
+          <p v-if="versionData.createVirtualWall.length">【新增虚拟墙】:【{{ versionData.createVirtualWall.length }}】个</p>
+          <p v-if="versionData.deleteVirtualWall.length">【删除虚拟墙】:【{{ versionData.deleteVirtualWall.length }}】个</p>
+          <p v-if="versionData.createColumn.length">【新增柱体】:【{{ versionData.createColumn.length }}】个</p>
+          <p v-if="versionData.deleteColumn.length">【删除柱体】:【{{ versionData.deleteColumn.length }}】个</p>
           <!-- 新增设备 -->
           <el-divider v-if="Object.keys(versionData.createData).length">新增设备</el-divider>
           <div v-for="(item, key) in versionData.createData" :key="'CL'+key">
-            <p>【{{mapType[key]}}】</p>
-            <p v-for="(obj, i) in item" :key="obj.Id">【{{i+1}}】、建筑:【{{obj.BuildingName || "无"}}】;楼层:【{{obj.FloorName || "无"}}】;设备全局id:【{{obj.ObjId || "无"}}】;BIMID:【{{obj.BimId || "无"}}】;设备本地编码:【{{obj.LocalId || "无"}}】;设备本地名称:【{{obj.LocalName || "无"}}】;CADID:【{{obj.CadId || "无"}}】;</p>
+            <p>【{{ mapType[key] }}】</p>
+            <p v-for="(obj, i) in item" :key="obj.Id">
+              【{{ i + 1 }}】、建筑:【{{ obj.BuildingName || "无" }}】;楼层:【{{
+                obj.FloorName || "无"
+              }}】;设备全局id:【{{ obj.ObjId || "无" }}】;BIMID:【{{ obj.BimId || "无" }}】;设备本地编码:【{{
+                obj.LocalId || "无"
+              }}】;设备本地名称:【{{ obj.LocalName || "无" }}】;CADID:【{{ obj.CadId || "无" }}】;</p>
           </div>
           <!-- 删除设备 -->
           <el-divider v-if="Object.keys(versionData.deleteData).length">删除设备</el-divider>
           <div v-for="(item, key) in versionData.deleteData" :key="'DL'+key">
-            <p>【{{mapType[key]}}】</p>
-            <p v-for="(obj, i) in item" :key="obj.Id">【{{i+1}}】、建筑:【{{obj.BuildingName || "无"}}】;楼层:【{{obj.FloorName || "无"}}】;设备全局id:【{{obj.ObjId || "无"}}】;BIMID:【{{obj.BimId || "无"}}】;设备本地编码:【{{obj.LocalId || "无"}}】;设备本地名称:【{{obj.LocalName || "无"}}】;CADID:【{{obj.CadId || "无"}}】;</p>
+            <p>【{{ mapType[key] }}】</p>
+            <p v-for="(obj, i) in item" :key="obj.Id">
+              【{{ i + 1 }}】、建筑:【{{ obj.BuildingName || "无" }}】;楼层:【{{
+                obj.FloorName || "无"
+              }}】;设备全局id:【{{ obj.ObjId || "无" }}】;BIMID:【{{ obj.BimId || "无" }}】;设备本地编码:【{{
+                obj.LocalId || "无"
+              }}】;设备本地名称:【{{ obj.LocalName || "无" }}】;CADID:【{{ obj.CadId || "无" }}】;</p>
           </div>
           <!-- 新增实体墙 -->
           <el-divider v-if="versionData.createWall.length">新增实体墙</el-divider>
-          <p v-for="(obj, i) in versionData.createWall" :key="obj.Id">【{{i+1}}】、建筑:【{{obj.BuildingName || "无"}}】;楼层:【{{obj.FloorName || "无"}}】;Id:【{{obj.ObjId || "无"}}】;</p>
+          <p v-for="(obj, i) in versionData.createWall" :key="obj.Id">
+            【{{ i + 1 }}】、建筑:【{{ obj.BuildingName || "无" }}】;楼层:【{{ obj.FloorName || "无" }}】;Id:【{{
+              obj.ObjId || "无"
+            }}】;</p>
           <!-- 删除实体墙 -->
           <el-divider v-if="versionData.deleteWall.length">删除实体墙</el-divider>
-          <p v-for="(obj, i) in versionData.deleteWall" :key="obj.Id">【{{i+1}}】、建筑:【{{obj.BuildingName || "无"}}】;楼层:【{{obj.FloorName || "无"}}】;Id:【{{obj.ObjId || "无"}}】;</p>
+          <p v-for="(obj, i) in versionData.deleteWall" :key="obj.Id">
+            【{{ i + 1 }}】、建筑:【{{ obj.BuildingName || "无" }}】;楼层:【{{ obj.FloorName || "无" }}】;Id:【{{
+              obj.ObjId || "无"
+            }}】;</p>
           <!-- 新增虚拟墙 -->
           <el-divider v-if="versionData.createVirtualWall.length">新增虚拟墙</el-divider>
-          <p v-for="(obj, i) in versionData.createVirtualWall" :key="obj.Id">【{{i+1}}】、建筑:【{{obj.BuildingName || "无"}}】;楼层:【{{obj.FloorName || "无"}}】;Id:【{{obj.ObjId || "无"}}】;</p>
+          <p v-for="(obj, i) in versionData.createVirtualWall" :key="obj.Id">
+            【{{ i + 1 }}】、建筑:【{{ obj.BuildingName || "无" }}】;楼层:【{{ obj.FloorName || "无" }}】;Id:【{{
+              obj.ObjId || "无"
+            }}】;</p>
           <!-- 删除虚拟墙 -->
           <el-divider v-if="versionData.deleteVirtualWall.length">删除虚拟墙</el-divider>
-          <p v-for="(obj, i) in versionData.deleteVirtualWall" :key="obj.Id">【{{i+1}}】、建筑:【{{obj.BuildingName || "无"}}】;楼层:【{{obj.FloorName || "无"}}】;Id:【{{obj.ObjId || "无"}}】;</p>
+          <p v-for="(obj, i) in versionData.deleteVirtualWall" :key="obj.Id">
+            【{{ i + 1 }}】、建筑:【{{ obj.BuildingName || "无" }}】;楼层:【{{ obj.FloorName || "无" }}】;Id:【{{
+              obj.ObjId || "无"
+            }}】;</p>
           <!-- 新增柱体 -->
           <el-divider v-if="versionData.createColumn.length">新增柱体</el-divider>
-          <p v-for="(obj, i) in versionData.createColumn" :key="obj.Id">【{{i+1}}】、建筑:【{{obj.BuildingName || "无"}}】;楼层:【{{obj.FloorName || "无"}}】;Id:【{{obj.ObjId || "无"}}】;</p>
+          <p v-for="(obj, i) in versionData.createColumn" :key="obj.Id">
+            【{{ i + 1 }}】、建筑:【{{ obj.BuildingName || "无" }}】;楼层:【{{ obj.FloorName || "无" }}】;Id:【{{
+              obj.ObjId || "无"
+            }}】;</p>
           <!-- 删除柱体 -->
           <el-divider v-if="versionData.deleteColumn.length">删除柱体</el-divider>
-          <p v-for="(obj, i) in versionData.deleteColumn" :key="obj.Id">【{{i+1}}】、建筑:【{{obj.BuildingName || "无"}}】;楼层:【{{obj.FloorName || "无"}}】;Id:【{{obj.ObjId || "无"}}】;</p>
+          <p v-for="(obj, i) in versionData.deleteColumn" :key="obj.Id">
+            【{{ i + 1 }}】、建筑:【{{ obj.BuildingName || "无" }}】;楼层:【{{ obj.FloorName || "无" }}】;Id:【{{
+              obj.ObjId || "无"
+            }}】;</p>
         </div>
         <div v-else>
-          <div style="height: 60%;transform: translateY(50%);font-weight: normal;font-size: 12px;text-align: center;color: #909399;">
+          <div
+            style="height: 60%;transform: translateY(50%);font-weight: normal;font-size: 12px;text-align: center;color: #909399;">
             <i class="icon-wushuju iconfont"></i>
             数据暂无
           </div>
@@ -73,10 +106,9 @@
 import { mapGetters } from "vuex";
 import { querySyncLogCount } from "@/api/model/file.js";
 import { getAllEqPaType } from "@/api/scan/request";
-export default {
-  components: {
 
-  },
+export default {
+  components: {},
   props: {
     dialogVisible: Boolean,
     modelFile: Object,
@@ -112,7 +144,8 @@ export default {
       },
     }
   },
-  mounted() { },
+  mounted() {
+  },
   methods: {
     // 关闭弹窗
     handleClose() {
@@ -120,32 +153,32 @@ export default {
     },
     // 获取版本信息
     getData() {
-      if(this.modelFile.Id || this.modelFile.CurrentModelId){
-        this.versionData.userName = this.modelFile.UserName;
-        this.versionData.acceptTime = this.modelFile.AcceptTime;
+      if (this.modelFile.id || this.modelFile.currentModelId) {
+        this.versionData.userName = this.modelFile.userName;
+        this.versionData.acceptTime = this.modelFile.acceptTime;
         let promise1 = new Promise((resolve, reject) => {
           querySyncLogCount({
-            Filters: `ModelId='${this.modelFile.CurrentModelId?this.modelFile.CurrentModelId:this.modelFile.Id}'`,
-            PageNumber: 1,
-            PageSize: 1000,
+            filters: `modelId='${this.modelFile.currentModelId ? this.modelFile.currentModelId : this.modelFile.id}'`,
+            pageNumber: 1,
+            pageSize: 1000,
           }, res => {
-              resolve(res)
+            resolve(res)
           })
         })
         let promise2 = new Promise((resolve, reject) => {
-            getAllEqPaType({PageNumber: 1,PageSize: 1000,}, res => {
-                resolve(res)
-            })
+          getAllEqPaType({ PageNumber: 1, PageSize: 1000, }, res => {
+            resolve(res)
+          })
         })
         Promise.all([promise1, promise2]).then(values => {
+          this.logData = values[0].content;
           let typeList = values[1].Content;
-          this.logData = values[0].Content;
           typeList.forEach(item => {
             this.mapType[item.Code] = item.Name;
           });
           console.log(this.mapType);
-          if (values[0].Total / (values[0].PageSize * values[0].PageNumber) > 1) {
-            this.queryLogData(values[0].PageNumber + 1)
+          if (values[0].total / (values[0].pageSize * values[0].pageNumber) > 1) {
+            this.queryLogData(values[0].pageNumber + 1)
           } else {
             this.formatData();
             this.loading = false;
@@ -156,39 +189,39 @@ export default {
       }
     },
     // 格式化数据
-    formatData () {
+    formatData() {
       this.logData.forEach(item => {
         if (item.Type == 'Wall' || item.Type == 'VirtualWall' || item.Type == 'Column') {
           this.versionData.buildList.push(item);
           if (item.Type == 'Wall') {
-            if(item.Operation){//创建
+            if (item.Operation) {//创建
               this.versionData.createWall.push(item);
             } else {//删除
               this.versionData.deleteWall.push(item);
             }
           } else if (item.Type == 'VirtualWall') {
-            if(item.Operation){//创建
+            if (item.Operation) {//创建
               this.versionData.createVirtualWall.push(item);
             } else {//删除
               this.versionData.deleteVirtualWall.push(item);
             }
           } else if (item.Type == 'Column') {
-            if(item.Operation){//创建
+            if (item.Operation) {//创建
               this.versionData.createColumn.push(item);
             } else {//删除
               this.versionData.deleteColumn.push(item);
             }
           }
         } else {
-          if(item.Operation){//创建
-            if(this.versionData.createData[item.Type]){
+          if (item.Operation) {//创建
+            if (this.versionData.createData[item.Type]) {
               this.versionData.createData[item.Type].push(item);
             } else {
               this.versionData.createData[item.Type] = [];
               this.versionData.createData[item.Type].push(item);
             }
           } else {//删除
-            if(this.versionData.deleteData[item.Type]){
+            if (this.versionData.deleteData[item.Type]) {
               this.versionData.deleteData[item.Type].push(item);
             } else {
               this.versionData.deleteData[item.Type] = [];
@@ -200,23 +233,23 @@ export default {
     },
     // 获取版本信息
     getVersionData() {
-      if(this.modelFile.Id || this.modelFile.CurrentModelId){
-        this.versionData.userName = this.modelFile.UserName;
-        this.versionData.acceptTime = this.modelFile.AcceptTime;
+      if (this.modelFile.id || this.modelFile.currentModelId) {
+        this.versionData.userName = this.modelFile.userName;
+        this.versionData.acceptTime = this.modelFile.acceptTime;
         this.queryLogData();
       }
     },
     queryLogData(pageNum) {
       pageNum = pageNum ? pageNum : 1
       let params = {
-        Filters: `ModelId='${this.modelFile.CurrentModelId?this.modelFile.CurrentModelId:this.modelFile.Id}'`,
-        PageNumber: pageNum,
-        PageSize: 1000,
+        filters: `modelId='${this.modelFile.currentModelId ? this.modelFile.currentModelId : this.modelFile.id}'`,
+        pageNumber: pageNum,
+        pageSize: 1000,
       }
-      querySyncLogCount(params, res =>{
-        this.logData = this.logData.concat(res.Content);//拼接数据
-        if (res.Total / (res.PageSize * res.PageNumber) > 1) {
-          this.queryLogData(res.PageNumber + 1)
+      querySyncLogCount(params, res => {
+        this.logData = this.logData.concat(res.content);//拼接数据
+        if (res.total / (res.pageSize * res.pageNumber) > 1) {
+          this.queryLogData(res.pageNumber + 1)
         } else {
           this.formatData();
           this.loading = false;
@@ -245,7 +278,7 @@ export default {
             createColumn: [],
             deleteColumn: [],
           };
-          if(Object.keys(this.mapType).length > 3) {
+          if (Object.keys(this.mapType).length > 3) {
             this.getVersionData();
           } else {
             this.getData();
@@ -258,13 +291,14 @@ export default {
 };
 </script>
 <style lang="less" scoped>
-.content{
+.content {
   height: 400px;
   font-size: 16px;
   font-weight: 650;
   color: #333;
+
   /deep/ .el-scrollbar__wrap {
     overflow-x: hidden;
   }
 }
-</style>
+</style>

+ 9 - 9
src/components/ready/buildfloor/modelFile.vue

@@ -45,10 +45,10 @@ export default {
     // 获取文件夹
     getDirectory() {
       request.queryModel("", res => {
-        this.options = res.Content.map(t => {
+        this.options = res.content.map(t => {
           return {
-            value: t.Id,
-            label: t.Name,
+            value: t.id,
+            label: t.name,
             children: []
           }
         })
@@ -57,15 +57,15 @@ export default {
     // 通过id查询文件夹下模型文件
     handleItemChange(val) {
       let data = {
-        FolderId: val[0],
-        ProjectId: this.projectId
+        folderId: val[0],
+        projectId: this.projectId
       };
       request.queryFloorList(data, res => {
-        let tempArr = res.Content.map(t => {
-          this.modelIdToFloorId[t.CurrentModelId] = t.Id;
+        let tempArr = res.content.map(t => {
+          this.modelIdToFloorId[t.currentModelId] = t.id;
           return {
-            value: t.CurrentModelId,
-            label: t.FloorName
+            value: t.currentModelId,
+            label: t.floorName
           }
         })
         this.pushChild(this.options, tempArr, val[0])

+ 4 - 4
src/components/ready/buildfloor/modelFolder.vue

@@ -45,10 +45,10 @@ export default {
     // 获取文件夹
     getDirectory() {
       request.queryModel("", res => {
-        this.options = res.Content.map(t => {
+        this.options = res.content.map(t => {
           return {
-            value: t.Id,
-            label: t.Name
+            value: t.id,
+            label: t.name,
           }
         })
       });
@@ -80,4 +80,4 @@ export default {
     font-size: 14px;
   }
 }
-</style>
+</style>

+ 168 - 155
src/framework/layout/Login.vue

@@ -1,119 +1,123 @@
 <template>
-    <div class='login-container'>
-        <el-form
-            class='card-box login-form'
-            autocomplete='on'
-            :model='loginForm'
-            :rules='loginRules'
-            ref='loginForm'
-            label-position='left'
-        >
-            <h3 class='title'>系统登录</h3>
-            <el-form-item prop='username'>
+  <div class='login-container'>
+    <el-form
+      class='card-box login-form'
+      autocomplete='on'
+      :model='loginForm'
+      :rules='loginRules'
+      ref='loginForm'
+      label-position='left'
+    >
+      <h3 class='title'>系统登录</h3>
+      <el-form-item prop='username'>
                 <span class='svg-container svg-container_login'>
                     <i class='el-icon-fa-user-o'></i>
                 </span>
-                <el-input name='username' type='text' v-model='loginForm.username' autocomplete='on' placeholder='邮箱'/>
-            </el-form-item>
-            <el-form-item prop='password'>
+        <el-input name='username' type='text' v-model='loginForm.username' autocomplete='on' placeholder='邮箱'/>
+      </el-form-item>
+      <el-form-item prop='password'>
                 <span class='svg-container'>
                     <i class='el-icon-fa-key'></i>
                 </span>
-                <el-input
-                    name='password'
-                    type='password'
-                    v-model='loginForm.password'
-                    placeholder='密码'
-                    @keyup.enter.native.prevent='handleLogin'
-                />
-            </el-form-item>
-            <el-button
-                type='primary'
-                style='width:100%;margin-bottom:30px;'
-                :loading='loading'
-                @click.native.prevent='handleLogin'
-            >登录</el-button>
-        </el-form>
-    </div>
+        <el-input
+          name='password'
+          type='password'
+          v-model='loginForm.password'
+          placeholder='密码'
+          @keyup.enter.native.prevent='handleLogin'
+        />
+      </el-form-item>
+      <el-button
+        type='primary'
+        style='width:100%;margin-bottom:30px;'
+        :loading='loading'
+        @click.native.prevent='handleLogin'
+      >登录
+      </el-button>
+    </el-form>
+  </div>
 </template>
 <script>
 function isvalidUsername(val) {
-    return true
+  return true
 }
+
 import frameworkApi from '@/api/framework'
 import { mapActions, mapGetters } from 'vuex'
+
 export default {
-    components: {},
-    name: 'login',
-    data() {
-        const validateUsername = (rule, value, callback) => {
-            if (!isvalidUsername(value)) {
-                callback(new Error('请输入正确的用户名'))
-            } else {
-                callback()
-            }
-        }
-        const validatePassword = (rule, value, callback) => {
-            if (value.length < 6) {
-                callback(new Error('密码不能小于6位'))
-            } else {
-                callback()
-            }
-        }
-        return {
-            loginForm: {
-                username: 'admin',
-                password: '123456'
-            },
-            loginRules: {
-                username: [
-                    {
-                        required: true,
-                        trigger: 'blur',
-                        validator: validateUsername
-                    }
-                ],
-                password: [
-                    {
-                        required: true,
-                        trigger: 'blur',
-                        validator: validatePassword
-                    }
-                ]
-            },
-            loading: false
-        }
-    },
-    computed: {
-        //...mapGetters(['beforeUrl'])
-    },
-    methods: {
-        async handleLogin() {
-            let vm = this
-            vm.$refs.loginForm.validate(valid => {
-                if (valid) {
-                    let username = this.loginForm.username
-                    let password = this.loginForm.password
-                    frameworkApi.login(username, password).then(resp => {
-                        console.log('login result => ', resp)
-                        if (resp.result == 'success') {
-                            this.$store.dispatch('layout/loadUserInfo').then(resp => {
-                                console.log('store dispatch result ', resp)
-                                if (resp.result == 'success') {
-                                    vm.$router.push('/demo/table', () => {})
-                                } else {
-                                }
-                            })
-                        } else {
-                        }
-                    })
+  components: {},
+  name: 'login',
+  data() {
+    const validateUsername = (rule, value, callback) => {
+      if (!isvalidUsername(value)) {
+        callback(new Error('请输入正确的用户名'))
+      } else {
+        callback()
+      }
+    }
+    const validatePassword = (rule, value, callback) => {
+      if (value.length < 6) {
+        callback(new Error('密码不能小于6位'))
+      } else {
+        callback()
+      }
+    }
+    return {
+      loginForm: {
+        username: 'admin',
+        password: '123456'
+      },
+      loginRules: {
+        username: [
+          {
+            required: true,
+            trigger: 'blur',
+            validator: validateUsername
+          }
+        ],
+        password: [
+          {
+            required: true,
+            trigger: 'blur',
+            validator: validatePassword
+          }
+        ]
+      },
+      loading: false
+    }
+  },
+  computed: {
+    //...mapGetters(['beforeUrl'])
+  },
+  methods: {
+    async handleLogin() {
+      let vm = this
+      vm.$refs.loginForm.validate(valid => {
+        if (valid) {
+          let username = this.loginForm.username
+          let password = this.loginForm.password
+          frameworkApi.login(username, password).then(resp => {
+            console.log('login result => ', resp)
+            if (resp.result == 'success') {
+              this.$store.dispatch('layout/loadUserInfo').then(resp => {
+                console.log('store dispatch result ', resp)
+                if (resp.result == 'success') {
+                  vm.$router.push('/demo/table', () => {
+                  })
                 } else {
-                    console.log('error submit!!')
-                    return false
                 }
-            })
+              })
+            } else {
+            }
+          })
+        } else {
+          console.log('error submit!!')
+          return false
         }
+      })
     }
+  }
 }
 </script>
 <style rel="stylesheet/scss" lang="scss">
@@ -121,62 +125,71 @@ $bg: #2d3a4b;
 $dark_gray: #889aa4;
 $light_gray: #eee;
 .login-container {
-    height: 100vh;
-    background-color: $bg;
-    input:-webkit-autofill {
-        -webkit-box-shadow: 0 0 0px 1000px #293444 inset !important;
-        -webkit-text-fill-color: #fff !important;
-    }
-    input {
-        background: transparent;
-        border: 0px;
-        -webkit-appearance: none;
-        border-radius: 0px;
-        padding: 12px 5px 12px 15px;
-        color: $light_gray;
-        height: 47px;
-    }
-    .el-input {
-        display: inline-block;
-        height: 47px;
-        width: 85%;
-    }
-    .tips {
-        font-size: 14px;
-        color: #fff;
-        margin-bottom: 10px;
-    }
-    .svg-container {
-        padding: 6px 5px 6px 15px;
-        color: $dark_gray;
-        vertical-align: middle;
-        width: 30px;
-        display: inline-block;
-        &_login {
-            font-size: 20px;
-        }
-    }
-    .title {
-        font-size: 26px;
-        font-weight: 400;
-        color: $light_gray;
-        margin: 0px auto 40px auto;
-        text-align: center;
-        font-weight: bold;
-    }
-    .login-form {
-        position: absolute;
-        left: 0;
-        right: 0;
-        width: 400px;
-        padding: 35px 35px 15px 35px;
-        margin: 120px auto;
-    }
-    .el-form-item {
-        border: 1px solid rgba(255, 255, 255, 0.1);
-        background: rgba(0, 0, 0, 0.1);
-        border-radius: 5px;
-        color: #454545;
+  height: 100vh;
+  background-color: $bg;
+
+  input:-webkit-autofill {
+    -webkit-box-shadow: 0 0 0px 1000px #293444 inset !important;
+    -webkit-text-fill-color: #fff !important;
+  }
+
+  input {
+    background: transparent;
+    border: 0px;
+    -webkit-appearance: none;
+    border-radius: 0px;
+    padding: 12px 5px 12px 15px;
+    color: $light_gray;
+    height: 47px;
+  }
+
+  .el-input {
+    display: inline-block;
+    height: 47px;
+    width: 85%;
+  }
+
+  .tips {
+    font-size: 14px;
+    color: #fff;
+    margin-bottom: 10px;
+  }
+
+  .svg-container {
+    padding: 6px 5px 6px 15px;
+    color: $dark_gray;
+    vertical-align: middle;
+    width: 30px;
+    display: inline-block;
+
+    &_login {
+      font-size: 20px;
     }
+  }
+
+  .title {
+    font-size: 26px;
+    font-weight: 400;
+    color: $light_gray;
+    margin: 0px auto 40px auto;
+    text-align: center;
+    font-weight: bold;
+  }
+
+  .login-form {
+    position: absolute;
+    left: 0;
+    right: 0;
+    width: 400px;
+    padding: 35px 35px 15px 35px;
+    margin: 120px auto;
+  }
+
+  .el-form-item {
+    border: 1px solid rgba(255, 255, 255, 0.1);
+    background: rgba(0, 0, 0, 0.1);
+    border-radius: 5px;
+    color: #454545;
+  }
 }
-</style>
+</style>

+ 75 - 72
src/framework/layout/Main.vue

@@ -1,87 +1,90 @@
 <template>
-    <div id='page-main' v-bind:class='{"page-sidebar-closed": sidebarClosed}'>
-        <page-header></page-header>
+  <div id='page-main' v-bind:class='{"page-sidebar-closed": sidebarClosed}'>
+    <page-header></page-header>
 
-        <div id='page-container' class='page-container'>            
-            <page-sidebar></page-sidebar>            
-            <div id='page-content-wrapper' class='page-content-wrapper'>
-                <div class='page-bar'>
-                    <el-breadcrumb separator='/'>
-                    <el-breadcrumb-item v-show="!breadcrumb.length"  :to='{ path: "/" }'>首页</el-breadcrumb-item>
-                    <el-breadcrumb-item v-show="breadcrumb.length" v-for='(b, index) in breadcrumb' :key='index' :to='b.path ? { path: b.path } : null'>{{b.label}}</el-breadcrumb-item>                       
-                    </el-breadcrumb>
-                </div>
-                <!-- <router-view class='page-content'/> -->
-                <keep-alive>
-                    <router-view v-if='$route.meta.keepAlive' class='page-content'></router-view>
-                </keep-alive>
-                <router-view v-if='!$route.meta.keepAlive' class='page-content'></router-view>
-            </div>
+    <div id='page-container' class='page-container'>
+      <page-sidebar></page-sidebar>
+      <div id='page-content-wrapper' class='page-content-wrapper'>
+        <div class='page-bar'>
+          <el-breadcrumb separator='/'>
+            <el-breadcrumb-item v-show="!breadcrumb.length" :to='{ path: "/" }'>首页</el-breadcrumb-item>
+            <el-breadcrumb-item v-show="breadcrumb.length" v-for='(b, index) in breadcrumb' :key='index'
+                                :to='b.path ? { path: b.path } : null'>{{ b.label }}
+            </el-breadcrumb-item>
+          </el-breadcrumb>
         </div>
-        <!-- <div class='page-footer'>
-            © 2016 SAGACLOUD. All rights reserved 京ICP备16059843号-1
-        </div>-->
+        <!-- <router-view class='page-content'/> -->
+        <keep-alive>
+          <router-view v-if='$route.meta.keepAlive' class='page-content'></router-view>
+        </keep-alive>
+        <router-view v-if='!$route.meta.keepAlive' class='page-content'></router-view>
+      </div>
     </div>
+    <!-- <div class='page-footer'>
+        © 2016 SAGACLOUD. All rights reserved 京ICP备16059843号-1
+    </div>-->
+  </div>
 </template>
 <script>
 import { mapGetters, mapMutations } from 'vuex'
 import PageHeader from './PageHeader'
 import PageSidebar from './PageSidebar'
-import menus from '@/data/menus' 
+import menus from '@/data/menus'
+
 export default {
-    name: 'Main',
-    components: {
-        'page-header': PageHeader,
-        'page-sidebar': PageSidebar
+  name: 'Main',
+  components: {
+    'page-header': PageHeader,
+    'page-sidebar': PageSidebar
+  },
+  props: [],
+  data() {
+    return {
+      isPath: false
+    }
+  },
+  computed: {
+    ...mapGetters('layout', ['sidebarClosed', 'breadcrumb'])
+  },
+  methods: {
+    ...mapMutations('layout', ['setSidebarClosed', 'setSidebarSelected']),
+    windwoResize() {
+      // 窗口大小发生变化时
+      let clientWidth = `${document.documentElement.clientWidth}`
+      let clientHeight = `${document.documentElement.clientHeight}`
+      //this.setPageContentHeight(height)
+      if (clientWidth > 1000) {
+        this.setSidebarClosed(false)
+      } else if (clientWidth > 800) {
+        this.setSidebarClosed(true)
+      } else {
+        this.setSidebarClosed(false)
+      }
     },
-    props: [],
-    data() {
-        return {
-            isPath:  false
+    findPathInArray(arr, path) {
+      arr.forEach(ele => {
+        if (ele.path == path) {
+          this.isPath = true
         }
-    },
-    computed: {
-        ...mapGetters('layout', ['sidebarClosed', 'breadcrumb'])
-    },
-    methods: {
-        ...mapMutations('layout', ['setSidebarClosed','setSidebarSelected']),
-        windwoResize() {
-            // 窗口大小发生变化时
-            let clientWidth = `${document.documentElement.clientWidth}`
-            let clientHeight = `${document.documentElement.clientHeight}`
-            //this.setPageContentHeight(height)
-            if (clientWidth > 1000) {
-                this.setSidebarClosed(false)
-            } else if (clientWidth > 800) {
-                this.setSidebarClosed(true)
-            } else {
-                this.setSidebarClosed(false)
-            }
-        },
-        findPathInArray(arr, path) {
-            arr.forEach(ele => {
-                if(ele.path == path) {
-                    this.isPath = true
-                }
-                if(ele.children) {
-                   this.findPathInArray(ele.children, path)
-                }
-            })
+        if (ele.children) {
+          this.findPathInArray(ele.children, path)
         }
-    },
-    watch: {
-        "$route": {
-            handler: function(route, oldVal){
-                let path = route.path
-                this.isPath = false;
-                this.findPathInArray(menus,path)
-                if(this.isPath) {
-                    this.setSidebarSelected(path)
-                }
-            },
-            // 深度观察监听
-            deep: true
+      })
+    }
+  },
+  watch: {
+    "$route": {
+      handler: function (route, oldVal) {
+        let path = route.path
+        this.isPath = false;
+        this.findPathInArray(menus, path)
+        if (this.isPath) {
+          this.setSidebarSelected(path)
         }
-    },
+      },
+      // 深度观察监听
+      deep: true
+    }
+  },
 }
-</script>
+</script>

+ 137 - 127
src/framework/layout/PageHeader.vue

@@ -1,43 +1,43 @@
 <template>
-    <div class='page-header'>
-        <div id='page-header-logo' class='page-logo'>
-            <a @click="toIndex">
-                <img src='@/assets/logo.png' alt='logo' class='logo-default'>
-            </a>
-            <div class='menu-toggler sidebar-toggler' @click.stop='toggleSidebar'>
+  <div class='page-header'>
+    <div id='page-header-logo' class='page-logo'>
+      <a @click="toIndex">
+        <img src='@/assets/logo.png' alt='logo' class='logo-default'>
+      </a>
+      <div class='menu-toggler sidebar-toggler' @click.stop='toggleSidebar'>
                 <span>
                     <i class='el-icon-fa-bars'></i>
                 </span>
-            </div>
-        </div>
-        <div id='page-header-data-menu' class='data-menu'>
-            <el-select v-model='selectedProjectId' placeholder='请选择' filterable>
-                <el-option-group v-for="group in projectGropList" :key="group.label" :label="group.label">
-                    <el-option v-for='item in group.options' :key='item.id' :label='item.name' :value='item.id'></el-option>
-                </el-option-group>
-            </el-select>
-        </div>
-        <div id='page-header-user-menu' class='user-menu'>
-            <el-dropdown trigger='hover' class='user-menu-dropdown' @command='userMenuCommand'>
+      </div>
+    </div>
+    <div id='page-header-data-menu' class='data-menu'>
+      <el-select v-model='selectedProjectId' placeholder='请选择' filterable>
+        <el-option-group v-for="group in projectGropList" :key="group.label" :label="group.label">
+          <el-option v-for='item in group.options' :key='item.id' :label='item.name' :value='item.id'></el-option>
+        </el-option-group>
+      </el-select>
+    </div>
+    <div id='page-header-user-menu' class='user-menu'>
+      <el-dropdown trigger='hover' class='user-menu-dropdown' @command='userMenuCommand'>
                 <span class='el-dropdown-link'>
-                    {{userInfo.userName}}
+                    {{ userInfo.userName }}
                     <i class='el-icon-fa-user el-icon--right'></i>
                 </span>
-                <el-dropdown-menu slot='dropdown'>
-                    <el-dropdown-item icon='el-icon-plus' command='logout'>退出</el-dropdown-item>
-                    <el-dropdown-item icon='el-icon-circle-plus'>修改密码</el-dropdown-item>
-                </el-dropdown-menu>
-            </el-dropdown>
-            <ul class="header-nav">
-                <li class="header-nav-Splitscreen">
-                    <a href="/splitScreen" target="_blank"><i class="el-icon-s-platform"></i></a>
-                </li>
-                <li class="header-nav-notification">
-                    <message-sever></message-sever>
-                </li>
-            </ul>
-        </div>
+        <el-dropdown-menu slot='dropdown'>
+          <el-dropdown-item icon='el-icon-plus' command='logout'>退出</el-dropdown-item>
+          <el-dropdown-item icon='el-icon-circle-plus'>修改密码</el-dropdown-item>
+        </el-dropdown-menu>
+      </el-dropdown>
+      <ul class="header-nav">
+        <li class="header-nav-Splitscreen">
+          <a href="/splitScreen" target="_blank"><i class="el-icon-s-platform"></i></a>
+        </li>
+        <li class="header-nav-notification">
+          <message-sever></message-sever>
+        </li>
+      </ul>
     </div>
+  </div>
 </template>
 <script>
 import frameworkApi from '@/api/framework'
@@ -45,112 +45,122 @@ import { mapGetters, mapMutations } from 'vuex'
 import getFirstLetter from '@/utils/getFirstLetter'
 import MessageSever from '../components/messagesever/index'
 import lStorage from '@/utils/localStorage'
+
 export default {
-    name: 'PageHeader',
-    props: [],
-    data() {
-        return {
-            selectedProjectId: null
+  name: 'PageHeader',
+  props: [],
+  data() {
+    return {
+      selectedProjectId: null
+    }
+  },
+  computed: {
+    ...mapGetters('layout', ['sidebarClosed', 'userInfo', 'projects', 'projectId']),
+    projectGropList() {
+      const cacheInfo = lStorage.get('historyInfo') ? lStorage.get('historyInfo') : {}
+      let options = [{
+        label: '最近使用',
+        options: []
+      }]
+      const projectHistory = cacheInfo[this.userInfo.userName] || [];
+      let copyProjects = JSON.parse(JSON.stringify(this.projects));
+      options[0].options = projectHistory.map(projectId => {
+        let obj = this.projects.find(project => {
+          return project.id === projectId
+        });
+        let index = copyProjects.findIndex(project => {
+          return project.id === projectId
+        })
+        if (index != -1) {
+          copyProjects.splice(index, 1);
         }
-    },
-    computed: {
-        ...mapGetters('layout', ['sidebarClosed', 'userInfo', 'projects', 'projectId']),
-        projectGropList () {
-            const cacheInfo = lStorage.get('historyInfo')?lStorage.get('historyInfo'):{}
-            let options = [{
-                label: '最近使用',
-                options: []
-            }]
-            const projectHistory = cacheInfo[this.userInfo.userName] || [];
-            let copyProjects = JSON.parse(JSON.stringify(this.projects));
-            options[0].options = projectHistory.map(projectId => {
-                let obj = this.projects.find(project => {
-                    return project.id === projectId
-                });
-                let index = copyProjects.findIndex(project => {
-                    return project.id === projectId
-                })
-                if (index != -1) {
-                    copyProjects.splice(index, 1);
-                }
-                return obj?obj:[]
-            })
+        return obj ? obj : []
+      })
 
-            let helpObj = {}
-            copyProjects.forEach(p => {
-                const label = getFirstLetter((p.name || p.id).slice(0, 1))
-                if (helpObj[label]) {
-                    helpObj[label].push(p)
-                } else {
-                    helpObj[label] = [p]
-                }
-            })
-            const arr = Object.keys(helpObj).sort().map(label => {
-                return {
-                    label: label,
-                    options: helpObj[label]
-                }
-            })
-            return [...(options[0].options.length > 0 ? options : []), ...arr]
+      let helpObj = {}
+      copyProjects.forEach(p => {
+        const label = getFirstLetter((p.name || p.id).slice(0, 1))
+        if (helpObj[label]) {
+          helpObj[label].push(p)
+        } else {
+          helpObj[label] = [p]
         }
-    },
-    watch: {
-        selectedProjectId(n, o) {
-            this.setprojectId(n)
+      })
+      const arr = Object.keys(helpObj).sort().map(label => {
+        return {
+          label: label,
+          options: helpObj[label]
         }
+      })
+      return [...(options[0].options.length > 0 ? options : []), ...arr]
+    }
+  },
+  watch: {
+    selectedProjectId(n, o) {
+      this.setprojectId(n)
+    }
+  },
+  methods: {
+    ...mapMutations('layout', ['setSidebarClosed', 'setprojectId']),
+    handleSelect() {
     },
-    methods: {
-        ...mapMutations('layout', ['setSidebarClosed', 'setprojectId']),
-        handleSelect() {},
-        toggleSidebar() {
-            this.setSidebarClosed(!this.sidebarClosed)
-        },
-        userMenuCommand(cmd) {
-            // console.log('userMenuCommand ', cmd)
-            if (cmd == 'logout') {
-                console.log("点击登出l")
-                frameworkApi.toLogout()
-            }
-        },
-        toIndex() {
-            this.$router.push('/')
-        }
+    toggleSidebar() {
+      this.setSidebarClosed(!this.sidebarClosed)
     },
-    created() {
-        let cacheInfo = lStorage.get('historyInfo')?lStorage.get('historyInfo'):{}
-        if(cacheInfo[this.userInfo.userName] && 
-            cacheInfo[this.userInfo.userName][0] && 
-            this.projects.some((item) => {return item.id == cacheInfo[this.userInfo.userName][0]})
-        ){
-            this.selectedProjectId = cacheInfo[this.userInfo.userName][0]
-        } else {
-            this.selectedProjectId = this.projectId
-        }
+    userMenuCommand(cmd) {
+      debugger
+      // console.log('userMenuCommand ', cmd)
+      if (cmd == 'logout') {
+        console.log("点击登出l")
+        frameworkApi.toLogout()
+      }
     },
-    mounted() {},
-    components: {
-        MessageSever
+    toIndex() {
+      this.$router.push('/')
+    }
+  },
+  created() {
+    let cacheInfo = lStorage.get('historyInfo') ? lStorage.get('historyInfo') : {}
+    if (cacheInfo[this.userInfo.userName] &&
+      cacheInfo[this.userInfo.userName][0] &&
+      this.projects.some((item) => {
+        return item.id == cacheInfo[this.userInfo.userName][0]
+      })
+    ) {
+      this.selectedProjectId = cacheInfo[this.userInfo.userName][0]
+    } else {
+      this.selectedProjectId = this.projectId
     }
+  },
+  mounted() {
+  },
+  components: {
+    MessageSever
+  }
 }
 </script>
 <style lang="scss" scoped>
-.header-nav-Splitscreen>a{
-    display: flex;
-    width: 100%;
-    height: 100%;
-    position: relative;
-    padding: 16px 10px 10px;
-    -webkit-box-sizing: border-box;
-    box-sizing: border-box;
-    color: #79869a;
-    font-size: 24px;
-    text-decoration: none;
-    cursor: pointer;
-    i{transition:all 0ms ease 0ms}
+.header-nav-Splitscreen > a {
+  display: flex;
+  width: 100%;
+  height: 100%;
+  position: relative;
+  padding: 16px 10px 10px;
+  -webkit-box-sizing: border-box;
+  box-sizing: border-box;
+  color: #79869a;
+  font-size: 24px;
+  text-decoration: none;
+  cursor: pointer;
+
+  i {
+    transition: all 0ms ease 0ms
+  }
 }
-.header-nav-Splitscreen>a:hover{
-    text-decoration: none;
-    color: #d3d8e2;
-    background-color: #3f4f62;
+
+.header-nav-Splitscreen > a:hover {
+  text-decoration: none;
+  color: #d3d8e2;
+  background-color: #3f4f62;
 }
-</style>
+</style>

+ 89 - 89
src/framework/layout/layout-store.js

@@ -8,111 +8,111 @@ const KEY_PAGE_BRANDCRUMB = 'page_brandcrumb'
 
 export default {
   namespaced: true,
-    state: {
-      sidebarClosed: false,
-      sidebarSelected: '', // sidebar选中的选项
-      userInfo: null, //{ username: 'admin' },
-      permissions: {
-        "system:role:delete": true,
-        "system:role:create": true,
-        "system:role:query": true,
-        "system:role:setOpts": true
-      },
-      projectId: '',
-      projects: [],
-      breadcrumb: [],
-      uploaderList: [], //当前上传文件列表
-      secret: "", //项目密码
-      userId: "", //用户id
-      rowEdit: false,//表格数据变化
-      errorReport:[],//扫楼错误报告
+  state: {
+    sidebarClosed: false,
+    sidebarSelected: '', // sidebar选中的选项
+    userInfo: null, //{ username: 'admin' },
+    permissions: {
+      "system:role:delete": true,
+      "system:role:create": true,
+      "system:role:query": true,
+      "system:role:setOpts": true
     },
-    getters: {
-      sidebarClosed: state => state.sidebarClosed,
-      secret: state => state.secret,
-      userId: state => state.userId,
-      sidebarSelected: state => {
-        // if (!state.pageSidebarSelected) {
-        //     let menu = storage.get(KEY_MENU_SELECTED)
-        //     if (menu) {
-        //         state.pageSidebarSelected = menu
-        //     }
-        // }
-        // return state.pageSidebarSelected
-        return state.sidebarSelected
-      },
-      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)
-          if (pid) {
-            state.projectId = pid
-          }
+    projectId: '',
+    projects: [],
+    breadcrumb: [],
+    uploaderList: [], //当前上传文件列表
+    secret: "", //项目密码
+    userId: "", //用户id
+    rowEdit: false,//表格数据变化
+    errorReport: [],//扫楼错误报告
+  },
+  getters: {
+    sidebarClosed: state => state.sidebarClosed,
+    secret: state => state.secret,
+    userId: state => state.userId,
+    sidebarSelected: state => {
+      // if (!state.pageSidebarSelected) {
+      //     let menu = storage.get(KEY_MENU_SELECTED)
+      //     if (menu) {
+      //         state.pageSidebarSelected = menu
+      //     }
+      // }
+      // return state.pageSidebarSelected
+      return state.sidebarSelected
+    },
+    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)
+        if (pid) {
+          state.projectId = pid
         }
-        return state.projectId
-      },
-      breadcrumb: state => {
-        if (!state.breadcrumb) {
-          let arr = storage.get(KEY_PAGE_BRANDCRUMB)
-          if (arr) {
-            state.breadcrumb = arr
-          }
+      }
+      return state.projectId
+    },
+    breadcrumb: state => {
+      if (!state.breadcrumb) {
+        let arr = storage.get(KEY_PAGE_BRANDCRUMB)
+        if (arr) {
+          state.breadcrumb = arr
         }
-        return state.breadcrumb
       }
+      return state.breadcrumb
+    }
+  },
+  mutations: {
+    setRowEdit: (state, val) => (state.rowEdit = val),
+    setErrorReport: (state, val) => (state.errorReport = val),
+    setSidebarClosed: (state, val) => (state.sidebarClosed = val),
+    setSidebarSelected: (state, val) => {
+      state.sidebarSelected = val
+      storage.set(KEY_MENU_SELECTED, val)
+      lStorage.set('screen_data', { path: val, data: {} })
     },
-    mutations: {
-      setRowEdit: (state, val) => (state.rowEdit = val),
-      setErrorReport:(state,val) => (state.errorReport = val),
-      setSidebarClosed: (state, val) => (state.sidebarClosed = val),
-      setSidebarSelected: (state, val) => {
-        state.sidebarSelected = val
-        storage.set(KEY_MENU_SELECTED, val)
-        lStorage.set('screen_data', {path: val, data: {}})
-      },
-      setprojectId: (state, val) => {
-        lStorage.remove('cacheInfo') //待删除(删除用户浏览器无用缓存)
-        let cacheInfo = lStorage.get('historyInfo') ? lStorage.get('historyInfo') : {}
-        state.projectId = val
-        localStorage.setItem('projectId', val)
-        if (cacheInfo[state.userInfo.userName]) {
-          // cacheInfo[state.userInfo.userName].projectId = val
-          cacheInfo[state.userInfo.userName] = [...new Set([val, ...cacheInfo[state.userInfo.userName]])].slice(0,3)
-          lStorage.set('historyInfo', cacheInfo)
-        } else {
-          cacheInfo[state.userInfo.userName] = [val]
-          lStorage.set('historyInfo', cacheInfo)
+    setprojectId: (state, val) => {
+      lStorage.remove('cacheInfo') //待删除(删除用户浏览器无用缓存)
+      let cacheInfo = lStorage.get('historyInfo') ? lStorage.get('historyInfo') : {}
+      state.projectId = val
+      localStorage.setItem('projectId', val)
+      if (cacheInfo[state.userInfo.userName]) {
+        // cacheInfo[state.userInfo.userName].projectId = val
+        cacheInfo[state.userInfo.userName] = [...new Set([val, ...cacheInfo[state.userInfo.userName]])].slice(0, 3)
+        lStorage.set('historyInfo', cacheInfo)
+      } else {
+        cacheInfo[state.userInfo.userName] = [val]
+        lStorage.set('historyInfo', cacheInfo)
+      }
+      storage.set(KEY_PROJECT_SELECTED, val)
+      state.projects.map((item) => {
+        if (item.id == val) {
+          state.secret = item.pwd
+          localStorage.setItem('secret', item.pwd)
         }
-        storage.set(KEY_PROJECT_SELECTED, val)
-        state.projects.map((item) => {
-          if (item.id == val) {
-            state.secret = item.pwd
-            localStorage.setItem('secret', item.pwd)
-          }
-        })
-      },
-      setUploaderList: (state, val) => {
-        state.uploaderList = val ? val : []
-      },
-
+      })
+    },
+    setUploaderList: (state, val) => {
+      state.uploaderList = val ? val : []
     },
+
+  },
   actions: {
     setRowEdit(contentx, value) {
       contentx.commit('setRowEdit', value)
     },
-    setErrorReport(contentx,value) {
-      contentx.commit('setErrorReport',value)
+    setErrorReport(contentx, value) {
+      contentx.commit('setErrorReport', value)
     },
-    loadUserInfo({state}) {
+    loadUserInfo({ state }) {
       console.log(state)
       return new Promise((resolve, reject) => {
         frameworkApi.loadUserInfo().then(resp => {
           console.log(resp)
           if (resp.Result == 'success' && resp.UserId) {
-            state.userInfo = {userName: resp.Username, userId: resp.UserId}
+            state.userInfo = { userName: resp.Username, userId: resp.UserId }
             state.userId = resp.UserId
             storage.set('user_name', resp.Username)
             storage.set('user_id', resp.UserId)
@@ -144,7 +144,7 @@ export default {
     },
     setBreadcrumb: {
       root: true,
-      handler({state, commit}, val) {
+      handler({ state, commit }, val) {
         let label = val[0].label;
         if (label === "消息中心") {
           commit("setSidebarSelected", "message"); // 当进入消息中心页面的时候不选中导航栏

+ 97 - 97
src/utils/authutils.js

@@ -5,113 +5,113 @@ import session from "@/framework/utils/storage"
 import { MessageBox } from 'element-ui'
 
 function toLogin() {
-    let ssoServer = process.env.SSO_SERVER
-    let redirectUrl = window.location.protocol + '//' + window.location.host
-    console.log('tologin ', `${ssoServer}/login?redirectUrl=${redirectUrl}/auth`)
-    window.location.href = `${ssoServer}/login?redirectUrl=${redirectUrl}/auth`
+  let ssoServer = process.env.SSO_SERVER
+  let redirectUrl = window.location.protocol + '//' + window.location.host
+  console.log('tologin ', `${ssoServer}/login?redirectUrl=${redirectUrl}/auth`)
+  window.location.href = `${ssoServer}/login?redirectUrl=${redirectUrl}/auth`
 }
 
 function checkMenu(menu, ps) {
-    let result = { name: menu.name, icon: menu.icon, path: menu.path }
-    if (menu.children) {
-        // 如果有下级菜单权限,则自动拥有上级菜单权限
-        result.children = []
-        menu.children.forEach(child => {
-            let submenu = checkMenu(child, ps)
-            if (submenu) {
-                result.children.push(submenu)
-            }
-        })
-        return result.children.length > 0 ? result : null
-    } else if (menu.opts) {
-        return menu.opts.some(opt => ps[opt.permission]) ? result : null
-    } else {
-        // 如果没有下级菜单且没有opts属性, 菜单可以直接访问,不需要权限
-        return result
-    }
+  let result = { name: menu.name, icon: menu.icon, path: menu.path }
+  if (menu.children) {
+    // 如果有下级菜单权限,则自动拥有上级菜单权限
+    result.children = []
+    menu.children.forEach(child => {
+      let submenu = checkMenu(child, ps)
+      if (submenu) {
+        result.children.push(submenu)
+      }
+    })
+    return result.children.length > 0 ? result : null
+  } else if (menu.opts) {
+    return menu.opts.some(opt => ps[opt.permission]) ? result : null
+  } else {
+    // 如果没有下级菜单且没有opts属性, 菜单可以直接访问,不需要权限
+    return result
+  }
 }
 
 export default {
-    /**
-     *  路由守卫, 每次路由跳转时验证登录
-     * @param {*} to
-     * @param {*} from
-     * @param {*} next
-     */
-    routerBeforeEach: async function(to, from, next) {
-        console.log('router before ', to)
-        if (to.path == '/auth' || to.path == '/nouser') {
+  /**
+   *  路由守卫, 每次路由跳转时验证登录
+   * @param {*} to
+   * @param {*} from
+   * @param {*} next
+   */
+  routerBeforeEach: async function (to, from, next) {
+    console.log('router before ', to)
+    if (to.path == '/auth' || to.path == '/nouser') {
+      next()
+    } else {
+      let userInfo = store.getters['layout/userInfo']
+      console.log("user info ", userInfo)
+      if (!userInfo) {
+        // 本地是未登录状态, 保存目标页面地址, 去登录
+        let lastRoute = { path: to.path, params: to.params, query: to.query }
+        store.commit('setLastRoute', lastRoute)
+        toLogin()
+      } else {
+        if (to.meta.breadcrumbs) {
+          store.dispatch('setBreadcrumb', to.meta.breadcrumbs)
+        }
+        if (
+          (from.path == "/ledger/rentadd" && session.get("rentAddData") && session.get("rentAddData").length) ||
+          (from.path == "/ledger/cenoteadd" && session.get("cenoteAddData") && session.get("cenoteAddData").length) ||
+          (from.path == "/ledger/deviceadd" && session.get("deviceAddData") && session.get("deviceAddData").length) ||
+          (from.path == "/ledger/spaceadd" && session.get("spaceAddData") && session.get("spaceAddData").length) ||
+          (from.path == "/ledger/propertyadd" && session.get("propertyAddData") && session.get("propertyAddData").length) ||
+          (from.path == "/ledger/partsadd" && session.get("partsAddData") && session.get("partsAddData").length) ||
+          (from.path == "/ledger/systemadd" && session.get("systemAddData") && session.get("systemAddData").length)
+        ) { //判断新增信息是否保存
+          MessageBox.confirm("新增信息未保存,离开将丢失新增信息,是否继续?", "提示", {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning'
+          }).then(() => {
+            let arr = from.path.split("/")
+            let srt = arr[arr.length - 1].slice(0, -3)
+            session.remove(`${srt}AddData`)
             next()
+          }).catch(() => {
+            next(false)
+          })
         } else {
-            let userInfo = store.getters['layout/userInfo']
-            console.log("user info ", userInfo)
-            if (!userInfo) {
-                // 本地是未登录状态, 保存目标页面地址, 去登录
-                let lastRoute = { path: to.path, params: to.params, query: to.query }
-                store.commit('setLastRoute', lastRoute)
-                toLogin()
-            } else {
-                if (to.meta.breadcrumbs) {
-                    store.dispatch('setBreadcrumb', to.meta.breadcrumbs)
-                }
-                if(
-                    (from.path == "/ledger/rentadd" && session.get("rentAddData") && session.get("rentAddData").length) ||
-                    (from.path == "/ledger/cenoteadd" && session.get("cenoteAddData") && session.get("cenoteAddData").length) ||
-                    (from.path == "/ledger/deviceadd" && session.get("deviceAddData") && session.get("deviceAddData").length) ||
-                    (from.path == "/ledger/spaceadd" && session.get("spaceAddData") && session.get("spaceAddData").length) ||
-                    (from.path == "/ledger/propertyadd" && session.get("propertyAddData") && session.get("propertyAddData").length) ||
-                    (from.path == "/ledger/partsadd" && session.get("partsAddData") && session.get("partsAddData").length) ||
-                    (from.path == "/ledger/systemadd" && session.get("systemAddData") && session.get("systemAddData").length)
-                ) { //判断新增信息是否保存
-                    MessageBox.confirm("新增信息未保存,离开将丢失新增信息,是否继续?", "提示", {
-                        confirmButtonText: '确定',
-                        cancelButtonText: '取消',
-                        type: 'warning'
-                    }).then(() => {
-                        let arr = from.path.split("/")
-                        let srt = arr[arr.length - 1].slice(0,-3)
-                        session.remove(`${srt}AddData`)
-                        next()
-                    }).catch(() => {
-                        next(false)
-                    })
-                } else {
-                    next()
-                }
-            }
-            return true
+          next()
         }
-    },
-    toNoUser(){
-        console.log(this)
-        this.$router.replace('/nouser')
-    },
+      }
+      return true
+    }
+  },
+  toNoUser() {
+    console.log(this)
+    this.$router.replace('/nouser')
+  },
 
-    getMenus(permissions) {
-        let result = []
-        let allMenus = []
-        // 开发环境下展示demo页面
-        // if (process.env.NODE_ENV === 'development') {
-        //     allMenus = menus.demoMenus
-        // }
-        allMenus = allMenus.concat(menus.menus)
-        let ps = !permissions ? {} : permissions
-        allMenus.forEach(item => {
-            let menu = checkMenu(item, ps)
-            if (menu) {
-                result.push(menu)
-            }
-        })
-        return result
-    },
+  getMenus(permissions) {
+    let result = []
+    let allMenus = []
+    // 开发环境下展示demo页面
+    // if (process.env.NODE_ENV === 'development') {
+    //     allMenus = menus.demoMenus
+    // }
+    allMenus = allMenus.concat(menus.menus)
+    let ps = !permissions ? {} : permissions
+    allMenus.forEach(item => {
+      let menu = checkMenu(item, ps)
+      if (menu) {
+        result.push(menu)
+      }
+    })
+    return result
+  },
 
-    toLogout() {
-        // TODO
-        store.commit('setSsoToken', null)
-        let ssoServer = process.env.SSO_SERVER
-        let redirectUrl = window.location.protocol + '//' + window.location.host + '/'
-        window.location.href = `${ssoServer}/logout?redirectUrl=${redirectUrl}`
-    },
+  toLogout() {
+    // TODO
+    store.commit('setSsoToken', null)
+    let ssoServer = process.env.SSO_SERVER
+    let redirectUrl = window.location.protocol + '//' + window.location.host + '/'
+    window.location.href = `${ssoServer}/logout?redirectUrl=${redirectUrl}`
+  },
 
-    toLoginPage: toLogin
+  toLoginPage: toLogin
 }

+ 62 - 45
src/views/data_admin/buildTask/addTask/addModelTask.vue

@@ -1,50 +1,55 @@
 <template>
   <div id="bd-fl-manage">
     <div class="header-nav">
-      <el-button style="float:left;margin-right:20px;" size="small" type="default" icon="el-icon-back" @click="goBack"></el-button>
+      <el-button style="float:left;margin-right:20px;" size="small" type="default" icon="el-icon-back"
+                 @click="goBack"></el-button>
       <model-folder ref="modelFolder" @change="handleChangeModelFolder" style="margin-right:10px;"></model-folder>
       <my-cascader :isWidth="false" ref="cascader" @change="changeDevice"></my-cascader>
-      <el-button style="float:right;margin-top:1px;" @click="handleClickCreate">{{buttonContent}}</el-button>
-      <el-switch v-show="CurrentModelId" style="float:right;margin-top:7px;margin-right:20px;" v-model="isLight" active-text="高亮显示未完成验证的区块"></el-switch>
+      <el-button style="float:right;margin-top:1px;" @click="handleClickCreate">{{ buttonContent }}</el-button>
+      <el-switch v-show="CurrentModelId" style="float:right;margin-top:7px;margin-right:20px;" v-model="isLight"
+                 active-text="高亮显示未完成验证的区块"></el-switch>
     </div>
     <el-row>
       <div class="l-list">
         <h4>模型文件</h4>
         <div class="model-file-list">
           <el-scrollbar style="height:100%;">
-            <div v-for="item in modelFileList" :key="item.Id" :class="{'model-file-item':true,'active':item.active}" @click="handleChangeModelFile(item)">
-              <span>{{item.FloorName}}</span>
+            <div v-for="item in modelFileList" :key="item.Id" :class="{'model-file-item':true,'active':item.active}"
+                 @click="handleChangeModelFile(item)">
+              <span>{{ item.FloorName }}</span>
             </div>
           </el-scrollbar>
         </div>
       </div>
       <div class="r-model">
-        <draw-model ref="drawModel" :id="1" :CurrentModelId="CurrentModelId" :modelName="modelName" :isLight="isLight" @changeButtonContent="changeButtonContent"></draw-model>
+        <draw-model ref="drawModel" :id="1" :CurrentModelId="CurrentModelId" :modelName="modelName" :isLight="isLight"
+                    @changeButtonContent="changeButtonContent"></draw-model>
       </div>
     </el-row>
-    <modelTask-dialog :dialogVisible.sync="dialogVisible" :params="params" :newTaskTypes="newTaskTypes"></modelTask-dialog>
+    <modelTask-dialog :dialogVisible.sync="dialogVisible" :params="params"
+                      :newTaskTypes="newTaskTypes"></modelTask-dialog>
   </div>
 </template>
 
 <script>
-  import modelFolder from "@/components/ready/buildfloor/modelFolder"
-  import myCascader from "@/components/ledger/lib/cascader"
-  import drawModel from "@/components/data_admin/buildTask/draw/drawModel"
-  import modelTaskDialog from "@/components/data_admin/buildTask/dialog/modelTaskDialog"
-  import {mapGetters} from "vuex";
-  import request from "@/api/model/file.js";
-
-  export default {
-    components: {
-      modelFolder,
-      myCascader,
-      drawModel,
-      modelTaskDialog
-    },
-    data() {
-      return {
-        isLight: false,//是否高亮未完成验证区块
-        query: {},//query信息
+import modelFolder from "@/components/ready/buildfloor/modelFolder"
+import myCascader from "@/components/ledger/lib/cascader"
+import drawModel from "@/components/data_admin/buildTask/draw/drawModel"
+import modelTaskDialog from "@/components/data_admin/buildTask/dialog/modelTaskDialog"
+import { mapGetters } from "vuex";
+import request from "@/api/model/file.js";
+
+export default {
+  components: {
+    modelFolder,
+    myCascader,
+    drawModel,
+    modelTaskDialog
+  },
+  data() {
+    return {
+      isLight: false,//是否高亮未完成验证区块
+      query: {},//query信息
       dialogVisible: false,//是否显示弹窗
       modelFolderName: '',//模型文件夹名字
       modelFolderId: '',//模型文件夹的id
@@ -59,7 +64,7 @@
   },
   computed: {
     ...mapGetters("layout", ["projectId"]),
-    params(){
+    params() {
       return {
         device: this.device,
         CurrentModelId: this.CurrentModelId,
@@ -70,7 +75,7 @@
         isVerification: this.query.isVerification
       }
     },
-    modelName () {
+    modelName() {
       return `${this.modelFolderName}-${this.modelFileName}`
     },
   },
@@ -79,21 +84,20 @@
     this.query = this.$route.query
   },
   methods: {
-    goBack(){//返回
-      this.$router.push({name:'buildTask'})
+    goBack() {//返回
+      this.$router.push({ name: 'buildTask' })
     },
-    handleChangeModelFolder(item){//切换模型文件夹
+    handleChangeModelFolder(item) {//切换模型文件夹
       let val = item.value
-      if(val){
+      if (val) {
         this.modelFolderName = item.label
         let data = {
-          FolderId: val,
-          Status: '4',
-          
-          ProjectId: this.projectId
+          folderId: val,
+          status: '4',
+          projectId: this.projectId
         };
         request.queryFloorList(data, res => {
-          this.modelFileList = res.Content.map(item => {
+          this.modelFileList = res.content.map(item => {
             item.active = false
             return item
           })
@@ -105,7 +109,7 @@
         this.resetSelected()
       }
     },
-    resetSelected(){
+    resetSelected() {
       this.modelFileList = []
       this.CurrentModelId = ''
       this.modelFolderName = ''
@@ -115,9 +119,9 @@
       this.dialogVisible = false
       this.$refs.drawModel.clearGraphy()
     },
-    handleChangeModelFile(file){//切换模型文件
+    handleChangeModelFile(file) {//切换模型文件
       this.modelFileList.map(item => {
-        file.Id == item.Id?item.active = true:item.active = false
+        file.Id == item.id ? item.active = true : item.active = false
         return item
       })
       this.CurrentModelId = file.CurrentModelId
@@ -125,11 +129,11 @@
       this.modelFileName = file.FloorName
       this.newTaskTypes = this.$route.query.newTaskTypes
     },
-    changeDevice(val){//切换设备类别
+    changeDevice(val) {//切换设备类别
       this.device = val.code
     },
-    handleClickCreate(){//创建已选
-      if(!this.CurrentModelId){
+    handleClickCreate() {//创建已选
+      if (!this.CurrentModelId) {
         this.$message('请选择模型文件!')
         return false
       }
@@ -138,7 +142,7 @@
       })
       this.dialogVisible = true
     },
-    changeButtonContent(val){// 通过判断是否选中模型空间调整文案
+    changeButtonContent(val) {// 通过判断是否选中模型空间调整文案
       this.buttonContent = val;
     }
   },
@@ -154,12 +158,15 @@
   overflow: hidden;
   height: 100%;
   position: relative;
-  .header-nav{
+
+  .header-nav {
     height: 32px;
     padding-bottom: 10px;
   }
+
   .el-row {
     height: calc(100% - 50px);
+
     & > div {
       float: left;
       height: 100%;
@@ -167,17 +174,21 @@
       background-color: #fff;
       box-sizing: border-box;
       border: 1px solid #dfe6ec;
+
       .action-box {
         padding: 10px;
+
         .el-button--small {
           padding: 10px 11px;
         }
       }
     }
+
     .l-list {
       width: 250px;
       height: 100%;
       border-right: 0;
+
       h4 {
         padding-left: 10px;
         border-top: 1px solid #d9d9d9;
@@ -186,21 +197,26 @@
         color: #333;
         line-height: 44px;
       }
+
       .model-file-list {
         height: calc(100% - 46px);
         line-height: 48px;
-        /deep/.el-scrollbar__wrap {
+
+        /deep/ .el-scrollbar__wrap {
           overflow-x: hidden;
         }
+
         .model-file-item {
           white-space: nowrap;
           overflow: hidden;
           text-overflow: ellipsis;
           cursor: pointer;
+
           span {
             margin-left: 10px;
           }
         }
+
         .model-file-item.active,
         .model-file-item:hover {
           background-color: #f5f7fa;
@@ -208,6 +224,7 @@
         }
       }
     }
+
     .r-model {
       width: calc(100% - 250px);
       box-sizing: border-box;

+ 84 - 59
src/views/model/file/index.vue

@@ -24,9 +24,10 @@
             <ul class="lists">
               <el-scrollbar style="height:100%;">
                 <li @click="openFolder(index,item)" v-for="(item,index) in navigationModel" :key="index"
-                  :class="[choiceIndex == index + 1 ? 'li-active' : '']">
-                  <i :class="[choiceIndex == index + 1 ?  'el-icon-folder-opened':'el-icon-folder','icon_font']" width="40" height="40"></i>
-                  <span :title="item.Name">{{item.Name}}</span>
+                    :class="[choiceIndex == index + 1 ? 'li-active' : '']">
+                  <i :class="[choiceIndex == index + 1 ?  'el-icon-folder-opened':'el-icon-folder','icon_font']"
+                     width="40" height="40"></i>
+                  <span :title="item.name">{{ item.name }}</span>
                 </li>
               </el-scrollbar>
             </ul>
@@ -43,28 +44,34 @@
           <el-button size="small" @click="queryFloorFile(currentFolderId)">刷新</el-button>
         </div>
         <!-- 列表 -->
-        <floorTable v-loading="tableLoading" ref="floorTable" :tableData="tableData" :modelFolderName="currentFolderName" @openModelLog="queryModelLog"
-          @replaceModel="repliaceModel" @percentFinish="queryFloorFile(currentFolderId)"
-          :persentList="persentList"></floorTable>
+        <floorTable v-loading="tableLoading" ref="floorTable" :tableData="tableData"
+                    :modelFolderName="currentFolderName" @openModelLog="queryModelLog"
+                    @replaceModel="repliaceModel" @percentFinish="queryFloorFile(currentFolderId)"
+                    :persentList="persentList"></floorTable>
       </el-card>
     </div>
     <!-- 弹窗 开始-->
 
     <!-- 模型日志弹窗 -->
     <modelLog :modelLogVisible="modelLogVisible" :modelFolderName="currentFolderName" @deleteFinish="updataLog"
-      @CloseModelLogDia="modelLogVisible=false" :logData="logData"></modelLog>
+              @CloseModelLogDia="modelLogVisible=false" :logData="logData"></modelLog>
     <!-- 替换模型弹窗 -->
-    <repliceModel :repliceModelVisible="repliceModelVisible" @closeReplaceModelDia="repliceModelVisible=false" :replaceModelItem="replaceModelItem"
-      @updataModel="updateModelFile"></repliceModel>
+    <repliceModel :repliceModelVisible="repliceModelVisible" @closeReplaceModelDia="repliceModelVisible=false"
+                  :replaceModelItem="replaceModelItem"
+                  @updataModel="updateModelFile"></repliceModel>
     <!-- 新增楼层 -->
-    <addFloorDialog :addFloorFileVisible="addFloorFileVisible" :floorList="tableData" :FolderName="currentFolderName" :FolderId="currentFolderId"
-      @closeAddFloorDia="addFloorFileVisible=false" @finishCreateFloor="uploadModelFIle"></addFloorDialog>
+    <addFloorDialog :addFloorFileVisible="addFloorFileVisible" :floorList="tableData" :FolderName="currentFolderName"
+                    :FolderId="currentFolderId"
+                    @closeAddFloorDia="addFloorFileVisible=false" @finishCreateFloor="uploadModelFIle"></addFloorDialog>
     <!-- 新增文件夹名称 -->
-    <addFolder :addFolderVisible="addFolderVisible" @closeAddFolderVisible="addFolderVisible=false;folderName=''" :folderName="folderName"
-      @getfolderModel="queryModel"></addFolder>
+    <addFolder :addFolderVisible="addFolderVisible" @closeAddFolderVisible="addFolderVisible=false;folderName=''"
+               :folderName="folderName"
+               @getfolderModel="queryModel"></addFolder>
     <!-- 编辑文件夹名字 -->
-    <changeFolderName :currentFolderId="currentFolderId" :changeFolderNameVisible="changeFolderNameVisible" :folderName="folderName"
-      @finishChangeFolderName="queryModel" @closeChangeFolderVisible="changeFolderNameVisible=false;folderName=''"></changeFolderName>
+    <changeFolderName :currentFolderId="currentFolderId" :changeFolderNameVisible="changeFolderNameVisible"
+                      :folderName="folderName"
+                      @finishChangeFolderName="queryModel"
+                      @closeChangeFolderVisible="changeFolderNameVisible=false;folderName=''"></changeFolderName>
     <!-- 弹窗 结束-->
   </div>
 </template>
@@ -122,16 +129,16 @@ export default {
       isJump: true //是否可以调整页面
     };
   },
-  mounted() {
-    // // 文件选择后的回调
-    // Bus.$on('fileAdded', () => {
-    //   console.log('文件已选择')
-    // });
-    // // 文件上传成功的回调
-    // Bus.$on('fileSuccess', () => {
-    //   console.log('文件上传成功')
-    // });
-  },
+  // mounted() {
+  //   // // 文件选择后的回调
+  //   // Bus.$on('fileAdded', () => {
+  //   //   console.log('文件已选择')
+  //   // });
+  //   // // 文件上传成功的回调
+  //   // Bus.$on('fileSuccess', () => {
+  //   //   console.log('文件上传成功')
+  //   // });
+  // },
   destroyed() {
     // Bus.$off('fileAdded');
     // Bus.$off('fileSuccess');
@@ -142,8 +149,8 @@ export default {
     // 打开模型文件夹
     openFolder(index, item) {
       this.choiceIndex = index + 1;
-      this.currentFolderId = item.Id;
-      this.currentFolderName = item.Name;
+      this.currentFolderId = item.id;
+      this.currentFolderName = item.name;
       // 获取模型文件夹对应得楼层文件
       this.queryFloorFile(this.currentFolderId);
     },
@@ -159,8 +166,8 @@ export default {
         callback: action => {
           if (action == "confirm") {
             let params = {
-              Id: this.currentFolderId,
-              ProjectId: this.projectId
+              id: this.currentFolderId,
+              projectId: this.projectId
             };
             request.deleteModel(params, res => {
               this.$message({
@@ -188,13 +195,13 @@ export default {
       this.navigationModel = [];
       this.loading = true;
       request.queryModel("", res => {
-        this.navigationModel = res.Content;
+        this.navigationModel = res.content;
         this.loading = false;
         if (this.navigationModel.length) {
           //默认选择第一个文件夹
           this.choiceIndex = 1;
-          this.currentFolderName = this.navigationModel[0].Name;
-          this.currentFolderId = this.navigationModel[0].Id;
+          this.currentFolderName = this.navigationModel[0].name;
+          this.currentFolderId = this.navigationModel[0].id;
           this.queryFloorFile(this.currentFolderId);
         } else {
           this.tableData = []
@@ -209,16 +216,16 @@ export default {
      * @param currentFolderId 当前选择的文件夹id
      */
     queryFloorFile(currentFolderId) {
-      if(currentFolderId){
+      if (currentFolderId) {
         this.tableData = [];
         this.tableLoading = true;
         let data = {
-          FolderId: currentFolderId,
-          ProjectId: this.projectId
+          folderId: currentFolderId,
+          projectId: this.projectId
         };
         return new Promise((resolve, reject) => {
           request.queryFloorList(data, res => {
-            res.Content.map(item => {
+            res.content.map(item => {
               /**
                * @info: 状态显示说明
                * 0: 上传中(上传的用户可操作:中止)
@@ -228,13 +235,13 @@ export default {
                * 2、20、21、3、31: 正常(所有用户可操作:下载、查看历史)
                * 4: 正常(所有用户可操作:下载、替换、查看历史)
                */
-              if (item.Status == 2 || item.Status == 20 || item.Status == 21 || item.Status == 3 || item.Status == 31 || item.Status == 4) {
+              if (item.status == 2 || item.status == 20 || item.status == 21 || item.status == 3 || item.status == 31 || item.status == 4) {
                 Object.assign(item, { precent: 0 });
               } else {
                 Object.assign(item, { precent: 100 });
                 if (this.persentList.length != 0) {
                   this.persentList.forEach(pItem => {
-                    if (item.Id == pItem.Id) {
+                    if (item.id == pItem.Id) {
                       Object.assign(item, { precent: pItem.precent ? pItem.precent : 0 });
                     }
                   });
@@ -247,7 +254,7 @@ export default {
               //   request.deleteModelFileList({Id: item.CurrentModelId}, res => {console.log('删除错误模型:',item.CurrentModelId)})
               // }
             });
-            this.tableData = res.Content;
+            this.tableData = res.content;
             this.tableLoading = false;
             resolve();
           });
@@ -268,8 +275,8 @@ export default {
     },
     // 上传模型文件
     uploadModelFIle(data) {
-      Bus.$emit('openUploader', { 
-        uploadId: data.uploadId, 
+      Bus.$emit('openUploader', {
+        uploadId: data.uploadId,
         modelId: data.modelId,
         systemId: 'revit', //系统名称
         secret: '63afbef6906c342b', //系统密码
@@ -284,16 +291,16 @@ export default {
     //更新模型文件;
     updateModelFile(data) {
       let params = {
-        FileName: data.file.name,
-        FloorName: data.replaceModelItem.FloorName,
-        FolderId: data.replaceModelItem.FolderId,
-        RevitVersion: data.revitVersion,
-        Note: data.replaceModelItem.Note,
-        ProjectId: this.projectId,
-        ReplaceReason: 0,
-        Size: data.file.size,
-        UserName: this.userInfo.userName,
-        UserId: this.userInfo.userId
+        fileName: data.file.name,
+        floorName: data.replaceModelItem.FloorName,
+        folderId: data.replaceModelItem.FolderId,
+        revitVersion: data.revitVersion,
+        note: data.replaceModelItem.Note,
+        projectId: this.projectId,
+        replaceReason: 0,
+        size: data.file.size,
+        userName: this.userInfo.userName,
+        userId: this.userInfo.userId
       };
       //  替换模型文件
       request.modelFileUpload(params, res => {
@@ -304,14 +311,14 @@ export default {
         });
         // 修改precent得值
         this.tableData.map(item => {
-          if (item.Id == data.replaceModelItem.Id) {
+          if (item.id == data.replaceModelItem.Id) {
             item.precent = 0;
           }
         });
         this.queryFloorFile(this.currentFolderId);
-        Bus.$emit('openUploader', { 
-          uploadId: res.UploadId, 
-          modelId: res.ModelId,
+        Bus.$emit('openUploader', {
+          uploadId: res.uploadId,
+          modelId: res.modelId,
           systemId: 'revit', //系统名称
           secret: '63afbef6906c342b', //系统密码
         }, data.file.raw)
@@ -319,16 +326,16 @@ export default {
     },
     //查看模型日志
     queryModelLog(item) {
-      this.FloorModelId = item.Id; //楼层模型文件
+      this.FloorModelId = item.id; //楼层模型文件
       request.queryModelFile(this.FloorModelId, res => {
-        this.logData = res.Content;
+        this.logData = res.content;
         this.modelLogVisible = true;
       });
     },
     // 刷新日志
     updataLog() {
       request.queryModelFile(this.FloorModelId, res => {
-        this.logData = res.Content;
+        this.logData = res.content;
       });
     },
   },
@@ -355,24 +362,30 @@ export default {
   height: 100%;
   display: flex;
   overflow: hidden !important;
+
   .col_left {
     width: 280px;
     height: 100%;
   }
+
   .col_right {
     width: calc(100% - 280px);
     height: 100%;
   }
+
   .grid-content {
     height: 100%;
   }
+
   .box-card {
     height: 100%;
   }
+
   .grid-left {
     padding-right: 10px;
     box-sizing: border-box;
   }
+
   // 顶部
   .top_hand {
     // height: 60px;
@@ -381,19 +394,23 @@ export default {
     box-sizing: border-box;
     display: flex;
   }
+
   .left_top_hand {
     align-items: center;
     justify-content: space-between;
+
     .folder-box {
       /deep/ .el-button--small {
         padding: 10px 11px;
       }
     }
   }
+
   // 左侧文件夹列表
   .folder-list {
     width: 100%;
     height: calc(100% - 60px);
+
     .head {
       height: 42px;
       width: 100%;
@@ -405,17 +422,20 @@ export default {
       justify-content: left;
       align-items: center;
       font-weight: bold;
-      span{
+
+      span {
         font-weight: normal;
         font-size: 12px;
         color: #606266;
       }
     }
+
     .lists {
       width: 100%;
       margin-top: 10px;
       height: calc(100% - 52px);
       overflow-y: auto;
+
       li {
         height: 42px;
         display: flex;
@@ -425,6 +445,7 @@ export default {
         box-sizing: border-box;
         color: #555;
         cursor: pointer;
+
         span {
           padding-left: 6px;
           overflow: hidden;
@@ -432,20 +453,24 @@ export default {
           white-space: nowrap;
         }
       }
+
       li:hover {
         background-color: #f5f7fa;
         color: #000;
       }
+
       .li-active {
         background-color: #f5f7fa;
         color: #000;
       }
     }
   }
+
   .icon_font {
     font-size: 18px;
   }
 }
+
 /deep/ .el-scrollbar__wrap {
   overflow-x: hidden;
 }

+ 205 - 113
src/views/model/file/pathcontrol/index.vue

@@ -3,19 +3,19 @@
     <el-row class="title-time">
       <div style="width:200px">
         <span>模型文件大小:</span>
-        <span>{{(Size/1000/1024).toFixed(1)}}M</span>
+        <span>{{ (Size / 1000 / 1024).toFixed(1) }}M</span>
       </div>
       <div style="width:220px">
         <span>模型总耗时:</span>
-        <span>{{allTakeTime}}</span>
+        <span>{{ allTakeTime }}</span>
       </div>
       <div style="width:250px">
         <span>模型开始上传时间:</span>
-        <span>{{UploadState.BeginTime}}</span>
+        <span>{{ UploadState.BeginTime }}</span>
       </div>
       <div style="width:250px">
         <span>模型处理完成时间:</span>
-        <span>{{SaveLog.EndTime}}</span>
+        <span>{{ SaveLog.EndTime }}</span>
       </div>
     </el-row>
     <el-row class="path-pic">
@@ -28,9 +28,10 @@
                 <i class="el-icon-monitor" style="color:#b8c5d0;font-size:60px"></i>
                 <p style="margin-top:10px;color:#b8c5d0">上传下载功能</p>
               </div>
-              <img v-if="!UploadState.BeginTime" class="status row-status" src="@/assets/image/model/arrowGray.png" />
-              <img v-else-if="UploadState.BeginTime&&!UploadState.EndTime" class="status row-status" src="@/assets/image/model/arrowBlue.png" />
-              <img v-else class="status row-status" src="@/assets/image/model/arrowGreen.png" />
+              <img v-if="!UploadState.BeginTime" class="status row-status" src="@/assets/image/model/arrowGray.png"/>
+              <img v-else-if="UploadState.BeginTime&&!UploadState.EndTime" class="status row-status"
+                   src="@/assets/image/model/arrowBlue.png"/>
+              <img v-else class="status row-status" src="@/assets/image/model/arrowGreen.png"/>
             </div>
             <div class="shadow-box mid-transfer">
               <div class="first-title">
@@ -39,37 +40,41 @@
               <div class="first-content">
                 <p>将模型文件存储于OSS服务器</p>
               </div>
-              <img v-if="!UploadState.EndTime" class="status row-waiting-manage" src="@/assets/image/model/waitingManageGray.png" />
+              <img v-if="!UploadState.EndTime" class="status row-waiting-manage"
+                   src="@/assets/image/model/waitingManageGray.png"/>
               <img v-else-if="UploadState.EndTime&&!SchedulerCheck.EndTime" class="status row-waiting-manage"
-                src="@/assets/image/model/waitingManageBlue.png" />
-              <img v-else class="status row-waiting-manage" src="@/assets/image/model/waitingManageGreen.png" />
+                   src="@/assets/image/model/waitingManageBlue.png"/>
+              <img v-else class="status row-waiting-manage" src="@/assets/image/model/waitingManageGreen.png"/>
 
-              <img v-if="!UploadState.BeginTime" class="status up-model" src="@/assets/image/model/upModelGray.png" />
-              <img v-else-if="UploadState.BeginTime&&!UploadState.EndTime" class="status up-model" src="@/assets/image/model/upModelBlue.png" />
-              <img v-else class="status up-model" src="@/assets/image/model/upModelGreen.png" />
+              <img v-if="!UploadState.BeginTime" class="status up-model" src="@/assets/image/model/upModelGray.png"/>
+              <img v-else-if="UploadState.BeginTime&&!UploadState.EndTime" class="status up-model"
+                   src="@/assets/image/model/upModelBlue.png"/>
+              <img v-else class="status up-model" src="@/assets/image/model/upModelGreen.png"/>
 
               <!-- 调度器1 -->
-              <div class="path-tips shadow-box" style="top:67px;left:291px;" @click="getNodeDes(SchedulerCheck,'等待调度器分配', true)"
-                v-if='SchedulerCheck.BeginTime'>
+              <div class="path-tips shadow-box" style="top:67px;left:291px;"
+                   @click="getNodeDes(SchedulerCheck,'等待调度器分配', true)"
+                   v-if='SchedulerCheck.BeginTime'>
                 <i class="el-icon-error" v-if="SchedulerCheck.HasError"></i>
                 <i class="el-icon-warning" v-else-if="SchedulerCheck.HasRetry"></i>
-                <p>耗时: {{SchedulerCheck.TakeTime||'--'}}</p>
+                <p>耗时: {{ SchedulerCheck.TakeTime || '--' }}</p>
                 <!-- <p>平均上传速度: 1M/s</p> -->
-                <p>开始时间: {{SchedulerCheck.BeginTime||'--'}}</p>
-                <p v-if="!SchedulerCheck.EndTime">待分配模型数量: {{waitAssign}}</p>
-                <p v-else>结束时间: {{SchedulerCheck.EndTime||'--'}}</p>
+                <p>开始时间: {{ SchedulerCheck.BeginTime || '--' }}</p>
+                <p v-if="!SchedulerCheck.EndTime">待分配模型数量: {{ waitAssign }}</p>
+                <p v-else>结束时间: {{ SchedulerCheck.EndTime || '--' }}</p>
               </div>
             </div>
             <p style="float:left;width:100%;text-align:center;margin-top:73px;color:#acb5bb;font-size:12px;">本地电脑主机</p>
           </el-row>
           <!-- 上传模型文件 -->
-          <div class="path-tips shadow-box" style="top:189px;left:190px;" @click="getNodeDes(UploadState,'上传模型文件', true)">
+          <div class="path-tips shadow-box" style="top:189px;left:190px;"
+               @click="getNodeDes(UploadState,'上传模型文件', true)">
             <i class="el-icon-error" v-if="UploadState.HasError"></i>
             <i class="el-icon-warning" v-else-if="UploadState.HasRetry"></i>
-            <p>耗时: {{UploadState.TakeTime||'--'}}</p>
-            <p>平均上传速度: {{UploadStateSpeed}}</p>
-            <p>开始时间: {{UploadState.BeginTime||'--'}}</p>
-            <p>结束时间: {{UploadState.EndTime||'--'}}</p>
+            <p>耗时: {{ UploadState.TakeTime || '--' }}</p>
+            <p>平均上传速度: {{ UploadStateSpeed }}</p>
+            <p>开始时间: {{ UploadState.BeginTime || '--' }}</p>
+            <p>结束时间: {{ UploadState.EndTime || '--' }}</p>
           </div>
         </div>
         <div class="second-column column">
@@ -86,9 +91,9 @@
                     <i class="iconfont icon-revit" style="color:#dee6ec;font-size:60px;background:#fff"></i>
                   </div>
                   <div class="fixed">
-                    <p :title="OriginalName">模型文件名称{{OriginalName}}</p>
-                    <p style="color:#8d9aa3">模型文件大小: {{(Size/1000/1024).toFixed(1)}}M</p>
-                    <p style="color:#8d9aa3">上传时间: {{UploadState.EndTime||'--'}}</p>
+                    <p :title="OriginalName">模型文件名称{{ OriginalName }}</p>
+                    <p style="color:#8d9aa3">模型文件大小: {{ (Size / 1000 / 1024).toFixed(1) }}M</p>
+                    <p style="color:#8d9aa3">上传时间: {{ UploadState.EndTime || '--' }}</p>
                   </div>
                 </el-row>
                 <el-row class="sm-box">
@@ -96,31 +101,35 @@
                     <i class="iconfont icon-json" style="color:#dee6ec;font-size:60px;background:#fff"></i>
                   </div>
                   <div class="fixed">
-                    <p>{{OriginalName}} json数据压缩包</p>
-                    <p style="color:#8d9aa3">文件大小: {{ModelExport.JsonzSize?(ModelExport.JsonzSize/1000/1024).toFixed(1)+'M':'--'}}</p>
-                    <p style="color:#8d9aa3">上传时间: {{ModelExport.JsonzEndTime||'--'}}</p>
+                    <p>{{ OriginalName }} json数据压缩包</p>
+                    <p style="color:#8d9aa3">文件大小:
+                      {{ ModelExport.JsonzSize ? (ModelExport.JsonzSize / 1000 / 1024).toFixed(1) + 'M' : '--' }}</p>
+                    <p style="color:#8d9aa3">上传时间: {{ ModelExport.JsonzEndTime || '--' }}</p>
                   </div>
                 </el-row>
               </el-row>
               <!-- 下载模型文件1 -->
-              <img v-if="!SchedulerCheck.BeginTime" class="status down-model" src="@/assets/image/model/downModelGray.png" />
+              <img v-if="!SchedulerCheck.BeginTime" class="status down-model"
+                   src="@/assets/image/model/downModelGray.png"/>
               <img v-else-if="SchedulerCheck.BeginTime&&!SchedulerCheck.EndTime" class="status down-model"
-                src="@/assets/image/model/downModelBlue.png" />
-              <img v-else class="status down-model" src="@/assets/image/model/downModelGreen.png" />
+                   src="@/assets/image/model/downModelBlue.png"/>
+              <img v-else class="status down-model" src="@/assets/image/model/downModelGreen.png"/>
               <!-- 下载模型文件2 -->
-              <img v-if="!SchedulerExport.BeginTime" class="status down-model-sec" src="@/assets/image/model/downModelGray.png" />
+              <img v-if="!SchedulerExport.BeginTime" class="status down-model-sec"
+                   src="@/assets/image/model/downModelGray.png"/>
               <img v-else-if="SchedulerExport.BeginTime&&!ModelExport.JsonzBeginTime" class="status down-model-sec"
-                src="@/assets/image/model/downModelBlue.png" />
-              <img v-else class="status down-model-sec" src="@/assets/image/model/downModelGreen.png" />
+                   src="@/assets/image/model/downModelBlue.png"/>
+              <img v-else class="status down-model-sec" src="@/assets/image/model/downModelGreen.png"/>
               <!-- 存储json -->
-              <img v-if="!ModelExport.JsonzBeginTime" class="status up-json" src="@/assets/image/model/upJsonGray.png" />
+              <img v-if="!ModelExport.JsonzBeginTime" class="status up-json" src="@/assets/image/model/upJsonGray.png"/>
               <img v-else-if="ModelExport.JsonzBeginTime&&!ModelExport.JsonzEndTime" class="status up-json"
-                src="@/assets/image/model/upJsonBlue.png" />
-              <img v-else class="status up-json" src="@/assets/image/model/upJsonGreen.png" />
+                   src="@/assets/image/model/upJsonBlue.png"/>
+              <img v-else class="status up-json" src="@/assets/image/model/upJsonGreen.png"/>
               <!-- 下载json -->
-              <img v-if="!JsonAnalysis.BeginTime" class="status down-json" src="@/assets/image/model/downJsonGray.png" />
-              <img v-else-if="JsonAnalysis.BeginTime&&!JsonAnalysis.EndTime" class="status down-json" src="@/assets/image/model/downJsonBlue.png" />
-              <img v-else class="status down-json" src="@/assets/image/model/downJsonGreen.png" />
+              <img v-if="!JsonAnalysis.BeginTime" class="status down-json" src="@/assets/image/model/downJsonGray.png"/>
+              <img v-else-if="JsonAnalysis.BeginTime&&!JsonAnalysis.EndTime" class="status down-json"
+                   src="@/assets/image/model/downJsonBlue.png"/>
+              <img v-else class="status down-json" src="@/assets/image/model/downJsonGreen.png"/>
             </div>
           </div>
           <el-row id="revitServer">
@@ -129,67 +138,72 @@
             </pathCard>
             <pathCard class="revit-item" :title="'导出模型json数据并压缩存储'" @click="getNodeDes" :data="ModelExport"></pathCard>
             <!-- 调度器2 -->
-            <img v-if="!ModelCheck.EndTime" class="status row-waiting-manage" src="@/assets/image/model/waitingManageGray.png" />
+            <img v-if="!ModelCheck.EndTime" class="status row-waiting-manage"
+                 src="@/assets/image/model/waitingManageGray.png"/>
             <img v-else-if="ModelCheck.EndTime&&!SchedulerExport.EndTime" class="status row-waiting-manage"
-              src="@/assets/image/model/waitingManageBlue.png" />
-            <img v-else class="status row-waiting-manage" src="@/assets/image/model/waitingManageGreen.png" />
+                 src="@/assets/image/model/waitingManageBlue.png"/>
+            <img v-else class="status row-waiting-manage" src="@/assets/image/model/waitingManageGreen.png"/>
             <!-- 等待解析 -->
-            <img v-if="!ModelExport.EndTime" class="status waiting-anl" src="@/assets/image/model/waitingAnlGray.png" />
-            <img v-else-if="ModelExport.EndTime&&!JsonAnalysis.EndTime" class="status waiting-anl" src="@/assets/image/model/waitingAnlBlue.png" />
-            <img v-else class="status waiting-anl" src="@/assets/image/model/waitingAnlGreen.png" />
+            <img v-if="!ModelExport.EndTime" class="status waiting-anl" src="@/assets/image/model/waitingAnlGray.png"/>
+            <img v-else-if="ModelExport.EndTime&&!JsonAnalysis.EndTime" class="status waiting-anl"
+                 src="@/assets/image/model/waitingAnlBlue.png"/>
+            <img v-else class="status waiting-anl" src="@/assets/image/model/waitingAnlGreen.png"/>
             <!-- 未通过 -->
-            <img v-if="ModelCheck.Remove||ModelExport.Remove" class="status del-model" src="@/assets/image/model/delModelBlue.png" />
-            <img v-else class="status del-model" src="@/assets/image/model/delModelGray.png" />
+            <img v-if="ModelCheck.Remove||ModelExport.Remove" class="status del-model"
+                 src="@/assets/image/model/delModelBlue.png"/>
+            <img v-else class="status del-model" src="@/assets/image/model/delModelGray.png"/>
 
             <!-- 调度器2 -->
-            <div class="path-tips shadow-box" style="top:114px;left:329px;" @click="getNodeDes(SchedulerExport,'等待调度器分配', true)"
-              v-if="SchedulerExport.BeginTime">
+            <div class="path-tips shadow-box" style="top:114px;left:329px;"
+                 @click="getNodeDes(SchedulerExport,'等待调度器分配', true)"
+                 v-if="SchedulerExport.BeginTime">
               <i class="el-icon-error" v-if="SchedulerExport.HasError"></i>
               <i class="el-icon-warning" v-else-if="SchedulerExport.HasRetry"></i>
-              <p>耗时: {{SchedulerExport.TakeTime||'--'}}</p>
+              <p>耗时: {{ SchedulerExport.TakeTime || '--' }}</p>
               <!-- <p>平均上传速度: 1M/s</p> -->
-              <p>开始时间: {{SchedulerExport.BeginTime||'--'}}</p>
-              <p v-if="!SchedulerExport.EndTime">待分配模型数量: {{waitAssign}}</p>
-              <p v-else>结束时间: {{SchedulerExport.EndTime}}</p>
+              <p>开始时间: {{ SchedulerExport.BeginTime || '--' }}</p>
+              <p v-if="!SchedulerExport.EndTime">待分配模型数量: {{ waitAssign }}</p>
+              <p v-else>结束时间: {{ SchedulerExport.EndTime }}</p>
             </div>
 
-            <p style="float:left;width:100%;text-align:center;margin-top:83px;color:#acb5bb;font-size:12px;">revit本地服务器集群</p>
+            <p style="float:left;width:100%;text-align:center;margin-top:83px;color:#acb5bb;font-size:12px;">
+              revit本地服务器集群</p>
           </el-row>
           <!-- 下载模型文件1 -->
           <div class="path-tips shadow-box up-model-tips" @click="getNodeDes(ModelCheck,'下载模型文件', true)">
             <i class="el-icon-error" v-if="ModelCheck.HasError"></i>
             <i class="el-icon-warning" v-else-if="ModelCheck.HasRetry"></i>
-            <p>耗时: {{SchedulerCheck.TakeTime||'--'}}</p>
-            <p>平均下载速度: {{ModelCheckSpeed}}</p>
-            <p>开始时间: {{SchedulerCheck.BeginTime||'--'}}</p>
-            <p>结束时间: {{SchedulerCheck.EndTime||'--'}}</p>
+            <p>耗时: {{ SchedulerCheck.TakeTime || '--' }}</p>
+            <p>平均下载速度: {{ ModelCheckSpeed }}</p>
+            <p>开始时间: {{ SchedulerCheck.BeginTime || '--' }}</p>
+            <p>结束时间: {{ SchedulerCheck.EndTime || '--' }}</p>
           </div>
           <!-- 下载模型文件2 -->
           <div class="path-tips shadow-box up-model-tips2" @click="getNodeDes(ModelExport,'下载模型文件', true)">
             <i class="el-icon-error" v-if="ModelExport.HasError"></i>
             <i class="el-icon-warning" v-else-if="ModelExport.HasRetry"></i>
-            <p>耗时: {{ModelExport.DownTakeTime||'--'}}</p>
-            <p>平均下载速度: {{ModelExportSpeed||'--'}}</p>
-            <p>开始时间: {{SchedulerExport.BeginTime||'--'}}</p>
-            <p>结束时间: {{ModelExport.JsonzBeginTime||'--'}}</p>
+            <p>耗时: {{ ModelExport.DownTakeTime || '--' }}</p>
+            <p>平均下载速度: {{ ModelExportSpeed || '--' }}</p>
+            <p>开始时间: {{ SchedulerExport.BeginTime || '--' }}</p>
+            <p>结束时间: {{ ModelExport.JsonzBeginTime || '--' }}</p>
           </div>
           <!-- 存储json -->
           <div class="path-tips shadow-box up-json-tips" @click="getNodeDes(ModelExport,'存储json数据', true)">
             <i class="el-icon-error" v-if="ModelExport.HasError"></i>
             <i class="el-icon-warning" v-else-if="ModelExport.HasRetry"></i>
-            <p>耗时: {{ModelExport.JsonzTakeTime||'--'}}</p>
-            <p>平均上传速度: {{SaveJsonSpeed||'--'}}</p>
-            <p>开始时间: {{ModelExport.JsonzBeginTime||'--'}}</p>
-            <p>结束时间: {{ModelExport.JsonzEndTime||'--'}}</p>
+            <p>耗时: {{ ModelExport.JsonzTakeTime || '--' }}</p>
+            <p>平均上传速度: {{ SaveJsonSpeed || '--' }}</p>
+            <p>开始时间: {{ ModelExport.JsonzBeginTime || '--' }}</p>
+            <p>结束时间: {{ ModelExport.JsonzEndTime || '--' }}</p>
           </div>
           <!-- 下载json压缩包 -->
           <div class="path-tips shadow-box down-json-tips" @click="getNodeDes(JsonAnalysis,'下载json压缩包', true)">
             <i class="el-icon-error" v-if="JsonAnalysis.HasError"></i>
             <i class="el-icon-warning" v-else-if="JsonAnalysis.HasRetry"></i>
-            <p>耗时: {{JsonAnalysis.TakeTime||'--'}}</p>
-            <p>平均下载速度: {{DownJsonSpeed||'--'}}</p>
-            <p>开始时间: {{JsonAnalysis.BeginTime||'--'}}</p>
-            <p>结束时间: {{JsonAnalysis.EndTime||'--'}}</p>
+            <p>耗时: {{ JsonAnalysis.TakeTime || '--' }}</p>
+            <p>平均下载速度: {{ DownJsonSpeed || '--' }}</p>
+            <p>开始时间: {{ JsonAnalysis.BeginTime || '--' }}</p>
+            <p>结束时间: {{ JsonAnalysis.EndTime || '--' }}</p>
           </div>
           <div id="secondDel" class="delModel">
             <i class="iconfont icon-delate" style="color:#89969F;font-size:30px;line-height:1;margin-left:-6px"></i>
@@ -207,8 +221,8 @@
                     <p style="color:#676767">web服务数据库</p>
                   </div>
                 </div>
-                <img class="status column-up" src="@/assets/image/model/columnGray.png" />
-                <img class="status right-down" src="@/assets/image/model/rightDownGray.png" />
+                <img class="status column-up" src="@/assets/image/model/columnGray.png"/>
+                <img class="status right-down" src="@/assets/image/model/rightDownGray.png"/>
               </div>
               <div class="shadow-box">
                 <div style="background:#b8c5d0;height:20px;"></div>
@@ -218,7 +232,7 @@
                     <p style="color:#676767">数据中心数据库</p>
                   </div>
                 </div>
-                <img class="status column-up" src="@/assets/image/model/columnGray.png" />
+                <img class="status column-up" src="@/assets/image/model/columnGray.png"/>
               </div>
               <div class="shadow-box">
                 <div style="background:#b8c5d0;height:20px;"></div>
@@ -228,7 +242,7 @@
                     <p style="color:#676767">web服务数据库</p>
                   </div>
                 </div>
-                <img class="status column-up" src="@/assets/image/model/columnGray.png" />
+                <img class="status column-up" src="@/assets/image/model/columnGray.png"/>
               </div>
             </div>
           </div>
@@ -241,30 +255,36 @@
             <pathCard class="webServer-item" :title="'存储数据到数据中心'" :data="SyncDatacenter" @click="getNodeDes"></pathCard>
             <pathCard class="webServer-item" :title="'记录增删日志'" @click="getNodeDes" :data="SaveLog"></pathCard>
 
-            <img v-if="!SaveData.BeginTime" class="status path1 path" src="@/assets/image/model/arrowGray.png" />
-            <img v-else-if="SaveData.BeginTime&&!SaveData.EndTime" class="status path1 path" src="@/assets/image/model/arrowBlue.png" />
-            <img v-else class="status path1 path" src="@/assets/image/model/arrowGreen.png" />
+            <img v-if="!SaveData.BeginTime" class="status path1 path" src="@/assets/image/model/arrowGray.png"/>
+            <img v-else-if="SaveData.BeginTime&&!SaveData.EndTime" class="status path1 path"
+                 src="@/assets/image/model/arrowBlue.png"/>
+            <img v-else class="status path1 path" src="@/assets/image/model/arrowGreen.png"/>
 
-            <img v-if="!MultiFloorCheck.BeginTime" class="status path2 path" src="@/assets/image/model/arrowGray.png" />
-            <img v-else-if="MultiFloorCheck.BeginTime&&!MultiFloorCheck.EndTime" class="status path2 path" src="@/assets/image/model/arrowBlue.png" />
-            <img v-else class="status path2 path" src="@/assets/image/model/arrowGreen.png" />
+            <img v-if="!MultiFloorCheck.BeginTime" class="status path2 path" src="@/assets/image/model/arrowGray.png"/>
+            <img v-else-if="MultiFloorCheck.BeginTime&&!MultiFloorCheck.EndTime" class="status path2 path"
+                 src="@/assets/image/model/arrowBlue.png"/>
+            <img v-else class="status path2 path" src="@/assets/image/model/arrowGreen.png"/>
 
-            <img v-if="!SyncDatacenter.BeginTime" class="status path3 path" src="@/assets/image/model/arrowGray.png" />
-            <img v-else-if="SyncDatacenter.BeginTime&&!SyncDatacenter.EndTime" class="status path3 path" src="@/assets/image/model/arrowBlue.png" />
-            <img v-else class="status path3 path" src="@/assets/image/model/arrowGreen.png" />
+            <img v-if="!SyncDatacenter.BeginTime" class="status path3 path" src="@/assets/image/model/arrowGray.png"/>
+            <img v-else-if="SyncDatacenter.BeginTime&&!SyncDatacenter.EndTime" class="status path3 path"
+                 src="@/assets/image/model/arrowBlue.png"/>
+            <img v-else class="status path3 path" src="@/assets/image/model/arrowGreen.png"/>
 
-            <img v-if="!SaveLog.BeginTime" class="status path4 path" src="@/assets/image/model/arrowGray.png" />
-            <img v-else-if="SaveLog.BeginTime&&!SaveLog.EndTime" class="status path4 path" src="@/assets/image/model/arrowBlue.png" />
-            <img v-else class="status path4 path" src="@/assets/image/model/arrowGreen.png" />
+            <img v-if="!SaveLog.BeginTime" class="status path4 path" src="@/assets/image/model/arrowGray.png"/>
+            <img v-else-if="SaveLog.BeginTime&&!SaveLog.EndTime" class="status path4 path"
+                 src="@/assets/image/model/arrowBlue.png"/>
+            <img v-else class="status path4 path" src="@/assets/image/model/arrowGreen.png"/>
 
-            <img v-if="MultiFloorCheck.GridCheck||MultiFloorCheck.LevelCheck" class="status del-model" src="@/assets/image/model/delModelBlue.png" />
-            <img v-else class="status del-model" src="@/assets/image/model/delModelGray.png" />
+            <img v-if="MultiFloorCheck.GridCheck||MultiFloorCheck.LevelCheck" class="status del-model"
+                 src="@/assets/image/model/delModelBlue.png"/>
+            <img v-else class="status del-model" src="@/assets/image/model/delModelGray.png"/>
 
-            <img v-if="1" class="status path5 path" src="@/assets/image/model/arrowGray.png" />
+            <img v-if="1" class="status path5 path" src="@/assets/image/model/arrowGray.png"/>
             <!-- <img v-else-if="2" class="status path1" src="@/assets/image/model/arrowBlue.png" />
             <img v-else class="status path1" src="@/assets/image/model/arrowGreen.png" /> -->
 
-            <p style="float:left;width:100%;padding-left:714px;margin-top:83px;color:#acb5bb;font-size:12px;">模型web服务器</p>
+            <p style="float:left;width:100%;padding-left:714px;margin-top:83px;color:#acb5bb;font-size:12px;">
+              模型web服务器</p>
           </el-row>
           <div id="thirdDel" class="delModel">
             <i class="iconfont icon-delate" style="color:#89969F;font-size:30px;line-height:1;margin-left:-6px"></i>
@@ -274,7 +294,7 @@
         <div class="fifth-column column">
           <pathCard class="finish-item" :title="'完成'" :data="SaveLog" :isCustomize="true">
             <p>后续关系计算...</p>
-            <p>完成时间: {{SaveLog.EndTime||'--'}}</p>
+            <p>完成时间: {{ SaveLog.EndTime || '--' }}</p>
           </pathCard>
         </div>
       </div>
@@ -288,6 +308,7 @@ import pathCard from "@/components/model/file/pathCard"
 import nodeDialog from "@/components/model/file/nodeDialog"
 import { modelPathControl, unassignQuery } from "@/api/model/file";
 import Bus from '@/utils/bus.js'
+
 export default {
   components: {
     pathCard,
@@ -367,14 +388,14 @@ export default {
     // 获取流转状态
     getMessage() {
       let pa = {
-        Filters: `Id="${this.Id}"`
+        filters: `id="${this.Id}"`
       }
       modelPathControl(pa, res => {
-        if (res.Content.length) {
-          const data = res.Content[0];
-          if (data.SchedulerExport && data.SchedulerExport.BeginTime) {
-            if (data.ModelExport) {
-              data.ModelExport.BeginTime = data.SchedulerExport.BeginTime
+        if (res.content.length) {
+          const data = res.content[0];
+          if (data.schedulerExport && data.schedulerExport.beginTime) {
+            if (data.modelExport) {
+              data.modelExport.beginTime = data.schedulerExport.beginTime
             }
           }
           this.updateData(data);
@@ -393,13 +414,13 @@ export default {
         }
       })
     },
-    // 
+    //
     getUnassignNum() {
       let pa = {
-        Filters: `Status=0 or Status=1 or Status=2`
+        filters: `status=0 or status=1 or status=2`
       }
       unassignQuery(pa, res => {
-        this.waitAssign = res.Total
+        this.waitAssign = res.total
       })
     },
     // 定时器
@@ -414,16 +435,17 @@ export default {
     },
     // 计算耗时
     updateData(data) {
-      this.JsonAnalysis = this.formatTime(data.JsonAnalysis || {});
-      this.ModelCheck = this.formatTime(data.ModelCheck || {})
-      this.ModelExport = this.formatTime(data.ModelExport || {})
-      this.MultiFloorCheck = this.formatTime(data.MultiFloorCheck || {})
-      this.SaveData = this.formatTime(data.SaveData || {})
-      this.SchedulerCheck = this.formatTime(data.SchedulerCheck || {})
-      this.SchedulerExport = this.formatTime(data.SchedulerExport || {})
-      this.UploadState = this.formatTime(data.UploadState || {})
-      this.SyncDatacenter = this.formatTime(data.SyncDatacenter || {})
-      this.SaveLog = this.formatTime(data.SaveLog || {})
+      debugger
+      this.JsonAnalysis = this.formatTime(data.jsonAnalysis || {});
+      this.ModelCheck = this.formatTime(data.modelCheck || {})
+      this.ModelExport = this.formatTime(data.modelExport || {})
+      this.MultiFloorCheck = this.formatTime(data.multiFloorCheck || {})
+      this.SaveData = this.formatTime(data.saveData || {})
+      this.SchedulerCheck = this.formatTime(data.schedulerCheck || {})
+      this.SchedulerExport = this.formatTime(data.schedulerExport || {})
+      this.UploadState = this.formatTime(data.uploadState || {})
+      this.SyncDatacenter = this.formatTime(data.syncDatacenter || {})
+      this.SaveLog = this.formatTime(data.saveLog || {})
       if (this.UploadState.BeginTime) {
         let temp = { BeginTime: this.UploadState.BeginTime }
         if (this.SaveLog.EndTime) {
@@ -570,35 +592,44 @@ export default {
   border: 1px solid #e4e4e4;
   background-color: #fff;
   overflow: hidden;
+
   .title-time {
     padding: 10px;
     border-bottom: 1px solid #e4e4e4;
+
     & > div {
       float: left;
       font-size: 14px;
     }
+
     & > div + div {
       margin-left: 20px;
     }
   }
+
   .path-pic {
     height: calc(100% - 50px);
     overflow-x: auto;
+
     #path-container {
       position: relative;
       height: 100%;
       padding: 20px 0 0;
       width: 4450px;
+
       img.status {
         position: absolute;
       }
+
       .column {
         height: 100%;
         position: relative;
         float: left;
         width: 1000px;
+
         &.first-column {
           width: 832px;
+
           #baseServer {
             border: 2px dashed #b8c5d0;
             border-radius: 4px;
@@ -606,6 +637,7 @@ export default {
             margin: 389px 20px 0;
             width: 584px;
             height: 270px;
+
             .updown {
               position: relative;
               width: 150px;
@@ -613,6 +645,7 @@ export default {
               float: left;
               margin-right: 150px;
             }
+
             .mid-transfer {
               position: relative;
               width: 235px;
@@ -621,51 +654,63 @@ export default {
               margin-top: 30px;
             }
           }
+
           .first-title {
             background-color: #f3f5f6;
             font-size: 14px;
             padding: 5px 10px;
+
             i {
               margin-right: 5px;
             }
           }
+
           .first-content {
             font-size: 12px;
             padding: 10px;
             color: #acb5bb;
           }
+
           .row-status {
             left: 170px;
             top: 70px;
           }
+
           .row-waiting-manage {
             left: 264px;
             top: 30px;
           }
+
           .up-model {
             left: 95px;
             bottom: 96px;
           }
         }
+
         &.second-column {
           #ossServer {
             position: relative;
             width: 780px;
             margin: 0 auto;
+
             .server-content {
               padding: 20px 0;
+
               .sm-box {
                 float: left;
                 padding: 0 10px;
                 line-height: 1;
+
                 & > div {
                   float: left;
                   font-size: 12px;
                 }
+
                 &:nth-child(1) {
                   width: 100px;
                   margin-right: 30px;
                 }
+
                 &:nth-child(2),
                 &:nth-child(3) {
                   padding: 15px 20px;
@@ -673,9 +718,11 @@ export default {
                   border-radius: 4px;
                   border: 2px dashed #b8c5d0;
                 }
+
                 &:nth-child(3) {
                   margin-left: 40px;
                 }
+
                 .fixed {
                   p {
                     width: 167px;
@@ -684,157 +731,196 @@ export default {
                     white-space: nowrap;
                   }
                 }
+
                 .image {
                   margin-right: 20px;
                 }
+
                 p {
                   margin-bottom: 8px;
                 }
               }
             }
+
             .down-model {
               left: 82px;
               top: 156px;
             }
+
             .down-model-sec {
               left: 565px;
               top: 156px;
             }
+
             .up-json {
               left: 665px;
               top: 156px;
             }
+
             .down-json {
               top: 68px;
               right: -460px;
             }
           }
+
           #revitServer {
             padding: 16px 16px 0;
             border: 2px dashed #b8c5d0;
             width: 890px;
             height: 270px;
             margin: 235px auto 0;
+
             .revit-item {
               float: left;
+
               &:nth-child(1) {
                 margin-right: 255px;
               }
             }
+
             .row-waiting-manage {
               left: 300px;
               top: 80px;
               transform: scale(0.9);
             }
+
             .waiting-anl {
               right: -263px;
               top: 80px;
             }
+
             .del-model {
               left: 91px;
               top: 168px;
             }
           }
+
           .up-model-tips {
             left: -44px;
             top: 202px;
           }
+
           .up-model-tips2 {
             left: 439px;
             top: 202px;
           }
+
           .up-json-tips {
             left: 815px;
             top: 202px;
           }
+
           .down-json-tips {
             right: -336px;
             top: 114px;
           }
+
           #secondDel {
             margin: 48px 0 0 166px;
           }
         }
+
         &.third-column {
           width: 1946px;
           margin-left: 200px;
+
           #webDatabase {
             & > div {
               display: inline-block;
               position: relative;
               width: 130px;
               height: 144px;
+
               .column-up {
                 top: 158px;
                 left: 63px;
                 transform: scale(1.1);
               }
+
               .right-down {
                 left: 130px;
                 top: 103px;
               }
+
               &:nth-child(1) {
                 margin-left: 500px;
               }
+
               &:nth-child(2) {
                 margin-left: 672px;
               }
+
               &:nth-child(3) {
                 margin-left: 271px;
               }
             }
           }
+
           #dataCenterDatabase {
             width: 130px;
             height: 144px;
             margin: 0 auto;
+
             .column-up {
               top: 158px;
               left: 165px;
               transform: scale(1.1);
             }
           }
+
           #webServer {
             border: 2px dashed #b8c5d0;
             margin-top: 241px;
             padding: 16px 16px 0;
             height: 270px;
+
             .webServer-item {
               float: left;
+
               & + .webServer-item {
                 margin-left: 105px;
               }
             }
+
             .path {
               top: 95px;
             }
+
             .path1 {
               left: 311px;
             }
+
             .path2 {
               left: 715px;
             }
+
             .path3 {
               left: 1117px;
             }
+
             .path4 {
               left: 1520px;
             }
+
             .path5 {
               left: 1923px;
             }
+
             .del-model {
               right: 919px;
               top: 168px;
             }
           }
+
           #thirdDel {
             margin: 48px 0 0 925px;
           }
         }
+
         &.fifth-column {
           width: auto;
           margin-left: 88px;
+
           .finish-item {
             margin-top: 403px;
           }
@@ -842,10 +928,12 @@ export default {
       }
     }
   }
+
   .shadow-box {
     box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.2);
     border-radius: 4px;
   }
+
   .path-tips {
     position: absolute;
     font-size: 12px;
@@ -853,18 +941,22 @@ export default {
     height: 93px;
     padding: 10px;
     cursor: pointer;
+
     i {
       position: absolute;
       font-size: 16px;
       right: 10px;
+
       &.el-icon-warning {
         color: #fbc636;
       }
+
       &.el-icon-error {
         color: #ff6660;
       }
     }
   }
+
   .delModel {
     width: 76px;
     height: 66px;

+ 348 - 332
src/views/model/report/index.vue

@@ -2,13 +2,13 @@
   <div class="report-index">
     <div class="statistics">
       <div class="building">
-        <p>建筑模型文件夹:<b>{{ModelFileCount}}</b></p>
+        <p>建筑模型文件夹:<b>{{ ModelFileCount }}</b></p>
       </div>
       <div class="includefloor">
-        <p>包含楼层模型文件:<b>{{modelFloorCount}}</b></p>
+        <p>包含楼层模型文件:<b>{{ modelFloorCount }}</b></p>
       </div>
       <div class="problematic">
-        <p>检查出问题的楼层模型文件:<b>{{problemCount}}</b></p>
+        <p>检查出问题的楼层模型文件:<b>{{ problemCount }}</b></p>
       </div>
     </div>
     <div class="main-content">
@@ -17,7 +17,8 @@
           <template v-for="(item,index) in tableList">
             <el-tab-pane :name="item.Code" :key="index" :label="item.Name">
               <span slot="label">
-                <i :class="item.flag?'msg-icon el-icon-success success-color':'msg-icon el-icon-error error-color'" style="font-size:14px;"></i>
+                <i :class="item.flag?'msg-icon el-icon-success success-color':'msg-icon el-icon-error error-color'"
+                   style="font-size:14px;"></i>
                 <span>{{ item.Name }}</span>
               </span>
             </el-tab-pane>
@@ -26,9 +27,10 @@
       </div>
       <div class="content-box">
         <div class="button">
-          <el-button @click="del"  :disabled="toBeDelCount?false:true" :title="toBeDelCount ? '':'没有待删除的设备'">需从模型中删除的设备
+          <el-button @click="del" :disabled="toBeDelCount?false:true" :title="toBeDelCount ? '':'没有待删除的设备'">需从模型中删除的设备
           </el-button>
-          <el-button @click="supplement" :disabled="toBeSuppCount?false:true" :title="toBeSuppCount ? '':'没有待补充的设备'">模型待补充的设备
+          <el-button @click="supplement" :disabled="toBeSuppCount?false:true" :title="toBeSuppCount ? '':'没有待补充的设备'">
+            模型待补充的设备
           </el-button>
           <el-button :loading="load" @click='getExportReport'>导出模型问题报告</el-button>
         </div>
@@ -60,7 +62,8 @@
             </el-table-column>
             <el-table-column prop="questionItem" label="有问题的检查项" fixed width="150" style="border-right:1px solid red">
               <template slot-scope="scope">
-                <el-badge :value="scope.row.questionItem" class="item" :type='scope.row.questionItem?"warning":"success"'>
+                <el-badge :value="scope.row.questionItem" class="item"
+                          :type='scope.row.questionItem?"warning":"success"'>
                 </el-badge>
               </template>
             </el-table-column>
@@ -129,7 +132,8 @@
             </el-table-column>
             <el-table-column prop="SystemReferEquipCheck" label='管网及相关设备检查' width="200">
               <template slot-scope="scope">
-                <el-badge :type='scope.row.SystemReferEquipCheck?"danger":"success"' :value="scope.row.SystemReferEquipCheck"
+                <el-badge :type='scope.row.SystemReferEquipCheck?"danger":"success"'
+                          :value="scope.row.SystemReferEquipCheck"
                           class="item"
                           v-if="scope.row.SystemReferEquipCheck"/>
                 <i class="msg-icon el-icon-success success-color1" style="font-size:20px;"
@@ -160,8 +164,10 @@
               </div>
             </template>
           </el-table>
-          <el-pagination class="right" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page.pageNumber"
-                         :page-sizes="page.pageSizes" :page-size="page.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="page.total">
+          <el-pagination class="right" @size-change="handleSizeChange" @current-change="handleCurrentChange"
+                         :current-page="page.pageNumber"
+                         :page-sizes="page.pageSizes" :page-size="page.pageSize"
+                         layout="total, sizes, prev, pager, next, jumper" :total="page.total">
           </el-pagination>
         </div>
       </div>
@@ -170,385 +176,395 @@
 </template>
 
 <script>
-  import {mapGetters} from "vuex";
-  import dasBoard from "@/views/dasboard/index";
-  import {queryFloorList, queryLostReportList, queryModel, queryReportList} from "@/api/model/report.js";
-  import {getSupplement, getToBeDelEquip} from "@/api/scan/request.js";
-  import axios from 'axios'
+import { mapGetters } from "vuex";
+import dasBoard from "@/views/dasboard/index";
+import { queryFloorList, queryLostReportList, queryModel, queryReportList } from "@/api/model/report.js";
+import { getSupplement, getToBeDelEquip } from "@/api/scan/request.js";
+import axios from 'axios'
 
-  export default {
-    components: {
-      dasBoard
-    },
-    data() {
-      return {
-        params: null,
-        ModelFileCount: null,// 模型文件夹数量
-        modelFloorCount: null,// 包含楼层模型文件数量
-        problemCount: 0,// 检查出问题的楼层模型文件数量
-        tableList: [], // tab数据
-        tableData: [],// 列表数据
-        activeTab: '', // tab当前选中项
-        headerStyle: { // 列表样式
-          backgroundColor: '#e1e4e5',
-          color: '#2b2b2b',
+export default {
+  components: {
+    dasBoard
+  },
+  data() {
+    return {
+      params: null,
+      ModelFileCount: null,// 模型文件夹数量
+      modelFloorCount: null,// 包含楼层模型文件数量
+      problemCount: 0,// 检查出问题的楼层模型文件数量
+      tableList: [], // tab数据
+      tableData: [],// 列表数据
+      activeTab: '', // tab当前选中项
+      headerStyle: { // 列表样式
+        backgroundColor: '#e1e4e5',
+        color: '#2b2b2b',
+        lineHeight: '30px'
+      },
+      page: {
+        pageSize: 50,
+        pageSizes: [10, 20, 50, 100],
+        pageNumber: 1,
+        total: 0
+      },
+      loading: false,
+      load: false,
+      floorIconType: null,
+      toBeSuppCount: 0,
+      toBeDelCount: 0
+    }
+  },
+  mounted() {
+  },
+  created() {
+    this.params = {
+      Orders: "Name asc"
+    }
+    this.getModelFileCount();
+    this.getModelFloorCount();
+  },
+  computed: {
+    ...mapGetters('layout', ['projectId'])
+  },
+  methods: {
+    cellStyle({ row, column, rowIndex, columnIndex }) {
+      if (column.label !== '模型楼层' && column.label !== '待删除设备数量' && column.label !== '待补充设备数量' && column.label !== '有问题的检查项') {
+        return {
+          background: '#f3f3f3',
           lineHeight: '30px'
-        },
-        page: {
-          pageSize: 50,
-          pageSizes: [10, 20, 50, 100],
-          pageNumber: 1,
-          total: 0
-        },
-        loading: false,
-        load: false,
-        floorIconType: null,
-        toBeSuppCount: 0,
-        toBeDelCount: 0
-      }
-    },
-    mounted() { },
-    created() {
-      this.params = {
-        Orders: "Name asc"
+        }
       }
-      this.getModelFileCount();
-      this.getModelFloorCount();
     },
-    computed: {
-      ...mapGetters('layout', ['projectId'])
-    },
-    methods: {
-      cellStyle({row, column, rowIndex, columnIndex}) {
-        if (column.label !== '模型楼层' && column.label !== '待删除设备数量' && column.label !== '待补充设备数量' && column.label !== '有问题的检查项') {
-          return {
-            background: '#f3f3f3',
-            lineHeight: '30px'
+    getModelFloorCount() {// 获取楼层模型文件数量,计算出检查出问题的模型文件
+      let promise1 = new Promise(resolve => {
+        queryFloorList({ filters: "status=4", pageNumber: 1, pageSize: 500 }, res => {
+          resolve(res);
+        })
+      })
+      Promise.all([promise1]).then(response => {
+        this.problemCount = 0;
+        let res = response[0];
+        this.modelFloorCount = res.total;
+        this.modelFloor = res.content;
+        this.getModelFileIcon();
+        this.modelFloor.forEach(item => {
+          if (!item.dataCheckResult) {
+            this.problemCount++;
           }
-        }
-      },
-      getModelFloorCount() {// 获取楼层模型文件数量,计算出检查出问题的模型文件
-        let promise1 = new Promise(resolve => {
-          queryFloorList({Filters:"Status=4",pageNumber:1,PageSize: 500}, res => {
-            resolve(res);
-          })
         })
-        Promise.all([promise1]).then(response => {
-          this.problemCount = 0;
-          let res = response[0];
-          this.modelFloorCount = res.Total;
-          this.modelFloor = res.Content;
-          this.getModelFileIcon();
-          this.modelFloor.forEach(item => {
+      })
+    },
+    getModelFileIcon() {// 计算文件夹的图标
+      this.tableList.forEach(item => {
+        this.modelFloor.forEach(it => {
+          if (item.Code === it.folderId) {
             if (!item.DataCheckResult) {
-              this.problemCount++;
+              item.flag = false;
             }
-          })
+          }
         })
-      },
-      getModelFileIcon() {// 计算文件夹的图标
-        this.tableList.forEach(item => {
-          this.modelFloor.forEach(it => {
-            if (item.Code === it.FolderId) {
-              if (!item.DataCheckResult) {
-                item.flag = false;
-              }
-            }
+      })
+    },
+    getData(tab) {// 切换tab时执行
+      this.getModelFloor();
+    },
+    getModelFileCount() {// 获取项目下所有模型文件夹
+      let params = {
+        orders: "name asc"
+      }
+      queryModel(params, res => {
+        this.ModelFileCount = res.content.length;
+        this.tableList = res.content;
+        if (this.tableList && this.tableList.length) {
+          this.tableList.forEach((item, index) => {
+            item.code = item.id;
           })
-        })
-      },
-      getData(tab) {// 切换tab时执行
-        this.getModelFloor();
-      },
-      getModelFileCount() {// 获取项目下所有模型文件夹
-        queryModel(this.params, res => {
-          this.ModelFileCount = res.Content.length;
-          this.tableList = res.Content;
-          if (this.tableList && this.tableList.length) {
-            this.tableList.forEach((item, index) => {
-              item.Code = item.Id;
-            })
-            this.activeTab = this.tableList[0].Code;// 默认选中第一个模型文件夹
-          }
-          this.getModelFloor();
-        });
-      },
-      getModelFloor() {// 获取当前楼层下的模型楼层和各个检查项的数据
-        let params = {
-          ProjectId: this.projectId,
-          Id: `${this.activeTab}`,
-          PageNumber: this.page.pageNumber,
-          PageSize: this.page.pageSize
+          this.activeTab = this.tableList[0].code;// 默认选中第一个模型文件夹
         }
-        queryReportList(params, res => {
-          this.FloorName = res.Content;
-          this.tableData = [];
-          if (this.FloorName && this.FloorName.length) {
-            this.loading = true;
-            let i = 0;
-            this.FloorName.forEach(item => {
-              item.questionItem = 0;
-              for (let key in item) {
-                if (item[key] > 0 && key !== "FloorName" && key !== "questionItem") {
-                  i += 1;
-                  item.questionItem += 1;
-                }
+        this.getModelFloor();
+      });
+    },
+    getModelFloor() {// 获取当前楼层下的模型楼层和各个检查项的数据
+      let params = {
+        ProjectId: this.projectId,
+        Id: `${this.activeTab}`,
+        PageNumber: this.page.pageNumber,
+        PageSize: this.page.pageSize
+      }
+      queryReportList(params, res => {
+        this.FloorName = res.Content;
+        this.tableData = [];
+        if (this.FloorName && this.FloorName.length) {
+          this.loading = true;
+          let i = 0;
+          this.FloorName.forEach(item => {
+            item.questionItem = 0;
+            for (let key in item) {
+              if (item[key] > 0 && key !== "FloorName" && key !== "questionItem") {
+                i += 1;
+                item.questionItem += 1;
               }
-            })
-            this.floorIconType = i;
-          }
-          this.getLostModelFloor();
-        })
-      },
-      getLostModelFloor() {// 获取缺失楼层
-        let params = {
-          ProjectId: this.projectId,
-          Filters: `FolderId='${this.activeTab}';Status=4`
+            }
+          })
+          this.floorIconType = i;
         }
-        queryLostReportList(params, res => {
-          this.LostFloorName = res.Content;
-          this.getToBeCount();
-        })
-      },
-      getToBeCount() {// 根据模型ID获取待删除数量和待补充数量
-        let equipComDelList = [],
-          toBeAdded = []
-        this.equipComDelList = [];
-        this.LostFloorName.forEach(item => {
-          if (item.CurrentModelId) {
-            equipComDelList.push({
-              ModelId: item.CurrentModelId
-            });
-            this.equipComDelList.push(item.CurrentModelId)
-          } else {
-            item.flag = 'lost';
-            item.FloorName = `${item.Note + item.FloorName}`
-          }
-          if (item.Id) {
-            toBeAdded.push({
-              ModelId: item.Id
-            })
-          }
-        })
-        let params = {
-          ProjectId: this.projectId,
-          data: equipComDelList
-        }, paramsToBe = {
-          ProjectId: this.projectId,
-          data: toBeAdded
+        this.getLostModelFloor();
+      })
+    },
+    getLostModelFloor() {// 获取缺失楼层
+      let params = {
+        ProjectId: this.projectId,
+        Filters: `FolderId='${this.activeTab}';Status=4`
+      }
+      queryLostReportList(params, res => {
+        this.LostFloorName = res.Content;
+        this.getToBeCount();
+      })
+    },
+    getToBeCount() {// 根据模型ID获取待删除数量和待补充数量
+      let equipComDelList = [],
+        toBeAdded = []
+      this.equipComDelList = [];
+      this.LostFloorName.forEach(item => {
+        if (item.CurrentModelId) {
+          equipComDelList.push({
+            ModelId: item.CurrentModelId
+          });
+          this.equipComDelList.push(item.CurrentModelId)
+        } else {
+          item.flag = 'lost';
+          item.FloorName = `${item.Note + item.FloorName}`
         }
-        let promise1 = new Promise(resolve => {
-          getToBeDelEquip(params, res => {
-            resolve(res);
+        if (item.Id) {
+          toBeAdded.push({
+            ModelId: item.Id
           })
+        }
+      })
+      let params = {
+        ProjectId: this.projectId,
+        data: equipComDelList
+      }, paramsToBe = {
+        ProjectId: this.projectId,
+        data: toBeAdded
+      }
+      let promise1 = new Promise(resolve => {
+        getToBeDelEquip(params, res => {
+          resolve(res);
         })
-        let promise2 = new Promise(resolve => {
-          getSupplement(paramsToBe, res => {
-            resolve(res);
-          })
+      })
+      let promise2 = new Promise(resolve => {
+        getSupplement(paramsToBe, res => {
+          resolve(res);
         })
-        Promise.all([promise1, promise2]).then(response => {
-          let res = response[0];
-          let res1 = response[1];
-          this.toBeDelCount = 0;
-          this.toBeSuppCount = 0;
-          res.Content.forEach(item => {
-            if (item.Count > 0) {
-              this.toBeDelCount += 1;
+      })
+      Promise.all([promise1, promise2]).then(response => {
+        let res = response[0];
+        let res1 = response[1];
+        this.toBeDelCount = 0;
+        this.toBeSuppCount = 0;
+        res.Content.forEach(item => {
+          if (item.Count > 0) {
+            this.toBeDelCount += 1;
+          }
+          this.LostFloorName.forEach(it => {
+            if (item.ModelId === it.CurrentModelId) {
+              it.toBeDel = item.Count;
             }
-            this.LostFloorName.forEach(it => {
-              if (item.ModelId === it.CurrentModelId) {
-                it.toBeDel = item.Count;
-              }
-            })
           })
-          res1.Content.forEach(item => {
-            if (item.Count > 0) {
-              this.toBeSuppCount += 1;
+        })
+        res1.Content.forEach(item => {
+          if (item.Count > 0) {
+            this.toBeSuppCount += 1;
+          }
+          this.LostFloorName.forEach(it => {
+            if (item.ModelId === it.Id) {
+              it.toBeSupplement = item.Count;
             }
-            this.LostFloorName.forEach(it => {
-              if (item.ModelId === it.Id) {
-                it.toBeSupplement = item.Count;
-              }
-            })
           })
-          if (this.LostFloorName && this.LostFloorName.length) {
-            this.LostFloorName.forEach(item => {
-              this.FloorName.forEach(it => {
-                if (item.FloorName === it.FloorName) {
-                  for (let key in it) {
-                    item[key] = it[key];
-                  }
+        })
+        if (this.LostFloorName && this.LostFloorName.length) {
+          this.LostFloorName.forEach(item => {
+            this.FloorName.forEach(it => {
+              if (item.FloorName === it.FloorName) {
+                for (let key in it) {
+                  item[key] = it[key];
                 }
-              })
+              }
             })
-            this.tableData = this.LostFloorName;
-          } else {
-            this.tableData = [];
+          })
+          this.tableData = this.LostFloorName;
+        } else {
+          this.tableData = [];
+        }
+        this.page.total = this.tableData.length;
+        this.loading = false;
+      })
+    },
+    del() {// 点击需从模型中删除的设备
+      let equipComDelList = encodeURIComponent(JSON.stringify(this.equipComDelList));
+      let jumpRouter = this.$router.resolve({
+        path: '/model/report/deleted',
+        query: { equipComDelList: equipComDelList }
+      })
+      window.open(jumpRouter.href, '_blank')
+    },
+    supplement() {// 点击模型待补充的设备
+      let equipComDelList = encodeURIComponent(JSON.stringify(this.equipComDelList));
+      let jumpRouter = this.$router.resolve({
+        path: '/model/report/supplement',
+        query: { equipComDelList: equipComDelList }
+      })
+      window.open(jumpRouter.href, '_blank')
+    },
+    getExportReport() {// 导出模型问题报告
+      let that = this;
+      this.load = true;
+      axios({
+        method: 'post',
+        url: `/modelapi/report/non-blocking`,
+        data: {
+          Id: this.activeTab,
+          ProjectId: this.projectId
+        },
+        headers: {
+          ProjectId: this.projectId
+        },
+        responseType: 'blob'
+      }).then(function (res) {
+        if (res.data.type == 'application/vnd.ms-excel') {
+          let blob = new Blob([res.data], { type: 'application/vnd.ms-excel;charset=utf-8' });
+          let fileName = decodeURI(res.headers['content-disposition']);
+          if (fileName)
+            fileName = fileName.substring(fileName.indexOf('=') + 1);
+          if ('download' in document.createElement('a')) { // 非IE下载
+            const elink = document.createElement('a')
+            elink.download = fileName
+            elink.style.display = 'none'
+            elink.href = URL.createObjectURL(blob)
+            document.body.appendChild(elink)
+            elink.click()
+            URL.revokeObjectURL(elink.href) // 释放URL 对象
+            document.body.removeChild(elink)
+            that.load = false;
+          } else { // IE10+下载
+            navigator.msSaveBlob(blob, fileName)
+            that.load = false;
           }
-          this.page.total = this.tableData.length;
-          this.loading = false;
-        })
-      },
-      del() {// 点击需从模型中删除的设备
-        let equipComDelList = encodeURIComponent(JSON.stringify(this.equipComDelList));
-        let jumpRouter = this.$router.resolve({ path: '/model/report/deleted', query: { equipComDelList: equipComDelList } })
-        window.open(jumpRouter.href, '_blank')
-      },
-      supplement() {// 点击模型待补充的设备
-        let equipComDelList = encodeURIComponent(JSON.stringify(this.equipComDelList));
-        let jumpRouter = this.$router.resolve({ path: '/model/report/supplement', query: { equipComDelList: equipComDelList } })
-        window.open(jumpRouter.href, '_blank')
-      },
-      getExportReport() {// 导出模型问题报告
-        let that = this;
-        this.load = true;
-        axios({
-          method: 'post',
-          url: `/modelapi/report/non-blocking`,
-          data: {
-            Id: this.activeTab,
-            ProjectId: this.projectId
-          },
-          headers: {
-            ProjectId: this.projectId
-          },
-          responseType: 'blob'
-        }).then(function (res) {
-          if (res.data.type == 'application/vnd.ms-excel') {
-            let blob = new Blob([res.data], { type: 'application/vnd.ms-excel;charset=utf-8' });
-            let fileName = decodeURI(res.headers['content-disposition']);
-            if (fileName)
-              fileName = fileName.substring(fileName.indexOf('=') + 1);
-            if ('download' in document.createElement('a')) { // 非IE下载
-              const elink = document.createElement('a')
-              elink.download = fileName
-              elink.style.display = 'none'
-              elink.href = URL.createObjectURL(blob)
-              document.body.appendChild(elink)
-              elink.click()
-              URL.revokeObjectURL(elink.href) // 释放URL 对象
-              document.body.removeChild(elink)
+        } else {
+          let reader = new FileReader()
+          reader.onload = e => {
+            if (e.target.readyState === 2) {
+              let res = {}
               that.load = false;
-            } else { // IE10+下载
-              navigator.msSaveBlob(blob, fileName)
-              that.load = false;
-            }
-          } else {
-            let reader = new FileReader()
-            reader.onload = e => {
-              if (e.target.readyState === 2) {
-                let res = {}
-                that.load = false;
-                res = JSON.parse(e.target.result)
-                that.$message.error(res.Message);
-              }
+              res = JSON.parse(e.target.result)
+              that.$message.error(res.Message);
             }
-            reader.readAsText(res.data)
           }
-        })
-      },
-      tableRowClassName({ row, rowIndex, column }) {// 设置缺失楼层所在行的背景色
-        if (row.flag && row.flag === 'lost') {
-          return 'warning-row';
+          reader.readAsText(res.data)
         }
-      },
-      handleSizeChange(val) {// 切换每页显示数量
-        this.page.pageSize = val;
-        this.getModelFloor();
-      },
-      handleCurrentChange(val) {// 切换页码
-        this.page.pageNumber = val;
-        this.getModelFloor();
-      }
+      })
     },
-    watch: {
-      projectId() {
-        this.getModelFileCount();
-        this.getModelFloorCount();
+    tableRowClassName({ row, rowIndex, column }) {// 设置缺失楼层所在行的背景色
+      if (row.flag && row.flag === 'lost') {
+        return 'warning-row';
       }
+    },
+    handleSizeChange(val) {// 切换每页显示数量
+      this.page.pageSize = val;
+      this.getModelFloor();
+    },
+    handleCurrentChange(val) {// 切换页码
+      this.page.pageNumber = val;
+      this.getModelFloor();
+    }
+  },
+  watch: {
+    projectId() {
+      this.getModelFileCount();
+      this.getModelFloorCount();
     }
   }
+}
 </script>
 
 <style lang="less" scoped>
-  .report-index {
-    .statistics {
-      display: flex;
-      width: 100%;
-      padding: 20px 0;
-      background: white;
-      margin-bottom: 10px;
+.report-index {
+  .statistics {
+    display: flex;
+    width: 100%;
+    padding: 20px 0;
+    background: white;
+    margin-bottom: 10px;
 
-      div {
-        flex: 1;
-        text-align: center;
+    div {
+      flex: 1;
+      text-align: center;
 
-        p {
-          b {
-            font-size: 20px;
-            margin-left: 20px;
-          }
+      p {
+        b {
+          font-size: 20px;
+          margin-left: 20px;
         }
       }
     }
+  }
 
-    .main-content {
-      width: 100%;
-      height: calc(100% - 90px);
-      background: white;
+  .main-content {
+    width: 100%;
+    height: calc(100% - 90px);
+    background: white;
 
-      .content-box {
-        height: calc(100% - 105px);
+    .content-box {
+      height: calc(100% - 105px);
 
-        .table {
-          margin-top: 15px;
-        }
+      .table {
+        margin-top: 15px;
       }
     }
+  }
 
-    .button {
-      padding-left: 10px;
-
-    }
+  .button {
+    padding-left: 10px;
 
-    .success-color {
-      color: #67c23a;
-    }
+  }
 
-    .error-color {
-      color: #f56c6c;
-    }
+  .success-color {
+    color: #67c23a;
+  }
 
-    .success-color1 {
-      color: #67c23a60;
-    }
+  .error-color {
+    color: #f56c6c;
+  }
 
-    .error-color1 {
-      color: #f56c6c60;
-    }
+  .success-color1 {
+    color: #67c23a60;
+  }
 
-    /deep/ .el-table_1_column_4 {
-      border-right: 1px solid #e2e2e2 !important;
-    }
+  .error-color1 {
+    color: #f56c6c60;
+  }
 
-    /deep/ .el-table {
-      .el-table__fixed {
-        height: auto !important;
-        bottom: 17px;
-      }
-    }
+  /deep/ .el-table_1_column_4 {
+    border-right: 1px solid #e2e2e2 !important;
+  }
 
-    /deep/ .el-table__row.warning-row {
-      td {
-        background: #f9f9f9 !important;
-      }
+  /deep/ .el-table {
+    .el-table__fixed {
+      height: auto !important;
+      bottom: 17px;
     }
+  }
 
-    /deep/ .el-badge__content--danger {
-      background-color: #F56C6C60;
+  /deep/ .el-table__row.warning-row {
+    td {
+      background: #f9f9f9 !important;
     }
+  }
 
+  /deep/ .el-badge__content--danger {
+    background-color: #F56C6C60;
   }
 
+}
+
 </style>

+ 193 - 191
src/views/ready/buildfloor/drawGraphy/checkGraphy.vue

@@ -1,32 +1,32 @@
 <template>
-    <el-dialog id='checkGraphy' title='添加平面图' :visible.sync='checkGraphyVisible' width='900px' @close='handleClose'>
-        <div class='bodys'>
-            <el-cascader
-                :options='options'
-                :show-all-levels='false'
-                @change='handleChange'
-                @active-item-change='handleItemChange'
-                clearable
-                placeholder='请选择模型文件'
-                v-model='casVal'
-            ></el-cascader>
-            <span>
+  <el-dialog id='checkGraphy' title='添加平面图' :visible.sync='checkGraphyVisible' width='900px' @close='handleClose'>
+    <div class='bodys'>
+      <el-cascader
+        :options='options'
+        :show-all-levels='false'
+        @change='handleChange'
+        @active-item-change='handleItemChange'
+        clearable
+        placeholder='请选择模型文件'
+        v-model='casVal'
+      ></el-cascader>
+      <span>
                 &nbsp;&nbsp;或&nbsp;&nbsp;
                 <el-upload class='upload-demo' action='string' :http-request='uploadAndSubmit' :show-file-list='false'>
                     <el-button type>上传图片</el-button>
                 </el-upload>
                 <span>(支持jpg,png格式)</span>
             </span>
-            <!-- 展示框 -->
-            <div class='showBox'>
-                <drawFloor ref='drawFloorDialog' :showTools='false' :id='0' :dialog='true'></drawFloor>
-            </div>
-        </div>
-        <span slot='footer' class='dialog-footer'>
+      <!-- 展示框 -->
+      <div class='showBox'>
+        <drawFloor ref='drawFloorDialog' :showTools='false' :id='0' :dialog='true'></drawFloor>
+      </div>
+    </div>
+    <span slot='footer' class='dialog-footer'>
             <el-button @click='handleClose'>取 消</el-button>
             <el-button type='primary' @click='bindGraphy'>确 定</el-button>
         </span>
-    </el-dialog>
+  </el-dialog>
 </template>
 <script>
 import drawFloor from './drawFloor'
@@ -34,191 +34,193 @@ import { mapGetters } from 'vuex'
 import request from '@/api/model/file.js'
 import { bindFloorModel } from '@/api/model/file'
 import { manageUpdateFloor } from '@/api/scan/request'
+
 export default {
-    components: {
-        drawFloor,
+  components: {
+    drawFloor,
+  },
+  computed: {
+    ...mapGetters('layout', ['projectId']),
+  },
+  props: {
+    alreadyRelatedModel: {
+      default: [],
     },
-    computed: {
-        ...mapGetters('layout', ['projectId']),
+  },
+  data() {
+    return {
+      casVal: [],
+      jsonKey: '', //map.josn
+      checkGraphyVisible: false,
+      options: [],
+      floor: {}, // 当前选中的楼层数据
+      modelIdToFloorId: {},
+      key: '',
+    }
+  },
+  methods: {
+    // 弹窗显示
+    showDialog(floor) {
+      this.floor = floor
+      this.checkGraphyVisible = true
     },
-    props: {
-        alreadyRelatedModel: {
-            default: [],
-        },
+    // 关闭弹窗
+    handleClose() {
+      this.checkGraphyVisible = false
+      this.casVal = []
+      this.$refs.drawFloorDialog.clearGraphy()
     },
-    data() {
-        return {
-            casVal: [],
-            jsonKey: '', //map.josn
-            checkGraphyVisible: false,
-            options: [],
-            floor: {}, // 当前选中的楼层数据
-            modelIdToFloorId: {},
-            key: '',
+    //上传图片
+    uploadAndSubmit(item) {
+      let file = item.file
+      console.log(file)
+      let reader = new FileReader()
+      let vm = this
+      let fileType = file.name.split('.')
+      let type = fileType[fileType.length - 1]
+      let uploadKey = file.uid
+      reader.onloadend = function () {
+        // 这个事件在读取结束后,无论成功或者失败都会触发
+        if (reader.error) {
+        } else {
+          // document.getElementById("bytesRead").textContent = file.size;
+          // 构造 XMLHttpRequest 对象,发送文件 Binary 数据
+          var xhr = new XMLHttpRequest()
+          xhr.open(
+            /* method */ 'POST',
+            /* target url */
+            '/image-service/common/image_upload?systemId=dataPlatform&secret=9e0891a7a8c8e885&overwrite=true&key=' + file.uid + '.' + type
+            /*, async, default to true */
+          )
+          //xhr.overrideMimeType("application/octet-stream");
+          xhr.send(reader.result)
+          xhr.onreadystatechange = function () {
+            if (xhr.readyState == 4) {
+              if (xhr.status == 200) {
+                vm.key = uploadKey + '.' + type
+                vm.jsonKey = ''
+                vm.$refs.drawFloorDialog.initGraphy(vm.key, 3)
+                //vm.$emit("getKey", file.uid + '.' + type, vm.keyName);
+              }
+            }
+          }
         }
+      }
+      reader.readAsArrayBuffer(file)
     },
-    methods: {
-        // 弹窗显示
-        showDialog(floor) {
-            this.floor = floor
-            this.checkGraphyVisible = true
-        },
-        // 关闭弹窗
-        handleClose() {
-            this.checkGraphyVisible = false
-            this.casVal = []
-            this.$refs.drawFloorDialog.clearGraphy()
-        },
-        //上传图片
-        uploadAndSubmit(item) {
-            let file = item.file
-            console.log(file)
-            let reader = new FileReader()
-            let vm = this
-            let fileType = file.name.split('.')
-            let type = fileType[fileType.length - 1]
-            let uploadKey = file.uid
-            reader.onloadend = function () {
-                // 这个事件在读取结束后,无论成功或者失败都会触发
-                if (reader.error) {
-                } else {
-                    // document.getElementById("bytesRead").textContent = file.size;
-                    // 构造 XMLHttpRequest 对象,发送文件 Binary 数据
-                    var xhr = new XMLHttpRequest()
-                    xhr.open(
-                        /* method */ 'POST',
-                        /* target url */
-                        '/image-service/common/image_upload?systemId=dataPlatform&secret=9e0891a7a8c8e885&overwrite=true&key=' + file.uid + '.' + type
-                        /*, async, default to true */
-                    )
-                    //xhr.overrideMimeType("application/octet-stream");
-                    xhr.send(reader.result)
-                    xhr.onreadystatechange = function () {
-                        if (xhr.readyState == 4) {
-                            if (xhr.status == 200) {
-                                vm.key = uploadKey + '.' + type
-                                vm.jsonKey = ''
-                                vm.$refs.drawFloorDialog.initGraphy(vm.key, 3)
-                                //vm.$emit("getKey", file.uid + '.' + type, vm.keyName);
-                            }
-                        }
-                    }
-                }
-            }
-            reader.readAsArrayBuffer(file)
-        },
-        // 更新楼层 平面图文件
-        bindGraphy() {
-            if (!this.jsonKey && !this.key) {
-                this.$message.warning('请选择模型文件')
-                return
-            }
-            if (this.alreadyRelatedModel.indexOf(this.modelIdToFloorId[this.jsonKey]) > -1) {
-                this.$message.warning('此模型已关联该建筑下的楼层')
-                return
-            }
-            let pa = {
-                FloorId: this.floor.FloorID,
-                BuildingId: this.floor.BuildID,
-                Cover: true,
-            }
-            if (this.jsonKey) {
-                pa.Id = this.modelIdToFloorId[this.jsonKey]
-                bindFloorModel(pa, (res) => {
-                    this.$message.success('更新成功')
-                    this.handleClose()
-                    this.$emit('refresh', this.jsonKey)
-                })
-            }
-            if (this.key) {
-                let Param = {
-                    Content: [{ FloorId: this.floor.FloorID, StructureInfo: { FloorMap: this.key } }],
-                    Projection: ['FloorMap'],
-                }
-                manageUpdateFloor(Param, (res) => {
-                    this.$message.success('更新成功')
-                    this.handleClose()
-                    this.$emit('refresh', this.key)
-                })
-            }
-        },
-        // 点击多级联动
-        handleChange(val) {
-            this.$refs.drawFloorDialog.initGraphy(val[1], 1)
-            this.jsonKey = val[1]
-            this.key = ''
-        },
-        // 通过id查询文件夹下模型文件
-        handleItemChange(val) {
-            let data = {
-                FolderId: val[0],
-                Status: '4',
-                ProjectId: this.projectId,
-            }
-            request.queryFloorList(data, (res) => {
-                let tempArr = res.Content.map((t) => {
-                    this.modelIdToFloorId[t.CurrentModelId] = t.Id
-                    return {
-                        value: t.CurrentModelId,
-                        label: t.FloorName,
-                    }
-                })
-                console.log(tempArr, 'tempArr')
-                this.pushChild(this.options, tempArr, val[0])
-            })
-        },
-        // 将模型文件list填到相应的文件夹下
-        pushChild(options, arr, Code) {
-            options.map((option) => {
-                if (option.value == Code) {
-                    option.children = arr
-                } else {
-                    if (option.children) {
-                        this.pushChild(option.children, arr, Code)
-                    }
-                }
-            })
-        },
-        init() {
-            this.getDirectory()
-        },
-        // 获取文件夹
-        getDirectory() {
-            request.queryModel('', (res) => {
-                this.options = res.Content.map((t) => {
-                    return {
-                        value: t.Id,
-                        label: t.Name,
-                        children: [],
-                    }
-                })
-            })
-        },
+    // 更新楼层 平面图文件
+    bindGraphy() {
+      if (!this.jsonKey && !this.key) {
+        this.$message.warning('请选择模型文件')
+        return
+      }
+      if (this.alreadyRelatedModel.indexOf(this.modelIdToFloorId[this.jsonKey]) > -1) {
+        this.$message.warning('此模型已关联该建筑下的楼层')
+        return
+      }
+      let pa = {
+        floorId: this.floor.FloorID,
+        buildingId: this.floor.BuildID,
+        cover: true,
+      }
+      if (this.jsonKey) {
+        pa.id = this.modelIdToFloorId[this.jsonKey]
+        bindFloorModel(pa, (res) => {
+          this.$message.success('更新成功')
+          this.handleClose()
+          this.$emit('refresh', this.jsonKey)
+        })
+      }
+      if (this.key) {
+        let Param = {
+          Content: [{ FloorId: this.floor.FloorID, StructureInfo: { FloorMap: this.key } }],
+          Projection: ['FloorMap'],
+        }
+        manageUpdateFloor(Param, (res) => {
+          this.$message.success('更新成功')
+          this.handleClose()
+          this.$emit('refresh', this.key)
+        })
+      }
+    },
+    // 点击多级联动
+    handleChange(val) {
+      this.$refs.drawFloorDialog.initGraphy(val[1], 1)
+      this.jsonKey = val[1]
+      this.key = ''
+    },
+    // 通过id查询文件夹下模型文件
+    handleItemChange(val) {
+      let data = {
+        folderId: val[0],
+        status: '4',
+        projectId: this.projectId,
+      }
+      request.queryFloorList(data, (res) => {
+        let tempArr = res.content.map((t) => {
+          this.modelIdToFloorId[t.currentModelId] = t.id
+          return {
+            value: t.currentModelId,
+            label: t.floorName,
+          }
+        })
+        console.log(tempArr, 'tempArr')
+        this.pushChild(this.options, tempArr, val[0])
+      })
+    },
+    // 将模型文件list填到相应的文件夹下
+    pushChild(options, arr, Code) {
+      options.map((option) => {
+        if (option.value == Code) {
+          option.children = arr
+        } else {
+          if (option.children) {
+            this.pushChild(option.children, arr, Code)
+          }
+        }
+      })
     },
-    created() {
-        this.init()
+    init() {
+      this.getDirectory()
     },
-    watch: {
-        projectId() {
-            this.init()
-        },
+    // 获取文件夹
+    getDirectory() {
+      request.queryModel('', (res) => {
+        this.options = res.content.map((t) => {
+          return {
+            value: t.id,
+            label: t.name,
+            children: [],
+          }
+        })
+      })
     },
+  },
+  created() {
+    this.init()
+  },
+  watch: {
+    projectId() {
+      this.init()
+    },
+  },
 }
 </script>
 <style lang="less">
 #checkGraphy {
-    .bodys {
-        .upload-demo {
-            display: inline-block;
-        }
-        .showBox {
-            box-sizing: border-box;
-            width: 100%;
-            height: 300px;
-            border: 1px #ccc solid;
-            padding: 10px;
-            margin-top: 20px;
-        }
+  .bodys {
+    .upload-demo {
+      display: inline-block;
+    }
+
+    .showBox {
+      box-sizing: border-box;
+      width: 100%;
+      height: 300px;
+      border: 1px #ccc solid;
+      padding: 10px;
+      margin-top: 20px;
     }
+  }
 }
 </style>

+ 2 - 2
src/views/ready/buildfloor/repetitionGraphy.vue

@@ -7,7 +7,7 @@
       <el-button v-if='(sign||otherSign)&&!isEdit' size='mini' @click='editGraphy'>编辑平面图</el-button>
       <el-button v-if='isEdit' size='mini' @click='cancel'>取消</el-button>
       <el-button v-if='isEdit' size='mini' @click='confirm' type='primary'>确认</el-button>
-      <span style='float:right;' v-if='file.FolderName'>当前对应的模型文件:{{ file.FolderName }} - {{ file.FloorName }}</span>
+      <span style='float:right;' v-if='file.folderName'>当前对应的模型文件:{{ file.folderName }} - {{ file.floorName }}</span>
     </div>
     <!-- 展示图片 -->
     <div class='drawImg'>
@@ -114,7 +114,7 @@ export default {
     getFileName(modelId) {
       if (!modelId) return
       let pa = {
-        Id: modelId,
+        id: modelId,
       }
       getFileNameById(pa, (res) => {
         this.file = res

+ 11 - 6
src/views/screen/splitscreen/equipledger/index.vue

@@ -2,12 +2,12 @@
   <div>
     <div class='page-bar'>
       <span>设备名称:</span>
-      <span>{{equip.EquipLocalName || equip.EquipName}}</span>
+      <span>{{ equip.EquipLocalName || equip.EquipName }}</span>
       <span>(位置图片)</span>
     </div>
     <div class="page-content" id="page-content" v-loading="canvasLoading">
       <div v-show="showCanvas">
-        <p>{{file.FolderName}} - {{file.FloorName}}</p>
+        <p>{{ file.folderName }} - {{ file.floorName }}</p>
         <canvas :height="cadHeight" :width="cadWidth" id="floorCanvas" :k="refreshCanvas"></canvas>
       </div>
       <div class="no-data" v-show="!showCanvas">
@@ -48,9 +48,9 @@ export default {
       if (this.equip.ModelId && this.equip.BIMLocation) {
         this.showCanvas = true;
         this.getGraphy();
-        queryFileByModelId({ Filters: `Id='${this.equip.ModelId}'` }, res => {
-          if (res.Content.length) {
-            this.getFileName(res.Content[0].FloorModelId);
+        queryFileByModelId({ filters: `id='${this.equip.ModelId}'` }, res => {
+          if (res.content.length) {
+            this.getFileName(res.content[0].floorModelId);
           }
         });
       } else {
@@ -82,7 +82,7 @@ export default {
     },
     // 获取文件夹及文件名称
     getFileName(id) {
-      let pa = { Id: id }
+      let pa = { id: id }
       getFileNameById(pa, res => {
         this.file = res
       })
@@ -119,21 +119,26 @@ $borderColor: rgba(201, 201, 201, 1);
   margin-bottom: 10px;
   border-bottom: 1px solid $borderColor;
 }
+
 .page-content {
   position: relative;
   height: 100%;
   border: 1px solid $borderColor;
+
   p {
     padding: 10px 16px;
   }
+
   canvas {
     top: 0;
   }
+
   .no-data {
     height: 100%;
     text-align: center;
     box-sizing: border-box;
     position: relative;
+
     .position-icon {
       position: absolute;
       top: 50%;