Browse Source

Merge branch 'dataType' of http://39.106.8.246:3003/web/adm into dataType

haojianlong 3 years ago
parent
commit
00a3f35d1f
44 changed files with 2006 additions and 1935 deletions
  1. 537 0
      config/conf.js
  2. 4 441
      config/index.js
  3. 2 2
      config/prod.env.js
  4. 2 2
      src/api/relation/api.js
  5. 3 4
      src/api/scan/httpUtil.js
  6. 1 1
      src/api/scan/request.js
  7. 2 2
      src/components/business_space/business/handsontable.vue
  8. 224 215
      src/components/data_admin/buildTask/detail/assetsDetail.vue
  9. 273 276
      src/components/data_admin/buildTask/detail/deviceDetail.vue
  10. 2 0
      src/components/data_admin/buildTask/table/assetsTable.vue
  11. 3 3
      src/components/data_admin/buildTask/table/deviceTable.vue
  12. 2 0
      src/components/data_admin/buildTask/table/modelTable.vue
  13. 2 2
      src/components/dialogs/changeRea.vue
  14. 226 239
      src/components/dialogs/list/systemType.vue
  15. 1 1
      src/components/ledger/details/detail/cruxDialog.vue
  16. 105 102
      src/components/ledger/details/detail/exhibitionCrux.vue
  17. 3 2
      src/components/ledger/handsontables/assets.vue
  18. 4 4
      src/components/ledger/handsontables/device.vue
  19. 2 2
      src/components/ledger/handsontables/system.vue
  20. 15 13
      src/components/ledger/system/dialog/addSpaceDialog.vue
  21. 1 1
      src/components/relation/overview/CardList.vue
  22. 376 370
      src/components/relation/overview/Modal/RelationMaintain.vue
  23. 2 1
      src/components/relation/overview/Modal/getCascader.vue
  24. 2 1
      src/components/relation/overview/Modal/setCascader.vue
  25. 2 2
      src/framework/components/messagesever/index.vue
  26. 1 1
      src/framework/components/messagesever/msgAllDetails.vue
  27. 1 1
      src/framework/layout/layout-store.js
  28. 29 20
      src/views/data_admin/buildLog/index.vue
  29. 2 2
      src/views/data_admin/buildTask/index.vue
  30. 1 1
      src/views/ledger/cenotelist/index.vue
  31. 2 2
      src/views/ledger/facility/addfacility.vue
  32. 1 1
      src/views/ledger/facility/partsmanage/addparts/index.vue
  33. 1 1
      src/views/ledger/facility/partsmanage/index.vue
  34. 2 2
      src/views/ledger/property/addproperty.vue
  35. 8 6
      src/views/ledger/property/index.vue
  36. 2 2
      src/views/ledger/rentlist/index.vue
  37. 2 2
      src/views/ledger/rentlist/rentadd/index.vue
  38. 9 4
      src/views/ledger/report/index.vue
  39. 4 4
      src/views/ledger/spacelist/spaceadd/index.vue
  40. 2 2
      src/views/ledger/system/addsystem.vue
  41. 34 52
      src/views/model/report/deleted.vue
  42. 4 2
      src/views/model/report/index.vue
  43. 35 45
      src/views/model/report/supplement.vue
  44. 70 99
      src/views/synclog/index.vue

+ 537 - 0
config/conf.js

@@ -0,0 +1,537 @@
+/**
+ * Info: formal、235、14(测试)、18(研发测试)、39(项目组)
+ */
+module.exports = {
+  "18": {
+    "/admin": {
+      target: "http://mbi.sagacloud.cn:8080/",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/admin": "/"
+      }
+    },
+    "/api": {
+      target: "http://192.168.64.17:28888/",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/api": "/"
+      }
+    },
+    "/data-platform-3": {
+      // 目标 API 地址
+      target: "http://39.97.179.199:9909/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/rwd": {
+      // 目标 API 地址
+      target: "http://39.102.40.239:9970/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/business-space": {
+      // 目标 API 地址
+      target: "http://39.97.179.199:9909",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/pointconfig": {
+      // 目标 API 地址
+      target: "http://mbi.sagacloud.cn:8080/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/venders-dp": {
+      // 目标 API 地址
+      target: "http://39.97.179.199:9909",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/venders": {
+      // 目标 API 地址
+      target: "http://39.97.179.199:9909",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/ScanBuilding": {
+      // 目标 API 地址
+      target: "http://mbi.sagacloud.cn:8080/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/scanbuilding-2": {
+      // 目标 API 地址
+      target: "http://mbi.sagacloud.cn:8080/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/scanbuilding": {
+      // 目标 API 地址
+      target: "http://192.168.64./17:28888",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/image-service": {
+      // 目标 API 地址
+      target: "http://39.97.179.199:8891",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false,
+      pathRewrite: {
+        "^/image-service": "/image-service/"
+      }
+    },
+    "/modelapi": {
+      target: "http://192.168.64.17:28890/",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/modelapi": "/revit-algorithm/"
+      }
+    },
+    "/schedulerapi": {
+      target: "http://60.205.177.43:28888/",
+      // target: 'http://mbi.sagacloud.cn:8080',
+      changeOrigin: true,
+      pathRewrite: {
+        "^/schedulerapi": "/scheduler/"
+      }
+    }
+  },
+  "14": {
+    // 新版数据字典
+    "/admin": {
+      target: "http://mbi.sagacloud.cn:8080/",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/admin": "/"
+      }
+    },
+    "/api": {
+      target: "http://192.168.64.14:28888/",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/api": "/"
+      }
+    },
+    "/data-platform-3": {
+      // 目标 API 地址
+      target: "http://39.97.179.199:9909/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/rwd": {
+      // 目标 API 地址
+      target: "http://39.102.40.239:9970/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/business-space": {
+      // 目标 API 地址
+      target: "http://39.97.179.199:9909",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/pointconfig": {
+      // 目标 API 地址
+      target: "http://mbi.sagacloud.cn:8080/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/venders-dp": {
+      // 目标 API 地址
+      target: "http://39.97.179.199:9909",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/venders": {
+      // 目标 API 地址
+      target: "http://39.97.179.199:9909",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/ScanBuilding": {
+      // 目标 API 地址
+      target: "http://mbi.sagacloud.cn:8080/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/scanbuilding-2": {
+      // 目标 API 地址
+      target: "http://mbi.sagacloud.cn:8080/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/scanbuilding": {
+      // 目标 API 地址
+      target: "http://192.168.64.14:28888",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/image-service": {
+      // 目标 API 地址
+      target: "http://39.97.179.199:8891",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false,
+      pathRewrite: {
+        "^/image-service": "/image-service/"
+      }
+    },
+    "/modelapi": {
+      target: "http://192.168.64.14:28888/",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/modelapi": "/revit-algorithm/"
+      }
+    },
+    "/schedulerapi": {
+      target: "http://60.205.177.43:28888/",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/schedulerapi": "/scheduler/"
+      }
+    }
+  },
+  "39": {
+    "/admin": {
+      target: "http://39.102.40.239:8080/",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/admin": "/"
+      }
+    },
+    "/api": {
+      target: "http://39.102.40.239:8080/",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/api": "/"
+      }
+    },
+    "/data-platform-3": {
+      // 目标 API 地址
+      target: "http://39.97.179.199:9909/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/rwd": {
+      // 目标 API 地址
+      target: "http://39.102.40.239:9970/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/business-space": {
+      // 目标 API 地址
+      target: "http://39.97.179.199:9909",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/pointconfig": {
+      // 目标 API 地址
+      target: "http://39.102.40.239:8080/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/venders-dp": {
+      // 目标 API 地址
+      target: "http://39.97.179.199:9909",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/venders": {
+      // 目标 API 地址
+      target: "http://39.97.179.199:9909",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/ScanBuilding": {
+      // 目标 API 地址
+      target: "http://39.102.40.239:8080/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/scanbuilding-2": {
+      // 目标 API 地址
+      target: "http://39.102.40.239:8080/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/scanbuilding": {
+      // 目标 API 地址
+      target: "http://39.102.40.239:8080/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/image-service": {
+      // 目标 API 地址
+      target: "http://39.97.179.199:8891",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false,
+      pathRewrite: {
+        "^/image-service": "/image-service/"
+      }
+    },
+    "/modelapi": {
+      target: "http://39.102.40.239:8080/",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/modelapi": "/revit-algorithm/"
+      }
+    },
+    "/schedulerapi": {
+      target: "http://39.102.40.239:8080/",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/schedulerapi": "/scheduler/"
+      }
+    }
+  },
+  formal: {
+    //正式环境
+    "/admin": {
+      target: "http://mbi.sagacloud.cn:8080",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/admin": "/"
+      }
+    },
+    "/api": {
+      target: "http://mbi.sagacloud.cn:8080",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/api": "/"
+      }
+    },
+    "/data-platform-3": {
+      // 目标 API 地址
+      target: "http://api.sagacloud.cn/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/business-space": {
+      // 目标 API 地址
+      target: "http://api.sagacloud.cn",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/business-space": "/dp-auxiliary/business-space/"
+      }
+    },
+    "/pointconfig": {
+      // 目标 API 地址
+      target: "http://mbi.sagacloud.cn:8080/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/venders-dp": {
+      // 目标 API 地址
+      target: "http://api.sagacloud.cn",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/venders-dp": "/dp-auxiliary/venders-dp/"
+      }
+    },
+    "/venders": {
+      // 目标 API 地址
+      target: "http://api.sagacloud.cn",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/venders": "/dp-auxiliary/venders/"
+      }
+    },
+    "/ScanBuilding": {
+      // 目标 API 地址
+      target: "http://mbi.sagacloud.cn:8080/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/scanbuilding-2": {
+      // 目标 API 地址
+      target: "http://mbi.sagacloud.cn:8080/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/image-service": {
+      // 目标 API 地址
+      target: "http://api.sagacloud.cn",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/image-service": "/dp-auxiliary/image-service/"
+      }
+    },
+    "/modelapi": {
+      target: "http://mbi.sagacloud.cn:8080",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/modelapi": "/revit-algorithm/"
+      }
+    },
+    "/schedulerapi": {
+      target: "http://mbi.sagacloud.cn:8080",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/schedulerapi": "/scheduler/"
+      }
+    }
+  },
+  "235": {
+    //235测试环境
+    "/admin": {
+      target: "http://172.16.44.235:8080",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/admin": "/"
+      }
+    },
+    "/api": {
+      target: "http://172.16.44.235:8080",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/api": "/"
+      }
+    },
+    "/data-platform-3": {
+      // 目标 API 地址
+      target: "http://172.16.42.210:8080/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/business-space": {
+      // 目标 API 地址
+      target: "http://172.16.42.210:8080/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/pointconfig": {
+      // 目标 API 地址
+      target: "http://172.16.44.235:8080/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/venders-dp": {
+      // 目标 API 地址
+      target: "http://172.16.42.210:8080/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/venders": {
+      // 目标 API 地址
+      target: "http://172.16.42.210:8080/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/ScanBuilding": {
+      // 目标 API 地址
+      target: "http://172.16.44.235:8080/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/scanbuilding-2": {
+      // 目标 API 地址
+      target: "http://172.16.44.235:8080/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/image-service": {
+      // 目标 API 地址
+      target: "http://172.16.42.210:8080/",
+      // 如果要代理 websockets
+      ws: true,
+      // 将主机标头的原点更改为目标URL
+      changeOrigin: false
+    },
+    "/modelapi": {
+      target: "http://172.16.42.210:8082",
+      // target: 'http://192.168.20.218:8082',//景灏
+      changeOrigin: true,
+      pathRewrite: {
+        "^/modelapi": "/"
+      }
+    },
+    "/schedulerapi": {
+      target: "http://172.16.42.210:8081",
+      changeOrigin: true,
+      pathRewrite: {
+        "^/schedulerapi": "/"
+      }
+    }
+  }
+};

+ 4 - 441
config/index.js

@@ -3,452 +3,15 @@
 // see http://vuejs-templates.github.io/webpack for documentation.
 
 const path = require('path')
+const proxyTable = require('./conf')
 
 module.exports = {
   dev: {
     // Paths
     assetsSubDirectory: 'static',
     assetsPublicPath: '/',
+    proxyTable: proxyTable["14"],
 
-    // proxyTable: {//正式环境
-    //   '/admin': {
-    //     target: 'http://mbi.sagacloud.cn:8080',
-    //     changeOrigin: true,
-    //     pathRewrite: {
-    //       "^/admin": "/"
-    //     }
-    //   },
-    //   '/api': {
-    //     target: 'http://mbi.sagacloud.cn:8080',
-    //     changeOrigin: true,
-    //     pathRewrite: {
-    //       "^/api": "/"
-    //     }
-    //   },
-    //   '/data-platform-3': {
-    //     // 目标 API 地址
-    //     target: 'http://api.sagacloud.cn/',
-    //     // 如果要代理 websockets
-    //     ws: true,
-    //     // 将主机标头的原点更改为目标URL
-    //     changeOrigin: false
-    //   },
-    //   '/business-space': {
-    //     // 目标 API 地址
-    //     target: 'http://api.sagacloud.cn',
-    //     changeOrigin: true,
-    //     pathRewrite: {
-    //       "^/business-space": "/dp-auxiliary/business-space/"
-    //     }
-    //   },
-    //   '/pointconfig': {
-    //     // 目标 API 地址
-    //     target: 'http://mbi.sagacloud.cn:8080/',
-    //     // 如果要代理 websockets
-    //     ws: true,
-    //     // 将主机标头的原点更改为目标URL
-    //     changeOrigin: false
-    //   },
-    //   '/venders-dp': {
-    //     // 目标 API 地址
-    //     target: 'http://api.sagacloud.cn',
-    //     changeOrigin: true,
-    //     pathRewrite: {
-    //       "^/venders-dp": "/dp-auxiliary/venders-dp/"
-    //     }
-    //   },
-    //   '/venders': {
-    //     // 目标 API 地址
-    //     target: 'http://api.sagacloud.cn',
-    //     changeOrigin: true,
-    //     pathRewrite: {
-    //       "^/venders": "/dp-auxiliary/venders/"
-    //     }
-    //   },
-    //   '/ScanBuilding': {
-    //     // 目标 API 地址
-    //     target: 'http://mbi.sagacloud.cn:8080/',
-    //     // 如果要代理 websockets
-    //     ws: true,
-    //     // 将主机标头的原点更改为目标URL
-    //     changeOrigin: false
-    //   },
-    //   '/scanbuilding-2': {
-    //     // 目标 API 地址
-    //     target: 'http://mbi.sagacloud.cn:8080/',
-    //     // 如果要代理 websockets
-    //     ws: true,
-    //     // 将主机标头的原点更改为目标URL
-    //     changeOrigin: false
-    //   },
-    //   '/image-service': {
-    //     // 目标 API 地址
-    //     target: 'http://api.sagacloud.cn',
-    //     changeOrigin: true,
-    //     pathRewrite: {
-    //       "^/image-service": "/dp-auxiliary/image-service/"
-    //     }
-    //   },
-    //   '/modelapi': {
-    //     target: 'http://mbi.sagacloud.cn:8080',
-    //     changeOrigin: true,
-    //     pathRewrite: {
-    //       "^/modelapi": "/revit-algorithm/"
-    //     }
-    //   },
-    //   '/schedulerapi': {
-    //     target: 'http://mbi.sagacloud.cn:8080',
-    //     changeOrigin: true,
-    //     pathRewrite: {
-    //         "^/schedulerapi": "/scheduler/"
-    //     }
-    //   },
-    // },
-
-    // proxyTable: {  //235测试环境
-    //   '/admin': {
-    //     target: 'http://172.16.44.235:8080',
-    //     changeOrigin: true,
-    //     pathRewrite: {
-    //       "^/admin": "/"
-    //     }
-    //   },
-    //   '/api': {
-    //     target: 'http://172.16.44.235:8080',
-    //     changeOrigin: true,
-    //     pathRewrite: {
-    //       "^/api": "/"
-    //     }
-    //   },
-    //   '/data-platform-3': {
-    //     // 目标 API 地址
-    //     target: 'http://172.16.42.210:8080/',
-    //     // 如果要代理 websockets
-    //     ws: true,
-    //     // 将主机标头的原点更改为目标URL
-    //     changeOrigin: false
-    //   },
-    //   '/business-space': {
-    //     // 目标 API 地址
-    //     target: 'http://172.16.42.210:8080/',
-    //     // 如果要代理 websockets
-    //     ws: true,
-    //     // 将主机标头的原点更改为目标URL
-    //     changeOrigin: false
-    //   },
-    //   '/pointconfig': {
-    //     // 目标 API 地址
-    //     target: 'http://172.16.44.235:8080/',
-    //     // 如果要代理 websockets
-    //     ws: true,
-    //     // 将主机标头的原点更改为目标URL
-    //     changeOrigin: false
-    //   },
-    //   '/venders-dp': {
-    //     // 目标 API 地址
-    //     target: 'http://172.16.42.210:8080/',
-    //     // 如果要代理 websockets
-    //     ws: true,
-    //     // 将主机标头的原点更改为目标URL
-    //     changeOrigin: false
-    //   },
-    //   '/venders': {
-    //     // 目标 API 地址
-    //     target: 'http://172.16.42.210:8080/',
-    //     // 如果要代理 websockets
-    //     ws: true,
-    //     // 将主机标头的原点更改为目标URL
-    //     changeOrigin: false
-    //   },
-    //   '/ScanBuilding': {
-    //     // 目标 API 地址
-    //     target: 'http://172.16.44.235:8080/',
-    //     // 如果要代理 websockets
-    //     ws: true,
-    //     // 将主机标头的原点更改为目标URL
-    //     changeOrigin: false
-    //   },
-    //   '/scanbuilding-2': {
-    //     // 目标 API 地址
-    //     target: 'http://172.16.44.235:8080/',
-    //     // 如果要代理 websockets
-    //     ws: true,
-    //     // 将主机标头的原点更改为目标URL
-    //     changeOrigin: false
-    //   },
-    //   '/image-service': {
-    //     // 目标 API 地址
-    //     target: 'http://172.16.42.210:8080/',
-    //     // 如果要代理 websockets
-    //     ws: true,
-    //     // 将主机标头的原点更改为目标URL
-    //     changeOrigin: false
-    //   },
-    //   '/modelapi': {
-    //     target: 'http://172.16.42.210:8082',
-    //     // target: 'http://192.168.20.218:8082',//景灏
-    //     changeOrigin: true,
-    //     pathRewrite: {
-    //       "^/modelapi": "/"
-    //     }
-    //   },
-    //   '/schedulerapi': {
-    //     target: 'http://172.16.42.210:8081',
-    //     changeOrigin: true,
-    //     pathRewrite: {
-    //       "^/schedulerapi": "/"
-    //     }
-    //   },
-    // },
-    proxyTable: { // 新版数据字典
-      '/admin': {
-        // target: 'http://192.168.12.238:8080/',
-        target: 'http://mbi.sagacloud.cn:8080/',
-        changeOrigin: true,
-        pathRewrite: {
-          "^/admin": "/"
-        }
-      },
-      '/api': {
-        // target: 'http://192.168.64.17:28888/',
-        // target: 'http://192.168.64.14:28888/',
-        target: 'http://39.102.40.239:8080/',
-        changeOrigin: true,
-        pathRewrite: {
-          "^/api": "/"
-        }
-      },
-      '/data-platform-3': {
-        // 目标 API 地址
-        // target: 'http://172.16.42.210:8080/',
-        target: 'http://39.97.179.199:9909/',
-        // 如果要代理 websockets
-        ws: true,
-        // 将主机标头的原点更改为目标URL
-        changeOrigin: false
-      },
-      '/rwd': {
-        // 目标 API 地址
-        // target: 'http://172.16.42.210:8080/',
-        target: 'http://39.102.40.239:9970/',
-        // 如果要代理 websockets
-        ws: true,
-        // 将主机标头的原点更改为目标URL
-        changeOrigin: false
-      },
-      '/business-space': {
-        // 目标 API 地址
-        // target: 'http://172.16.42.210:8080/',
-        target: 'http://39.97.179.199:9909',
-        // 如果要代理 websockets
-        ws: true,
-        // 将主机标头的原点更改为目标URL
-        changeOrigin: false
-      },
-      '/pointconfig': {
-        // 目标 API 地址
-        // target: 'http://192.168.12.238:8080/',
-        target: 'http://mbi.sagacloud.cn:8080/',
-        // 如果要代理 websockets
-        ws: true,
-        // 将主机标头的原点更改为目标URL
-        changeOrigin: false
-      },
-      '/venders-dp': {
-        // 目标 API 地址
-        // target: 'http://172.16.42.210:8080/',
-        target: 'http://39.97.179.199:9909',
-        // 如果要代理 websockets
-        ws: true,
-        // 将主机标头的原点更改为目标URL
-        changeOrigin: false
-      },
-      '/venders': {
-        // 目标 API 地址
-        // target: 'http://172.16.42.210:8080/',
-        target: 'http://39.97.179.199:9909',
-        // 如果要代理 websockets
-        ws: true,
-        // 将主机标头的原点更改为目标URL
-        changeOrigin: false,
-      },
-      '/ScanBuilding': {
-        // 目标 API 地址
-        // target: 'http://192.168.12.238:8080/',
-        target: 'http://mbi.sagacloud.cn:8080/',
-        // 如果要代理 websockets
-        ws: true,
-        // 将主机标头的原点更改为目标URL
-        changeOrigin: false
-      },
-      '/scanbuilding-2': {
-        // 目标 API 地址
-        // target: 'http://192.168.12.238:8080/',
-        target: 'http://mbi.sagacloud.cn:8080/',
-        // 如果要代理 websockets
-        ws: true,
-        // 将主机标头的原点更改为目标URL
-        changeOrigin: false
-      },
-      '/scanbuilding': {
-        // 目标 API 地址
-        // target: 'http://192.168.12.238:8080/',
-        // target: 'http://60.205.177.43:28888',
-        // target: 'http://192.168.64.14:28888',
-        target: 'http://192.168.64./17:28888',
-        // 如果要代理 websockets
-        ws: true,
-        // 将主机标头的原点更改为目标URL
-        changeOrigin: false
-      },
-      '/image-service': {
-        // 目标 API 地址
-        target: 'http://39.97.179.199:8891',
-        // target: 'http://api.sagacloud.cn',
-        // 如果要代理 websockets
-        ws: true,
-        // 将主机标头的原点更改为目标URL
-        changeOrigin: false,
-        // pathRewrite: {
-        //   "^/image-service": "/dp-auxiliary/image-service/"
-        // }
-        pathRewrite: {
-          "^/image-service": "/image-service/"
-        }
-      },
-      '/modelapi': {
-        // target: 'http://172.16.42.210:8082',
-        target: 'http://192.168.64.14:28888/',
-        // target: 'http://192.168.20.218:8082',//景灏
-        changeOrigin: true,
-        pathRewrite: {
-          "^/modelapi": "/revit-algorithm/"
-        }
-      },
-      '/schedulerapi': {
-        target: 'http://60.205.177.43:28888/',
-        // target: 'http://mbi.sagacloud.cn:8080',
-        changeOrigin: true,
-        pathRewrite: {
-          "^/schedulerapi": "/scheduler/"
-        }
-      },
-    },
-    // proxyTable: { // 39环境
-    //     '/admin': {
-    //       target: 'http://39.102.40.239:8080/',
-    //       changeOrigin: true,
-    //       pathRewrite: {
-    //         "^/admin": "/"
-    //       }
-    //     },
-    //     '/api': {
-    //       target: 'http://39.102.40.239:8080/',
-    //       changeOrigin: true,
-    //       pathRewrite: {
-    //         "^/api": "/"
-    //       }
-    //     },
-    //     '/data-platform-3': {
-    //       // 目标 API 地址
-    //       target: 'http://39.97.179.199:9909/',
-    //       // 如果要代理 websockets
-    //       ws: true,
-    //       // 将主机标头的原点更改为目标URL
-    //       changeOrigin: false
-    //     },
-    //     '/rwd': {
-    //       // 目标 API 地址
-    //       target: 'http://39.102.40.239:9970/',
-    //       // 如果要代理 websockets
-    //       ws: true,
-    //       // 将主机标头的原点更改为目标URL
-    //       changeOrigin: false
-    //     },
-    //     '/business-space': {
-    //       // 目标 API 地址
-    //       target: 'http://39.97.179.199:9909',
-    //       // 如果要代理 websockets
-    //       ws: true,
-    //       // 将主机标头的原点更改为目标URL
-    //       changeOrigin: false
-    //     },
-    //     '/pointconfig': {
-    //       // 目标 API 地址
-    //       target: 'http://39.102.40.239:8080/',
-    //       // 如果要代理 websockets
-    //       ws: true,
-    //       // 将主机标头的原点更改为目标URL
-    //       changeOrigin: false
-    //     },
-    //     '/venders-dp': {
-    //       // 目标 API 地址
-    //       // target: 'http://172.16.42.210:8080/',
-    //       target: 'http://39.97.179.199:9909',
-    //       // 如果要代理 websockets
-    //       ws: true,
-    //       // 将主机标头的原点更改为目标URL
-    //       changeOrigin: false
-    //     },
-    //     '/venders': {
-    //       // 目标 API 地址
-    //       // target: 'http://172.16.42.210:8080/',
-    //       target: 'http://39.97.179.199:9909',
-    //       // 如果要代理 websockets
-    //       ws: true,
-    //       // 将主机标头的原点更改为目标URL
-    //       changeOrigin: false,
-    //     },
-    //     '/ScanBuilding': {
-    //       // 目标 API 地址
-    //       target: 'http://39.102.40.239:8080/',
-    //       // 如果要代理 websockets
-    //       ws: true,
-    //       // 将主机标头的原点更改为目标URL
-    //       changeOrigin: false
-    //     },
-    //     '/scanbuilding-2': {
-    //       // 目标 API 地址
-    //       target: 'http://39.102.40.239:8080/',
-    //       // 如果要代理 websockets
-    //       ws: true,
-    //       // 将主机标头的原点更改为目标URL
-    //       changeOrigin: false
-    //     },
-    //     '/scanbuilding': {
-    //       // 目标 API 地址
-    //       target: 'http://39.102.40.239:8080/',
-    //       // 如果要代理 websockets
-    //       ws: true,
-    //       // 将主机标头的原点更改为目标URL
-    //       changeOrigin: false
-    //     },
-    //     '/image-service': {
-    //       // 目标 API 地址
-    //       target: 'http://39.97.179.199:8891',
-    //       // 如果要代理 websockets
-    //       ws: true,
-    //       // 将主机标头的原点更改为目标URL
-    //       changeOrigin: false,
-    //       pathRewrite: {
-    //         "^/image-service": "/image-service/"
-    //       }
-    //     },
-    //     '/modelapi': {
-    //       target: 'http://39.102.40.239:8080/',
-    //       changeOrigin: true,
-    //       pathRewrite: {
-    //         "^/modelapi": "/revit-algorithm/"
-    //       }
-    //     },
-    //     '/schedulerapi': {
-    //       target: 'http://39.102.40.239:8080/',
-    //       changeOrigin: true,
-    //       pathRewrite: {
-    //         "^/schedulerapi": "/scheduler/"
-    //       }
-    //     },
-    //   },
     // Various Dev Server settings
     host: '0.0.0.0', // can be overwritten by process.env.HOST
     port: 28080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
@@ -479,8 +42,8 @@ module.exports = {
     // Paths
     assetsRoot: path.resolve(__dirname, '../dist'),
     assetsSubDirectory: 'static',
-    assetsPublicPath: '/adm/',// 39 配置
-    // assetsPublicPath: '/',
+    // assetsPublicPath: '/adm/',// 39 配置
+    assetsPublicPath: '/',
 
 
     /**

+ 2 - 2
config/prod.env.js

@@ -1,9 +1,9 @@
 'use strict'
 module.exports = {
   NODE_ENV: '"production"',
-  // BASE_URL: '"http://192.168.64.14"', //测试iframe地址
+  BASE_URL: '"http://192.168.64.14"', //测试iframe地址
   // BASE_URL: '"http://192.168.64.18"', //测试iframe地址
-  BASE_URL: '"http://39.102.40.239"', //测试iframe地址
+//   BASE_URL: '"http://39.102.40.239"', //测试iframe地址
   SSO_SERVER: '"http://mbi.sagacloud.cn"', //测试环境
   // MQTT_SERVICE: '"ws://39.102.40.239:61614/stomp/"' //MQ测试环境地址
   MQTT_SERVICE: '"ws://192.168.64.14:61614/stomp/"' //MQ测试环境地址

+ 2 - 2
src/api/relation/api.js

@@ -176,6 +176,6 @@ export function addSource(param, success) {
 
 //查看源设备
 export function sourceQuery(param, success) {
-  let url = `${baseUrl}${dataCenter}/mep-system-calc/source/query`
-  httpUtil.postJson(url, param, success)
+  let url = `${baseUrl}${dataCenter}/mep-system-calc/source/query?calcName=${param.calcName}`
+  httpUtil.getJson(url, {}, success)
 }

+ 3 - 4
src/api/scan/httpUtil.js

@@ -1,6 +1,7 @@
 import {Message} from 'element-ui';
 import fetch from './fetch'
 import storage from '@/framework/utils/storage'
+import store from '@/store/index'
 
 function successResponse(vm, response, success, failed) {
   let resp = response.data;
@@ -49,8 +50,7 @@ function downFile(blob, fileName) {
 
 export default {
   getJson: function (url, data, success, failed, err) {
-    let ProjectId = localStorage.getItem("projectId")
-    // let ProjectId = "Pj1101050029"
+    let ProjectId = store.state.layout.projectId ? store.state.layout.projectId : localStorage.getItem("projectId");
     let userName = storage.get("user_name")
     let group_code = localStorage.getItem("group_code")
     let vm = this;
@@ -66,8 +66,7 @@ export default {
     });
   },
   postJson: function (url, data, success, failed, err) {
-    let ProjectId = localStorage.getItem("projectId")
-    // let ProjectId = "Pj1101050029"
+    let ProjectId = store.state.layout.projectId ? store.state.layout.projectId : localStorage.getItem("projectId");
     let userName = storage.get("user_name")
     let group_code = localStorage.getItem("group_code")
 

+ 1 - 1
src/api/scan/request.js

@@ -1252,7 +1252,7 @@ export function querySysLinkBuild(param, success) {
 
 //设备清单 - 设备关联系统 设备1-n
 export function equipLinkSys(param, success) {
-  let url = `${baseUrl}${dataCenter}/sy-in-eq/link-sy`;
+  let url = `${baseUrl}${dataCenter}/rel/sy-in-eq/link-sy`;
   http.postJson(url, param, success)
 }
 

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

@@ -138,7 +138,7 @@ export default {
         label: '编辑模式'
       }],
       onlyRead: true,
-      showType: "",
+      showType: "Visible",
       page: {
         pageSize: 50,
         pageSizes: [10, 20, 50, 100],
@@ -901,7 +901,7 @@ export default {
         if (newName && newName[0] && newName[0].value) {
           this.showType = newName[0].value
         } else {
-          this.showType = ""
+          this.showType = "Visible"
         }
       },
       immediate: true,

+ 224 - 215
src/components/data_admin/buildTask/detail/assetsDetail.vue

@@ -1,240 +1,249 @@
 <template>
-  <div class="detail-box">
-    <el-scrollbar style="height:100%;">
-      <div class="attribute-detail detail-item">
-        <el-form :model="detail" label-width="150px">
-          <el-form-item label="资产基本信息"></el-form-item>
-          <el-form-item label="任务创建时间:">{{ detail.createTime || '--' }}</el-form-item>
-          <el-form-item label="任务当前状态:">{{ detail.taskState || '--' }}</el-form-item>
-          <el-form-item label="任务执行方案:">
-            {{detail.schemeId?detail.schemeId == 1 ? '极简' : '标准':'--' }}
-          </el-form-item>
-          <el-form-item label="设备族:">{{ detail.equipFamily?detail.equipFamily.familyName?detail.equipFamily.familyName:'--':'--' }}</el-form-item>
-          <el-form-item label="全局名称:">{{ detail.equipName || '--' }}</el-form-item>
-          <el-form-item label="资产本地名称:">{{ detail.localName || '--' }}</el-form-item>
-          <el-form-item label="资产本地编码:">{{ detail.equipId || '--' }}</el-form-item>
-          <el-form-item label="设计图纸中编码:">{{ detail.cadId || '--' }}</el-form-item>
-          <el-form-item label="安装位置:">{{ detail.installLocation || '--' }}</el-form-item>
-          <el-form-item label="生产厂家:">{{ detail.manufacturer || '--' }}</el-form-item>
-          <el-form-item label="型号:">{{ detail.specification || '--' }}</el-form-item>
-          <el-form-item label="供应商:">{{ detail.supplier || '--' }}</el-form-item>
-        </el-form>
-      </div>
-      <div class="implement-detail detail-item" v-if="detail.taskState == '未找到'">
-        <el-form :model="detail" label-width="150px">
-          <el-form-item label="执行任务人:">{{ detail.workerName || '--' }}</el-form-item>
-          <el-form-item label="执行时间:">{{ detail.processTime || '--' }}</el-form-item>
-          <el-form-item label="未找到对象信息"></el-form-item>
-          <el-form-item label="资产名称:">{{ detail.localName || detail.equipName || '--' }}</el-form-item>
-          <el-form-item label="全景图:" v-show="panoramaList && panoramaList.length">
-            <div class="img-item" @click="dialogVisible = true"  v-for="item in panoramaList" :key="item.key">
-              <img :src="`/image-service/common/image_get?systemId=dataPlatform&key=${item.key}`" style="width:100%;" :alt="item.name">
+    <div class="detail-box">
+        <el-scrollbar style="height: 100%">
+            <div class="attribute-detail detail-item">
+                <el-form :model="detail" label-width="150px">
+                    <el-form-item label="资产基本信息"></el-form-item>
+                    <el-form-item label="任务创建时间:">{{ detail.createTime || "--" }}</el-form-item>
+                    <el-form-item label="任务当前状态:">{{ detail.taskState || "--" }}</el-form-item>
+                    <el-form-item label="任务执行方案:">
+                        {{ detail.schemeId ? (detail.schemeId == 1 ? "极简" : "标准") : "--" }}
+                    </el-form-item>
+                    <el-form-item label="设备族:">{{
+                        detail.equipFamily ? (detail.equipFamily.familyName ? detail.equipFamily.familyName : "--") : "--"
+                    }}</el-form-item>
+                    <el-form-item label="全局名称:">{{ detail.equipName || "--" }}</el-form-item>
+                    <el-form-item label="资产本地名称:">{{ detail.localName || "--" }}</el-form-item>
+                    <el-form-item label="资产本地编码:">{{ detail.localId || "--" }}</el-form-item>
+                    <el-form-item label="设计图纸中编码:">{{ detail.cadId || "--" }}</el-form-item>
+                    <el-form-item label="安装位置:">{{ detail.installLocation || "--" }}</el-form-item>
+                    <el-form-item label="生产厂家:">{{ detail.manufacturer || "--" }}</el-form-item>
+                    <el-form-item label="型号:">{{ detail.specification || "--" }}</el-form-item>
+                    <el-form-item label="供应商:">{{ detail.supplier || "--" }}</el-form-item>
+                </el-form>
             </div>
-          </el-form-item>
-          <el-form-item label="资产照片:" v-show="imgList && imgList.length">
-            <div class="img-item">
-              <div class="demo-image__preview">
-                <el-image style="width:100%;" v-for="item in imgList"
-                 :key="item.key" :title="item.name"
-                 @click="nowUrl = item.key"
-                 :src="`/image-service/common/image_get?systemId=dataPlatform&key=${item.key}&width=400`"
-                 :preview-src-list="srcList">
-                </el-image>
-              </div>
+            <div class="implement-detail detail-item" v-if="detail.taskState == '未找到'">
+                <el-form :model="detail" label-width="150px">
+                    <el-form-item label="执行任务人:">{{ detail.workerName || "--" }}</el-form-item>
+                    <el-form-item label="执行时间:">{{ detail.processTime || "--" }}</el-form-item>
+                    <el-form-item label="未找到对象信息"></el-form-item>
+                    <el-form-item label="资产名称:">{{ detail.localName || detail.equipName || "--" }}</el-form-item>
+                    <el-form-item label="全景图:" v-show="panoramaList && panoramaList.length">
+                        <div class="img-item" @click="dialogVisible = true" v-for="item in panoramaList" :key="item.key">
+                            <img
+                                :src="`/image-service/common/image_get?systemId=dataPlatform&key=${item.key}`"
+                                style="width: 100%"
+                                :alt="item.name"
+                            />
+                        </div>
+                    </el-form-item>
+                    <el-form-item label="资产照片:" v-show="imgList && imgList.length">
+                        <div class="img-item">
+                            <div class="demo-image__preview">
+                                <el-image
+                                    style="width: 100%"
+                                    v-for="item in imgList"
+                                    :key="item.key"
+                                    :title="item.name"
+                                    @click="nowUrl = item.key"
+                                    :src="`/image-service/common/image_get?systemId=dataPlatform&key=${item.key}&width=400`"
+                                    :preview-src-list="srcList"
+                                >
+                                </el-image>
+                            </div>
+                        </div>
+                    </el-form-item>
+                    <el-form-item label="现场视频:" v-show="videoList && videoList.length">
+                        <video controls style="width: 100%" v-for="item in videoList" :key="item.key" :title="item.name">
+                            <source :src="`/image-service/common/file_get?systemId=dataPlatform&key=${item.key}`" type="video/mp4" />
+                            您的浏览器不支持 HTML5 video ,暂无法播放。
+                        </video>
+                    </el-form-item>
+                    <el-form-item label="备注信息:">{{ detail.note || "--" }}</el-form-item>
+                </el-form>
             </div>
-          </el-form-item>
-          <el-form-item label="现场视频:" v-show="videoList && videoList.length">
-            <video controls style="width:100%;" v-for="item in videoList" :key="item.key" :title="item.name">
-              <source :src="`/image-service/common/file_get?systemId=dataPlatform&key=${item.key}`" type="video/mp4">
-              您的浏览器不支持 HTML5 video ,暂无法播放。
-            </video>
-          </el-form-item>
-          <el-form-item label="备注信息:">{{ detail.note || '--' }}</el-form-item>
-        </el-form>
-      </div>
-      <div class="operation-detail detail-item" v-if="detail.taskState === '未找到'">
-        <el-form>
-          <el-form-item label="操作信息:"></el-form-item>
-          <div class="block">
-            <el-timeline>
-              <el-timeline-item
-                  placement="top"
-                  v-for="(item,index) in arr"
-                  :key="index"
-                  :timestamp="item.timestamp"
-              >
-                <el-card>
-                  <small>{{item.content}}</small>
-                  <p>{{item.title}}</p>
-                  <img
-                      v-for="isImg in item.imgs"
-                      :key="isImg.key"
-                      :src="`/image-service/common/image_get?systemId=dataPlatform&key=${isImg.key}`">
+            <div class="operation-detail detail-item" v-if="detail.taskState === '未找到'">
+                <el-form>
+                    <el-form-item label="操作信息:"></el-form-item>
+                    <div class="block">
+                        <el-timeline>
+                            <el-timeline-item placement="top" v-for="(item, index) in arr" :key="index" :timestamp="item.timestamp">
+                                <el-card>
+                                    <small>{{ item.content }}</small>
+                                    <p>{{ item.title }}</p>
+                                    <img
+                                        v-for="isImg in item.imgs"
+                                        :key="isImg.key"
+                                        :src="`/image-service/common/image_get?systemId=dataPlatform&key=${isImg.key}`"
+                                    />
 
-                  <video controls style="width:100%;" v-for="v in videoList" :key="index"
-                         :title="v.name">
-                    <source
-                        :src="`/image-service/common/file_get?systemId=dataPlatform&key=${v.key}`"
-                        type="video/mp4">
-                    您的浏览器不支持 HTML5 video ,暂无法播放。
-                  </video>
-                </el-card>
-              </el-timeline-item>
-            </el-timeline>
-          </div>
-        </el-form>
-      </div>
-    </el-scrollbar>
-    <el-dialog title="全景图" :visible.sync="dialogVisible" width="70%" append-to-body>
-      一张图
-    </el-dialog>
-  </div>
+                                    <video controls style="width: 100%" v-for="(v, i) in item.videoList" :key="`video_${i}`" :title="v.name">
+                                        <source :src="`/image-service/common/file_get?systemId=dataPlatform&key=${v.key}`" type="video/mp4" />
+                                        您的浏览器不支持 HTML5 video ,暂无法播放。
+                                    </video>
+                                </el-card>
+                            </el-timeline-item>
+                        </el-timeline>
+                    </div>
+                </el-form>
+            </div>
+        </el-scrollbar>
+        <el-dialog title="全景图" :visible.sync="dialogVisible" width="70%" append-to-body> 一张图 </el-dialog>
+    </div>
 </template>
 
 <script>
 import { mapGetters } from "vuex"
 
 export default {
-  components: {
+    components: {},
+    computed: {
+        ...mapGetters("layout", ["projectId"]),
+        panoramaList() {
+            if (this.detail && this.detail.taskPicList && this.detail.taskPicList.length) {
+                return this.detail.taskPicList.filter(item => {
+                    return item.type == 'panorama'
+                })
+            } else {
+                return []
+            }
+        },
+        imgList() {
+            if (this.detail && this.detail.taskPicList && this.detail.taskPicList.length) {
+                return this.detail.taskPicList.filter(item => {
+                    return item.type == 'image'
+                })
+            } else {
+                return []
+            }
+        },
+        videoList() {
+            if (this.detail && this.detail.taskPicList && this.detail.taskPicList.length) {
+                return this.detail.taskPicList.filter(item => {
+                    return item.type == 'video'
+                })
+            } else {
+                return []
+            }
+        },
+        srcList() {
+            let nowIndex = this.imgList.findIndex(item => { return item.key == this.nowUrl })
+            let index = nowIndex >= 1 ? nowIndex : 0;
+            let tempArr1 = this.imgList.slice(0, index);
+            let tempArr2 = this.imgList.slice(index, this.imgList.length);
 
-  },
-  created() {
-    let {confirmTime, positivePhotoTime, qrCodeTime, nameplateTime, sidePhotoTime, videoTime, equipProblemTime, equipProblem, taskPicList} = this.detail;
-    let arr = []
-    qrCodeTime && arr.push({
-      timestamp: qrCodeTime,
-      time: new Date(qrCodeTime).getTime(),
-      content: '黏贴二维码',
-      imgs: taskPicList.length && taskPicList.filter(i => i.name.includes('带二维码的设备近景照片'))
-    })
-    positivePhotoTime && arr.push({
-      timestamp: positivePhotoTime,
-      time: new Date(positivePhotoTime).getTime(),
-      content: '拍摄正面照片',
-      imgs: taskPicList.length && taskPicList.filter(i => i.name.includes('设备正面照片'))
-    })
-    nameplateTime && arr.push({
-      timestamp: nameplateTime,
-      time: new Date(nameplateTime).getTime(),
-      content: '拍摄铭牌照片',
-      imgs: taskPicList.length && taskPicList.filter(i => i.name.includes('铭牌照片'))
-    })
-    sidePhotoTime && arr.push({
-      timestamp: sidePhotoTime,
-      time: new Date(sidePhotoTime).getTime(),
-      content: '拍摄侧面照片',
-      imgs: taskPicList.length && taskPicList.filter(i => i.name.includes('设备左侧照片' || '设备右侧照片'))
-    })
-    videoTime && arr.push({
-      timestamp: videoTime,
-      time: new Date(videoTime).getTime(),
-      content: '拍摄30s视频',
-      videoList: taskPicList.length && taskPicList.filter(i => i.name.includes('视频资料'))
-    })
-    equipProblemTime && arr.push({
-      timestamp: equipProblemTime,
-      time: new Date(equipProblemTime).getTime(),
-      content: '记录设备问题',
-      title: equipProblem
-    })
-    confirmTime && arr.push({
-      timestamp: confirmTime,
-      time: new Date(confirmTime).getTime(),
-      content: '确认信息',
-      title: '已确认的设备信息'
-    })
-    this.arr = arr.map(i => ({...i})).sort((a, b) => b.time - a.time)
-  },
-  computed: {
-    ...mapGetters("layout", ["projectId"]),
-    panoramaList(){
-      if(this.detail && this.detail.taskPicList && this.detail.taskPicList.length){
-        return this.detail.taskPicList.filter(item => {
-          return item.type == 'panorama'
-        })
-      } else {
-        return []
-      }
+            let res = tempArr2.concat(tempArr1).map(item => {
+                return `/image-service/common/image_get?systemId=dataPlatform&key=${item.key}`
+            });
+            return res;
+        },
+        arr() {
+            let { confirmTime, positivePhotoTime, qrCodeTime, nameplateTime, sidePhotoTime, videoTime, equipProblemTime, equipProblem, taskPicList, processTime, regionPhotoTime } = this.detail;
+            let arr = []
+            processTime && arr.push({
+                timestamp: processTime,
+                time: new Date(processTime).getTime(),
+                content: '开始执行任务',
+            })
+            qrCodeTime && arr.push({
+                timestamp: qrCodeTime,
+                time: new Date(qrCodeTime).getTime(),
+                content: '黏贴二维码',
+                imgs: taskPicList.length && taskPicList.filter(i => i.name.includes('带二维码的设备近景照片'))
+            })
+            positivePhotoTime && arr.push({
+                timestamp: positivePhotoTime,
+                time: new Date(positivePhotoTime).getTime(),
+                content: '拍摄正面照片',
+                imgs: taskPicList.length && taskPicList.filter(i => i.name.includes('设备正面照片'))
+            })
+            nameplateTime && arr.push({
+                timestamp: nameplateTime,
+                time: new Date(nameplateTime).getTime(),
+                content: '拍摄铭牌照片',
+                imgs: taskPicList.length && taskPicList.filter(i => i.name.includes('铭牌照片'))
+            })
+            sidePhotoTime && arr.push({
+                timestamp: sidePhotoTime,
+                time: new Date(sidePhotoTime).getTime(),
+                content: '拍摄侧面照片',
+                imgs: taskPicList.length && taskPicList.filter(i => i.name.includes('设备左侧照片' || '设备右侧照片'))
+            })
+            regionPhotoTime && arr.push({
+                timestamp: regionPhotoTime,
+                time: new Date(regionPhotoTime).getTime(),
+                content: '拍摄局部照片',
+                imgs: taskPicList.length && taskPicList.filter(i => i.name.includes('其他照片'))
+            })
+            videoTime && arr.push({
+                timestamp: videoTime,
+                time: new Date(videoTime).getTime(),
+                content: '拍摄30s视频',
+                videoList: taskPicList.length && taskPicList.filter(i => i.name.includes('视频资料'))
+            })
+            equipProblemTime && arr.push({
+                timestamp: equipProblemTime,
+                time: new Date(equipProblemTime).getTime(),
+                content: '记录设备问题',
+                title: equipProblem
+            })
+            confirmTime && arr.push({
+                timestamp: confirmTime,
+                time: new Date(confirmTime).getTime(),
+                content: '确认信息',
+                title: '已确认的设备信息'
+            })
+            return arr.map(i => ({ ...i })).sort((a, b) => b.time - a.time)
+        },
     },
-    imgList(){
-      if(this.detail && this.detail.taskPicList && this.detail.taskPicList.length){
-        return this.detail.taskPicList.filter(item => {
-          return item.type == 'image'
-        })
-      } else {
-        return []
-      }
+    props: {
+        detail: Object
     },
-    videoList(){
-      if(this.detail && this.detail.taskPicList && this.detail.taskPicList.length){
-        return this.detail.taskPicList.filter(item => {
-          return item.type == 'video'
-        })
-      } else {
-        return []
-      }
+    data() {
+        return {
+            dialogVisible: false,//全景图弹出框
+            nowUrl: '',//当前正在显示的图
+        };
     },
-    srcList(){
-      let nowIndex = this.imgList.findIndex(item => {return item.key == this.nowUrl})
-      let index = nowIndex >= 1 ? nowIndex : 0;
-      let tempArr1 = this.imgList.slice(0, index);
-      let tempArr2 = this.imgList.slice(index, this.imgList.length);
-
-      let res = tempArr2.concat(tempArr1).map(item => {
-        return `/image-service/common/image_get?systemId=dataPlatform&key=${item.key}`
-      });
-      return res;
-    }
-  },
-  props: {
-    detail: Object
-  },
-  data() {
-    return {
-      dialogVisible: false,//全景图弹出框
-      nowUrl: '',//当前正在显示的图
-      arr: [],
-    };
-  },
-  methods: {
+    methods: {
 
-  },
-  watch: {
-    'detail.id'() {
-      console.log(this.detail)
+    },
+    watch: {
+        'detail.id'() {
+            console.log(this.detail)
+        }
     }
-  }
 };
 </script>
 <style lang="less" scoped>
 .detail-box {
-  width: 100%;
-  height: 100%;
-  box-sizing: border-box;
-  /deep/ .el-scrollbar__wrap {
-    overflow-x: hidden;
-  }
-  /deep/ .el-icon-circle-close {
-    color: white;
-  }
+    width: 100%;
+    height: 100%;
+    box-sizing: border-box;
+    /deep/ .el-scrollbar__wrap {
+        overflow-x: hidden;
+    }
+    /deep/ .el-icon-circle-close {
+        color: white;
+    }
 
-  /deep/ .el-form-item__content {
-    text-overflow: ellipsis;
-    overflow: hidden;
-  }
+    /deep/ .el-form-item__content {
+        text-overflow: ellipsis;
+        overflow: hidden;
+    }
 
-  .detail-item {
-    width: calc(100% - 30px);
-    margin: 15px 15px 10px;
-    padding: 10px;
-    box-sizing: border-box;
-    border-left: 1px solid #eee;
-    box-shadow: 0px 1px 5px 0px rgba(59, 66, 84, 0.15);
-  }
+    .detail-item {
+        width: calc(100% - 30px);
+        margin: 15px 15px 10px;
+        padding: 10px;
+        box-sizing: border-box;
+        border-left: 1px solid #eee;
+        box-shadow: 0px 1px 5px 0px rgba(59, 66, 84, 0.15);
+    }
 
-  .img-item {
-    position: relative;
-    cursor: pointer;
-  }
+    .img-item {
+        position: relative;
+        cursor: pointer;
+    }
 }
 </style>

+ 273 - 276
src/components/data_admin/buildTask/detail/deviceDetail.vue

@@ -1,117 +1,104 @@
 <template>
-  <div class="detail-box">
-    <el-scrollbar style="height:100%;">
-      <div class="attribute-detail detail-item">
-        <el-form :model="detail" label-width="150px">
-          <el-form-item label="设备基本信息"></el-form-item>
-          <el-form-item label="任务创建时间:">{{ detail.createTime || '--' }}</el-form-item>
-          <el-form-item label="任务当前状态:">{{ detail.taskState || '--' }}</el-form-item>
-          <el-form-item label="任务执行方案:">
-            {{ detail.schemeId ? detail.schemeId == 1 ? '极简' : '标准' : '--' }}
-          </el-form-item>
-          <el-form-item label="设备类:">{{
-              detail.equipFamily ? detail.equipFamily.equipName ? detail.equipFamily.equipName : '--' : '--'
-            }}
-          </el-form-item>
-          <el-form-item label="全局名称:">{{ detail.equipName || '--' }}</el-form-item>
-          <el-form-item label="设备本地名称:">{{ detail.localName || '--' }}</el-form-item>
-          <el-form-item label="设备本地编码:">{{ detail.equipId || '--' }}</el-form-item>
-          <el-form-item label="设计图纸中编码:">{{ detail.cadId || '--' }}</el-form-item>
-          <el-form-item label="安装位置:">{{ detail.installLocation || '--' }}</el-form-item>
-          <el-form-item label="生产厂家:">{{ detail.manufacturer || '--' }}</el-form-item>
-          <el-form-item label="型号:">{{ detail.specification || '--' }}</el-form-item>
-          <el-form-item label="供应商:">{{ detail.supplier || '--' }}</el-form-item>
-          <el-form-item label="包含部件:">
-            {{ Name ? Name : '-' }}{{ Count ? ':' + Count + '个' : '-' }}
-          </el-form-item>
-        </el-form>
-      </div>
-      <div class="implement-detail detail-item" v-if="detail.taskState === '未找到'">
-        <el-form :model="detail" label-width="150px">
-          <el-form-item label="执行任务人:">{{ detail.workerName || '--' }}</el-form-item>
-          <el-form-item label="执行时间:">{{ detail.processTime || '--' }}</el-form-item>
-          <el-form-item label="未找到对象信息"></el-form-item>
-          <el-form-item label="设备信息:" v-if="!detail.isComponent">{{
-              detail.localName || detail.equipName
-              || '--'
-            }}
-          </el-form-item>
-          <el-form-item label="部件信息:" v-else>
-            <div v-if="detail.component && detail.component.length">
-              <p v-for="item in detail.component?detail.component:[]" :key="item.taskId"
-                 show-overflow-tooltip>
-                {{ item.localName || item.equipName }}
-              </p>
+    <div class="detail-box">
+        <el-scrollbar style="height: 100%">
+            <div class="attribute-detail detail-item">
+                <el-form :model="detail" label-width="150px">
+                    <el-form-item label="设备基本信息"></el-form-item>
+                    <el-form-item label="任务创建时间:">{{ detail.createTime || "--" }}</el-form-item>
+                    <el-form-item label="任务当前状态:">{{ detail.taskState || "--" }}</el-form-item>
+                    <el-form-item label="任务执行方案:">
+                        {{ detail.schemeId ? (detail.schemeId == 1 ? "极简" : "标准") : "--" }}
+                    </el-form-item>
+                    <el-form-item label="设备类:"
+                        >{{ detail.equipCategory ? (detail.equipCategory.name ? detail.equipCategory.name : "--") : "--" }}
+                    </el-form-item>
+                    <el-form-item label="全局名称:">{{ detail.equipName || "--" }}</el-form-item>
+                    <el-form-item label="设备本地名称:">{{ detail.localName || "--" }}</el-form-item>
+                    <el-form-item label="设备本地编码:">{{ detail.localId || "--" }}</el-form-item>
+                    <el-form-item label="设计图纸中编码:">{{ detail.cadId || "--" }}</el-form-item>
+                    <el-form-item label="安装位置:">{{ detail.installLocation || "--" }}</el-form-item>
+                    <el-form-item label="生产厂家:">{{ detail.manufacturer || "--" }}</el-form-item>
+                    <el-form-item label="型号:">{{ detail.specification || "--" }}</el-form-item>
+                    <el-form-item label="供应商:">{{ detail.supplier || "--" }}</el-form-item>
+                    <el-form-item label="包含部件:"> {{ Name ? Name : "-" }}{{ Count ? ":" + Count + "个" : "-" }} </el-form-item>
+                </el-form>
             </div>
-            <div v-else>--</div>
-          </el-form-item>
-          <el-form-item label="全景图:" v-show="panoramaList && panoramaList.length">
-            <div class="img-item" @click="dialogVisible = true" v-for="item in panoramaList"
-                 :key="item.key">
-              <img :src="`/image-service/common/image_get?systemId=dataPlatform&key=${item.key}`"
-                     style="width:100%;" :alt="item.name">
+            <div class="implement-detail detail-item" v-if="detail.taskState === '未找到'">
+                <el-form :model="detail" label-width="150px">
+                    <el-form-item label="执行任务人:">{{ detail.workerName || "--" }}</el-form-item>
+                    <el-form-item label="执行时间:">{{ detail.processTime || "--" }}</el-form-item>
+                    <el-form-item label="未找到对象信息"></el-form-item>
+                    <el-form-item label="设备信息:" v-if="!detail.isComponent">{{ detail.localName || detail.name || "--" }} </el-form-item>
+                    <el-form-item label="部件信息:" v-else>
+                        <div v-if="detail.component && detail.component.length">
+                            <p v-for="item in detail.component ? detail.component : []" :key="item.taskId" show-overflow-tooltip>
+                                {{ item.localName || item.equipName }}
+                            </p>
+                        </div>
+                        <div v-else>--</div>
+                    </el-form-item>
+                    <el-form-item label="全景图:" v-show="panoramaList && panoramaList.length">
+                        <div class="img-item" @click="dialogVisible = true" v-for="item in panoramaList" :key="item.key">
+                            <img
+                                :src="`/image-service/common/image_get?systemId=dataPlatform&key=${item.key}`"
+                                style="width: 100%"
+                                :alt="item.name"
+                            />
+                        </div>
+                    </el-form-item>
+                    <el-form-item label="设备照片:" v-show="imgList && imgList.length">
+                        <div class="img-item">
+                            <div class="demo-image__preview">
+                                <el-image
+                                    style="width: 100%"
+                                    v-for="item in imgList"
+                                    :key="item.key"
+                                    :title="item.name"
+                                    @click="nowUrl = item.key"
+                                    :src="`/image-service/common/image_get?systemId=dataPlatform&key=${item.key}&width=400`"
+                                    :preview-src-list="srcList"
+                                >
+                                </el-image>
+                            </div>
+                        </div>
+                    </el-form-item>
+                    <el-form-item label="现场视频:" v-show="videoList && videoList.length">
+                        <video controls style="width: 100%" v-for="item in videoList" :key="item.key" :title="item.name">
+                            <source :src="`/image-service/common/file_get?systemId=dataPlatform&key=${item.key}`" type="video/mp4" />
+                            您的浏览器不支持 HTML5 video ,暂无法播放。
+                        </video>
+                    </el-form-item>
+                    <el-form-item label="备注信息:">{{ detail.note || "--" }}</el-form-item>
+                </el-form>
             </div>
-          </el-form-item>
-          <el-form-item label="设备照片:" v-show="imgList && imgList.length">
-            <div class="img-item">
-              <div class="demo-image__preview">
-                <el-image style="width:100%;" v-for="item in imgList"
-                          :key="item.key" :title="item.name"
-                          @click="nowUrl = item.key"
-                          :src="`/image-service/common/image_get?systemId=dataPlatform&key=${item.key}&width=400`"
-                          :preview-src-list="srcList">
-                </el-image>
-              </div>
-            </div>
-          </el-form-item>
-          <el-form-item label="现场视频:" v-show="videoList && videoList.length">
-            <video controls style="width:100%;" v-for="item in videoList" :key="item.key"
-                   :title="item.name">
-              <source :src="`/image-service/common/file_get?systemId=dataPlatform&key=${item.key}`"
-                      type="video/mp4">
-              您的浏览器不支持 HTML5 video ,暂无法播放。
-            </video>
-          </el-form-item>
-          <el-form-item label="备注信息:">{{ detail.note || '--' }}</el-form-item>
-        </el-form>
-      </div>
-      <div class="operation-detail detail-item" v-if="detail.taskState === '未找到'">
-        <el-form>
-          <el-form-item label="操作信息:"></el-form-item>
-          <div class="block">
-            <el-timeline>
-              <el-timeline-item
-                placement="top"
-                v-for="(item,index) in arr"
-                :key="index"
-                :timestamp="item.timestamp"
-              >
-                <el-card>
-                  <small>{{ item.content }}</small>
-                  <p>{{ item.title }}</p>
-                  <img
-                    v-for="isImg in item.imgs"
-                    :key="isImg.key"
-                    :src="`/image-service/common/image_get?systemId=dataPlatform&key=${isImg.key}`">
+            <div class="operation-detail detail-item" v-if="detail.taskState === '未找到'">
+                <el-form>
+                    <el-form-item label="操作信息:"></el-form-item>
+                    <div class="block">
+                        <el-timeline>
+                            <el-timeline-item placement="top" v-for="(item, index) in arr" :key="index" :timestamp="item.timestamp">
+                                <el-card>
+                                    <small>{{ item.content }}</small>
+                                    <p>{{ item.title }}</p>
+                                    <img
+                                        v-for="isImg in item.imgs"
+                                        :key="isImg.key"
+                                        :src="`/image-service/common/image_get?systemId=dataPlatform&key=${isImg.key}`"
+                                    />
 
-                  <video controls style="width:100%;" v-for="v in videoList" :key="index"
-                         :title="v.name">
-                    <source
-                        :src="`/image-service/common/file_get?systemId=dataPlatform&key=${v.key}`"
-                        type="video/mp4">
-                    您的浏览器不支持 HTML5 video ,暂无法播放。
-                  </video>
-                </el-card>
-              </el-timeline-item>
-            </el-timeline>
-          </div>
-        </el-form>
-      </div>
-    </el-scrollbar>
-    <el-dialog title="全景图" :visible.sync="dialogVisible" width="70%" append-to-body>
-      一张图
-    </el-dialog>
-  </div>
+                                    <video controls style="width: 100%" v-for="(v, i) in item.videoList" :key="`video_${i}`" :title="v.name">
+                                        <source :src="`/image-service/common/file_get?systemId=dataPlatform&key=${v.key}`" type="video/mp4" />
+                                        您的浏览器不支持 HTML5 video ,暂无法播放。
+                                    </video>
+                                </el-card>
+                            </el-timeline-item>
+                        </el-timeline>
+                    </div>
+                </el-form>
+            </div>
+        </el-scrollbar>
+        <el-dialog title="全景图" :visible.sync="dialogVisible" width="70%" append-to-body> 一张图 </el-dialog>
+    </div>
 </template>
 
 <script>
@@ -119,203 +106,213 @@ import { mapGetters } from "vuex"
 import { categoryCount, modelCategoryCount } from "@/api/data_admin/buildTaskApi"
 
 export default {
-  components: {},
-  created() {
-    let { confirmTime, positivePhotoTime, qrCodeTime, nameplateTime, sidePhotoTime, videoTime, equipProblemTime, equipProblem, taskPicList } = this.detail;
-    let arr = []
-    qrCodeTime && arr.push({
-      timestamp: qrCodeTime,
-      time: new Date(qrCodeTime).getTime(),
-      content: '黏贴二维码',
-      imgs: taskPicList.length && taskPicList.filter(i => i.name.includes('带二维码的设备近景照片'))
-    })
-    positivePhotoTime && arr.push({
-      timestamp: positivePhotoTime,
-      time: new Date(positivePhotoTime).getTime(),
-      content: '拍摄正面照片',
-      imgs: taskPicList.length && taskPicList.filter(i => i.name.includes('设备正面照片'))
-    })
-    nameplateTime && arr.push({
-      timestamp: nameplateTime,
-      time: new Date(nameplateTime).getTime(),
-      content: '拍摄铭牌照片',
-      imgs: taskPicList.length && taskPicList.filter(i => i.name.includes('铭牌照片'))
-    })
-    sidePhotoTime && arr.push({
-      timestamp: sidePhotoTime,
-      time: new Date(sidePhotoTime).getTime(),
-      content: '拍摄侧面照片',
-      imgs: taskPicList.length && taskPicList.filter(i => i.name.includes('设备左侧照片' || '设备右侧照片'))
-    })
-    videoTime && arr.push({
-      timestamp: videoTime,
-      time: new Date(videoTime).getTime(),
-      content: '拍摄30s视频',
-      videoList: taskPicList.length && taskPicList.filter(i => i.name.includes('视频资料'))
-    })
-    equipProblemTime && arr.push({
-      timestamp: equipProblemTime,
-      time: new Date(equipProblemTime).getTime(),
-      content: '记录设备问题',
-      title: equipProblem
-    })
-    confirmTime && arr.push({
-        timestamp: confirmTime,
-        time: new Date(confirmTime).getTime(),
-        content: '确认信息',
-        title: '已确认的设备信息'
-      })
-      this.arr = arr.map(i => ({...i})).sort((a, b) => b.time - a.time)
-    },
+    components: {},
     computed: {
-      ...mapGetters("layout", ["projectId"]),
-      notFoundList() {
-        if (this.detail && this.detail.component && this.detail.component.length) {//是否存在部件
-          let index = this.detail.component.findIndex(item => {
-            return item.taskState == -1
-          })
-          if (index != -1) {//部件中存在未找到的对象
-            this.detail.isComponent = true
-            return this.detail.component[index].taskPicList ? this.detail.component[index].taskPicList : []
-          } else {//部件全部找到
-            this.detail.isComponent = false
-            return this.detail.taskPicList ? this.detail.taskPicList : []
-          }
-        } else {
-          this.detail.isComponent = false
-          if (this.detail && this.detail.taskPicList && this.detail.taskState.length) {
-            return this.detail.taskPicList
-          } else {
-            return []
-          }
-        }
-      },
-      panoramaList() {
-        if (this.notFoundList && this.notFoundList.length) {
-          return this.notFoundList.filter(item => {
-            return item.type == 'panorama'
-          })
-        } else {
-          return []
-        }
-      },
-      imgList() {
-        if (this.notFoundList && this.notFoundList.length) {
-          return this.notFoundList.filter(item => {
-            return item.type == 'image'
-          })
-        } else {
-          return []
-        }
-      },
-      videoList() {
-        if (this.notFoundList && this.notFoundList.length) {
-          return this.notFoundList.filter(item => {
-            return item.type == 'video'
-          })
-        } else {
-          return []
-        }
-      },
-      srcList() {
-        let nowIndex = this.imgList.findIndex(item => {
-          return item.key == this.nowUrl
-        })
-        let index = nowIndex >= 1 ? nowIndex : 0;
-        let tempArr1 = this.imgList.slice(0, index);
-        let tempArr2 = this.imgList.slice(index, this.imgList.length);
+        ...mapGetters("layout", ["projectId"]),
+        notFoundList() {
+            if (this.detail && this.detail.component && this.detail.component.length) {//是否存在部件
+                let index = this.detail.component.findIndex(item => {
+                    return item.taskState == -1
+                })
+                if (index != -1) {//部件中存在未找到的对象
+                    this.detail.isComponent = true
+                    return this.detail.component[index].taskPicList ? this.detail.component[index].taskPicList : []
+                } else {//部件全部找到
+                    this.detail.isComponent = false
+                    return this.detail.taskPicList ? this.detail.taskPicList : []
+                }
+            } else {
+                this.detail.isComponent = false
+                if (this.detail && this.detail.taskPicList && this.detail.taskState.length) {
+                    return this.detail.taskPicList
+                } else {
+                    return []
+                }
+            }
+        },
+        panoramaList() {
+            if (this.notFoundList && this.notFoundList.length) {
+                return this.notFoundList.filter(item => {
+                    return item.type == 'panorama'
+                })
+            } else {
+                return []
+            }
+        },
+        imgList() {
+            if (this.notFoundList && this.notFoundList.length) {
+                return this.notFoundList.filter(item => {
+                    return item.type == 'image'
+                })
+            } else {
+                return []
+            }
+        },
+        videoList() {
+            if (this.notFoundList && this.notFoundList.length) {
+                return this.notFoundList.filter(item => {
+                    return item.type == 'video'
+                })
+            } else {
+                return []
+            }
+        },
+        srcList() {
+            let nowIndex = this.imgList.findIndex(item => {
+                return item.key == this.nowUrl
+            })
+            let index = nowIndex >= 1 ? nowIndex : 0;
+            let tempArr1 = this.imgList.slice(0, index);
+            let tempArr2 = this.imgList.slice(index, this.imgList.length);
 
-        let res = tempArr2.concat(tempArr1).map(item => {
-          return `/image-service/common/image_get?systemId=dataPlatform&key=${item.key}`
-        });
-        return res;
-      }
+            let res = tempArr2.concat(tempArr1).map(item => {
+                return `/image-service/common/image_get?systemId=dataPlatform&key=${item.key}`
+            });
+            return res;
+        },
+        arr() {
+            let { confirmTime, positivePhotoTime, qrCodeTime, nameplateTime, sidePhotoTime, videoTime, equipProblemTime, equipProblem, taskPicList, processTime, regionPhotoTime } = this.detail;
+            let arr = []
+            processTime && arr.push({
+                timestamp: processTime,
+                time: new Date(processTime).getTime(),
+                content: '开始执行任务',
+            })
+            qrCodeTime && arr.push({
+                timestamp: qrCodeTime,
+                time: new Date(qrCodeTime).getTime(),
+                content: '黏贴二维码',
+                imgs: taskPicList.length && taskPicList.filter(i => i.name.includes('带二维码的设备近景照片'))
+            })
+            positivePhotoTime && arr.push({
+                timestamp: positivePhotoTime,
+                time: new Date(positivePhotoTime).getTime(),
+                content: '拍摄正面照片',
+                imgs: taskPicList.length && taskPicList.filter(i => i.name.includes('设备正面照片'))
+            })
+            nameplateTime && arr.push({
+                timestamp: nameplateTime,
+                time: new Date(nameplateTime).getTime(),
+                content: '拍摄铭牌照片',
+                imgs: taskPicList.length && taskPicList.filter(i => i.name.includes('铭牌照片'))
+            })
+            sidePhotoTime && arr.push({
+                timestamp: sidePhotoTime,
+                time: new Date(sidePhotoTime).getTime(),
+                content: '拍摄侧面照片',
+                imgs: taskPicList.length && taskPicList.filter(i => i.name.includes('设备左侧照片' || '设备右侧照片'))
+            })
+            regionPhotoTime && arr.push({
+                timestamp: regionPhotoTime,
+                time: new Date(regionPhotoTime).getTime(),
+                content: '拍摄局部照片',
+                imgs: taskPicList.length && taskPicList.filter(i => i.name.includes('其他照片'))
+            })
+            videoTime && arr.push({
+                timestamp: videoTime,
+                time: new Date(videoTime).getTime(),
+                content: '拍摄30s视频',
+                videoList: taskPicList.length && taskPicList.filter(i => i.name.includes('视频资料'))
+            })
+            equipProblemTime && arr.push({
+                timestamp: equipProblemTime,
+                time: new Date(equipProblemTime).getTime(),
+                content: '记录设备问题',
+                title: equipProblem
+            })
+            confirmTime && arr.push({
+                timestamp: confirmTime,
+                time: new Date(confirmTime).getTime(),
+                content: '确认信息',
+                title: '已确认的设备信息'
+            })
+            return arr.map(i => ({ ...i })).sort((a, b) => b.time - a.time)
+        },
     },
     props: {
-      detail: Object,
-      type: String
+        detail: Object,
+        type: String
     },
     data() {
-      return {
-        dialogVisible: false,//全景图弹出框
-        nowUrl: '',//当前正在显示的图
-        arr: [],
-        Name: '',
-        Count: '', //包含部件
-      };
+        return {
+            dialogVisible: false,//全景图弹出框
+            nowUrl: '',//当前正在显示的图
+            Name: '',
+            Count: '', //包含部件
+        };
     },
     methods: {
-      //  查询设备部件数量
-      handleContent(row) {
-        let param = {
-          id: row.id,
-          equipId: row.equipId
-        }
-        this.Name = ''
-        this.Count = ''
-        categoryCount(param, res => {
-          if (res.content.length) {
-            this.Name = res.Content[0].name
-            this.Count = res.Content[0].count
-          }
+        //  查询设备部件数量
+        handleContent(row) {
+            let param = {
+                id: row.id,
+                equipId: row.equipId
+            }
+            this.Name = ''
+            this.Count = ''
+            categoryCount(param, res => {
+                if (res.content.length) {
+                    this.Name = res.content[0].name
+                    this.Count = res.content[0].count
+                }
 
-        })
-      },
-      //  查询模型部件数量
-      handleModelContent(row) {
-        let param = {
-          id: row.id,
-          equipId: row.equipId
-        }
-        this.Name = ''
-        this.Count = ''
-        modelCategoryCount(param, res => {
-          if (res.content.length) {
-            this.Name = res.Content[0].name
-            this.Count = res.Content[0].count
-          }
+            })
+        },
+        //  查询模型部件数量
+        handleModelContent(row) {
+            let param = {
+                id: row.id,
+                equipId: row.equipId
+            }
+            this.Name = ''
+            this.Count = ''
+            modelCategoryCount(param, res => {
+                if (res.content.length) {
+                    this.Name = res.content[0].name
+                    this.Count = res.content[0].count
+                }
 
-        })
-      }
+            })
+        }
     },
     watch: {
-      'detail.TaskId'() {
-        console.log(this.detail)
-      }
+        'detail.id'() {
+            console.log(this.detail)
+        }
     }
-  };
+};
 </script>
 <style lang="less" scoped>
-  .detail-box {
+.detail-box {
     width: 100%;
     height: 100%;
     box-sizing: border-box;
 
     /deep/ .el-scrollbar__wrap {
-      overflow-x: hidden;
+        overflow-x: hidden;
     }
 
     /deep/ .el-icon-circle-close {
-      color: white;
+        color: white;
     }
 
     /deep/ .el-form-item__content {
-      text-overflow: ellipsis;
-      overflow: hidden;
+        text-overflow: ellipsis;
+        overflow: hidden;
     }
 
     .detail-item {
-      width: calc(100% - 30px);
-      margin: 15px 15px 10px;
-      padding: 10px;
-      box-sizing: border-box;
-      border-left: 1px solid #eee;
-      box-shadow: 0px 1px 5px 0px rgba(59, 66, 84, 0.15);
+        width: calc(100% - 30px);
+        margin: 15px 15px 10px;
+        padding: 10px;
+        box-sizing: border-box;
+        border-left: 1px solid #eee;
+        box-shadow: 0px 1px 5px 0px rgba(59, 66, 84, 0.15);
     }
 
     .img-item {
-      position: relative;
-      cursor: pointer;
+        position: relative;
+        cursor: pointer;
     }
-  }
+}
 </style>

+ 2 - 0
src/components/data_admin/buildTask/table/assetsTable.vue

@@ -138,6 +138,7 @@ export default {
         deleteAssetsTask(params, res => {
           this.$message.success('删除成功')
           this.getTableData()
+          this.$emit('upData')
         })
       }).catch(() => {
         this.$message("取消删除")
@@ -155,6 +156,7 @@ export default {
       createAssetsTask(params, res => {
         this.$message.success('重新生成任务成功!')
         this.getTableData()
+        this.$emit('upData')
       })
     },
     //认可此任务执行情况

+ 3 - 3
src/components/data_admin/buildTask/table/deviceTable.vue

@@ -14,15 +14,15 @@
           <template slot-scope="scope">
             <div>
               {{scope.row.localName}}
-              <el-badge v-if="scope.row.Component&&scope.row.Component.length?true:false"
-                        :value="scope.row.Component&&scope.row.Component.length?scope.row.Component.length:0"
+              <el-badge v-if="scope.row.component&&scope.row.component.length?true:false"
+                        :value="scope.row.component&&scope.row.component.length?scope.row.component.length:0"
                         class="item" type="warning">
               </el-badge>
             </div>
           </template>
         </el-table-column>
         <el-table-column prop="localId" :label="`${inSpaceType}本地编码`" show-overflow-tooltip min-width="100"></el-table-column>
-        <el-table-column prop="equipCategory.equipName" :label="`${inSpaceType}类型`" show-overflow-tooltip min-width="100"></el-table-column>
+        <el-table-column prop="equipCategory.name" :label="`${inSpaceType}类型`" show-overflow-tooltip min-width="100"></el-table-column>
         <el-table-column prop="installLocation" label="安装位置" show-overflow-tooltip min-width="100"></el-table-column>
         <el-table-column prop="taskState" label="任务执行情况" show-overflow-tooltip min-width="100"></el-table-column>
         <el-table-column prop="action" label="操作" min-width="100">

+ 2 - 0
src/components/data_admin/buildTask/table/modelTable.vue

@@ -155,6 +155,7 @@ export default {
         deleteModelTask(params, res => {
           this.$message.success('删除成功')
           this.getTableData()
+          this.$emit('upData')
         })
       }).catch(() => {
         this.$message("取消删除")
@@ -176,6 +177,7 @@ export default {
       createModelTask(params, res => {
         this.$message.success('重新生成任务成功!')
         this.getTableData()
+        this.$emit('upData')
       })
     },
     //认可此任务执行情况

+ 2 - 2
src/components/dialogs/changeRea.vue

@@ -19,12 +19,12 @@
             <el-table-column label="资产名称" show-overflow-tooltip>
               <template slot-scope="scope">
                 <el-radio :label="scope.row.id" :ref="scope.row.id" :value="scope.row.localName || scope.row.name">
-                  {{ scope.row.localName || scope.row.name }}
+                  {{ scope.row.localName }}
                 </el-radio>
               </template>
             </el-table-column>
             <el-table-column label="本地编码">
-              <template slot-scope="scope">{{ scope.row.localId || scope.row.id }}</template>
+              <template slot-scope="scope">{{ scope.row.localId }}</template>
             </el-table-column>
             <el-table-column prop="name" label="所在楼层">
               <template slot-scope="scope">

+ 226 - 239
src/components/dialogs/list/systemType.vue

@@ -2,271 +2,258 @@
     systemType 设备所属类型
 -->
 <template>
-  <el-dialog title="所属系统实例" :visible.sync="dialog.systemType" width="900px">
-    <div>
-      <div id="systemType">
-        <div class="title-search query-form" style="padding: 10px;margin-bottom: 10px;" v-if="type != 'read' ">
-          <el-row>
-            <el-col :span="10">
-              <span>系统所属建筑</span>
-              <el-select v-model="buildId" placeholder="请选择" @change="getTableData">
-                <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
-                </el-option>
-              </el-select>
-            </el-col>
-            <el-col :span="14">
-              <el-input placeholder="输入名称或编码进行查询" v-model="search" size="small" style="width:300px; margin-right:10px"
-                        clearable></el-input>
-              <el-button size="small" @click="getTableData">查找</el-button>
-            </el-col>
-          </el-row>
+    <el-dialog title="所属系统实例" :visible.sync="dialog.systemType" width="900px">
+        <div>
+            <div id="systemType">
+                <div class="title-search query-form" style="padding: 10px; margin-bottom: 10px" v-if="type != 'read'">
+                    <el-row>
+                        <el-col :span="10">
+                            <span>系统所属建筑</span>
+                            <el-select v-model="buildId" placeholder="请选择" @change="getTableData">
+                                <el-option v-for="item in options" :key="item.id" :label="item.localName" :value="item.id"> </el-option>
+                            </el-select>
+                        </el-col>
+                        <el-col :span="14">
+                            <el-input
+                                placeholder="输入名称或编码进行查询"
+                                v-model="search"
+                                size="small"
+                                style="width: 300px; margin-right: 10px"
+                                clearable
+                            ></el-input>
+                            <el-button size="small" @click="getTableData">查找</el-button>
+                        </el-col>
+                    </el-row>
+                </div>
+                <el-table
+                    class="data-table"
+                    border
+                    row-key="id"
+                    :data="type == 'read' ? linkSystemData : tableData"
+                    @selection-change="handleSelectionChange"
+                    style="width: 100%"
+                    ref="multipleTable"
+                >
+                    <el-table-column v-if="type != 'read'" type="selection" :reserve-selection="true" :disabled="true" width="55"></el-table-column>
+                    <el-table-column label="系统名称" header-align="center">
+                        <template slot-scope="scope">{{ scope.row.localName || scope.row.name }}</template>
+                    </el-table-column>
+                    <el-table-column label="本地编码" header-align="center">
+                        <template slot-scope="scope">{{ scope.row.localId || "--" }}</template>
+                    </el-table-column>
+                    <el-table-column label="系统类型" prop="categoryName" header-align="center"></el-table-column>
+                    <el-table-column label="详情" header-align="center" width="100" align="center">
+                        <template slot-scope="scope">
+                            <el-button @click="lookDeatils(scope.row)" type="text">详情</el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+            </div>
         </div>
-        <el-table class='data-table' border :data="type == 'read'?linkSystemData:tableData"
-                  @selection-change="handleSelectionChange" style="width: 100%" ref="multipleTable">
-          <el-table-column v-if="type != 'read' " type="selection" :reserve-selection="true" :disabled="true"
-                           width="55"></el-table-column>
-          <el-table-column label="系统名称" header-align='center'>
-            <template slot-scope="scope">{{ scope.row.localName || scope.row.name }}</template>
-          </el-table-column>
-          <el-table-column label="本地编码" header-align='center'>
-            <template slot-scope="scope">{{ scope.row.localId || '--' }}</template>
-          </el-table-column>
-          <el-table-column label="专业" prop="MajorName" header-align='center'></el-table-column>
-          <el-table-column label="详情" header-align='center' width="100" align="center">
-            <template slot-scope="scope">
-              <el-button @click="lookDeatils(scope.row)" type="text">详情</el-button>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-    </div>
-    <span slot="footer" class="dialog-footer" v-if="type != 'read' ">
-      <el-button type="primary" @click="getChange">确 定</el-button>
-    </span>
-    <el-dialog title="系统详情" :visible.sync="iframeShow" v-if="iframeShow" width="500px" append-to-body>
-      <iframe id="google_ads_frame2" name="google_ads_frame2" frameborder="0" :src="iframeSrc" marginwidth="0"
-              marginheight="0" vspace="0" hspace="0"
-              style="width:100%;height:500px;" allowtransparency="true" scrolling="no" allowfullscreen="true"></iframe>
+        <span slot="footer" class="dialog-footer" v-if="type != 'read'">
+            <el-button type="primary" @click="getChange">确 定</el-button>
+        </span>
+        <el-dialog title="系统详情" :visible.sync="iframeShow" v-if="iframeShow" width="500px" append-to-body>
+            <iframe
+                id="google_ads_frame2"
+                name="google_ads_frame2"
+                frameborder="0"
+                :src="iframeSrc"
+                marginwidth="0"
+                marginheight="0"
+                vspace="0"
+                hspace="0"
+                style="width: 100%; height: 500px"
+                allowtransparency="true"
+                scrolling="no"
+                allowfullscreen="true"
+            ></iframe>
+        </el-dialog>
     </el-dialog>
-  </el-dialog>
 </template>
 <script>
 import myPagination from "@/components/ledger/lib/myPagination";
-import { queryLinkSys, getSpaceFloor, equipLinkSys } from "@/api/scan/request"
+import { querySysLinkBuild, buildingQuery, equipLinkSys } from "@/api/scan/request"
 import tools from "@/utils/scan/tools"
 import { mapGetters } from 'vuex'
 
 export default {
-  components: {
-    myPagination
-  },
-  props: {
-    dialog: {
-      type: Object,
-      default: function () {
+    components: {
+        myPagination
+    },
+    props: {
+        dialog: {
+            type: Object,
+            default: function () {
+                return {
+                    systemType: true
+                };
+            }
+        },
+        graphyId: {
+            type: String,
+            default: ""
+        },
+        device: {},
+        curDevice: {
+            default: ''
+        },//设备id
+        type: {
+            type: String,
+            default: "read"
+        },
+        list: {
+            type: [Array]
+        }
+    },
+    data() {
         return {
-          systemType: true
+            search: "", //搜索文案
+            tableData: [],
+            systemList: [],
+            linkSystemData: [],
+            multipleSelection: [],
+            iframeSrc: "",
+            iframeShow: false,
+            buildId: 'all', //查询条件
+            options: [], //系统所属建筑
         };
-      }
     },
-    graphyId: {
-      type: String,
-      default: ""
+    computed: {
+        ...mapGetters("layout", ["projectId", "secret", "userId"])
     },
-    device: {},
-    curDevice: {
-      default: ''
-    },//设备id
-    type: {
-      type: String,
-      default: "read"
+    mounted() {
     },
-    list: {
-      type: [Array]
-    }
-  },
-  data() {
-    return {
-      search: "", //搜索文案
-      tableData: [],
-      systemList: [],
-      linkSystemData: [],
-      multipleSelection: [],
-      iframeSrc: "",
-      iframeShow: false,
-      buildId: 'all', //查询条件
-      options: [], //系统所属建筑
-    };
-  },
-  computed: {
-    ...mapGetters("layout", ["projectId", "secret", "userId"])
-  },
-  mounted() {
-  },
-  methods: {
-    //获取查询条件-建筑
-    // getData() { // 物理世界 已无接口
-    //   let param = {
-    //     ProjId: this.projectId,
-    //     secret: this.secret,
-    //   }
-    //   getSpaceFloor(param).then(res => {
-    //     if (res.data.Result == 'success') {
-    //       let data = this.changeArr(res.data.Content)
-    //       data.unshift({
-    //         value: "all",
-    //         label: "全部"
-    //       }, {
-    //           value: "noKnow",
-    //           label: "未明确建筑的设备"
-    //         })
-    //       this.options = data
-    //     } else {
-    //       this.$message.error(res.data.ResultMsg)
-    //     }
-    //   }).catch(err => {
-    //     this.$message.error(err)
-    //   })
-    // },
-    //将数组转换成optiosn格式
-    changeArr(arr) {
-      return arr.map(item => {
-        if (item.floors && item.floors.length && this.type == "yes") {
-          return {
-            value: item.id,
-            label: item.infos.BuildLocalName,
-            children: item.floors.map(i => {
-              return {
-                value: i.id,
-                label: i.infos.FloorLocalName,
-                FloorSequenceID: i.infos.FloorSequenceID
-              }
+    methods: {
+        //获取查询条件-建筑
+        getData() {
+            let param = {
+                orders: "localName asc",
+                pageNumber: 1,
+                pageSize: 1000
+            }
+            buildingQuery(param, res => {
+                if (res.result == 'success') {
+                    let data = res.content;
+                    data.unshift({
+                        id: "all",
+                        localName: "全部"
+                    }, {
+                        id: "noKnow",
+                        localName: "未明确建筑的设备"
+                    })
+                    this.options = data
+                } else {
+                    this.$message.error(res.message)
+                }
+            })
+        },
+        handleSelectionChange(val) {
+            this.multipleSelection = val;
+        },
+        //设置默认
+        toggleSelection(rows) {
+            if (this.$refs.multipleTable) {
+                this.$refs.multipleTable.clearSelection();
+            }
+            if (rows.length && this.list.length) {
+                rows.map(row => {
+                    this.list.map(t => {
+                        if (row.id == t.id) {
+                            this.$refs.multipleTable.toggleRowSelection(row)
+                        }
+                    })
+                })
+            }
+        },
+        //确认
+        getChange() {
+            this.createRelatSys()
+            this.$emit("change", this.multipleSelection)
+            this.dialog.systemType = false
+            this.multipleSelection = []
+        },
+        //点击详情
+        lookDeatils(infos) {
+            this.$message("开发中...")
+        },
+        //根据设备类型-查询系统关联专业
+        getTableData() {
+            let param = {
+                data: {
+                    filters: `classCode="${this.device.deviceId.substring(0, 4)}"`,
+                    pageNumber: 1,
+                    pageSize: 1000
+                }
+            }
+            //建筑id
+            if (this.buildId && this.buildId != "all" && this.buildId != "noKnow") {
+                param.buildingId = this.buildId;
+            }
+            //输入的查询条件
+            if (this.search) {
+                param.data.filters += `;localName contain "${this.search}" or localId contain "${this.search}"`
+            }
+            querySysLinkBuild(param, res => {
+                this.tableData = res.content
+                this.toggleSelection(res.content)
             })
-          }
-        } else {
-          return {
-            value: item.id,
-            label: item.infos.BuildLocalName,
-            children: null,
-            isChilren: 1,
-          }
+        },
+        //获取关联的系统
+        getLinkSystemData() {
+            this.linkSystemData = this.list ? JSON.parse(JSON.stringify(this.list)) : []
+        },
+        //添加设备关联系统关系
+        createRelatSys() {
+            if (this.curDevice) {//有即为编辑
+                let param = {
+                    equipId: this.curDevice,
+                    sysIdList: []
+                }
+                this.multipleSelection.map(t => {
+                    param.sysIdList.push(t.id)
+                })
+                equipLinkSys(param, res => {
+                    this.multipleSelection = []
+                })
+            }
         }
-      })
-    },
-    handleSelectionChange(val) {
-      this.multipleSelection = val;
     },
-    //设置默认
-    toggleSelection(rows) {
-      this.$refs.multipleTable.clearSelection();
-      if (rows.length && this.list.length) {
-        rows.map(row => {
-          this.list.map(t => {
-            if (row.SysID == t.SysID) {
-              this.$refs.multipleTable.toggleRowSelection(row)
+    watch: {
+        dialog: {
+            deep: true,
+            handler() {
+                if (this.dialog.systemType) {
+                    this.getData()
+                    if (this.type == 'read') {
+                        this.getLinkSystemData()
+                    } else {
+                        this.getLinkSystemData()
+                        this.getTableData()
+                    }
+                }
             }
-          })
-        })
-      }
-    },
-    //确认
-    getChange() {
-      this.createRelatSys()
-      this.$emit("change", this.multipleSelection)
-      this.dialog.systemType = false
-      this.multipleSelection = []
-    },
-    //点击详情
-    lookDeatils(infos) {
-      this.$message("开发中...")
-      // this.iframeSrc =
-      //   process.env.BASE_URL +
-      //   ":8889/#/details?perjectId=" +
-      //   this.projectId +
-      //   "&secret=" +
-      //   this.secret +
-      //   "&FmId=" +
-      //   infos.id +
-      //   "&type=1&code=" +
-      //   infos.category.substring(2, 4);
-      // this.iframeShow = true;
-    },
-    //根据设备类型-查询系统关联专业
-    getTableData() {
-      let param = {
-        filters: `classCode="${this.device.deviceId.substring(0, 2)}"`,
-        pageNumber: 1,
-        pageSize: 1000
-      }
-      //建筑id
-      if (this.buildId == "noKnow") {
-        param.filters += `;buildingId isNull`
-      } else if (this.buildId && this.buildId != "all") {
-        param.filters += `;buildingId='${this.buildId}'`
-      }
-      //输入的查询条件
-      if (this.search) {
-        param.filters += `;localName contain "${this.search}" or localId contain "${this.search}"`
-      }
-      queryLinkSys(param, res => {
-        this.tableData = res.content
-        this.toggleSelection(res.content)
-      })
-    },
-    //获取关联的系统
-    getLinkSystemData() {
-      this.linkSystemData = this.list ? JSON.parse(JSON.stringify(this.list)) : []
-    },
-    //添加设备关联系统关系
-    createRelatSys() {
-      if (this.curDevice) {//有即为编辑
-        let param = {
-          EquipID: this.curDevice,
-          SysIdList: []
-        }
-        this.multipleSelection.map(t => {
-          param.SysIdList.push(t.SysID)
-        })
-        equipLinkSys(param, res => {
-          this.multipleSelection = []
-        })
-      }
-    }
-  },
-  watch: {
-    dialog: {
-      deep: true,
-      handler() {
-        if (this.dialog.systemType) {
-          // this.getData()
-          if (this.type == 'read') {
-            this.getLinkSystemData()
-          } else {
-            this.getTableData()
-          }
+        },
+        projectId() {
+            this.buildId = 'all';
+            this.options = [];
+            this.getData()
         }
-      }
-    },
-    projectId() {
-      this.buildId = 'all';
-      this.options = [];
-      // this.getData()
     }
-  }
 };
 </script>
 
 <style lang="less">
 #systemType {
-  height: 455px;
-  overflow-y: auto;
+    height: 455px;
+    overflow-y: auto;
 
-  .el-table thead {
-    tr {
-      th {
-        background-color: #f5f7fa;
-      }
+    .el-table thead {
+        tr {
+            th {
+                background-color: #f5f7fa;
+            }
+        }
     }
-  }
 }
 </style>

+ 1 - 1
src/components/ledger/details/detail/cruxDialog.vue

@@ -56,7 +56,7 @@ export default {
           tmp[key] = [
             ...element.paths.map(i => ({
               InfoPointCode: i.InfoPointCode,
-              KeyWord: i.KeyWord,
+              KeyWord: i.KeyWord || false,
               type: i.type,
               code: i.InfoPointCode,
               classCode: i.classCode,

+ 105 - 102
src/components/ledger/details/detail/exhibitionCrux.vue

@@ -2,62 +2,62 @@
   <section class="exhibition-crux">
     <p class="title">
       <span class="iconfont icon-juxing"></span>
-      {{exhibitionCrux.title}}
+      {{ exhibitionCrux.title }}
       <span class="icon-shezhi iconfont setting" @click="setting"></span></p>
     <div>
       <div v-if="exhibitionCrux.cruxArray.length">
-        <div class="crux-list" v-for="(item,index) in exhibitionCrux.cruxArray" :key="index">{{item.name}}:
+        <div class="crux-list" v-for="(item,index) in exhibitionCrux.cruxArray" :key="index">{{ item.name }}:
 
-        <el-popover
-          v-if="item.Path == 'equipQRCode' || item.Path == 'roomQRCode' || item.Path == 'shaftQRCode'"
-          placement="top"
-          width="360"
-          trigger="hover">
-          <p style="border-bottom: 1px solid #eee;padding:2px 0 4px 0;'">{{item.InfoPointName}}</p>
-          <div style="overflow:hidden;">
-            <div style="float:left;width: 60%">
-              <img
-                style="width:200px;height:200px;"
-                :src="'/image-service/common/file_get/'+ item.value +'?systemId=dataPlatform'"
-                alt="二维码"
-              >
+          <el-popover
+            v-if="item.Path == 'equipQRCode' || item.Path == 'roomQRCode' || item.Path == 'shaftQRCode'"
+            placement="top"
+            width="360"
+            trigger="hover">
+            <p style="border-bottom: 1px solid #eee;padding:2px 0 4px 0;'">{{ item.InfoPointName }}</p>
+            <div style="overflow:hidden;">
+              <div style="float:left;width: 60%">
+                <img
+                  style="width:200px;height:200px;"
+                  :src="'/image-service/common/file_get/'+ item.value +'?systemId=dataPlatform'"
+                  alt="二维码"
+                >
+              </div>
+              <div style="float:right;width: 40%;margin-top: 30px">
+                <span>{{ item.value }}</span>
+              </div>
             </div>
-            <div style="float:right;width: 40%;margin-top: 30px">
-              <span>{{item.value}}</span>
+            <div style="text-align: center; margin: 0">
+              <el-button type="text" size="mini" @click="handleCopy(item.value)">复制</el-button>
             </div>
-          </div>
-          <div style="text-align: center; margin: 0">
-            <el-button type="text" size="mini" @click="handleCopy(item.value)">复制</el-button>
-          </div>
-          <el-button slot="reference" type="text">{{item.value ? '有' :'-'}}</el-button>
-        </el-popover>
-        <el-popover
-          v-else-if="Array.isArray(item.value) && item.dataType== 'ATTACHMENT'"
-          placement="right"
-          width="250"
-          trigger="hover">
-          <p style="border-bottom: 1px solid #eee;padding:2px 0 4px 0;'">{{item.InfoPointName}}</p>
-          <div v-for="(pic,index) in item.value">
-            <div>图纸名称:{{ pic.name }}
-              <el-button size="mini" style="" type="text" @click="downloadFile(pic.key)">下载</el-button>
+            <el-button slot="reference" type="text">{{ item.value ? '有' : '-' }}</el-button>
+          </el-popover>
+          <el-popover
+            v-else-if="Array.isArray(item.value) && item.dataType== 'ATTACHMENT'"
+            placement="right"
+            width="250"
+            trigger="hover">
+            <p style="border-bottom: 1px solid #eee;padding:2px 0 4px 0;'">{{ item.InfoPointName }}</p>
+            <div v-for="(pic,index) in item.value">
+              <div>图纸名称:{{ pic.name }}
+                <el-button size="mini" style="" type="text" @click="downloadFile(pic.key)">下载</el-button>
+              </div>
             </div>
-          </div>
-          <el-button slot="reference" type="text">{{item.value? '有':'-'}}</el-button>
-        </el-popover>
+            <el-button slot="reference" type="text">{{ item.value ? '有' : '-' }}</el-button>
+          </el-popover>
 
           <el-popover
-          v-else-if="item.value && item.value.length && `${item.InfoPointName}:${item.value}`.length>21"
-          placement="top"
-          width="160"
-          trigger="hover">
-          <p style="border-bottom: 1px solid #eee;padding:2px 0 4px 0;'">{{item.InfoPointName}}</p>
-          <p>{{item.value}}</p>
-          <div style="text-align: center; margin: 0">
-            <el-button type="text" size="mini" @click="handleCopy(item.value)">复制</el-button>
-          </div>
-          <el-button slot="reference" type="text">{{handleName(item.InfoPointName, item.value)}}</el-button>
-        </el-popover>
-        <span v-else>{{item.value}}</span>
+            v-else-if="item.value && item.value.length && `${item.InfoPointName}:${item.value}`.length>21"
+            placement="top"
+            width="160"
+            trigger="hover">
+            <p style="border-bottom: 1px solid #eee;padding:2px 0 4px 0;'">{{ item.InfoPointName }}</p>
+            <p>{{ item.value }}</p>
+            <div style="text-align: center; margin: 0">
+              <el-button type="text" size="mini" @click="handleCopy(item.value)">复制</el-button>
+            </div>
+            <el-button slot="reference" type="text">{{ handleName(item.InfoPointName, item.value) }}</el-button>
+          </el-popover>
+          <span v-else>{{ item.value }}</span>
         </div>
       </div>
     </div>
@@ -75,70 +75,73 @@
 import cruxDialog from "./cruxDialog";
 
 export default {
-    name: "exhibition-crux",
-    props: ['exhibitionCrux','type'],
-    components: {cruxDialog},
-    data() {
-      return {
-        list: []
-      }
+  name: "exhibition-crux",
+  props: ['exhibitionCrux', 'type'],
+  components: { cruxDialog },
+  data() {
+    return {
+      list: []
+    }
+  },
+  methods: {
+    downloadFile(key) {
+      window.open("/image-service/common/file_get/" + key + "?systemId=dataPlatform")
+    },
+    setting() {
+      this.$refs.setting.dialogOpen()
+    },
+    cruxSuccess() {
+      this.$emit('cruxSuccess')
+    },
+    handleCopy(data) {
+      let oInput = document.createElement('input')
+      oInput.value = data
+      document.body.appendChild(oInput)
+      oInput.select()
+      document.execCommand('Copy')
+      this.$message.success('复制成功')
+      oInput.remove()
     },
-    methods: {
-      downloadFile(key) {
-        window.open("/image-service/common/file_get/" + key + "?systemId=dataPlatform")
-      },
-      setting() {
-        this.$refs.setting.dialogOpen()
-      },
-      cruxSuccess() {
-        this.$emit('cruxSuccess')
-      },
-      handleCopy(data) {
-        let oInput = document.createElement('input')
-        oInput.value = data
-        document.body.appendChild(oInput)
-        oInput.select()
-        document.execCommand('Copy')
-        this.$message.success('复制成功')
-        oInput.remove()
-      },
-      handleName(infoPoint, val) {
-        let value = val;
-        if (Array.isArray(value)) {
-          value = JSON.stringify(val)
-        }
-        let text = `${infoPoint}:${value}`;
-        return text.length > 21 ? value.substring(0, 21-`${infoPoint}:`.length) + '...' : value;
+    handleName(infoPoint, val) {
+      let value = val;
+      if (Array.isArray(value)) {
+        value = JSON.stringify(val)
       }
+      let text = `${infoPoint}:${value}`;
+      return text.length > 21 ? value.substring(0, 21 - `${infoPoint}:`.length) + '...' : value;
     }
   }
+}
 </script>
 
 <style lang="less" scoped>
-  .exhibition-crux {
-    padding: 10px 0;
-    /deep/ .el-button--text {
-      color: #555 !important;
-      font-size: 14px;
-    }
-    .title {
-      /*border-left: 8px solid black;*/
-      margin: 0 20px 0 10px;
-      font-weight: 600;
-      /*text-indent: 10px;*/
-      display: block;
-      overflow: hidden;
+.exhibition-crux {
+  padding: 10px 0;
 
-      .setting {
-        float: right;
-      }
+  /deep/ .el-button--text {
+    color: #555 !important;
+    font-size: 14px;
+  }
+
+  .title {
+    /*border-left: 8px solid black;*/
+    margin: 0 20px 0 10px;
+    font-weight: 600;
+    /*text-indent: 10px;*/
+    display: block;
+    overflow: hidden;
 
+    .setting {
+      float: right;
     }
-      .crux-list {
-        display: inline-block;
-        width: 315px;
-        margin-left: 20px;
-        vertical-align: text-top;
-      }
+
+  }
+
+  .crux-list {
+    display: inline-block;
+    width: 315px;
+    margin-left: 20px;
+    vertical-align: text-top;
   }
+}
 </style>

+ 3 - 2
src/components/ledger/handsontables/assets.vue

@@ -729,6 +729,7 @@ export default {
       }
       let param = []
       params.map(item => {
+        this.deleteCode = item.family;
         param.push({ id: item.id })
       })
       this.$confirm("此操作将删除资产,是否继续?", "提示", {
@@ -746,7 +747,7 @@ export default {
     async removeDevice(param) {
       await deleteProperty(param, res => {
         this.$message.success("删除成功")
-        this.$emit('getJson', '')
+        this.$emit('close', {code: this.deleteCode})
         this.getTableData()
       })
     },
@@ -1243,7 +1244,7 @@ export default {
         if (newName && newName[0] && newName[0].value) {
           this.showType = newName[0].value
         } else {
-          this.showType = ""
+          this.showType = "Visible"
         }
       },
       immediate: true,

+ 4 - 4
src/components/ledger/handsontables/device.vue

@@ -159,8 +159,8 @@ export default {
           {value: "all", label: "全部"}
         ]
         : [
-          {value: "all", label: "全部"},
-          {value: "Visible", label: "只看采集信息"}
+          {value: "Visible", label: "只看采集信息"},
+          {value: "all", label: "全部"}
         ];
     },
     // batchDate() {
@@ -1069,6 +1069,7 @@ export default {
       let inputData = this.inputMap[val];
       this.row = row.row;
       this.messKey = val;
+      this.curDevice = infos.id;
       this.firmDataType = "row";
       lStorage.set("screen_data", {
         path: this.$route.path,
@@ -1124,7 +1125,6 @@ export default {
           return false;
         //关联系统()
         case "linkSystem":
-          this.curDevice = infos.EquipID;
           this.systemList = this.tableData[row.row].linkSystem || [];
           this.myDialog.systemType = true;
           return false;
@@ -1441,7 +1441,7 @@ export default {
         if (newName && newName[0] && newName[0].value) {
           this.showType = newName[0].value;
         } else {
-          this.showType = "";
+          this.showType = "Visible";
         }
       },
       immediate: true,

+ 2 - 2
src/components/ledger/handsontables/system.vue

@@ -13,7 +13,7 @@
       </el-select>
       <el-button size="small" style="width: 80px" @click="addDevice" icon="iconfont icon-tianjia">添加系统</el-button>
       <el-button size="small" style="width: 80px" @click="reset" icon="iconfont icon-shuaxin">刷新</el-button>
-      <el-button v-show="onlyRead" size="small" style="width: 80px" @click="undo" icon="iconfont icon-undo">撤销</el-button>
+      <el-button v-show="!onlyRead" size="small" style="width: 80px" @click="undo" icon="iconfont icon-undo">撤销</el-button>
     </div>
     <qrcode :dialog="myDialog" :addBody="true" ref="qrcode"></qrcode>
     <upload-files-dialog ref="upload" @changeFile="fileChange" :keysArr="filesArr"
@@ -698,7 +698,7 @@ export default {
         if (newName && newName[0] && newName[0].value) {
           this.showType = newName[0].value
         } else {
-          this.showType = ""
+          this.showType = "Visible"
         }
       },
       immediate: true,

+ 15 - 13
src/components/ledger/system/dialog/addSpaceDialog.vue

@@ -24,7 +24,8 @@
             {{ scope.row.localName || scope.row.name || '' }}
           </template>
         </el-table-column>
-        <el-table-column prop="localId" :label="`${inSpaceType}本地编码`" show-overflow-tooltip min-width="100"></el-table-column>
+        <el-table-column prop="localId" :label="`${inSpaceType}本地编码`" show-overflow-tooltip
+                         min-width="100"></el-table-column>
         <el-table-column prop :label="`所属建筑楼层`" show-overflow-tooltip min-width="100">
           <template slot-scope="scope">
             {{
@@ -87,7 +88,7 @@ export default {
       inSpaceType: "业务空间",
       Buildfloor: ["all"], // 选中的建筑楼层
       Spacecategory: null, // 选中的业务空间类型
-			spaceValue: [""], //记录切换成功的业务空间值
+      spaceValue: [""], //记录切换成功的业务空间值
       tableData: [],
       floorData: {}, //楼层
       spaceData: {}, //业务空间分区
@@ -122,28 +123,29 @@ export default {
     },
     //修改建筑楼层
     changeFloor(value) {
+      this.page.pageNumber = 1;
       this.Buildfloor = value;
       this.getTableData();
     },
     //修改空间类型
     changeSpace(val, space, value) {
-			if (this.selections.length) {
-				this.$confirm('关联的业务空间未保存, 是否继续?', '提示', {
+      if (this.selections.length) {
+        this.$confirm('关联的业务空间未保存, 是否继续?', '提示', {
           confirmButtonText: '确定',
           cancelButtonText: '取消',
           type: 'warning'
         }).then(() => {
           this.Spacecategory = val;
-					this.spaceValue = value;
-      		this.getTableData();
+          this.spaceValue = value;
+          this.getTableData();
         }).catch(() => {
-          this.$refs.spacesel.value = this.spaceValue;  
+          this.$refs.spacesel.value = this.spaceValue;
         });
-			} else {
-				this.Spacecategory = val;
-				this.spaceValue = value;
-      	this.getTableData();
-			}
+      } else {
+        this.Spacecategory = val;
+        this.spaceValue = value;
+        this.getTableData();
+      }
     },
     getTableData() {
       let params = {
@@ -170,7 +172,7 @@ export default {
         params.data.filters += `;classCode='${this.Spacecategory}'`;
       }
       if (this.keycode != "") {
-        params.data.filters += `;name contain '${this.keycode}' or localName contain '${this.keycode}'`;
+        params.data.filters += `;localId contain '${this.keycode}' or localName contain '${this.keycode}'`;
       }
 
       unSysZoneSpace(params, res => {

+ 1 - 1
src/components/relation/overview/CardList.vue

@@ -100,7 +100,7 @@
                   <span
                     v-show="relation.computationalState !== 3  && relation.computingTime">最后一次计算时间 {{relation.computingTime}}</span>
                   <el-tooltip
-                    :content="relation.computationalState === 2 ? '关系变更,重新计算':'启动计算'"
+                    :content="relation.computationalState === 2 ? '关系变更,重新计算':'启动计算'"
                     placement="top"
                   >
                     <el-badge

+ 376 - 370
src/components/relation/overview/Modal/RelationMaintain.vue

@@ -2,33 +2,33 @@
   <div class="relation-maintain">
     <!--计算无需配置源末端的关系时提示-->
     <el-dialog
-        :title="values.title"
-        :visible.sync="dialogTableVisible"
+      :title="values.title"
+      :visible.sync="dialogTableVisible"
     >
-      <span class="font-big">{{values.autoComputed}}</span>
+      <span class="font-big">{{ values.autoComputed }}</span>
       <footer
-          slot="footer"
-          class="dialog-footer "
+        slot="footer"
+        class="dialog-footer "
       >
-        <el-button @click="dialogTableVisible = false">{{values.cancel}}</el-button>
+        <el-button @click="dialogTableVisible = false">{{ values.cancel }}</el-button>
         <el-button
-            type="primary"
-            @click="promptly"
-        >{{values.promptly}}
+          type="primary"
+          @click="promptly"
+        >{{ values.promptly }}
         </el-button>
       </footer>
     </el-dialog>
     <!-- 计算需配置源末端的关系且已配置时提示-->
     <el-dialog
-        :title="values.title"
-        :visible.sync="dialogTableVisibleMore"
+      :title="values.title"
+      :visible.sync="dialogTableVisibleMore"
     >
       <div
-          v-loading="TableVisibleMoreLoading"
-          style="overflow:hidden"
+        v-loading="TableVisibleMoreLoading"
+        style="overflow:hidden"
       >
-        <p class="font-big">{{values.existComputed}}</p>
-        <p class="exist-title">{{values.existTitle}}</p>
+        <p class="font-big">{{ values.existComputed }}</p>
+        <p class="exist-title">{{ values.existTitle }}</p>
         <el-row :gutter="20" style="margin-bottom: 20px">
           <el-col :span="12">
             <p>源端设备类:</p>
@@ -70,11 +70,11 @@
           class="dialog-footer "
           style="float: right"
         >
-          <el-button @click="dialogTableVisibleMore = false">{{values.cancel}}</el-button>
+          <el-button @click="dialogTableVisibleMore = false">{{ values.cancel }}</el-button>
           <el-button
             type="primary"
             @click="computedUpdate"
-          >{{values.promptly}}
+          >{{ values.promptly }}
           </el-button>
         </footer>
       </div>
@@ -83,7 +83,7 @@
       :title="values.title"
       :visible.sync="dialogEquipment"
     >
-      <h4>{{values.equipmentSetting}}</h4>
+      <h4>{{ values.equipmentSetting }}</h4>
       <el-row :gutter="20">
         <el-col :span="12">
           <p>源端设备类:</p>
@@ -121,116 +121,116 @@
         slot="footer"
         class="dialog-footer"
       >
-        <el-button @click="dialogEquipment = false">{{values.cancel}}</el-button>
+        <el-button @click="dialogEquipment = false">{{ values.cancel }}</el-button>
 
         <el-button
           type="primary"
           @click="handleAddSource"
           :disabled="disabled"
-        >{{values.preservation}}
+        >{{ values.preservation }}
         </el-button>
       </footer>
     </el-dialog>
     <!--手动编辑:提示引导-->
     <el-dialog
-        :title="values.title"
-        :visible.sync="dialogManualTip"
+      :title="values.title"
+      :visible.sync="dialogManualTip"
     >
-      <p class="font-big">{{values.tips}}</p>
+      <p class="font-big">{{ values.tips }}</p>
       <p
-          class="font-big"
-          v-for="item in values.device"
-      >{{item}}</p>
+        class="font-big"
+        v-for="item in values.device"
+      >{{ item }}</p>
       <footer
-          slot="footer"
-          class="dialog-footer "
+        slot="footer"
+        class="dialog-footer "
       >
-        <el-button @click="dialogManualTip = false">{{values.confirm}}
+        <el-button @click="dialogManualTip = false">{{ values.confirm }}
         </el-button>
       </footer>
     </el-dialog>
     <!--手动编辑:手动维护-->
     <el-dialog
-        :title="values.title"
-        :visible.sync="dialogManualOption"
+      :title="values.title"
+      :visible.sync="dialogManualOption"
     >
-      <p class="option-tip">{{values.optionTips}}</p>
+      <p class="option-tip">{{ values.optionTips }}</p>
       <el-row :span="24">
         <el-col :span="8">
           <p>
             <i class="iconfont icon-doc-line"/>
-            {{values.currentNum}} 0
+            {{ values.currentNum }} 0
           </p>
 
           <a :href="downloadProject('excel')">
             <el-button
-                type="primary"
-                class="mt-10"
+              type="primary"
+              class="mt-10"
             >
-              {{values.download}}
+              {{ values.download }}
             </el-button>
           </a>
         </el-col>
         <el-col :span="10">
-          {{values.lastTime}}
+          {{ values.lastTime }}
         </el-col>
       </el-row>
       <el-upload
-          class="upload-demo"
-          drag
-          action="/api/datacenter/graphic/import"
-          multiple
-          :show-file-list='false'
-          name="file"
-          :headers="headers"
-          :data="dataId"
-          :on-progress="progress"
-          :on-success="success"
-          :on-error="error"
-
-
-          accept="xlsx,xls"
+        class="upload-demo"
+        drag
+        action="/api/datacenter/graphic/import"
+        multiple
+        :show-file-list='false'
+        name="file"
+        :headers="headers"
+        :data="dataId"
+        :on-progress="progress"
+        :on-success="success"
+        :on-error="error"
+
+
+        accept="xlsx,xls"
       >
         <i class="el-icon-upload"/>
         <div
-            class="el-upload__text"
-            v-html="values.uploadTxt"
+          class="el-upload__text"
+          v-html="values.uploadTxt"
         />
-        <div class="upload__tip danger" slot="tip">{{ values.uploadTips}}</div>
+        <div class="upload__tip danger" slot="tip">{{ values.uploadTips }}</div>
       </el-upload>
     </el-dialog>
     <!--手动编辑:手动维护.process结束-->
     <el-dialog
-        :title="values.title"
-        :visible.sync="dialogProcess"
+      :title="values.title"
+      :visible.sync="dialogProcess"
     >
       <div class="block">
         <el-timeline>
           <el-timeline-item
-              v-for="(activity, index) in activities"
-              :key="index"
-              :icon="activity.icon"
-              :type="activity.type"
-              :color="activity.color"
-              :size="activity.size"
+            v-for="(activity, index) in activities"
+            :key="index"
+            :icon="activity.icon"
+            :type="activity.type"
+            :color="activity.color"
+            :size="activity.size"
           >
-            {{activity.content}}
+            {{ activity.content }}
           </el-timeline-item>
         </el-timeline>
       </div>
       <!--            下载报告-->
       <a :href="downloadProject('report')">
-        <el-button>{{values.downloadFile}}</el-button>
+        <el-button>{{ values.downloadFile }}</el-button>
       </a>
       <footer
-          slot="footer"
-          class="dialog-footer "
+        slot="footer"
+        class="dialog-footer "
       >
-        <el-button @click="errBack">{{values.back}}</el-button>
+        <el-button @click="errBack">{{ values.back }}</el-button>
         <el-button
-            type="primary"
-            @click="finish"
-        >{{values.done}}
+          type="primary"
+          @click="finish"
+        >{{ values.done }}
         </el-button>
       </footer>
     </el-dialog>
@@ -238,341 +238,347 @@
 </template>
 
 <script>
-  import {mapGetters} from 'vuex'
-  import storage from '@/framework/utils/storage'
-  import {addSource, calcSpecial, sourceQuery} from "@/api/relation/api";
-  import deviceList from "@/data/deviceList.js"
-
-  export default {
-    name: "RelationMaintain",
-    props: ['values', 'isComputed', 'source', 'TableVisibleMoreLoading', 'ManualMaintenance'],
-    created() {
-    },
-    mounted() {
+import {mapGetters} from 'vuex'
+import storage from '@/framework/utils/storage'
+import {addSource, calcSpecial, sourceQuery} from "@/api/relation/api";
+import deviceList from "@/data/deviceList.js"
+
+export default {
+  name: "RelationMaintain",
+  props: ['values', 'isComputed', 'source', 'TableVisibleMoreLoading', 'ManualMaintenance'],
+  created() {
+  },
+  mounted() {
+
+  },
+  data() {
+    return {
+      dialogTableVisible: false,
+      dialogTableVisibleMore: false,
+      dialogEquipment: false,
+      dialogManualTip: false,
+      dialogManualOption: false,
+      dialogProcess: false,
+      originEquipment: [],
+      endEquipment: [],
+      props: {
+        multiple: true,
+        label: 'FamilyName',
+        value: 'lId',
+        children: 'Items',
+
+      },
+      activities: [{
+        content: '数据文件处理中..',
+        size: 'large',
+        type: 'primary',
+        icon: 'el-icon-check',
+        color: '#0bbd87'
+      }, {
+        content: '数据处理成功',
+        color: '#0bbd87',
+        icon: 'el-icon-check',
+        size: 'large',
+        type: 'primary',
+      }],
+      vals: [],
+      val: [],
+      idArr: [],//存储所有选择的id
+      secondary: [],//单独存储二级数据
+      list: [],//获取后台数据,重新组合,添加唯一标识和源端标识
+      resultOrigin: [],//最终传给后台的源端数据
+      resultEnd: [],//最终传给后台的末端数据
+      ops: [],
+      filterOps: [],//为清空第二个选择器
+      isResouceShow: 0,
+      RelationTypeName: '',//卡片名称
+      value: [],
+      oraginOption: [],
+      endValue: [],
+      endOption: [],
+      setValue: [],
+      setOriginOption: [],
+      setEndValue: [],
+      setEndOptions: [],
+      disabled: false
+    }
+  },
 
+  computed: {
+    ...mapGetters('layout', ['projectId']),
+    headers() {
+      return {
+        'ProjectId': this.projectId,
+        'Comming': 'adm',
+        'Account': storage.get("user_name")
+      }
     },
-    data() {
+    dataId() {
       return {
-        dialogTableVisible: false,
-        dialogTableVisibleMore: false,
-        dialogEquipment: false,
-        dialogManualTip: false,
-        dialogManualOption: false,
-        dialogProcess: false,
-        originEquipment: [],
-        endEquipment: [],
-        props: {
-          multiple: true,
-          label: 'FamilyName',
-          value: 'lId',
-          children: 'Items',
-
-        },
-        activities: [{
-          content: '数据文件处理中..',
-          size: 'large',
-          type: 'primary',
-          icon: 'el-icon-check',
-          color: '#0bbd87'
-        }, {
-          content: '数据处理成功',
-          color: '#0bbd87',
-          icon: 'el-icon-check',
-          size: 'large',
-          type: 'primary',
-        }],
-        vals: [],
-        val: [],
-        idArr: [],//存储所有选择的id
-        secondary: [],//单独存储二级数据
-        list: [],//获取后台数据,重新组合,添加唯一标识和源端标识
-        resultOrigin: [],//最终传给后台的源端数据
-        resultEnd: [],//最终传给后台的末端数据
-        ops: [],
-        filterOps: [],//为清空第二个选择器
-        isResouceShow: 0,
-        RelationTypeName: '',//卡片名称
-        value: [],
-        oraginOption: [],
-        endValue: [],
-        endOption: [],
-        setValue: [],
-        setOriginOption: [],
-        setEndValue: [],
-        setEndOptions: [],
-        disabled: false
+        relType: this.ManualMaintenance.RelationType || '',
+        zoneType: this.ManualMaintenance.ZoneType || '',
+        projectId: this.projectId
       }
     },
-
-    computed: {
-      ...mapGetters('layout', ['projectId']),
-      headers() {
-        return {
-          'ProjectId': this.projectId,
-          'Comming': 'adm',
-          'Account': storage.get("user_name")
-        }
-      },
-      dataId() {
-        return {
-          relType: this.ManualMaintenance.RelationType || '',
-          zoneType: this.ManualMaintenance.ZoneType || '',
-          projectId: this.projectId
-        }
-      },
-      disOptions() {
-        let arr = this.list.length && this.deepCopy(this.list).map(item => {
-          item.Items.length && item.Items.map(i => {
-            if (this.idArr.includes(i.lId)) {
-              i.disabled = true
-            }
-            return i
-          })
-          return item
+    disOptions() {
+      let arr = this.list.length && this.deepCopy(this.list).map(item => {
+        item.Items.length && item.Items.map(i => {
+          if (this.idArr.includes(i.lId)) {
+            i.disabled = true
+          }
+          return i
         })
-        this.filterOps = arr
-        return arr
-      },
+        return item
+      })
+      this.filterOps = arr
+      return arr
     },
-    methods: {
-      deepCopy(obj) {
-        return JSON.parse(JSON.stringify(obj))
-      },
-      //查询原末端回显数据
-      handleSourceQuery() {
-        let param = {
-          filters: `projectId='${this.projectId}';calcName='${this.RelationTypeName}'`
-        }
-        sourceQuery(param, res => {
-          this.value = []
-          this.setValue = []
-          res.content && res.content.forEach(({sourceType}) => this.value.push(sourceType))
-          //启动计算
-          res.content && res.content.forEach(({sourceType}) => this.setValue.push(sourceType))
-          // this.setOriginOption = this.oraginOption.forEach(i => this.setValue.includes(i.value))
-          this.changeVal(this.value)
-          this.setValue && this.handleSetValue()
-        })
-      },
-      dialogEquipmentOpen(relation) { //设定源末端
-        this.RelationTypeName = relation.relationTypeName
-        this.oraginOption = deviceList[relation.relationTypeName] && deviceList[relation.relationTypeName].filter(i => i.select)
-        this.data = deviceList[relation.relationTypeName]
-        this.disabled = this.data != undefined ? false : true
-        // console.log(this.data, relation.RelationTypeName)
-        this.dialogEquipment = true
+  },
+  methods: {
+    deepCopy(obj) {
+      return JSON.parse(JSON.stringify(obj))
+    },
+    //查询原末端回显数据
+    handleSourceQuery() {
+      let param = {
+        // filters: `projectId='${this.projectId}';calcName='${this.RelationTypeName}'`
+        calcName: this.RelationTypeName
+      }
+      sourceQuery(param, res => {
+        this.value = []
+        this.setValue = []
+        res.content && res.content.forEach(({sourceType}) => this.value.push(sourceType))
+        //启动计算
+        res.content && res.content.forEach(({sourceType}) => this.setValue.push(sourceType))
+        // this.setOriginOption = this.oraginOption.forEach(i => this.setValue.includes(i.value))
+        this.changeVal(this.value)
+        this.setValue && this.handleSetValue()
+      })
+    },
+    dialogEquipmentOpen(relation) { //设定源末端
+      this.RelationTypeName = relation.relationTypeName
+      this.oraginOption = deviceList[relation.relationTypeName] && deviceList[relation.relationTypeName].filter(i => i.select)
+      this.data = deviceList[relation.relationTypeName]
+      this.disabled = this.data != undefined ? false : true
+      // console.log(this.data, relation.RelationTypeName)
+      this.dialogEquipment = true
 
-      },
-      changeVal(val) {
-        //  末端展示数据
-        this.endOption = this.data && this.data.filter(i => !val.includes(i.value))
-        //  启动计算末端展示数据
-        // this.setEndOptions = this.data && this.data.filter(i => !val.includes(i.value))
-
-        this.sourceList = []
-        val.forEach(i => this.sourceList.push({
-          sourceType: i,
-          projectId: this.projectId,
-          calcName: this.RelationTypeName
-        }))
-      },
+    },
+    changeVal(val) {
+      //  末端展示数据
+      this.endOption = this.data && this.data.filter(i => !val.includes(i.value))
+      //  启动计算末端展示数据
+      // this.setEndOptions = this.data && this.data.filter(i => !val.includes(i.value))
+
+      this.sourceList = []
+      val.forEach(i => this.sourceList.push({
+        sourceType: i,
+        projectId: this.projectId,
+        calcName: this.RelationTypeName
+      }))
+    },
 
-      handleAddSource() { //保存设备类
-        debugger
-        console.log(this.sourceList)
-        if (this.sourceList.length) {
-          let params = {
-            content: this.sourceList
-          }
-          return
-          addSource(params, res => {
-            this.$message.success('保存成功')
-          })
+    handleAddSource() { //保存设备类
+      let params = {}
+      if (this.sourceList.length) {
+        params = {
+          content: this.sourceList
         }
 
-        this.dialogEquipment = false
-      },
-      // showCascader() {
-      //   ++this.isResouceShow
-      //   let copy = this.deepCopy(this.source)
-      //   copy.forEach(item => {
-      //     item.Items.forEach(child => {
-      //       child.lId = this.list.length
-      //       this.list.push(child)
-      //       child.Items.forEach(i => {
-      //         i.lId = i.Id + i.BlockId
-      //         i.IsSource == true && this.ops.push([child.lId, i.lId])
-      //         i.IsSource == false && this.filterOps.push([child.lId, i.lId])
-      //       })
-      //     })
-      //   })
-      // },
-      showCascader(relation) {
-        this.RelationTypeName = relation.relationTypeName
+      } else {
+        params = {
+          content: [{
+            projectId: this.projectId,
+            calcName: this.RelationTypeName
+          }]
+        }
+      }
+      addSource(params, res => {
+        this.$message.success('保存成功')
+      })
+      this.dialogEquipment = false
+    },
+    // showCascader() {
+    //   ++this.isResouceShow
+    //   let copy = this.deepCopy(this.source)
+    //   copy.forEach(item => {
+    //     item.Items.forEach(child => {
+    //       child.lId = this.list.length
+    //       this.list.push(child)
+    //       child.Items.forEach(i => {
+    //         i.lId = i.Id + i.BlockId
+    //         i.IsSource == true && this.ops.push([child.lId, i.lId])
+    //         i.IsSource == false && this.filterOps.push([child.lId, i.lId])
+    //       })
+    //     })
+    //   })
+    // },
+    showCascader(relation) {
+      this.RelationTypeName = relation.relationTypeName
 
 
-      },
-      handleSetValue() {
-        let device = deviceList[this.RelationTypeName]
-        this.setOriginOption = device && device.filter(i => this.setValue.includes(i.value))
-        this.setEndOptions = device && device.filter(i => !this.setValue.includes(i.value))
-      },
-      downloadProject(str) {
-        let relType = this.ManualMaintenance.RelationType ? `&relType=${this.ManualMaintenance.RelationType}` : ''
-        let zoneType = this.ManualMaintenance.ZoneType ? `&zoneType=${this.ManualMaintenance.ZoneType}` : null
-        let url;
-        if (str === 'excel') {
-          relType = this.ManualMaintenance.RelationType ? `&relType=${this.ManualMaintenance.RelationType}` : ''
-          // url = `/api/datacenter/graphic/export?code=对象ID${relType}${zoneType}`
-          if (zoneType) {
-            url = `/api/datacenter/graphic/export?projectId=${this.projectId}${relType}${zoneType}&code=对象ID`
-
-          } else {
-            url = `/api/datacenter/graphic/export?projectId=${this.projectId}${relType}&code=对象ID`
-          }
+    },
+    handleSetValue() {
+      let device = deviceList[this.RelationTypeName]
+      this.setOriginOption = device && device.filter(i => this.setValue.includes(i.value))
+      this.setEndOptions = device && device.filter(i => !this.setValue.includes(i.value))
+    },
+    downloadProject(str) {
+      let relType = this.ManualMaintenance.RelationType ? `&relType=${this.ManualMaintenance.RelationType}` : ''
+      let zoneType = this.ManualMaintenance.ZoneType ? `&zoneType=${this.ManualMaintenance.ZoneType}` : null
+      let url;
+      if (str === 'excel') {
+        relType = this.ManualMaintenance.RelationType ? `&relType=${this.ManualMaintenance.RelationType}` : ''
+        // url = `/api/datacenter/graphic/export?code=对象ID${relType}${zoneType}`
+        if (zoneType) {
+          url = `/api/datacenter/graphic/export?projectId=${this.projectId}${relType}${zoneType}&code=对象ID`
+
         } else {
-          url = `/api/datacenter/graphic/report-downloads?projectId=${this.projectId}${relType}${zoneType}`
+          url = `/api/datacenter/graphic/export?projectId=${this.projectId}${relType}&code=对象ID`
         }
-        return url
-      },
-      progress(event, file, fileList) {
-        // console.log(event.file, fileList)
-      },
-      success(event, file, fileList) {
-        this.dialogManualOption = true
-        this.dialogProcess = true
+      } else {
+        url = `/api/datacenter/graphic/report-downloads?projectId=${this.projectId}${relType}${zoneType}`
+      }
+      return url
+    },
+    progress(event, file, fileList) {
+      // console.log(event.file, fileList)
+    },
+    success(event, file, fileList) {
+      this.dialogManualOption = true
+      this.dialogProcess = true
 
-      },
-      error(event, file, fileList) {
-        this.dialogManualOption = true
-        this.dialogProcess = true
+    },
+    error(event, file, fileList) {
+      this.dialogManualOption = true
+      this.dialogProcess = true
 
-      },
-      errBack() {
-        this.dialogProcess = false
-      },
-      finish() {
-        this.dialogProcess = false
-        this.dialogManualOption = false
-      },
+    },
+    errBack() {
+      this.dialogProcess = false
+    },
+    finish() {
+      this.dialogProcess = false
+      this.dialogManualOption = false
+    },
 
-      promptly() {
+    promptly() {
 
-        if (this.isComputed.automatic && !this.isComputed.source) { //需要自动计算并且不需要配置云末端
-          this.$emit('RelationType', this.isComputed.RelationType, this.isComputed.ZoneType)
-        }
-        this.dialogTableVisible = false
-      },
-      sourceOptions(val) {
-        // this.ops = val
-        this.idArr = val.map(item => item[1])
-        this.deepCopy(this.list).forEach(item => this.secondary.push(...item.Items))
-        let filterList = this.secondary.filter(item => this.idArr.includes(item.lId))
-        //接口需要的数据格式
-        filterList.forEach(item => {
-          let {BlockId, BuildingId, Domain, Id, MepSystemType, ProjectId, Type, Statistics} = item
-          this.resultOrigin.push({
-            BlockId,
-            BuildingId,
-            Domain,
-            // Id,
-            MepSystemType,
-            ProjectId,
-            Source: true,
-            SourceId: Id,
-            SourceType: Type,
-            Statistics
-          })
-        })
-      },
-      endOptions(val) {
-        this.idArr = val.map(item => item[1])
-        this.deepCopy(this.list).forEach(item => this.secondary.push(...item.Items))
-        let filterList = this.secondary.filter(item => this.idArr.includes(item.lId))
-        //接口需要的数据格式
-        filterList.forEach(item => {
-          let {BlockId, BuildingId, Domain, Id, MepSystemType, ProjectId, Type, Statistics} = item
-          this.resultEnd.push({
-            BlockId,
-            BuildingId,
-            Domain,
-            // Id,
-            MepSystemType,
-            ProjectId,
-            Source: false,
-            SourceId: Id,
-            SourceType: Type,
-            Statistics
-          })
+      if (this.isComputed.automatic && !this.isComputed.source) { //需要自动计算并且不需要配置云末端
+        this.$emit('RelationType', this.isComputed.RelationType, this.isComputed.ZoneType)
+      }
+      this.dialogTableVisible = false
+    },
+    sourceOptions(val) {
+      // this.ops = val
+      this.idArr = val.map(item => item[1])
+      this.deepCopy(this.list).forEach(item => this.secondary.push(...item.Items))
+      let filterList = this.secondary.filter(item => this.idArr.includes(item.lId))
+      //接口需要的数据格式
+      filterList.forEach(item => {
+        let {BlockId, BuildingId, Domain, Id, MepSystemType, ProjectId, Type, Statistics} = item
+        this.resultOrigin.push({
+          BlockId,
+          BuildingId,
+          Domain,
+          // Id,
+          MepSystemType,
+          ProjectId,
+          Source: true,
+          SourceId: Id,
+          SourceType: Type,
+          Statistics
         })
-      },
-      computedUpdate() {
-        // if (!this.resultOrigin.length && !this.ops.length) {
-        //   this.$message({
-        //     showClose: true,
-        //     message: '请选择源端设备类',
-        //     type: 'warning'
-        //   });
-        //   return false
-        // } else {
-        //   if (this.resultOrigin.length || this.resultEnd.length) {
-        //     this.resultOrigin.push(...this.resultEnd)
-        //     this.$emit('openComputed', this.resultOrigin)
-        //   }
-        //   this.dialogTableVisibleMore = false
-        //
-        // }
-        // this.resultOrigin.push(...this.resultEnd)
-        // this.$emit('openComputed', this.resultOrigin)
-        this.dialogTableVisibleMore = false
-        let params = {
-          projectId: this.projectId,
-          relationType: this.isComputed.relationType
-        }
-        calcSpecial(params, res => {
-          this.$message.success('计算成功')
+      })
+    },
+    endOptions(val) {
+      this.idArr = val.map(item => item[1])
+      this.deepCopy(this.list).forEach(item => this.secondary.push(...item.Items))
+      let filterList = this.secondary.filter(item => this.idArr.includes(item.lId))
+      //接口需要的数据格式
+      filterList.forEach(item => {
+        let {BlockId, BuildingId, Domain, Id, MepSystemType, ProjectId, Type, Statistics} = item
+        this.resultEnd.push({
+          BlockId,
+          BuildingId,
+          Domain,
+          // Id,
+          MepSystemType,
+          ProjectId,
+          Source: false,
+          SourceId: Id,
+          SourceType: Type,
+          Statistics
         })
+      })
+    },
+    computedUpdate() {
+      // if (!this.resultOrigin.length && !this.ops.length) {
+      //   this.$message({
+      //     showClose: true,
+      //     message: '请选择源端设备类',
+      //     type: 'warning'
+      //   });
+      //   return false
+      // } else {
+      //   if (this.resultOrigin.length || this.resultEnd.length) {
+      //     this.resultOrigin.push(...this.resultEnd)
+      //     this.$emit('openComputed', this.resultOrigin)
+      //   }
+      //   this.dialogTableVisibleMore = false
+      //
+      // }
+      // this.resultOrigin.push(...this.resultEnd)
+      // this.$emit('openComputed', this.resultOrigin)
+      this.dialogTableVisibleMore = false
+      let params = {
+        projectId: this.projectId,
+        relationType: this.isComputed.relationType
+      }
+      calcSpecial(params, res => {
+        this.$message.success('计算成功')
+      })
 
-      },
-    }
+    },
   }
+}
 </script>
 
 <style scoped lang="less">
-  .relation-maintain {
-    .mt-10 {
-      margin-top: 10px;
-    }
+.relation-maintain {
+  .mt-10 {
+    margin-top: 10px;
+  }
 
-    .danger {
-      color: #d9001b;
-    }
+  .danger {
+    color: #d9001b;
+  }
 
-    .font-big {
-      font-weight: 600;
-    }
+  .font-big {
+    font-weight: 600;
+  }
 
 
-    .exist-title {
-      font-size: 12px;
-      color: #AAAAAA;
-    }
+  .exist-title {
+    font-size: 12px;
+    color: #AAAAAA;
+  }
 
-    .option-tip {
-      font-size: 18px;
-      font-weight: 600;
-    }
+  .option-tip {
+    font-size: 18px;
+    font-weight: 600;
+  }
 
-    .upload-demo {
-      margin: 20px 0;
+  .upload-demo {
+    margin: 20px 0;
 
-    }
+  }
 
-    /deep/ .el-upload-dragger {
-      width: 600px;
-      margin: 0 auto;
-    }
+  /deep/ .el-upload-dragger {
+    width: 600px;
+    margin: 0 auto;
   }
+}
 </style>
 
 

+ 2 - 1
src/components/relation/overview/Modal/getCascader.vue

@@ -124,7 +124,8 @@ export default {
         }
       }
       let param3 = {
-        Filters: `ProjectId='${this.projectId}';CalcName='${this.RelationTypeName}'`
+        // Filters: `ProjectId='${this.projectId}';CalcName='${this.RelationTypeName}'`
+        calcName: this.RelationTypeName
 
       }
       let promise2 = new Promise((resolve, reject) => {

+ 2 - 1
src/components/relation/overview/Modal/setCascader.vue

@@ -116,7 +116,8 @@ export default {
         }
       }
       let param3 = {
-        Filters: `ProjectId='${this.projectId}';CalcName='${this.RelationTypeName}'`
+        // Filters: `ProjectId='${this.projectId}';CalcName='${this.RelationTypeName}'`
+        calcName: this.RelationTypeName
 
       }
       let promise2 = new Promise((resolve, reject) => {

+ 2 - 2
src/framework/components/messagesever/index.vue

@@ -125,7 +125,7 @@ export default {
             name: "project"
           }
         ],
-        filters: `userId='${this.userId}';type!='refresh'`,
+        filters: `userId='${this.userId}';type!='refresh';type!='Refresh'`,
         orders: "createTime desc, id asc",
         pageNumber: 1,
         pageSize: 10
@@ -136,7 +136,7 @@ export default {
     },
     getUnreadCount() {//获取未读消息的数量
       let params = {
-        filters: `read=false;userId='${this.userId}';type!='refresh'`
+        filters: `read=false;userId='${this.userId}';type!='refresh';type!='Refresh'`
       }
       messgeCount(params, res => {
         this.unreadNum = res.count

+ 1 - 1
src/framework/components/messagesever/msgAllDetails.vue

@@ -117,7 +117,7 @@ export default {
             name: "project"
           }
         ],
-        filters: `userId='${this.userId}';type!='refresh'`,
+        filters: `userId='${this.userId}';type!='refresh';type!='Refresh'`,
         orders: "createTime desc, id asc",
         pageNumber: this.page.pageNumber,
         pageSize: this.page.pageSize

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

@@ -26,7 +26,7 @@ export default {
     },
     projectId: 'Pj1101051029',
     group_code: '',
-    projects: project["39"],
+    projects: project["14"],
     breadcrumb: [],
     uploaderList: [], //当前上传文件列表
     secret: "saga123456", //项目密码

+ 29 - 20
src/views/data_admin/buildLog/index.vue

@@ -13,7 +13,7 @@
         <p style="text-align: right; padding: 10px">
           <el-button style="width: 96px" @click='action'>动作说明</el-button>
           <el-button style="width: 96px" @click='refresh'>刷新</el-button>
-          <el-button style="width: 96px" @click='downExcel(1)'>导出到Excel</el-button>
+          <el-button style="width: 96px" @click='downExcel()'>导出到Excel</el-button>
         </p>
         <div style="height: calc(100% - 52px)">
           <el-table :data='tableData' tooltip-effect='dark' style='width: 100%;' v-loading='loading' height="100%"
@@ -135,7 +135,33 @@ export default {
       this.$refs['action'].show()
     },
     // 导出
-    downExcel(pageNum) {
+    downExcel() {
+        this.exportData = [];
+        this.getexportData(1);
+    },
+    /**
+     * 获取Excel数据
+     */
+    getexportData(pageNum) {
+        let param = {
+            filters: `createTime>='${this.dateValue[0]} 00:00:00';createTime<='${this.dateValue[1]} 23:59:59'`,
+            pageNumber: pageNum,
+            pageSize: 1000
+        }
+        if (this.searchValue) {
+            param.filters += `;name contain '${this.searchValue}' or phone contain '${this.searchValue}' or action contain '${this.searchValue}' or note contain '${this.searchValue}' or userId contain '${this.searchValue}'`
+        }
+        queryUserLog(param, res => {
+            this.exportData = this.exportData.concat(res.content);
+            if (res.total / (res.pageSize * res.pageNumber) > 1) {
+            this.downExcel(pageNum++)
+            } else {
+            let time = +new Date()
+            jsontoExcel.downloadExl(this.tableHeader, this.exportData, `UserLog-${time}`)
+            }
+        })
+    },
+    // downExcel(pageNum) {
       // let param = {
       //   startTime: this.dateValue[0] + ' 00:00:00',
       //   endTime: this.dateValue[1] + ' 23:59:59',
@@ -174,24 +200,7 @@ export default {
       //   .catch(function (err) {
       //     console.dirxml(err)
       //   })
-      let param = {
-        filters: `createTime>='${this.dateValue[0]} 00:00:00';createTime<='${this.dateValue[1]} 23:59:59'`,
-        pageNumber: pageNum,
-        pageSize: 1000
-      }
-      if (this.searchValue) {
-        param.filters += `;name contain '${this.searchValue}' or phone contain '${this.searchValue}' or action contain '${this.searchValue}' or note contain '${this.searchValue}' or userId contain '${this.searchValue}'`
-      }
-      queryUserLog(param, res => {
-        this.exportData = this.exportData.concat(res.content);
-        if (res.total / (res.pageSize * res.pageNumber) > 1) {
-          this.downExcel(pageNum++)
-        } else {
-          let time = +new Date()
-          jsontoExcel.downloadExl(this.tableHeader, this.exportData, `UserLog-${time}`)
-        }
-      })
-    },
+    // },
     //切换每页显示多少条数据
     handleSizeChange(val) {
       this.page.pageSize = val

+ 2 - 2
src/views/data_admin/buildTask/index.vue

@@ -21,10 +21,10 @@
       <el-button class="add-task" @click="handleAddTaskDialog">添加验证任务</el-button>
     </div>
     <div class="tabel-box">
-      <model-table :paramsData="{taskState, modelFile, modelCategory}" v-if="taskType == 'model'"></model-table>
+      <model-table :paramsData="{taskState, modelFile, modelCategory}" v-if="taskType == 'model'" @upData="upData"></model-table>
       <device-table :paramsData="{buildfloor, taskState, deviceCategory}" v-else-if="taskType == 'device'"
                     @upData="upData"></device-table>
-      <assets-table :paramsData="{buildfloor, taskState, family}" v-else-if="taskType == 'assets'"></assets-table>
+      <assets-table :paramsData="{buildfloor, taskState, family}" v-else-if="taskType == 'assets'" @upData="upData"></assets-table>
       <tear-table v-else-if="taskType == 'tear'"></tear-table>
       <replace-table v-else-if="taskType == 'replace'"></replace-table>
     </div>

+ 1 - 1
src/views/ledger/cenotelist/index.vue

@@ -132,7 +132,7 @@ export default {
         if (newName && newName[0] && newName[0].value) {
           this.showType = newName[0].value
         } else {
-          this.showType = ""
+          this.showType = "Visible"
         }
       },
       immediate: true,

+ 2 - 2
src/views/ledger/facility/addfacility.vue

@@ -77,8 +77,8 @@ export default {
       addNum: 1,
       onlyRead: false,
       showTypes: [
-        { value: "all", label: '全部' },
-        { value: "Visible", label: '只看采集信息' }
+        { value: "Visible", label: '只看采集信息' },
+        { value: "all", label: '全部' }
       ],
       tableHeader: [],
       tableData: session.get("deviceAddData")

+ 1 - 1
src/views/ledger/facility/partsmanage/addparts/index.vue

@@ -101,8 +101,8 @@ export default {
         : [{ Checked: 1 }],
       showTypes: [
         // { value: "partInfo", label: '隐藏信息点' },
+        { value: "Visible", label: '只看采集信息' },
         { value: "all", label: '全部' },
-        { value: "Visible", label: '只看采集信息' }
       ],
       showType: this.$route.query.showType,
       copyTableData: [],

+ 1 - 1
src/views/ledger/facility/partsmanage/index.vue

@@ -113,8 +113,8 @@ export default {
       onlyRead: false,
       showTypes: [
         // { value: "partInfo", label: '隐藏信息点' },
+        { value: "Visible", label: '只看采集信息' },
         { value: "all", label: '全部' },
-        { value: "Visible", label: '只看采集信息' }
       ],
       showType: "Visible",
       tableHeader: [],

+ 2 - 2
src/views/ledger/property/addproperty.vue

@@ -62,8 +62,8 @@ export default {
       addNum: 1,
       onlyRead: false,
       showTypes: [
-        { value: "all", label: '全部' },
-        { value: "Visible", label: '只看采集信息' }
+        { value: "Visible", label: '只看采集信息' },
+        { value: "all", label: '全部' }
       ],
       buildFloorData: [],
       tableHeader: [],

+ 8 - 6
src/views/ledger/property/index.vue

@@ -6,7 +6,7 @@
         <floor-cascader @change="changeFloor"></floor-cascader>
         <my-cascader ref="cascader" @change="changeDevice"></my-cascader>
       </div>
-      <hanson-table @getJson="change" ref="tableMain"></hanson-table>
+      <hanson-table @close="change" ref="tableMain"></hanson-table>
     </div>
     <!-- <table-transfers></table-transfers> -->
   </div>
@@ -112,14 +112,16 @@ export default {
     },
 
     //新建资产后进行刷新
-    change(val) {
-      this.$refs.cascader.setValue(val.code)
+    change(val) {      
       this.param.deviceId = val.code
       this.getNumber()
-      if (!!this.param.deviceId) {
-        if (this.$refs.tableMain)
-          this.$refs.tableMain.getHeaderData(this.param);
+      if (val && this.$refs.cascader) {
+        this.$refs.cascader.changeVal(val.code)
       }
+    //   if (!!this.param.deviceId) {
+    //     if (this.$refs.tableMain)
+    //       this.$refs.tableMain.getHeaderData(this.param);
+    //   }
     },
 
     //修改设备族

+ 2 - 2
src/views/ledger/rentlist/index.vue

@@ -98,7 +98,7 @@ export default {
         label: '编辑模式'
       }],
       onlyRead: true,
-      showType: "",
+      showType: "Visible",
       // allMess: true,
       tableHeader: [],
       page: {
@@ -148,7 +148,7 @@ export default {
         if (newName && newName[0] && newName[0].value) {
           this.showType = newName[0].value
         } else {
-          this.showType = ""
+          this.showType = "Visible"
         }
       },
       immediate: true,

+ 2 - 2
src/views/ledger/rentlist/rentadd/index.vue

@@ -49,8 +49,8 @@ export default {
       onlyRead: false,
       showTypes: [
         // { value: "partInfo", label: '隐藏信息点' },
-        { value: "all", label: '全部' },
-        { value: "Visible", label: '只看采集信息' }
+        { value: "Visible", label: '只看采集信息' },
+        { value: "all", label: '全部' }
       ],
       inputMap: {
         FloorId: {

+ 9 - 4
src/views/ledger/report/index.vue

@@ -221,6 +221,11 @@ export default {
           "name": '功能分区',
           'Rel_type': '11',
           "code": 'FunctionZone'
+        },
+        {
+          "name": '其他分区',
+          'Rel_type': '11',
+          "code": 'OtherZone'
         }
       ],
       partProtion: [],// 业务空间-各分区占比数据
@@ -381,7 +386,7 @@ export default {
             text: this.toPercent(i.gatherDynamicInfoPointCounts / i.gatherInfoPointCounts),
             val: this.dynamic
           })
-    
+
           // this.$set(this.deviceMessageData, 2, {
           //   contentValueO: '总数:',
           //   contentValueT: '自定义:',
@@ -491,10 +496,10 @@ export default {
         })
       })
 
-      // 现场验证状态占比
+      // 现场验证状态占比 taskState = 1 待验证
       let par = {
         projectId: this.projectId,
-        filters: "taskState = 0 or taskState = 1"
+        filters: "taskState = 0 or taskState = -1"
       }
       let promise2 = new Promise(resolve => {
         countEquip(par, res => {
@@ -765,7 +770,7 @@ export default {
           needCountT: this.shaftCount - res1.count,
           text: text
         })
-        console.log(this.shaft,'88888888888');
+        console.log(this.shaft, '88888888888');
       })
     }
   },

+ 4 - 4
src/views/ledger/spacelist/spaceadd/index.vue

@@ -74,10 +74,10 @@ export default {
     return {
       addNum: 1,
       onlyRead: false,
-      showTypes: [{ value: "partInfo", label: '隐藏信息点' }, { value: "all", label: '全部' }, {
-        value: "Visible",
-        label: '只看采集信息'
-      }],
+      showTypes: [
+          { value: "Visible", label: '只看采集信息' },
+          { value: "all", label: '全部' }
+    	],
       tableHeader: [],
       tableData: session.get("spaceAddData")
         ? session.get("spaceAddData").length

+ 2 - 2
src/views/ledger/system/addsystem.vue

@@ -58,8 +58,8 @@ export default {
       addNum: 1,
       onlyRead: false,
       showTypes: [
-        { value: "all", label: '全部' },
-        { value: "Visible", label: '只看采集信息' }
+        { value: "Visible", label: '只看采集信息' },
+        { value: "all", label: '全部' }
       ],
       tableHeader: [],
       tableData: session.get("systemAddData")

+ 34 - 52
src/views/model/report/deleted.vue

@@ -6,42 +6,42 @@
         <div class="details">
           <h4>{{index | numTransformation(4)}}<el-badge value="待删除" class="item"></el-badge>
           </h4>
-          <h4>{{`${item.BuildingName}建筑模型`}}-{{`${item.FloorName}层`}}-{{`${item.EquipLocalName?item.EquipLocalName:item.EquipName}`}}</h4>
+          <h4>{{`${item.buildingName || '**'}`}}-{{`${item.floorName || '**'}`}}-{{`${item.localName?item.localName:item.name}`}}</h4>
           <b>BIM ID:<span @dblclick="copyContent"
-              id="copy">{{item.ScanTaskBase && item.ScanTaskBase[0]?item.ScanTaskBase[0].BIMID:'' | bimIdTransformation}}</span></b><span class="copy"
+              id="copy">{{item.bimId | bimIdTransformation}}</span></b><span class="copy"
             @click="clickCopy">点击复制</span>
           <input id="copyContent" type="text" @dblclick="copyContent" style="border:none;opacity:0;position:absolute;top:0;left:0;">
-          <p style="margin-top:30px;">Revit族:{{item.BIMFamilyName}}</p>
-          <p>设计图纸中编码:{{item.CADID}}</p>
-          <p><span>设备类型:{{item.Category}}</span></p>
-          <p>设备ID:{{item.EquipID}}</p>
-          <p><span v-if="item.Property && item.Property.FamilyName">资产族:{{item.Property.FamilyName.Name}}</span><span
-              v-if="item.PropertyId">关联的资产ID:{{item.PropertyId}}</span></p>
-          <p>现场任务ID:{{item.ScanTaskBase && item.ScanTaskBase[0]?item.ScanTaskBase[0].TaskId:""}}</p>
+          <!-- <p style="margin-top:30px;">Revit族:{{item.BIMFamilyName}}</p> -->
+          <p>设计图纸中编码:{{item.cadId || '--'}}</p>
+          <p><span>设备类型:{{item.codeName || '--'}}</span></p>
+          <p>设备ID:{{item.id}}</p>
+          <!-- <p><span v-if="item.Property && item.Property.FamilyName">资产族:{{item.Property.FamilyName.Name}}</span><span
+              v-if="item.PropertyId">关联的资产ID:{{item.PropertyId}}</span></p> -->
+          <p>现场任务ID:{{item.scanTaskBase && item.scanTaskBase[0]?item.scanTaskBase[0].TaskId:""}}</p>
           <p>
-            <span>执行人:{{item.ScanTaskBase && item.ScanTaskBase[0]?item.ScanTaskBase[0].WorkerName:''}}</span><span>确认人:{{item.ScanTaskBase && item.ScanTaskBase[0]?item.ScanTaskBase[0].ConfirmingPersonName:''}}</span>
+            <span>执行人:{{item.scanTaskBase && item.scanTaskBase[0]?item.scanTaskBase[0].WorkerName:''}}</span><span>确认人:{{item.scanTaskBase && item.scanTaskBase[0]?item.scanTaskBase[0].ConfirmingPersonName:''}}</span>
           </p>
         </div>
         <div class="plan">
           <p>平面图上的位置:<span>{{item.local | localTransformation}}</span></p>
           <div class="img-box">
-            <canvas :id="'canvas'+index" :width="canvasWidth" :height="canvasHeight" ref="canvas" tabindex="0" :data-modelid="item.ModelId"
-              :data-EquipID='item.EquipID' :data-x="item.local.X" :data-y="item.local.Y"></canvas>
+            <canvas :id="'canvas'+index" :width="canvasWidth" :height="canvasHeight" ref="canvas" tabindex="0" :data-modelid="item.modelId"
+              :data-equipid='item.id' :data-x="item.local.X" :data-y="item.local.Y"></canvas>
           </div>
         </div>
       </div>
       <div class="content-bottom">
-        <div class="explain" v-if="item.ScanTaskBase && item.ScanTaskBase[0] && item.ScanTaskBase[0].Note">
+        <div class="explain" v-if="item.scanTaskBase && item.scanTaskBase[0] && item.scanTaskBase[0].Note">
           <p>现场问题说明:</p>
           <el-scrollbar>
             <p class="explain-content">
               <el-scrollbar>
-                {{item.ScanTaskBase?item.ScanTaskBase[0].Note:""}}
+                {{item.scanTaskBase?item.scanTaskBase[0].Note:""}}
               </el-scrollbar>
             </p>
           </el-scrollbar>
         </div>
-        <div class="photo" v-for="(it,ind) in item.ScanTaskBase[0].TaskPicList" :key='ind' v-else-if="item.ScanTaskBase && item.ScanTaskBase[0]">
+        <div class="photo" v-for="(it,ind) in item.scanTaskBase[0].TaskPicList" :key='ind' v-else-if="item.scanTaskBase && item.scanTaskBase[0]">
           <div class="img-box">
             <p>{{it.Name}}<span>拍摄时间:{{it.CreateTime | timeTransformation}}</span></p>
             <div class="img-content">
@@ -160,70 +160,51 @@ export default {
     },
     queryToBelDelEquip() {// 请求待删除数据
       let params = {
-        ProjectId: this.projectId,
-        Cascade: [
-          {
-            Name: "scanTaskBase",// 级联-任务
-            Filters: 'TaskState = 0',
-            Orders: "CreateTime desc ,EquipName asc",
-          },
-          {
-            Name: "property",// 级联-资产
-            Cascade: [
-              {
-                Name: "familyName"
-              }
-            ]
-          },
-          {
-            Name: "equipCategory"// 级联-设备类型
-          }
-        ],
-        Orders: "CreateTime desc ,EquipName asc",
-        Filters: `ModelId in ${this.equipComDelList}`,
-        PageNumber: this.page.pageNumber,
-        PageSize: this.page.pageSize
+        orders: "createTime desc ,id asc",
+        filters: `modelId in ${this.equipComDelList}`,
+        pageNumber: this.page.pageNumber,
+        pageSize: this.page.pageSize
       }
       toBeDelEquipPage(params, res => {
-        this.page.total = res.PageSize < 20 ? res.PageSize : res.Total;
-        res.Content.forEach(item => {
-          if (item.BIMLocation) {
+        this.page.total = res.pageSize < 20 ? res.pageSize : res.total;
+        res.content.forEach(item => {
+          if (item.bimLocation) {
             let local = {};
-            let ary = item.BIMLocation.split(',');
+            let ary = item.bimLocation.split(',');
             let localAry = ['X', 'Y', 'Z'];
             ary.forEach((item, index) => {
               local[localAry[index]] = ary[index];
             })
             item.local = local;
           }
-          if (item.ScanTaskBase && item.ScanTaskBase.length > 1) {
-            item.ScanTaskBase = item.ScanTaskBase.shift();
+          if (item.scanTaskBase && item.scanTaskBase.length > 1) {
+            item.scanTaskBase = item.scanTaskBase.shift();
           }
         });
         if (this.page.pageNumber == 1) {
-          this.pageData = res.Content;
+          this.pageData = res.content;
           this.$nextTick(() => {
             this.getGraphy();
           })
         } else {
-          this.pageData = this.pageData.concat(res.Content);
+          this.pageData = this.pageData.concat(res.content);
           console.log(this.pageData.length, 19)
           this.$nextTick(() => {
             this.getGraphy();
           })
         }
         this.pageData.forEach(item => {
-          if (item.BIMLocation) {
+          if (item.bimLocation) {
             let local = {};
-            let ary = item.BIMLocation.split(',');
+            let ary = item.bimLocation.split(',');
             let localAry = ['X', 'Y', 'Z'];
             ary.forEach((item, index) => {
               local[localAry[index]] = ary[index];
             })
             item.local = local;
           }
-          if (item.ScanTaskBase && item.ScanTaskBase.length > 1) {
-            item.ScanTaskBase = item.ScanTaskBase.shift();
+          if (item.scanTaskBase && item.scanTaskBase.length > 1) {
+            item.scanTaskBase = item.scanTaskBase.shift();
           }
         });
       })
@@ -231,18 +212,18 @@ export default {
     getGraphy() {// 绘制空间位置图片
       console.log(this.i);
       let can = this.$refs.canvas;
+      let modelId = can[this.i].dataset.modelid
       let that = this;
       that.clearGraphy(this.i)
       that.scene = new LocationPointScene();
       this.canvasLoading = true;
-      that.scene.getFloorData('/modelapi/base-graph/query', { ModelId: can[this.i].dataset.modelid }).then(res => {
+      that.scene.getFloorData('/modelapi/base-graph/query', { ModelId: modelId }).then(res => {
         that.canvasLoading = false;
         if (res == 'error') {
           this.FloorMap = '';
           console.log('数据解析异常');
           return;
         }
-        let modelID = can[this.i].dataset.modelid
         let EquipID = can[this.i].dataset.equipid;
         let X = Number(can[this.i].dataset.x);
         let Y = can[this.i].dataset.y * -1;
@@ -253,6 +234,7 @@ export default {
           Y: Y
         })
         that.view.fitSceneToView();
+        that.view.scalable = false;
         this.scene.isSpaceSelectable = false;
         this.i++;
         if (this.i !== this.pageData.length) {

+ 4 - 2
src/views/model/report/index.vue

@@ -316,6 +316,7 @@ export default {
         let equipComDelList = [],
           toBeAdded = []
         this.equipComDelList = [];
+        this.equipComAddList = [];
         this.LostFloorName.forEach(item => {
           if (item.CurrentModelId) {
             equipComDelList.push({
@@ -330,6 +331,7 @@ export default {
             toBeAdded.push({
               modelId: item.Id
             })
+            this.equipComAddList.push(item.Id)
           }
         })
         let params = {
@@ -398,8 +400,8 @@ export default {
         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 } })
+        let equipComAddList = encodeURIComponent(JSON.stringify(this.equipComAddList));
+        let jumpRouter = this.$router.resolve({ path: '/model/report/supplement', query: { equipComDelList: equipComAddList } })
         window.open(jumpRouter.href, '_blank')
       },
       getExportReport() {// 导出模型问题报告

+ 35 - 45
src/views/model/report/supplement.vue

@@ -8,30 +8,29 @@
             <el-badge value="待补充" class="item" type="success"></el-badge>
           </h4>
           <h4>
-            {{ `${item.BuildingName}建筑模型` }}-{{
-              `${item.FloorName}层`
-            }}-{{ `${item.EquipLocalName ? item.EquipLocalName : item.EquipName}` }}</h4>
-          <b>标记码:<span @dblclick="copyContent" id="copy">{{ item.EquipID }}</span></b><span class="copy"
-                                                                                            @click="clickCopy">点击复制</span>
+            {{ `${item.buildingName?item.buildingName:'xx'}` }}-{{
+              `${item.floorName?item.floorName:'xx'}`
+            }}-{{ `${item.localName ? item.localName : item.name}` }}</h4>
+          <b>标记码:<span @dblclick="copyContent" id="copy">{{ item.id }}</span></b><span class="copy" @click="clickCopy">点击复制</span>
           <input id="copyContent" type="text" @dblclick="copyContent"
                  style="border:none;opacity:0;position:absolute;top:0;left:0;">
-          <p style="margin-top:30px;">建议使用的Revit族:{{ item.Res }}</p>
-          <p>设计图纸中编码:{{ item.CADID }}</p>
-          <p><span>资产族:{{ item.FamilyName.Name }}</span></p>
-          <p><span style="width:500px;">资产ID:{{ item.EquipID }}</span></p>
-          <p>现场发现人:{{ item.FindPeople }}</p>
+          <!-- <p style="margin-top:30px;">建议使用的Revit族:{{ item.Res }}</p> -->
+          <p>设计图纸中编码:{{ item.cadId || '--' }}</p>
+          <p><span>设备类型:{{ item.codeName || '--' }}</span></p>
+          <p><span style="width:500px;">设备ID:{{ item.id }}</span></p>
+          <p>现场发现人:{{ item.findPeople || '--' }}</p>
         </div>
         <div class="plan">
           <p>平面图上的位置:<span>{{ item.local | localTransformation }}</span></p>
           <div class="img-box">
             <canvas :id="'canvas'+index" :width="canvasWidth" :height="canvasHeight" ref="canvas" tabindex="0"
-                    :data-modelid="item.ModelId"
-                    :data-EquipID='item.EquipID' :data-x="item.local.X" :data-y="item.local.Y"></canvas>
+                    :data-modelid="item.modelId"
+                    :data-equipid='item.id' :data-x="item.local.X" :data-y="item.local.Y"></canvas>
           </div>
         </div>
       </div>
       <div class="content-bottom">
-        <div class="photo" v-for="(it,ind) in item.LedgerParam.PhotoDoc.Nameplate" :key="ind">
+        <div class="photo" v-for="(it,ind) in item.infos.nameplate" :key="ind">
           <p>{{ it.name }}<span>拍摄时间:{{ it.createTime | timeTransformation }}</span></p>
           <div class="img-box">
             <div class="img-content">
@@ -39,9 +38,9 @@
             </div>
           </div>
         </div>
-        <div class="photo" v-for="(photo,num) in item.LedgerParam.PhotoDoc.Pic" :key="num+photo">
-          <div class="img-box" v-if="item.LedgerParam.PhotoDoc.Pic">
-            <p v-if="item.LedgerParam.PhotoDoc.Pic && photo.type !== 'video'">
+        <div class="photo" v-for="(photo,num) in item.infos.pic" :key="num+photo">
+          <div class="img-box" v-if="item.infos.pic">
+            <p v-if="item.infos.pic && photo.type !== 'video'">
               {{ photo.name }}<span>拍摄时间:{{ photo.createTime | timeTransformation }}</span>
             </p>
             <div class="img-content" v-if="photo.type !=='video'">
@@ -94,7 +93,7 @@ export default {
       return str;
     },
     timeTransformation(time) {// 时间转换
-      return time ? time.substring(0, 16) : ''
+      return time ? time.substring(0, 16) : '--'
     }
   },
   mounted() {
@@ -152,15 +151,6 @@ export default {
     },
     getToBeSuppement() {
       let params = {
-        projectId: this.projectId,
-        cascade: [
-          {
-            "name": "equipFamily"
-          },
-          {
-            "name": "familyName"
-          }
-        ],
         filters: `modelId in ${this.equipComDelList}`,
         pageNumber: this.page.pageNumber,
         pageSize: this.page.pageSize
@@ -180,51 +170,51 @@ export default {
         }
         // this.pageData = res.Content;
         this.pageData.forEach(item => {
-          if (item.BIMLocation) {
+          if (item.bimLocation) {
             let local = {};
-            let ary = item.BIMLocation.split(',');
+            let ary = item.bimLocation.split(',');
             let localAry = ['X', 'Y', 'Z'];
             ary.forEach((item, index) => {
               local[localAry[index]] = ary[index];
             })
             item.local = local;
           }
-          if (item.ScanTaskBase && item.ScanTaskBase.length > 1) {
-            item.ScanTaskBase = item.ScanTaskBase.shift();
-          }
-          if (item.EquipFamily && item.EquipFamily.length) {
-            item.Res = '';
-            item.EquipFamily.forEach((it, index) => {
-              if (index !== item.EquipFamily.length - 1) {
-                item.Res += `${it.EquipCode + it.EquipName + ","}`;
-              } else {
-                item.Res += `${it.EquipCode + it.EquipName}`;
-              }
-            })
-          }
+        //   if (item.ScanTaskBase && item.ScanTaskBase.length > 1) {
+        //     item.ScanTaskBase = item.ScanTaskBase.shift();
+        //   }
+        //   if (item.EquipFamily && item.EquipFamily.length) {
+        //     item.Res = '';
+        //     item.EquipFamily.forEach((it, index) => {
+        //       if (index !== item.EquipFamily.length - 1) {
+        //         item.Res += `${it.EquipCode + it.EquipName + ","}`;
+        //       } else {
+        //         item.Res += `${it.EquipCode + it.EquipName}`;
+        //       }
+        //     })
+        //   }
         });
       })
     },
     getGraphy() {// 绘制空间位置图片
       let can = this.$refs.canvas;
       let that = this;
+      let modelId = can[this.i].dataset.modelid;
       that.clearGraphy(this.i)
       that.scene = new LocationPointScene();
       this.canvasLoading = true;
-      that.scene.getFloorData('/modelapi/base-graph/query', { ModelId: can[this.i].dataset.modelid }).then(res => {
+      that.scene.getFloorData('/modelapi/base-graph/query', { ModelId: modelId }).then(res => {
         that.canvasLoading = false;
         if (res == 'error') {
           this.FloorMap = '';
           console.log('数据解析异常');
           return;
         }
-        let modelID = can[this.i].dataset.modelid
-        let EquipID = can[this.i].dataset.equipid;
+        let equipId = can[this.i].dataset.equipid;
         let X = Number(can[this.i].dataset.x);
         let Y = can[this.i].dataset.y * -1;
         that.view.scene = that.scene;
         this.scene.addMarker({
-          Id: EquipID,
+          Id: equipId,
           X: X,
           Y: Y
         })

+ 70 - 99
src/views/synclog/index.vue

@@ -46,11 +46,65 @@
                     :data="data"
                     :stripe="true"
                     :maxHeight="620"
-                    @sort="handleSort"
+                    @sort-change="handleSort"
                 >
-                    <el-table-column v-for="(item, key) in columns" :key="key" :label="item.label" :width="item.width">
+                    <el-table-column label="对象id" :width="370">
                         <template slot-scope="scope">
-                            <span style="margin-left: 10px">{{ scope.row[item.prop] ? scope.row[item.prop] : "--" }}</span>
+                            <span style="margin-left: 10px">{{ scope.row.objId ? scope.row.objId : "--" }}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="时间" sortable="custom">
+                        <template slot-scope="scope">
+                            <span style="margin-left: 10px">{{ scope.row.createTime ? scope.row.createTime : "--" }}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="名称" :width="120">
+                        <template slot-scope="scope">
+                            <span style="margin-left: 10px">{{ scope.row.name ? scope.row.name : "--" }}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="本地名称" :width="120">
+                        <template slot-scope="scope">
+                            <span style="margin-left: 10px">{{ scope.row.localName ? scope.row.localName : "--" }}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="本地编码" :width="120">
+                        <template slot-scope="scope">
+                            <span style="margin-left: 10px">{{ scope.row.localId ? scope.row.localId : "--" }}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="对象类型">
+                        <template slot-scope="scope">
+                            <span style="margin-left: 10px">{{ scope.row.objName ? scope.row.objName : "--" }}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="操作类型">
+                        <template slot-scope="scope">
+                            <span style="margin-left: 10px">{{ typeObj[scope.row.type] ? typeObj[scope.row.type] : "--" }}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="对象分类">
+                        <template slot-scope="scope">
+                            <span style="margin-left: 10px">
+                                {{
+                                    scope.row.classCode && scope.row.classCodeName
+                                        ? `${scope.row.classCodeName} - ${scope.row.classCode}`
+                                        : scope.row.classCode
+                                        ? scope.row.classCode
+                                        : "--"
+                                }}
+                            </span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="报错信息">
+                        <template slot-scope="scope">
+                            <span style="margin-left: 10px">{{ scope.row.error ? scope.row.error : "--" }}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column fixed="right" label="操作" width="180">
+                        <template slot-scope="scope">
+                            <el-button @click.native.prevent="queryRecordSyn(scope.row)"> 重新同步 </el-button>
+                            <el-button @click.native.prevent="hideMsg(scope.row)"> 忽略 </el-button>
                         </template>
                     </el-table-column>
                 </el-table>
@@ -84,100 +138,11 @@ import {
     queryRecordSyn,
     queryRecordUpdata,
 } from "@/api/synclog";
-// 操作符类型
-const tyleObj = {
-    create: "创建",
-    update: "修改",
-    delete: "删除",
-};
 export default {
     data() {
         return {
             groupCode: "", //集团id
             isShowTable: false, //是否显示table
-            columns: [
-                {
-                    label: "对象id",
-                    prop: "objId",
-                    width: 370,
-                },
-                {
-                    label: "时间",
-                    prop: "createTime",
-                    sortable: "custom",
-                },
-                {
-                    label: "名称",
-                    prop: "name",
-                    width: 120,
-                },
-                {
-                    label: "本地名称",
-                    prop: "localName",
-                    width: 120,
-                },
-
-                {
-                    label: "本地编码",
-                    prop: "localId",
-                    width: 120,
-                },
-                {
-                    label: "对象类型",
-                    prop: "objName",
-                },
-                {
-                    label: "操作类型",
-                    prop: "type",
-                    // render: (obj, a) => {
-                    //   return tyleObj[obj.type];
-                    // },
-                },
-                {
-                    label: "对象分类",
-                    prop: "classCode",
-                    // render: (obj) => {
-                    //   return obj.classCode && obj.classCodeName
-                    //     ? obj.classCodeName + "-" + obj.classCode
-                    //     : obj.classCode
-                    //     ? obj.classCode
-                    //     : "--";
-                    // },
-                },
-                {
-                    label: "报错信息",
-                    prop: "error",
-                    // render: (obj) => {
-                    //   return obj.error ? obj.error : "--";
-                    // },
-                },
-                // {
-                //   label: "操作",
-                //   prop: "zip",
-                //   fixed: "right",
-                //   width: 160,
-                //   render: (obj) => {
-                //     return (
-                //       <span>
-                //         <Button
-                //           type="text"
-                //           @click="queryRecordSyn"
-                //           size="small"
-                //         >
-                //           重新同步
-                //         </Button>
-                //         <Button
-                //           type="text"
-                //           size="small"
-                //           @click="hideMsg"
-                //         >
-                //           隐藏
-                //         </Button>
-                //       </span>
-                //     );
-                //   },
-                // },
-            ],
             data: [],
             objClassify: [],
             //对象类型
@@ -211,6 +176,11 @@ export default {
                     label: "竖井",
                 },
             ],
+            typeObj: { // 操作符类型
+                create: "创建",
+                update: "修改",
+                delete: "删除",
+            },
             //操作下拉框
             operation: [
                 {
@@ -329,7 +299,8 @@ export default {
         // 对象类型发生变化
         objTypeChange(val) {
             this.objTypeValue = val;
-            if (val == "equipment" || val == "space" || val == "system") {
+            this.objClassifyValue = "";
+            if (val == "equipment" || val == "space" || val == "system" || val == "component") {
                 this.getObjTypeList();
             } else {
                 this.objClassify = [];
@@ -394,7 +365,7 @@ export default {
             this[key] = value;
             // this.forceUpdate();
         },
-        // 隐藏该条信息
+        // 忽略该条信息
         hideMsg(res) {
             const data = {
                 content: [
@@ -410,7 +381,7 @@ export default {
                 if (res.result == "success")
                     this.$message({
                         showClose: true,
-                        message: "隐藏完成",
+                        message: "忽略完成",
                         type: "success",
                         duration: 3000,
                     });
@@ -418,7 +389,7 @@ export default {
             }, () => {
                 this.$message({
                     showClose: true,
-                    message: "隐藏失败,请重新同步或联系管理人员!",
+                    message: "忽略失败,请重新同步或联系管理人员!",
                     type: "error",
                     duration: 3000,
                 });
@@ -470,10 +441,10 @@ export default {
         },
         // 时间排序
         handleSort(data) {
-            if (data.order == "ascending") {
-                this.order = "lastUpdate asc, objId asc";
-            } else {
+            if (data.order == "descending") {
                 this.order = "lastUpdate desc, objId desc";
+            } else {
+                this.order = "lastUpdate asc, objId asc";
             }
             this.getTable();
         },