1 |
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/cadDrawingManage/index.vue?0f91","webpack:///./src/components/old-adm/ledger/system/index.vue?2e47","webpack:///./src/components/old-adm/ledger/components/lib/bimDialog.vue?ba7a","webpack:///./src/components/old-adm/ledger/components/lib/uploadImgsName.vue?9984","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionImage.vue?87d1","webpack:///./src/components/old-adm/ledger/components/lib/uploadImgs.vue?79cd","webpack:///./src/components/old-adm/dialogs/list/systemType.vue?141d","webpack:///./src/components/systemGraph/addGraph.vue?d008","webpack:///./src/components/systemGraph/index.vue?d173","webpack:///./src/components/old-adm/ready/buildfloor/repetitionGraphy.vue?287d","webpack:///./src/components/project-manage/components/title.vue?449e","webpack:///./src/components/old-adm/business_space/lib/qrcode.vue?532b","webpack:///./src/components/old-adm/ledger/components/lib/myPagination.vue?a589","webpack:///./src/utils/http/httpUtils.ts","webpack:///./src/utils/scanUtil.ts","webpack:///./src/components/old-adm/ledger/components/details/detail/lookImage.vue?caa0","webpack:///./src/components/old-adm/dialogs/changeRea.vue?1617","webpack:///./src/components/old-adm/ledger/components/details/detail/lookFile.vue?0b97","webpack:///./src/controller/old-adm/relationController.ts","webpack:///./src/controller/old-adm/buildController.ts","webpack:///./src/components/systemGraph/edit.vue?eab0","webpack:///./src/components/old-adm/ledger/components/tableTransfers.vue?5cf3","webpack:///./src/Main.vue?6d08","webpack:///./src/components/old-adm/ledger/components/lib/system.vue?c2a9","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionCrux.vue?095d","webpack:///./src/components/old-adm/ledger/components/lib/bimDialog.vue?dcdd","webpack:///./src/components/old-adm/ledger/components/handsontables/system.vue?c602","webpack:///./src/store/modules/uploadFile.ts","webpack:///./src/store/index.js","webpack:///./src/controller/old-adm/equipController.ts","webpack:///./src/controller/old-adm/fileController.ts","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/utils/http/customHttpUtils.ts","webpack:///./src/components/frame/leftMenu.vue?808b","webpack:///./src/components/project-manage/components/geo.vue?264a","webpack:///./src/components/project-manage/components/basic.vue?d270","webpack:///./src/App.vue?b6be","webpack:///src/App.vue","webpack:///./src/App.vue?4c4f","webpack:///./src/App.vue","webpack:///./src/Main.vue?449a","webpack:///./src/components/frame/pageLeft.vue?5f22","webpack:///./src/components/frame/leftMenu.vue?1555","webpack:///src/components/frame/leftMenu.vue","webpack:///./src/components/frame/leftMenu.vue?dfa7","webpack:///./src/components/frame/leftMenu.vue","webpack:///src/components/frame/pageLeft.vue","webpack:///./src/components/frame/pageLeft.vue?c6e5","webpack:///./src/components/frame/pageLeft.vue","webpack:///./src/components/frame/pageRight.vue?ba2a","webpack:///./src/components/uploadFile/index.vue?32d4","webpack:///src/components/uploadFile/index.vue","webpack:///./src/components/uploadFile/index.vue?d5ec","webpack:///./src/components/uploadFile/index.vue","webpack:///src/components/frame/pageRight.vue","webpack:///./src/components/frame/pageRight.vue?79a3","webpack:///./src/components/frame/pageRight.vue","webpack:///src/Main.vue","webpack:///./src/Main.vue?7f2f","webpack:///./src/Main.vue","webpack:///./src/components/frame/login.vue?3bc0","webpack:///src/components/frame/login.vue","webpack:///./src/components/frame/login.vue?facd","webpack:///./src/components/frame/login.vue","webpack:///./src/components/systemGraph/index.vue?5c2f","webpack:///src/components/systemGraph/index.vue","webpack:///./src/components/systemGraph/index.vue?9dab","webpack:///./src/components/systemGraph/index.vue","webpack:///./src/components/systemGraph/edit.vue?6278","webpack:///./src/components/systemGraph/addGraph.vue?1858","webpack:///src/components/systemGraph/addGraph.vue","webpack:///./src/components/systemGraph/addGraph.vue?12fe","webpack:///./src/components/systemGraph/addGraph.vue","webpack:///./src/components/systemGraph/graph.vue?c953","webpack:///src/components/systemGraph/graph.vue","webpack:///./src/components/systemGraph/graph.vue?a478","webpack:///./src/components/systemGraph/graph.vue","webpack:///src/components/systemGraph/edit.vue","webpack:///./src/components/systemGraph/edit.vue?ed30","webpack:///./src/components/systemGraph/edit.vue","webpack:///./src/components/old-adm/ledger/facility/index.vue?445a","webpack:///./src/components/old-adm/ledger/components/lib/title.vue?a574","webpack:///src/components/old-adm/ledger/components/lib/title.vue","webpack:///./src/components/old-adm/ledger/components/lib/title.vue?593e","webpack:///./src/components/old-adm/ledger/components/lib/title.vue","webpack:///./src/components/old-adm/ledger/components/lib/floorCascader.vue?c06d","webpack:///src/components/old-adm/ledger/components/lib/floorCascader.vue","webpack:///./src/components/old-adm/ledger/components/lib/floorCascader.vue?9f0c","webpack:///./src/components/old-adm/ledger/components/lib/floorCascader.vue","webpack:///./src/components/old-adm/ledger/components/lib/equipCascader.vue?eb8a","webpack:///src/components/old-adm/ledger/components/lib/equipCascader.vue","webpack:///./src/components/old-adm/ledger/components/lib/equipCascader.vue?fef2","webpack:///./src/components/old-adm/ledger/components/lib/equipCascader.vue","webpack:///./src/components/old-adm/ledger/components/handsontables/device.vue?cd95","webpack:///./src/utils/old-adm/hasontableUtils.js","webpack:///./src/utils/old-adm/handsontable/mainText.js","webpack:///./src/utils/old-adm/handsontable/fillterField.js","webpack:///./src/utils/old-adm/handsontable/dataTypeMap.js","webpack:///./src/utils/old-adm/handsontable/notShow.js","webpack:///./src/components/old-adm/ledger/components/lib/cascader.vue?e929","webpack:///src/components/old-adm/ledger/components/lib/cascader.vue","webpack:///./src/components/old-adm/ledger/components/lib/cascader.vue?01b2","webpack:///./src/components/old-adm/ledger/components/lib/cascader.vue","webpack:///./src/components/old-adm/ledger/components/lib/qrcode.vue?d3ff","webpack:///src/components/old-adm/ledger/components/lib/qrcode.vue","webpack:///./src/components/old-adm/ledger/components/lib/qrcode.vue?ed28","webpack:///./src/components/old-adm/ledger/components/lib/qrcode.vue","webpack:///./src/components/old-adm/ledger/components/lib/bimDialog.vue?3d1e","webpack:///./src/components/old-adm/ledger/components/lib/noAllDataFloor.vue?914c","webpack:///src/components/old-adm/ledger/components/lib/noAllDataFloor.vue","webpack:///./src/components/old-adm/ledger/components/lib/noAllDataFloor.vue?819b","webpack:///./src/components/old-adm/ledger/components/lib/noAllDataFloor.vue","webpack:///src/components/old-adm/ledger/components/lib/bimDialog.vue","webpack:///./src/components/old-adm/ledger/components/lib/bimDialog.vue?67d3","webpack:///./src/components/old-adm/ledger/components/lib/bimDialog.vue","webpack:///./src/components/old-adm/dialogs/list/filesDialog.vue?51ed","webpack:///./src/components/old-adm/ledger/components/lib/uploadFiles.vue?a04b","webpack:///src/components/old-adm/ledger/components/lib/uploadFiles.vue","webpack:///./src/components/old-adm/ledger/components/lib/uploadFiles.vue?540f","webpack:///./src/components/old-adm/ledger/components/lib/uploadFiles.vue","webpack:///src/components/old-adm/dialogs/list/filesDialog.vue","webpack:///./src/components/old-adm/dialogs/list/filesDialog.vue?c06d","webpack:///./src/components/old-adm/dialogs/list/filesDialog.vue","webpack:///./src/components/old-adm/dialogs/list/uploadImgDialog.vue?e89f","webpack:///./src/components/old-adm/ledger/components/lib/uploadImgs.vue?2840","webpack:///./src/components/old-adm/business_space/lib/detailsDia.vue?43c2","webpack:///src/components/old-adm/business_space/lib/detailsDia.vue","webpack:///./src/components/old-adm/business_space/lib/detailsDia.vue?0487","webpack:///./src/components/old-adm/business_space/lib/detailsDia.vue","webpack:///src/components/old-adm/ledger/components/lib/uploadImgs.vue","webpack:///./src/components/old-adm/ledger/components/lib/uploadImgs.vue?0648","webpack:///./src/components/old-adm/ledger/components/lib/uploadImgs.vue","webpack:///src/components/old-adm/dialogs/list/uploadImgDialog.vue","webpack:///./src/components/old-adm/dialogs/list/uploadImgDialog.vue?e693","webpack:///./src/components/old-adm/dialogs/list/uploadImgDialog.vue","webpack:///./src/components/old-adm/dialogs/list/picDialog.vue?db31","webpack:///./src/components/old-adm/ledger/components/lib/uploadImgsName.vue?f314","webpack:///./src/components/old-adm/business_space/lib/formInput.vue?9e7f","webpack:///src/components/old-adm/business_space/lib/formInput.vue","webpack:///./src/components/old-adm/business_space/lib/formInput.vue?d5eb","webpack:///./src/components/old-adm/business_space/lib/formInput.vue","webpack:///src/components/old-adm/ledger/components/lib/uploadImgsName.vue","webpack:///./src/components/old-adm/ledger/components/lib/uploadImgsName.vue?0590","webpack:///./src/components/old-adm/ledger/components/lib/uploadImgsName.vue","webpack:///src/components/old-adm/dialogs/list/picDialog.vue","webpack:///./src/components/old-adm/dialogs/list/picDialog.vue?9b22","webpack:///./src/components/old-adm/dialogs/list/picDialog.vue","webpack:///./src/components/old-adm/dialogs/list/menum.vue?f153","webpack:///src/components/old-adm/dialogs/list/menum.vue","webpack:///./src/components/old-adm/dialogs/list/menum.vue?ea55","webpack:///./src/components/old-adm/dialogs/list/menum.vue","webpack:///./src/components/old-adm/dialogs/list/batchDialog.vue?4b5d","webpack:///./src/components/old-adm/ledger/components/lib/myPagination.vue?e4a8","webpack:///src/components/old-adm/ledger/components/lib/myPagination.vue","webpack:///./src/components/old-adm/ledger/components/lib/myPagination.vue?2653","webpack:///./src/components/old-adm/ledger/components/lib/myPagination.vue","webpack:///src/components/old-adm/dialogs/list/batchDialog.vue","webpack:///./src/components/old-adm/dialogs/list/batchDialog.vue?da69","webpack:///./src/components/old-adm/dialogs/list/batchDialog.vue","webpack:///./src/components/old-adm/dialogs/list/systemType.vue?9137","webpack:///src/components/old-adm/dialogs/list/systemType.vue","webpack:///./src/components/old-adm/dialogs/list/systemType.vue?a1af","webpack:///./src/components/old-adm/dialogs/list/systemType.vue","webpack:///./src/components/old-adm/ledger/components/lib/detailsDia.vue?773c","webpack:///src/components/old-adm/ledger/components/lib/detailsDia.vue","webpack:///./src/components/old-adm/ledger/components/lib/detailsDia.vue?6cd6","webpack:///./src/components/old-adm/ledger/components/lib/detailsDia.vue","webpack:///./src/components/old-adm/dialogs/changeRea.vue?605f","webpack:///src/components/old-adm/dialogs/changeRea.vue","webpack:///./src/components/old-adm/dialogs/changeRea.vue?fe43","webpack:///./src/components/old-adm/dialogs/changeRea.vue","webpack:///./src/components/old-adm/ledger/components/lib/lookImages.vue?fafb","webpack:///src/components/old-adm/ledger/components/lib/lookImages.vue","webpack:///./src/components/old-adm/ledger/components/lib/lookImages.vue?3af6","webpack:///./src/components/old-adm/ledger/components/lib/lookImages.vue","webpack:///src/components/old-adm/ledger/components/handsontables/device.vue","webpack:///./src/components/old-adm/ledger/components/handsontables/device.vue?e4a5","webpack:///./src/components/old-adm/ledger/components/handsontables/device.vue","webpack:///./src/components/old-adm/ledger/components/lib/linkassets.vue?6519","webpack:///src/components/old-adm/ledger/components/lib/linkassets.vue","webpack:///./src/components/old-adm/ledger/components/lib/linkassets.vue?01cb","webpack:///./src/components/old-adm/ledger/components/lib/linkassets.vue","webpack:///./src/components/old-adm/ledger/components/lib/dynamicDialog.vue?199d","webpack:///src/components/old-adm/ledger/components/lib/dynamicDialog.vue","webpack:///./src/components/old-adm/ledger/components/lib/dynamicDialog.vue?94a7","webpack:///./src/components/old-adm/ledger/components/lib/dynamicDialog.vue","webpack:///./src/components/old-adm/ledger/components/lib/staticDialog.vue?bf9a","webpack:///src/components/old-adm/ledger/components/lib/staticDialog.vue","webpack:///./src/components/old-adm/ledger/components/lib/staticDialog.vue?3a11","webpack:///./src/components/old-adm/ledger/components/lib/staticDialog.vue","webpack:///src/components/old-adm/ledger/facility/index.vue","webpack:///./src/components/old-adm/ledger/facility/index.vue?9124","webpack:///./src/components/old-adm/ledger/facility/index.vue","webpack:///./src/components/old-adm/ledger/facility/details/index.vue?a502","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionBaseInformation.vue?413d","webpack:///src/components/old-adm/ledger/components/details/detail/exhibitionBaseInformation.vue","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionBaseInformation.vue?4ffd","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionBaseInformation.vue","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionFile.vue?b22e","webpack:///./src/components/old-adm/ledger/components/details/detail/lookFile.vue?8cc4","webpack:///src/components/old-adm/ledger/components/details/detail/lookFile.vue","webpack:///./src/components/old-adm/ledger/components/details/detail/lookFile.vue?7d1e","webpack:///./src/components/old-adm/ledger/components/details/detail/lookFile.vue","webpack:///src/components/old-adm/ledger/components/details/detail/exhibitionFile.vue","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionFile.vue?777e","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionFile.vue","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionImage.vue?78d0","webpack:///./src/components/old-adm/ledger/components/details/detail/lookImage.vue?4122","webpack:///src/components/old-adm/ledger/components/details/detail/lookImage.vue","webpack:///./src/components/old-adm/ledger/components/details/detail/lookImage.vue?c740","webpack:///./src/components/old-adm/ledger/components/details/detail/lookImage.vue","webpack:///src/components/old-adm/ledger/components/details/detail/exhibitionImage.vue","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionImage.vue?1633","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionImage.vue","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionVideo.vue?b317","webpack:///./src/components/old-adm/ledger/components/details/detail/lookVideo.vue?2144","webpack:///src/components/old-adm/ledger/components/details/detail/lookVideo.vue","webpack:///./src/components/old-adm/ledger/components/details/detail/lookVideo.vue?b242","webpack:///./src/components/old-adm/ledger/components/details/detail/lookVideo.vue","webpack:///src/components/old-adm/ledger/components/details/detail/exhibitionVideo.vue","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionVideo.vue?c366","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionVideo.vue","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionCrux.vue?fb35","webpack:///./src/components/old-adm/ledger/components/details/detail/cruxDialog.vue?5286","webpack:///src/components/old-adm/ledger/components/details/detail/cruxDialog.vue","webpack:///./src/components/old-adm/ledger/components/details/detail/cruxDialog.vue?af26","webpack:///./src/components/old-adm/ledger/components/details/detail/cruxDialog.vue","webpack:///src/components/old-adm/ledger/components/details/detail/exhibitionCrux.vue","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionCrux.vue?0757","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionCrux.vue","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionEnergy.vue?7656","webpack:///src/components/old-adm/ledger/components/details/detail/exhibitionEnergy.vue","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionEnergy.vue?01c8","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionEnergy.vue","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionMaintain.vue?1598","webpack:///src/components/old-adm/ledger/components/details/detail/exhibitionMaintain.vue","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionMaintain.vue?3c7d","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionMaintain.vue","webpack:///./src/components/old-adm/ledger/components/details/detail/selectRadio.vue?18ec","webpack:///src/components/old-adm/ledger/components/details/detail/selectRadio.vue","webpack:///./src/components/old-adm/ledger/components/details/detail/selectRadio.vue?087e","webpack:///./src/components/old-adm/ledger/components/details/detail/selectRadio.vue","webpack:///src/components/old-adm/ledger/facility/details/index.vue","webpack:///./src/components/old-adm/ledger/facility/details/index.vue?4cb4","webpack:///./src/components/old-adm/ledger/facility/details/index.vue","webpack:///./src/components/old-adm/ledger/system/index.vue?dfee","webpack:///./src/components/old-adm/ledger/components/lib/system.vue?69b0","webpack:///src/components/old-adm/ledger/components/lib/system.vue","webpack:///./src/components/old-adm/ledger/components/lib/system.vue?f232","webpack:///./src/components/old-adm/ledger/components/lib/system.vue","webpack:///./src/components/old-adm/ledger/components/handsontables/system.vue?7785","webpack:///./src/utils/old-adm/scan/hasontableUtils.js","webpack:///./src/components/old-adm/business_space/lib/qrcode.vue?b3d9","webpack:///src/components/old-adm/business_space/lib/qrcode.vue","webpack:///./src/components/old-adm/business_space/lib/qrcode.vue?c8de","webpack:///./src/components/old-adm/business_space/lib/qrcode.vue","webpack:///./src/components/old-adm/business_space/dialogs/list/picDialog.vue?6704","webpack:///./src/components/old-adm/business_space/lib/uploadImgsName.vue?643f","webpack:///src/components/old-adm/business_space/lib/uploadImgsName.vue","webpack:///./src/components/old-adm/business_space/lib/uploadImgsName.vue?2fa6","webpack:///./src/components/old-adm/business_space/lib/uploadImgsName.vue","webpack:///src/components/old-adm/business_space/dialogs/list/picDialog.vue","webpack:///./src/components/old-adm/business_space/dialogs/list/picDialog.vue?9240","webpack:///./src/components/old-adm/business_space/dialogs/list/picDialog.vue","webpack:///./src/components/old-adm/common/myPagination.vue?c86a","webpack:///src/components/old-adm/common/myPagination.vue","webpack:///./src/components/old-adm/common/myPagination.vue?ea5e","webpack:///./src/components/old-adm/common/myPagination.vue","webpack:///./src/components/old-adm/ledger/components/tableTransfers.vue?d4db","webpack:///src/components/old-adm/ledger/components/tableTransfers.vue","webpack:///./src/components/old-adm/ledger/components/tableTransfers.vue?4637","webpack:///./src/components/old-adm/ledger/components/tableTransfers.vue","webpack:///./src/components/old-adm/ledger/components/lib/editSysFloor.vue?c2f7","webpack:///./src/components/old-adm/ledger/components/lib/buildfloorCascader.vue?74c0","webpack:///src/components/old-adm/ledger/components/lib/buildfloorCascader.vue","webpack:///./src/components/old-adm/ledger/components/lib/buildfloorCascader.vue?a728","webpack:///./src/components/old-adm/ledger/components/lib/buildfloorCascader.vue","webpack:///src/components/old-adm/ledger/components/lib/editSysFloor.vue","webpack:///./src/components/old-adm/ledger/components/lib/editSysFloor.vue?5a70","webpack:///./src/components/old-adm/ledger/components/lib/editSysFloor.vue","webpack:///src/components/old-adm/ledger/components/handsontables/system.vue","webpack:///./src/components/old-adm/ledger/components/handsontables/system.vue?613e","webpack:///./src/components/old-adm/ledger/components/handsontables/system.vue","webpack:///src/components/old-adm/ledger/system/index.vue","webpack:///./src/components/old-adm/ledger/system/index.vue?a17f","webpack:///./src/components/old-adm/ledger/system/index.vue","webpack:///./src/components/old-adm/ledger/facility/batchPoint.vue?18bd","webpack:///src/components/old-adm/ledger/facility/batchPoint.vue","webpack:///./src/components/old-adm/ledger/facility/batchPoint.vue?b394","webpack:///./src/components/old-adm/ledger/facility/batchPoint.vue","webpack:///./src/components/old-adm/ready/buildfloor/index.vue?6b23","webpack:///./src/components/old-adm/ready/buildfloor/addFloor/index.vue?021e","webpack:///./src/components/old-adm/ready/components/formItems.vue?fec6","webpack:///src/components/old-adm/ready/components/formItems.vue","webpack:///./src/components/old-adm/ready/components/formItems.vue?4500","webpack:///./src/components/old-adm/ready/components/formItems.vue","webpack:///./src/utils/old-adm/buildfloor/tools.js","webpack:///src/components/old-adm/ready/buildfloor/addFloor/index.vue","webpack:///./src/components/old-adm/ready/buildfloor/addFloor/index.vue?f6ba","webpack:///./src/components/old-adm/ready/buildfloor/addFloor/index.vue","webpack:///./src/components/old-adm/ready/components/addBuild.vue?0c01","webpack:///./src/components/old-adm/business_space/lib/uploadFiles.vue?5b4f","webpack:///src/components/old-adm/business_space/lib/uploadFiles.vue","webpack:///./src/components/old-adm/business_space/lib/uploadFiles.vue?e9e1","webpack:///./src/components/old-adm/business_space/lib/uploadFiles.vue","webpack:///src/components/old-adm/ready/components/addBuild.vue","webpack:///./src/components/old-adm/ready/components/addBuild.vue?a7a4","webpack:///./src/components/old-adm/ready/components/addBuild.vue","webpack:///./src/components/old-adm/ready/components/addConnectivity.vue?6768","webpack:///./src/components/old-adm/ready/components/buildfloorCascader.vue?0982","webpack:///src/components/old-adm/ready/components/buildfloorCascader.vue","webpack:///./src/components/old-adm/ready/components/buildfloorCascader.vue?e17e","webpack:///./src/components/old-adm/ready/components/buildfloorCascader.vue","webpack:///src/components/old-adm/ready/components/addConnectivity.vue","webpack:///./src/components/old-adm/ready/components/addConnectivity.vue?31fa","webpack:///./src/components/old-adm/ready/components/addConnectivity.vue","webpack:///src/components/old-adm/ready/buildfloor/index.vue","webpack:///./src/components/old-adm/ready/buildfloor/index.vue?c6ad","webpack:///./src/components/old-adm/ready/buildfloor/index.vue","webpack:///./src/components/old-adm/ready/buildfloor/repetitionGraphy.vue?3ac6","webpack:///./src/components/old-adm/ready/buildfloor/drawGraphy/drawFloor.vue?2a6a","webpack:///./src/components/old-adm/business_space/newGraphy/canvasFun.vue?e8a0","webpack:///src/components/old-adm/business_space/newGraphy/canvasFun.vue","webpack:///./src/components/old-adm/business_space/newGraphy/canvasFun.vue?32cb","webpack:///./src/components/old-adm/business_space/newGraphy/canvasFun.vue","webpack:///src/components/old-adm/ready/buildfloor/drawGraphy/drawFloor.vue","webpack:///./src/components/old-adm/ready/buildfloor/drawGraphy/drawFloor.vue?71ee","webpack:///./src/components/old-adm/ready/buildfloor/drawGraphy/drawFloor.vue","webpack:///./src/components/old-adm/ready/buildfloor/drawGraphy/checkGraphy.vue?e8b2","webpack:///src/components/old-adm/ready/buildfloor/drawGraphy/checkGraphy.vue","webpack:///./src/components/old-adm/ready/buildfloor/drawGraphy/checkGraphy.vue?774a","webpack:///./src/components/old-adm/ready/buildfloor/drawGraphy/checkGraphy.vue","webpack:///./src/components/old-adm/ready/components/setScaleDialog.vue?d380","webpack:///src/components/old-adm/ready/components/setScaleDialog.vue","webpack:///./src/components/old-adm/ready/components/setScaleDialog.vue?ccd2","webpack:///./src/components/old-adm/ready/components/setScaleDialog.vue","webpack:///./src/components/old-adm/ready/components/backTips.vue?27e1","webpack:///src/components/old-adm/ready/components/backTips.vue","webpack:///./src/components/old-adm/ready/components/backTips.vue?4c14","webpack:///./src/components/old-adm/ready/components/backTips.vue","webpack:///src/components/old-adm/ready/buildfloor/repetitionGraphy.vue","webpack:///./src/components/old-adm/ready/buildfloor/repetitionGraphy.vue?9096","webpack:///./src/components/old-adm/ready/buildfloor/repetitionGraphy.vue","webpack:///./src/components/old-adm/relation/overview/index.vue?49d6","webpack:///./src/components/old-adm/relation/components/overview/CardList.vue?9bc7","webpack:///./src/components/old-adm/relation/components/overview/Modal/RelationMaintain.vue?8d33","webpack:///./src/data/old-adm/deviceList.js","webpack:///src/components/old-adm/relation/components/overview/Modal/RelationMaintain.vue","webpack:///./src/components/old-adm/relation/components/overview/Modal/RelationMaintain.vue?97d0","webpack:///./src/components/old-adm/relation/components/overview/Modal/RelationMaintain.vue","webpack:///src/components/old-adm/relation/components/overview/CardList.vue","webpack:///./src/components/old-adm/relation/components/overview/CardList.vue?1c39","webpack:///./src/components/old-adm/relation/components/overview/CardList.vue","webpack:///src/components/old-adm/relation/overview/index.vue","webpack:///./src/components/old-adm/relation/overview/index.vue?ce46","webpack:///./src/components/old-adm/relation/overview/index.vue","webpack:///./src/components/cadDrawingManage/index.vue?90d3","webpack:///./src/data/cadConst.js","webpack:///src/components/cadDrawingManage/index.vue","webpack:///./src/components/cadDrawingManage/index.vue?bba2","webpack:///./src/components/cadDrawingManage/index.vue","webpack:///./src/components/project-manage/index.vue?8a1c","webpack:///./src/components/project-manage/components/anchor.vue?f98a","webpack:///src/components/project-manage/components/anchor.vue","webpack:///./src/components/project-manage/components/anchor.vue?4d70","webpack:///./src/components/project-manage/components/anchor.vue","webpack:///./src/components/project-manage/components/basic.vue?a80a","webpack:///./src/components/project-manage/components/title.vue?8886","webpack:///src/components/project-manage/components/title.vue","webpack:///./src/components/project-manage/components/title.vue?6e3a","webpack:///./src/components/project-manage/components/title.vue","webpack:///src/components/project-manage/components/basic.vue","webpack:///./src/components/project-manage/components/basic.vue?b619","webpack:///./src/components/project-manage/components/basic.vue","webpack:///./src/components/project-manage/components/geo.vue?4bcf","webpack:///./src/components/project-manage/components/formItem.vue?050a","webpack:///src/components/project-manage/components/formItem.vue","webpack:///./src/components/project-manage/components/formItem.vue?0aa9","webpack:///./src/components/project-manage/components/formItem.vue","webpack:///src/components/project-manage/components/geo.vue","webpack:///./src/components/project-manage/components/geo.vue?143c","webpack:///./src/components/project-manage/components/geo.vue","webpack:///./src/components/project-manage/components/project.vue?5155","webpack:///src/components/project-manage/components/project.vue","webpack:///./src/components/project-manage/components/project.vue?c309","webpack:///./src/components/project-manage/components/project.vue","webpack:///./src/components/project-manage/components/business.vue?84e0","webpack:///src/components/project-manage/components/business.vue","webpack:///./src/components/project-manage/components/business.vue?9600","webpack:///./src/components/project-manage/components/business.vue","webpack:///src/components/project-manage/index.vue","webpack:///./src/components/project-manage/index.vue?0a11","webpack:///./src/components/project-manage/index.vue","webpack:///./src/router/system.js","webpack:///./src/router/index.js","webpack:///./src/meri.js","webpack:///./src/main.js","webpack:///./src/controller/old-adm/ScanController.ts","webpack:///./src/components/old-adm/ledger/components/lib/qrcode.vue?bfb0","webpack:///./src/components/old-adm/ready/buildfloor/index.vue?5c99","webpack:///./src/components/old-adm/ready/buildfloor/drawGraphy/drawFloor.vue?b782","webpack:///./src/components/old-adm/ledger/components/lib/dynamicDialog.vue?97b6","webpack:///./src/components/old-adm/business_space/newGraphy/canvasFun.vue?7b74","webpack:///./src/components/project-manage/components/formItem.vue?a3b9","webpack:///./src/components/old-adm/ready/components/buildfloorCascader.vue?6ccc","webpack:///./src/components/old-adm/ledger/components/lib/cascader.vue?1a41","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionVideo.vue?da72","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionBaseInformation.vue?950d","webpack:///./src/components/old-adm/ledger/facility/batchPoint.vue?448e","webpack:///./src/components/old-adm/ledger/components/lib/editSysFloor.vue?3363","webpack:///./src/components/project-manage/index.vue?a68d","webpack:///./src/components/old-adm/ledger/components/lib/floorCascader.vue?23df","webpack:///./src/components/old-adm/relation/components/overview/Modal/RelationMaintain.vue?a2cb","webpack:///./src/controller/cadDarwingController.ts","webpack:///./src/utils/old-adm/localStorage.js","webpack:///./src/components/old-adm/ledger/components/handsontables/system.vue?3151","webpack:///./src/components/old-adm/business_space/lib/uploadImgsName.vue?64e0","webpack:///./src/store/modules/layout.ts","webpack:///./src/components/old-adm/ledger/components/details/detail/lookVideo.vue?7983","webpack:///./src/utils/storageUtil.ts","webpack:///./src/components/old-adm/ledger/components/details/detail/selectRadio.vue?5661","webpack:///./src/assets/images/login_bg.png","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionFile.vue?8f85","webpack:///./src/components/old-adm/relation/components/overview/CardList.vue?c12d","webpack:///./src/controller/systemGraph/graphStateEnum.ts","webpack:///./src/components/old-adm/ready/buildfloor/drawGraphy/checkGraphy.vue?3a91","webpack:///./src/components/old-adm/ready/buildfloor/addFloor/index.vue?a5fe","webpack:///./src/components/old-adm/ledger/components/lib/linkassets.vue?c17f","webpack:///./src/assets/images/logo.png","webpack:///./src/components/uploadFile/index.vue?a0bf","webpack:///./src/components/old-adm/ledger/components/lib/floorCascader.vue?8183","webpack:///./src/controller/old-adm/floorController.ts","webpack:///./node_modules/handsontable-pro/node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/components/old-adm/ready/components/formItems.vue?cac3","webpack:///./src/components/old-adm/dialogs/list/batchDialog.vue?d658","webpack:///./src/components/old-adm/ledger/components/lib/noAllDataFloor.vue?b4e8","webpack:///./src/components/old-adm/ledger/components/lib/equipCascader.vue?4e16","webpack:///./src/components/old-adm/ledger/facility/details/index.vue?ca22","webpack:///./src/components/old-adm/ledger/components/handsontables/device.vue?ada2","webpack:///./src/components/old-adm/ledger/facility/index.vue?94a6","webpack:///./src/components/old-adm/ledger/components/lib/noAllDataFloor.vue?4e4a","webpack:///./src/components/systemGraph/graph.vue?13fa","webpack:///./src/controller/userController.ts","webpack:///./src/utils/http/axiosUtils.ts","webpack:///./src/controller/systemGraph/sysGraphController.ts","webpack:///./src/components/old-adm/ledger/components/lib/uploadFiles.vue?4a99","webpack:///./src/controller/old-adm/dicController.ts","webpack:///./src/components/old-adm/ledger/components/lib/equipCascader.vue?5341","webpack:///./src/components/old-adm/ledger/components/details/detail/cruxDialog.vue?54d8","webpack:///./src/components/old-adm/business_space/lib/uploadFiles.vue?98c8","webpack:///./src/components/old-adm/ready/components/addBuild.vue?b74b","webpack:///./src/components/old-adm/business_space/lib/detailsDia.vue?25e8","webpack:///./src/utils/toolUtils.ts","webpack:///./src/components/old-adm/ledger/components/handsontables/device.vue?7d2b","webpack:///./src/components/old-adm/ledger/components/lib/staticDialog.vue?2350","webpack:///./src/components/old-adm/ledger/components/lib/buildfloorCascader.vue?6146","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionEnergy.vue?a652","webpack:///./src/components/old-adm/ready/components/addConnectivity.vue?c0d2","webpack:///./src/components/old-adm/ledger/components/details/detail/exhibitionMaintain.vue?1499","webpack:///./src/assets/images/systemGraph/barController.svg","webpack:///./src/store/sessionStore.ts","webpack:///./src/components/frame/pageLeft.vue?2f5c","webpack:///./src/components/old-adm/business_space/lib/formInput.vue?b8a7","webpack:///./src/components/frame/pageRight.vue?e984","webpack:///./src/utils/http/sysGraphHttpUtils.ts","webpack:///./src/components/old-adm/ledger/components/lib/title.vue?90b8","webpack:///./src/utils/http/baseHttpUtils.ts","webpack:///./src/components/old-adm/common/myPagination.vue?5347","webpack:///./src/assets/images/systemGraph/fontStyle.svg","webpack:///./src/components/frame/login.vue?513a","webpack:///./src/components/old-adm/ready/components/setScaleDialog.vue?d1e4","webpack:///./src/components/old-adm/ledger/components/lib/detailsDia.vue?0229","webpack:///./src/controller/old-adm/preTypes.ts","webpack:///./src/logicConfig/index.ts","webpack:///./src/assets/images/systemGraph/editLogo.svg","webpack:///./src/utils/authUtils.ts","webpack:///./src/data/old-adm/menus.js","webpack:///./src/utils/old-adm/scan/tools.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","httpUtils","baseUrl","this","_baseUrl","val","url","superFnName","newUrl","toolUtils","getBaseHttpUrl","send","headers","method","axiosUtils","ScanUtil","__systemConf","baseServiceUrl","Relation","params","fn","http","postRequest","res","calcName","relation_type","zone_type","proId","objectTypes","datacenter","customHttp","customHttpUtils","customRequest","relationType","param","buildId","BuildingId","BlockId","Domain","SystemName","isSource","baseHttpUtils","BuildController","pre","buildingQuery","logicConfig","resultObj","success","content","map","item","id","localName","children","floor","subitem","buildingId","open","disabled","checked","buildFloorData","buildParams","pageNumber","pageSize","orders","projection","floorParams","Promise","all","floorQuery","then","values","builData","floorData","build","label","unshift","forEach","child","Code","Name","namespaced","state","uploadVisible","getters","mutations","updata","payload","console","log","actions","Vue","use","Vuex","Store","menus","user","fromPath","breadcrumbs","projects","selectProject","ssoToken","updateMenus","updateUser","updateFromPath","updateBreadcrumbs","breadcrumb","newBreadcrumbs","find","reverse","currMenu","to","findMenu","updateProjects","updateSelectProject","loginOut","layout","uploadFile","EquipController","equipquery_pre","object_pre","FileController","model_pre","Filters","FolderId","FloorName","ProjectId","Status","PageNumber","PageSize","Orders","webpackContext","req","webpackContextResolve","e","Error","code","keys","resolve","render","_vm","_h","$createElement","_c","_self","attrs","staticRenderFns","components","component","staticClass","logoUrl","_m","_l","menu","slot","domProps","_s","subMenu","toString","icon","class","_e","props","computed","methods","created","mounted","leftMenu","model","callback","$$v","expression","on","_v","bread","staticStyle","handleChange","activeNames","set","$store","commit","sessionStore","$router","replace","watch","pageLeft","pageRight","style","background","backUrl","directives","rawName","$event","target","composing","userName","modifiers","stopPropagation","passTxtKeyUp","userPass","startLogin","fullscreenLoading","event","keyCode","searchInputChange","searchVal","createSystemGraph","graphArr","scopedSlots","_u","scope","viewGraph","row","editGraph","dataCount","currentPage","handlePageSizeChange","handleCurrentPageChange","allGraphArr","selDiagram","getCurrPageData","openGraphPage","startIndex","endIndex","getData","sysGraphController","operState","intoEditState","graphInfo","extraProps","publishGraph","draftGraph","saveGraph","cancelClick","delGraph","toggleLeft","isVisibleLeft","selScaleChange","selectScale","scaleZoomin","scaleZoomout","graphTypeName","systemInstanceName","templateName","project","stateName","ref","graphClickCall","selGraphPartType","selEquip","absolutePosition","x","y","anchor","selStartPointChange","selLineStartPoint","selEndPointChange","selLineEndPoint","selFontSizeChange","selFontSize","fontColor","backColor","isVisible","createGraphName","selProjectChange","selProject","systemInsArr","expandTrigger","instanceChange","systemTemplateArr","templateChange","cancelCreate","newOkEvent","selSystemIns","selSystemTemplate","selSysType","selSysGraphType","close","templateNode","$refs","sysTemplateCascader","getCheckedNodes","graphTypeNode","parent","maxContainerId","nodeArr","lineArr","labelArr","canvasProObj","centerPointerPx","originalScale","xJiaValue","yJiaValue","textureSource","pixiScale","positionPxX","positionPxY","deep","mouseState","prevMousePosition","drawEntry","graphDataObj","parseDataToDraw","drawGraph","resetDraw","pixiApp","_this","pixiContainer","document","getElementById","stage","removeChildAt","width","clientWidth","height","clientHeight","antialias","transparent","resolution","renderer","autoResize","appendChild","view","computeOriginZuobPosition","graphicsRect","lineStyle","color","alpha","alignment","_dataObj","newWidth","newHeight","drawRect","newCordObj","hitArea","getBounds","interactive","clickEventCall","addChild","rootContainerArr","template","frame","parseNode","location","dataArr","newAbsolutePosition","compType","anchorKeys","anchorArr","_anchorKey","relativePosition","anchorLocations","dataObject","legendObj","size","maxPxX","maxPxY","originaMinX","compute","originaMaxX","originaMaxY","originaMinY","_legendObj","_cLine","path","setScale","xScale","yScale","Math","min","convertCoordToLeftOrigina","_obj","graphInstance","currentTarget","dataId","dataObj","filter","_data","$emit","type","graphScaleCompute","deepVal","graphScale","newScale","max","scale","position","scaleArr","diagramId","lineStartPointArr","lineEndPointArr","fontSizeArr","graphOriginInfo","createSuccessed","JSON","parse","stringify","graphc","getDiagramById","$confirm","confirmButtonText","cancelButtonText","$route","query","ost","did","pri","groupCode","gc","prn","addGraph","graph","mess","changeFloor","changeDevice","handleChangeKeyWord","nativeOn","indexOf","_k","arguments","$set","handleCommand","graphyId","dialog","upDataDevice","index","_f","num","default","perjectName","filters","numFormat","String","left","split","right","temp","isWidth","options","changeCascader","changeVal","getHeaderData","isShowDelivered","page","total","onlyRead","handleChangeShowType","showType","initTable","showInfoList","addDevice","tableData","Batch","handleBatchEquipPoint","reset","undo","myDialog","qrcodeUrl","bimcodeobj","closeBIM","filesArr","firmDataType","information","infoType","fileChange","imgsArr","imgChange","picsArr","changePics","deviceId","pageKey","getTableData","iframeSrc","curDevice","systemList","changeSystemType","deviceType","changeProperty","updateInfoData","updateInput","handleChangeMenum","update","handleCloseUpdate","updateInputShow","minRows","maxRows","handleClickUpdate","changeAddType","toAddDevice","newEnclosure","tableHeader","multiples","handsonUtils","getParam","changeData","source","hot","trimmedArr","arrayUnique","arr","hash","reduce","next","newData","isSort","getPlugin","isSorted","sortArr","rowsMapper","__arrayMap","getSourceDataAtRow","getUnshiftParam","text","readOnly","picType","instance","td","col","prop","cellProperties","cursor","Array","innerHTML","fileType","infos","substring","buildingList","idType","html","Manufacturer","getDataAtRowProp","Brand","Specification","lookQRCode","sysInBuildFloor","BuildID","FloorID","BuildLocalName","BuildName","FloorLocalName","equipment","edit","tenant","shaft","parts","system","space","dataTypeMap","STRING","ATTACHMENT","DOUBLE","DATETIME","ENUM","BOOLEAN","MENUM","INTEGER","noShowArr","cantShow","firmArr","mapToArr","showTools","inputModeArr","falg","fixedNoShowField","noShowList","flag","isShow","arrToArr","first","scound","three","four","visible","numList","category","dataType","firstName","aliasCode","aliasName","origCode","origDataType","priority","editable","headerTextFilter","filterUnshow","isUnit","firstTag","headerTypeFilter","textFormat","inputModeFilter","unit","multiple","tools","customDropdownRenderer","editor","chosenOptions","dataSource","formatDataSource","multipleDropdownRenderer","numericFormat","pattern","dateFormat","correctFormat","formater","fieldData","filterFirm","_t","facility","Boolean","projectId","setValue","distinct","param2","classCode","formatOptions","filterForOptions","qrcode","bimcode","handleClose","getFloorMap","cadWidth","cadHeight","isdata","read","save","ProjId","secret","floorToMap","promise1","promise2","FloorSequenceID","floorSequenceID","noAllDataFloor","Buildfloor","canvasLoading","drawMainScene","init","$nextTick","floorId","floors","getFloorData","initGraphy","that","clearGraphy","loadUrl","getGraphtSuc","floorMapRatio","floorMapShift","point","err","loadImg","FloorMap","Result","$message","warning","Message","scene","locationJson","X","Y","addMarker","obj","fitSceneToView","isSpaceSelectable","spaceClick","canvasClick","outline","addSceneMark","newArr","floorMap","toLowerCase","markerList","BIMLocation","bimLocation","clearMark","immediate","handler","uploadFiles","keysArr","changeItem","uploadAndSubmit","download","deleteFile","info","archive","Archive","file","checkReport","CheckReport","insuranceFile","InsuranceFile","deepCopy","uploadImgs","deepcopy","delImage","imageGetUrl","lookImg","accept","imagesArr","title","details","Date","getTime","setData","setMess","iframe","onload","contentWindow","postMessage","detailsDialog","pic","picArrs","imageItem","videoArr","videoPicArr","videoItem","getName","formLabelAlign","preventDefault","isRule","required","message","onSubmit","typeArr","filterArr","Number","error","toMyNeed","getCascaderObj","join","getMyVal","k","getMap","opt","array","undefined","formInput","defined","imageUploadUrl","uploading","imageFalg","BASE_URL","uploadKey","reader","onloadstart","onprogress","onloadend","vm","xhr","XMLHttpRequest","onreadystatechange","readyState","status","creatImg","readAsArrayBuffer","dataURLtoBlob","binary","atob","dataURI","charCodeAt","Blob","Uint8Array","videoDom","src","onloadeddata","canvas","createElement","videoHeight","videoWidth","getContext","drawImage","blob","toDataURL","File","load","imgDom","top","opacity","el","transform","webkitTransform","MozTransform","msTransform","OTransform","infoName","menum","batchDialog","active","formData","FloorTypeSelect","radio","form","inputMsg","keycode","handleSelectionChange","digitalDeliveryID","getAllData","loading","maintenanceSelect","sizes","isSmall","handleSizeChange","handleCurrentChange","change","systemType","search","localId","lookDeatils","getChange","iframeShow","changeRea","getPropertyData","building","equipFamilyList","familyName","installLocation","changed","clickTrue","myPagination","floorCascader","codeListCode","changePage","cascade","lookPic","panoramaArr","changeKeys","images","panoramaItem","videos","pics","concat","videoPics","panoramas","getArr","fatherTochild","linkAssets","handleOpenReset","handleChangeDevice","bfoptions","handleChangeBf","buildFloor","handleChangeZone","zone","spaceShow","handleClickClose","toLinkAssets","deviceTypeList","zoneList","spaceList","getPartsDieType","getBuildFloorData","getSpaceData","zoneListIsShow","handleChangeSpaceItem","lastVal","pageNum","zoneType","nodes","recursionGetData","dialogFormVisible","handleCloseDialog","dataCenter","progress","historyKey","activity","messageKey","downloadEquipTemplate","goBack","exhibitionCrux","cruxSuccess","selectRadio","changeRadio","exhibitionBaseInformation","exhibitionEnergy","exhibitionMaintain","exhibitionImage","exhibitionVideo","exhibitionFile","list","findIndex","handleClickPrev","handleChangeExample","handleClickNext","InfoPointName","Path","Value","isArray","handleCopy","handleName","fileList","delFile","createTime","PicList","handleLookImage","systemId","CreateTime","setting","cruxArray","downloadFile","allMessage","option","checkList","checkboxGroup","allChecks","tmp","crux","changeList","InfoPointCode","KeyWord","dialogOpen","arrLenght","keyWord","oInput","body","select","execCommand","remove","Unit","receivetime","formatDate","equipId","equipName","equipCode","pointData","exampleData","currentRadio","criterias","criteriasArray","initRadio","radioList","dynamic","isShowImage","isShowVideo","isShowFile","cur","objectId","infoCode","appId","head","handleEnclosure","isArr","handlePicList","handleFileList","handleRadios","displayData","video","picObject","str","includes","substr","d1l","Visible","paths","resultEnergy","svalue","FirstName","categoryName","changeArr","relateSuccess","marginLeft","marginTop","contextKey","oFile","relevance","search1","getLeftData","changeBuild","EquipLocalName","EquipName","EquipLocalID","Category","InstallLocation","pages1","changePages1","SelectionList","rightToLeft","multipleSelection","leftToRight","search2","getRightData","table2Data","tableChange","pages2","changePages2","cascader","dialogVisible","List","isLoading1","isLoading2","done","getAllTable","sysId","relationList","EquipID","EquipId","relationChange","SysID","equipIdList","connectDialogVis","SysLocalName","removeTag","checkStrictly","getCascader","getSelectedNodes","pathLabels","brr","buildName","bfCascader","isCreate","showDialog","buildIds","floorIds","buildingIdList","floorIdList","sysRelateBuild","buildPa","sysRelateFloor","floorPa","primise2","sagaTitle","myCascader","hansonTable","tableTransfers","countGeneralSys","SysType","tableMain","goback","bfOptions","floorValue","isChange","handleClickSave","cancel","handleChangeIspoint","isPoint","handleChangeKeyword","keyword","showName","equipList","selected","handleSelectIcon","showCanvas","equipZ","minHeight","maxHeight","marks","handleUpdateZ","arg","offsetWidth","offsetHeight","addEventListener","handlePopover","$once","confirm","handleClickIcon","listChange","iconMove","getGraphy","selectContainer","connect","floorOutline","addBuild","buildList","delBuild","editBuild","count","addFloor","headerStyle","editFloorData","sign","checkDrawImg","floorThroughList","changeConnection","handleDelete","curBuildId","curFloorId","floorTitle","refresh","buildTitle","buildMessage","handleBuild","delDialogVis","delText","confirmDel","rules","infoPointCode","trim","isShowTitle","op","InforsList","getInforsPoint","submitForm","ruleForm","validate","valid","returnNewObj","curk","formatData","desFormatData","childK","nk","formItems","timeoutSetVal","setTimeout","newform","buildDialogVis","buildData","buildDisabled","dialogImageUrl","flattenKeys","isObject","digKeys","prev","entries","currentKey","closeDialog","formName","_key","backRouter","hasModel","isEdit","changeGraphy","hasGraph","otherSign","editGraphy","repeatFloor","repeatTextTips","step","beforeUpload","nextStepBtnDisable","nextStep","lastStep","FolderName","changeSign","getGraphSuc","repeatHandled","stepDes","floorList","floorRadio","alreadyRelatedModel","scaleTextChange","runBack","config","fit","savePng","saveSvg","divide","clearDivide","changeAbsorb","saveJson","groupSelect","fitToWindow","handleDivideCommand","isSwitch","sliderVal","plus","everyScale","command","redo","maxScale","canvasFun","dataKey","Outline","shadeList","scaleItem","urlModelId","projectName","projectObj","modelId","addScaleItem","properties","FloorMapShift","imgList","moveTo","minScale","getOtherFloorOutLine","modelid","strokeColor","addItem","line","pointChange","focus","saveImage","saveSceneSvg","saveFloorJson","isMarking","clearSceneMark","isAbsorbing","scaleByPoint","checkGraphyVisible","handleItemChange","casVal","bindGraphy","drawFloor","jsonKey","modelIdToFloorId","cover","currentModelId","CurrentModelId","pa","pushChild","getDirectory","Id","dialogVis","scaleInput","v","checkGraphy","setScaleDialog","backTips","imgService","curImgItem","baseImgItem","timeOut","handled","getCountModel","sceneMark","outLine","closeFlag","toFixed","nullItems","getFileName","initFromModelId","isImage","fileName","endsWith","updateFloorKey","proScale","show","globalAlpha","moveable","removeLast","hide","grabItem","changeText","clearScaleData","loadOtherImg","enabled","zOrder","removeItem","calScaleGap","pro","itemScale","TableVisibleMoreLoading","computingNum","calcSpecial","openComputed","RelationType","calcSpecialUpdate","childIndex","graphTypeId","toDetail","graphTypeCode","Note","explain","relation","relIndex","computationalState","relationTypeName","relationTypeCode","note","conneObject","computingTime","automatic","manual","isComputed","ManualMaintenance","dialogTableVisible","autoComputed","promptly","dialogTableVisibleMore","existComputed","existTitle","setEndValue","computedUpdate","dialogEquipment","equipmentSetting","sourceSideList","sourceType","oraginOption","endValue","handleAddSource","preservation","dialogManualTip","tips","dialogManualOption","optionTips","currentNum","downloadProject","lastTime","uploadTxt","uploadTips","dialogProcess","errBack","back","finish","deviceListString","deviceList","element","originEquipment","endEquipment","activities","vals","idArr","secondary","resultOrigin","resultEnd","ops","filterOps","isResouceShow","RelationTypeName","endOption","setOriginOption","setEndOptions","relType","ZoneType","disOptions","Items","handleSourceQuery","sourceQuery","dialogEquipmentOpen","sourceList","addSource","showCascader","handleSetValue","device","sourceOptions","filterList","MepSystemType","Source","SourceId","SourceType","Type","Statistics","endOptions","placeholder","underDesign","inHand","dataFailed","allUpdateSuccess","portionUpdateSuccess","maintain","localStorage","setItem","relManualType","mainObject","fromObject","countNumber","currentRelationTypeName","CardList","graphic","dataNumber","graphicNumber","updateState","list2","countInfo","rList","list1","childGraphicTypeList","businessSpaceAll","statusCard","domain","mepSystemType","blockSource","DataSorting","blockId","systemName","sysDirection","selectFloorHandle","MENU_MAP","currentTab","progressHandle","tableList","modifiedTime","delHandle","Tree","Tabs","Button","tableLoading","headList","getFileList","go","Title","inputVal2","geoFormData","district","address","lng","lat","level","labelWidth","popText","proxy","formType","selectData","initValue","showPop","old","FormItem","autocomplete","markers","initMap","mapKey","version","plugins","zoom","resizeEnable","Amap","plugin","input","getDicData","setLocation","setCenter","clearMarker","marker","setLabel","offset","AMap","Pixel","direction","add","buildArea","coverArea","logos","citys","desc","Anchor","Basic","Geo","Project","Business","routerNameConfig","loginRouteName","login","layoutMain","systemGraphName","systemGraph","meta","keepAlive","repetitionGraphy","facilityLedger","isBack","batchPointAssets","deviceDetails","projectManage","systemLedger","overView","systemGraphEditName","systemGraphEdit","cadDrawingManageRoute","cadDrawingManage","Router","routes","systemRoute","router","base","packageConfig","beforeEach","authUtils","routerBeforeEach","ElementUI","zIndex","productionTip","devtools","store","vueStore","App","ScanController","datacenter_pre","graphhic_pre","href","equipcomponent_pre","floor_pre","cadDarwingController","baseUril","PREFIX","loaclStorage","_value","getItem","KEY_MENU_SELECTED","KEY_PROJECT_SELECTED","KEY_PAGE_BRANDCRUMB","sidebarClosed","sidebarSelected","userInfo","userId","permissions","group_code","uploaderList","rowEdit","errorReport","pid","setRowEdit","setErrorReport","setSidebarClosed","setUserInfo","setGroupCode","setUserId","setSidebarSelected","setProjects","setprojectId","cacheInfo","Set","pwd","setMenus","setUploaderList","contentx","getAllProject","reject","proj","loadUserInfo","userController","getUserInfoById","infoData","authorizations","menuArr","formatMenu","projectLocalName","setBreadcrumb","root","storage","sessionStorage","graphStateEnum","FloorController","_dataStr","loginName","password","loginDevice","longitude","latitude","requestUrl","requestHeaders","requestData","requestMethod","customHttpUtilsInstance","loginResult","reason","CancelToken","axiosservice","timeout","cancelToken","interceptors","request","response","urlArr","urlPrefix","urlParamStr","paramKeyArr","failure","stateCode","Draft","Publish","Recyle","grpphName","getSystemTypeByCode","systemTypeCode","zhuanyeArr","zhuanye","systemTypeArr","isFind","_tempSystemTypeObj","sysGraphHttpUtilsInstance","newDataArr","sort","a","b","url2","zhuanyeObj","getStateNameByCode","systemTypeName","getTemplateGraphTypeBySysTypeCode","templateId","_templateObj","momentInstance","timeStr","format","sysType","sysInstance","sysTemplate","sysTypeCode","_tempTemplateObj","sysGraphType","templateArr","graphType","sysTypeArr","_c2","sysInstanceArr","_c3","_sysGraphType","_template","_paramObj","loadDataUrl","loadResultObj","saveSysGraph","saveResultObj","saveUrl","getSystemInstanceByCode","systemInstanceId","systemInstanceArr","systemInstance","getRequest","_systemInstance","_temoObj","updateSysGraphState","isOpenTarget","encodeURIComponent","sysGraphHttpUtils","Dic","dict_pre","interfaceUrl","lastIndexOf","_index","rKeyStrVal","tokenKeyName","clear","sysGraphServiceUrl","rwd_pre","equipcomponentdic_pre","_tokenKeyName","_routerNameConfig","_resultObj","from","userControllerInstance","userInfoResult","_userInfo","arrX","arrY","dateToDate","date","sDate","getMonth","getPointDetails","PointList","em","getPoint","maxX","minX","maxY","minY","compareArr","array2","arr3","stra","strb","changeMap","items","getMouseCanvas","bbox","canvasView","getBoundingClientRect","clientX","clientY","mapToScene","mouseInElement","mouse","contains","codes","indexArr","getText","cutString","string","out","len","copyArr","targetObj","constructor","deepCopyObj","deepClone","proto","getPrototypeOf","assign","optionsList","Handsontable","renderers","TextRenderer","lookDetails","hasRelation","LinkEquipLocalName","re","getIt","test","differenceArr","sameArr","sequence","compare","value1","value2","pagination","pageNo","getSameItems","arr1","key1","arr2","key2","isIn","json","p1","p2","xinters","nCross","APoints","dateAddYear","yearCount","tempDate","parseInt","oldYear","getFullYear","oldMonth","oldDate","getDate","newYear","newDate","month","day","now","year","hour","getHours","minute","getMinutes","second","getSeconds","recursion","isObjectValueEqual","aProps","bProps","propName","dataForKey","setDataForKey","originaMenuList","tempNewMenuList","menuNameList","_localMenusList","localMenusList","originaMenu","localMenu","authorizationName","productName","firstLocalMenu","_menuChildrens","menuChildrens","_childLocalMenu","_c1"],"mappings":"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","file":"public/js/index.bd3e0adf.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"index\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/padm/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=17b85403&scoped=true&lang=less&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=43b79e44&lang=less&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./bimDialog.vue?vue&type=style&index=0&id=73ac698e&lang=less&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./uploadImgsName.vue?vue&type=style&index=0&lang=less&\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exhibitionImage.vue?vue&type=style&index=0&id=1cd4b3ba&lang=less&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./uploadImgs.vue?vue&type=style&index=0&lang=less&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./systemType.vue?vue&type=style&index=0&lang=less&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./addGraph.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=76ef3930&scoped=true&lang=css&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./repetitionGraphy.vue?vue&type=style&index=0&lang=less&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./title.vue?vue&type=style&index=0&id=8c45be0e&lang=less&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./qrcode.vue?vue&type=style&index=0&id=068a71cc&lang=less&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./myPagination.vue?vue&type=style&index=0&lang=css&\"","/**\r\n * 一切http辅助类的基类,用于调用axios\r\n * nh 2021.12.23\r\n */\r\n\r\nimport { axiosUtils } from \"./axiosUtils\";\r\nimport { toolUtils } from \"../toolUtils\";\r\n\r\nexport class httpUtils extends axiosUtils {\r\n protected constructor(baseUrl: string) {\r\n super();\r\n this.baseUrl = baseUrl;\r\n }\r\n\r\n //根域名地址\r\n private _baseUrl = \"\";\r\n private set baseUrl(val: string) {\r\n this._baseUrl = val;\r\n }\r\n private get baseUrl() {\r\n return this._baseUrl;\r\n }\r\n\r\n private async send(url: string, data: any, superFnName: string) {\r\n var newUrl = toolUtils.getBaseHttpUrl(this.baseUrl, url);\r\n return await super[superFnName](newUrl, data);\r\n }\r\n\r\n /**\r\n * get请求\r\n * @param url\r\n * @param data\r\n * @returns\r\n */\r\n public async getRequest(url: string, data: any) {\r\n return await this.send(url, data, \"getRequest\");\r\n }\r\n\r\n /**\r\n * post请求\r\n * @param url\r\n * @param data\r\n * @returns\r\n */\r\n public async postRequest(url: string, data: any) {\r\n return await this.send(url, data, \"postRequest\");\r\n }\r\n\r\n /**\r\n * 自定义请求\r\n * @param url\r\n * @param headers\r\n * @param data\r\n * @param method get | post 默认post\r\n * @returns\r\n */\r\n protected async customRequest(\r\n url: string,\r\n headers: any,\r\n data: any,\r\n method: string\r\n ) {\r\n return await super.customRequest(url, headers, data, method);\r\n }\r\n}\r\n","export default class ScanUtil {\r\n static baseUril = (window as any).__systemConf.baseServiceUrl;\r\n static datacenter = \"/datacenter\";\r\n}\r\n","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./lookImage.vue?vue&type=style&index=0&lang=less&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./changeRea.vue?vue&type=style&index=0&lang=less&\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./lookFile.vue?vue&type=style&index=0&id=c6a0631e&lang=less&scoped=true&\"","import { baseHttpUtils } from \"@/utils/http/baseHttpUtils\";\r\nimport { customHttpUtils } from '@/utils/http/customHttpUtils'\r\nimport ScanUtil from '@/utils/scanUtil'\r\nimport storage from '@/utils/storageUtil'\r\nimport lstorage from '@/utils/old-adm/localStorage'\r\n \r\nexport default class Relation{\r\n static http = new baseHttpUtils();\r\n\r\n /**\r\n * @description: 添加源设备\r\n * @param {*}\r\n * @return {*}\r\n */\r\n static async addSource(params, fn) {\r\n const res = await Relation.http.postRequest('/datacenter/mep-system-calc/source/add', params);\r\n return fn ? fn(res) : res \r\n }\r\n /**\r\n * @description: 查看源设备\r\n * @param {*} params\r\n * @param {*} fn\r\n * @return {*}\r\n */ \r\n static async sourceQuery(params, fn) {\r\n const res = await Relation.http.postRequest(`/datacenter/mep-system-calc/source/query?calcName=${params.calcName}`, params);\r\n return fn ? fn(res) : res \r\n }\r\n\r\n /**\r\n * @description: 获取源末端 2\r\n * @param {*} params\r\n * @param {*} fn\r\n * @return {*}\r\n */ \r\n static async blockQuery(params, fn) {\r\n const res = await Relation.http.postRequest(`/datacenter/graphic/connected-block-query`, params);\r\n return fn ? fn(res) : res \r\n }\r\n /**\r\n * @description: 获取源末端 3\r\n * @param {*} params\r\n * @param {*} fn\r\n * @return {*}\r\n */ \r\n static async blockSource(params, fn) {\r\n const res = await Relation.http.postRequest(`/datacenter/graphic/replace-connected-block-source`, params);\r\n return fn ? fn(res) : res \r\n }\r\n /**\r\n * @description: 建筑下的业务空间\r\n * @param {*} params\r\n * @param {*} fn\r\n * @return {*}\r\n */ \r\n static async businessSpaceAll(params) {\r\n const { relation_type, zone_type, proId } = params;\r\n let userName = storage.get(\"user_name\");\r\n let ProjectId = lstorage.get(\"projectId\");\r\n let objectTypes = zone_type ? \"?objectTypes=\" + zone_type : ''\r\n const url = (window as any).__systemConf.baseServiceUrl + `${ScanUtil.datacenter}/relation-calc/${relation_type}${objectTypes}`\r\n // const headers = { 'projectId': ProjectId, 'Comming': 'adm', 'Account': userName };\r\n const customHttp = new customHttpUtils();\r\n \r\n return await customHttp.customRequest(url, {}, proId, 'post');\r\n\r\n }\r\n /**\r\n * @description: 管网系统设备分块 1\r\n * @param {*} params\r\n * @param {*} fn\r\n * @return {*}\r\n */ \r\n static async calcSpecial(params, fn) {\r\n const res = await Relation.http.postRequest(`/datacenter/calc_special/sys-block?relationType=${params.relationType}`, params);\r\n return fn ? fn(res) : res\r\n }\r\n /**\r\n * @description: 查询总览\r\n * @param {*}\r\n * @return {*}\r\n */ \r\n static async graphic(param, fn) {\r\n const res = await Relation.http.postRequest(`${ScanUtil.datacenter}/graphic/overview`, param);\r\n return fn ? fn(res) : res\r\n }\r\n /**\r\n * @description: 查询总览数量\r\n * @param {*}\r\n * @return {*}\r\n */ \r\n static async graphicNumber(param, fn) {\r\n const res = await Relation.http.postRequest(`${ScanUtil.datacenter}/graphic/query-count`, param);\r\n return fn ? fn(res) : res\r\n }\r\n /**\r\n * @description: 管网系统确定流向 4\r\n * @param {*}\r\n * @return {*}\r\n */ \r\n static async sysDirection(param, fn) {\r\n let buildId = param.BuildingId ? `BuildingId=${param.BuildingId}&` : ''\r\n const res = await Relation.http.postRequest(`${ScanUtil.datacenter}/calc_special/sys-direction?BlockId=${param.BlockId}&${buildId}Domain=${param.Domain}&SystemName=${param.SystemName}&isSource=${param.isSource}`, param);\r\n return fn ? fn(res) : res\r\n }\r\n}\r\n","import FloorController from \"./floorController\";\r\nimport { baseHttpUtils } from \"@/utils/http/baseHttpUtils\";\r\nimport { logicConfig } from \"@/logicConfig\";\r\n\r\nexport interface BuildReq {\r\n pageNumber: number;\r\n pageSize: number;\r\n orders: string;\r\n projection: string[];\r\n}\r\nclass BuildController {\r\n static http = new baseHttpUtils();\r\n static pre = \"/datacenter/object\";\r\n /**\r\n * 获取建筑信息\r\n * @param {BuildReq} params\r\n * @returns\r\n */\r\n static async buildingQuery(params: BuildReq) {\r\n return await this.http.postRequest(this.pre + \"/building/query\", params);\r\n }\r\n /**\r\n * @description: 处理楼层接口数据为树状结构\r\n * @param {*} \r\n * @return {*}\r\n */ \r\n static async buildDataFormat(params) {\r\n try {\r\n const res = await this.buildingQuery(params);\r\n if (res.result != logicConfig.resultObj.success) {\r\n return;\r\n }\r\n return res?.content.map(item => {\r\n const { id, localName:name } = item;\r\n const children = item?.floor?.map(subitem => ({\r\n id: subitem.buildingId,\r\n name: subitem.localName,\r\n open: false,\r\n disabled: false,\r\n checked: 'uncheck'\r\n }))\r\n return {\r\n id,\r\n name,\r\n open: false,\r\n disabled: false,\r\n checked: 'uncheck',\r\n children,\r\n }\r\n\r\n })\r\n\r\n } catch (error) {\r\n \r\n }\r\n\r\n } \r\n static async getData(buildFloorData) {\r\n let data,\r\n buildParams = {\r\n pageNumber: 1,\r\n pageSize: 1000,\r\n orders: \"localName asc\",\r\n projection: [\"id\", \"localName\"],\r\n },\r\n floorParams = {\r\n orders: \"floorSequenceID desc\",\r\n pageNumber: 1,\r\n pageSize: 1000,\r\n projection: [\"buildingId\", \"id\", \"localName\", \"floorSequenceID\"],\r\n };\r\n Promise.all([\r\n this.buildingQuery(buildParams),\r\n FloorController.floorQuery(floorParams),\r\n ]).then(function (values: any) {\r\n let builData = values[0].content,\r\n floorData = values[1].content;\r\n data = builData.map((build) => {\r\n return {\r\n value: build.id,\r\n label: build.localName,\r\n };\r\n });\r\n data.unshift({\r\n value: \"\",\r\n label: \"未明确建筑\",\r\n });\r\n data.forEach((build) => {\r\n floorData.forEach((floor) => {\r\n if (build.value == floor.buildingId && floor.id && floor.localName) {\r\n if (build.children) {\r\n build.children.push({\r\n value: floor.id,\r\n label: floor.localName,\r\n });\r\n } else {\r\n build.children = [];\r\n build.children.push(\r\n {\r\n value: \"\",\r\n label: \"未明确楼层\",\r\n },\r\n {\r\n value: floor.id,\r\n label: floor.localName,\r\n }\r\n );\r\n }\r\n }\r\n });\r\n });\r\n data.forEach((item) => {\r\n if (item.children && item.children.length) {\r\n item.children.forEach((child) => {\r\n if (child.value != \"\") {\r\n buildFloorData.push({\r\n Code: item.value + \"-\" + child.value,\r\n Name: item.label + \"-\" + child.label,\r\n });\r\n } else {\r\n buildFloorData.push({\r\n Code: item.value,\r\n Name: item.label + \"-\" + child.label,\r\n });\r\n }\r\n });\r\n } else {\r\n buildFloorData.push({\r\n Code: item.value,\r\n Name: item.label,\r\n });\r\n }\r\n });\r\n });\r\n }\r\n}\r\nexport default BuildController;\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tableTransfers.vue?vue&type=style&index=0&lang=less&\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./Main.vue?vue&type=style&index=0&id=1a813186&lang=less&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./system.vue?vue&type=style&index=0&id=8cede20c&lang=less&scoped=true&\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exhibitionCrux.vue?vue&type=style&index=0&id=1cd70944&lang=less&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./bimDialog.vue?vue&type=style&index=1&lang=less&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./system.vue?vue&type=style&index=1&lang=less&\"","export default {\r\n namespaced: true,\r\n state: {\r\n uploadVisible: true,\r\n },\r\n getters: {\r\n\r\n },\r\n mutations: {\r\n updata(state, payload) {\r\n console.log({state, payload})\r\n for (const key in payload) {\r\n state[key] = payload[key]\r\n }\r\n }\r\n },\r\n actions: {\r\n\r\n }\r\n}","import Vue from 'vue'\r\nimport Vuex from 'vuex'\r\nimport layout from './modules/layout'\r\nimport uploadFile from './modules/uploadFile'\r\nVue.use(Vuex)\r\n\r\nexport default new Vuex.Store({\r\n state: {\r\n //左侧导航菜单\r\n menus: [],\r\n /**\r\n * 用户信息 {id:'',name:''}\r\n */\r\n user: {},\r\n //记录上一次访问的页面\r\n fromPath: '',\r\n //面包屑{label:'',to:''}\r\n breadcrumbs: [],\r\n //项目信息{id:'',name:'',groupCode:''}\r\n projects: [],\r\n //选择的项目信息\r\n selectProject: {},\r\n // token\r\n ssoToken: ''\r\n },\r\n getters: {},\r\n mutations: {\r\n updateMenus(state, menus) {\r\n state.menus = menus;\r\n },\r\n updateUser(state, user) {\r\n state.user = user;\r\n },\r\n updateFromPath(state, fromPath) {\r\n state.fromPath = fromPath;\r\n },\r\n /**\r\n * 更新面包屑数据\r\n * @param {*} state \r\n * @param {*} breadcrumb {label:'',to:'/a'}\r\n */\r\n updateBreadcrumbs(state, breadcrumb) {\r\n var newBreadcrumbs = [];\r\n\r\n find(state.menus);\r\n //如果从菜单里找到了,说明是从菜单上点击的导航\r\n if (newBreadcrumbs.length > 0) {\r\n newBreadcrumbs.reverse();\r\n state.breadcrumbs = newBreadcrumbs;\r\n return;\r\n }\r\n\r\n //找不到时,说明是自定义面包屑,比如在页面内的跳转\r\n newBreadcrumbs = state.breadcrumbs;\r\n newBreadcrumbs.push(breadcrumb);\r\n state.breadcrumbs = newBreadcrumbs;\r\n\r\n //从菜单里找和breadcrumb对应的\r\n function find(menus) {\r\n for (let i = 0; i < menus.length; i++) {\r\n let currMenu = menus[i];\r\n if (currMenu.url == breadcrumb.to) {\r\n return currMenu;\r\n }\r\n if (currMenu.child && currMenu.child.length > 0) {\r\n let findMenu = find(currMenu.child);\r\n if (findMenu) {\r\n newBreadcrumbs.push({\r\n label: findMenu.name,\r\n to: findMenu.url\r\n });\r\n return currMenu;\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n },\r\n updateProjects(state, projects) {\r\n state.projects = projects;\r\n },\r\n updateSelectProject(state, selectProject) {\r\n state.selectProject = selectProject;\r\n },\r\n //注销\r\n loginOut(state) {\r\n state.menus = [];\r\n state.user = {};\r\n state.fromPath = '';\r\n state.breadcrumbs = [];\r\n state.projects = [];\r\n state.selectProject = {};\r\n }\r\n },\r\n actions: {},\r\n modules: {\r\n layout,\r\n uploadFile\r\n }\r\n})","import { baseHttpUtils } from \"@/utils/http/baseHttpUtils\";\r\nimport { Count } from \"@/models/equip\";\r\nimport { equipquery_pre, object_pre } from \"./preTypes\";\r\n\r\n/**\r\n * 设备相关接口\r\n */\r\nclass EquipController {\r\n static http = new baseHttpUtils();\r\n /**\r\n * 查询设备关联资产部件数量\r\n * @returns\r\n */\r\n static async getEquipTableCon(params) {\r\n return await this.http.postRequest(\r\n equipquery_pre + \"/equip-components\",\r\n params\r\n );\r\n }\r\n /**\r\n * 设备清单 - 查询设备信息\r\n */\r\n static async queryEquip(params) {\r\n return await this.http.postRequest(object_pre + \"/equip/query\", params);\r\n }\r\n /**\r\n * 根据条件查询统计数量\r\n * @param {Count} params\r\n * @returns\r\n */\r\n static async countEquip(params: Count) {\r\n return await this.http.postRequest(object_pre + \"/equip/count\", params);\r\n }\r\n}\r\n\r\nexport default EquipController;\r\n","import { baseHttpUtils } from \"@/utils/http/baseHttpUtils\";\r\nimport { model_pre } from \"./preTypes\";\r\nclass FileController {\r\n static http = new baseHttpUtils();\r\n\r\n /**\r\n * 根据模型id 获取模型文件夹及文件名\r\n * @param params\r\n * @returns\r\n */\r\n static async getFileNameById(params) {\r\n return await this.http.postRequest(\r\n model_pre + \"/model-folder/get-name\",\r\n params\r\n );\r\n }\r\n /**\r\n * 根据条件查询统计数量\r\n * @param params\r\n * @returns\r\n */\r\n static async countModel(params) {\r\n return await this.http.postRequest(model_pre + \"/model-file/count\", params);\r\n }\r\n /**\r\n * 楼层与平面图绑定\r\n * @param params\r\n * @returns\r\n */\r\n static async bindFloorModel(params) {\r\n return await this.http.postRequest(model_pre + \"/model-file/bind\", params);\r\n }\r\n /**\r\n * 查询模型文件夹下的所有模型文件\r\n * @param params\r\n * @returns\r\n */\r\n static async queryFloorList(data) {\r\n let Filters = `FolderId='${data.FolderId}'`;\r\n if (data.FloorName) {\r\n Filters = `FolderId='${data.FolderId}';FloorName='${data.FloorName}';ProjectId='${data.ProjectId}'`;\r\n }\r\n if (data.Status) {\r\n Filters += `;Status in [${data.Status}]`;\r\n }\r\n let params = {\r\n Filters: Filters,\r\n PageNumber: 1,\r\n PageSize: 500,\r\n };\r\n return await this.http.postRequest(\r\n model_pre + \"/model-file/query-list\",\r\n params\r\n );\r\n }\r\n /**\r\n * 查询模型文件夹\r\n * @param params\r\n * @returns\r\n */\r\n static async queryModel(Name) {\r\n let data = null;\r\n if (Name) {\r\n // 单个查询\r\n data = {\r\n Filters: `Name='${Name}'`,\r\n Orders: \"Name asc\",\r\n };\r\n } else {\r\n // 多个查询\r\n data = {\r\n Orders: \"Name asc\",\r\n };\r\n }\r\n return await this.http.postRequest(model_pre + \"/model-folder/query\", data);\r\n }\r\n}\r\n\r\nexport default FileController;\r\n","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609e\",\n\t\"./ky.js\": \"9609e\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","/**\r\n * 自定义数据访问的http辅助类,供业务调用\r\n * nh 2021.12.28\r\n */\r\n\r\n import { httpUtils } from \"./httpUtils\";\r\n\r\n export class customHttpUtils extends httpUtils {\r\n\r\n constructor(){\r\n super(\"\");\r\n };\r\n\r\n /**\r\n * 自定义请求\r\n * @param url 带有http前缀的完整的url地址\r\n * @param headers \r\n * @param data \r\n * @param method get | post 默认post\r\n * @returns \r\n */\r\n public async customRequest(url: string, headers: any, data: any, method: string) {\r\n return await super.customRequest(url, headers, data, method);\r\n }\r\n }","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./leftMenu.vue?vue&type=style&index=0&id=16d73ce0&scoped=true&lang=css&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./geo.vue?vue&type=style&index=0&id=99ac7a5e&lang=less&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./basic.vue?vue&type=style&index=0&id=10cfdf14&lang=less&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div id=\"app\">\r\n <router-view />\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"App\",\r\n components: {},\r\n};\r\n</script>","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=75fe2fe2&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"page-main\"}},[_c('div',{staticClass:\"leftRegion\"},[_c('pageLeft')],1),_c('div',{staticClass:\"rightRegion\"},[_c('pageRight')],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"pageLeft\"}},[_c('div',{staticClass:\"topContainer\"},[_c('div',{staticClass:\"logoDiv\"},[_c('img',{staticClass:\"logoImg\",attrs:{\"src\":_vm.logoUrl}})]),_vm._m(0)]),_c('div',{staticClass:\"menuDiv\"},[_c('el-menu',{attrs:{\"text-color\":\"#fff\",\"active-text-color\":\"#ffd04b\",\"background-color\":\"#364150\",\"router\":\"\"}},_vm._l((_vm.menus),function(menu){return _c('el-menu-item-group',{key:menu.id},[_c('template',{slot:\"title\"},[_c('span',{domProps:{\"textContent\":_vm._s(menu.name)}})]),_vm._l((menu.child),function(subMenu){return _c('leftMenu',{key:subMenu.id,attrs:{\"menu\":subMenu,\"index\":subMenu.id}})})],2)}),1)],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"middDiv\"},[_c('i',{staticClass:\"el-icon-fa-bars fa fa-bars\"})])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.menu.child && _vm.menu.child.length > 0)?_c('el-submenu',{attrs:{\"index\":_vm.menu.orders.toString()}},[_c('template',{slot:\"title\"},[(!!_vm.menu.icon)?_c('i',{staticClass:\"menuIcon\",class:'iconfont ' + _vm.menu.icon}):_vm._e(),_c('span',{domProps:{\"textContent\":_vm._s(_vm.menu.name)}})]),_vm._l((_vm.menu.child),function(subMenu){return _c('leftMenu',{key:subMenu.id,attrs:{\"menu\":subMenu}})})],2):_vm._e(),(!_vm.menu.child || _vm.menu.child.length == 0)?_c('el-menu-item',{attrs:{\"index\":_vm.menu.url}},[(!!_vm.menu.icon)?_c('i',{staticClass:\"menuIcon\",class:'iconfont ' + _vm.menu.icon}):_vm._e(),_c('span',{attrs:{\"slot\":\"title\"},domProps:{\"textContent\":_vm._s(_vm.menu.name)},slot:\"title\"})]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <el-submenu\r\n :index=\"menu.orders.toString()\"\r\n v-if=\"menu.child && menu.child.length > 0\"\r\n >\r\n <template slot=\"title\">\r\n <i\r\n class=\"menuIcon\"\r\n :class=\"'iconfont ' + menu.icon\"\r\n v-if=\"!!menu.icon\"\r\n ></i>\r\n <span v-text=\"menu.name\"></span>\r\n </template>\r\n <leftMenu\r\n :menu=\"subMenu\"\r\n v-for=\"subMenu in menu.child\"\r\n :key=\"subMenu.id\"\r\n ></leftMenu>\r\n </el-submenu>\r\n <el-menu-item\r\n :index=\"menu.url\"\r\n v-if=\"!menu.child || menu.child.length == 0\"\r\n >\r\n <i\r\n class=\"menuIcon\"\r\n :class=\"'iconfont ' + menu.icon\"\r\n v-if=\"!!menu.icon\"\r\n ></i>\r\n <span slot=\"title\" v-text=\"menu.name\"></span>\r\n </el-menu-item>\r\n </div>\r\n</template>\r\n<script>\r\nexport default {\r\n name: \"leftMenu\",\r\n props: [\"menu\"],\r\n data() {\r\n return {};\r\n },\r\n computed: {},\r\n methods: {},\r\n created() {},\r\n\r\n mounted() {},\r\n components: {},\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.menuIcon {\r\n margin-right: 6px;\r\n color: #fff;\r\n width: 16px;\r\n height:16px;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./leftMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./leftMenu.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./leftMenu.vue?vue&type=template&id=16d73ce0&scoped=true&\"\nimport script from \"./leftMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./leftMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./leftMenu.vue?vue&type=style&index=0&id=16d73ce0&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"16d73ce0\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div id=\"pageLeft\">\r\n <div class=\"topContainer\">\r\n <div class=\"logoDiv\">\r\n <img :src=\"logoUrl\" class=\"logoImg\" />\r\n </div>\r\n <div class=\"middDiv\">\r\n <i class=\"el-icon-fa-bars fa fa-bars\"></i>\r\n </div>\r\n </div>\r\n <div class=\"menuDiv\">\r\n <el-menu\r\n text-color=\"#fff\"\r\n active-text-color=\"#ffd04b\"\r\n background-color=\"#364150\"\r\n router\r\n >\r\n <el-menu-item-group v-for=\"menu in menus\" :key=\"menu.id\">\r\n <template slot=\"title\">\r\n <span v-text=\"menu.name\"></span>\r\n </template>\r\n <leftMenu\r\n :menu=\"subMenu\"\r\n v-for=\"subMenu in menu.child\"\r\n :key=\"subMenu.id\"\r\n :index=\"subMenu.id\"\r\n ></leftMenu>\r\n </el-menu-item-group>\r\n </el-menu>\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\nimport { mapState } from \"vuex\";\r\nimport leftMenu from \"./leftMenu\";\r\nexport default {\r\n props: [],\r\n data() {\r\n return {\r\n logoUrl: require(\"@/assets/images/logo.png\"),\r\n };\r\n },\r\n computed: {\r\n ...mapState([\"menus\"]),\r\n },\r\n methods: {},\r\n created() {},\r\n\r\n mounted() {},\r\n components: {\r\n leftMenu,\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n#pageLeft {\r\n width: 235px;\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n.topContainer {\r\n background: #2b3643;\r\n height: 50px;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n}\r\n\r\n.menuDiv {\r\n flex: 1;\r\n background: #364150;\r\n overflow: auto;\r\n}\r\n\r\n.logoImg {\r\n height: 18px;\r\n margin-left: 20px;\r\n}\r\n\r\n.el-icon-fa-bars {\r\n font-family: FontAwesome !important;\r\n font-size: inherit;\r\n font-style: normal;\r\n font-weight: 400;\r\n font-variant: normal;\r\n text-transform: none;\r\n line-height: 1;\r\n vertical-align: baseline;\r\n display: inline-block;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n color: #ffffff;\r\n margin-left: 88px;\r\n}\r\n\r\n.logoDiv {\r\n flex: 1;\r\n}\r\n\r\n.middDiv {\r\n flex: 1;\r\n}\r\n\r\n.el-menu-item-group__title span {\r\n font-size: 14px !important;\r\n color: #68707b;\r\n font-weight: bold;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pageLeft.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pageLeft.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./pageLeft.vue?vue&type=template&id=47b1fb96&scoped=true&\"\nimport script from \"./pageLeft.vue?vue&type=script&lang=js&\"\nexport * from \"./pageLeft.vue?vue&type=script&lang=js&\"\nimport style0 from \"./pageLeft.vue?vue&type=style&index=0&id=47b1fb96&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"47b1fb96\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"pageRight\"}},[_c('div',{staticClass:\"headerContainer\"},[_c('div',{staticClass:\"projectContainer\"},[_c('el-select',{attrs:{\"value-key\":\"id\",\"filterable\":\"\",\"placeholder\":\"请选择\"},model:{value:(_vm.selectProject),callback:function ($$v) {_vm.selectProject=$$v},expression:\"selectProject\"}},_vm._l((_vm.projects),function(item){return _c('el-option',{key:item.id,attrs:{\"label\":item.name,\"value\":item}})}),1)],1),_c('div',{staticClass:\"userContainer\"},[_c('el-popover',{attrs:{\"trigger\":\"hover\",\"popper-class\":\"el-user-popover\"}},[_c('div',{staticClass:\"userPropExit\",on:{\"click\":_vm.loginOut}},[_c('i',{staticClass:\"el-icon-switch-button\"}),_c('span',{staticClass:\"user-pro-oper\"},[_vm._v(\"退出登录\")])]),_c('div',{staticClass:\"userPropLine\"}),_c('div',{staticClass:\"userPropUpPass\"},[_c('i',{staticClass:\"el-icon-unlock\"}),_c('span',{staticClass:\"user-pro-oper\"},[_vm._v(\"修改密码\")])]),_c('div',{staticClass:\"userInfo\",attrs:{\"slot\":\"reference\"},slot:\"reference\"},[_c('span',{domProps:{\"textContent\":_vm._s(_vm.user.name)}}),_c('i',{staticClass:\"el-icon-fa-user fa fa-user\"})])])],1)]),_c('div',{staticClass:\"breadcContainer\"},[_c('el-breadcrumb',{attrs:{\"separator-class\":\"el-icon-arrow-right\"}},_vm._l((_vm.breadcrumbs),function(bread){return _c('el-breadcrumb-item',{key:bread.to,attrs:{\"to\":bread.to},domProps:{\"textContent\":_vm._s(bread.label)}})}),1)],1),_c('div',{staticClass:\"contentContainer\"},[_c('router-view',{staticClass:\"page-content\"})],1),_c('uploadFile')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.uploadVisible)?_c('div',{staticClass:\"uploadWarp\"},[_c('el-collapse',{staticStyle:{\"position\":\"absolute\",\"width\":\"100%\"},on:{\"change\":_vm.handleChange},model:{value:(_vm.activeNames),callback:function ($$v) {_vm.activeNames=$$v},expression:\"activeNames\"}},[_c('el-collapse-item',{attrs:{\"title\":\"同步中..\",\"name\":\"1\"}},[_c('div',[_vm._v(\"已成功同步100个文件,共200个文件\")]),_c('el-progress',{attrs:{\"text-inside\":true,\"show-text\":false,\"stroke-width\":2,\"percentage\":70}})],1)],1)],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div v-if='uploadVisible' class=\"uploadWarp\">\r\n <el-collapse v-model=\"activeNames\" @change=\"handleChange\" style=\"position: absolute; width: 100%\">\r\n <el-collapse-item title=\"同步中..\" name=\"1\">\r\n <div>已成功同步100个文件,共200个文件</div>\r\n <el-progress :text-inside=\"true\" :show-text='false' :stroke-width=\"2\" :percentage=\"70\"></el-progress>\r\n </el-collapse-item>\r\n </el-collapse>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapState } from 'vuex'\r\nexport default {\r\n components: {\r\n\r\n },\r\n props: [],\r\n data() {\r\n return {\r\n activeNames: true\r\n }\r\n },\r\n watch: {\r\n uploadVisible(nv, ov) {\r\n console.log({nv, ov})\r\n }\r\n },\r\n computed: {\r\n ...mapState('uploadFile', ['uploadVisible'])\r\n },\r\n mounted() {\r\n \r\n \r\n },\r\n methods: {\r\n \r\n },\r\n}\r\n</script>\r\n\r\n<style scoped lang='less'>\r\n .uploadWarp {\r\n position: fixed;\r\n right: 32px;\r\n bottom: 160px;\r\n width: 420px;\r\n\r\n }\r\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=1706b9a0&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=1706b9a0&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1706b9a0\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div id=\"pageRight\">\r\n <div class=\"headerContainer\">\r\n <div class=\"projectContainer\">\r\n <el-select\r\n v-model=\"selectProject\"\r\n value-key=\"id\"\r\n filterable\r\n placeholder=\"请选择\"\r\n >\r\n <el-option\r\n v-for=\"item in projects\"\r\n :key=\"item.id\"\r\n :label=\"item.name\"\r\n :value=\"item\"\r\n >\r\n </el-option>\r\n </el-select>\r\n </div>\r\n <div class=\"userContainer\">\r\n <el-popover trigger=\"hover\" popper-class=\"el-user-popover\">\r\n <div class=\"userPropExit\" @click=\"loginOut\">\r\n <i class=\"el-icon-switch-button\"></i>\r\n <span class=\"user-pro-oper\">退出登录</span>\r\n </div>\r\n <div class=\"userPropLine\"></div>\r\n <div class=\"userPropUpPass\">\r\n <i class=\"el-icon-unlock\"></i>\r\n <span class=\"user-pro-oper\">修改密码</span>\r\n </div>\r\n\r\n <div class=\"userInfo\" slot=\"reference\">\r\n <span v-text=\"user.name\"></span>\r\n <i class=\"el-icon-fa-user fa fa-user\"></i>\r\n </div>\r\n </el-popover>\r\n </div>\r\n </div>\r\n <div class=\"breadcContainer\">\r\n <el-breadcrumb separator-class=\"el-icon-arrow-right\">\r\n <el-breadcrumb-item\r\n v-for=\"bread in breadcrumbs\"\r\n :to=\"bread.to\"\r\n :key=\"bread.to\"\r\n v-text=\"bread.label\"\r\n ></el-breadcrumb-item>\r\n </el-breadcrumb>\r\n </div>\r\n <div class=\"contentContainer\">\r\n <router-view class=\"page-content\"></router-view>\r\n </div>\r\n <uploadFile />\r\n </div>\r\n</template>\r\n<script>\r\nimport { mapState } from \"vuex\";\r\nimport { sessionStore } from \"@/store/sessionStore\";\r\nimport { logicConfig } from '@/logicConfig'\r\nimport uploadFile from '@/components/uploadFile'\r\nexport default {\r\n props: [],\r\n data() {\r\n return {};\r\n },\r\n computed: {\r\n ...mapState([\"breadcrumbs\", \"projects\", \"user\"]),\r\n selectProject: {\r\n set(value) {\r\n this.$store.commit(\"updateSelectProject\", value);\r\n },\r\n get() {\r\n return this.$store.state.selectProject;\r\n },\r\n },\r\n },\r\n methods: {\r\n //注销\r\n loginOut: function () {\r\n this.$store.commit(\"loginOut\");\r\n sessionStore.loginOut();\r\n this.$router.replace({ path: logicConfig.routerNameConfig.loginRouteName });\r\n },\r\n },\r\n created() {},\r\n watch: {},\r\n mounted() {},\r\n components: {\r\n uploadFile\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n#pageRight {\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n.breadcContainer {\r\n height: 31px;\r\n border-bottom: 1px solid #333;\r\n margin: 0 10px 10px 10px;\r\n}\r\n\r\n.contentContainer {\r\n flex: 1;\r\n margin: 0 10px 10px 10px;\r\n overflow: hidden;\r\n}\r\n\r\n.contentContainer >div:first-child{\r\n height: 100%;\r\n overflow: hidden;\r\n}\r\n\r\n.headerContainer {\r\n height: 50px;\r\n background: #2b3643;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n}\r\n\r\n.projectContainer {\r\n flex: 1;\r\n}\r\n\r\n.userContainer {\r\n flex: 1;\r\n}\r\n\r\n.userInfo {\r\n float: right;\r\n margin-right: 20px;\r\n font-size: 18px;\r\n color: #409eff;\r\n cursor: pointer;\r\n}\r\n\r\n.el-icon-fa-user {\r\n font-family: FontAwesome !important;\r\n margin-left: 4px;\r\n}\r\n\r\n.user-pro-oper {\r\n margin-left: 4px;\r\n}\r\n\r\n.userPropExit {\r\n margin: 4px 8px 0px 8px;\r\n cursor: pointer;\r\n}\r\n.userPropUpPass {\r\n margin: 0px 8px;\r\n cursor: pointer;\r\n}\r\n\r\n.userPropLine {\r\n border-bottom: solid 1px #c0c4cc;\r\n}\r\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pageRight.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pageRight.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./pageRight.vue?vue&type=template&id=74f4f942&scoped=true&\"\nimport script from \"./pageRight.vue?vue&type=script&lang=js&\"\nexport * from \"./pageRight.vue?vue&type=script&lang=js&\"\nimport style0 from \"./pageRight.vue?vue&type=style&index=0&id=74f4f942&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"74f4f942\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <!-- <div id=\"page-main\" v-bind:class=\"{ 'page-sidebar-closed': sidebarClosed }\"> -->\r\n <div id=\"page-main\">\r\n <div class=\"leftRegion\">\r\n <pageLeft></pageLeft>\r\n </div>\r\n <div class=\"rightRegion\">\r\n <pageRight></pageRight>\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\nimport pageLeft from \"./components/frame/pageLeft\";\r\nimport pageRight from \"./components/frame/pageRight\";\r\n\r\nexport default {\r\n name: \"Main\",\r\n components: {\r\n pageLeft,\r\n pageRight\r\n },\r\n props: [],\r\n data() {\r\n return {};\r\n },\r\n computed: {},\r\n methods: {},\r\n watch: {},\r\n};\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n#page-main {\r\n height: 100%;\r\n width: 100%;\r\n display: flex;\r\n flex-direction: row;\r\n}\r\n\r\n.leftRegion {\r\n width: 235px;\r\n height: 100%;\r\n}\r\n.rightRegion {\r\n flex: 1;\r\n height: 100%;\r\n}\r\n</style>\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./Main.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./Main.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Main.vue?vue&type=template&id=1a813186&scoped=true&\"\nimport script from \"./Main.vue?vue&type=script&lang=js&\"\nexport * from \"./Main.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Main.vue?vue&type=style&index=0&id=1a813186&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a813186\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\",style:({ background: 'url(' + _vm.backUrl + ')' })},[_c('div',{staticStyle:{\"flex\":\"1\"}}),_c('div',{staticStyle:{\"display\":\"flex\",\"flex-direction\":\"column\"}},[_c('div',{staticStyle:{\"flex\":\"1\"}}),_c('div',{attrs:{\"id\":\"login-box\"}},[_c('h1',{staticClass:\"title\"},[_vm._v(\"ADM登录\")]),_c('div',{staticClass:\"form\"},[_c('div',{staticClass:\"item\"},[_c('i',{staticClass:\"el-icon-user\"}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userName),expression:\"userName\"}],attrs:{\"type\":\"text\",\"placeholder\":\"请输入用户名\"},domProps:{\"value\":(_vm.userName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.userName=$event.target.value}}})]),_c('div',{staticClass:\"item\"},[_c('i',{staticClass:\"el-icon-lock\"}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userPass),expression:\"userPass\"},{name:\"loading\",rawName:\"v-loading.fullscreen.lock\",value:(_vm.fullscreenLoading),expression:\"fullscreenLoading\",modifiers:{\"fullscreen\":true,\"lock\":true}}],attrs:{\"type\":\"password\",\"placeholder\":\"请输入密码\"},domProps:{\"value\":(_vm.userPass)},on:{\"keyup\":function($event){$event.stopPropagation();return _vm.passTxtKeyUp($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.userPass=$event.target.value}}})])]),_c('button',{on:{\"click\":_vm.startLogin}},[_vm._v(\"Login\")])]),_c('div',{staticStyle:{\"flex\":\"1\"}})]),_c('div',{staticStyle:{\"flex\":\"1\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"container\" :style=\"{ background: 'url(' + backUrl + ')' }\">\r\n <div style=\"flex: 1\"></div>\r\n <div style=\"display: flex; flex-direction: column\">\r\n <div style=\"flex: 1\"></div>\r\n <div id=\"login-box\">\r\n <h1 class=\"title\">ADM登录</h1>\r\n <div class=\"form\">\r\n <div class=\"item\">\r\n <i class=\"el-icon-user\"></i>\r\n <input type=\"text\" placeholder=\"请输入用户名\" v-model=\"userName\" />\r\n </div>\r\n <div class=\"item\">\r\n <i class=\"el-icon-lock\"></i>\r\n <input\r\n type=\"password\"\r\n placeholder=\"请输入密码\"\r\n v-model=\"userPass\"\r\n @keyup.stop=\"passTxtKeyUp($event)\"\r\n v-loading.fullscreen.lock=\"fullscreenLoading\"\r\n />\r\n </div>\r\n </div>\r\n <button @click=\"startLogin\">Login</button>\r\n </div>\r\n <div style=\"flex: 1\"></div>\r\n </div>\r\n <div style=\"flex: 1\"></div>\r\n </div>\r\n</template>\r\n<script>\r\nimport vueStore from \"@/store\";\r\nimport { sessionStore } from \"@/store/sessionStore\";\r\nimport { userController } from \"@/controller/userController\";\r\nimport { logicConfig } from \"@/logicConfig\";\r\nimport { Message } from \"element-ui\";\r\n\r\nexport default {\r\n name: \"login\",\r\n props: [],\r\n data() {\r\n return {\r\n backUrl: require(\"@/assets/images/login_bg.png\"),\r\n userName: \"\",\r\n userPass: \"\",\r\n fullscreenLoading: false,\r\n };\r\n },\r\n computed: {},\r\n methods: {\r\n //登录按钮事件\r\n startLogin: async function () {\r\n if (!this.userName) return Message.warning(\"请填写用户名\");\r\n if (!this.userPass) return Message.warning(\"请填写密码\");\r\n this.fullscreenLoading = true;\r\n try {\r\n let userControllerInstance = new userController();\r\n let loginResult = await userControllerInstance.login(\r\n this.userName,\r\n this.userPass\r\n );\r\n\r\n if (loginResult.result != logicConfig.resultObj.success)\r\n return (\r\n (this.fullscreenLoading = false),\r\n Message.error(\"登录失败,原因:\" + loginResult.reason)\r\n );\r\n\r\n var _userInfo = loginResult.content[0] || {};\r\n var userId = _userInfo.userId;\r\n if (!userId)\r\n return (\r\n (this.fullscreenLoading = false),\r\n Message.error(\"登录失败,原因:无效的用户ID\")\r\n );\r\n sessionStore.userId = _userInfo.userId;\r\n\r\n this.$router.replace({ path: vueStore.state.fromPath });\r\n } catch (err) {\r\n this.fullscreenLoading = false;\r\n console.error(\"登录失败:\", err);\r\n Message.error(\"登录失败\");\r\n }\r\n },\r\n //密码框键盘起来事件\r\n passTxtKeyUp: function (event) {\r\n if (event.keyCode == 13) this.startLogin();\r\n },\r\n },\r\n created() {},\r\n mounted() {},\r\n components: {},\r\n};\r\n</script>\r\n<style scoped>\r\n.container {\r\n display: flex;\r\n flex-direction: row;\r\n width: 100%;\r\n height: 100%;\r\n background-repeat: no-repeat !important;\r\n background-size: 100% 100% !important;\r\n overflow: hidden;\r\n}\r\n\r\n#login-box {\r\n text-align: center;\r\n background: #00000080;\r\n padding: 20px 50px;\r\n width: 450px;\r\n}\r\n\r\n.title {\r\n color: #ffffff;\r\n font-size: 32px;\r\n}\r\n\r\n.form {\r\n margin-top: 50px;\r\n}\r\n.item {\r\n margin-top: 15px;\r\n}\r\n\r\n.form i {\r\n font-size: 18px;\r\n color: #fff;\r\n width: 16px;\r\n height: 16px;\r\n}\r\n\r\n.form input {\r\n width: 180px;\r\n font-size: 18px;\r\n border: 0;\r\n border-bottom: 2px solid #fff;\r\n padding: 5px 10px;\r\n background: #ffffff00;\r\n color: #fff;\r\n}\r\n\r\n#login-box button {\r\n margin-top: 15px;\r\n cursor: pointer;\r\n width: 180px;\r\n height: 30px;\r\n font-size: 20px;\r\n font-weight: 700;\r\n border: 0;\r\n background-image: linear-gradient(\r\n 90deg,\r\n #b8cbb8 0,\r\n #b8cbb8 0,\r\n #ddbaee 0,\r\n #e8a8ee 33%,\r\n #b8d9f8 66%,\r\n #59bcf5\r\n );\r\n border-radius: 15px;\r\n}\r\n\r\n@font-face {\r\n font-family: login_iconfont;\r\n src: url(data:font/woff2;base64,d09GMgABAAAAAAOYAAsAAAAAB6QAAANLAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACDBgqCfIJyATYCJAMMCwgABCAFhGcHOBvQBhHVm6PIfiQYN41nZd3meYYVNZK+CR4+//zuzLzkA/aSyUo4/VagStdbpwECwNhuzTlC4aMmS7J25NE/5P+L6aXpQHix///e8f+V+LwWAMwxuBM+sDygD9qYi6ZQJ0/QW2R3BWKR+yAAS+LlksWl1c3YTg8smIUnDbNSQFIspifGBjAXdGgNxQJzBHpoXw2xCx3IzfIZsDP4vPhHYuYg0SnMhepHS4a59XPkt5symAx0q28YxivB9SWgAxQQvTKD6G22taOiWDSFZZVMI9l6NARy1KDJRMDTJHrrDw8kAoQes9AagHASl/BzxGFBwm83wVkXKgD0OGEErlOK850UytvSPtNezBfGDx+2vHsHW57dQhpuP7ey2fryrlDGOy8GjXdfbn1+G6xHDJcsrbdcqZBcrUu7zFKjq7BzP3xofflRfOzrbjG8r/HaNO9zdjEcPr/14lEhrD6a1DarrVbv7S1WosLjKhad5Tj6GO/eFVtaPvjwQbwzteTpAwMZC2y2P2FmS9Bpz6CoQM8zQVeCzngGRgV5nl7c7EpKy2q3sPqKwybHK46bHKIcg3UcyZgbSJ2ynjBeHYq6lL+iVFRWrltffcxm++cQlWUFyw8NRhou24y76KXVnki3yD1WCLOq5lXrq2s1Bwtzlx2yU+zcOwVWezJdI89Y0p/unNLWlTRJd0J6izYe29WaUezkWNycHteeRD8ApveqVUWB6aY6oPJ/2294IaV9n132f3MrDYDvPsu0wGO6qQHLB3MkgHk/SQ4QqWl+UFoVv7FQAIqqe41IwNIKggnT5ehHf4cTEovAXOBjkJjhBQpzAjGNEgk6rEgEPebkgCVRSgZb4WQOCqFZAKHWIhDYuwwSW26Awt5DTKN8BB2ufoEee+QfNl7tx9s6ZI6MStCC/kFhqHW2UgKiN/RDrbgs/ELuCxyENEryySu2yEN06N8+E3HgmBq4cIthXRN0TCUaiYJIl8exq7pJZKgZHTGkCGQB7QcUDNJyHlqy33eDvEFNYSD2irFegYmDVCQBYFdZCyq7kkl6b15GCAc4jBINcBEsqFZjBHTVtUrIEJHQI9LJxRbKQWXR/Irm4VYBlsxpVVIooTE/mSpd/Kj1YRiNAAA=)\r\n format(\"woff2\"),\r\n url(data:font/woff;base64,d09GRgABAAAAAAUYAAsAAAAAB6QAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIslek9TLzIAAAFEAAAARAAAAGA81krnY21hcAAAAYgAAABYAAABhm1w0ZdnbHlmAAAB4AAAAU4AAAF8bAZJImhlYWQAAAMwAAAALwAAADYdWjgEaGhlYQAAA2AAAAAcAAAAJAeCA4RobXR4AAADfAAAAAwAAAAMDAAAAGxvY2EAAAOIAAAACAAAAAgAUgC+bWF4cAAAA5AAAAAeAAAAIAEQAFduYW1lAAADsAAAAUAAAAJnEKM8sHBvc3QAAATwAAAAJwAAADhGZw3ieJxjYGRgYOBiMGCwY2BycfMJYeDLSSzJY5BiYGGAAJA8MpsxJzM9kYEDxgPKsYBpDiBmg4gCACY7BUgAeJxjYGFhYJzAwMrAwNTJdIaBgaEfQjO+ZjBi5ACKMrAyM2AFAWmuKQwHnqW+EGdu+N/AEMN8h6EBKMyIoogJAHmXDTp4nO2QsQ2AMAwE7xNIgeizAgUDUdGxOsoWwXZgC146v/1OGgMzkI3dmEAnwnVYqsgzS+RTvCnmIt1Xq73D5ybZrpgn/6fCrzXq9k7JrzXwvtUBegDLDw8+eJwljl9LwmAUxs9536amJOyPjhENnJjIwnTba2yDUV0YNYdXswK7sW6s2y4LK3D0CbwKupe+Q5/Cj9PsnR4Oz+E85znwAwqwXtERNWEfGsAAkDltNMp4kElFVHS0a1aATOR2wwnQ0vmphkquXjMOudvj52qFrNzJ88St+4bh13G5memn4fd9Yw34pknpSNI0CZeSRiD2Jh7vmEfTFReeRpNLvH2P01jUNBHN7AN4ZYy/dEFPwYVLuAIQOk3mNNvY5Fy9Da2qVNUy5nN5lQNnuF07ICe2ZetEtbtbr9nFgOqEx0xsE0YXiHsfD/4ZCZOvJCTn3v17mSAWZVUuYiFOhuJuYZjEBSwqVbmEf9+kN366c4XjayZLLO6oSISdx5+j1ms/nEfRPLx4aZnLaS5PS3KJ92AWCUI0G2w34rIbB63RdOwJgntrA/wDxvhEqwAAeJxjYGRgYADie0xMAvH8Nl8ZuFkYQOCubBULgv6/n4WB2QHI5WBgAokCANdeB6IAeJxjYGRgYG7438DAwMIAAkCSkQEVMAMAPVUCEAQAAAAEAAAABAAAAAAAAAAAUgC+eJxjYGRgYGBm8AZiEGACYi4gZGD4D+YzAAAQMwFoAAB4nIWRPW7CQBCFn8GQBJQoSqQ0aVYpKBLJ/JRIqVCgp6AHs+ZHttdaL0jUOU2OkBPkCOloc4pIedhDA0W82tlv3r6ZHckA7rCHh/K75y7ZwyWzkiu4wKNwlfqTsE9+Fq6hiZ5wnfqrcAMveBNusmPGDp5/xayFd2EPt/gQruAGn8JV6l/CPvlbuIYH/AjXqf8KNzDxroWbaHnhwOqp03M126lVaNLIpO54jvViE0/tqTzRNl+ZVHWDzlEa6VTbY5t8u+g5F6nImkQNeavj2KjMmrUOXbB0Luu325HoQWgSDGChMYVjnENhhh3jCiEMUkRFdGf5mO4FNohZaf91T+i2yKkfcoUuAnTOXCO60sJ5Ok2OLV/rUXV0K27LmoQ0lFrNSWKy4g883K2phNQDLIuqDH20uaITf1DMkPwB2JNvV3icY2BigAAuBuyAmZGJkZmRhYE1Jz8525CtMj8vPaOUgQEAKT4EmwA=)\r\n format(\"woff\"),\r\n url(data:font/ttf;base64,AAEAAAALAIAAAwAwR1NVQiCLJXoAAAE4AAAAVE9TLzI81krnAAABjAAAAGBjbWFwbXDRlwAAAfgAAAGGZ2x5ZmwGSSIAAAOIAAABfGhlYWQdWjgEAAAA4AAAADZoaGVhB4IDhAAAALwAAAAkaG10eAwAAAAAAAHsAAAADGxvY2EAUgC+AAADgAAAAAhtYXhwARAAVwAAARgAAAAgbmFtZRCjPLAAAAUEAAACZ3Bvc3RGZw3iAAAHbAAAADgAAQAAA4D/gAAABAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAMAAQAAAAEAAN4CAhBfDzz1AAsEAAAAAADdHXoEAAAAAN0degQAAP+/BAADQAAAAAgAAgAAAAAAAAABAAAAAwBLAAMAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKADAAPgACREZMVAAObGF0bgAaAAQAAAAAAAAAAQAAAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAQEAAGQAAUAAAKJAswAAACPAokCzAAAAesAMgEIAAACAAUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBmRWQAwOZl6BcDgP+AAFwD3ACAAAAAAQAAAAAAAAAAAAAAAAACBAAAAAQAAAAEAAAAAAAABQAAAAMAAAAsAAAABAAAAV4AAQAAAAAAWAADAAEAAAAsAAMACgAAAV4ABAAsAAAABgAEAAEAAuZl6Bf//wAA5mXoF///AAAAAAABAAYABgAAAAIAAQAAAQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAKAAAAAAAAAACAADmZQAA5mUAAAACAADoFwAA6BcAAAABAAAAAAAAAFIAvgADAAD/1QNWAysAGwAlADUAAAE1NC4BIg4BHQEiDgEVERQeATMhMj4BNRE0LgElND4BMh4BHQEhARQGIyEiJjURNDYzITIWFQLVOWJ0YjkjOyIiOyMBqiM7IiI7/ogiO0Y7Iv8AAYAZEv5WEhkZEgGqEhkCAFU6Yjo6YjpVIjsj/tUiOyMjOyIBKyM7IlUjOyIiOyNV/lURGRkRASsSGRkSAAAAAAMAAP+/A5YDQAA5AEkASgAABTAnNTQnLgEnPgE1Ni4BIg4BFxQWFw4BBwYHFxQeATI+ATUxMz4CNzMyMx4CFzMxFB4BMj4BJzEBPgMeAg4BBysBLgI1A5YBAQ2CZDtBAkuGnIZLAkI6Y4EOAgEBChMXEwoBCFWGTxEJCE+GVQgBChQWEwsB/Z8CNlxrXTkFL1c1ExI1VTAXAQIFBGqsLCl9RkuFTU2FS0d8KSuqaQYHAwsTCwsTC0x/TQUFTX9MCxMLCxMLAjk1WDQBMlZpXDoFBTlZMwAAAAAAEgDeAAEAAAAAAAAAEwAAAAEAAAAAAAEACAATAAEAAAAAAAIABwAbAAEAAAAAAAMACAAiAAEAAAAAAAQACAAqAAEAAAAAAAUACwAyAAEAAAAAAAYACAA9AAEAAAAAAAoAKwBFAAEAAAAAAAsAEwBwAAMAAQQJAAAAJgCDAAMAAQQJAAEAEACpAAMAAQQJAAIADgC5AAMAAQQJAAMAEADHAAMAAQQJAAQAEADXAAMAAQQJAAUAFgDnAAMAAQQJAAYAEAD9AAMAAQQJAAoAVgENAAMAAQQJAAsAJgFjQ3JlYXRlZCBieSBpY29uZm9udGljb25mb250UmVndWxhcmljb25mb250aWNvbmZvbnRWZXJzaW9uIDEuMGljb25mb250R2VuZXJhdGVkIGJ5IHN2ZzJ0dGYgZnJvbSBGb250ZWxsbyBwcm9qZWN0Lmh0dHA6Ly9mb250ZWxsby5jb20AQwByAGUAYQB0AGUAZAAgAGIAeQAgAGkAYwBvAG4AZgBvAG4AdABpAGMAbwBuAGYAbwBuAHQAUgBlAGcAdQBsAGEAcgBpAGMAbwBuAGYAbwBuAHQAaQBjAG8AbgBmAG8AbgB0AFYAZQByAHMAaQBvAG4AIAAxAC4AMABpAGMAbwBuAGYAbwBuAHQARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAACAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBAgEDAQQABWxvY2sxBnlvbmdodQAA)\r\n format(\"truetype\");\r\n}\r\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./login.vue?vue&type=template&id=568bc516&scoped=true&\"\nimport script from \"./login.vue?vue&type=script&lang=js&\"\nexport * from \"./login.vue?vue&type=script&lang=js&\"\nimport style0 from \"./login.vue?vue&type=style&index=0&id=568bc516&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"568bc516\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading.fullscreen.lock\",value:(_vm.fullscreenLoading),expression:\"fullscreenLoading\",modifiers:{\"fullscreen\":true,\"lock\":true}}],staticClass:\"container\"},[_c('div',{staticClass:\"header\"},[_c('div',{staticClass:\"searchInputDiv\"},[_c('el-input',{attrs:{\"placeholder\":\"搜索系统实例\",\"prefix-icon\":\"el-icon-search\"},on:{\"input\":_vm.searchInputChange},model:{value:(_vm.searchVal),callback:function ($$v) {_vm.searchVal=$$v},expression:\"searchVal\"}})],1),_c('div',{staticClass:\"addDiv\"},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.createSystemGraph}},[_vm._v(\"新建系统图\")])],1)]),_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"tableContainer\"},[_c('el-table',{staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.graphArr,\"border\":\"\"}},[_c('el-table-column',{attrs:{\"prop\":\"name\",\"label\":\"系统图名称\"}}),_c('el-table-column',{attrs:{\"prop\":\"sysType\",\"label\":\"系统类\"}}),_c('el-table-column',{attrs:{\"prop\":\"sysInstance\",\"label\":\"系统实例名称\"}}),_c('el-table-column',{attrs:{\"prop\":\"sysTemplate\",\"label\":\"系统图模版\"}}),_c('el-table-column',{attrs:{\"prop\":\"stateName\",\"label\":\"状态\"}}),_c('el-table-column',{attrs:{\"prop\":\"createTime\",\"label\":\"创建时间\"}}),_c('el-table-column',{attrs:{\"label\":\"操作\",\"width\":\"100\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.viewGraph(scope.row)}}},[_vm._v(\"预览\")]),_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.editGraph(scope.row)}}},[_vm._v(\"编辑\")])]}}])})],1)],1),_c('div',{staticClass:\"pageContainer\"},[(_vm.dataCount > 0)?_c('el-pagination',{attrs:{\"background\":\"\",\"current-page\":_vm.currentPage,\"page-sizes\":[20, 30, 50, 100],\"page-size\":_vm.pageSize,\"layout\":\"total, prev, pager, next, sizes\",\"total\":_vm.dataCount},on:{\"size-change\":_vm.handlePageSizeChange,\"current-change\":_vm.handleCurrentPageChange}}):_vm._e()],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"container\" v-loading.fullscreen.lock=\"fullscreenLoading\">\r\n <div class=\"header\">\r\n <div class=\"searchInputDiv\">\r\n <el-input\r\n placeholder=\"搜索系统实例\"\r\n prefix-icon=\"el-icon-search\"\r\n v-model=\"searchVal\"\r\n @input=\"searchInputChange\"\r\n >\r\n </el-input>\r\n </div>\r\n <div class=\"addDiv\">\r\n <el-button type=\"primary\" @click=\"createSystemGraph\"\r\n >新建系统图</el-button\r\n >\r\n </div>\r\n </div>\r\n <div class=\"content\">\r\n <div class=\"tableContainer\">\r\n <el-table :data=\"graphArr\" border style=\"width: 100%\">\r\n <el-table-column prop=\"name\" label=\"系统图名称\"> </el-table-column>\r\n <el-table-column prop=\"sysType\" label=\"系统类\"> </el-table-column>\r\n <el-table-column prop=\"sysInstance\" label=\"系统实例名称\">\r\n </el-table-column>\r\n <el-table-column prop=\"sysTemplate\" label=\"系统图模版\">\r\n </el-table-column>\r\n <el-table-column prop=\"stateName\" label=\"状态\"> </el-table-column>\r\n <el-table-column prop=\"createTime\" label=\"创建时间\">\r\n </el-table-column>\r\n <el-table-column label=\"操作\" width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <el-button type=\"text\" size=\"small\" @click=\"viewGraph(scope.row)\"\r\n >预览</el-button\r\n >\r\n <el-button type=\"text\" size=\"small\" @click=\"editGraph(scope.row)\"\r\n >编辑</el-button\r\n >\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n </div>\r\n\r\n <div class=\"pageContainer\">\r\n <el-pagination\r\n background\r\n v-if=\"dataCount > 0\"\r\n @size-change=\"handlePageSizeChange\"\r\n @current-change=\"handleCurrentPageChange\"\r\n :current-page=\"currentPage\"\r\n :page-sizes=\"[20, 30, 50, 100]\"\r\n :page-size=\"pageSize\"\r\n layout=\"total, prev, pager, next, sizes\"\r\n :total=\"dataCount\"\r\n >\r\n </el-pagination>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\nimport { mapState } from \"vuex\";\r\nimport { logicConfig } from \"@/logicConfig\";\r\nimport packageConfig from \"../../../package.json\";\r\nimport { sysGraphController } from \"@/controller/systemGraph/sysGraphController\";\r\nimport { TextureLoader } from \"@pixi/loaders\";\r\n\r\nexport default {\r\n props: [],\r\n data() {\r\n return {\r\n //搜索关键字\r\n searchVal: \"\",\r\n //后台返回的所有的数据\r\n allGraphArr: [],\r\n //用于表格内绑定\r\n graphArr: [],\r\n //当前页码\r\n currentPage: 1,\r\n //每页条数\r\n pageSize: 20,\r\n //总条数\r\n dataCount: 0,\r\n //进入编辑页面时的状态 0 预览; 1 编辑; 2 新建\r\n state: 0,\r\n //选择的某一个系统图\r\n selDiagram: {},\r\n fullscreenLoading: true,\r\n };\r\n },\r\n computed: {\r\n ...mapState([\"selectProject\"]),\r\n },\r\n methods: {\r\n //每页条数改变\r\n handlePageSizeChange: function (pageSize) {\r\n this.currentPage = 1;\r\n this.pageSize = pageSize;\r\n this.getCurrPageData();\r\n },\r\n //页码改变\r\n handleCurrentPageChange: function (currentPage) {\r\n this.currentPage = currentPage;\r\n this.getCurrPageData();\r\n },\r\n //新建系统图\r\n createSystemGraph: function () {\r\n this.state = 2;\r\n this.selDiagram = {};\r\n this.openGraphPage();\r\n },\r\n //预览系统图\r\n viewGraph: function (item) {\r\n this.state = 0;\r\n this.selDiagram = item;\r\n this.openGraphPage();\r\n },\r\n //编辑系统图\r\n editGraph: function (item) {\r\n this.state = 1;\r\n this.selDiagram = item;\r\n this.openGraphPage();\r\n },\r\n //从allGraphArr中取出对应页数的数据\r\n getCurrPageData: function () {\r\n var startIndex = (this.currentPage - 1) * this.pageSize;\r\n var endIndex = startIndex + this.pageSize;\r\n this.graphArr = this.allGraphArr.slice(startIndex, endIndex);\r\n },\r\n //关键词输入框输入改变事件\r\n searchInputChange: function () {\r\n this.currentPage = 1;\r\n this.getData();\r\n },\r\n //查询数据\r\n getData: async function () {\r\n try {\r\n this.allGraphArr = await sysGraphController.getDiagrams(this.searchVal);\r\n this.dataCount = this.allGraphArr.length;\r\n this.getCurrPageData();\r\n\r\n this.fullscreenLoading = false;\r\n } catch (error) {\r\n console.error(error);\r\n this.allGraphArr = [];\r\n this.graphArr = [];\r\n this.dataCount = 0;\r\n this.fullscreenLoading = false;\r\n }\r\n },\r\n //打开系统图新增、预览、编辑页面\r\n openGraphPage: function () {\r\n sysGraphController.openGraphPage(\r\n this.state,\r\n this.selDiagram.id,\r\n this.selectProject.groupCode,\r\n this.selectProject.id,\r\n this.selectProject.name,\r\n packageConfig.name,\r\n true\r\n );\r\n },\r\n },\r\n created() {\r\n this.getData();\r\n },\r\n mounted() {},\r\n components: {},\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.container {\r\n display: flex;\r\n flex-direction: column;\r\n background: #ffffff;\r\n}\r\n\r\n.header {\r\n height: 70px;\r\n line-height: 70px;\r\n text-align: right;\r\n}\r\n\r\n.content {\r\n flex: 1;\r\n overflow: hidden;\r\n}\r\n\r\n.searchInputDiv {\r\n width: 150px;\r\n height: 100%;\r\n display: inline-block;\r\n}\r\n\r\n.addDiv {\r\n width: 100px;\r\n height: 100%;\r\n display: inline-block;\r\n}\r\n\r\n.tableContainer {\r\n height: calc(100% - 148px);\r\n overflow: auto;\r\n}\r\n\r\n.pageContainer {\r\n margin-top: 66px;\r\n margin-bottom: 50px;\r\n}\r\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=76ef3930&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=76ef3930&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"76ef3930\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading.fullscreen.lock\",value:(_vm.fullscreenLoading),expression:\"fullscreenLoading\",modifiers:{\"fullscreen\":true,\"lock\":true}}],attrs:{\"id\":\"divGraphEdit\"}},[_c('div',{staticClass:\"firstRow\"},[_c('div',{staticClass:\"firstOperDivContainer\"},[_c('img',{staticClass:\"imgBar\",attrs:{\"src\":require(\"../../assets/images/systemGraph/editLogo.svg\")}}),_c('span',{staticClass:\"headerTitle\"},[_vm._v(\"系统图编辑器\")]),(_vm.operState === 0)?_c('div',{staticClass:\"operBtnDiv\"},[_c('span',{on:{\"click\":_vm.intoEditState}},[_vm._v(\"编辑系统图\")]),((_vm.graphInfo.extraProps || {}).state == 'Draft')?_c('span',{on:{\"click\":_vm.publishGraph}},[_vm._v(\"上架系统图\")]):_vm._e(),((_vm.graphInfo.extraProps || {}).state == 'Publish')?_c('span',{on:{\"click\":_vm.draftGraph}},[_vm._v(\"下架系统图\")]):_vm._e()]):_vm._e(),(_vm.operState === 1)?_c('div',{staticClass:\"operBtnDiv\"},[_c('span',{on:{\"click\":_vm.saveGraph}},[_vm._v(\"保存图纸\")]),_c('span',{on:{\"click\":_vm.cancelClick}},[_vm._v(\"放弃编辑\")])]):_vm._e(),_c('span',{staticClass:\"delBtn\",on:{\"click\":_vm.delGraph}},[_vm._v(\"删除图纸\")])]),_c('div',{staticClass:\"secondOperDivContainer\"},[_c('img',{staticClass:\"imgBar\",attrs:{\"src\":require(\"../../assets/images/systemGraph/barController.svg\")},on:{\"click\":_vm.toggleLeft}}),_c('span',{staticClass:\"sanjiaoBar\",class:{\n 'el-icon-caret-bottom': _vm.isVisibleLeft,\n 'el-icon-caret-top': !_vm.isVisibleLeft,\n },on:{\"click\":_vm.toggleLeft}}),_c('hr',{staticClass:\"splitLine\"}),_c('el-select',{attrs:{\"value-key\":\"value\"},on:{\"change\":_vm.selScaleChange},model:{value:(_vm.selectScale),callback:function ($$v) {_vm.selectScale=$$v},expression:\"selectScale\"}},_vm._l((_vm.scaleArr),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.name,\"value\":item}})}),1),_c('span',{staticClass:\"el-icon-zoom-in zoomin\",on:{\"click\":_vm.scaleZoomin}}),_c('span',{staticClass:\"el-icon-zoom-out zoomout\",on:{\"click\":_vm.scaleZoomout}}),(_vm.operState == 1)?_c('span',{staticClass:\"resetBtn\"},[_vm._v(\"重置为自动出图样式\")]):_vm._e()],1)]),_c('div',{staticClass:\"secondRow\"},[((_vm.operState === 0 || _vm.operState === 1) && _vm.isVisibleLeft)?_c('div',{staticClass:\"graphInfoContainer\"},[_c('div',{staticClass:\"graphInfoFirst\"},[_c('span',{staticClass:\"graphInfoName\"},[_vm._v(\"系统图名称\")]),(_vm.operState === 0)?_c('span',{staticClass:\"graphInfoFirstEdit\",on:{\"click\":_vm.intoEditState}},[_vm._v(\"编辑\")]):_vm._e()]),_c('div',{staticClass:\"graphInfoContent\"},[_c('span',{domProps:{\"textContent\":_vm._s(_vm.graphInfo.name)}},[_vm._v(\"高压系统1#系统图\")])]),_vm._m(0),_c('div',{staticClass:\"graphInfoContent\"},[_c('span',{domProps:{\"textContent\":_vm._s(_vm.graphInfo.graphTypeName)}},[_vm._v(\"高压配电\")])]),_vm._m(1),_c('div',{staticClass:\"graphInfoContent\"},[_c('span',{domProps:{\"textContent\":_vm._s(_vm.graphInfo.systemInstanceName)}},[_vm._v(\"实例1\")])]),_vm._m(2),_c('div',{staticClass:\"graphInfoContent\"},[_c('span',{domProps:{\"textContent\":_vm._s(_vm.graphInfo.templateName)}},[_vm._v(\"模版1\")])]),_vm._m(3),_c('div',{staticClass:\"graphInfoContent\"},[_c('span',{domProps:{\"textContent\":_vm._s(_vm.project.name)}},[_vm._v(\"银泰中心\")])]),_vm._m(4),_c('div',{staticClass:\"graphInfoContent\"},[_c('span',{domProps:{\"textContent\":_vm._s(_vm.graphInfo.stateName)}},[_vm._v(\"草稿\")])])]):_vm._e(),_c('div',{staticClass:\"graphRegion\"},[_c('graph',{ref:\"graphc\",on:{\"click\":_vm.graphClickCall}})],1),(_vm.selGraphPartType != -1)?_c('div',{staticClass:\"rightDetail\"},[(_vm.selGraphPartType == 1)?_c('div',[_c('div',{staticClass:\"title titleMargin\"},[_vm._v(\"设备类\")]),_c('div',{staticClass:\"titleText eqName\",domProps:{\"textContent\":_vm._s(_vm.selEquip.name)}},[_vm._v(\"进线柜\")]),_c('div',{staticClass:\"detailSplitLine\"}),_c('div',{staticClass:\"title titleMargin\"},[_c('span',[_vm._v(\"x\")]),_c('span',{staticClass:\"coridTitleText titleText\",domProps:{\"textContent\":_vm._s((_vm.selEquip.absolutePosition || {}).x)}},[_vm._v(\"100\")]),_c('span',{staticClass:\"coridTitle2\"},[_vm._v(\"y\")]),_c('span',{staticClass:\"coridTitleText titleText\",domProps:{\"textContent\":_vm._s((_vm.selEquip.absolutePosition || {}).y)}},[_vm._v(\"100\")])]),_vm._m(5),_c('div',{staticClass:\"detailSplitLine\"}),_c('div',{staticClass:\"title titleMargin\"},[_vm._v(\"锚点\")]),_vm._l((_vm.selEquip.anchorArr),function(anchor){return _c('div',{key:anchor.name,staticClass:\"anchorContainer\"},[_c('span',{domProps:{\"textContent\":_vm._s(anchor.name)}},[_vm._v(\"T3\")]),_c('span',[_vm._v(\"已连接\")])])})],2):_vm._e(),(_vm.selGraphPartType == 2)?_c('div',[_c('div',{staticClass:\"title titleMargin\"},[_vm._v(\"连线\")]),_c('div',{staticClass:\"detailSplitLine\"}),_vm._m(6),_vm._m(7),_c('div',{staticClass:\"detailSplitLine\"}),_c('div',{staticClass:\"title titleMargin\"},[_vm._v(\"连接关系\")]),_c('div',{staticClass:\"titleMargin\"},[_c('el-select',{attrs:{\"value-key\":\"id\"},on:{\"change\":_vm.selStartPointChange},model:{value:(_vm.selLineStartPoint),callback:function ($$v) {_vm.selLineStartPoint=$$v},expression:\"selLineStartPoint\"}},[_c('div',{staticClass:\"selectPrefix\",attrs:{\"slot\":\"prefix\"},slot:\"prefix\"},[_vm._v(\"起点\")]),_vm._l((_vm.lineStartPointArr),function(item){return _c('el-option',{key:item.id,attrs:{\"label\":item.name,\"value\":item}})})],2)],1),_c('div',{staticClass:\"titleMargin\"},[_c('el-select',{attrs:{\"value-key\":\"id\"},on:{\"change\":_vm.selEndPointChange},model:{value:(_vm.selLineEndPoint),callback:function ($$v) {_vm.selLineEndPoint=$$v},expression:\"selLineEndPoint\"}},[_c('div',{staticClass:\"selectPrefix\",attrs:{\"slot\":\"prefix\"},slot:\"prefix\"},[_vm._v(\"终点\")]),_vm._l((_vm.lineEndPointArr),function(item){return _c('el-option',{key:item.id,attrs:{\"label\":item.name,\"value\":item}})})],2)],1)]):_vm._e(),(_vm.selGraphPartType == 3)?_c('div',[_c('div',{staticClass:\"title titleMargin\"},[_vm._v(\"文字\")]),_c('div',{staticClass:\"titleText eqName\"},[_vm._v(\"1#进线柜\")]),_c('div',{staticClass:\"detailSplitLine\"}),_vm._m(8),_c('div',{staticClass:\"detailSplitLine\"}),_c('div',{staticClass:\"title titleMargin\"},[_vm._v(\"字体样式\")]),_c('div',{staticClass:\"titleMargin fontSizeContainer\"},[_c('img',{staticClass:\"fontStyleSvg\",attrs:{\"src\":require(\"@/assets/images/systemGraph/fontStyle.svg\")}}),_c('el-select',{attrs:{\"value-key\":\"id\",\"placeholder\":\"\"},on:{\"change\":_vm.selFontSizeChange},model:{value:(_vm.selFontSize),callback:function ($$v) {_vm.selFontSize=$$v},expression:\"selFontSize\"}},_vm._l((_vm.fontSizeArr),function(item){return _c('el-option',{key:item.id,attrs:{\"label\":item.name,\"value\":item}})}),1)],1),_c('div',{staticClass:\"title titleMargin\"},[_vm._v(\"字体颜色\")]),_c('div',{staticClass:\"titleMargin fontColor\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.fontColor),expression:\"fontColor\"}],attrs:{\"type\":\"color\"},domProps:{\"value\":(_vm.fontColor)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.fontColor=$event.target.value}}}),_c('div',{domProps:{\"textContent\":_vm._s(_vm.fontColor)}}),_c('div',[_vm._v(\"100%\")])]),_c('div',{staticClass:\"title titleMargin\"},[_vm._v(\"背景颜色\")]),_c('div',{staticClass:\"titleMargin fontColor\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.backColor),expression:\"backColor\"}],attrs:{\"type\":\"color\"},domProps:{\"value\":(_vm.backColor)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.backColor=$event.target.value}}}),_c('div',{domProps:{\"textContent\":_vm._s(_vm.backColor)}}),_c('div',[_vm._v(\"100%\")])])]):_vm._e(),(_vm.selGraphPartType == 1)?_c('div',{staticClass:\"delBtn\"},[_vm._v(\"删除设备\")]):_vm._e(),(_vm.selGraphPartType == 2)?_c('div',{staticClass:\"delBtn\"},[_vm._v(\"删除管线\")]):_vm._e(),(_vm.selGraphPartType == 3)?_c('div',{staticClass:\"delBtn\"},[_vm._v(\"删除文字\")]):_vm._e()]):_vm._e()]),(_vm.operState == 2)?_c('addGraph',{attrs:{\"isVisible\":_vm.operState == 2}}):_vm._e()],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"graphInfoName\"},[_c('span',[_vm._v(\"系统图类型\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"graphInfoName\"},[_c('span',[_vm._v(\"系统实例\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"graphInfoName\"},[_c('span',[_vm._v(\"系统图模版\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"graphInfoName\"},[_c('span',[_vm._v(\"所属项目\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"graphInfoName\"},[_c('span',[_vm._v(\"当前状态\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"title titleMargin\"},[_c('span',[_vm._v(\"比例\")]),_c('span',{staticClass:\"scaleTitleText titleText\"},[_vm._v(\"100%\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"title titleMargin\"},[_vm._v(\"起点\")]),_c('div',{staticClass:\"coridGroup title\"},[_c('span',[_vm._v(\"x\")]),_c('span',{staticClass:\"coridTitleText titleText\"},[_vm._v(\"100\")]),_c('span',{staticClass:\"coridTitle2\"},[_vm._v(\"y\")]),_c('span',{staticClass:\"coridTitleText titleText\"},[_vm._v(\"100\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"title titleMargin\"},[_vm._v(\"拐点1\")]),_c('div',{staticClass:\"coridGroup title\"},[_c('span',[_vm._v(\"x\")]),_c('span',{staticClass:\"coridTitleText titleText\"},[_vm._v(\"100\")]),_c('span',{staticClass:\"coridTitle2\"},[_vm._v(\"y\")]),_c('span',{staticClass:\"coridTitleText titleText\"},[_vm._v(\"100\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"title titleMargin\"},[_c('span',[_vm._v(\"x\")]),_c('span',{staticClass:\"coridTitleText titleText\"},[_vm._v(\"100\")]),_c('span',{staticClass:\"coridTitle2\"},[_vm._v(\"y\")]),_c('span',{staticClass:\"coridTitleText titleText\"},[_vm._v(\"100\")])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"divCreGraphContainer\"}},[_c('el-dialog',{directives:[{name:\"loading\",rawName:\"v-loading.fullscreen.lock\",value:(_vm.fullscreenLoading),expression:\"fullscreenLoading\",modifiers:{\"fullscreen\":true,\"lock\":true}}],attrs:{\"title\":\"新建系统图\",\"visible\":_vm.isVisible,\"show-close\":false}},[_c('div',{staticClass:\"createConContainer\"},[_c('div',[_vm._v(\"系统图名称*\")]),_c('div',{staticClass:\"createCdCon\"},[_c('el-input',{attrs:{\"placeholder\":\"请输入\"},model:{value:(_vm.createGraphName),callback:function ($$v) {_vm.createGraphName=$$v},expression:\"createGraphName\"}})],1),_c('div',{staticClass:\"createCdTitle\"},[_vm._v(\"项目*\")]),_c('div',{staticClass:\"createCdCon\"},[_c('el-select',{attrs:{\"value-key\":\"id\",\"placeholder\":\"请选择项目\"},on:{\"change\":_vm.selProjectChange},model:{value:(_vm.selProject),callback:function ($$v) {_vm.selProject=$$v},expression:\"selProject\"}},_vm._l((_vm.projects),function(item){return _c('el-option',{key:item.id,attrs:{\"label\":item.name,\"value\":item}})}),1)],1),_c('div',{staticClass:\"createCdTitle\"},[_vm._v(\"系统实例*\")]),_c('div',{staticClass:\"createCdCon\"},[_c('el-cascader',{ref:\"instanceCascader\",attrs:{\"placeholder\":\"请选择系统图实例\",\"options\":_vm.systemInsArr,\"props\":{ expandTrigger: 'hover' }},on:{\"change\":_vm.instanceChange}})],1),_c('div',{staticClass:\"createCdTitle\"},[_vm._v(\"系统图模板*\")]),_c('div',{staticClass:\"createCdCon\"},[_c('el-cascader',{ref:\"sysTemplateCascader\",attrs:{\"placeholder\":\"请选择系统图模板\",\"options\":_vm.systemTemplateArr,\"props\":{ expandTrigger: 'hover' }},on:{\"change\":_vm.templateChange}})],1),_c('div',{staticClass:\"createFoot\"},[_c('el-button',{on:{\"click\":_vm.cancelCreate}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.newOkEvent}},[_vm._v(\"确定\")])],1)])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div id=\"divCreGraphContainer\">\r\n <el-dialog\r\n title=\"新建系统图\"\r\n :visible=\"isVisible\"\r\n :show-close=\"false\"\r\n v-loading.fullscreen.lock=\"fullscreenLoading\"\r\n >\r\n <div class=\"createConContainer\">\r\n <div>系统图名称*</div>\r\n <div class=\"createCdCon\">\r\n <el-input v-model=\"createGraphName\" placeholder=\"请输入\"></el-input>\r\n </div>\r\n\r\n <div class=\"createCdTitle\">项目*</div>\r\n <div class=\"createCdCon\">\r\n <el-select\r\n v-model=\"selProject\"\r\n value-key=\"id\"\r\n placeholder=\"请选择项目\"\r\n @change=\"selProjectChange\"\r\n >\r\n <el-option\r\n v-for=\"item in projects\"\r\n :key=\"item.id\"\r\n :label=\"item.name\"\r\n :value=\"item\"\r\n >\r\n </el-option>\r\n </el-select>\r\n </div>\r\n\r\n <div class=\"createCdTitle\">系统实例*</div>\r\n <div class=\"createCdCon\">\r\n <el-cascader\r\n placeholder=\"请选择系统图实例\"\r\n :options=\"systemInsArr\"\r\n :props=\"{ expandTrigger: 'hover' }\"\r\n @change=\"instanceChange\"\r\n ref=\"instanceCascader\"\r\n ></el-cascader>\r\n </div>\r\n\r\n <div class=\"createCdTitle\">系统图模板*</div>\r\n <div class=\"createCdCon\">\r\n <el-cascader\r\n placeholder=\"请选择系统图模板\"\r\n :options=\"systemTemplateArr\"\r\n :props=\"{ expandTrigger: 'hover' }\"\r\n @change=\"templateChange\"\r\n ref=\"sysTemplateCascader\"\r\n ></el-cascader>\r\n </div>\r\n\r\n <div class=\"createFoot\">\r\n <el-button @click=\"cancelCreate\">取消</el-button>\r\n <el-button type=\"primary\" @click=\"newOkEvent\">确定</el-button>\r\n </div>\r\n </div>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n<script>\r\nimport { mapState } from \"vuex\";\r\nimport { sysGraphController } from \"@/controller/systemGraph/sysGraphController\";\r\nimport { logicConfig } from \"@/logicConfig\";\r\nimport { Message } from \"element-ui\";\r\nimport packageConfig from \"../../../package.json\";\r\n\r\nexport default {\r\n props: [\"isVisible\"],\r\n data() {\r\n return {\r\n fullscreenLoading: false,\r\n //系统图名称,用于新建时绑定输入框\r\n createGraphName: \"\",\r\n //选择的项目,用于新建时绑定选择框\r\n selProject: {},\r\n //系统实例列表\r\n systemInsArr: [],\r\n //选择的系统实例 {label:'',code:'',value:'即ID'}\r\n selSystemIns: {},\r\n //系统图模板列表\r\n systemTemplateArr: [],\r\n //选择的系统图模板 {label:'',code:'',value:'即ID'}\r\n selSystemTemplate: {},\r\n //选择的系统类型 {label:'',code:'',value:'即ID'}\r\n selSysType: {},\r\n //选择的系统图类型 {label:'',code:'',value:'即ID'}\r\n selSysGraphType: {},\r\n };\r\n },\r\n computed: {\r\n ...mapState([\"projects\"]),\r\n },\r\n methods: {\r\n //取消创建\r\n cancelCreate: function () {\r\n window.close();\r\n },\r\n //选择项目后要查询该项目下的专业、系统类型、系统实例\r\n selProjectChange: async function () {\r\n this.fullscreenLoading = true;\r\n this.systemInsArr = [];\r\n try {\r\n this.systemInsArr = await sysGraphController.getSysInstanceByProject(\r\n this.selProject.id,\r\n this.selProject.groupCode\r\n );\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n this.fullscreenLoading = false;\r\n },\r\n //系统实例选择事件\r\n instanceChange: async function () {\r\n this.fullscreenLoading = true;\r\n try {\r\n //选择的系统实例节点\r\n var insNode = this.$refs.instanceCascader.getCheckedNodes()[0];\r\n //系统类型节点\r\n var typeNode = insNode.parent;\r\n\r\n this.selSystemIns = insNode.data;\r\n this.selSysType = typeNode.data;\r\n\r\n //查询系统类型下的系统模版\r\n var templateArr = await sysGraphController.getTemplateBySysTypeCode(\r\n this.selSysType.code\r\n );\r\n this.systemTemplateArr = templateArr;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n this.fullscreenLoading = false;\r\n },\r\n //模版选择事件\r\n templateChange: function () {\r\n //选择的系统图模板节点\r\n var templateNode = this.$refs.sysTemplateCascader.getCheckedNodes()[0];\r\n //系统图类型节点\r\n var graphTypeNode = templateNode.parent;\r\n\r\n this.selSystemTemplate = templateNode.data;\r\n this.selSysGraphType = graphTypeNode.data;\r\n },\r\n //新增按钮事件\r\n newOkEvent: async function () {\r\n this.fullscreenLoading = true;\r\n try {\r\n var _paramObj = {\r\n name: this.createGraphName,\r\n //系统图类型编码\r\n type: this.selSysGraphType.code,\r\n //模板ID\r\n templateId: this.selSystemTemplate.value,\r\n //系统类型编码\r\n system: this.selSysType.code,\r\n //系统实例ID\r\n systemId: this.selSystemIns.value,\r\n projectId: this.selProject.id,\r\n groupCode: this.selProject.groupCode,\r\n };\r\n\r\n //新增系统图\r\n var createResult = await sysGraphController.createSysGraph(_paramObj);\r\n switch (createResult.result) {\r\n case logicConfig.resultObj.failure:\r\n Message.error(\"操作失败,原因:\" + createResult.reason);\r\n break;\r\n case logicConfig.resultObj.success:\r\n // this.$emit(\"created\", createResult.data);\r\n let dataObj = createResult.data;\r\n sysGraphController.openGraphPage(\r\n 1,\r\n dataObj.id,\r\n this.selProject.groupCode,\r\n this.selProject.id,\r\n this.selProject.name,\r\n packageConfig.name,\r\n false\r\n );\r\n break;\r\n }\r\n } catch (error) {\r\n Message.error(\"新增失败,执行异常\");\r\n console.error(error);\r\n }\r\n this.fullscreenLoading = false;\r\n },\r\n },\r\n created() {},\r\n\r\n mounted() {},\r\n components: {},\r\n};\r\n</script>\r\n\r\n<style>\r\n#divCreGraphContainer .createCdTitle {\r\n margin-top: 16px;\r\n}\r\n\r\n#divCreGraphContainer .createCdCon {\r\n margin-top: 8px;\r\n width: 360px;\r\n}\r\n\r\n#divCreGraphContainer .createCdCon .el-select {\r\n width: 100%;\r\n}\r\n\r\n#divCreGraphContainer .createConContainer {\r\n margin-left: 80px;\r\n}\r\n\r\n#divCreGraphContainer .createFoot {\r\n float: right;\r\n margin-right: 73px;\r\n margin-top: 80px;\r\n}\r\n\r\n#divCreGraphContainer .el-dialog {\r\n width: 560px;\r\n height: 520px;\r\n}\r\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./addGraph.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./addGraph.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./addGraph.vue?vue&type=template&id=bda741c0&\"\nimport script from \"./addGraph.vue?vue&type=script&lang=js&\"\nexport * from \"./addGraph.vue?vue&type=script&lang=js&\"\nimport style0 from \"./addGraph.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"graphParentContainer\",attrs:{\"id\":_vm.maxContainerId}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div :id=\"maxContainerId\" class=\"graphParentContainer\"></div>\r\n</template>\r\n<script>\r\nimport * as PIXI from \"pixi.js\";\r\n\r\nexport default {\r\n props: [],\r\n data() {\r\n return {\r\n maxContainerId:\r\n new Date().getTime().toString() +\r\n \"_\" +\r\n Math.random().toString().substring(2),\r\n /*\r\n * 设备数组格式如下\r\n * {\r\n id: \"\",\r\n name:'',\r\n legendObj: {\r\n content: \"图的地址或base64串\",\r\n size: {\r\n width: 12,\r\n height: 12,\r\n },\r\n },\r\n //设备的绝对位置\r\n absolutePosition: {\r\n x: 1,\r\n y: 1,\r\n },\r\n anchorArr:[{\r\n name:'锚点名称',\r\n //锚点相对于设备图例的位置\r\n relativePosition:{\r\n x:1,y:1\r\n }\r\n }]\r\n }\r\n */\r\n nodeArr: [],\r\n //线数组\r\n lineArr: [],\r\n //文本数组\r\n labelArr: [],\r\n //存放图形用的一些信息点\r\n canvasProObj: {\r\n //基于canvas画布的中心点坐标,需要动态计算得到\r\n centerPointerPx: { x: 0, y: 0 },\r\n //原始缩放比例,动态计算得到的,因为图形默认显示时是要适应容器大小的,所以相比原始坐标会有比例变化\r\n originalScale: 1,\r\n //x轴差值,通过此值让x轴左右两端对称\r\n xJiaValue: 0,\r\n //y轴差值,通过此值让y轴上下两端对称\r\n yJiaValue: 0,\r\n //缓存纹理对象\r\n textureSource: {},\r\n //缩放系数\r\n pixiScale: 1,\r\n //原点X坐标\r\n positionPxX: 0,\r\n //原点Y坐标\r\n positionPxY: 0,\r\n //缩放时每次变化的递进值\r\n deep: 0.1,\r\n //鼠标状态,0 普通状态;-1 鼠标按下\r\n mouseState: 0,\r\n //上一个鼠标位置信息\r\n prevMousePosition: {},\r\n },\r\n };\r\n },\r\n computed: {},\r\n methods: {\r\n //绘图入口\r\n drawEntry: function (graphInfo) {\r\n //把原始数据转为易于绘图的数据\r\n var graphDataObj = this.parseDataToDraw(graphInfo);\r\n this.nodeArr = graphDataObj.nodeArr;\r\n this.lineArr = graphDataObj.lineArr;\r\n this.labelArr = graphDataObj.labelArr;\r\n\r\n this.drawGraph();\r\n },\r\n //重绘\r\n resetDraw: function () {\r\n this.drawGraph();\r\n },\r\n //绘图\r\n drawGraph: function () {\r\n var _this = this;\r\n // let type = \"WebGL\";\r\n // if (!PIXI.utils.isWebGLSupported()) {\r\n // type = \"canvas\";\r\n // }\r\n\r\n var pixiContainer = document.getElementById(this.maxContainerId);\r\n\r\n //--------------------------------------------创建舞台\r\n //存在舞台时,先清空舞台内的所有元素\r\n if (!!_this.pixiApp) {\r\n while (_this.pixiApp.stage.children.length > 0) {\r\n _this.pixiApp.stage.removeChildAt(0);\r\n }\r\n }\r\n\r\n var pixiApp;\r\n if (_this.pixiApp == null) {\r\n pixiApp = new PIXI.Application({\r\n width: pixiContainer.clientWidth, // default: 800 宽度\r\n height: pixiContainer.clientHeight, // default: 600 高度\r\n antialias: true, // default: false 反锯齿\r\n transparent: true, // default: false 透明度\r\n resolution: 1, // default: 1 分辨率\r\n //backgroundColor: \"0xffffff\",\r\n });\r\n pixiApp.renderer.autoResize = true;\r\n pixiContainer.appendChild(pixiApp.view);\r\n _this.pixiApp = pixiApp;\r\n } else pixiApp = _this.pixiApp;\r\n\r\n _this.computeOriginZuobPosition();\r\n\r\n //图例\r\n _this.nodeArr.forEach((_dataObj) => {\r\n //2022.1.30版,图例用矩形框代替\r\n var graphicsRect = new PIXI.Graphics();\r\n graphicsRect.lineStyle({\r\n width: 1,\r\n color: \"0x0091ff\",\r\n alpha: 1,\r\n alignment: 0.5,\r\n });\r\n let newCordObj = _this.convertCoordToLeftOrigina({\r\n x: _dataObj.absolutePosition.x,\r\n y: _dataObj.absolutePosition.y,\r\n });\r\n var newWidth =\r\n _dataObj.legendObj.size.width * _this.canvasProObj.originalScale;\r\n var newHeight =\r\n _dataObj.legendObj.size.height * _this.canvasProObj.originalScale;\r\n graphicsRect.drawRect(newCordObj.x, newCordObj.y, newWidth, newHeight);\r\n graphicsRect.hitArea = graphicsRect.getBounds();\r\n\r\n graphicsRect.name = _dataObj.id;\r\n //启用事件\r\n graphicsRect.interactive = true;\r\n graphicsRect.on(\"click\", (event) => {\r\n _this.clickEventCall(event, 1);\r\n });\r\n\r\n pixiApp.stage.addChild(graphicsRect);\r\n return;\r\n\r\n var _legendObj = _dataObj.legendObj;\r\n // 创建一个纹理\r\n if (!_this.canvasProObj.textureSource[_legendObj.image.content]) {\r\n _this.canvasProObj.textureSource[_legendObj.image.content] =\r\n PIXI.Texture.from(_legendObj.image.content);\r\n }\r\n\r\n //加载纹理\r\n var spriteInstanceCoord = _this.convertCoordToLeftOrigina({\r\n x: _dataObj.position.x,\r\n y: _dataObj.position.y,\r\n });\r\n var spriteWidth =\r\n _legendObj.defaultSize.width * _this.canvasProObj.originalScale;\r\n var spriteHeight =\r\n _legendObj.defaultSize.height * _this.canvasProObj.originalScale;\r\n\r\n var legendSprite = new PIXI.Sprite(\r\n _this.canvasProObj.textureSource[_legendObj.image.content]\r\n );\r\n legendSprite.x = spriteInstanceCoord.x;\r\n legendSprite.y = spriteInstanceCoord.y;\r\n legendSprite.width = spriteWidth;\r\n legendSprite.height = spriteHeight;\r\n pixiApp.stage.addChild(legendSprite);\r\n });\r\n\r\n return;\r\n //画线\r\n _this.dataSource.view.diagram.lines.forEach((_cLine) => {\r\n var lineColor = \"0x\" + _cLine.style.lineColor.substring(1);\r\n var lineInstance = new PIXI.Graphics();\r\n lineInstance.lineStyle(_cLine.style.lineWidth, lineColor, 1, 0, false);\r\n\r\n var _newStart = _this.convertCoordToLeftOrigina({\r\n x: _cLine.path[0].x,\r\n y: _cLine.path[0].y,\r\n });\r\n\r\n var _newEnd = _this.convertCoordToLeftOrigina({\r\n x: _cLine.path[1].x,\r\n y: _cLine.path[1].y,\r\n });\r\n\r\n lineInstance.moveTo(_newStart.x, _newStart.y);\r\n lineInstance.lineTo(_newEnd.x, _newEnd.y);\r\n\r\n pixiApp.stage.addChild(lineInstance);\r\n });\r\n },\r\n /**\r\n * 解析数据成易于图形使用的格式\r\n */\r\n parseDataToDraw: function (graphInfo) {\r\n var nodeArr = [];\r\n //线数组\r\n var lineArr = [];\r\n //文本数组\r\n var labelArr = [];\r\n\r\n var rootContainerArr = graphInfo.template.frame.children;\r\n\r\n parseNode(rootContainerArr, graphInfo.template.frame.location);\r\n\r\n return {\r\n nodeArr,\r\n lineArr,\r\n labelArr,\r\n };\r\n\r\n /**\r\n * 递归解析设备(node)、文本(label)\r\n * dataArr 参照后台接口返回的diagram对象里的graphInfo.template.frame.children\r\n * absolutePosition 绝对位置{x:1,y:1} 其值是compType为\"container\"的每一级的location相加得出的值\r\n */\r\n function parseNode(dataArr, absolutePosition) {\r\n dataArr.forEach((_dataObj) => {\r\n var newAbsolutePosition = {\r\n x: _dataObj.location.x + absolutePosition.x,\r\n y: _dataObj.location.y + absolutePosition.y,\r\n };\r\n switch (_dataObj.compType) {\r\n //容器\r\n case \"container\":\r\n parseNode(_dataObj.children, newAbsolutePosition);\r\n break;\r\n //设备\r\n case \"equipmentNode\":\r\n let anchorArr = [];\r\n let anchorKeys = Object.keys(_dataObj.anchorLocations || {});\r\n anchorKeys.forEach((_anchorKey) => {\r\n anchorArr.push({\r\n name: _anchorKey,\r\n //锚点相对于设备图例的位置\r\n relativePosition: _dataObj.anchorLocations[_anchorKey],\r\n });\r\n });\r\n\r\n nodeArr.push({\r\n id: _dataObj.id,\r\n name: _dataObj.dataObject.localName,\r\n //2022.1.30版本图例以矩形框代替\r\n legendObj: {\r\n content: \"图的地址或base64串\",\r\n size: {\r\n width: _dataObj.size.x,\r\n height: _dataObj.size.y,\r\n },\r\n },\r\n //设备的绝对位置\r\n absolutePosition: newAbsolutePosition,\r\n anchorArr: anchorArr,\r\n });\r\n break;\r\n }\r\n });\r\n }\r\n },\r\n /**\r\n * 1、X轴的原始坐标两端可能是不对称的;Y轴的原始坐标两端也可能是不对称的,所以计算各自的差值,以便把两端对称起来,以此把图形显示到正中间\r\n * 2、计算原始坐标值的缩放系数,因为原始坐标和像素坐标是不对应的,所以要根据最大原始坐标(每一个坐标的绝对值进行比较)和最大像素坐标做比率缩放\r\n * 3、计算中心点像素坐标\r\n */\r\n computeOriginZuobPosition: function () {\r\n var _this = this;\r\n\r\n var pixiContainer = document.getElementById(this.maxContainerId);\r\n var maxPxX = pixiContainer.clientWidth;\r\n var maxPxY = pixiContainer.clientHeight;\r\n //基于canvas画布的中心点坐标\r\n _this.canvasProObj.centerPointerPx = {\r\n x: maxPxX / 2,\r\n y: maxPxY / 2,\r\n };\r\n\r\n var originaMinX = null, //原始最小坐标X\r\n originaMaxX = null, //原始最大坐标X\r\n originaMinY = null, //原始最小坐标Y\r\n originaMaxY = null; //原始最大坐标Y\r\n\r\n /**\r\n * 取得X轴的原始最小坐标和最大坐标、\r\n * 取得Y轴的原始最小坐标和最大坐标、\r\n */\r\n compute();\r\n\r\n //计算X轴差值\r\n var xJiaValue = (maxPxX - originaMaxX - originaMinX) / 2;\r\n xJiaValue = originaMinX + xJiaValue < 0 ? 0 - originaMinX : xJiaValue;\r\n\r\n //计算Y轴差值\r\n var yJiaValue = (maxPxY - originaMaxY - originaMinY) / 2;\r\n yJiaValue = originaMinY + yJiaValue < 0 ? 0 - originaMinY : yJiaValue;\r\n\r\n _this.canvasProObj.xJiaValue = xJiaValue;\r\n _this.canvasProObj.yJiaValue = yJiaValue;\r\n\r\n //让每一个的X、Y坐标加上差值,改为在画图时再加差值,这样就减少了此处的循环\r\n setScale();\r\n\r\n /**\r\n * 取得X轴的原始最小坐标和最大坐标、\r\n * 取得Y轴的原始最小坐标和最大坐标、\r\n */\r\n function compute() {\r\n _this.nodeArr.forEach((_c) => {\r\n var _legendObj = _c.legendObj;\r\n originaMinX =\r\n originaMinX == null\r\n ? _c.absolutePosition.x\r\n : Math.min(originaMinX, _c.absolutePosition.x);\r\n originaMaxX =\r\n originaMaxX == null\r\n ? _c.absolutePosition.x + _legendObj.size.width\r\n : Math.max(\r\n originaMaxX,\r\n _c.absolutePosition.x + _legendObj.size.width\r\n );\r\n\r\n originaMinY =\r\n originaMinY == null ? _c.absolutePosition.y : Math.min(originaMinY);\r\n\r\n originaMaxY =\r\n originaMaxY == null\r\n ? _c.absolutePosition.y + _legendObj.size.height\r\n : Math.max(\r\n originaMaxY,\r\n _c.absolutePosition.y + _legendObj.size.height\r\n );\r\n });\r\n\r\n _this.lineArr.forEach((_cLine) => {\r\n _cLine.path.forEach((_c) => {\r\n originaMinX =\r\n originaMinX == null ? _c.x : Math.min(originaMinX, _c.x);\r\n originaMaxX =\r\n originaMaxX == null ? _c.x : Math.max(originaMaxX, _c.x);\r\n\r\n originaMinY =\r\n originaMinY == null ? _c.y : Math.min(originaMinY, _c.y);\r\n originaMaxY =\r\n originaMaxY == null ? _c.y : Math.max(originaMaxY, _c.y);\r\n });\r\n });\r\n }\r\n\r\n //计算缩放系数\r\n function setScale() {\r\n var xScale = maxPxX / (originaMaxX + xJiaValue);\r\n var yScale = maxPxY / (originaMaxY + yJiaValue);\r\n _this.canvasProObj.originalScale = Math.min(xScale, yScale);\r\n //当图形区域能显示全的时候不再进行缩放\r\n _this.canvasProObj.originalScale = Math.min(\r\n 1,\r\n _this.canvasProObj.originalScale\r\n );\r\n }\r\n },\r\n /**\r\n * 把坐标转为缩放后的坐标\r\n * _obj:{x:1,y:1}\r\n */\r\n convertCoordToLeftOrigina: function (_obj) {\r\n _obj.x =\r\n (_obj.x + this.canvasProObj.xJiaValue) *\r\n this.canvasProObj.originalScale;\r\n _obj.y =\r\n (_obj.y + this.canvasProObj.yJiaValue) *\r\n this.canvasProObj.originalScale;\r\n\r\n return _obj;\r\n },\r\n\r\n /**\r\n * 设备、线、文本点击事件的回调\r\n * type 1 设备; 2 线; 3 文本\r\n */\r\n clickEventCall: function (event, type) {\r\n var graphInstance = event.target || event.currentTarget;\r\n var dataId = graphInstance.name;\r\n var dataArr =\r\n type == 1\r\n ? this.nodeArr\r\n : type == 2\r\n ? this.lineArr\r\n : type == 3\r\n ? this.labelArr\r\n : [];\r\n var dataObj = dataArr.filter((_data) => {\r\n return _data.id == dataId;\r\n })[0];\r\n this.$emit(\"click\", dataObj, type);\r\n },\r\n //图形缩放比例递进计算\r\n graphScaleCompute: function (deepVal) {\r\n return this.canvasProObj.pixiScale + deepVal;\r\n },\r\n //图形缩放\r\n graphScale: function (newScale) {\r\n newScale = Math.min(5, newScale);\r\n newScale = Math.max(0.25, newScale);\r\n //设置X、Y轴的缩放系数\r\n this.pixiApp.stage.scale.x = newScale;\r\n this.pixiApp.stage.scale.y = newScale;\r\n\r\n //保存缩放系数\r\n this.canvasProObj.pixiScale = newScale;\r\n //重新计算原点\r\n this.canvasProObj.positionPxX =\r\n (1 - newScale) * this.canvasProObj.centerPointerPx.x;\r\n this.canvasProObj.positionPxY =\r\n (1 - newScale) * this.canvasProObj.centerPointerPx.y;\r\n this.pixiApp.stage.position.set(\r\n this.canvasProObj.positionPxX,\r\n this.canvasProObj.positionPxY\r\n );\r\n },\r\n },\r\n created() {},\r\n\r\n mounted() {},\r\n components: {},\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.graphParentContainer {\r\n width: 100%;\r\n height: 100%;\r\n background: #ffffff;\r\n}\r\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./graph.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./graph.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./graph.vue?vue&type=template&id=0f1073bd&scoped=true&\"\nimport script from \"./graph.vue?vue&type=script&lang=js&\"\nexport * from \"./graph.vue?vue&type=script&lang=js&\"\nimport style0 from \"./graph.vue?vue&type=style&index=0&id=0f1073bd&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0f1073bd\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div id=\"divGraphEdit\" v-loading.fullscreen.lock=\"fullscreenLoading\">\r\n <div class=\"firstRow\">\r\n <div class=\"firstOperDivContainer\">\r\n <img\r\n class=\"imgBar\"\r\n src=\"../../assets/images/systemGraph/editLogo.svg\"\r\n />\r\n <span class=\"headerTitle\">系统图编辑器</span>\r\n <div class=\"operBtnDiv\" v-if=\"operState === 0\">\r\n <!-- <span>回到首页</span> -->\r\n <span @click=\"intoEditState\">编辑系统图</span>\r\n <span\r\n v-if=\"(graphInfo.extraProps || {}).state == 'Draft'\"\r\n @click=\"publishGraph\"\r\n >上架系统图</span\r\n >\r\n <span\r\n v-if=\"(graphInfo.extraProps || {}).state == 'Publish'\"\r\n @click=\"draftGraph\"\r\n >下架系统图</span\r\n >\r\n </div>\r\n <div class=\"operBtnDiv\" v-if=\"operState === 1\">\r\n <span @click=\"saveGraph\">保存图纸</span>\r\n <span @click=\"cancelClick\">放弃编辑</span>\r\n </div>\r\n <span class=\"delBtn\" @click=\"delGraph\">删除图纸</span>\r\n </div>\r\n <div class=\"secondOperDivContainer\">\r\n <img\r\n @click=\"toggleLeft\"\r\n class=\"imgBar\"\r\n src=\"../../assets/images/systemGraph/barController.svg\"\r\n />\r\n <span\r\n class=\"sanjiaoBar\"\r\n :class=\"{\r\n 'el-icon-caret-bottom': isVisibleLeft,\r\n 'el-icon-caret-top': !isVisibleLeft,\r\n }\"\r\n @click=\"toggleLeft\"\r\n ></span>\r\n <hr class=\"splitLine\" />\r\n <el-select\r\n v-model=\"selectScale\"\r\n value-key=\"value\"\r\n @change=\"selScaleChange\"\r\n >\r\n <el-option\r\n v-for=\"item in scaleArr\"\r\n :key=\"item.value\"\r\n :label=\"item.name\"\r\n :value=\"item\"\r\n >\r\n </el-option>\r\n </el-select>\r\n <span class=\"el-icon-zoom-in zoomin\" @click=\"scaleZoomin\"></span>\r\n <span class=\"el-icon-zoom-out zoomout\" @click=\"scaleZoomout\"></span>\r\n <!-- <hr class=\"splitLine\" v-if=\"operState == 1\" />\r\n <img\r\n v-if=\"operState == 1\"\r\n class=\"imgLeftTop\"\r\n src=\"../../assets/images/systemGraph/leftTop.svg\"\r\n />\r\n <img\r\n v-if=\"operState == 1\"\r\n class=\"rightLeftTop\"\r\n src=\"../../assets/images/systemGraph/rightTop.svg\"\r\n />\r\n <hr class=\"splitLine\" v-if=\"operState == 1\" />\r\n <img\r\n v-if=\"operState == 1\"\r\n class=\"imgLeftTop\"\r\n src=\"../../assets/images/systemGraph/text.svg\"\r\n /> -->\r\n <span class=\"resetBtn\" v-if=\"operState == 1\">重置为自动出图样式</span>\r\n </div>\r\n </div>\r\n <div class=\"secondRow\">\r\n <div\r\n class=\"graphInfoContainer\"\r\n v-if=\"(operState === 0 || operState === 1) && isVisibleLeft\"\r\n >\r\n <div class=\"graphInfoFirst\">\r\n <span class=\"graphInfoName\">系统图名称</span>\r\n <span\r\n class=\"graphInfoFirstEdit\"\r\n @click=\"intoEditState\"\r\n v-if=\"operState === 0\"\r\n >编辑</span\r\n >\r\n </div>\r\n <div class=\"graphInfoContent\">\r\n <span v-text=\"graphInfo.name\">高压系统1#系统图</span>\r\n </div>\r\n\r\n <div class=\"graphInfoName\">\r\n <span>系统图类型</span>\r\n </div>\r\n <div class=\"graphInfoContent\">\r\n <span v-text=\"graphInfo.graphTypeName\">高压配电</span>\r\n </div>\r\n\r\n <div class=\"graphInfoName\">\r\n <span>系统实例</span>\r\n </div>\r\n <div class=\"graphInfoContent\">\r\n <span v-text=\"graphInfo.systemInstanceName\">实例1</span>\r\n </div>\r\n\r\n <div class=\"graphInfoName\">\r\n <span>系统图模版</span>\r\n </div>\r\n <div class=\"graphInfoContent\">\r\n <span v-text=\"graphInfo.templateName\">模版1</span>\r\n </div>\r\n\r\n <div class=\"graphInfoName\">\r\n <span>所属项目</span>\r\n </div>\r\n <div class=\"graphInfoContent\">\r\n <span v-text=\"project.name\">银泰中心</span>\r\n </div>\r\n\r\n <div class=\"graphInfoName\">\r\n <span>当前状态</span>\r\n </div>\r\n <div class=\"graphInfoContent\">\r\n <span v-text=\"graphInfo.stateName\">草稿</span>\r\n </div>\r\n </div>\r\n <div class=\"graphRegion\">\r\n <graph ref=\"graphc\" @click=\"graphClickCall\"></graph>\r\n </div>\r\n <div class=\"rightDetail\" v-if=\"selGraphPartType != -1\">\r\n <div v-if=\"selGraphPartType == 1\">\r\n <div class=\"title titleMargin\">设备类</div>\r\n <div class=\"titleText eqName\" v-text=\"selEquip.name\">进线柜</div>\r\n <div class=\"detailSplitLine\"></div>\r\n <div class=\"title titleMargin\">\r\n <span>x</span>\r\n <span\r\n class=\"coridTitleText titleText\"\r\n v-text=\"(selEquip.absolutePosition || {}).x\"\r\n >100</span\r\n >\r\n <span class=\"coridTitle2\">y</span>\r\n <span\r\n class=\"coridTitleText titleText\"\r\n v-text=\"(selEquip.absolutePosition || {}).y\"\r\n >100</span\r\n >\r\n </div>\r\n <div class=\"title titleMargin\">\r\n <span>比例</span>\r\n <span class=\"scaleTitleText titleText\">100%</span>\r\n </div>\r\n <div class=\"detailSplitLine\"></div>\r\n <div class=\"title titleMargin\">锚点</div>\r\n <div\r\n class=\"anchorContainer\"\r\n v-for=\"anchor in selEquip.anchorArr\"\r\n :key=\"anchor.name\"\r\n >\r\n <span v-text=\"anchor.name\">T3</span>\r\n <span>已连接</span>\r\n </div>\r\n </div>\r\n <div v-if=\"selGraphPartType == 2\">\r\n <div class=\"title titleMargin\">连线</div>\r\n <div class=\"detailSplitLine\"></div>\r\n <div>\r\n <div class=\"title titleMargin\">起点</div>\r\n <div class=\"coridGroup title\">\r\n <span>x</span>\r\n <span class=\"coridTitleText titleText\">100</span>\r\n <span class=\"coridTitle2\">y</span>\r\n <span class=\"coridTitleText titleText\">100</span>\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"title titleMargin\">拐点1</div>\r\n <div class=\"coridGroup title\">\r\n <span>x</span>\r\n <span class=\"coridTitleText titleText\">100</span>\r\n <span class=\"coridTitle2\">y</span>\r\n <span class=\"coridTitleText titleText\">100</span>\r\n </div>\r\n </div>\r\n <div class=\"detailSplitLine\"></div>\r\n <div class=\"title titleMargin\">连接关系</div>\r\n <div class=\"titleMargin\">\r\n <el-select\r\n v-model=\"selLineStartPoint\"\r\n value-key=\"id\"\r\n @change=\"selStartPointChange\"\r\n >\r\n <div slot=\"prefix\" class=\"selectPrefix\">起点</div>\r\n <el-option\r\n v-for=\"item in lineStartPointArr\"\r\n :key=\"item.id\"\r\n :label=\"item.name\"\r\n :value=\"item\"\r\n >\r\n </el-option>\r\n </el-select>\r\n </div>\r\n <div class=\"titleMargin\">\r\n <el-select\r\n v-model=\"selLineEndPoint\"\r\n value-key=\"id\"\r\n @change=\"selEndPointChange\"\r\n >\r\n <div slot=\"prefix\" class=\"selectPrefix\">终点</div>\r\n <el-option\r\n v-for=\"item in lineEndPointArr\"\r\n :key=\"item.id\"\r\n :label=\"item.name\"\r\n :value=\"item\"\r\n >\r\n </el-option>\r\n </el-select>\r\n </div>\r\n </div>\r\n <div v-if=\"selGraphPartType == 3\">\r\n <div class=\"title titleMargin\">文字</div>\r\n <div class=\"titleText eqName\">1#进线柜</div>\r\n <div class=\"detailSplitLine\"></div>\r\n <div class=\"title titleMargin\">\r\n <span>x</span>\r\n <span class=\"coridTitleText titleText\">100</span>\r\n <span class=\"coridTitle2\">y</span>\r\n <span class=\"coridTitleText titleText\">100</span>\r\n </div>\r\n <div class=\"detailSplitLine\"></div>\r\n <div class=\"title titleMargin\">字体样式</div>\r\n <div class=\"titleMargin fontSizeContainer\">\r\n <img\r\n src=\"@/assets/images/systemGraph/fontStyle.svg\"\r\n class=\"fontStyleSvg\"\r\n />\r\n <el-select\r\n v-model=\"selFontSize\"\r\n value-key=\"id\"\r\n @change=\"selFontSizeChange\"\r\n placeholder=\"\"\r\n >\r\n <el-option\r\n v-for=\"item in fontSizeArr\"\r\n :key=\"item.id\"\r\n :label=\"item.name\"\r\n :value=\"item\"\r\n >\r\n </el-option>\r\n </el-select>\r\n </div>\r\n <div class=\"title titleMargin\">字体颜色</div>\r\n <div class=\"titleMargin fontColor\">\r\n <input type=\"color\" v-model=\"fontColor\" />\r\n <div v-text=\"fontColor\"></div>\r\n <div>100%</div>\r\n </div>\r\n <div class=\"title titleMargin\">背景颜色</div>\r\n <div class=\"titleMargin fontColor\">\r\n <input type=\"color\" v-model=\"backColor\" />\r\n <div v-text=\"backColor\"></div>\r\n <div>100%</div>\r\n </div>\r\n </div>\r\n <div class=\"delBtn\" v-if=\"selGraphPartType == 1\">删除设备</div>\r\n <div class=\"delBtn\" v-if=\"selGraphPartType == 2\">删除管线</div>\r\n <div class=\"delBtn\" v-if=\"selGraphPartType == 3\">删除文字</div>\r\n </div>\r\n </div>\r\n\r\n <addGraph :isVisible=\"operState == 2\" v-if=\"operState == 2\"></addGraph>\r\n </div>\r\n</template>\r\n<script>\r\nimport { graphStateEnum } from \"@/controller/systemGraph/graphStateEnum\";\r\nimport { sysGraphController } from \"@/controller/systemGraph/sysGraphController\";\r\nimport addGraph from \"./addGraph.vue\";\r\nimport graph from \"./graph.vue\";\r\nimport { logicConfig } from \"@/logicConfig\";\r\nimport { Message } from \"element-ui\";\r\nimport Vue from \"vue\";\r\n\r\nexport default {\r\n props: [],\r\n data() {\r\n return {\r\n fullscreenLoading: false,\r\n //缩放范围\r\n scaleArr: [\r\n {\r\n name: \"25%\",\r\n value: 25,\r\n },\r\n {\r\n name: \"50%\",\r\n value: 50,\r\n },\r\n {\r\n name: \"75%\",\r\n value: 75,\r\n },\r\n {\r\n name: \"100%\",\r\n value: 100,\r\n },\r\n {\r\n name: \"150%\",\r\n value: 150,\r\n },\r\n ],\r\n //选择的缩放范围\r\n selectScale: {},\r\n //操作状态 0 预览; 1 编辑; 2 新建\r\n operState: -1,\r\n //系统图ID\r\n diagramId: \"\",\r\n //项目信息\r\n project: {},\r\n /**\r\n * 选择的系统图上的区域的类型\r\n * -1 什么也没选; 1 设备; 2 线; 3 文字\r\n */\r\n selGraphPartType: -1,\r\n //线的起点数组,用于右侧详情选择\r\n lineStartPointArr: [\r\n {\r\n id: \"111\",\r\n name: \"1#设备-B1\",\r\n },\r\n {\r\n id: \"222\",\r\n name: \"1#设备-B2\",\r\n },\r\n ],\r\n //选择的线的起点,用于右侧详情选择\r\n selLineStartPoint: {\r\n id: \"111\",\r\n name: \"1#设备-B1\",\r\n },\r\n //线的终点数组,用于右侧详情选择\r\n lineEndPointArr: [\r\n {\r\n id: \"111\",\r\n name: \"2#设备-B1\",\r\n },\r\n {\r\n id: \"222\",\r\n name: \"2#设备-B2\",\r\n },\r\n ],\r\n //选择的线的终点,用于右侧详情选择\r\n selLineEndPoint: {\r\n id: \"111\",\r\n name: \"2#设备-B1\",\r\n },\r\n //字号数组\r\n fontSizeArr: [\r\n {\r\n id: 12,\r\n name: \"12px\",\r\n },\r\n {\r\n id: 14,\r\n name: \"14px\",\r\n },\r\n {\r\n id: 16,\r\n name: \"16px\",\r\n },\r\n ],\r\n //选择的字号\r\n selFontSize: {},\r\n //字体颜色\r\n fontColor: \"#eb5757\",\r\n //背景颜色\r\n backColor: \"#ffffff\",\r\n //系统图原始数据\r\n graphOriginInfo: {},\r\n //系统图数据\r\n graphInfo: {},\r\n /**\r\n * 选择的设备,格式如下:\r\n * {\r\n id: \"\",\r\n name:'',\r\n legendObj: {\r\n content: \"图的地址或base64串\",\r\n size: {\r\n width: 12,\r\n height: 12,\r\n },\r\n },\r\n //设备的绝对位置\r\n absolutePosition: {\r\n x: 1,\r\n y: 1,\r\n },\r\n anchorArr:[{\r\n name:'锚点名称',\r\n //锚点相对于设备图例的位置\r\n relativePosition:{\r\n x:1,y:1\r\n }\r\n }]\r\n }\r\n */\r\n selEquip: {},\r\n //是否展示左侧系统图基础信息\r\n isVisibleLeft: true,\r\n };\r\n },\r\n computed: {},\r\n methods: {\r\n /**\r\n * 新建成功后执行的操作\r\n * graphInfo 系统图数据\r\n */\r\n createSuccessed: function (graphInfo) {\r\n //进入编辑状态\r\n this.operState = 1;\r\n this.graphOriginInfo = JSON.parse(JSON.stringify(graphInfo));\r\n this.graphInfo = graphInfo;\r\n this.$refs.graphc.drawEntry(graphInfo);\r\n },\r\n //线的起点选择事件\r\n selStartPointChange: function () {\r\n console.log(this.selLineStartPoint);\r\n },\r\n //线的终点选择事件\r\n selEndPointChange: function () {\r\n console.log(this.selLineEndPoint);\r\n },\r\n //字号选择事件\r\n selFontSizeChange: function () {},\r\n //根据系统图ID获取系统图数据\r\n getDiagramById: async function () {\r\n this.fullscreenLoading = true;\r\n var resultObj = await sysGraphController.getDiagramById(\r\n this.diagramId,\r\n this.project.groupCode,\r\n this.project.id\r\n );\r\n if (resultObj.result != logicConfig.resultObj.success) {\r\n this.fullscreenLoading = false;\r\n Message.error(resultObj.reason);\r\n return;\r\n }\r\n this.graphOriginInfo = JSON.parse(JSON.stringify(resultObj.data));\r\n this.graphInfo = resultObj.data;\r\n this.fullscreenLoading = false;\r\n },\r\n //进入编辑模式\r\n intoEditState: function () {\r\n this.operState = 1;\r\n },\r\n /**\r\n * 设备、线、文本点击事件的回调\r\n * dataObj 解析后的数据\r\n * type 1 设备; 2 线; 3 文本\r\n */\r\n graphClickCall: function (dataObj, type) {\r\n this.selGraphPartType = type;\r\n this.selEquip = dataObj || {};\r\n var _this = this;\r\n Vue.nextTick(function () {\r\n _this.$refs.graphc.resetDraw();\r\n });\r\n },\r\n /**\r\n * 保存图纸按钮事件\r\n */\r\n saveGraph: async function () {\r\n this.fullscreenLoading = true;\r\n var saveResultObj = await sysGraphController.saveSysGraph(this.graphInfo);\r\n this.fullscreenLoading = false;\r\n switch (saveResultObj.result) {\r\n case logicConfig.resultObj.failure:\r\n Message.error(\"保存失败:\" + (saveResultObj.reason || \"\"));\r\n return;\r\n case logicConfig.resultObj.success:\r\n Message.success(\"保存成功\");\r\n this.graphOriginInfo = JSON.parse(JSON.stringify(this.graphInfo));\r\n break;\r\n }\r\n },\r\n /**\r\n * 放弃编辑按钮事件\r\n */\r\n cancelClick: function () {\r\n this.graphInfo = JSON.parse(JSON.stringify(this.graphOriginInfo));\r\n this.$refs.graphc.drawEntry(this.graphInfo);\r\n this.operState = 0;\r\n },\r\n //上架系统图\r\n publishGraph: async function () {\r\n this.fullscreenLoading = true;\r\n var resultObj = await sysGraphController.publishSysGraph(this.diagramId);\r\n this.fullscreenLoading = false;\r\n switch (resultObj.result) {\r\n case logicConfig.resultObj.success:\r\n this.graphOriginInfo.extraProps.state = graphStateEnum.Publish;\r\n this.graphInfo.extraProps.state = graphStateEnum.Publish;\r\n return Message.success(\"上架成功\");\r\n case logicConfig.resultObj.failure:\r\n return Message.success(\"上架失败,原因:\" + (resultObj.reason || \"\"));\r\n }\r\n },\r\n //下架系统图\r\n draftGraph: async function () {\r\n this.fullscreenLoading = true;\r\n var resultObj = await sysGraphController.draftGraph(this.diagramId);\r\n this.fullscreenLoading = false;\r\n switch (resultObj.result) {\r\n case logicConfig.resultObj.success:\r\n this.graphOriginInfo.extraProps.state = graphStateEnum.Draft;\r\n this.graphInfo.extraProps.state = graphStateEnum.Draft;\r\n return Message.success(\"下架成功\");\r\n case logicConfig.resultObj.failure:\r\n return Message.success(\"下架失败,原因:\" + (resultObj.reason || \"\"));\r\n }\r\n },\r\n //删除系统图\r\n delGraph: function () {\r\n this.$confirm(\"图纸删除后将不可进行查看和编辑, 是否继续?\", \"提示\", {\r\n confirmButtonText: \"确定\",\r\n cancelButtonText: \"取消\",\r\n type: \"warning\",\r\n })\r\n .then(async () => {\r\n this.fullscreenLoading = true;\r\n var resultObj = await sysGraphController.delSysGraph(this.diagramId);\r\n this.fullscreenLoading = false;\r\n switch (resultObj.result) {\r\n case logicConfig.resultObj.success:\r\n this.$confirm(\"删除成功,页面将关闭\", \"提示\", {\r\n confirmButtonText: \"确定\",\r\n type: \"success\",\r\n showCancelButton: false,\r\n closeOnClickModal: false,\r\n showClose: false,\r\n closeOnPressEscape: false,\r\n }).then(async () => {\r\n window.close();\r\n });\r\n return;\r\n case logicConfig.resultObj.failure:\r\n return Message.success(\r\n \"删除图纸失败,原因:\" + (resultObj.reason || \"\")\r\n );\r\n }\r\n })\r\n .catch(() => {});\r\n },\r\n //左侧系统图基础信息面板打开或隐藏\r\n toggleLeft: function () {\r\n var _this = this;\r\n this.isVisibleLeft = !this.isVisibleLeft;\r\n Vue.nextTick(function () {\r\n _this.$refs.graphc.resetDraw();\r\n });\r\n },\r\n //缩放比例选择事件\r\n selScaleChange: function () {\r\n this.$refs.graphc.graphScale(this.selectScale.value / 100);\r\n },\r\n //比例放大按钮点击事件\r\n scaleZoomin: function () {\r\n var newScale = this.$refs.graphc.graphScaleCompute(0.25);\r\n this.$refs.graphc.graphScale(newScale);\r\n },\r\n //比例缩小按钮点击事件\r\n scaleZoomout: function () {\r\n var newScale = this.$refs.graphc.graphScaleCompute(-0.25);\r\n this.$refs.graphc.graphScale(newScale);\r\n },\r\n },\r\n created() {\r\n this.operState = !this.$route.query.ost\r\n ? -1\r\n : parseInt(this.$route.query.ost);\r\n this.diagramId = !this.$route.query.did ? -1 : this.$route.query.did;\r\n this.selectScale = this.scaleArr[3];\r\n this.project = {\r\n id: this.$route.query.pri,\r\n groupCode: this.$route.query.gc,\r\n name: this.$route.query.prn,\r\n };\r\n },\r\n mounted() {\r\n var _this = this;\r\n (async function () {\r\n //操作状态 0 预览; 1 编辑; 2 新建\r\n if (_this.operState === 0 || _this.operState === 1) {\r\n await _this.getDiagramById();\r\n _this.$refs.graphc.drawEntry(_this.graphInfo);\r\n }\r\n })();\r\n },\r\n components: {\r\n addGraph,\r\n graph,\r\n },\r\n};\r\n</script>\r\n\r\n<style>\r\n#divGraphEdit {\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n#divGraphEdit .firstRow {\r\n height: 96px;\r\n background: #ffffff;\r\n box-shadow: 0px 2px 10px rgb(31 36 41 / 10%);\r\n display: flex;\r\n flex-direction: column;\r\n z-index: 2;\r\n}\r\n\r\n#divGraphEdit .firstOperDivContainer {\r\n flex: 1;\r\n border-bottom: solid 1px #f2f2f2;\r\n line-height: 48px;\r\n}\r\n\r\n#divGraphEdit .firstOperDivContainer > span:not(:first-child),\r\n#divGraphEdit .operBtnDiv span {\r\n cursor: pointer;\r\n}\r\n\r\n#divGraphEdit .secondOperDivContainer {\r\n flex: 1;\r\n}\r\n\r\n#divGraphEdit .headerTitle {\r\n font-weight: 600;\r\n margin-left: 15px;\r\n}\r\n\r\n#divGraphEdit .operBtnDiv {\r\n display: inline-block;\r\n margin-left: 52px;\r\n font-weight: 500;\r\n}\r\n\r\n#divGraphEdit .operBtnDiv span {\r\n margin-left: 20px;\r\n}\r\n\r\n#divGraphEdit .delBtn {\r\n float: right;\r\n margin-right: 49px;\r\n}\r\n\r\n#divGraphEdit .imgBar {\r\n margin-left: 33px;\r\n}\r\n\r\n#divGraphEdit .sanjiaoBar {\r\n vertical-align: middle;\r\n}\r\n\r\n#divGraphEdit .splitLine {\r\n display: inline-block;\r\n height: 30px;\r\n border-left: solid 1px #d8d8d8;\r\n vertical-align: middle;\r\n margin-left: 26px;\r\n border-top: none;\r\n}\r\n\r\n#divGraphEdit .secondOperDivContainer input {\r\n border: none !important;\r\n width: 66px;\r\n padding: 0;\r\n}\r\n\r\n#divGraphEdit .secondOperDivContainer .el-select {\r\n margin-left: 26px;\r\n}\r\n\r\n#divGraphEdit .zoomin {\r\n margin-left: 20px;\r\n}\r\n\r\n#divGraphEdit .zoomout {\r\n margin-left: 14px;\r\n}\r\n\r\n#divGraphEdit .imgLeftTop {\r\n margin-left: 26px;\r\n}\r\n\r\n#divGraphEdit .rightLeftTop {\r\n margin-left: 22px;\r\n}\r\n\r\n#divGraphEdit .resetBtn {\r\n float: right;\r\n margin-right: 49px;\r\n line-height: 48px;\r\n cursor: pointer;\r\n}\r\n\r\n#divGraphEdit .secondRow {\r\n flex: 1;\r\n display: flex;\r\n flex-direction: row;\r\n}\r\n\r\n#divGraphEdit .graphInfoContainer {\r\n background: #fafafa;\r\n width: 200px;\r\n height: 100%;\r\n box-shadow: 0px 0px 1px rgb(0 0 0 / 25%);\r\n}\r\n\r\n#divGraphEdit .graphInfoFirst {\r\n margin-top: 31px;\r\n}\r\n\r\n#divGraphEdit .graphInfoName {\r\n margin-left: 12px;\r\n margin-top: 21px;\r\n}\r\n\r\n#divGraphEdit .graphInfoFirstEdit {\r\n margin-right: 12px;\r\n float: right;\r\n color: #0091ff;\r\n cursor: pointer;\r\n}\r\n\r\n#divGraphEdit .graphInfoContent {\r\n margin-top: 12px;\r\n margin-left: 36px;\r\n}\r\n\r\n#divGraphEdit .graphRegion {\r\n flex: 1;\r\n height: 100%;\r\n overflow: hidden;\r\n}\r\n\r\n#divGraphEdit .rightDetail {\r\n width: 200px;\r\n height: 100%;\r\n background: #fafafa;\r\n box-shadow: -1px 0px 1px rgb(0 0 0 / 25%);\r\n box-sizing: border-box;\r\n padding: 6px 12px 12px 12px;\r\n}\r\n\r\n#divGraphEdit .rightDetail > div:first-child {\r\n height: 100%;\r\n}\r\n\r\n#divGraphEdit .rightDetail .title {\r\n color: #6f777f;\r\n font-size: 12px;\r\n}\r\n\r\n#divGraphEdit .rightDetail .titleMargin {\r\n margin-top: 19px;\r\n}\r\n\r\n#divGraphEdit .rightDetail .coridGroup {\r\n margin-top: 9px;\r\n}\r\n\r\n#divGraphEdit .rightDetail .titleText {\r\n font-size: 14px;\r\n color: #000000;\r\n}\r\n\r\n#divGraphEdit .rightDetail .eqName {\r\n margin-top: 11px;\r\n}\r\n\r\n#divGraphEdit .rightDetail .detailSplitLine {\r\n width: 100%;\r\n height: 0;\r\n margin-top: 19px;\r\n border-bottom: 1px solid #979797;\r\n}\r\n\r\n#divGraphEdit .rightDetail .coridTitle2 {\r\n margin-left: 45px;\r\n}\r\n\r\n#divGraphEdit .rightDetail .coridTitleText {\r\n margin-left: 23px;\r\n}\r\n\r\n#divGraphEdit .rightDetail .scaleTitleText {\r\n margin-left: 6px;\r\n}\r\n\r\n#divGraphEdit .rightDetail .anchorContainer {\r\n margin-top: 15px;\r\n}\r\n\r\n#divGraphEdit .rightDetail .anchorContainer > span:last-child {\r\n margin-left: 22px;\r\n}\r\n\r\n#divGraphEdit .rightDetail .delBtn {\r\n color: #eb5757;\r\n position: absolute;\r\n bottom: 16px;\r\n margin-left: 62px;\r\n}\r\n\r\n#divGraphEdit .rightDetail .selectPrefix {\r\n color: #000000;\r\n font-size: 14px;\r\n height: 100%;\r\n line-height: 32px;\r\n}\r\n\r\n#divGraphEdit .rightDetail .el-input__inner {\r\n padding-left: 42px;\r\n}\r\n\r\n#divGraphEdit .rightDetail .fontSizeContainer .el-input__inner {\r\n padding: 0 15px;\r\n width: 80px;\r\n}\r\n\r\n#divGraphEdit .rightDetail .fontSizeContainer .el-select {\r\n margin-left: 42px;\r\n}\r\n\r\n#divGraphEdit .rightDetail .fontColor {\r\n position: relative;\r\n}\r\n\r\n#divGraphEdit .rightDetail .fontColor input {\r\n border: none;\r\n background: none;\r\n width: 30px;\r\n height: 31px;\r\n padding: 0;\r\n top: 0;\r\n bottom: 0;\r\n position: absolute;\r\n}\r\n\r\n#divGraphEdit .rightDetail .fontColor > div {\r\n line-height: 31px;\r\n display: inline-block;\r\n}\r\n\r\n#divGraphEdit .rightDetail .fontColor div:nth-child(2) {\r\n margin-left: 43px;\r\n}\r\n\r\n#divGraphEdit .rightDetail .fontColor div:nth-child(3) {\r\n margin-left: 16px;\r\n}\r\n\r\n#divGraphEdit img {\r\n vertical-align: middle;\r\n}\r\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./edit.vue?vue&type=template&id=2d78140c&\"\nimport script from \"./edit.vue?vue&type=script&lang=js&\"\nexport * from \"./edit.vue?vue&type=script&lang=js&\"\nimport style0 from \"./edit.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"deviceList\"}},[_c('saga-title',{attrs:{\"mess\":_vm.mess}}),_c('div',{staticClass:\"table-main\"},[_c('div',{staticClass:\"search-header\"},[_c('floor-cascader',{on:{\"change\":_vm.changeFloor}}),_c('my-cascader',{ref:\"cascader\",on:{\"change\":_vm.changeDevice}}),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"按照本地名称 | 本地编码 | 图纸编码 | 交付编码关键字搜索\",\"placement\":\"top-start\"}},[_c('el-input',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.param.deviceId),expression:\"param.deviceId\"}],staticStyle:{\"width\":\"250px\",\"margin-left\":\"10px\"},attrs:{\"clearable\":\"\",\"placeholder\":\"请输入关键字\",\"prefix-icon\":\"el-icon-search\"},on:{\"clear\":_vm.handleChangeKeyWord},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.handleChangeKeyWord.apply(null, arguments)}},model:{value:(_vm.param.keyWord),callback:function ($$v) {_vm.$set(_vm.param, \"keyWord\", $$v)},expression:\"param.keyWord\"}})],1),_c('el-dropdown',{staticClass:\"deviceList-excel\",on:{\"command\":_vm.handleCommand}},[_c('el-button',{attrs:{\"type\":\"primary\"}},[_vm._v(\" 数据导入\"),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})]),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{attrs:{\"command\":\"dynamic\"}},[_vm._v(\"深化点表导入\")]),_c('el-dropdown-item',{attrs:{\"command\":\"static\"}},[_vm._v(\"台账信息导入\")])],1)],1)],1),_c('hanson-table',{ref:\"tableMain\",attrs:{\"graphyId\":_vm.graphyId},on:{\"close\":_vm.close}})],1),_c('linkassets-dialog',{attrs:{\"dialog\":_vm.dialog}}),_c('dynamic-dialog',{ref:\"dynamicDialog\",on:{\"upDataDevice\":_vm.upDataDevice}}),_c('static-dialog',{ref:\"staticDialog\",on:{\"upDataDevice\":_vm.upDataDevice}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"listHeader\"}},[_c('div',{staticClass:\"border-main\"},[_c('div',{staticClass:\"card-view\"},_vm._l((_vm.mess.name),function(i,index){return _c('span',{key:index,staticClass:\"card\"},[_c('span',[_vm._v(_vm._s(index == 1 ? \"已对应\" : \"全部\")+_vm._s(i.key))]),_c('span',{staticClass:\"num\"},[_vm._v(_vm._s(_vm._f(\"numFormat\")(i.num)))])])}),0)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\r\n 清单页头部个数组件\r\n-->\r\n<template>\r\n <div id=\"listHeader\">\r\n <div class=\"border-main\">\r\n <!-- <p class=\"list-name\"><span style=\"padding-right: 12px;\">项目名称</span>{{mess.perjectName}}</p> -->\r\n <div class=\"card-view\">\r\n <span class=\"card\" v-for=\"(i,index) in mess.name\" :key=\"index\">\r\n <span>{{index == 1 ? \"已对应\" : \"全部\"}}{{i.key}}</span>\r\n <span class=\"num\">{{i.num |numFormat}}</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\nexport default {\r\n props: {\r\n mess: {\r\n type: Object,\r\n default: function() {\r\n return {\r\n perjectName: \"风雅苑\",\r\n name: [\r\n {\r\n key: \"测试\",\r\n num: 1548514\r\n },\r\n {\r\n key: \"测试\",\r\n num: 154852145\r\n }\r\n ]\r\n };\r\n }\r\n }\r\n },\r\n data() {\r\n return {};\r\n },\r\n methods: {\r\n },\r\n filters: {\r\n numFormat(num) {\r\n if (num && num != null) {\r\n num = String(num);\r\n var left = num.split(\".\")[0],\r\n right = num.split(\".\")[1];\r\n right = right\r\n ? right.length >= 2\r\n ? \".\" + right.substr(0, 2)\r\n : \".\" + right + \"0\"\r\n : \"\";\r\n var temp = left\r\n .split(\"\")\r\n .reverse()\r\n .join(\"\")\r\n .match(/(\\d{1,3})/g);\r\n return (\r\n (Number(num) < 0 ? \"-\" : \"\") +\r\n temp\r\n .join(\",\")\r\n .split(\"\")\r\n .reverse()\r\n .join(\"\") +\r\n right\r\n );\r\n } else if (num === 0) {\r\n // 注意===在这里的使用,如果传入的num为0,if中会将其判定为boolean类型,故而要另外做===判断\r\n return \"0\";\r\n } else {\r\n return \"--\";\r\n }\r\n }\r\n }\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n#listHeader {\r\n background-color: #fff;\r\n// width: calc(100% - 20px);\r\n// height: 120px;\r\n// margin: 10px;\r\n .border-main {\r\n // width: 100%;\r\n height: 100%;\r\n border: 1px solid #dfe6ec;\r\n // border-radius: 5px;\r\n padding-left: 10px;\r\n .list-name {\r\n line-height: 28px;\r\n font-size: 14px;\r\n margin-top: 10px;\r\n }\r\n .card-view {\r\n // height: 80px;\r\n // overflow: hidden;\r\n display: flex; \r\n margin-top: 10px;\r\n background-color: #e4e4e4;\r\n margin-right: 10px;\r\n .card {\r\n padding: 10px 0 10px 20px;\r\n width: 140px;\r\n text-align: left;\r\n span {\r\n color: #797979;\r\n font-size: 13px;\r\n }\r\n span.num {\r\n color: #3d3d3d;\r\n font-size: 17px;\r\n padding-left: 8px;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./title.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./title.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./title.vue?vue&type=template&id=52623b38&scoped=true&\"\nimport script from \"./title.vue?vue&type=script&lang=js&\"\nexport * from \"./title.vue?vue&type=script&lang=js&\"\nimport style0 from \"./title.vue?vue&type=style&index=0&id=52623b38&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"52623b38\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"buildFloor\"}},[_c('span',{staticClass:\"buildFloor\"},[_vm._v(\"建筑楼层\")]),_c('el-cascader',{ref:\"floorCascader\",style:(_vm.isWidth ? '' : 'width:160px;'),attrs:{\"placeholder\":\"请选择建筑楼层\",\"options\":_vm.options,\"filterable\":\"\",\"size\":\"small\"},on:{\"change\":_vm.changeCascader},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div id=\"buildFloor\">\r\n <span class=\"buildFloor\">建筑楼层</span>\r\n <el-cascader ref=\"floorCascader\" placeholder=\"请选择建筑楼层\" :options=\"options\" v-model=\"value\" filterable size=\"small\" :style=\"isWidth ? '' : 'width:160px;'\" @change=\"changeCascader\"></el-cascader>\r\n </div>\r\n</template>\r\n<script>\r\n import tools from \"@/utils/old-adm/scan/tools\";\r\n // import { buildingQuery } from '@/api/object/build';\r\n import Builder from \"@/controller/old-adm/buildController\";\r\n // import { floorQuery } from '@/api/object/floor';\r\n import Floor from \"@/controller/old-adm/floorController\";\r\n import { mapGetters, mapActions } from \"vuex\";\r\n\r\n export default {\r\n props: {\r\n isWidth: {\r\n type: Boolean,\r\n default: true\r\n },\r\n type: {\r\n type: String,\r\n default: \"yes\"\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(\"layout\", [\r\n \"projectId\",\r\n \"secret\",\r\n \"userId\"\r\n ])\r\n },\r\n data() {\r\n return {\r\n options: [],\r\n param: {\r\n ProjId: '',\r\n secret: ''\r\n },\r\n value: ['all']\r\n };\r\n },\r\n created() {\r\n this.param.ProjId = this.projectId\r\n this.param.secret = this.secret\r\n this.getData()\r\n },\r\n watch: {\r\n projectId() {\r\n this.value = ['all'];\r\n this.options = [];\r\n this.param.ProjId = this.projectId\r\n this.param.secret = this.secret\r\n this.getData()\r\n this.changeCascader(['all'])\r\n }\r\n },\r\n methods: {\r\n //设置默认选项\r\n setValue(val) {\r\n if (val && val.length) {\r\n this.value = val\r\n }\r\n },\r\n //获取数据\r\n async getData() {\r\n let data, buildParams = {\r\n pageNumber: 1,\r\n pageSize: 1000,\r\n orders: \"localName asc\",\r\n projection: [\r\n \"id\",\r\n \"localName\"\r\n ]\r\n }, floorParams = {\r\n orders: \"floorSequenceID desc\",\r\n pageNumber: 1,\r\n pageSize: 1000\r\n }\r\n const values = await Promise.all([Builder.buildingQuery(buildParams), Floor.floorQuery(floorParams)])\r\n let builData = values[0].content, floorData = values[1].content\r\n data = builData.map(build => {\r\n return {\r\n value: build.id,\r\n label: build.localName\r\n }\r\n })\r\n data.unshift({\r\n value: \"all\",\r\n label: \"全部\"\r\n }, {\r\n value: \"noKnow\",\r\n label: \"未明确建筑\"\r\n })\r\n data.forEach(build => {\r\n floorData.forEach(floor => {\r\n if (build.value == floor.buildingId && floor.id && floor.localName && this.type == \"yes\") {\r\n if (build.children) {\r\n build.children.push({\r\n value: floor.id,\r\n label: floor.localName,\r\n FloorSequenceID: floor.floorSequenceID,\r\n infos: floor.infos || {},\r\n outline: floor.outline || null,\r\n })\r\n } else {\r\n build.children = []\r\n build.children.push({\r\n value: \"all\",\r\n label: \"全部\"\r\n },{\r\n value: 'noKnow',\r\n label: \"未明确楼层\"\r\n },{\r\n value: floor.id,\r\n label: floor.localName,\r\n FloorSequenceID: floor.floorSequenceID,\r\n infos: floor.infos || {},\r\n outline: floor.outline || null,\r\n })\r\n }\r\n }\r\n })\r\n })\r\n this.options = data\r\n },\r\n //改变item\r\n changeCascader(value) {\r\n let node = this.$refs.floorCascader.getCheckedNodes();\r\n node && this.$emit(\"change\", value, node[0].data);\r\n }\r\n }\r\n };\r\n</script>\r\n<style lang=\"less\">\r\n .el-cascader .el-input .el-input__inner {\r\n vertical-align: bottom;\r\n }\r\n</style>\r\n<style lang=\"less\" scoped>\r\n #buildFloor {\r\n margin-left: 10px;\r\n float: left;\r\n }\r\n .buildFloor {\r\n color: #999999;\r\n font-size: 14px;\r\n margin-right: 12px;\r\n }\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./floorCascader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./floorCascader.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./floorCascader.vue?vue&type=template&id=3639d445&scoped=true&\"\nimport script from \"./floorCascader.vue?vue&type=script&lang=js&\"\nexport * from \"./floorCascader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./floorCascader.vue?vue&type=style&index=0&lang=less&\"\nimport style1 from \"./floorCascader.vue?vue&type=style&index=1&id=3639d445&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3639d445\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"cascaderMap\"}},[_c('span',{staticClass:\"buildFloor\",staticStyle:{\"margin-right\":\"12px\"}},[_vm._v(\"设备类别\")]),_c('el-cascader',{ref:\"cascader\",style:(_vm.isWidth ? '' : 'width:160px;'),attrs:{\"placeholder\":\"请选择\",\"filterable\":\"\",\"clearable\":\"\",\"props\":_vm.props,\"options\":_vm.options,\"size\":\"small\",\"popper-class\":\"equip-cascader\"},on:{\"change\":_vm.changeVal},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div id=\"cascaderMap\">\r\n <span class=\"buildFloor\" style=\"margin-right: 12px\">设备类别</span>\r\n <el-cascader\r\n ref=\"cascader\"\r\n v-model=\"value\"\r\n placeholder=\"请选择\"\r\n filterable\r\n clearable\r\n :props=\"props\"\r\n :options=\"options\"\r\n :style=\"isWidth ? '' : 'width:160px;'\"\r\n size=\"small\"\r\n @change=\"changeVal\"\r\n popper-class=\"equip-cascader\"\r\n >\r\n </el-cascader>\r\n </div>\r\n</template>\r\n<script>\r\nimport { mapGetters } from \"vuex\";\r\nimport Dic from \"@/controller/old-adm/dicController\";\r\n\r\nexport default {\r\n name: \"getCode\",\r\n props: {\r\n isWidth: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n all: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n computed: {\r\n ...mapGetters(\"layout\", [\"projectId\"]),\r\n },\r\n data() {\r\n return {\r\n value: [],\r\n options: [],\r\n props: {\r\n value: \"code\",\r\n label: \"name\",\r\n children: \"children\",\r\n },\r\n };\r\n },\r\n created() {\r\n this.getData();\r\n },\r\n watch: {\r\n projectId() {\r\n this.value = \"\";\r\n this.getData();\r\n },\r\n },\r\n methods: {\r\n setValue(val) {\r\n let flag = true;\r\n this.options.forEach((sys) => {\r\n sys.children.forEach((eq) => {\r\n if (eq.code === val) {\r\n flag = false;\r\n this.value = [sys.code, eq.code];\r\n }\r\n });\r\n });\r\n // 如果未找到对应的设备类,则置空\r\n if (flag) this.value = [];\r\n },\r\n //修改val\r\n changeVal(val) {\r\n let value = {};\r\n if (val && val[1]) {\r\n this.options.forEach((sys) => {\r\n sys.children.forEach((eq) => {\r\n if (eq.code === val[1]) {\r\n value.facility = eq.name;\r\n value.code = eq.code;\r\n }\r\n });\r\n });\r\n }\r\n this.$emit(\"change\", value);\r\n },\r\n //获取当前项目下的设备类型(只拿到编码-需要过滤)\r\n async getData(val) {\r\n let params = {\r\n distinct: true,\r\n pageNumber: 1,\r\n pageSize: 1000,\r\n projection: [\"classCode\"],\r\n };\r\n if (val && val[0] != \"all\") {\r\n params.filters = \"\";\r\n if (val[0] == \"noKnow\") {\r\n params.filters += `;buildingId isNull`;\r\n } else if (val[0] && val[0] != \"all\") {\r\n params.filters += `;buildingId='${val[0]}'`;\r\n }\r\n if (val[1] == \"noKnow\") {\r\n params.filters += `;floorId isNull`;\r\n } else if (val[1] && val[1] != \"all\") {\r\n params.filters += `;floorId='${val[1]}'`;\r\n }\r\n params.filters = params.filters.slice(1);\r\n }\r\n const res = await Dic.getEquipLkSys(params)\r\n if (res.content) {\r\n this.options = res.content;\r\n } else {\r\n this.options = [];\r\n }\r\n \r\n },\r\n },\r\n};\r\n</script>\r\n<style lang=\"less\">\r\n.equip-cascader {\r\n .el-cascader-menu__wrap {\r\n height: 550px;\r\n }\r\n}\r\n</style>\r\n<style lang=\"less\" scoped>\r\n#cascaderMap {\r\n float: left;\r\n margin-left: 10px;\r\n\r\n .buildFloor {\r\n color: #999999;\r\n font-size: 14px;\r\n }\r\n\r\n /deep/ .el-scrollbar__wrap {\r\n height: 563px;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./equipCascader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./equipCascader.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./equipCascader.vue?vue&type=template&id=5dbb2cdd&scoped=true&\"\nimport script from \"./equipCascader.vue?vue&type=script&lang=js&\"\nexport * from \"./equipCascader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./equipCascader.vue?vue&type=style&index=0&lang=less&\"\nimport style1 from \"./equipCascader.vue?vue&type=style&index=1&id=5dbb2cdd&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5dbb2cdd\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticStyle:{\"height\":\"calc(100% - 44.5px)\",\"padding\":\"0px 10px 10px\",\"box-sizing\":\"border-box\"}},[_c('div',{staticClass:\"hanson-bar\"},[_c('div',{staticStyle:{\"float\":\"right\",\"overflow\":\"hidden\"}},[_c('el-checkbox',{on:{\"change\":function($event){return _vm.getHeaderData(_vm.mess)}},model:{value:(_vm.isShowDelivered),callback:function ($$v) {_vm.isShowDelivered=$$v},expression:\"isShowDelivered\"}},[_vm._v(\"显示有值信息点\")]),_c('span',{staticStyle:{\"margin-left\":\"10px\"}},[_vm._v(\"当前筛选条件下共\"+_vm._s(_vm.page.total || \"--\")+\"设备\")])],1),_c('el-select',{staticStyle:{\"width\":\"100px\",\"margin-right\":\"8px\",\"vertical-align\":\"bottom\"},on:{\"change\":function($event){return _vm.getHeaderData(_vm.mess)}},model:{value:(_vm.onlyRead),callback:function ($$v) {_vm.onlyRead=$$v},expression:\"onlyRead\"}},_vm._l((_vm.options),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1),_c('el-select',{staticStyle:{\"width\":\"100px\",\"margin-right\":\"8px\",\"vertical-align\":\"bottom\"},on:{\"change\":_vm.handleChangeShowType},model:{value:(_vm.showType),callback:function ($$v) {_vm.showType=$$v},expression:\"showType\"}},_vm._l((_vm.showTypes),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1),_c('el-select',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mess.deviceId),expression:\"mess.deviceId\"}],staticStyle:{\"width\":\"200px\",\"margin-right\":\"8px\",\"vertical-align\":\"bottom\"},attrs:{\"filterable\":\"\",\"clearable\":\"\",\"multiple\":\"\",\"collapse-tags\":\"\",\"placeholder\":\"请选择信息点\"},on:{\"change\":_vm.initTable},model:{value:(_vm.showInfoList),callback:function ($$v) {_vm.showInfoList=$$v},expression:\"showInfoList\"}},_vm._l((_vm.headerOptions),function(item){return _c('el-option',{key:item.code,attrs:{\"label\":item.name,\"value\":item.code}})}),1),_c('el-button',{staticStyle:{\"width\":\"80px\"},attrs:{\"size\":\"small\"},on:{\"click\":_vm.addDevice}},[_vm._v(\"添加设备 \")]),_c('el-button',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.onlyRead),expression:\"!onlyRead\"}],attrs:{\"size\":\"small\",\"disabled\":!(_vm.tableData && _vm.tableData.length)},on:{\"click\":_vm.Batch}},[_vm._v(\"批量维护信息点 \")]),_c('el-button',{directives:[{name:\"show\",rawName:\"v-show\",value:(true),expression:\"true\"}],attrs:{\"size\":\"small\"},on:{\"click\":_vm.handleBatchEquipPoint}},[_vm._v(\"批量维护设备位置\")]),_c('el-button',{staticStyle:{\"width\":\"80px\"},attrs:{\"size\":\"small\"},on:{\"click\":_vm.reset}},[_vm._v(\"刷新 \")]),_c('el-button',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.onlyRead),expression:\"!onlyRead\"}],staticStyle:{\"width\":\"80px\"},attrs:{\"size\":\"small\"},on:{\"click\":_vm.undo}},[_vm._v(\"撤销 \")])],1),_c('qrcode',{ref:\"qrcode\",attrs:{\"dialog\":_vm.myDialog,\"qrcodeUrl\":_vm.qrcodeUrl,\"addBody\":true}}),_c('bimDialog',{ref:\"bimdialog\",attrs:{\"dialog\":_vm.myDialog,\"bimcodeobj\":_vm.bimcodeobj,\"addBody\":true,\"read\":_vm.onlyRead ? true : false},on:{\"closeBIM\":_vm.closeBIM}}),_c('upload-files-dialog',{ref:\"upload\",attrs:{\"read\":_vm.onlyRead ? true : false,\"keysArr\":_vm.filesArr,\"firmDataType\":_vm.firmDataType,\"information\":_vm.information,\"infoType\":_vm.infoType,\"dialog\":_vm.myDialog},on:{\"changeFile\":_vm.fileChange}}),_c('upload-img-dialog',{attrs:{\"read\":_vm.onlyRead ? true : false,\"keysArr\":_vm.imgsArr,\"dialog\":_vm.myDialog,\"firmDataType\":_vm.firmDataType,\"information\":_vm.information,\"infoType\":_vm.infoType},on:{\"changeFile\":_vm.imgChange}}),_c('pic-dialog',{attrs:{\"read\":_vm.onlyRead ? true : false,\"dialog\":_vm.myDialog,\"keysArr\":_vm.picsArr,\"firmDataType\":_vm.firmDataType,\"information\":_vm.information,\"infoType\":_vm.infoType},on:{\"change\":_vm.changePics}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.mess.deviceId && (!_vm.tableData || !_vm.tableData.length)),expression:\"!mess.deviceId && (!tableData || !tableData.length)\"}],staticClass:\"middle_sty\",staticStyle:{\"height\":\"91%\",\"text-align\":\"center\"}},[_vm._m(0)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mess.deviceId && (!_vm.tableData || !_vm.tableData.length)),expression:\"mess.deviceId && (!tableData || !tableData.length)\"}],staticClass:\"center middle_sty\",staticStyle:{\"height\":\"91%\"}},[_vm._m(1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mess.deviceId && _vm.tableData && _vm.tableData.length),expression:\"mess.deviceId && tableData && tableData.length\"}],ref:\"handsontable\",attrs:{\"id\":\"handsontable\"}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mess.deviceId && _vm.tableData && _vm.tableData.length),expression:\"mess.deviceId && tableData && tableData.length\"}],staticClass:\"right\"},[_c('my-pagination',{key:_vm.pageKey,attrs:{\"page\":_vm.page},on:{\"change\":_vm.getTableData}})],1),(_vm.myDialog.details)?_c('details-dialog',{attrs:{\"iframeSrc\":_vm.iframeSrc,\"dialog\":_vm.myDialog}}):_vm._e(),_c('system-type',{attrs:{\"device\":_vm.mess,\"curDevice\":_vm.curDevice,\"dialog\":_vm.myDialog,\"type\":_vm.onlyRead ? 'read' : 'edit',\"list\":_vm.systemList},on:{\"change\":_vm.changeSystemType}}),_c('change-rea',{attrs:{\"dialog\":_vm.myDialog,\"category\":_vm.deviceType},on:{\"changeProperty\":_vm.changeProperty}}),_c('menum',{attrs:{\"dialog\":_vm.myDialog,\"updateInfoData\":_vm.updateInfoData,\"updateInput\":_vm.updateInput},on:{\"change\":_vm.handleChangeMenum}}),_c('look-pic',{attrs:{\"dialog\":_vm.myDialog,\"keysArr\":_vm.picsArr}}),_c('el-dialog',{attrs:{\"title\":\"临时维护信息点\",\"visible\":_vm.myDialog.update,\"width\":\"670px\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.myDialog, \"update\", $event)},\"close\":_vm.handleCloseUpdate}},[_c('el-row',[_vm._v(\" 该信息点未定义对应组件,现在维护数据不确定后续是否可用。如确实需要维护,请点击 \"),_c('el-link',{attrs:{\"type\":\"primary\",\"underline\":false},on:{\"click\":function($event){_vm.updateInputShow = true}}},[_vm._v(\"继续维护 \")]),_vm._v(\" 。 \")],1),_c('el-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.updateInputShow),expression:\"updateInputShow\"}],staticStyle:{\"margin-top\":\"20px\"}},[_c('el-input',{attrs:{\"type\":\"textarea\",\"autosize\":{ minRows: 4, maxRows: 8 },\"placeholder\":\"请输入内容\"},model:{value:(_vm.updateInput),callback:function ($$v) {_vm.updateInput=$$v},expression:\"updateInput\"}})],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.myDialog.update = false}}},[_vm._v(\"取 消\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.handleClickUpdate}},[_vm._v(\"确 认\")])],1)],1),_c('el-dialog',{attrs:{\"title\":\"确定新增设备的类型\",\"visible\":_vm.myDialog.addDevice,\"width\":\"670px\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.myDialog, \"addDevice\", $event)}}},[_c('el-row',[_c('my-cascader',{ref:\"cascader\",attrs:{\"all\":true},on:{\"change\":_vm.changeAddType}})],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.toAddDevice}},[_vm._v(\"下 一 步\")])],1)],1),_c('batchDialog',{ref:\"batchDialogs\",attrs:{\"mess\":_vm.mess,\"information\":_vm.information,\"newEnclosure\":_vm.newEnclosure,\"tableHeader\":_vm.tableHeader},on:{\"multiples\":_vm.multiples,\"upDataDevice\":_vm.upDataDevice}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('i',{staticClass:\"icon-wushuju iconfont\"}),_vm._v(\" 请选择设备类别 \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('i',{staticClass:\"icon-wushuju iconfont\"}),_vm._v(\" 暂无数据 \")])}]\n\nexport { render, staticRenderFns }","const handsonUtils = {\r\n /**\r\n * 获取被排序后的数组\r\n *\r\n * @param changeData 发生改变的数据\r\n * @param source 数组\r\n *\r\n * @return array 经过排序后或者经过搜索后的数组\r\n */\r\n getParam: function(changeData, source, hot, trimmedArr) {\r\n function arrayUnique(arr, name){ //去重\r\n var hash = {};\r\n return arr.reduce(function(item, next) {\r\n hash[next[name]] ? '' : hash[next[name]] = true && item.push(next);\r\n return item;\r\n }, []);\r\n }\r\n let newData = arrayUnique(changeData, 0)\r\n let param = \"\";\r\n //被筛选过后的数组\r\n // let trimmedArr = this.trimmedRows();\r\n //是否启用了排序\r\n let isSort = hot.getPlugin(\"columnSorting\").isSorted();\r\n if (trimmedArr.length && isSort) {\r\n //排序后的数组\r\n let sortArr = hot.getPlugin(\"columnSorting\").rowsMapper.__arrayMap;\r\n param = newData.map(item => {\r\n return hot.getSourceDataAtRow(trimmedArr[sortArr[item[0]]]);\r\n });\r\n } else if (isSort) {\r\n //排序后的数组\r\n let sortArr = hot.getPlugin(\"columnSorting\").rowsMapper.__arrayMap;\r\n param = newData.map(item => {\r\n return hot.getSourceDataAtRow(sortArr[item[0]]);\r\n });\r\n } else if (trimmedArr.length) {\r\n param = newData.map(item => {\r\n return hot.getSourceDataAtRow(trimmedArr[item[0]]);\r\n });\r\n } else {\r\n param = newData.map(item => {\r\n return hot.getSourceDataAtRow(item[0]);\r\n });\r\n }\r\n return param;\r\n },\r\n\r\n /**\r\n * \r\n * @param {handsontable修改参数} changeData \r\n * @param {*} source \r\n * @param {handsontabele实例} hot \r\n * @param {排序数组} trimmedArr\r\n * \r\n * @return 修改数值的前一个对象 \r\n */\r\n getUnshiftParam: function(changeData, source, hot, trimmedArr) {\r\n //是否启用了排序\r\n let isSort = hot.getPlugin(\"columnSorting\").isSorted();\r\n if (trimmedArr.length && isSort) {\r\n //排序后的数组\r\n let sortArr = hot.getPlugin(\"columnSorting\").rowsMapper.__arrayMap;\r\n return hot.getSourceDataAtRow(trimmedArr[sortArr[changeData[0][0] - 1]])\r\n } else if (isSort) {\r\n //排序后的数组\r\n let sortArr = hot.getPlugin(\"columnSorting\").rowsMapper.__arrayMap;\r\n return hot.getSourceDataAtRow(sortArr[changeData[0][0] - 1])\r\n } else if (trimmedArr.length) {\r\n //进行了筛选\r\n return hot.getSourceDataAtRow(trimmedArr[changeData[0][0] - 1])\r\n } else {\r\n //没有进行排序和筛选\r\n return hot.getSourceDataAtRow(changeData[0][0] - 1);\r\n }\r\n },\r\n}\r\n\r\nexport default handsonUtils","const text = {\r\n // 只读模式 or 编辑模式\r\n readOnly: false,\r\n //图片类型\r\n picType: (instance, td, row, col, prop, value, cellProperties) => {\r\n td.style.color = \"#409EFF\";\r\n td.style.cursor = \"pointer\";\r\n if (value instanceof Array && value.length > 0) {\r\n let i = 0\r\n value.map(item => {\r\n // if (item.type == \"image\" || item.type == \"video\") {\r\n i++\r\n // }\r\n })\r\n td.innerHTML = \"已上传:\" + i;\r\n } else {\r\n td.innerHTML = text.readOnly?'':'点击上传'\r\n }\r\n return td;\r\n },\r\n // 文件类型\r\n fileType: (instance, td, row, col, prop, value, cellProperties) => {\r\n td.style.color = \"#409EFF\";\r\n td.style.cursor = \"pointer\";\r\n if (value instanceof Array && value.length > 0) {\r\n td.innerHTML = \"已上传:\" + value.length;\r\n } else {\r\n td.innerHTML = text.readOnly?'':'点击上传'\r\n }\r\n return td;\r\n },\r\n //系统类型\r\n systemList: (instance, td, row, col, prop, value, cellProperties) => {\r\n td.style.color = \"#409EFF\";\r\n td.style.cursor = \"pointer\";\r\n if (value instanceof Array && value.length > 0) {\r\n if (value.length == 1) {\r\n td.innerHTML = (value[0].localName || value[0].name)? (value[0].localName || value[0].name) : (value[0].infos.localName || value[0].infos.name || \"\")\r\n } else {\r\n let text = \"\"\r\n for (let i = 0; i < value.length; i++) {\r\n if (!!value[i].localName || !!value[i].name) {\r\n if (i == value.length) {\r\n text += value[i].localName || value[i].name\r\n } else {\r\n text = value[i].localName || value[i].name + \"、\" + text\r\n }\r\n } else {\r\n if (i == value.length) {\r\n text += value[i].infos.localName || value[i].infos.name\r\n } else {\r\n text = value[i].infos.localName || value[i].infos.name + \"、\" + text\r\n }\r\n }\r\n }\r\n td.innerHTML = text.substring(0, 40) + \"...\"\r\n }\r\n } else {\r\n td.innerHTML = \"无关联系统\"\r\n }\r\n return td;\r\n },\r\n //建筑类型\r\n buildingList: (instance, td, row, col, prop, value, cellProperties) => {\r\n td.style.color = \"#409EFF\";\r\n td.style.cursor = \"pointer\";\r\n if (value instanceof Array && value.length > 0) {\r\n if (value.length == 1) {\r\n td.innerHTML = (value[0].localName || value[0].name)? (value[0].localName || value[0].name) : (value[0].infos.localName || value[0].infos.name || \"\")\r\n } else {\r\n let text = \"\"\r\n for (let i = 0; i < value.length; i++) {\r\n if (!!value[i].localName || !!value[i].name) {\r\n if (i == value.length) {\r\n text += value[i].localName || value[i].name\r\n } else {\r\n text = value[i].localName || value[i].name + \"、\" + text\r\n }\r\n } else {\r\n if (i == value.length) {\r\n text += value[i].infos.localName || value[i].infos.name\r\n } else {\r\n text = value[i].infos.localName || value[i].infos.name + \"、\" + text\r\n }\r\n }\r\n }\r\n td.innerHTML = text.substring(0, 40) + \"...\"\r\n }\r\n } else {\r\n td.innerHTML = \"无所属建筑\"\r\n }\r\n return td;\r\n },\r\n //四大厂商\r\n idType: (instance, td, row, col, prop, value, cellProperties) => {\r\n let html = ''\r\n let Manufacturer = instance.getDataAtRowProp(row,'infos.manufacturer') || '空',\r\n Brand = instance.getDataAtRowProp(row,'infos.brand') || '空',\r\n Specification = instance.getDataAtRowProp(row,'infos.specification') || '空';\r\n switch (prop){\r\n case 'dpManufacturerId':\r\n html = Manufacturer + '/' + Brand + '/' + Specification\r\n break;\r\n case 'dpSupplierId':\r\n html = instance.getDataAtRowProp(row,'infos.supplier')\r\n break;\r\n case 'dpMaintainerId':\r\n html = instance.getDataAtRowProp(row,'infos.maintainer')\r\n break;\r\n case 'dpInsurerId':\r\n html = instance.getDataAtRowProp(row,'infos.insurer')\r\n break;\r\n default:\r\n break;\r\n }\r\n td.style.color = \"#409EFF\";\r\n td.style.cursor = \"pointer\";\r\n if (!!value) {\r\n // let data = value.split(\"-\")[1] || \"空名\"\r\n td.innerHTML = html\r\n } else {\r\n td.innerHTML = \"点击选择\"\r\n }\r\n return td\r\n },\r\n\r\n //查看二维码\r\n lookQRCode: (instance, td, row, col, prop, value, cellProperties) => {\r\n td.style.color = \"#409EFF\";\r\n td.style.cursor = \"pointer\";\r\n td.innerHTML = \"查看二维码\"\r\n return td\r\n },\r\n\r\n //系统所属建筑楼层\r\n sysInBuildFloor: (instance, td, row, col, prop, value, cellProperties) => {\r\n td.style.color = \"#409EFF\";\r\n td.style.cursor = \"pointer\";\r\n if (value instanceof Array && value.length > 0) {\r\n let text = \"\"\r\n for (let i = 0; i < value.length; i++) {\r\n if(value[i].BuildID && value[i].FloorID){\r\n text += `${value[i].BuildLocalName || value[i].BuildName}-${value[i].FloorLocalName || value[i].FloorName }、`\r\n } else {\r\n text += `${value[i].BuildLocalName || value[i].BuildName}、`\r\n }\r\n }\r\n text = text.substring(0,text.length-1);\r\n if(text.length>15){\r\n text = text.substring(0,15)+ \"...\";\r\n }\r\n td.innerHTML = text;\r\n } else {\r\n td.innerHTML = \"无所属建筑楼层\"\r\n }\r\n return td;\r\n },\r\n}\r\n\r\nexport default text\r\n","const data = {\r\n equipment: { //设备\r\n onlyRead: [],\r\n edit: []\r\n },\r\n tenant: { //租户\r\n onlyRead: [],\r\n edit: []\r\n },\r\n shaft: { //竖井\r\n onlyRead: [],\r\n edit: []\r\n },\r\n parts: { //部件\r\n onlyRead: [],\r\n edit: []\r\n },\r\n property:{ //资产\r\n onlyRead: [],\r\n edit: []\r\n },\r\n system:{ //系统\r\n onlyRead: [],\r\n edit: []\r\n },\r\n space:{//业务空间\r\n onlyRead: [\r\n \"outline\"\r\n ],\r\n edit: [\r\n \"outline\"\r\n ]\r\n }\r\n}\r\n\r\nexport default data","/**\r\n * 枚举数据字典返回的数字类型(dataType)\r\n * \r\n * @author haojianlong <haojianlong@sagacloud.cn>\r\n*/\r\nconst dataTypeMap = {\r\n STRING: 'STRING', // 字符串\r\n ATTACHMENT: 'ATTACHMENT', // 文件\r\n DOUBLE: 'DOUBLE', // 数字 浮点\r\n DATETIME: 'DATETIME', //时间\r\n ENUM: 'ENUM', // 单选枚举\r\n BOOLEAN: 'BOOLEAN', // 布尔\r\n MENUM: 'MENUM', // 多选枚举\r\n INTEGER: 'INTEGER', // 整数\r\n}\r\nexport default dataTypeMap","// 不显示的信息点数组\r\nimport text from \"@/utils/old-adm/handsontable/mainText\"\r\nimport tools from \"@/utils/old-adm/scan/tools\"\r\nimport fieldData from \"@/utils/old-adm/handsontable/fillterField\"\r\nimport dataTypeMap from \"./dataTypeMap\"\r\n\r\n//在编辑模式下并且勾选隐藏自动填充的信息点不显示的字段\r\nlet noShowArr = [\r\n \"specification\",\r\n \"serviceLife\"\r\n]\r\n//在编辑模式下不显示的字段\r\nlet cantShow = [\r\n \"EquipQRCode\",\r\n \"EquipID\",\r\n \"EquipName\",\r\n \"BIMLocation\",\r\n \"Brand\",\r\n \"Specification\",\r\n \"Manufacturer\",\r\n \"Supplier\",\r\n \"SupplierContactor\",\r\n \"SupplierPhone\",\r\n \"SupplierEmail\",\r\n \"SupplierWeb\",\r\n \"SupplierFax\",\r\n \"Maintainer\",\r\n \"MaintainerContactor\",\r\n \"MaintainerPhone\",\r\n \"MaintainerEmail\",\r\n \"MaintainerWeb\",\r\n \"Principal\",\r\n \"MaintainerFax\",\r\n \"Insurer\",\r\n \"InsurerContactor\",\r\n \"InsurerPhone\",\r\n \"InsurerEmail\",\r\n \"InsurerWeb\",\r\n \"InsurerFax\",\r\n \"InsuranceFile\",\r\n \"EquipID\",\r\n \"EquipName\",\r\n \"SpaceCount\",\r\n \"SpaceList\",\r\n \"TenantID\",\r\n \"ShaftID\"\r\n]\r\n\r\n//台账编辑页面不显示的厂商信息\r\nlet firmArr = [\r\n \"brand\", //品牌\r\n \"specification\", //设备型号\r\n \"manufacturer\", //生产厂家\r\n \"supplier\", //供应商单位名称\r\n \"supplierContactor\", //供应商联系人\r\n \"supplierPhone\", //供应商联系电话\r\n \"supplierEmail\", //供应商电子邮件\r\n \"supplierWeb\", //供应商网址\r\n \"supplierFax\", //供应商传真\r\n \"maintainer\", //维修商单位名称\r\n \"maintainerContactor\", //维修商联系人\r\n \"maintainerPhone\", //维修商联系电话\r\n \"maintainerEmail\", //维修商电子邮件\r\n \"maintainerWeb\", //维修商网址\r\n \"maintainerFax\", //维修商传真\r\n \"insurer\", //保险公司名称\r\n \"insurerContactor\", //保险公司联系人\r\n \"insurerPhone\", //保险公司联系电话\r\n 'insurerEmail', //保险公司电子邮件\r\n \"insurerWeb\", //保险公司网址\r\n \"insurerFax\", //保险公司传真\r\n // \"dpManufacturerId\",//品牌型号Id\r\n // \"dpSupplierId\",//供应商信息Id\r\n // \"dpMaintainerId\",//维修商信息Id\r\n // \"dpInsurerId\"//保险公司信息Id\r\n]\r\n\r\n// 将映射表枚举值转为数组\r\nconst mapToArr = () => {\r\n const arr = []\r\n for (let key in dataTypeMap) {\r\n arr.push(dataTypeMap[key])\r\n }\r\n return arr;\r\n}\r\nconst showTools = {\r\n inputModeArr: mapToArr(),\r\n cantShow: (code) => {\r\n let falg = true\r\n cantShow.map(item => {\r\n if (item == code) {\r\n falg = false\r\n }\r\n })\r\n return falg\r\n },\r\n fixedNoShowField: (noShowList, code) => {\r\n let flag = true\r\n noShowList.map(item => {\r\n if (item == code) {\r\n flag = false\r\n }\r\n })\r\n return flag\r\n },\r\n isShow: (code) => {\r\n let falg = true\r\n noShowArr.map(item => {\r\n if (item == code) {\r\n falg = false\r\n }\r\n })\r\n return falg\r\n },\r\n arrToArr(arr, showType) {\r\n let first = 0,\r\n scound = 0,\r\n three = 0,\r\n four = 0\r\n arr.find(function (value, index, arr) {\r\n let flag = (showType != \"Visible\" || value.visible)\r\n if (\r\n ((value.code == \"brand\" && flag) ||\r\n (value.code == \"specification\" && flag) ||\r\n (value.code == \"manufacturer\" && flag)) && !first\r\n ) {\r\n first = index\r\n }\r\n if (\r\n ((value.code == \"supplier\" && flag) ||\r\n (value.code == \"supplierContactor\" && flag) ||\r\n (value.code == \"supplierEmail\" && flag) ||\r\n (value.code == \"supplierWeb\" && flag) ||\r\n (value.code == \"supplierFax\" && flag) ||\r\n (value.code == \"supplierPhone\" && flag)) && !scound\r\n ) {\r\n scound = index\r\n }\r\n if (\r\n ((value.code == \"maintainer\" && flag) ||\r\n (value.code == \"maintainerContactor\" && flag) ||\r\n (value.code == \"maintainerPhone\" && flag) ||\r\n (value.code == \"maintainerEmail\" && flag) ||\r\n (value.code == \"maintainerWeb\" && flag) ||\r\n (value.code == \"maintainerFax\" && flag)) && !three\r\n ) {\r\n three = index\r\n }\r\n if (\r\n ((value.code == \"insurer\" && flag) ||\r\n (value.code == \"insurerContactor\" && flag) ||\r\n (value.code == \"insurerPhone\" && flag) ||\r\n (value.code == \"insurerEmail\" && flag) ||\r\n (value.code == \"insurerWeb\" && flag) ||\r\n (value.code == \"insurerFax\" && flag)) && !four\r\n ) {\r\n four = index\r\n }\r\n })\r\n let numList = [first, scound, three, four]\r\n numList.reverse().map((item, index) => {\r\n if (item) {\r\n if (index == 0) {\r\n arr.splice(item, 0, {\r\n category: 'STATIC',\r\n dataType: \"STRING\",\r\n firstName: \"基本信息\",\r\n aliasCode: \"dpInsurerId\",\r\n aliasName: \"保险公司信息\",\r\n name: \"保险公司信息\",\r\n code: \"dpInsurerId\",\r\n origCode: \"dpInsurerId\",\r\n origDataType: \"Str\",\r\n path: \"dpInsurerId\",\r\n priority: \"S\",\r\n editable: true,\r\n visible: true\r\n })\r\n } else if (index == 1) {\r\n arr.splice(item, 0, {\r\n category: 'STATIC',\r\n dataType: \"STRING\",\r\n firstName: \"基本信息\",\r\n aliasCode: \"dpMaintainerId\",\r\n aliasName: \"维修商信息\",\r\n name: \"维修商信息\",\r\n code: \"dpMaintainerId\",\r\n origCode: \"dpMaintainerId\",\r\n origDataType: \"Str\",\r\n path: \"dpMaintainerId\",\r\n priority: \"S\",\r\n editable: true,\r\n visible: true\r\n })\r\n } else if (index == 2) {\r\n arr.splice(item, 0, {\r\n category: 'STATIC',\r\n dataType: \"STRING\",\r\n firstName: \"基本信息\",\r\n aliasCode: \"dpSupplierId\",\r\n aliasName: \"供应商信息\",\r\n name: \"供应商信息\",\r\n code: \"dpSupplierId\",\r\n origCode: \"dpSupplierId\",\r\n origDataType: \"Str\",\r\n path: \"dpSupplierId\",\r\n priority: \"S\",\r\n editable: true,\r\n visible: true\r\n })\r\n } else if (index == 3) {\r\n arr.splice(item, 0, {\r\n category: 'STATIC',\r\n dataType: \"STRING\",\r\n firstName: \"基本信息\",\r\n aliasCode: \"dpManufacturerId\",\r\n aliasName: \"生产厂家/品牌/型号\",\r\n name: \"生产厂家/品牌/型号\",\r\n code: \"dpManufacturerId\",\r\n origCode: \"dpManufacturerId\",\r\n origDataType: \"Str\",\r\n path: \"dpManufacturerId\",\r\n priority: \"S\",\r\n editable: true,\r\n visible: true\r\n })\r\n }\r\n }\r\n })\r\n return arr\r\n },\r\n /**\r\n *\r\n * @param {*} arr 原始表头数组\r\n * @param {*} type 对应表格的模块类型\r\n * @param {*} onlyRead 是否只读\r\n * @param {*} showType 查看类型(全部;只看要采集的信息;隐藏部分信息)\r\n * @param {*} taizhang 是否是台账类型(默认为false)\r\n *\r\n */\r\n headerTextFilter(arr, type, onlyRead, showType, taizhang = false) {\r\n // if (taizhang && !onlyRead) {\r\n // arr = this.arrToArr(arr, showType)\r\n // }\r\n let data = arr.map(item => {\r\n // if (type == \"property\" && item.firstTag == \"RunParam\") { //资产台账不显示运行参数\r\n // return undefined\r\n // }\r\n if (onlyRead) { //只读模式\r\n if (!this.filterUnshow(onlyRead, type, item.code)) { //过滤固定不显示字段\r\n return undefined\r\n }\r\n if (showType == \"Visible\" && item.visible) { //只看要采集的信息\r\n return this.isUnit(item)\r\n } else if (showType == \"all\") { //显示全部\r\n return this.isUnit(item)\r\n } else {\r\n return undefined\r\n }\r\n } else { //编辑模式\r\n // if (taizhang && !this.filterFirm(item.code)) {\r\n // return undefined\r\n // }\r\n if (!this.filterUnshow(onlyRead, type, item.code)) { //过滤固定不显示字段\r\n return undefined\r\n }\r\n if (showType == \"Visible\" && item.visible) { //只看要采集的信息\r\n return this.isUnit(item)\r\n } else if (showType == \"all\") { //显示全部\r\n return this.isUnit(item)\r\n } else if (showType == \"partInfo\" && item.visible && this.isShow(item.code)) { //隐藏部分厂家信息(***需维护不显示列表***)\r\n // if (item.FirstName == \"控制参数\" || item.FirstName == \"设定参数\" || item.FirstName == \"运行参数\") {\r\n if (item.firstTag == \"techParam\") { //技术参数\r\n return undefined\r\n } else {\r\n return this.isUnit(item)\r\n }\r\n } else {\r\n return undefined\r\n }\r\n\r\n }\r\n }).filter(d => d)\r\n return data\r\n },\r\n headerTypeFilter(arr, type, onlyRead, showType, taizhang = false) {\r\n // if (taizhang && !onlyRead) {\r\n // arr = this.arrToArr(arr, showType)\r\n // }\r\n text.readOnly = onlyRead;\r\n let data = arr.map(item => {\r\n // if (type == \"property\" && item.firstTag == \"runParam\") { //资产台账不显示运行参数\r\n // return undefined\r\n // }\r\n if (onlyRead) { //只读模式\r\n if (!this.filterUnshow(onlyRead, type, item.code)) { //过滤固定不显示字段\r\n return undefined\r\n }\r\n if (showType == \"Visible\" && item.visible) { //只看要采集的信息\r\n return this.textFormat(item, onlyRead)\r\n } else if (showType == \"all\") { //显示全部\r\n return this.textFormat(item, onlyRead)\r\n } else {\r\n return undefined\r\n }\r\n } else { //编辑模式\r\n // if (taizhang && !this.filterFirm(item.code)) {\r\n // return undefined\r\n // }\r\n if (!this.filterUnshow(onlyRead, type, item.code)) { //过滤固定不显示字段\r\n return undefined\r\n }\r\n if (showType == \"Visible\" && item.visible) { //只看要采集的信息\r\n return this.inputModeFilter(item, onlyRead)\r\n } else if (showType == \"all\") { //显示全部\r\n return this.inputModeFilter(item, onlyRead)\r\n } else if (showType == \"partInfo\" && item.visible && this.isShow(item.code)) { //隐藏部分厂家信息(***需维护不显示列表***)\r\n // if (item.FirstName == \"控制参数\" || item.FirstName == \"设定参数\" || item.FirstName == \"运行参数\") {\r\n if (item.firstTag == \"techParam\") { //技术参数\r\n return undefined\r\n } else {\r\n return this.inputModeFilter(item, onlyRead)\r\n }\r\n } else {\r\n return undefined\r\n }\r\n }\r\n }).filter(d => d)\r\n return data\r\n },\r\n isUnit(item) {\r\n if (!item.unit || item.unit == \"\") {\r\n return item.name;\r\n } else {\r\n return item.name + \"(\" + item.unit + \")\";\r\n }\r\n },\r\n textFormat(item, onlyRead) {\r\n if (\r\n // item.code == \"EquipQRCode\" ||\r\n // item.code == \"RoomQRCode\"\r\n item.code == \"defaultQRCode\"\r\n ) {\r\n return {\r\n data: item.path,\r\n renderer: text.lookQRCode,\r\n readOnly: onlyRead\r\n }\r\n }\r\n\r\n //图片类型\r\n if (\r\n item.code == \"installPic\" ||\r\n item.code == \"nameplate\" ||\r\n item.code == \"systemChart\" ||\r\n item.code == \"pic\"\r\n ) {\r\n return {\r\n data: item.path,\r\n renderer: text.picType,\r\n readOnly: onlyRead\r\n }\r\n }\r\n //文件类型\r\n if (item.code == \"insuranceFile\" ||\r\n item.code == \"archive\" ||\r\n item.code == \"checkReport\" ||\r\n item.code == \"maintainManual\" ||\r\n item.code == \"approachingAcceptance\" ||\r\n item.code == \"acceptanceReport\" ||\r\n item.code == \"operationManual\" ||\r\n item.code == \"originalCertificate\" ||\r\n item.code == \"testReport\" ||\r\n item.code == \"productCertification\" ||\r\n item.code == \"installInstruction\" ||\r\n item.code == \"supplierContract\" ||\r\n item.code == \"drawing\" ||\r\n item.code == \"installDrawing\" ||\r\n item.code == \"designIDGraph\" ||\r\n item.code == \"fanCharacterCurve\"\r\n ) {\r\n return {\r\n data: item.path,\r\n renderer: text.fileType,\r\n readOnly: onlyRead\r\n }\r\n }\r\n if (item.category == 'STATIC') {\r\n if ((item.dataType == dataTypeMap.ENUM && !item.multiple) || (item.dataType == dataTypeMap.BOOLEAN && !item.multiple)) { //单选输入(单数)\r\n return {\r\n data: item.path,\r\n renderer: tools.customDropdownRenderer,\r\n editor: \"chosen\",\r\n readOnly: onlyRead,\r\n chosenOptions: {\r\n data: item.dataSource ? tools.formatDataSource(item.dataSource) : \"\"\r\n }\r\n };\r\n } else if ((item.dataType == dataTypeMap.MENUM) || (item.dataType == dataTypeMap.ENUM && item.multiple) || (item.dataType == dataTypeMap.BOOLEAN && item.multiple)) { //多选输入(多选枚举,单选枚举复数)\r\n return {\r\n data: item.path,\r\n renderer: tools.multipleDropdownRenderer,\r\n readOnly: onlyRead,\r\n chosenOptions: item.dataSource ? tools.formatDataSource(item.dataSource) : \"\"\r\n };\r\n } else if (item.dataType == dataTypeMap.DOUBLE || item.dataType == dataTypeMap.INTEGER) { // 数字输入\r\n return {\r\n data: item.path,\r\n type: \"numeric\",\r\n readOnly: onlyRead,\r\n numericFormat: {\r\n pattern: \"0,0.00\"\r\n }\r\n };\r\n } else if (item.dataType == dataTypeMap.DATETIME) { // 日期输入\r\n return {\r\n data: item.path,\r\n type: \"date\",\r\n dateFormat: \"YYYYMMDD\",\r\n readOnly: onlyRead,\r\n correctFormat: true\r\n };\r\n } else if (item.dataType == dataTypeMap.STRING) { // 文本输入\r\n return {\r\n data: item.path,\r\n readOnly: onlyRead\r\n }\r\n } else { //(未支持的输入方式)暂不支持编辑\r\n return {\r\n data: item.path,\r\n readOnly: onlyRead\r\n }\r\n }\r\n } else { // 动态信息点\r\n return {\r\n data: item.path,\r\n readOnly: onlyRead\r\n }\r\n }\r\n },\r\n inputModeFilter(item, onlyRead) {\r\n if (\r\n // item.code == \"EquipQRCode\" ||\r\n // item.code == \"RoomQRCode\"\r\n item.code == \"defaultQRCode\"\r\n ) {\r\n return {\r\n data: item.path,\r\n renderer: text.lookQRCode,\r\n readOnly: onlyRead\r\n }\r\n }\r\n\r\n //图片类型\r\n if (\r\n item.code == \"installPic\" ||\r\n item.code == \"nameplate\" ||\r\n item.code == \"systemChart\" ||\r\n item.code == \"pic\"\r\n ) {\r\n return {\r\n data: item.path,\r\n renderer: text.picType,\r\n readOnly: onlyRead\r\n }\r\n }\r\n\r\n //文件类型\r\n if (item.code == \"insuranceFile\" ||\r\n item.code == \"archive\" ||\r\n item.code == \"checkReport\" ||\r\n item.code == \"maintainManual\" ||\r\n item.code == \"approachingAcceptance\" ||\r\n item.code == \"acceptanceReport\" ||\r\n item.code == \"operationManual\" ||\r\n item.code == \"originalCertificate\" ||\r\n item.code == \"testReport\" ||\r\n item.code == \"productCertification\" ||\r\n item.code == \"installInstruction\" ||\r\n item.code == \"supplierContract\" ||\r\n item.code == \"drawing\" ||\r\n item.code == \"installDrawing\" ||\r\n item.code == \"designIDGraph\" ||\r\n item.code == \"fanCharacterCurve\"\r\n ) {\r\n return {\r\n data: item.path,\r\n renderer: text.fileType,\r\n readOnly: onlyRead\r\n }\r\n }\r\n\r\n //四大厂商\r\n // if (\r\n // item.code == \"dpSupplierId\" ||\r\n // item.code == \"dpMaintainerId\" ||\r\n // item.code == \"dpInsurerId\" ||\r\n // item.code == \"dpManufacturerId\"\r\n // ) {\r\n // return {\r\n // data: item.path,\r\n // renderer: text.idType,\r\n // readOnly: onlyRead\r\n // }\r\n // }\r\n if (!item.category) {\r\n console.log('新版字典无输入类型', item)\r\n }\r\n if (item.category == 'STATIC') {\r\n if ((item.dataType == dataTypeMap.ENUM && !item.multiple) || (item.dataType == dataTypeMap.BOOLEAN && !item.multiple)) { //单选输入(单数)\r\n return {\r\n data: item.path,\r\n renderer: tools.customDropdownRenderer,\r\n editor: \"chosen\",\r\n readOnly: onlyRead,\r\n chosenOptions: {\r\n data: item.dataSource ? tools.formatDataSource(item.dataSource) : \"\"\r\n }\r\n };\r\n } else if ((item.dataType == dataTypeMap.MENUM) || (item.dataType == dataTypeMap.ENUM && item.multiple) || (item.dataType == dataTypeMap.BOOLEAN && item.multiple)) { //多选输入(多选枚举,单选枚举复数)\r\n return {\r\n data: item.path,\r\n renderer: tools.multipleDropdownRenderer,\r\n readOnly: onlyRead,\r\n chosenOptions: item.dataSource ? tools.formatDataSource(item.dataSource) : \"\"\r\n };\r\n } else if (item.dataType == dataTypeMap.DOUBLE || item.dataType == dataTypeMap.INTEGER) { // 数字输入\r\n return {\r\n data: item.path,\r\n type: \"numeric\",\r\n readOnly: onlyRead,\r\n numericFormat: {\r\n pattern: \"0,0.00\"\r\n }\r\n };\r\n } else if (item.dataType == dataTypeMap.DATETIME) { // 日期输入\r\n return {\r\n data: item.path,\r\n type: \"date\",\r\n dateFormat: item.formater || \"YYYYMMDD\",\r\n readOnly: onlyRead,\r\n correctFormat: true\r\n };\r\n } else if (item.dataType == dataTypeMap.STRING) { // 文本输入\r\n return {\r\n data: item.path,\r\n readOnly: onlyRead\r\n }\r\n } else { // (未支持的输入方式)暂不支持编辑\r\n return {\r\n data: item.path,\r\n readOnly: onlyRead\r\n }\r\n }\r\n } else { // 动态信息点\r\n return {\r\n data: item.path,\r\n readOnly: onlyRead\r\n }\r\n }\r\n },\r\n filterUnshow: (onlyRead, type, code) => {\r\n let falg = true,\r\n data = fieldData[type]\r\n if (onlyRead) {\r\n data.onlyRead.map(item => {\r\n if (item == code) {\r\n falg = false\r\n }\r\n })\r\n return falg\r\n } else {\r\n data.edit.map(item => {\r\n if (item == code) {\r\n falg = false\r\n }\r\n })\r\n return falg\r\n }\r\n },\r\n filterFirm: (code) => {\r\n let falg = true\r\n firmArr.map(item => {\r\n if (item == code) {\r\n falg = false\r\n }\r\n })\r\n return falg\r\n }\r\n}\r\n\r\nexport default showTools\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"cascaderMap\"}},[_c('span',{staticClass:\"buildFloor\",staticStyle:{\"margin-right\":\"12px\"}},[_vm._v(\"设备类别\")]),_vm._t(\"default\"),_c('el-select',{style:(_vm.isWidth ? '' : 'width:160px;'),attrs:{\"placeholder\":\"请选择\",\"clearable\":\"\",\"props\":_vm.props,\"filterable\":\"\",\"size\":\"small\"},on:{\"change\":_vm.changeVal},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},_vm._l((_vm.options),function(item){return _c('el-option',{key:item.code,attrs:{\"label\":item.facility,\"value\":item.code}})}),1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div id=\"cascaderMap\">\r\n <span class=\"buildFloor\" style=\"margin-right: 12px;\">设备类别</span>\r\n <slot></slot>\r\n <el-select v-model=\"value\" placeholder=\"请选择\" clearable :props=\"props\" filterable\r\n :style=\"isWidth ? '' : 'width:160px;'\" size=\"small\"\r\n @change=\"changeVal\">\r\n <el-option v-for=\"item in options\" :key=\"item.code\" :label=\"item.facility\" :value=\"item.code\"></el-option>\r\n </el-select>\r\n <!-- <el-cascader placeholder=\"请选择\" :options=\"options\" v-model=\"value\" :props=\"props\" filterable :style=\"isWidth ? '' : 'width:160px;'\" size=\"small\"\r\n @change=\"changeVal\" change-on-select></el-cascader> -->\r\n </div>\r\n</template>\r\n<script>\r\nimport { mapGetters } from 'vuex';\r\nimport DicController from '@/controller/old-adm/dicController';\r\nimport EquipController from '@/controller/old-adm/equipController';\r\n\r\nexport default {\r\n name: \"getCode\",\r\n props: {\r\n isWidth: {\r\n type: Boolean,\r\n default: true\r\n },\r\n all: {\r\n type: Boolean,\r\n default: false,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(\"layout\", [\"projectId\"])\r\n },\r\n data() {\r\n return {\r\n value: \"\",\r\n options: [],\r\n props: {\r\n value: \"code\",\r\n label: \"facility\"\r\n },\r\n falg: true,\r\n content: []\r\n };\r\n },\r\n created() {\r\n this.getData();\r\n\r\n },\r\n watch: {\r\n projectId() {\r\n this.value = '';\r\n this.getData();\r\n }\r\n },\r\n methods: {\r\n setValue(val) {\r\n this.value = val\r\n },\r\n //修改val\r\n changeVal(val) {\r\n let value = {}\r\n let flag = true;\r\n this.options.map(item => {\r\n if (item.code == val) {\r\n flag = false;\r\n value = item\r\n }\r\n })\r\n this.value = val\r\n if (flag) {\r\n this.value = '';\r\n }\r\n this.$emit(\"change\", value)\r\n },\r\n //获取当前项目下的设备类型(只拿到编码-需要过滤)\r\n getData(val) {\r\n let param2 = {\r\n distinct: true,\r\n pageNumber: 1,\r\n pageSize: 1000,\r\n projection: [\r\n \"classCode\"\r\n ]\r\n }\r\n if (val && val[0] != 'all') {\r\n param2.filters = ''\r\n if (val[0] == \"noKnow\") {\r\n param2.filters += `;buildingId isNull`;\r\n } else if (val[0] && val[0] != \"all\") {\r\n param2.filters += `;buildingId='${val[0]}'`;\r\n }\r\n if (val[1] == \"noKnow\") {\r\n param2.filters += `;floorId isNull`;\r\n } else if (val[1] && val[1] != \"all\") {\r\n param2.filters += `;floorId='${val[1]}'`;\r\n }\r\n param2.filters = param2.filters.slice(1)\r\n }\r\n\r\n let param1 = {\r\n type: \"equipment\"\r\n }\r\n\r\n Promise.all([EquipController.queryEquip(param2), DicController.queryPhysicsAllType(param1)]).then((res) => {\r\n let allData = res[0], data = res[1]\r\n this.options = this.formatOptions(data.content)\r\n if (!this.all) {\r\n this.content = data.content.map(t => {\r\n return t.classCode\r\n });\r\n this.filterForOptions();\r\n }\r\n if (this.value) {\r\n this.changeVal(this.value)\r\n }\r\n })\r\n },\r\n //格式化options数据\r\n formatOptions(arr) {\r\n let data = [];\r\n arr && arr.map(t => {\r\n let temp = {};\r\n temp.code = t.code;\r\n temp.facility = t.name === t.aliasName ? t.name : `${t.name}(${t.aliasName})`;\r\n data.push(temp)\r\n })\r\n return data;\r\n },\r\n //过滤\r\n filterForOptions() {\r\n this.options = this.options.filter(item => {\r\n if (this.content.indexOf(item.code) > -1) {\r\n return item\r\n }\r\n })\r\n }\r\n }\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n#cascaderMap {\r\n float: left;\r\n margin-left: 10px;\r\n\r\n .buildFloor {\r\n color: #999999;\r\n font-size: 14px;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cascader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cascader.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cascader.vue?vue&type=template&id=f572d33e&scoped=true&\"\nimport script from \"./cascader.vue?vue&type=script&lang=js&\"\nexport * from \"./cascader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./cascader.vue?vue&type=style&index=0&id=f572d33e&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f572d33e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.dialog.qrcode)?_c('el-dialog',{attrs:{\"title\":\"二维码\",\"custom-class\":\"custom-dialog\",\"visible\":_vm.dialog.qrcode,\"width\":\"500px\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.dialog, \"qrcode\", $event)}}},[_c('div',[_c('div',{attrs:{\"id\":\"qrcode\"}},[_c('img',{staticStyle:{\"width\":\"200px\",\"height\":\"200px\",\"margin\":\"auto\",\"display\":\"block\"},attrs:{\"src\":'/image-service/common/file_get/'+ _vm.qrcodeUrl +'?systemId=dataPlatform',\"alt\":\"二维码\"}})])])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <el-dialog\r\n title=\"二维码\"\r\n v-if=\"dialog.qrcode\"\r\n custom-class=\"custom-dialog\"\r\n :visible.sync=\"dialog.qrcode\"\r\n width=\"500px\"\r\n >\r\n <div>\r\n <div id=\"qrcode\">\r\n <img\r\n style=\"width:200px;height:200px;margin:auto;display:block;\"\r\n :src=\"'/image-service/common/file_get/'+ qrcodeUrl +'?systemId=dataPlatform'\"\r\n alt=\"二维码\"\r\n >\r\n </div>\r\n </div>\r\n </el-dialog>\r\n</template>\r\n<script>\r\n// import { qrcanvas } from \"qrcanvas\";\r\nexport default {\r\n props: {\r\n dialog: {\r\n type: Object,\r\n default: function () {\r\n return {\r\n qrcode: false\r\n };\r\n }\r\n },\r\n qrcodeUrl: {\r\n default: \"\"\r\n }\r\n },\r\n data() {\r\n return {};\r\n },\r\n created() {},\r\n mounted() {\r\n },\r\n methods: {\r\n // getCanvas(id) {\r\n // let canvas = qrcanvas({\r\n // cellSize: 8,\r\n // data: 'http://service.sagacloud.cn/qrcode/' + 'Pea3a31168a30d4056acda3a56e557940b'\r\n // });\r\n // canvas.style.margin = \"auto\"\r\n // canvas.style.display = \"block\"\r\n // this.$nextTick(() => {\r\n // document.getElementById(\"qrcode\").innerHTML = null;\r\n // document.getElementById(\"qrcode\").appendChild(canvas);\r\n // });\r\n // }\r\n }\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n#qrcode {\r\n height: 300px;\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./qrcode.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./qrcode.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./qrcode.vue?vue&type=template&id=13576903&scoped=true&\"\nimport script from \"./qrcode.vue?vue&type=script&lang=js&\"\nexport * from \"./qrcode.vue?vue&type=script&lang=js&\"\nimport style0 from \"./qrcode.vue?vue&type=style&index=0&id=13576903&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"13576903\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.dialog.bimcode)?_c('el-dialog',{attrs:{\"title\":\"修改BIM模型中的坐标\",\"custom-class\":\"custom-dialog\",\"visible\":_vm.dialog.bimcode,\"width\":\"900px\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.dialog, \"bimcode\", $event)},\"close\":_vm.handleClose}},[(Object.keys(_vm.bimcodeobj).length>0)?_c('div',{attrs:{\"id\":\"bim-code\"}},[_c('div',{staticClass:\"eq\"},[_c('span',{staticClass:\"eq-name\"},[_vm._v(\"设备名称 \")]),_vm._v(\" \"+_vm._s(_vm.bimcodeobj.localName || _vm.bimcodeobj.name || '--')+\" \")]),_c('div',[_c('noAllDataFloor',{ref:\"floors\",on:{\"change\":_vm.changeFloor,\"getFloorMap\":_vm.getFloorMap}}),(_vm.isShow)?_c('span',{staticClass:\"errMsg\"},[_vm._v(\"请选择设备所属建筑楼层\")]):_vm._e()],1),_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.canvasLoading),expression:\"canvasLoading\"}],staticClass:\"canvas-box\"},[_c('canvas',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isdata),expression:\"isdata\"}],ref:\"canvas\",attrs:{\"id\":(\"floorCanvas\" + _vm.id),\"width\":_vm.cadWidth,\"height\":_vm.cadHeight,\"tabindex\":\"0\"}}),_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isdata),expression:\"!isdata\"}]},[_vm._v(\"当前楼层暂无平面图,请前往“建筑楼层管理”中给楼层添加平面图\")])])]):_vm._e(),(!_vm.read)?_c('div',{staticClass:\"footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":_vm.handleClose}},[_vm._v(\"取 消\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.save}},[_vm._v(\"确 定\")])],1):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"buildFloor\"}},[_c('span',{staticClass:\"buildFloor\"},[_vm._v(\"建筑楼层\")]),_c('el-cascader',{style:(_vm.isWidth ? '' : 'width:160px;'),attrs:{\"placeholder\":\"请选择建筑楼层\",\"options\":_vm.options,\"filterable\":\"\",\"size\":\"small\"},on:{\"change\":_vm.changeCascader},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div id=\"buildFloor\">\r\n <span class=\"buildFloor\">建筑楼层</span>\r\n <el-cascader placeholder=\"请选择建筑楼层\" :options=\"options\" v-model=\"value\" filterable size=\"small\"\r\n :style=\"isWidth ? '' : 'width:160px;'\" @change=\"changeCascader\"></el-cascader>\r\n </div>\r\n</template>\r\n<script>\r\nimport tools from \"@/utils/old-adm/scan/tools\"\r\n// import { floorQuery, buildingQuery } from '@/api/scan/request'\r\n// import { buildingQuery } from '@/api/object/build'\r\nimport BuildController from \"@/controller/old-adm/buildController\"\r\nimport FloorController from \"@/controller/old-adm/floorController\"\r\n// import { floorQuery } from '@/api/object/floor'\r\n\r\nimport { mapGetters, mapActions } from \"vuex\"\r\n\r\nexport default {\r\n props: {\r\n isWidth: {\r\n type: Boolean,\r\n default: true\r\n },\r\n type: {\r\n type: String,\r\n default: \"yes\"\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(\"layout\", [\r\n \"projectId\",\r\n \"secret\",\r\n \"userId\"\r\n ])\r\n },\r\n data() {\r\n return {\r\n options: [],\r\n param: {\r\n ProjId: '',\r\n secret: ''\r\n },\r\n value: [],\r\n floorToMap: {}\r\n };\r\n },\r\n created() {\r\n this.param.ProjId = this.projectId\r\n this.param.secret = this.secret\r\n this.getData()\r\n },\r\n watch: {\r\n projectId() {\r\n this.options = [];\r\n this.param.ProjId = this.projectId\r\n this.param.secret = this.secret\r\n this.getData()\r\n this.changeCascader([])\r\n }\r\n },\r\n methods: {\r\n //设置默认选项\r\n setValue(val) {\r\n if (val && val.length) {\r\n this.value = val\r\n }\r\n },\r\n //获取数据\r\n getData() {\r\n let data, buildParams = {\r\n pageNumber: 1,\r\n pageSize: 1000,\r\n orders: \"localName asc\",\r\n projection: [\r\n \"id\",\r\n \"localName\"\r\n ]\r\n }, floorParams = {\r\n orders: \"floorSequenceID desc\",\r\n pageNumber: 1,\r\n pageSize: 1000\r\n }\r\n let promise1 = new Promise((resolve, reject) => {\r\n BuildController.buildingQuery(buildParams, res => {\r\n resolve(res)\r\n })\r\n })\r\n let promise2 = new Promise((resolve, reject) => {\r\n FloorController.floorQuery(floorParams, res => {\r\n resolve(res)\r\n })\r\n })\r\n Promise.all([promise1, promise2]).then(values => {\r\n let builData = values[0].content, floorData = values[1].content\r\n data = builData.map(build => {\r\n return {\r\n value: build.id,\r\n label: build.localName\r\n }\r\n })\r\n data.unshift({\r\n value: \"noKnow\",\r\n label: \"未明确建筑\"\r\n })\r\n data.forEach(build => {\r\n floorData.forEach(floor => {\r\n this.floorToMap[floor.id] = floor;\r\n if (build.value == floor.buildingId && floor.id && floor.localName && this.type == \"yes\") {\r\n if (build.children) {\r\n build.children.push({\r\n value: floor.id,\r\n label: floor.localName,\r\n FloorSequenceID: floor.floorSequenceID\r\n })\r\n } else {\r\n build.children = []\r\n build.children.push({\r\n value: 'noKnow',\r\n label: \"未明确楼层\"\r\n }, {\r\n value: floor.id,\r\n label: floor.localName,\r\n FloorSequenceID: floor.floorSequenceID\r\n })\r\n }\r\n }\r\n })\r\n })\r\n this.$emit('getFloorMap', this.floorToMap)\r\n this.options = data\r\n })\r\n },\r\n //改变item\r\n changeCascader(value) {\r\n this.$emit(\"change\", value)\r\n }\r\n }\r\n};\r\n</script>\r\n<style lang=\"less\">\r\n.el-cascader .el-input .el-input__inner {\r\n vertical-align: bottom;\r\n}\r\n</style>\r\n<style lang=\"less\" scoped>\r\n#buildFloor {\r\n margin-left: 10px;\r\n float: left;\r\n}\r\n\r\n.buildFloor {\r\n color: #999999;\r\n font-size: 14px;\r\n margin-right: 12px;\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./noAllDataFloor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./noAllDataFloor.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./noAllDataFloor.vue?vue&type=template&id=21265392&scoped=true&\"\nimport script from \"./noAllDataFloor.vue?vue&type=script&lang=js&\"\nexport * from \"./noAllDataFloor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./noAllDataFloor.vue?vue&type=style&index=0&lang=less&\"\nimport style1 from \"./noAllDataFloor.vue?vue&type=style&index=1&id=21265392&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"21265392\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <el-dialog\r\n title='修改BIM模型中的坐标'\r\n v-if='dialog.bimcode'\r\n custom-class='custom-dialog'\r\n :visible.sync='dialog.bimcode'\r\n width='900px'\r\n @close='handleClose'\r\n >\r\n <div id='bim-code' v-if='Object.keys(bimcodeobj).length>0'>\r\n <div class='eq'>\r\n <span class='eq-name'>设备名称 </span>\r\n {{ bimcodeobj.localName || bimcodeobj.name || '--' }}\r\n </div>\r\n <div>\r\n <noAllDataFloor @change='changeFloor' ref='floors' @getFloorMap='getFloorMap'></noAllDataFloor>\r\n <span v-if='isShow' class='errMsg'>请选择设备所属建筑楼层</span>\r\n </div>\r\n <div class='canvas-box' v-loading='canvasLoading'>\r\n <canvas v-show='isdata' :id='`floorCanvas${id}`' :width='cadWidth' :height='cadHeight' ref='canvas'\r\n tabindex='0'></canvas>\r\n <p v-show='!isdata'>当前楼层暂无平面图,请前往“建筑楼层管理”中给楼层添加平面图</p>\r\n </div>\r\n </div>\r\n <div slot='footer' class='footer' v-if=\"!read\">\r\n <el-button @click='handleClose'>取 消</el-button>\r\n <el-button type='primary' @click='save'>确 定</el-button>\r\n </div>\r\n </el-dialog>\r\n</template>\r\n<script>\r\nimport noAllDataFloor from './noAllDataFloor'\r\nimport { FloorView, LocationPointScene } from '@saga-web/cad-engine/lib'\r\nimport { SPoint } from '@saga-web/draw/lib'\r\n// import { updateEquip } from '@/api/scan/request'\r\nimport ScanController from '@/controller/old-adm/ScanController'\r\nimport { SGraphItem } from '@saga-web/graph/lib'\r\n\r\nexport default {\r\n components: {\r\n noAllDataFloor,\r\n },\r\n props: {\r\n dialog: {\r\n type: Object,\r\n default: function () {\r\n return {\r\n bimcode: false,\r\n }\r\n },\r\n },\r\n bimcodeobj: {\r\n default: {},\r\n },\r\n read: {\r\n default: true,\r\n type: Boolean\r\n }\r\n },\r\n data() {\r\n return {\r\n cadWidth: 800,\r\n cadHeight: 400,\r\n Buildfloor: '',\r\n value: [],\r\n isdata: true,\r\n floorData: {},\r\n canvasLoading: false,\r\n isShow: false,\r\n id: 'ty',\r\n view: '',\r\n drawMainScene: '',\r\n floorToMap: {},\r\n }\r\n },\r\n created() {\r\n },\r\n mounted() {\r\n this.init()\r\n },\r\n methods: {\r\n init() {\r\n this.isShow = true\r\n this.$nextTick(function () {\r\n if (this.bimcodeobj.floorId) {\r\n this.isShow = false\r\n }\r\n if (this.$refs.floors) {\r\n this.$refs.floors.setValue([this.bimcodeobj.buildingId, this.bimcodeobj.floorId])\r\n }\r\n })\r\n },\r\n //切换楼层\r\n changeFloor(value) {\r\n this.isShow = true\r\n if (value.length > 1) {\r\n this.isShow = false\r\n this.floorData = this.floorToMap[value[1]]\r\n } else {\r\n this.isShow = false\r\n this.floorData = {}\r\n }\r\n this.getFloorData()\r\n },\r\n // 初始化canvas\r\n initGraphy(Id, type) {\r\n // type=1 => id:模型id 这里不需要\r\n // type=2 => id:floormap jsonz格式\r\n // type = 3 => id:floormap png或者jpg格式\r\n let that = this\r\n that.clearGraphy()\r\n that.drawMainScene = new LocationPointScene()\r\n that.canvasLoading = true\r\n if (type == 2) {\r\n that.drawMainScene.loadUrl(`/image-service/common/file_get?systemId=revit&key=${Id}`).then((res) => {\r\n that.getGraphtSuc(res)\r\n })\r\n } else if (type == 3) {\r\n let x = 0;\r\n let y = 0;\r\n let scale = 1;\r\n if (this.floorData && this.floorData.infos && this.floorData.infos.floorMapRatio && this.floorData.infos.floorMapShift) {\r\n try {\r\n const point = JSON.parse(this.floorData.infos.floorMapShift);\r\n x = point.x;\r\n y = point.y;\r\n scale = this.floorData.infos.floorMapRatio;\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n that.drawMainScene.loadImg(`/image-service/common/image_get?systemId=dataPlatform&key=${Id}`, (res) => {\r\n that.getGraphtSuc(res)\r\n }, x, y, scale)\r\n }\r\n },\r\n // 获取底图成功\r\n getGraphtSuc(res) {\r\n this.canvasLoading = false\r\n if (res == 'error') {\r\n this.FloorMap = ''\r\n console.log('数据解析异常');\r\n return\r\n }\r\n if (res.Result == 'failure') {\r\n this.showTools = false\r\n this.$message.warning(res.Message)\r\n return\r\n }\r\n this.view.scene = this.drawMainScene\r\n if (this.bimcodeobj.locationJson) {\r\n let obj = {\r\n X: this.bimcodeobj.locationJson.x,\r\n Y: -this.bimcodeobj.locationJson.y,\r\n }\r\n //回写编辑\r\n this.drawMainScene.addMarker(obj)\r\n }\r\n this.view.fitSceneToView()\r\n this.drawMainScene.isSpaceSelectable = false\r\n if (!this.read) {\r\n this.drawMainScene.spaceClick(this, this.canvasClick) //锚点触发\r\n }\r\n if (this.floorData.outline && this.floorData.outline.length) {\r\n let newArr = this.floorData.outline.map((t) => {\r\n return new SPoint(t.X, t.Y)\r\n })\r\n this.drawMainScene.addSceneMark(newArr)\r\n }\r\n },\r\n //获取楼层数据\r\n getFloorData() {\r\n if (this.floorData && this.floorData.infos && this.floorData.infos.floorMap) {\r\n this.isdata = true\r\n let floorMap = this.floorData.infos.floorMap\r\n const temp = floorMap.split('.')[1];\r\n if (temp && (temp.toLowerCase() == 'png' || temp.toLowerCase() == 'jpg')) {\r\n this.initGraphy(floorMap, 3)\r\n } else {\r\n this.initGraphy(floorMap, 2)\r\n }\r\n } else {\r\n //暂无数据\r\n this.isdata = false\r\n this.clearGraphy()\r\n }\r\n },\r\n //关闭弹窗\r\n handleClose(val) {\r\n this.view = ''\r\n this.drawMainScene = ''\r\n this.$emit('closeBIM', val)\r\n },\r\n //保存事件\r\n save() {\r\n if (this.drawMainScene) {\r\n if (this.drawMainScene.markerList.length) {\r\n let obj = this.drawMainScene.markerList[0], BIMLocation;\r\n\r\n if (this.bimcodeobj.bimLocation && this.bimcodeobj.bimLocation.split(',')[2]) {\r\n BIMLocation = `${obj.x.toFixed(2)},${(obj.y * -1).toFixed(2)},${this.bimcodeobj.bimLocation.split(',')[2]}`\r\n } else {\r\n BIMLocation = `${obj.x.toFixed(2)},${(obj.y * -1).toFixed(2)},0`\r\n }\r\n const bfloor = this.$refs.floors.value\r\n let param = {\r\n content: [\r\n {\r\n id: this.bimcodeobj.id,\r\n buildingId: bfloor[0] == 'noKnow'?undefined:bfloor[0],\r\n floorId: bfloor[1] == 'noKnow'?undefined:bfloor[1],\r\n bimLocation: BIMLocation\r\n },\r\n ],\r\n projection: ['bimLocation', 'buildingId', 'floorId'],\r\n }\r\n ScanController.updateEquip(param, (res) => {\r\n if (res.result == 'success') {\r\n this.$message.success('保存成功')\r\n this.handleClose('update')\r\n }\r\n })\r\n }\r\n }\r\n },\r\n // 清空平面图\r\n clearGraphy() {\r\n if (this.view) {\r\n this.view.scene = null\r\n return\r\n }\r\n let id = `floorCanvas${this.id}`\r\n this.view = new FloorView(id)\r\n },\r\n //得到floormap\r\n getFloorMap(val) {\r\n this.floorToMap = val\r\n this.floorData = this.floorToMap[this.bimcodeobj.floorId]\r\n this.getFloorData()\r\n },\r\n // canvas点击事件\r\n canvasClick(item, event) {\r\n if (item instanceof SGraphItem) {\r\n this.clearMark()\r\n const p = item.mapToScene(event[0].x, event[0].y)\r\n let obj = {\r\n X: p.x,\r\n Y: p.y,\r\n }\r\n this.drawMainScene.addMarker(obj)\r\n this.view.fitSceneToView()\r\n }\r\n },\r\n //清空标记\r\n clearMark() {\r\n if (this.drawMainScene) {\r\n this.drawMainScene.markerList.forEach((t) => {\r\n this.drawMainScene.removeItem(t)\r\n })\r\n this.drawMainScene.markerList = []\r\n }\r\n },\r\n },\r\n watch: {\r\n bimcodeobj: {\r\n immediate: true,\r\n handler(val) {\r\n this.init()\r\n },\r\n },\r\n },\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n#bim-code {\r\n height: 500px;\r\n\r\n .eq {\r\n padding-bottom: 10px;\r\n\r\n .eq-name {\r\n color: #999999;\r\n padding-left: 10px;\r\n }\r\n }\r\n\r\n .errMsg {\r\n color: red;\r\n padding-left: 10px;\r\n }\r\n\r\n #buildFloor {\r\n clear: both;\r\n margin-bottom: 10px;\r\n }\r\n\r\n .canvas-box {\r\n border: 1px solid #ccc;\r\n clear: both;\r\n width: 800px;\r\n height: 400px;\r\n margin-left: 10px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n}\r\n</style>\r\n<style lang=\"less\">\r\n#bim-code {\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./bimDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./bimDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./bimDialog.vue?vue&type=template&id=73ac698e&scoped=true&\"\nimport script from \"./bimDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./bimDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./bimDialog.vue?vue&type=style&index=0&id=73ac698e&lang=less&scoped=true&\"\nimport style1 from \"./bimDialog.vue?vue&type=style&index=1&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73ac698e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"title\":\"上传文件\",\"visible\":_vm.dialog.uploadFiles,\"width\":\"500px\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.dialog, \"uploadFiles\", $event)}}},[_c('div',{staticClass:\"max-height: 500px; overflow-y: auto;\"},[_c('upload-files',{attrs:{\"readOnly\":_vm.read,\"keysArr\":_vm.keysArr,\"firmDataType\":_vm.firmDataType,\"max\":\"2\"},on:{\"change\":_vm.changeItem}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],attrs:{\"id\":\"saga-upload\"}},[_c('div',{attrs:{\"id\":\"uploadFile\"}},[_c('el-upload',{staticClass:\"upload-file\",attrs:{\"action\":\"\",\"drag\":\"\",\"show-file-list\":false,\"http-request\":_vm.uploadAndSubmit}},[(!_vm.readOnly)?_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"primary\"}},[_vm._v(\"点击上传\")]):_vm._e(),(!_vm.readOnly)?_c('div',{staticClass:\"el-upload__tip\",attrs:{\"slot\":\"tip\"},slot:\"tip\"},[_vm._v(\"请上传文件,且不大于50M\")]):_vm._e()],1),_vm._l((_vm.filesArr),function(item,index){return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(item && _vm.filesArr.length),expression:\"item && filesArr.length\"}],key:item.key},[_c('p',{staticClass:\"file-list\"},[_c('span',{staticClass:\"file-name\",attrs:{\"title\":item.name}},[_vm._v(_vm._s(item.name))]),_c('i',{staticClass:\"el-icon-download\",staticStyle:{\"margin-left\":\"10px\",\"cursor\":\"pointer\"},attrs:{\"title\":\"下载\"},on:{\"click\":function($event){return _vm.download(item)}}}),(!_vm.readOnly)?_c('i',{staticClass:\"el-icon-close delete-icon\",staticStyle:{\"margin-left\":\"10px\",\"cursor\":\"pointer\"},attrs:{\"title\":\"删除\"},on:{\"click\":function($event){return _vm.deleteFile(index,item)}}}):_vm._e()])])})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\r\n 上传组件\r\n type: 类型,默认image\r\n identify: key值,通过val获取\r\n disabled: 是否可用\r\n index: 父组件的下标\r\n imageIndex: 图片下标\r\n isShow: 图片的显示\r\n -->\r\n<template>\r\n <div id=\"saga-upload\" v-loading=\"loading\">\r\n <div id=\"uploadFile\">\r\n <el-upload\r\n class=\"upload-file\"\r\n action drag\r\n :show-file-list=\"false\"\r\n :http-request=\"uploadAndSubmit\">\r\n <el-button size=\"small\" type=\"primary\" v-if=\"!readOnly\">点击上传</el-button>\r\n <div slot=\"tip\" class=\"el-upload__tip\" v-if=\"!readOnly\">请上传文件,且不大于50M</div>\r\n </el-upload>\r\n <div v-show=\"item && filesArr.length\" v-for=\"(item,index) in filesArr\" :key=\"item.key\">\r\n <p class=\"file-list\">\r\n <span class=\"file-name\" :title=\"item.name\">{{item.name}}</span>\r\n <i title=\"下载\" class=\"el-icon-download\" style=\"margin-left:10px; cursor:pointer\" @click=\"download(item)\"></i>\r\n <i v-if=\"!readOnly\" title=\"删除\" class=\"el-icon-close delete-icon\" style=\"margin-left:10px; cursor:pointer\" @click=\"deleteFile(index,item)\"></i>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport tools from \"@/utils/old-adm/scan/tools\";\r\n\r\nexport default {\r\n props: {\r\n keysArr: {\r\n type: [Array, String],\r\n default: function () {\r\n return []\r\n }\r\n },\r\n readOnly: {\r\n type: Boolean,\r\n default: false\r\n },\r\n max: {\r\n type: [Number, String],\r\n default: 6\r\n },\r\n defined: null,\r\n firmDataType: {\r\n type: String\r\n },\r\n information: {\r\n type: Object\r\n },\r\n infoType: {\r\n type: String\r\n }\r\n },\r\n data() {\r\n return {\r\n filesArr: [],\r\n isShow: Boolean,\r\n loading:false\r\n };\r\n },\r\n created() {\r\n this.fileFalg()\r\n // this.resetFile()\r\n },\r\n computed: {\r\n showFileList() {\r\n if (this.firmDataType === 'dialog') {\r\n this.isShow = false\r\n } else {\r\n this.isShow = true\r\n }\r\n return this.isShow\r\n }\r\n },\r\n methods: {\r\n //判断是否为空\r\n fileFalg() {\r\n let type = typeof (this.keysArr)\r\n if (type == 'string') {\r\n this.filesArr = [this.keysArr]\r\n } else {\r\n this.filesArr = tools.deepCopy(this.keysArr)\r\n }\r\n this.filesArr = tools.deepCopy(this.keysArr)\r\n if (!this.keysArr) {\r\n this.filesArr = []\r\n }\r\n },\r\n resetFile() {\r\n this.filesArr = []\r\n },\r\n\r\n\r\n //点击下载\r\n download(item) {\r\n if (item.key) {\r\n let a = document.createElement(\"a\");\r\n a.href = `${window.window.__systemConf.baseServiceUrl}/image-service/common/file_get/${item.key}?systemId=dataPlatform`;\r\n a.download = `${item.name}`;\r\n a.click();\r\n document.body.removeChild(a);\r\n } else {\r\n this.$message({\r\n message: \"无该获取该文件资源链接!\",\r\n type: \"error\"\r\n });\r\n }\r\n },\r\n\r\n //删除图片\r\n deleteFile(i, key) {\r\n this.filesArr.splice(i, 1);\r\n this.$emit(\"change\", this.filesArr, this.defined);\r\n },\r\n\r\n //上传\r\n uploadAndSubmit(item) {\r\n // var form = document.forms[\"demoForm\"];\r\n\r\n // if (form[\"file\"].files.length > 0) {\r\n // 寻找表单域中的 <input type=\"file\" ... /> 标签\r\n // var file = form[\"file\"].files[0];\r\n\r\n let file = item.file;\r\n // try sending\r\n let size = item.file.size;\r\n if( size > 50*1024*1024 ) { //文件大于50M\r\n this.$message.error('文件不可大于50M,请重新上传')\r\n return false\r\n }\r\n else {\r\n let reader = new FileReader();\r\n let vm = this;\r\n let fileType = file.name.split(\".\");\r\n let type = fileType[fileType.length - 1];\r\n let key = \"&key=\" + fileType[0] + file.uid + \".\" + type\r\n let CreateTime = tools.formatDate(new Date(file.lastModified))\r\n reader.onloadstart = function () {\r\n // 这个事件在读取开始时触发\r\n };\r\n reader.onprogress = function (p) {\r\n // 这个事件在读取进行中定时触发\r\n let value = (p.loaded / size) * 100;\r\n // console.log(p.loaded,size,value,'loaded')\r\n };\r\n\r\n reader.onload = function () {\r\n\r\n // 这个事件在读取成功结束后触发\r\n };\r\n reader.onloadend = function () {\r\n\r\n this.loading = false\r\n // 这个事件在读取结束后,无论成功或者失败都会触发\r\n if (reader.error) {\r\n } else {\r\n // document.getElementById(\"bytesRead\").textContent = file.size;\r\n // 构造 XMLHttpRequest 对象,发送文件 Binary 数据\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(\r\n /* method */\r\n \"POST\",\r\n /* target url */\r\n window.window.__systemConf.baseServiceUrl + \"/image-service/common/file_upload?systemId=dataPlatform&secret=9e0891a7a8c8e885&overwrite=true\" + key\r\n /*, async, default to true */\r\n );\r\n //xhr.overrideMimeType(\"application/octet-stream\");\r\n xhr.send(reader.result);\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState == 4) {\r\n console.log(xhr)\r\n if (xhr.status == 200) {\r\n let fileObject = {\r\n key: key.split(\"=\")[1],\r\n type,\r\n name: file.name,\r\n createTime: CreateTime,\r\n systemId: 'dataPlatform'\r\n }\r\n vm.filesArr.push(fileObject);\r\n this.loading =false\r\n vm.$emit(\"change\", vm.filesArr, vm.defined);\r\n } else {\r\n this.$message.error(res.data.ResultMsg)\r\n }\r\n }\r\n };\r\n }\r\n };\r\n reader.readAsArrayBuffer(file);\r\n }\r\n\r\n }\r\n },\r\n watch: {\r\n keysArr: function (val) {\r\n this.fileFalg()\r\n }\r\n }\r\n };\r\n</script>\r\n\r\n<style lang=\"less\">\r\n #saga-upload {\r\n .dill-image {\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n font-size: 20px;\r\n }\r\n\r\n .el-upload-dragger {\r\n width: 180px;\r\n height: 180px;\r\n }\r\n\r\n img {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n #uploadFile {\r\n .upload-file {\r\n overflow: hidden;\r\n .el-upload-dragger {\r\n width: inherit;\r\n height: inherit;\r\n border: none;\r\n }\r\n }\r\n .file-list {\r\n .file-name {\r\n display: inline-block;\r\n width: 400px;\r\n font-size: 12px;\r\n color: #409eff;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n vertical-align: top;\r\n cursor: pointer;\r\n }\r\n .file-name:hover {\r\n color: #66b1ff;\r\n }\r\n }\r\n }\r\n }\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./uploadFiles.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./uploadFiles.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./uploadFiles.vue?vue&type=template&id=67a1a74e&\"\nimport script from \"./uploadFiles.vue?vue&type=script&lang=js&\"\nexport * from \"./uploadFiles.vue?vue&type=script&lang=js&\"\nimport style0 from \"./uploadFiles.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\r\n 上传文件的弹窗\r\n-->\r\n\r\n<template>\r\n <el-dialog\r\n title=\"上传文件\"\r\n :visible.sync=\"dialog.uploadFiles\"\r\n width=\"500px\">\r\n <div class='max-height: 500px; overflow-y: auto;'>\r\n <upload-files\r\n :readOnly=\"read\"\r\n :keysArr=\"keysArr\"\r\n :firmDataType=\"firmDataType\"\r\n @change=\"changeItem\"\r\n max=\"2\"\r\n />\r\n </div>\r\n </el-dialog>\r\n</template>\r\n<script>\r\nimport uploadFiles from \"@/components/old-adm/ledger/components/lib/uploadFiles\";\r\n\r\nexport default {\r\n components: {\r\n uploadFiles\r\n },\r\n props: {\r\n dialog: {\r\n type: Object,\r\n default: function () {\r\n return {\r\n uploadFiles: false\r\n };\r\n }\r\n },\r\n keysArr: {\r\n type: Array,\r\n default: function () {\r\n return []\r\n }\r\n },\r\n read: {\r\n type: Boolean,\r\n default: false\r\n },\r\n firmDataType: {\r\n type: String\r\n },\r\n infoType: {\r\n type: String\r\n },\r\n information: {\r\n type: Object\r\n }\r\n },\r\n data() {\r\n return {};\r\n },\r\n created() {\r\n },\r\n computed: {},\r\n mounted() {\r\n },\r\n methods: {\r\n changeItem(file) {\r\n if (this.firmDataType === 'dialog') {\r\n let info = this.infoType;\r\n switch (info) {\r\n case 'archive':\r\n this.information.archive.Archive = file\r\n this.$emit(\"changeFile\", this.information, this.firmDataType)\r\n break\r\n case 'checkReport':\r\n this.information.checkReport.CheckReport = file\r\n this.$emit(\"changeFile\", this.information, this.firmDataType)\r\n break\r\n case 'insuranceFile':\r\n this.information.insuranceFile.InsuranceFile = file\r\n this.$emit(\"changeFile\", this.information, this.firmDataType)\r\n break;\r\n case 'infos.insuranceFile': //保险文件\r\n this.$emit(\"changeFile\", info, this.firmDataType, file)\r\n break\r\n case 'infos.archive': //设备文档\r\n this.$emit(\"changeFile\", info, this.firmDataType, file)\r\n break\r\n case 'infos.checkReport': //安装质检报告\r\n this.$emit(\"changeFile\", info, this.firmDataType, file)\r\n break\r\n case 'infos.maintainManual': //维修保养手册\r\n this.$emit(\"changeFile\", info, this.firmDataType, file)\r\n break\r\n case 'infos.approachingAcceptance': //进场验收单\r\n this.$emit(\"changeFile\", info, this.firmDataType, file)\r\n break\r\n case 'infos.acceptanceReport': //验收报告\r\n this.$emit(\"changeFile\", info, this.firmDataType, file)\r\n break\r\n case 'infos.operationManual': //操作说明书\r\n this.$emit(\"changeFile\", info, this.firmDataType, file)\r\n break\r\n case 'infos.originalCertificate': //原厂证明\r\n this.$emit(\"changeFile\", info, this.firmDataType, file)\r\n break\r\n case 'infos.testReport': //检测报告\r\n this.$emit(\"changeFile\", info, this.firmDataType, file)\r\n break\r\n case 'infos.productCertification': //产品合格证\r\n this.$emit(\"changeFile\", info, this.firmDataType, file)\r\n break\r\n case 'infos.installInstruction': //安装说明书\r\n this.$emit(\"changeFile\", info, this.firmDataType, file)\r\n break\r\n case 'infos.drawing': //设备图纸\r\n this.$emit(\"changeFile\", info, this.firmDataType, file)\r\n break\r\n case 'infos.installDrawing': //安装图纸\r\n this.$emit(\"changeFile\", info, this.firmDataType, file)\r\n break\r\n case 'infos.supplierContract': //供应合同\r\n this.$emit(\"changeFile\", info, this.firmDataType, file)\r\n break\r\n case 'infos.designIDGraph': //安装图纸\r\n this.$emit(\"changeFile\", info, this.firmDataType, file)\r\n break\r\n case 'infos.fanCharacterCurve': //供应合同\r\n this.$emit(\"changeFile\", info, this.firmDataType, file)\r\n break\r\n }\r\n } else {\r\n this.$emit(\"changeFile\", file, this.firmDataType)\r\n }\r\n },\r\n deepCopy(obj) {\r\n return JSON.parse((JSON.stringify(obj)))\r\n }\r\n },\r\n};\r\n</script>\r\n<style>\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filesDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filesDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./filesDialog.vue?vue&type=template&id=7cbaeb4e&\"\nimport script from \"./filesDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./filesDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"title\":\"上传图片\",\"visible\":_vm.dialog.uploadImgs,\"width\":\"500px\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.dialog, \"uploadImgs\", $event)}}},[_c('div',{staticStyle:{\"max-height\":\"500px\",\"overflow-y\":\"auto\"}},[_c('upload-imgs',{attrs:{\"readOnly\":_vm.read,\"keysArr\":_vm.deepcopy(_vm.keysArr),\"max\":\"2\"},on:{\"change\":_vm.changeItem}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"sagaUploads\"}},[_c('div',{staticClass:\"saga-upload-images\"},[_vm._l((_vm.imagesArr),function(item,index){return (_vm.type != 'video')?_c('div',{staticClass:\"point-image\"},[(!_vm.readOnly)?_c('i',{staticClass:\"el-icon-delete\",on:{\"click\":function($event){return _vm.delImage(index,item)}}}):_vm._e(),_c('img',{directives:[{name:\"load\",rawName:\"v-load\"}],attrs:{\"src\":_vm.imageGetUrl + '&key=' +item.key,\"alt\":\"\"},on:{\"click\":_vm.lookImg}})]):_vm._e()}),_vm._l((_vm.imagesArr),function(item,index){return (_vm.type == 'video')?_c('div',{staticClass:\"point-image\"},[(!_vm.readOnly)?_c('i',{staticClass:\"el-icon-delete\",on:{\"click\":function($event){return _vm.delImage(index,item)}}}):_vm._e(),_c('video',{attrs:{\"width\":\"100%\",\"height\":\"100%;\",\"src\":_vm.imageGetUrl + '&key=' +item.key,\"controls\":\"controls\"}},[_vm._v(\"您的浏览器不支持 video 标签。 \")])]):_vm._e()}),(!_vm.readOnly)?_c('div',{staticStyle:{\"float\":\"left\"}},[_c('el-upload',{staticClass:\"avatar-uploader\",staticStyle:{\"position\":\"relative\"},attrs:{\"http-request\":_vm.uploadAndSubmit,\"show-file-list\":false,\"accept\":_vm.accept,\"action\":\"\",\"drag\":\"\"}},[_c('i',{staticClass:\"el-icon-plus avatar-uploader-icon\"})]),_c('video',{staticStyle:{\"display\":\"none\"},attrs:{\"id\":\"video\",\"controls\":\"\"}})],1):_vm._e()],2),_c('details-dialog',{attrs:{\"title\":'图片',\"iframeSrc\":_vm.iframeSrc,\"dialog\":_vm.dialog,\"setData\":_vm.imagesArr}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{staticClass:\"iframe\",attrs:{\"title\":_vm.title,\"append-to-body\":\"\",\"visible\":_vm.dialog.details,\"width\":\"500px\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.dialog, \"details\", $event)}}},[_c('iframe',{attrs:{\"id\":_vm.id,\"name\":\"google_ads_frame2\",\"frameborder\":\"0\",\"width\":\"100%\",\"height\":\"300px\",\"src\":_vm.iframeSrc,\"marginwidth\":\"0\",\"marginheight\":\"0\",\"vspace\":\"0\",\"hspace\":\"0\",\"allowtransparency\":\"true\",\"scrolling\":\"no\",\"allowfullscreen\":\"true\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <el-dialog :title=\"title\" append-to-body class=\"iframe\" :visible.sync=\"dialog.details\" width=\"500px\">\r\n <iframe :id=\"id\" name=\"google_ads_frame2\" frameborder=\"0\" width=\"100%\" height=\"300px\" :src=\"iframeSrc\" marginwidth=\"0\" marginheight=\"0\" vspace=\"0\"\r\n hspace=\"0\" allowtransparency=\"true\" scrolling=\"no\" allowfullscreen=\"true\"></iframe>\r\n </el-dialog>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n data() {\r\n return {\r\n id: 'google_ads_frame2' + new Date().getTime()\r\n }\r\n },\r\n props: {\r\n iframeSrc: {\r\n type: String,\r\n default: \"\"\r\n },\r\n title: {\r\n type: String,\r\n default: \"详情\"\r\n },\r\n dialog: {\r\n type: Object,\r\n default: function () {\r\n return {\r\n details: false\r\n }\r\n }\r\n },\r\n setData: {\r\n type: [Array, String],\r\n default: function () {\r\n return []\r\n }\r\n }\r\n },\r\n methods: {\r\n setMess() {\r\n this.$nextTick(_ => {\r\n let iframe = document.getElementById(this.id)\r\n iframe.onload = () => {\r\n let arr = this.setData.map(i => ({\r\n key: i.key,\r\n name: i.name,\r\n type: i.type\r\n }))\r\n iframe.contentWindow.postMessage(arr, \"*\")\r\n }\r\n })\r\n }\r\n },\r\n watch: {\r\n dialog: {\r\n deep: true,\r\n handler: function () {\r\n if (this.dialog.details) {\r\n this.setMess()\r\n }\r\n }\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n#google_ads_frame2 {\r\n height: 300px;\r\n overflow: auto;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./detailsDia.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./detailsDia.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./detailsDia.vue?vue&type=template&id=5c3bfa7c&scoped=true&\"\nimport script from \"./detailsDia.vue?vue&type=script&lang=js&\"\nexport * from \"./detailsDia.vue?vue&type=script&lang=js&\"\nimport style0 from \"./detailsDia.vue?vue&type=style&index=0&id=5c3bfa7c&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5c3bfa7c\",\n null\n \n)\n\nexport default component.exports","<!--\r\n @param keysArr 承接数组\r\n @param readOnly 删除按钮是否显示,上传是否显示\r\n @param max 上传最大数限制\r\n @click change 承接数组发生变化时触发函数\r\n-->\r\n<template>\r\n <div id=\"sagaUploads\">\r\n <div class=\"saga-upload-images\">\r\n <div v-if=\"type != 'video'\" class=\"point-image\" v-for=\"(item,index) in imagesArr\">\r\n <i v-if=\"!readOnly\" class=\"el-icon-delete\" @click=\"delImage(index,item)\"></i>\r\n <img :src=\"imageGetUrl + '&key=' +item.key\" @click=\"lookImg\" alt v-load>\r\n </div>\r\n <div v-if=\"type == 'video'\" class=\"point-image\" v-for=\"(item,index) in imagesArr\">\r\n <i v-if=\"!readOnly\" class=\"el-icon-delete\" @click=\"delImage(index,item)\"></i>\r\n <video\r\n width=\"100%\"\r\n height=\"100%;\"\r\n :src=\"imageGetUrl + '&key=' +item.key\"\r\n controls=\"controls\"\r\n >您的浏览器不支持 video 标签。\r\n </video>\r\n </div>\r\n <div v-if=\"!readOnly\" style=\"float:left;\">\r\n <el-upload\r\n class=\"avatar-uploader\"\r\n :http-request=\"uploadAndSubmit\"\r\n :show-file-list=\"false\"\r\n :accept=\"accept\"\r\n action\r\n drag\r\n style=\"position: relative\"\r\n >\r\n <i class=\"el-icon-plus avatar-uploader-icon\"></i>\r\n </el-upload>\r\n <video style=\"display:none;\" id=\"video\" controls/>\r\n </div>\r\n </div>\r\n <details-dialog :title=\"'图片'\" :iframeSrc=\"iframeSrc\" :dialog=\"dialog\" :setData=\"imagesArr\"></details-dialog>\r\n </div>\r\n</template>\r\n<script>\r\nimport tools from \"@/utils/old-adm/scan/tools\";\r\nimport detailsDialog from \"@/components/old-adm/business_space/lib/detailsDia\"\r\n\r\nexport default {\r\n components: {\r\n detailsDialog\r\n },\r\n props: {\r\n keysArr: {\r\n type: [Array, String]\r\n },\r\n readOnly: {\r\n type: Boolean,\r\n default: false\r\n },\r\n max: {\r\n type: [Number, String],\r\n default: 6\r\n },\r\n accept: {\r\n type: String,\r\n default: \"image/*\"\r\n },\r\n type: {\r\n type: String,\r\n default: \"image\"\r\n },\r\n defined: null,\r\n videoPicArr: {\r\n type: Array,\r\n default: function () {\r\n return []\r\n }\r\n }\r\n },\r\n data() {\r\n return {\r\n baseUrl: \"\",\r\n imageGetUrl: \"/image-service/common/image_get?systemId=dataPlatform\",\r\n imageUploadUrl: \"/image-service/common/image_upload?systemId=dataPlatform&secret=9e0891a7a8c8e885&overwrite=true\",\r\n imagesArr: [],\r\n iframeSrc: \"\",\r\n dialog: {\r\n details: false\r\n }\r\n };\r\n },\r\n created() {\r\n this.imageFalg();\r\n },\r\n methods: {\r\n //判断是否为空\r\n imageFalg() {\r\n let type = typeof this.keysArr;\r\n if (type == \"string\") {\r\n this.imagesArr = [this.keysArr];\r\n } else {\r\n this.imagesArr = tools.deepCopy(this.keysArr);\r\n }\r\n\r\n if (!this.keysArr) {\r\n this.imagesArr = [];\r\n }\r\n },\r\n //查看图片\r\n lookImg() {\r\n this.dialog.details = true\r\n this.iframeSrc = \r\n // process.env.BASE_URL + \r\n window.__systemConf.BASE_URL +\r\n \":8890/photo-View.html\"\r\n // this.iframeSrc = process.env.BASE_URL + \"/photo-View.html\"\r\n },\r\n //删除图片\r\n delImage(i, key) {\r\n if (this.type == \"video\") {\r\n this.videoPicArr = this.videoPicArr.map(item => {\r\n if (item.substring(0, item.length - 3) == this.imagesArr[i].substring(0, this.imagesArr[i].length - 3)) {\r\n return undefined\r\n } else {\r\n return item\r\n }\r\n }).filter(p => p)\r\n }\r\n this.imagesArr.splice(i, 1);\r\n this.$emit(\"change\", this.imagesArr, this.defined, this.videoPicArr);\r\n },\r\n\r\n //上传\r\n uploadAndSubmit(item, key) {\r\n // var form = document.forms[\"demoForm\"];\r\n\r\n // if (form[\"file\"].files.length > 0) {\r\n // 寻找表单域中的 <input type=\"file\" ... /> 标签\r\n // var file = form[\"file\"].files[0];\r\n\r\n let file = item.file;\r\n // try sending\r\n let reader = new FileReader();\r\n\r\n let vm = this;\r\n\r\n let fileType = file.name.split(\".\");\r\n let type = fileType[fileType.length - 1];\r\n let CreateTime = tools.formatDate(new Date(file.lastModified))\r\n\r\n let uploadKey = file.uid\r\n if (!!key) {\r\n uploadKey = key\r\n }\r\n\r\n reader.onloadstart = function () {\r\n // 这个事件在读取开始时触发\r\n };\r\n reader.onprogress = function (p) {\r\n // 这个事件在读取进行中定时触发\r\n };\r\n\r\n reader.onload = function () {\r\n // 这个事件在读取成功结束后触发\r\n };\r\n reader.onloadend = function () {\r\n // 这个事件在读取结束后,无论成功或者失败都会触发\r\n if (reader.error) {\r\n } else {\r\n // document.getElementById(\"bytesRead\").textContent = file.size;\r\n // 构造 XMLHttpRequest 对象,发送文件 Binary 数据\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(\r\n /* method */\r\n \"POST\",\r\n /* target url */\r\n vm.imageUploadUrl + \"&key=\" + uploadKey + \".\" + type\r\n /*, async, default to true */\r\n );\r\n //xhr.overrideMimeType(\"application/octet-stream\");\r\n xhr.send(reader.result);\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState == 4) {\r\n if (xhr.status == 200) {\r\n if (vm.type == 'image') {\r\n vm.imagesArr.push({\r\n name: uploadKey + '',\r\n key: uploadKey + \".\" + type,\r\n systemId: \"dataPlatform\",\r\n type: \"image\",\r\n createTime: CreateTime\r\n });\r\n }\r\n if (type == 'mp4') {\r\n vm.imagesArr.push({\r\n name: uploadKey + '',\r\n key: uploadKey + \".\" + type,\r\n systemId: \"dataPlatform\",\r\n type: \"video\",\r\n createTime: CreateTime\r\n });\r\n vm.creatImg(vm.imageGetUrl + \"&key=\" + uploadKey + \".\" + type, uploadKey)\r\n }\r\n console.log(vm.type, type)\r\n if (vm.type == \"video\" && type == \"png\") {\r\n console.log(\"触发时评上传图片回调\")\r\n vm.videoPicArr.push({\r\n name: uploadKey + '',\r\n key: uploadKey + \".\" + type,\r\n systemId: \"dataPlatform\",\r\n type: \"image_video\",\r\n createTime: CreateTime\r\n })\r\n }\r\n vm.$emit(\"change\", vm.imagesArr, vm.defined, vm.videoPicArr);\r\n }\r\n }\r\n };\r\n }\r\n };\r\n reader.readAsArrayBuffer(file);\r\n },\r\n dataURLtoBlob: function (dataURI, type) {\r\n var binary = atob(dataURI.split(',')[1]);\r\n var array = [];\r\n for (var i = 0; i < binary.length; i++) {\r\n array.push(binary.charCodeAt(i));\r\n }\r\n return new Blob([new Uint8Array(array)], {type: type});\r\n },\r\n\r\n creatImg(reader, key) {\r\n var videoDom = document.getElementById('video');\r\n videoDom.src = reader;\r\n let vm = this\r\n videoDom.onloadeddata = function () {\r\n // 这里可以打印视频时长\r\n // 这里取得视频封面\r\n var canvas = document.createElement('canvas');\r\n canvas.width = 300;\r\n canvas.height = 300 * this.videoHeight / this.videoWidth;\r\n canvas.getContext('2d').drawImage(this, 0, 0, canvas.width, canvas.height);\r\n //将canvas的base64位图片转换成图片png的file\r\n var blob = vm.dataURLtoBlob(canvas.toDataURL('image/png'), \"image/png\")\r\n //将其转换成file对象\r\n var file = new File([blob], \"video_image.png\", {type: \"image/png\", lastModified: Date.now()})//blob转file\r\n vm.uploadAndSubmit({file: file}, key)\r\n }\r\n },\r\n },\r\n watch: {\r\n keysArr: function (val) {\r\n this.imageFalg();\r\n }\r\n },\r\n //自定义指令\r\n directives: {\r\n load: function (el) {\r\n let imgDom = document.createElement(\"img\");\r\n imgDom.style.position = \"absolute\";\r\n imgDom.style.top = \"-999px\";\r\n imgDom.style.opacity = 0;\r\n imgDom.src = el.src;\r\n el.src = \"\";\r\n imgDom.onload = () => {\r\n let width = imgDom.width;\r\n let height = imgDom.height;\r\n if (width > height) {\r\n el.style.height = \"100%\";\r\n el.style.width = \"auto\";\r\n el.style.position = \"absolute\";\r\n el.style.left = \"50%\";\r\n el.style.top = \"0\";\r\n el.style.transform = \"translateX(-50%)\";\r\n el.style.webkitTransform = \"translateX(-50%) translateY(0)\";\r\n el.style.MozTransform = \"translateX(-50%) translateY(0)\";\r\n el.style.msTransform = \"translateX(-50%) translateY(0)\";\r\n el.style.OTransform = \"translateX(-50%) translateY(0)\";\r\n } else if (width < height) {\r\n el.src = imgDom.src;\r\n el.style.width = \"100%\";\r\n el.style.height = \"auto\";\r\n el.style.position = \"absolute\";\r\n el.style.top = \"50%\";\r\n el.style.left = \"0\";\r\n el.style.transform = \"translateY(-50%) translateX(0)\";\r\n el.style.webkitTransform = \"translateY(-50%) translateX(0)\";\r\n el.style.MozTransform = \"translateY(-50%) translateX(0)\";\r\n el.style.msTransform = \"translateY(-50%) translateX(0)\";\r\n el.style.OTransform = \"translateY(-50%) translateX(0)\";\r\n } else {\r\n el.style.width = \"100%\";\r\n el.style.height = \"100%\";\r\n el.style.position = \"absolute\";\r\n el.style.top = \"0\";\r\n el.style.left = \"0\";\r\n el.style.transform = \"translateY(0) translateX(0)\";\r\n el.style.webkitTransform = \"translateY(0) translateX(0)\";\r\n el.style.MozTransform = \"translateY(0) translateX(0)\";\r\n el.style.msTransform = \"translateY(0) translateX(0)\";\r\n el.style.OTransform = \"translateY(0) translateX(0)\";\r\n }\r\n el.src = imgDom.src;\r\n };\r\n }\r\n }\r\n };\r\n</script>\r\n<style lang=\"less\">\r\n #sagaUploads {\r\n overflow: hidden;\r\n\r\n .avatar-uploader {\r\n height: 180px;\r\n width: 180px;\r\n overflow: hidden;\r\n\r\n .el-upload {\r\n width: 180px;\r\n height: 180px;\r\n\r\n .el-upload-dragger {\r\n width: 180px;\r\n height: 180px;\r\n\r\n .el-icon-plus {\r\n display: block;\r\n width: 20px;\r\n height: 20px;\r\n font-size: 20px;\r\n margin: 80px;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .point-image {\r\n width: 180px;\r\n height: 180px;\r\n float: left;\r\n position: relative;\r\n margin-right: 10px;\r\n margin-bottom: 10px;\r\n border: 1px solid #ccc;\r\n overflow: hidden;\r\n\r\n image {\r\n z-index: 11;\r\n }\r\n\r\n i {\r\n position: absolute;\r\n bottom: 10px;\r\n right: 10px;\r\n background-color: #fff;\r\n padding: 5px;\r\n cursor: pointer;\r\n z-index: 66;\r\n }\r\n }\r\n }\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./uploadImgs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./uploadImgs.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./uploadImgs.vue?vue&type=template&id=7cab78fd&\"\nimport script from \"./uploadImgs.vue?vue&type=script&lang=js&\"\nexport * from \"./uploadImgs.vue?vue&type=script&lang=js&\"\nimport style0 from \"./uploadImgs.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\r\n 上传图片的弹窗\r\n-->\r\n\r\n<template>\r\n <el-dialog title=\"上传图片\" :visible.sync=\"dialog.uploadImgs\" width=\"500px\">\r\n <div style=\"max-height: 500px; overflow-y: auto;\">\r\n <upload-imgs :readOnly=\"read\" :keysArr=\"deepcopy(keysArr)\" @change=\"changeItem\" max=\"2\"></upload-imgs>\r\n </div>\r\n </el-dialog>\r\n</template>\r\n<script>\r\n import uploadImgs from \"@/components/old-adm/ledger/components/lib/uploadImgs\";\r\n\r\n export default {\r\n components: {\r\n uploadImgs\r\n },\r\n props: {\r\n dialog: {\r\n type: Object,\r\n default: function () {\r\n return {\r\n uploadImgs: true\r\n };\r\n }\r\n },\r\n keysArr: {\r\n type: Array,\r\n default: function () {\r\n return []\r\n }\r\n },\r\n read: {\r\n type: Boolean,\r\n default: false\r\n },\r\n firmDataType: {\r\n type: String\r\n },\r\n information: {\r\n type: Object\r\n },\r\n infoType: {\r\n type: String\r\n }\r\n },\r\n data() {\r\n return {};\r\n },\r\n created() {\r\n },\r\n mounted() {\r\n },\r\n methods: {\r\n deepcopy(obj) {\r\n return JSON.parse(JSON.stringify(obj));\r\n },\r\n changeItem(file) {\r\n if (this.firmDataType === 'dialog') {\r\n let info = this.infoType\r\n switch (info) {\r\n case 'installPic':\r\n this.information.installPic.InstallPic = file\r\n this.$emit('changeFile', this.information, this.firmDataType)\r\n break\r\n case 'installDrawing':\r\n this.information.installDrawing.InstallDrawing = file\r\n this.$emit('changeFile', this.information, this.firmDataType)\r\n break\r\n case 'nameplate':\r\n this.information.nameplate.Nameplate = file\r\n this.$emit('changeFile', this.information, this.firmDataType)\r\n break\r\n case 'drawing':\r\n this.information.drawing.Drawing = file\r\n this.$emit('changeFile', this.information, this.firmDataType)\r\n break\r\n case 'infos.installPic':\r\n this.$emit(\"changeFile\", info, this.firmDataType, file)\r\n break\r\n case 'infos.nameplate':\r\n this.$emit(\"changeFile\", info, this.firmDataType, file)\r\n break\r\n }\r\n } else {\r\n this.$emit(\"changeFile\", file)\r\n }\r\n\r\n }\r\n },\r\n};\r\n</script>\r\n<style>\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./uploadImgDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./uploadImgDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./uploadImgDialog.vue?vue&type=template&id=43bff728&\"\nimport script from \"./uploadImgDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./uploadImgDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"title\":\"上传图片\",\"visible\":_vm.dialog.pic,\"width\":\"500px;\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.dialog, \"pic\", $event)}}},[_c('div',{staticStyle:{\"max-height\":\"500px\",\"overflow-y\":\"auto\"}},[_c('div',[_c('h3',[_vm._v(\"设备图片\")]),_c('upload-imgs',{attrs:{\"readOnly\":_vm.read,\"keysArr\":_vm.picArrs},on:{\"change\":_vm.imageItem}})],1),_c('div',[_c('h3',[_vm._v(\"视频\")]),_c('upload-imgs',{attrs:{\"accept\":'video/*',\"type\":\"video\",\"keysArr\":_vm.videoArr,\"videoPicArr\":_vm.videoPicArr,\"readOnly\":_vm.read},on:{\"change\":_vm.videoItem}})],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"sagaUploads\"}},[_c('div',{staticClass:\"saga-upload-images\"},[_vm._l((_vm.imagesArr),function(item,index){return (_vm.type != 'video')?_c('div',{staticClass:\"point-view\"},[_c('div',{staticClass:\"point-image\"},[(!_vm.readOnly)?_c('i',{staticClass:\"el-icon-delete\",on:{\"click\":function($event){return _vm.delImage(index,item)}}}):_vm._e(),_c('img',{directives:[{name:\"load\",rawName:\"v-load\"}],attrs:{\"src\":_vm.imageGetUrl + '&key=' +item.key,\"alt\":\"\"},on:{\"click\":_vm.lookImg}})]),_c('form-input',{attrs:{\"label\":'',\"keys\":index,\"value\":item.name,\"width\":10},on:{\"change\":_vm.getName}})],1):_vm._e()}),_vm._l((_vm.imagesArr),function(item,index){return (_vm.type == 'video')?_c('div',{staticClass:\"point-view\"},[_c('div',{staticClass:\"point-image\"},[(!_vm.readOnly)?_c('i',{staticClass:\"el-icon-delete\",on:{\"click\":function($event){return _vm.delImage(index,item)}}}):_vm._e(),_c('video',{attrs:{\"width\":\"100%\",\"height\":\"100%;\",\"src\":_vm.imageGetUrl + '&key=' +item.key,\"controls\":\"controls\"}},[_vm._v(\"您的浏览器不支持 video 标签。\")])]),_c('form-input',{attrs:{\"label\":'',\"keys\":index,\"value\":item.name,\"width\":10},on:{\"change\":_vm.getName}})],1):_vm._e()}),_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.uploading),expression:\"uploading\"}],staticStyle:{\"float\":\"left\"}},[_c('el-upload',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.readOnly),expression:\"!readOnly\"}],staticClass:\"avatar-uploader\",staticStyle:{\"position\":\"relative\"},attrs:{\"http-request\":_vm.uploadAndSubmit,\"show-file-list\":false,\"accept\":_vm.accept,\"action\":\"\",\"drag\":\"\"}},[_c('i',{staticClass:\"el-icon-plus avatar-uploader-icon\"})]),_c('video',{staticStyle:{\"display\":\"none\"},attrs:{\"id\":\"video\",\"controls\":\"\"}})],1)],2),_c('details-dialog',{attrs:{\"title\":'图片',\"iframeSrc\":_vm.iframeSrc,\"dialog\":_vm.dialog,\"setData\":_vm.imagesArr}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-form',{ref:\"form\",attrs:{\"label-position\":'right',\"labelWidth\":_vm.width + 'px',\"model\":_vm.formLabelAlign},nativeOn:{\"submit\":function($event){$event.preventDefault();}}},[_c('el-form-item',{attrs:{\"label\":_vm.label,\"rules\":_vm.isRule ? { required: true, message: '不能为空'} : {}}},[(!_vm.isShow && (_vm.type == 'default' || _vm.type == 'B1'))?_c('el-input',{staticStyle:{\"width\":\"9rem\"},attrs:{\"size\":\"small\"},on:{\"change\":_vm.onSubmit},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onSubmit.apply(null, arguments)}},model:{value:(_vm.formLabelAlign.name),callback:function ($$v) {_vm.$set(_vm.formLabelAlign, \"name\", $$v)},expression:\"formLabelAlign.name\"}},[(_vm.unit)?_c('template',{slot:\"append\"},[_vm._v(_vm._s(_vm.unit))]):_vm._e()],2):_vm._e(),(!_vm.isShow && (_vm.type == 'A1' || _vm.type == 'A2'))?_c('el-input',{staticStyle:{\"width\":\"9rem\"},attrs:{\"type\":\"number\"},on:{\"change\":_vm.onSubmit},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onSubmit.apply(null, arguments)}},model:{value:(_vm.formLabelAlign.name),callback:function ($$v) {_vm.$set(_vm.formLabelAlign, \"name\", $$v)},expression:\"formLabelAlign.name\"}},[(_vm.unit)?_c('template',{slot:\"append\"},[_vm._v(_vm._s(_vm.unit))]):_vm._e()],2):_vm._e(),(!_vm.isShow && (_vm.type == 'year' || _vm.type == 'C5'))?_c('el-date-picker',{attrs:{\"type\":\"date\",\"value-format\":\"yyyy-MM-dd\",\"clearable\":false,\"placeholder\":\"选择日期\"},on:{\"change\":_vm.onSubmit},model:{value:(_vm.formLabelAlign.name),callback:function ($$v) {_vm.$set(_vm.formLabelAlign, \"name\", $$v)},expression:\"formLabelAlign.name\"}}):_vm._e(),(!_vm.isShow && (_vm.type == 'cascader' || _vm.type == 'D1'))?_c('el-cascader',{attrs:{\"options\":_vm.typeArr,\"props\":_vm.props},on:{\"change\":_vm.onSubmit},model:{value:(_vm.formLabelAlign.name),callback:function ($$v) {_vm.$set(_vm.formLabelAlign, \"name\", $$v)},expression:\"formLabelAlign.name\"}}):_vm._e(),(!_vm.isShow && _vm.type == 'C1')?_c('el-date-picker',{attrs:{\"type\":\"datetime\",\"value-format\":\"yyyy-MM-dd HH:MM\",\"clearable\":false,\"placeholder\":\"选择日期\"},on:{\"change\":_vm.onSubmit},model:{value:(_vm.formLabelAlign.name),callback:function ($$v) {_vm.$set(_vm.formLabelAlign, \"name\", $$v)},expression:\"formLabelAlign.name\"}}):_vm._e(),(!_vm.isShow && _vm.type == 'B2')?_c('el-input',{attrs:{\"type\":\"textarea\",\"rows\":2,\"placeholder\":\"请输入内容\"},on:{\"change\":_vm.onSubmit},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onSubmit.apply(null, arguments)}},model:{value:(_vm.formLabelAlign.name),callback:function ($$v) {_vm.$set(_vm.formLabelAlign, \"name\", $$v)},expression:\"formLabelAlign.name\"}}):_vm._e(),(!_vm.isShow && _vm.type == 'C6')?_c('el-date-picker',{attrs:{\"type\":\"datetimerange\",\"range-separator\":\"至\",\"start-placeholder\":\"开始日期\",\"end-placeholder\":\"结束日期\",\"value-format\":\"yyyy-MM-dd HH:MM\",\"clearable\":false,\"placeholder\":\"选择日期\"},on:{\"change\":_vm.onSubmit},model:{value:(_vm.formLabelAlign.name),callback:function ($$v) {_vm.$set(_vm.formLabelAlign, \"name\", $$v)},expression:\"formLabelAlign.name\"}}):_vm._e(),(!_vm.isShow && (_vm.type == 'default' || _vm.type == 'B1'))?_c('i',{staticClass:\"el-input__icon el-icon-check hover\",on:{\"click\":_vm.onSubmit}}):_vm._e(),(_vm.isShow)?_c('span',{staticClass:\"hover\",on:{\"click\":_vm.changeItem}},[_vm._v(\" \"+_vm._s(_vm.filterArr(_vm.formLabelAlign.name))+\" \"+_vm._s(_vm.unit)+\" \"),(_vm.type != 'X')?_c('i',{staticClass:\"el-icon-edit\"}):_vm._e()]):_vm._e(),_vm._t(\"mess\")],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\r\nA1\t手工填写-单个-数字-无单位\r\nA2\t手工填写-单个-数字-有单位\r\nA3\t手工填写-多个-数字-无单位\r\nA4\t手工填写-多个-数字-有单位\r\nA5\t手工填写-单个-数字范围-无单位\r\nA6\t手工填写-单个-数字范围-有单位\r\nA7\t手工填写-多个-数字范围-无单位\r\nA8\t手工填写-多个-数字范围-有单位\r\nB1\t手工填写-单个-文本\r\nB2\t手工填写-多个-文本\r\nC1\t手工填写-单个-日期时间值\r\nC2\t手工填写-单个-日期时间段\r\nC3\t手工填写-多个-日期时间值\r\nC4\t手工填写-多个-日期时间段\r\nC5\t手工填写-单个-日期值\r\nC6\t手工填写-单个-日期段\r\nC7\t手工填写-多个-日期值\r\nC8\t手工填写-多个-日期段\r\nC9\t手工填写-单个-时间值\r\nC10\t手工填写-单个-时间段\r\nC11\t手工填写-多个-时间值\r\nC12\t手工填写-多个-时间段\r\nD1\t字典选择-单个-单选\r\nD2\t字典选择-单个-多选\r\nD3\t字典选择-多个-单选\r\nD4\t字典选择-多个-多选\r\nE1\t字典布尔选择-单个\r\nE2\t字典布尔选择-多个\r\nF1\t上传-单个文件 -->\r\n\r\n<template>\r\n <el-form\r\n :label-position=\"'right'\"\r\n :labelWidth=\"width + 'px'\"\r\n :model=\"formLabelAlign\"\r\n ref=\"form\"\r\n @submit.native.prevent\r\n >\r\n <el-form-item :label=\"label\" :rules=\"isRule ? { required: true, message: '不能为空'} : {}\">\r\n <!-- 普通输入类型 -->\r\n <el-input\r\n size=\"small\"\r\n v-if=\"!isShow && (type == 'default' || type == 'B1')\"\r\n v-model=\"formLabelAlign.name\"\r\n style=\"width: 9rem;\"\r\n @change=\"onSubmit\"\r\n @keyup.enter.native=\"onSubmit\"\r\n >\r\n <template slot=\"append\" v-if=\"unit\">{{unit}}</template>\r\n </el-input>\r\n <el-input\r\n type=\"number\"\r\n v-if=\"!isShow && (type == 'A1' || type == 'A2')\"\r\n v-model=\"formLabelAlign.name\"\r\n style=\"width: 9rem;\"\r\n @change=\"onSubmit\"\r\n @keyup.enter.native=\"onSubmit\"\r\n >\r\n <template slot=\"append\" v-if=\"unit\">{{unit}}</template>\r\n </el-input>\r\n <!-- date类型 -->\r\n <el-date-picker\r\n v-if=\"!isShow && (type == 'year' || type == 'C5')\"\r\n v-model=\"formLabelAlign.name\"\r\n type=\"date\"\r\n value-format=\"yyyy-MM-dd\"\r\n @change=\"onSubmit\"\r\n :clearable=\"false\"\r\n placeholder=\"选择日期\"\r\n ></el-date-picker>\r\n <!-- 级联选择 -->\r\n <el-cascader\r\n v-if=\"!isShow && (type == 'cascader' || type == 'D1')\"\r\n :options=\"typeArr\"\r\n v-model=\"formLabelAlign.name\"\r\n @change=\"onSubmit\"\r\n :props=\"props\"\r\n ></el-cascader>\r\n <!-- 日期到分 -->\r\n <el-date-picker\r\n v-if=\"!isShow && type == 'C1'\"\r\n v-model=\"formLabelAlign.name\"\r\n type=\"datetime\"\r\n value-format=\"yyyy-MM-dd HH:MM\"\r\n @change=\"onSubmit\"\r\n :clearable=\"false\"\r\n placeholder=\"选择日期\"\r\n ></el-date-picker>\r\n <!-- 输入文本框 -->\r\n <el-input\r\n v-if=\"!isShow && type == 'B2'\"\r\n type=\"textarea\"\r\n :rows=\"2\"\r\n @change=\"onSubmit\"\r\n @keyup.enter.native=\"onSubmit\"\r\n placeholder=\"请输入内容\"\r\n v-model=\"formLabelAlign.name\"\r\n ></el-input>\r\n <!-- 日期 -->\r\n <el-date-picker\r\n v-if=\"!isShow && type == 'C6'\"\r\n v-model=\"formLabelAlign.name\"\r\n type=\"datetimerange\"\r\n range-separator=\"至\"\r\n start-placeholder=\"开始日期\"\r\n end-placeholder=\"结束日期\"\r\n value-format=\"yyyy-MM-dd HH:MM\"\r\n @change=\"onSubmit\"\r\n :clearable=\"false\"\r\n placeholder=\"选择日期\"\r\n ></el-date-picker>\r\n <!-- 点击确定 -->\r\n <i\r\n v-if=\"!isShow && (type == 'default' || type == 'B1')\"\r\n class=\"el-input__icon el-icon-check hover\"\r\n @click=\"onSubmit\"\r\n ></i>\r\n <!-- 显示基本内容 -->\r\n <span v-if=\"isShow\" @click=\"changeItem\" class=\"hover\">\r\n {{ filterArr(formLabelAlign.name) }} {{unit}}\r\n <i class=\"el-icon-edit\" v-if=\"type != 'X'\"></i>\r\n </span>\r\n <slot name=\"mess\"></slot>\r\n </el-form-item>\r\n </el-form>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"ownerInput\",\r\n props: {\r\n type: {\r\n type: String,\r\n default: \"default\"\r\n }, //类型\r\n value: [String, Number, Array], //value值\r\n label: String, //label值,从父级传入\r\n isRule: Boolean, //是否需要规则\r\n keys: [String, Number], //\r\n typeArr: [Array, String], //当其为级联或者下拉时传入\r\n unit: {\r\n //单位\r\n type: String,\r\n default: \"\"\r\n },\r\n width: {\r\n type: Number,\r\n default: 100\r\n }\r\n },\r\n\r\n data() {\r\n return {\r\n formLabelAlign: {\r\n name: \"\"\r\n },\r\n key: \"\",\r\n isShow: true,\r\n props: {\r\n label: \"name\",\r\n value: \"code\",\r\n children: \"content\"\r\n } //修改默认数据格式\r\n };\r\n },\r\n\r\n methods: {\r\n //点击确定或者url\r\n onSubmit() {\r\n if (this.formLabelAlign.name == \"\" || this.formLabelAlign.name == []) {\r\n this.$message.error(\"请确定值不为空\");\r\n } else {\r\n this.isShow = true;\r\n if (this.type == 'cascader' || this.type == 'D1') {\r\n let data = this.formLabelAlign.name\r\n this.$emit(\"change\", data[data.length - 1], this.keys);\r\n } else {\r\n this.$emit(\"change\", this.formLabelAlign.name, this.keys);\r\n }\r\n }\r\n },\r\n\r\n //点击文案出现输入\r\n changeItem() {\r\n if (this.type == \"X\") {\r\n this.$message('该信息点不支持编辑')\r\n return;\r\n } else {\r\n this.isShow = false;\r\n }\r\n },\r\n\r\n //对数组中的空数组去除\r\n toMyNeed(arr) {\r\n return arr.map(res => {\r\n let param = {};\r\n if (res.content && res.content.length != 0) {\r\n param.content = this.toMyNeed(res.content);\r\n }\r\n param.name = res.name;\r\n param.code = res.code;\r\n return param;\r\n });\r\n },\r\n\r\n //获取级联选中的值\r\n getCascaderObj(val, opt) {\r\n let data = this.getMyVal(val, opt, 'name')\r\n data.length > 1 ? data = data.join('/') : data = data.join('')\r\n return data\r\n },\r\n\r\n getMyVal(val, content, code) {\r\n let data = []\r\n if (content && content.length) {\r\n for (let i = 0; i < content.length; i++) {\r\n if (content[i].code == val) {\r\n data.push(content[i][code])\r\n break\r\n } else {\r\n if (content[i].content && content.length) {\r\n for (let j = 0; j < content[i].content.length; j++) {\r\n if (content[i].content[j].code == val) {\r\n data.push(content[i][code])\r\n data.push(content[i].content[j][code])\r\n break\r\n } else {\r\n if (content[i].content[j].content && content[i].content[j].content.length) {\r\n for (let k = 0; k < content[i].content[j].content.length; k++) {\r\n if (content[i].content[j].content[k].code == val) {\r\n data.push(content[i][code])\r\n data.push(content[i].content[j][code])\r\n data.push(content[i].content[j].content[k][code])\r\n break\r\n } else {\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!data.length) {\r\n data = null\r\n }\r\n return data\r\n },\r\n\r\n getMap(val, opt) {\r\n return opt.map(function (value, index, array) {\r\n for (var itm of opt) {\r\n if (itm.code == value.code) {\r\n opt = itm.content;\r\n return itm;\r\n }\r\n }\r\n return null;\r\n });\r\n },\r\n\r\n //数组过滤\r\n filterArr(val) {\r\n let value = \"\"; //最后输出的文案\r\n let isNeedType = this.type == 'cascader' || this.type == 'D1'\r\n if (this.type == 'C6') {\r\n value = value != \"\" ? val[0] + '至' + val[1] : \"--\"\r\n } else if (this.type == 'cascader' || this.type == 'D1') {\r\n if (val && val.length) {\r\n value = this.getCascaderObj(val[val.length - 1], this.typeArr, 'name') || \"--\";\r\n }\r\n } else {\r\n value = val || \"--\";\r\n }\r\n return value;\r\n }\r\n },\r\n\r\n created() {\r\n if (typeof (this.typeArr) == Object) {\r\n this.typeArr = this.toMyNeed(this.typeArr)\r\n }\r\n if (this.type == 'cascader' || this.type == 'D1') {\r\n if (this.value == '' || this.value == undefined) {\r\n this.formLabelAlign.name = []\r\n } else {\r\n this.formLabelAlign.name = this.getMyVal(this.value, this.typeArr, 'code');\r\n }\r\n } else {\r\n this.formLabelAlign.name = this.value;\r\n }\r\n this.key = this.label;\r\n },\r\n\r\n watch: {\r\n label() { }\r\n }\r\n};\r\n</script>\r\n\r\n<style lang=\"less\">\r\n.hover:hover {\r\n cursor: pointer;\r\n color: #409eff;\r\n}\r\ninput::-webkit-outer-spin-button,\r\ninput::-webkit-inner-spin-button {\r\n -webkit-appearance: none;\r\n}\r\ninput[type=\"number\"] {\r\n -moz-appearance: textfield;\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./formInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./formInput.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./formInput.vue?vue&type=template&id=4acca360&\"\nimport script from \"./formInput.vue?vue&type=script&lang=js&\"\nexport * from \"./formInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./formInput.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\r\n @param keysArr 承接数组\r\n @param readOnly 删除按钮是否显示,上传是否显示\r\n @param max 上传最大数限制\r\n @click change 承接数组发生变化时触发函数\r\n-->\r\n<template>\r\n <div id=\"sagaUploads\">\r\n <div class=\"saga-upload-images\">\r\n <div v-if=\"type != 'video'\" class=\"point-view\" v-for=\"(item,index) in imagesArr\">\r\n <div class=\"point-image\">\r\n <i v-if=\"!readOnly\" class=\"el-icon-delete\" @click=\"delImage(index,item)\"></i>\r\n <img @click=\"lookImg\" :src=\"imageGetUrl + '&key=' +item.key\" alt v-load>\r\n </div>\r\n <form-input :label=\"''\" @change=\"getName\" :keys=\"index\" :value=\"item.name\" :width=\"10\"></form-input>\r\n </div>\r\n <div v-if=\"type == 'video'\" class=\"point-view\" v-for=\"(item,index) in imagesArr\">\r\n <div class=\"point-image\">\r\n <i v-if=\"!readOnly\" class=\"el-icon-delete\" @click=\"delImage(index,item)\"></i>\r\n <video\r\n width=\"100%\"\r\n height=\"100%;\"\r\n :src=\"imageGetUrl + '&key=' +item.key\"\r\n controls=\"controls\"\r\n >您的浏览器不支持 video 标签。</video>\r\n </div>\r\n <form-input :label=\"''\" @change=\"getName\" :keys=\"index\" :value=\"item.name\" :width=\"10\"></form-input>\r\n </div>\r\n <!-- v-if=\"!readOnly && imagesArr.length < max\"-->\r\n <div style=\"float:left;\" v-loading=\"uploading\">\r\n <el-upload\r\n \tv-show=\"!readOnly\"\r\n class=\"avatar-uploader\"\r\n :http-request=\"uploadAndSubmit\"\r\n :show-file-list=\"false\"\r\n :accept=\"accept\"\r\n action\r\n drag\r\n style=\"position: relative\"\r\n >\r\n <i class=\"el-icon-plus avatar-uploader-icon\"></i>\r\n </el-upload>\r\n <video style=\"display:none;\" id=\"video\" controls/>\r\n </div>\r\n </div>\r\n <details-dialog :title=\"'图片'\" :iframeSrc=\"iframeSrc\" :dialog=\"dialog\" :setData=\"imagesArr\"></details-dialog>\r\n </div>\r\n</template>\r\n<script>\r\nimport tools from \"@/utils/old-adm/scan/tools\";\r\nimport formInput from \"@/components/old-adm/business_space/lib/formInput\"\r\nimport detailsDialog from \"@/components/old-adm/business_space/lib/detailsDia\"\r\n\r\nexport default {\r\n components: {\r\n formInput,\r\n detailsDialog\r\n },\r\n props: {\r\n keysArr: {\r\n type: [Array, String]\r\n },\r\n readOnly: {\r\n type: Boolean,\r\n default: false\r\n },\r\n max: {\r\n type: [Number, String],\r\n default: 6\r\n },\r\n accept: {\r\n type: String,\r\n default: \"image/*\"\r\n },\r\n type: {\r\n type: String,\r\n default: \"image\"\r\n },\r\n defined: null,\r\n videoPicArr: {\r\n type: Array,\r\n default: function () {\r\n return []\r\n }\r\n }\r\n },\r\n data() {\r\n return {\r\n baseUrl: \"\",\r\n imageGetUrl: \"/image-service/common/image_get?systemId=dataPlatform\",\r\n imageUploadUrl: \"/image-service/common/image_upload?systemId=dataPlatform&secret=9e0891a7a8c8e885&overwrite=true\",\r\n imagesArr: [],\r\n iframeSrc: \"\",\r\n dialog: {\r\n details: false\r\n },\r\n uploading: false\r\n };\r\n },\r\n created() {\r\n this.imageFalg();\r\n },\r\n methods: {\r\n getName(name, index) {\r\n this.imagesArr[index].name = name\r\n this.$emit(\"change\", this.imagesArr, this.defined, this.videoPicArr);\r\n },\r\n //判断是否为空\r\n imageFalg() {\r\n let type = typeof this.keysArr;\r\n if (type == \"string\") {\r\n this.imagesArr = [this.keysArr];\r\n } else {\r\n this.imagesArr = tools.copyArr(this.keysArr);\r\n }\r\n\r\n if (!this.keysArr) {\r\n this.imagesArr = [];\r\n }\r\n },\r\n\r\n //查看图片\r\n lookImg() {\r\n this.dialog.details = true\r\n this.iframeSrc = \r\n // process.env.BASE_URL + \r\n window.__systemConf.BASE_URL +\r\n \":8890/photo-View.html\"\r\n // this.iframeSrc = process.env.BASE_URL + \"/photo-View.html\"\r\n },\r\n\r\n //删除图片\r\n delImage(i, key) {\r\n if (this.type == \"video\") {\r\n this.videoPicArr = this.videoPicArr.map(item => {\r\n if (item.key.substring(0, item.length - 3) == this.imagesArr[i].key.substring(0, this.imagesArr[i].length - 3)) {\r\n return undefined\r\n } else {\r\n return item\r\n }\r\n }).filter(p => p)\r\n }\r\n this.imagesArr.splice(i, 1);\r\n this.$emit(\"change\", this.imagesArr, this.defined, this.videoPicArr);\r\n },\r\n\r\n //上传\r\n uploadAndSubmit(item, key) {\r\n // var form = document.forms[\"demoForm\"];\r\n\r\n // if (form[\"file\"].files.length > 0) {\r\n // 寻找表单域中的 <input type=\"file\" ... /> 标签\r\n // var file = form[\"file\"].files[0];\r\n\r\n let file = item.file;\r\n // try sending\r\n let reader = new FileReader();\r\n\r\n let vm = this;\r\n\r\n let fileType = file.name.split(\".\");\r\n let type = fileType[fileType.length - 1];\r\n let CreateTime = tools.formatDate(new Date(file.lastModified))\r\n\r\n let uploadKey = file.uid\r\n if (!!key) {\r\n uploadKey = key\r\n }\r\n\r\n reader.onloadstart = function () {\r\n // 这个事件在读取开始时触发\r\n };\r\n reader.onprogress = function (p) {\r\n // 这个事件在读取进行中定时触发\r\n };\r\n\r\n reader.onload = function () {\r\n // 这个事件在读取成功结束后触发\r\n };\r\n reader.onloadend = function () {\r\n // 这个事件在读取结束后,无论成功或者失败都会触发\r\n if (reader.error) {\r\n } else {\r\n // document.getElementById(\"bytesRead\").textContent = file.size;\r\n // 构造 XMLHttpRequest 对象,发送文件 Binary 数据\r\n vm.uploading = true;\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(\r\n /* method */\r\n \"POST\",\r\n /* target url */\r\n vm.imageUploadUrl + \"&key=\" + uploadKey + \".\" + type\r\n /*, async, default to true */\r\n );\r\n //xhr.overrideMimeType(\"application/octet-stream\");\r\n xhr.send(reader.result);\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState == 4) {\r\n if (xhr.status == 200) {\r\n vm.uploading = false;\r\n if (vm.type == 'image') {\r\n vm.imagesArr.push(\r\n {\r\n name: uploadKey + '',\r\n key: uploadKey + \".\" + type,\r\n systemId: \"dataPlatform\",\r\n type: \"image\",\r\n createTime: CreateTime\r\n }\r\n );\r\n }\r\n if (type == 'mp4') {\r\n vm.imagesArr.push({\r\n name: uploadKey + '',\r\n key: uploadKey + \".\" + type,\r\n systemId: \"dataPlatform\",\r\n type: \"video\",\r\n createTime: CreateTime\r\n }\r\n );\r\n vm.creatImg(vm.imageGetUrl + \"&key=\" + uploadKey + \".\" + type, uploadKey)\r\n }\r\n if (vm.type == \"video\" && type == \"png\") {\r\n console.log(vm.videoPicArr)\r\n // vm.videoPicArr.push({\r\n // name: uploadKey + '',\r\n // key: uploadKey + \".\" + type,\r\n // systemId: \"dataPlatform\",\r\n // type: \"image_video\",\r\n // createTime: CreateTime\r\n // })\r\n }\r\n vm.$emit(\"change\", vm.imagesArr, vm.defined, vm.videoPicArr);\r\n }\r\n }\r\n };\r\n }\r\n };\r\n reader.readAsArrayBuffer(file);\r\n },\r\n dataURLtoBlob(dataURI, type) {\r\n var binary = atob(dataURI.split(',')[1]);\r\n var array = [];\r\n for (var i = 0; i < binary.length; i++) {\r\n array.push(binary.charCodeAt(i));\r\n }\r\n return new Blob([new Uint8Array(array)], { type: type });\r\n },\r\n\r\n creatImg(reader, key) {\r\n var videoDom = document.getElementById('video');\r\n videoDom.src = reader;\r\n let vm = this\r\n videoDom.onloadeddata = function () {\r\n // 这里可以打印视频时长\r\n // 这里取得视频封面\r\n var canvas = document.createElement('canvas');\r\n canvas.width = 300;\r\n canvas.height = 300 * this.videoHeight / this.videoWidth;\r\n canvas.getContext('2d').drawImage(this, 0, 0, canvas.width, canvas.height);\r\n //将canvas的base64位图片转换成图片png的file\r\n var blob = vm.dataURLtoBlob(canvas.toDataURL('image/png'), \"image/png\")\r\n //将其转换成file对象\r\n var file = new File([blob], \"video_image.png\", { type: \"image/png\", lastModified: Date.now() })//blob转file\r\n vm.uploadAndSubmit({ file: file }, key)\r\n }\r\n },\r\n },\r\n watch: {\r\n keysArr: function (val) {\r\n this.imageFalg();\r\n }\r\n },\r\n //自定义指令\r\n directives: {\r\n load: function (el) {\r\n let imgDom = document.createElement(\"img\");\r\n imgDom.style.position = \"absolute\";\r\n imgDom.style.top = \"-999px\";\r\n imgDom.style.opacity = 0;\r\n imgDom.src = el.src;\r\n el.src = \"\";\r\n imgDom.onload = () => {\r\n let width = imgDom.width;\r\n let height = imgDom.height;\r\n if (width > height) {\r\n el.style.height = \"100%\";\r\n el.style.width = \"auto\";\r\n el.style.position = \"absolute\";\r\n el.style.left = \"50%\";\r\n el.style.top = \"0\";\r\n el.style.transform = \"translateX(-50%)\";\r\n el.style.webkitTransform = \"translateX(-50%) translateY(0)\";\r\n el.style.MozTransform = \"translateX(-50%) translateY(0)\";\r\n el.style.msTransform = \"translateX(-50%) translateY(0)\";\r\n el.style.OTransform = \"translateX(-50%) translateY(0)\";\r\n } else if (width < height) {\r\n el.src = imgDom.src;\r\n el.style.width = \"100%\";\r\n el.style.height = \"auto\";\r\n el.style.position = \"absolute\";\r\n el.style.top = \"50%\";\r\n el.style.left = \"0\";\r\n el.style.transform = \"translateY(-50%) translateX(0)\";\r\n el.style.webkitTransform = \"translateY(-50%) translateX(0)\";\r\n el.style.MozTransform = \"translateY(-50%) translateX(0)\";\r\n el.style.msTransform = \"translateY(-50%) translateX(0)\";\r\n el.style.OTransform = \"translateY(-50%) translateX(0)\";\r\n } else {\r\n el.style.width = \"100%\";\r\n el.style.height = \"100%\";\r\n el.style.position = \"absolute\";\r\n el.style.top = \"0\";\r\n el.style.left = \"0\";\r\n el.style.transform = \"translateY(0) translateX(0)\";\r\n el.style.webkitTransform = \"translateY(0) translateX(0)\";\r\n el.style.MozTransform = \"translateY(0) translateX(0)\";\r\n el.style.msTransform = \"translateY(0) translateX(0)\";\r\n el.style.OTransform = \"translateY(0) translateX(0)\";\r\n }\r\n el.src = imgDom.src;\r\n };\r\n }\r\n }\r\n};\r\n</script>\r\n<style lang=\"less\">\r\n#sagaUploads {\r\n overflow: hidden;\r\n .avatar-uploader {\r\n height: 180px;\r\n width: 180px;\r\n overflow: hidden;\r\n .el-upload {\r\n width: 180px;\r\n height: 180px;\r\n .el-upload-dragger {\r\n width: 180px;\r\n height: 180px;\r\n .el-icon-plus {\r\n display: block;\r\n width: 20px;\r\n height: 20px;\r\n font-size: 20px;\r\n margin: 80px;\r\n }\r\n }\r\n }\r\n }\r\n .point-view {\r\n float: left;\r\n margin-right: 10px;\r\n margin-bottom: 10px;\r\n overflow: hidden;\r\n height: 240px;\r\n }\r\n .point-image {\r\n width: 180px;\r\n height: 180px;\r\n position: relative;\r\n border: 1px solid #ccc;\r\n overflow: hidden;\r\n img {\r\n z-index: 11;\r\n }\r\n i {\r\n position: absolute;\r\n bottom: 10px;\r\n right: 10px;\r\n background-color: #fff;\r\n padding: 5px;\r\n cursor: pointer;\r\n z-index: 66;\r\n }\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./uploadImgsName.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./uploadImgsName.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./uploadImgsName.vue?vue&type=template&id=7f29727e&\"\nimport script from \"./uploadImgsName.vue?vue&type=script&lang=js&\"\nexport * from \"./uploadImgsName.vue?vue&type=script&lang=js&\"\nimport style0 from \"./uploadImgsName.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\r\n 上传图片的弹窗\r\n-->\r\n\r\n<template>\r\n <el-dialog title=\"上传图片\" :visible.sync=\"dialog.pic\" width=\"500px;\">\r\n <div style=\"max-height:500px;overflow-y:auto;\">\r\n <div>\r\n <h3>设备图片</h3>\r\n <upload-imgs\r\n :readOnly=\"read\"\r\n :keysArr=\"picArrs\"\r\n @change=\"imageItem\"\r\n\r\n />\r\n </div>\r\n <!-- max=\"6\"-->\r\n <div>\r\n <h3>视频</h3>\r\n <upload-imgs\r\n :accept=\"'video/*'\"\r\n type=\"video\"\r\n :keysArr=\"videoArr\"\r\n @change=\"videoItem\"\r\n :videoPicArr=\"videoPicArr\"\r\n :readOnly=\"read\"\r\n />\r\n <!-- max=\"2\"-->\r\n </div>\r\n </div>\r\n </el-dialog>\r\n</template>\r\n<script>\r\n import uploadImgs from \"@/components/old-adm/ledger/components/lib/uploadImgsName\";\r\n\r\n export default {\r\n components: {\r\n uploadImgs\r\n },\r\n props: {\r\n dialog: {\r\n type: Object,\r\n default: function () {\r\n return {\r\n pic: true\r\n };\r\n }\r\n },\r\n keysArr: {\r\n type: Array,\r\n default: function () {\r\n return []\r\n }\r\n },\r\n read: {\r\n type: Boolean,\r\n default: false\r\n },\r\n firmDataType: {\r\n type: String\r\n },\r\n information: {\r\n type: Object\r\n },\r\n infoType: {\r\n type: String\r\n }\r\n },\r\n data() {\r\n return {\r\n picArrs: [],\r\n panoramaArr: [],\r\n videoArr: [],\r\n videoPicArr: [],\r\n changeKeys: []\r\n };\r\n },\r\n created() {\r\n },\r\n mounted() {\r\n },\r\n methods: {\r\n imageItem(images) {\r\n this.picArrs = images\r\n this.change()\r\n },\r\n\r\n panoramaItem(images) {\r\n this.panoramaArr = images\r\n this.change()\r\n },\r\n\r\n videoItem(videos, pe, pics) {\r\n this.videoArr = videos\r\n this.videoPicArr = pics\r\n this.change()\r\n },\r\n\r\n change() {\r\n // let picsArr = this.getArr(this.picArrs, \"设备图片\", \"image\")\r\n // let videos = this.getArr(this.videoArr, \"视频\", \"video\")\r\n // let videoPics = this.getArr(this.videoPicArr, \"视频资料\", \"image_video\")\r\n // let panoramas = this.getArr(this.panoramaArr, \"全景照片\", \"panorama\")\r\n let picsArr = this.picArrs\r\n let videos = this.videoArr\r\n let videoPics = this.videoPicArr\r\n let panoramas = this.panoramaArr\r\n this.changeKeys = picsArr.concat(videos).concat(videoPics).concat(panoramas)\r\n if (this.firmDataType === 'dialog') {\r\n // this.information.pic.Pic = this.changeKeys\r\n // this.$emit(\"change\", this.information, this.firmDataType)\r\n // this.$emit(\"change\", this.information, this.firmDataType, this.changeKeys)\r\n this.$emit(\"change\", this.infoType, this.firmDataType, this.changeKeys)\r\n } else {\r\n this.$emit(\"change\", this.changeKeys)\r\n\r\n }\r\n },\r\n\r\n getArr(arr, name, type) {\r\n return arr.map(item => {\r\n return {\r\n \"SystemId\": \"dataPlatform\",\r\n \"Name\": name,\r\n \"Type\": type,\r\n \"Key\": item,\r\n }\r\n })\r\n },\r\n\r\n //将父组件传来的数据进行分组\r\n fatherTochild() {\r\n this.panoramaArr = []\r\n this.videoArr = []\r\n this.videoPicArr = []\r\n this.picArrs = []\r\n if (this.keysArr instanceof Array) {\r\n this.keysArr.map(item => {\r\n if (item.type == 'panorama') {\r\n this.panoramaArr.push(item)\r\n } else if (item.type == \"video\") {\r\n this.videoArr.push(item)\r\n } else if (item.type == 'image_video') {\r\n this.videoPicArr.push(item)\r\n } else {\r\n this.picArrs.push(item)\r\n }\r\n })\r\n } else {\r\n this.panoramaArr = []\r\n this.videoArr = []\r\n this.videoPicArr = []\r\n this.picArrs = []\r\n }\r\n }\r\n },\r\n watch: {\r\n dialog: {\r\n deep: true,\r\n handler: function () {\r\n if (this.dialog.pic) {\r\n this.fatherTochild()\r\n }\r\n }\r\n }\r\n }\r\n };\r\n</script>\r\n<style>\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./picDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./picDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./picDialog.vue?vue&type=template&id=167cebd4&\"\nimport script from \"./picDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./picDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"title\":(\"编辑 <\" + _vm.infoName + \">\"),\"visible\":_vm.dialog.menum,\"width\":\"670px\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.dialog, \"menum\", $event)}}},[_c('el-row',{staticStyle:{\"margin-top\":\"20px\"}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"multiple\":\"\",\"placeholder\":\"请选择\"},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},_vm._l((_vm.options),function(item){return _c('el-option',{key:item.Code,attrs:{\"label\":item.Name,\"value\":item.Code}})}),1)],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.dialog.menum = false}}},[_vm._v(\"取 消\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.handleClickUpdate}},[_vm._v(\"确 认\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!-- 多选枚举类型数据维护 -->\r\n<template>\r\n <el-dialog :title=\"`编辑 <${infoName}>`\" :visible.sync=\"dialog.menum\" width=\"670px\">\r\n <el-row style=\"margin-top: 20px\">\r\n <el-select v-model=\"value\" multiple placeholder=\"请选择\" style=\"width: 100%\">\r\n <el-option v-for=\"item in options\" :key=\"item.Code\" :label=\"item.Name\" :value=\"item.Code\"> </el-option>\r\n </el-select>\r\n </el-row>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"dialog.menum = false\">取 消</el-button>\r\n <el-button type=\"primary\" @click=\"handleClickUpdate\">确 认</el-button>\r\n </span>\r\n </el-dialog>\r\n</template>\r\n<script>\r\nimport tools from \"@/utils/old-adm/scan/tools\";\r\n\r\nexport default {\r\n props: {\r\n dialog: {\r\n type: Object,\r\n default: function () {\r\n return {\r\n menum: true,\r\n };\r\n },\r\n },\r\n updateInput: {\r\n type: [Array, String],\r\n default: [],\r\n },\r\n updateInfoData: {\r\n type: [Object],\r\n default: {},\r\n },\r\n },\r\n data() {\r\n return {\r\n value: [],\r\n };\r\n },\r\n computed: {\r\n options() {\r\n return this.updateInfoData.dataSource ? tools.formatDataSource(this.updateInfoData.dataSource) : [];\r\n },\r\n // 信息点名称\r\n infoName() {\r\n return this.updateInfoData.name || \"\";\r\n },\r\n },\r\n methods: {\r\n formatValue(value) {\r\n if (value instanceof Array) {\r\n return JSON.parse(JSON.stringify(value));\r\n } else if (typeof value === \"string\" && value !== \"\") {\r\n return value.split(\",\");\r\n } else {\r\n return [];\r\n }\r\n },\r\n // 确认修改\r\n handleClickUpdate() {\r\n this.$emit(\"change\", this.value);\r\n },\r\n },\r\n watch: {\r\n dialog: {\r\n deep: true,\r\n handler() {\r\n if (this.dialog.menum) {\r\n this.value = this.formatValue(this.updateInput);\r\n }\r\n },\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"less\">\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menum.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menum.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./menum.vue?vue&type=template&id=72ffc8fc&\"\nimport script from \"./menum.vue?vue&type=script&lang=js&\"\nexport * from \"./menum.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{staticClass:\"batchContainer\",attrs:{\"title\":'批量维护信息点 - ' + _vm.mess.name,\"width\":\"65%\",\"top\":\"10vh\",\"visible\":_vm.batchDialog},on:{\"update:visible\":function($event){_vm.batchDialog=$event}}},[_c('el-steps',{attrs:{\"active\":_vm.active,\"simple\":\"\",\"align-center\":\"\"}},[_c('el-step',{attrs:{\"title\":\"填写需维护的信息点\"},nativeOn:{\"click\":function($event){_vm.active = 0}}}),_c('el-step',{attrs:{\"title\":\"选择批量维护的对象实例\"},nativeOn:{\"click\":function($event){_vm.active = 1}}})],1),_c('hr'),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.active === 0),expression:\"active === 0\"}],staticStyle:{\"height\":\"555px\",\"overflow\":\"auto\"}},[_c('section',[_c('p',{staticClass:\"text-message\"},[_vm._v(\"维护多选枚举类型信息点\")]),_c('span',{staticClass:\"small\"},[_vm._v(\"请选择需维护的信息点\")]),_c('el-form',{ref:\"ruleForm\",attrs:{\"model\":_vm.formData,\"inline\":true,\"label-position\":'left'}},_vm._l((_vm.tableHeader),function(item){return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(\n item.dataType === 'MENUM' || (item.dataType == 'ENUM' && item.multiple) || (item.dataType == 'BOOLEAN' && item.multiple)\n ),expression:\"\\n item.dataType === 'MENUM' || (item.dataType == 'ENUM' && item.multiple) || (item.dataType == 'BOOLEAN' && item.multiple)\\n \"}],key:item.code,staticStyle:{\"width\":\"50%\",\"display\":\"inline-block\"}},[(\n item.dataType === 'MENUM' ||\n (item.dataType == 'ENUM' && item.multiple) ||\n (item.dataType == 'BOOLEAN' && item.multiple)\n )?_c('el-form-item',{class:{\n FloorTypeSelect:\n item.dataType == 'MENUM' ||\n (item.dataType == 'ENUM' && item.multiple) ||\n (item.dataType == 'BOOLEAN' && item.multiple),\n },attrs:{\"label\":item.name,\"prop\":item.code}},[_c('el-select',{attrs:{\"collapse-tags\":\"\",\"multiple\":\"\",\"placeholder\":\"请选择\"},model:{value:(_vm.formData[item.path]),callback:function ($$v) {_vm.$set(_vm.formData, item.path, $$v)},expression:\"formData[item.path]\"}},_vm._l((_vm.formatDataSource(item.dataSource)),function(opt){return _c('el-option',{key:((item.code) + \"-\" + (opt.Code)),attrs:{\"label\":opt.Name,\"value\":opt.Code}})}),1)],1):_vm._e()],1)}),0)],1),_c('section',[_c('p',{staticClass:\"text-message\"},[_vm._v(\"维护有多个值的信息点\")]),_c('span',{staticClass:\"small\"},[_vm._v(\"选择值的更新方式\")]),_c('el-radio-group',{model:{value:(_vm.radio),callback:function ($$v) {_vm.radio=$$v},expression:\"radio\"}},[_c('el-radio',{attrs:{\"label\":1}},[_vm._v(\"以增量方式维护\")]),_c('el-radio',{attrs:{\"label\":2}},[_vm._v(\"以覆盖方式维护\")])],1),_c('div',{staticStyle:{\"margin\":\"15px\"}}),_c('div',{staticClass:\"checkbox\"},_vm._l((_vm.newEnclosure),function(item){return _c('p',{key:item.code},[_c('el-checkbox',{model:{value:(_vm.form[item.path]),callback:function ($$v) {_vm.$set(_vm.form, item.path, $$v)},expression:\"form[item.path]\"}}),_c('span',{staticStyle:{\"cursor\":\"pointer\"}},[_vm._v(_vm._s(item.name))]),_c('el-button',{attrs:{\"type\":\"text\"},on:{\"click\":function($event){return _vm.multiple(item.path)}}},[_vm._v(\"请选择\")]),_vm._l((item.value),function(i){return _c('span',{key:i.key,staticClass:\"text-color\"},[_vm._v(_vm._s(_vm._f(\"filterImgName\")(i.name)))])})],2)}),0)],1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.active === 1),expression:\"active === 1\"}],staticClass:\"all-message\"},[_c('el-row',{staticClass:\"filters\"},[_c('el-col',{staticStyle:{\"width\":\"268px\"},attrs:{\"span\":7}},[_c('el-input',{attrs:{\"placeholder\":\"输入设备名称、设备本地编码、数字化交付编码进行查询\",\"clearable\":\"\"},on:{\"clear\":_vm.inputMsg},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.inputMsg.apply(null, arguments)}},model:{value:(_vm.keycode),callback:function ($$v) {_vm.keycode=$$v},expression:\"keycode\"}},[_c('i',{staticClass:\"el-input__icon el-icon-search\",attrs:{\"slot\":\"suffix\"},on:{\"click\":_vm.inputMsg},slot:\"suffix\"})])],1),_c('el-col',{staticStyle:{\"padding\":\"0 0\"},attrs:{\"span\":8.5}},[_c('floor-cascader',{ref:\"buildFloor\",staticStyle:{\"margin-left\":\"15px\"},on:{\"change\":_vm.changeFloor}})],1)],1),_c('el-table',{ref:\"multipleTable\",staticStyle:{\"width\":\"100%\",\"margin-bottom\":\"10px\"},attrs:{\"data\":_vm.tableData,\"height\":\"460\",\"tooltip-effect\":\"dark\"},on:{\"selection-change\":_vm.handleSelectionChange}},[_c('el-table-column',{attrs:{\"type\":\"selection\",\"width\":\"55\"}}),_c('el-table-column',{attrs:{\"label\":\"设备本地名称\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(scope.row.localName))]}}])}),_c('el-table-column',{attrs:{\"prop\":\"localId\",\"label\":\"设备本地编码\"}}),_c('el-table-column',{attrs:{\"label\":\"数字化交付编码\",\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',[_vm._v(_vm._s(scope.row.infos ? (scope.row.infos.digitalDeliveryID ? scope.row.infos.digitalDeliveryID : \"\") : \"\"))])]}}])}),_c('el-table-column',{attrs:{\"prop\":\"build\",\"label\":\"所属建筑楼层\",\"show-overflow-tooltip\":\"\"}})],1),_c('my-pagination',{attrs:{\"page\":_vm.page},on:{\"change\":_vm.getAllData}})],1),_c('div',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.active === 0),expression:\"active === 0\"}],staticClass:\"next-step\",on:{\"click\":_vm.next}},[_vm._v(\"下一步 \")]),_c('el-button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.active === 1),expression:\"active === 1\"}],staticStyle:{\"margin-right\":\"10px\"},on:{\"click\":function($event){_vm.active = 0}}},[_vm._v(\"上 一 步 \")]),_c('el-button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.active === 1),expression:\"active === 1\"}],attrs:{\"type\":\"primary\",\"loading\":_vm.loading},on:{\"click\":_vm.maintenanceSelect}},[_vm._v(\"维护已选 \")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"block\"},[_c('el-pagination',{attrs:{\"current-page\":_vm.page.currentPage,\"page-sizes\":_vm.page.sizes,\"page-size\":_vm.page.size,\"layout\":_vm.isSmall ? 'total, sizes, prev, pager, next, jumper' : 'prev, pager, next',\"total\":_vm.page.total},on:{\"size-change\":_vm.handleSizeChange,\"current-change\":_vm.handleCurrentChange,\"update:currentPage\":function($event){return _vm.$set(_vm.page, \"currentPage\", $event)},\"update:current-page\":function($event){return _vm.$set(_vm.page, \"currentPage\", $event)}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\r\n props:{\r\n size: 当前页的页数,\r\n sizes: 下拉的条数,\r\n total: 总条数,\r\n currentPage: 当前页\r\n }\r\n @change 发生改变\r\n-->\r\n<template>\r\n <div class=\"block\">\r\n <el-pagination\r\n @size-change=\"handleSizeChange\"\r\n @current-change=\"handleCurrentChange\"\r\n :current-page.sync=\"page.currentPage\"\r\n :page-sizes=\"page.sizes\"\r\n :page-size=\"page.size\"\r\n :layout=\" isSmall ? 'total, sizes, prev, pager, next, jumper' : 'prev, pager, next'\"\r\n :total=\"page.total\">\r\n </el-pagination>\r\n </div>\r\n</template>\r\n<script>\r\nexport default {\r\n name: \"pagination\",\r\n props: {\r\n page: {\r\n type: Object\r\n },\r\n isSmall:{\r\n type:Boolean,\r\n default: true\r\n }\r\n },\r\n methods: {\r\n //当前条数发生改变\r\n handleSizeChange(val) {\r\n this.page.size = val;\r\n this.change()\r\n },\r\n //当前页发生改变\r\n handleCurrentChange(val) {\r\n this.page.currentPage = val;\r\n this.change()\r\n },\r\n //发生改变\r\n change() {\r\n this.$emit(\"change\");\r\n }\r\n }\r\n};\r\n</script>\r\n<style>\r\n.el-pagination button, .el-pagination span:not([class*=suffix]) {\r\n vertical-align: middle;\r\n}\r\n.block{\r\n /* margin-top: 5px; */\r\n}\r\n</style>","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./myPagination.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./myPagination.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./myPagination.vue?vue&type=template&id=eb0dd034&\"\nimport script from \"./myPagination.vue?vue&type=script&lang=js&\"\nexport * from \"./myPagination.vue?vue&type=script&lang=js&\"\nimport style0 from \"./myPagination.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\r\n <el-dialog :title=\"'批量维护信息点 - ' + mess.name\" width=\"65%\" top=\"10vh\" :visible.sync=\"batchDialog\" class=\"batchContainer\">\r\n <el-steps :active=\"active\" simple align-center>\r\n <el-step @click.native=\"active = 0\" title=\"填写需维护的信息点\" />\r\n <el-step @click.native=\"active = 1\" title=\"选择批量维护的对象实例\" />\r\n </el-steps>\r\n <hr />\r\n <div v-show=\"active === 0\" style=\"height: 555px; overflow: auto\">\r\n <section>\r\n <p class=\"text-message\">维护多选枚举类型信息点</p>\r\n <span class=\"small\">请选择需维护的信息点</span>\r\n <el-form ref=\"ruleForm\" :model=\"formData\" :inline=\"true\" :label-position=\"'left'\">\r\n <div\r\n v-for=\"item in tableHeader\"\r\n v-show=\"\r\n item.dataType === 'MENUM' || (item.dataType == 'ENUM' && item.multiple) || (item.dataType == 'BOOLEAN' && item.multiple)\r\n \"\r\n :key=\"item.code\"\r\n style=\"width: 50%; display: inline-block\"\r\n >\r\n <el-form-item\r\n :label=\"item.name\"\r\n :prop=\"item.code\"\r\n v-if=\"\r\n item.dataType === 'MENUM' ||\r\n (item.dataType == 'ENUM' && item.multiple) ||\r\n (item.dataType == 'BOOLEAN' && item.multiple)\r\n \"\r\n :class=\"{\r\n FloorTypeSelect:\r\n item.dataType == 'MENUM' ||\r\n (item.dataType == 'ENUM' && item.multiple) ||\r\n (item.dataType == 'BOOLEAN' && item.multiple),\r\n }\"\r\n >\r\n <el-select v-model=\"formData[item.path]\" collapse-tags multiple placeholder=\"请选择\">\r\n <el-option\r\n v-for=\"opt in formatDataSource(item.dataSource)\"\r\n :key=\"`${item.code}-${opt.Code}`\"\r\n :label=\"opt.Name\"\r\n :value=\"opt.Code\"\r\n >\r\n </el-option>\r\n </el-select>\r\n </el-form-item>\r\n </div>\r\n </el-form>\r\n </section>\r\n <!-- 维护有多个值的信息 -->\r\n <section>\r\n <p class=\"text-message\">维护有多个值的信息点</p>\r\n <span class=\"small\">选择值的更新方式</span>\r\n <el-radio-group v-model=\"radio\">\r\n <el-radio :label=\"1\">以增量方式维护</el-radio>\r\n <el-radio :label=\"2\">以覆盖方式维护</el-radio>\r\n </el-radio-group>\r\n <div style=\"margin: 15px\"></div>\r\n <div class=\"checkbox\">\r\n <p v-for=\"item in newEnclosure\" :key=\"item.code\">\r\n <el-checkbox v-model=\"form[item.path]\"> </el-checkbox>\r\n <span style=\"cursor: pointer\">{{ item.name }}</span>\r\n <el-button @click=\"multiple(item.path)\" type=\"text\">请选择</el-button>\r\n <span class=\"text-color\" v-for=\"i in item.value\" :key=\"i.key\">{{ i.name | filterImgName }}</span>\r\n </p>\r\n </div>\r\n </section>\r\n </div>\r\n <div v-show=\"active === 1\" class=\"all-message\">\r\n <el-row class=\"filters\">\r\n <el-col :span=\"7\" style=\"width: 268px\">\r\n <el-input\r\n placeholder=\"输入设备名称、设备本地编码、数字化交付编码进行查询\"\r\n v-model=\"keycode\"\r\n @clear=\"inputMsg\"\r\n clearable\r\n @keyup.enter.native=\"inputMsg\"\r\n >\r\n <i slot=\"suffix\" class=\"el-input__icon el-icon-search\" @click=\"inputMsg\"></i>\r\n </el-input>\r\n </el-col>\r\n <el-col :span=\"8.5\" style=\"padding: 0 0\">\r\n <floor-cascader ref=\"buildFloor\" @change=\"changeFloor\" style=\"margin-left: 15px\"></floor-cascader>\r\n </el-col>\r\n </el-row>\r\n <el-table\r\n ref=\"multipleTable\"\r\n :data=\"tableData\"\r\n height=\"460\"\r\n tooltip-effect=\"dark\"\r\n style=\"width: 100%; margin-bottom: 10px\"\r\n @selection-change=\"handleSelectionChange\"\r\n >\r\n <el-table-column type=\"selection\" width=\"55\" />\r\n <el-table-column label=\"设备本地名称\">\r\n <template slot-scope=\"scope\">{{ scope.row.localName }}</template>\r\n </el-table-column>\r\n <el-table-column prop=\"localId\" label=\"设备本地编码\" />\r\n <el-table-column :label=\"`数字化交付编码`\" show-overflow-tooltip>\r\n <template slot-scope=\"scope\">\r\n <div>{{ scope.row.infos ? (scope.row.infos.digitalDeliveryID ? scope.row.infos.digitalDeliveryID : \"\") : \"\" }}</div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"build\" label=\"所属建筑楼层\" show-overflow-tooltip />\r\n </el-table>\r\n <my-pagination @change=\"getAllData\" :page=\"page\"></my-pagination>\r\n </div>\r\n <div slot=\"footer\" class=\"dialog-footer\">\r\n <el-button v-show=\"active === 0\" class=\"next-step\" @click=\"next\">下一步 </el-button>\r\n <el-button v-show=\"active === 1\" @click=\"active = 0\" style=\"margin-right: 10px\">上 一 步 </el-button>\r\n <el-button v-show=\"active === 1\" type=\"primary\" :loading=\"loading\" @click=\"maintenanceSelect\">维护已选 </el-button>\r\n </div>\r\n </el-dialog>\r\n</template>\r\n\r\n<script>\r\nimport myPagination from \"@/components/old-adm/ledger/components/lib/myPagination\";\r\nimport floorCascader from \"@/components/old-adm/ledger/components/lib/floorCascader\";\r\n// import { queryUpdate, updateEquip } from \"@/api/scan/request\";\r\n// import { queryEquip } from \"@/api/object/equip\";\r\nimport ScanController from \"@/controller/old-adm/ScanController\";\r\nimport EquipController from \"@/controller/old-adm/equipController\";\r\nimport { toolUtils } from \"@/utils/toolUtils\";\r\nimport scanTools from \"@/utils/old-adm/scan/tools\";\r\n\r\nexport default {\r\n name: \"batchDialog\",\r\n props: [\"mess\", \"tableHeader\", \"information\", \"newEnclosure\"],\r\n components: { myPagination, floorCascader },\r\n data() {\r\n return {\r\n formData: {},\r\n form: {},\r\n batchDialog: false, //dialog\r\n loading: false, //批量维护加载状态\r\n active: 0, //进度条\r\n radio: 1, //1增加,2覆盖\r\n checkedFile: [], //多项\r\n multipleSelection: [], //checkbox选择的对象数组\r\n allObject: [], //设备数据\r\n deviceList: [], //过滤全选数据\r\n keycode: \"\", // 设备检索关键字\r\n Buildfloor: [\"all\"], //建筑楼层\r\n page: {\r\n size: 100,\r\n sizes: [100, 200, 500, 1000],\r\n total: 0,\r\n currentPage: 1,\r\n },\r\n videoModel: {\r\n archive: false,\r\n checkReport: false,\r\n drawing: false,\r\n installDrawing: false,\r\n insuranceFile: false,\r\n installPic: false,\r\n nameplate: false,\r\n pic: false,\r\n },\r\n };\r\n },\r\n watch: {\r\n information() {\r\n return this.information;\r\n },\r\n newEnclosure: {\r\n immediate: true,\r\n handler(val) {\r\n this.newEnclosure = val;\r\n },\r\n },\r\n batchDialog: {\r\n immediate: true,\r\n handler(val) {\r\n if (val) {\r\n this.active = 0;\r\n this.page.pageSize = 1;\r\n this.keycode = \"\";\r\n this.Buildfloor = [\"all\"];\r\n this.$nextTick(() => {\r\n this.$refs.buildFloor && this.$refs.buildFloor.setValue([\"all\"]);\r\n });\r\n this.getEquipData();\r\n }\r\n },\r\n },\r\n },\r\n created() {\r\n this.$forceUpdate();\r\n },\r\n computed: {\r\n tableData() {\r\n this.allObject.map((item) => {\r\n let build = \"\";\r\n if (item.building && item.floor) {\r\n build = item.building.localName + \" - \" + item.floor.localName;\r\n } else if (item.building) {\r\n build = item.building.localName;\r\n } else if (item.floor) {\r\n build = item.floor.localName;\r\n } else {\r\n build = \"-\";\r\n }\r\n item.build = build;\r\n return item;\r\n });\r\n return this.allObject;\r\n },\r\n },\r\n filters: {\r\n filterImgName(value) {\r\n if (value && value.length > 16) {\r\n return value.substring(0, 12) + \"...\";\r\n } else {\r\n return value;\r\n }\r\n },\r\n filterImgNames(value) {\r\n if (value && value.length > 16) {\r\n return value.substring(0, 16) + \"...\";\r\n } else {\r\n return value;\r\n }\r\n },\r\n },\r\n methods: {\r\n /**\r\n * 格式化下拉数据\r\n */\r\n formatDataSource(dataSource) {\r\n return dataSource ? scanTools.formatDataSource(dataSource) : [];\r\n },\r\n next() {\r\n //下一步按钮\r\n let flag = false; // formData的值是否维护\r\n Object.keys(this.formData).forEach((key) => {\r\n if (this.formData[key].length) {\r\n flag = true;\r\n }\r\n });\r\n if (!flag && !Object.keys(this.form).length) {\r\n this.$message({\r\n message: \"请维护信息后再操作!\",\r\n type: \"warning\",\r\n });\r\n return false;\r\n }\r\n this.active++;\r\n },\r\n /**\r\n * 获取设备信息\r\n */\r\n getEquipData() {\r\n if (!!this.mess.deviceId) {\r\n // 查询step2\r\n let params = {\r\n cascade: [\r\n {\r\n name: \"property\",\r\n },\r\n {\r\n Name: \"building\",\r\n Projection: [\"localName\", \"name\", \"id\"],\r\n },\r\n {\r\n Name: \"floor\",\r\n Projection: [\"localName\", \"name\", \"id\"],\r\n },\r\n ],\r\n filters: `classCode='${this.mess.deviceId}'`,\r\n pageSize: this.page.size,\r\n orders: \"createTime desc, id desc\",\r\n pageNumber: this.page.currentPage,\r\n projection: [\"buildingId\", \"floorId\", \"classCode\", \"localName\", \"localID\", \"id\", \"bimId\"],\r\n };\r\n if (this.Buildfloor[0] == \"noKnow\") {\r\n params.filters += `;buildingId isNull`;\r\n } else if (this.Buildfloor[0] && this.Buildfloor[0] != \"all\") {\r\n params.filters += `;buildingId='${this.Buildfloor[0]}'`;\r\n }\r\n if (this.Buildfloor[1] == \"noKnow\") {\r\n params.filters += `;floorId isNull`;\r\n } else if (this.Buildfloor[1] && this.Buildfloor[1] != \"all\") {\r\n params.filters += `;floorId='${this.Buildfloor[1]}'`;\r\n }\r\n if (this.keycode != \"\") {\r\n params.filters += `;localName contain '${this.keycode}' or localId contain '${this.keycode}' or infos.digitalDeliveryID contain '${this.keycode}'`;\r\n }\r\n EquipController.queryEquip(params).then((res) => {\r\n this.multipleSelection = [];\r\n this.allObject = res.content;\r\n this.page.total = res.total;\r\n });\r\n }\r\n },\r\n /**\r\n * 检索关键字\r\n */\r\n inputMsg() {\r\n this.page.pageNumber = 1;\r\n this.getEquipData();\r\n },\r\n /**\r\n * 切换建筑楼层\r\n */\r\n changeFloor(value) {\r\n this.Buildfloor = value;\r\n this.page.pageNumber = 1;\r\n this.getEquipData();\r\n },\r\n maintenanceSelect() {\r\n //维护已选\r\n if (!this.multipleSelection.length) {\r\n this.$message({\r\n message: \"还没有选择实例哦\",\r\n type: \"warning\",\r\n });\r\n return false;\r\n }\r\n\r\n let arr = [];\r\n this.multipleSelection.forEach((item) => {\r\n let id = item.id;\r\n arr.push({ id });\r\n });\r\n\r\n // let single = {};\r\n let param = {};\r\n this.newEnclosure.forEach(({ path, value }) => (param[path] = value));\r\n let newValuable = [];\r\n this.newEnclosure.filter((i) => this.form[i.path] && i.value).forEach(({ code, value }) => (newValuable[code] = value));\r\n console.log(this.radio)\r\n if (this.radio === 1) {\r\n //组装数据,根据是覆盖该是增量,1是增量\r\n // 1:单选数据\r\n let formData = toolUtils.formatData(this.formData);\r\n let arr1 = this.deepCopy(arr).map((item) => ({\r\n ...item,\r\n ...formData,\r\n }));\r\n // 附件数据\r\n let arr2 = this.deepCopy(arr).map((item) => ({\r\n ...item,\r\n ...newValuable,\r\n }));\r\n this.upDataDevice(1, arr1, arr2);\r\n } else if (this.radio === 2) {\r\n let param = {};\r\n this.newEnclosure.forEach(({ path, value }) => (param[path] = value));\r\n let pa = Object.assign(param, this.formData);\r\n pa = toolUtils.formatData(pa);\r\n let arr3 = this.deepCopy(arr).map((item) => ({\r\n ...item,\r\n ...pa,\r\n }));\r\n this.upDataDevice(2, arr3);\r\n } else {\r\n this.closeDialog();\r\n }\r\n },\r\n upDataDevice(type, data1, data2) {\r\n this.loading = true;\r\n let param = { content: data1 };\r\n let param1 = { content: data2 };\r\n if (type === 1) {\r\n //增量\r\n let filterParam = this.filterCheck(param, \"sole\");\r\n let filterParam1 = this.filterCheck(param1, \"multiple\");\r\n if (filterParam) {\r\n ScanController.updateEquip(param).then((res) => {\r\n if (res.result === \"success\") {\r\n this.loading = false;\r\n this.$emit(\"upDataDevice\");\r\n } else {\r\n this.$message.error(res.message);\r\n }\r\n this.closeDialog();\r\n });\r\n }\r\n if (filterParam1) {\r\n param1.content.map((i) => {\r\n i.equipId = i.id;\r\n delete i.id;\r\n return i;\r\n });\r\n setTimeout(() => {\r\n ScanController.queryUpdate(param1).then((res) => {\r\n if (res.result === \"success\") {\r\n this.loading = false;\r\n this.$emit(\"upDataDevice\");\r\n } else {\r\n this.$message.error(res.message);\r\n }\r\n this.closeDialog();\r\n });\r\n });\r\n }\r\n if (!filterParam && !filterParam1) {\r\n this.loading = false;\r\n this.closeDialog();\r\n }\r\n } else if (type === 2) {\r\n //覆盖\r\n let filterParams = this.filterCheck(param, \"sole\");\r\n if (filterParams) {\r\n ScanController.updateEquip(param).then((res) => {\r\n if (res.result === \"success\") {\r\n this.loading = false;\r\n this.$emit(\"upDataDevice\");\r\n } else {\r\n this.$message.error(res.message);\r\n }\r\n this.closeDialog();\r\n });\r\n } else {\r\n this.loading = false;\r\n this.closeDialog();\r\n }\r\n }\r\n },\r\n filterCheck(arr, type) {\r\n if (type === \"sole\") {\r\n for (let i of arr.content) {\r\n for (let j in i.infos) {\r\n if (Array.isArray(i.infos[j]) && i.infos[j].length < 1) {\r\n delete i.infos[j];\r\n }\r\n }\r\n return Object.keys(i.infos).length;\r\n }\r\n } else if (type === \"multiple\") {\r\n let nArr = [];\r\n arr.content.forEach((i) => {\r\n let { id, ...value } = i;\r\n nArr.push({ infos: value });\r\n });\r\n for (let j of nArr) {\r\n return Object.keys(j.infos).length;\r\n }\r\n }\r\n },\r\n closeDialog() {\r\n //关闭弹窗,返回初始状态\r\n this.batchDialog = false;\r\n this.clearData();\r\n },\r\n clearData() {\r\n this.active = 0;\r\n this.radio = 1; //返回到默认增量\r\n // 清空formData数据\r\n this.formData = {};\r\n //清空附件信息\r\n for (let i in this.form) {\r\n this.form[i] = false;\r\n }\r\n this.newEnclosure.map((i) => {\r\n this.$set(i, \"value\", []);\r\n });\r\n },\r\n handleSelectionChange(val) {\r\n this.multipleSelection = val;\r\n },\r\n getAllData() {\r\n this.getEquipData();\r\n },\r\n multiple(val) {\r\n this.$emit(\"multiples\", val);\r\n },\r\n\r\n deepCopy(obj) {\r\n return JSON.parse(JSON.stringify(obj));\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.batchContainer {\r\n /deep/ .el-dialog__body {\r\n padding-top: 10px;\r\n }\r\n\r\n /deep/ .FloorTypeSelect .el-form-item__content {\r\n width: 200px;\r\n }\r\n /deep/ .el-table-column--selection .cell {\r\n padding: 0;\r\n }\r\n\r\n /deep/ .el-step__description {\r\n margin: 2% 0;\r\n }\r\n\r\n .text-color {\r\n color: #409eff;\r\n }\r\n\r\n .el-checkbox-group {\r\n display: flex;\r\n justify-content: space-between;\r\n flex-direction: row;\r\n flex-wrap: wrap;\r\n\r\n .el-checkbox {\r\n width: 43%;\r\n }\r\n\r\n .el-checkbox:last-of-type {\r\n margin-right: 30px;\r\n }\r\n }\r\n\r\n .next-step {\r\n display: block;\r\n float: right;\r\n }\r\n\r\n .filters {\r\n margin: 10px 0;\r\n }\r\n\r\n .checkbox {\r\n display: flex;\r\n justify-content: space-between;\r\n flex-direction: row;\r\n flex-wrap: wrap;\r\n\r\n p {\r\n width: 50%;\r\n }\r\n\r\n .el-checkbox:last-of-type {\r\n margin-right: 10px;\r\n }\r\n }\r\n\r\n .text-message {\r\n overflow: hidden;\r\n margin-top: 10px;\r\n color: #333;\r\n border-left: 8px solid #333;\r\n text-indent: 10px;\r\n font-weight: 600;\r\n }\r\n\r\n .small {\r\n font-size: 12px;\r\n color: #555;\r\n }\r\n .dialog-footer {\r\n height: 32px;\r\n }\r\n\r\n .all-message {\r\n overflow: hidden;\r\n\r\n button {\r\n float: right;\r\n padding: 10px;\r\n margin-left: 5px;\r\n }\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./batchDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./batchDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./batchDialog.vue?vue&type=template&id=16068254&scoped=true&\"\nimport script from \"./batchDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./batchDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./batchDialog.vue?vue&type=style&index=0&id=16068254&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"16068254\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"title\":\"所属系统实例\",\"visible\":_vm.dialog.systemType,\"width\":\"900px\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.dialog, \"systemType\", $event)}}},[_c('div',[_c('div',{attrs:{\"id\":\"systemType\"}},[(_vm.type != 'read')?_c('div',{staticClass:\"title-search query-form\",staticStyle:{\"padding\":\"10px\",\"margin-bottom\":\"10px\"}},[_c('el-row',[_c('el-col',{attrs:{\"span\":10}},[_c('span',[_vm._v(\"系统所属建筑\")]),_c('el-select',{attrs:{\"placeholder\":\"请选择\"},on:{\"change\":_vm.getTableData},model:{value:(_vm.buildId),callback:function ($$v) {_vm.buildId=$$v},expression:\"buildId\"}},_vm._l((_vm.options),function(item){return _c('el-option',{key:item.id,attrs:{\"label\":item.localName,\"value\":item.id}})}),1)],1),_c('el-col',{attrs:{\"span\":14}},[_c('el-input',{staticStyle:{\"width\":\"300px\",\"margin-right\":\"10px\"},attrs:{\"placeholder\":\"输入名称或编码进行查询\",\"size\":\"small\",\"clearable\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}}),_c('el-button',{attrs:{\"size\":\"small\"},on:{\"click\":_vm.getTableData}},[_vm._v(\"查找\")])],1)],1)],1):_vm._e(),_c('el-table',{ref:\"multipleTable\",staticClass:\"data-table\",staticStyle:{\"width\":\"100%\"},attrs:{\"border\":\"\",\"row-key\":\"id\",\"data\":_vm.tableData},on:{\"selection-change\":_vm.handleSelectionChange}},[(_vm.type != 'read')?_c('el-table-column',{attrs:{\"type\":\"selection\",\"reserve-selection\":true,\"disabled\":true,\"width\":\"55\"}}):_vm._e(),_c('el-table-column',{attrs:{\"label\":\"系统名称\",\"header-align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(scope.row.localName || scope.row.name))]}}])}),_c('el-table-column',{attrs:{\"label\":\"本地编码\",\"header-align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(scope.row.localId || \"--\"))]}}])}),_c('el-table-column',{attrs:{\"label\":\"系统类型\",\"prop\":\"categoryName\",\"header-align\":\"center\"}}),_c('el-table-column',{attrs:{\"label\":\"详情\",\"header-align\":\"center\",\"width\":\"100\",\"align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"type\":\"text\"},on:{\"click\":function($event){return _vm.lookDeatils(scope.row)}}},[_vm._v(\"详情\")])]}}])})],1)],1)]),(_vm.type != 'read')?_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.getChange}},[_vm._v(\"确 定\")])],1):_vm._e(),(_vm.iframeShow)?_c('el-dialog',{attrs:{\"title\":\"系统详情\",\"visible\":_vm.iframeShow,\"width\":\"500px\",\"append-to-body\":\"\"},on:{\"update:visible\":function($event){_vm.iframeShow=$event}}},[_c('iframe',{staticStyle:{\"width\":\"100%\",\"height\":\"500px\"},attrs:{\"id\":\"google_ads_frame2\",\"name\":\"google_ads_frame2\",\"frameborder\":\"0\",\"src\":_vm.iframeSrc,\"marginwidth\":\"0\",\"marginheight\":\"0\",\"vspace\":\"0\",\"hspace\":\"0\",\"allowtransparency\":\"true\",\"scrolling\":\"no\",\"allowfullscreen\":\"true\"}})]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\r\n systemType 设备所属类型\r\n-->\r\n<template>\r\n <el-dialog title=\"所属系统实例\" :visible.sync=\"dialog.systemType\" width=\"900px\">\r\n <div>\r\n <div id=\"systemType\">\r\n <div class=\"title-search query-form\" style=\"padding: 10px; margin-bottom: 10px\" v-if=\"type != 'read'\">\r\n <el-row>\r\n <el-col :span=\"10\">\r\n <span>系统所属建筑</span>\r\n <el-select v-model=\"buildId\" placeholder=\"请选择\" @change=\"getTableData\">\r\n <el-option v-for=\"item in options\" :key=\"item.id\" :label=\"item.localName\" :value=\"item.id\"> </el-option>\r\n </el-select>\r\n </el-col>\r\n <el-col :span=\"14\">\r\n <el-input\r\n placeholder=\"输入名称或编码进行查询\"\r\n v-model=\"search\"\r\n size=\"small\"\r\n style=\"width: 300px; margin-right: 10px\"\r\n clearable\r\n ></el-input>\r\n <el-button size=\"small\" @click=\"getTableData\">查找</el-button>\r\n </el-col>\r\n </el-row>\r\n </div>\r\n <el-table\r\n class=\"data-table\"\r\n border\r\n row-key=\"id\"\r\n :data=\"tableData\"\r\n @selection-change=\"handleSelectionChange\"\r\n style=\"width: 100%\"\r\n ref=\"multipleTable\"\r\n >\r\n <el-table-column v-if=\"type != 'read'\" type=\"selection\" :reserve-selection=\"true\" :disabled=\"true\" width=\"55\"></el-table-column>\r\n <el-table-column label=\"系统名称\" header-align=\"center\">\r\n <template slot-scope=\"scope\">{{ scope.row.localName || scope.row.name }}</template>\r\n </el-table-column>\r\n <el-table-column label=\"本地编码\" header-align=\"center\">\r\n <template slot-scope=\"scope\">{{ scope.row.localId || \"--\" }}</template>\r\n </el-table-column>\r\n <el-table-column label=\"系统类型\" prop=\"categoryName\" header-align=\"center\"></el-table-column>\r\n <el-table-column label=\"详情\" header-align=\"center\" width=\"100\" align=\"center\">\r\n <template slot-scope=\"scope\">\r\n <el-button @click=\"lookDeatils(scope.row)\" type=\"text\">详情</el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n </div>\r\n </div>\r\n <span slot=\"footer\" class=\"dialog-footer\" v-if=\"type != 'read'\">\r\n <el-button type=\"primary\" @click=\"getChange\">确 定</el-button>\r\n </span>\r\n <el-dialog title=\"系统详情\" :visible.sync=\"iframeShow\" v-if=\"iframeShow\" width=\"500px\" append-to-body>\r\n <iframe\r\n id=\"google_ads_frame2\"\r\n name=\"google_ads_frame2\"\r\n frameborder=\"0\"\r\n :src=\"iframeSrc\"\r\n marginwidth=\"0\"\r\n marginheight=\"0\"\r\n vspace=\"0\"\r\n hspace=\"0\"\r\n style=\"width: 100%; height: 500px\"\r\n allowtransparency=\"true\"\r\n scrolling=\"no\"\r\n allowfullscreen=\"true\"\r\n ></iframe>\r\n </el-dialog>\r\n </el-dialog>\r\n</template>\r\n<script>\r\nimport myPagination from \"@/components/old-adm/ledger/components/lib/myPagination\";\r\n// import { querySysLinkBuild, buildingQuery, equipLinkSys } from \"@/api/scan/request\"\r\nimport ScanController from \"@/controller/old-adm/ScanController\";\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n components: {\r\n myPagination\r\n },\r\n props: {\r\n dialog: {\r\n type: Object,\r\n default: function () {\r\n return {\r\n systemType: true\r\n };\r\n }\r\n },\r\n graphyId: {\r\n type: String,\r\n default: \"\"\r\n },\r\n device: {},\r\n curDevice: {\r\n default: ''\r\n },//设备id\r\n type: {\r\n type: String,\r\n default: \"read\"\r\n },\r\n list: {\r\n type: [Array]\r\n }\r\n },\r\n data() {\r\n return {\r\n search: \"\", //搜索文案\r\n tableData: [],\r\n systemList: [],\r\n linkSystemData: [],\r\n multipleSelection: [],\r\n iframeSrc: \"\",\r\n iframeShow: false,\r\n buildId: 'all', //查询条件\r\n options: [], //系统所属建筑\r\n };\r\n },\r\n computed: {\r\n ...mapGetters(\"layout\", [\"projectId\", \"secret\", \"userId\"])\r\n },\r\n mounted() {\r\n },\r\n methods: {\r\n //获取查询条件-建筑\r\n getData() {\r\n let param = {\r\n orders: \"localName asc\",\r\n pageNumber: 1,\r\n pageSize: 1000\r\n }\r\n ScanController.buildingQuery(param, res => {\r\n if (res.result == 'success') {\r\n let data = res.content;\r\n data.unshift({\r\n id: \"all\",\r\n localName: \"全部\"\r\n }, {\r\n id: \"noKnow\",\r\n localName: \"未明确建筑的系统\"\r\n })\r\n this.options = data\r\n } else {\r\n this.$message.error(res.message)\r\n }\r\n })\r\n },\r\n handleSelectionChange(val) {\r\n this.multipleSelection = val;\r\n },\r\n //设置默认\r\n toggleSelection(rows) {\r\n if (this.$refs.multipleTable) {\r\n this.$refs.multipleTable.clearSelection();\r\n }\r\n if (rows.length && this.list.length) {\r\n rows.map(row => {\r\n this.list.map(t => {\r\n if (row.id == t.id) {\r\n this.$refs.multipleTable.toggleRowSelection(row)\r\n }\r\n })\r\n })\r\n }\r\n },\r\n //确认\r\n getChange() {\r\n this.createRelatSys()\r\n this.$emit(\"change\", this.multipleSelection)\r\n this.dialog.systemType = false\r\n this.multipleSelection = []\r\n },\r\n //点击详情\r\n lookDeatils(infos) {\r\n this.$message(\"开发中...\")\r\n },\r\n //根据设备类型-查询系统关联专业\r\n getTableData() {\r\n let param = {\r\n data: {\r\n filters: `classCode=\"${this.device.deviceId.substring(0, 4)}\"`,\r\n pageNumber: 1,\r\n pageSize: 1000\r\n }\r\n }\r\n //建筑id\r\n if (this.buildId === \"noKnow\") {\r\n param.buildingId = 1;\r\n } else if (this.buildId && this.buildId != \"all\") {\r\n param.buildingId = this.buildId;\r\n }\r\n //输入的查询条件\r\n if (this.search) {\r\n param.data.filters += `;localName contain \"${this.search}\" or localId contain \"${this.search}\"`\r\n }\r\n ScanController.querySysLinkBuild(param, res => {\r\n this.tableData = res.content\r\n this.toggleSelection(res.content)\r\n })\r\n },\r\n getSystemTableData() {\r\n const sysIdList = this.linkSystemData.map(sys => {\r\n return sys.id\r\n })\r\n if (sysIdList.length) {\r\n let param = {\r\n data: {\r\n filters: `id in ${JSON.stringify(sysIdList)}`,\r\n pageNumber: 1,\r\n pageSize: 1000\r\n }\r\n }\r\n ScanController.querySysLinkBuild(param, res => {\r\n this.tableData = res.content\r\n })\r\n } else {\r\n this.tableData = [];\r\n }\r\n },\r\n //获取关联的系统\r\n getLinkSystemData() {\r\n this.linkSystemData = this.list ? JSON.parse(JSON.stringify(this.list)) : []\r\n if (this.type == 'read') {\r\n this.getSystemTableData();\r\n }\r\n },\r\n //添加设备关联系统关系\r\n createRelatSys() {\r\n if (this.curDevice) {//有即为编辑\r\n let param = {\r\n equipId: this.curDevice,\r\n sysIdList: []\r\n }\r\n this.multipleSelection.map(t => {\r\n param.sysIdList.push(t.id)\r\n })\r\n ScanController.equipLinkSys(param, res => {\r\n this.multipleSelection = []\r\n })\r\n }\r\n }\r\n },\r\n watch: {\r\n dialog: {\r\n deep: true,\r\n handler() {\r\n if (this.dialog.systemType) {\r\n this.getData()\r\n this.tableData = [];\r\n if (this.type == 'read') {\r\n this.getLinkSystemData()\r\n } else {\r\n this.getLinkSystemData()\r\n this.getTableData()\r\n }\r\n }\r\n }\r\n },\r\n projectId() {\r\n this.buildId = 'all';\r\n this.options = [];\r\n this.getData()\r\n }\r\n }\r\n};\r\n</script>\r\n\r\n<style lang=\"less\">\r\n#systemType {\r\n height: 455px;\r\n overflow-y: auto;\r\n\r\n .el-table thead {\r\n tr {\r\n th {\r\n background-color: #f5f7fa;\r\n }\r\n }\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./systemType.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./systemType.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./systemType.vue?vue&type=template&id=32674c94&\"\nimport script from \"./systemType.vue?vue&type=script&lang=js&\"\nexport * from \"./systemType.vue?vue&type=script&lang=js&\"\nimport style0 from \"./systemType.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{staticClass:\"iframe\",attrs:{\"title\":_vm.title,\"append-to-body\":\"\",\"visible\":_vm.dialog.details,\"width\":\"500px\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.dialog, \"details\", $event)}}},[_c('iframe',{attrs:{\"id\":\"google_ads_frame2\",\"name\":\"google_ads_frame2\",\"frameborder\":\"0\",\"width\":\"100%\",\"height\":\"600px\",\"src\":_vm.iframeSrc,\"marginwidth\":\"0\",\"marginheight\":\"0\",\"vspace\":\"0\",\"hspace\":\"0\",\"allowtransparency\":\"true\",\"scrolling\":\"no\",\"allowfullscreen\":\"true\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <el-dialog\r\n :title=\"title\"\r\n append-to-body\r\n class=\"iframe\"\r\n :visible.sync=\"dialog.details\"\r\n width=\"500px\"\r\n >\r\n <iframe\r\n id=\"google_ads_frame2\"\r\n name=\"google_ads_frame2\"\r\n frameborder=\"0\"\r\n width=\"100%\"\r\n height=\"600px\"\r\n :src=\"iframeSrc\"\r\n marginwidth=\"0\"\r\n marginheight=\"0\"\r\n vspace=\"0\"\r\n hspace=\"0\"\r\n allowtransparency=\"true\"\r\n scrolling=\"no\"\r\n allowfullscreen=\"true\"\r\n ></iframe>\r\n </el-dialog>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n props: {\r\n iframeSrc: {\r\n type: String,\r\n default: \"\"\r\n },\r\n title: {\r\n type: String,\r\n default: \"详情\"\r\n },\r\n dialog: {\r\n type: Object,\r\n default: function () {\r\n return {\r\n details: false\r\n }\r\n }\r\n },\r\n setData: {\r\n type: [Array, String],\r\n default: function () {\r\n return []\r\n }\r\n }\r\n },\r\n methods: {\r\n setMess() {\r\n this.$nextTick(_ => {\r\n let iframe = document.getElementById(\"google_ads_frame2\")\r\n iframe.onload = () => {\r\n iframe.contentWindow.postMessage(this.setData, \"*\")\r\n }\r\n })\r\n }\r\n },\r\n watch: {\r\n dialog: {\r\n deep: true,\r\n handler: function () {\r\n if (this.dialog.details) {\r\n this.setMess()\r\n }\r\n }\r\n }\r\n }\r\n}\r\n</script>\r\n<style scoped>\r\n#google_ads_frame2{\r\n height: 350px;\r\n overflow: auto;\r\n}\r\n</style>\r\n\r\n\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./detailsDia.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./detailsDia.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./detailsDia.vue?vue&type=template&id=e9065004&scoped=true&\"\nimport script from \"./detailsDia.vue?vue&type=script&lang=js&\"\nexport * from \"./detailsDia.vue?vue&type=script&lang=js&\"\nimport style0 from \"./detailsDia.vue?vue&type=style&index=0&id=e9065004&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e9065004\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"title\":\"关联资产\",\"visible\":_vm.dialog.changeRea,\"width\":\"800px\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.dialog, \"changeRea\", $event)}}},[_c('div',[_c('div',{attrs:{\"id\":\"changeRea\"}},[_c('div',{staticClass:\"title-search\",staticStyle:{\"margin-bottom\":\"10px\"}},[_c('floor-cascader',{on:{\"change\":_vm.changeFloor}}),_c('el-input',{staticStyle:{\"width\":\"250px\",\"marginLeft\":\"30px\"},attrs:{\"placeholder\":\"输入本地名称或本地编码查询\",\"size\":\"small\",\"clearable\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}}),_c('el-button',{attrs:{\"size\":\"small\"},on:{\"click\":_vm.getPropertyData}},[_vm._v(\"查找\")])],1),_c('el-radio-group',{staticStyle:{\"width\":\"100%\"},model:{value:(_vm.radio),callback:function ($$v) {_vm.radio=$$v},expression:\"radio\"}},[_c('el-table',{staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.tableData,\"height\":\"300px\"}},[_c('el-table-column',{attrs:{\"label\":\"资产名称\",\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-radio',{ref:scope.row.id,attrs:{\"label\":scope.row.id,\"value\":scope.row.localName || scope.row.name}},[_vm._v(\" \"+_vm._s(scope.row.localName)+\" \")])]}}])}),_c('el-table-column',{attrs:{\"label\":\"本地编码\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(scope.row.localId))]}}])}),_c('el-table-column',{attrs:{\"prop\":\"name\",\"label\":\"所在楼层\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\" \"+_vm._s(scope.row.building ? scope.row.building.localName ? scope.row.building.localName : '' : '')+\"-\"+_vm._s(scope.row.floor ? scope.row.floor.localName ? scope.row.floor.localName : '' : '')+\" \")]}}])}),_c('el-table-column',{attrs:{\"label\":\"设备族\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\" \"+_vm._s(scope.row.equipFamilyList[0].familyName)+\" \")]}}])}),_c('el-table-column',{attrs:{\"label\":\"安装位置\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\" \"+_vm._s(scope.row.infos ? scope.row.infos.installLocation ? scope.row.infos.installLocation : \"--\" : \"--\")+\" \")]}}])})],1)],1),_c('my-pagination',{staticStyle:{\"margin-top\":\"10px\"},attrs:{\"page\":_vm.page},on:{\"change\":_vm.changed}}),_c('div',{staticClass:\"footer\"},[_c('el-button',{staticStyle:{\"display\":\"block\",\"margin\":\"10px auto 0\"},attrs:{\"type\":\"primary\"},on:{\"click\":_vm.clickTrue}},[_vm._v(\"确 定\")])],1)],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\r\n changeRea 厂商\r\n-->\r\n<template>\r\n <el-dialog title=\"关联资产\" :visible.sync=\"dialog.changeRea\" width=\"800px\">\r\n <div>\r\n <div id=\"changeRea\">\r\n <div class=\"title-search\" style=\"margin-bottom: 10px;\">\r\n <floor-cascader @change=\"changeFloor\"></floor-cascader>\r\n <el-input placeholder=\"输入本地名称或本地编码查询\" v-model=\"search\" size=\"small\" style=\"width:250px;marginLeft:30px;\"\r\n clearable></el-input>\r\n <el-button @click=\"getPropertyData\" size=\"small\">查找</el-button>\r\n </div>\r\n <!-- <div>\r\n <floor-cascader @change=\"changeFloor\"></floor-cascader>\r\n </div> -->\r\n <el-radio-group v-model=\"radio\" style=\"width:100%;\">\r\n <el-table :data=\"tableData\" style=\"width: 100%\" height=\"300px\">\r\n <el-table-column label=\"资产名称\" show-overflow-tooltip>\r\n <template slot-scope=\"scope\">\r\n <el-radio :label=\"scope.row.id\" :ref=\"scope.row.id\" :value=\"scope.row.localName || scope.row.name\">\r\n {{ scope.row.localName }}\r\n </el-radio>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"本地编码\">\r\n <template slot-scope=\"scope\">{{ scope.row.localId }}</template>\r\n </el-table-column>\r\n <el-table-column prop=\"name\" label=\"所在楼层\">\r\n <template slot-scope=\"scope\">\r\n {{\r\n scope.row.building ? scope.row.building.localName ? scope.row.building.localName : '' : ''\r\n }}-{{ scope.row.floor ? scope.row.floor.localName ? scope.row.floor.localName : '' : '' }}\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"设备族\">\r\n <template slot-scope=\"scope\">\r\n {{ scope.row.equipFamilyList[0].familyName }}\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"安装位置\">\r\n <template slot-scope=\"scope\">\r\n {{ scope.row.infos ? scope.row.infos.installLocation ? scope.row.infos.installLocation : \"--\" : \"--\" }}\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n </el-radio-group>\r\n <my-pagination :page=\"page\" @change=\"changed\" style=\"margin-top:10px;\"></my-pagination>\r\n <div class=\"footer\">\r\n <el-button type=\"primary\" @click=\"clickTrue\" style=\"display:block;margin: 10px auto 0;\">确 定</el-button>\r\n </div>\r\n </div>\r\n </div>\r\n </el-dialog>\r\n</template>\r\n<script>\r\nimport myPagination from \"@/components/old-adm/ledger/components/lib/myPagination\";\r\n// import { queryProperty } from \"@/api/scan/request\"\r\nimport ScanController from \"@/controller/old-adm/ScanController\";\r\nimport floorCascader from \"@/components/old-adm/ledger/components/lib/floorCascader\";\r\nimport { mapGetters, mapActions } from \"vuex\"\r\n\r\nexport default {\r\n components: {\r\n myPagination,\r\n floorCascader\r\n },\r\n props: {\r\n dialog: {\r\n type: Object,\r\n default: function () {\r\n return {\r\n changeRea: true\r\n };\r\n }\r\n },\r\n category: {\r\n type: Object,\r\n default: function () {\r\n return {}\r\n }\r\n }\r\n },\r\n data() {\r\n return {\r\n search: \"\", //搜索文案\r\n radio: \"\",\r\n tableData: [],\r\n page: {\r\n size: 50,\r\n sizes: [10, 30, 50, 100, 150, 200],\r\n total: 0,\r\n currentPage: 1\r\n },\r\n mess: {},\r\n codeListCode: [],\r\n };\r\n },\r\n computed: {\r\n ...mapGetters(\"layout\", [\"projectId\", \"secret\", \"userId\"])\r\n },\r\n mounted() {\r\n },\r\n methods: {\r\n //确认选择\r\n clickTrue() {\r\n if (this.radio) {\r\n this.$emit('changeProperty', { propertyId: this.radio, linkEquipLocalName: this.$refs[this.radio].value });\r\n this.dialog.changeRea = false;\r\n } else {\r\n this.$message(\"请先选择资产\")\r\n }\r\n },\r\n //所在建筑楼层修改\r\n changeFloor(val) {\r\n this.mess = {\r\n buildId: val[0] || \"\",\r\n floorId: val[1] || \"\"\r\n }\r\n this.getPropertyData()\r\n },\r\n //分页修改\r\n changed() {\r\n this.getPropertyData()\r\n },\r\n //弹窗显示时\r\n changePage() {\r\n this.page = {\r\n size: 50,\r\n sizes: [10, 30, 50, 100],\r\n total: 0,\r\n currentPage: 1\r\n }\r\n this.getPropertyData()\r\n },\r\n //查询表数据\r\n getPropertyData() {\r\n let param = {\r\n cascade: [\r\n {\r\n name: \"equipFamilyList\",\r\n projection: [\"family\", \"familyName\"]\r\n },\r\n {\r\n name: \"building\",\r\n projection: [\"localName\", \"name\", \"id\"]\r\n },\r\n {\r\n name: \"floor\",\r\n projection: [\"localName\", \"name\", \"id\"]\r\n }\r\n ],\r\n filters: `equipId isNull;family=\"${this.category.assetType}\"`,\r\n pageNumber: this.page.currentPage,\r\n pageSize: this.page.size\r\n }\r\n //建筑id\r\n if (this.mess.buildId == \"noKnow\") {\r\n param.filters += `;buildingId isNull`\r\n } else if (this.mess.buildId && this.mess.buildId != \"all\") {\r\n param.filters += `;buildingId='${this.mess.buildId}'`\r\n }\r\n //楼层id\r\n if (this.mess.floorId == \"noKnow\") {\r\n param.filters += `;floorId isNull`\r\n } else if (this.mess.floorId && this.mess.floorId != \"all\") {\r\n param.filters += `;floorId='${this.mess.floorId}'`\r\n }\r\n //名称和编码\r\n if (this.search) {\r\n param.filters += `;name contain '${this.search}' || localName contain '${this.search}' || localId contain '${this.search}'`\r\n }\r\n ScanController.queryProperty(param, res => {\r\n this.tableData = res.content\r\n this.page.total = res.total\r\n })\r\n }\r\n },\r\n watch: {\r\n dialog: {\r\n deep: true,\r\n handler: function () {\r\n if (this.dialog.changeRea) {\r\n this.changePage()\r\n this.radio = \"\"\r\n }\r\n }\r\n }\r\n }\r\n};\r\n</script>\r\n\r\n<style lang=\"less\">\r\n#changeRea {\r\n .el-table thead {\r\n tr {\r\n th {\r\n background-color: #f5f7fa;\r\n }\r\n }\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./changeRea.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./changeRea.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./changeRea.vue?vue&type=template&id=cc732eee&\"\nimport script from \"./changeRea.vue?vue&type=script&lang=js&\"\nexport * from \"./changeRea.vue?vue&type=script&lang=js&\"\nimport style0 from \"./changeRea.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.dialog.lookPic)?_c('el-dialog',{attrs:{\"title\":\"上传图片\",\"visible\":_vm.dialog.lookPic,\"width\":\"500px\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.dialog, \"lookPic\", $event)}}},[_c('div',{staticStyle:{\"max-height\":\"500px\",\"overflow-y\":\"auto\"}},[_c('el-tabs',{attrs:{\"type\":\"border-card\"}},[_c('el-tab-pane',[_c('span',{attrs:{\"slot\":\"label\"},slot:\"label\"},[_vm._v(\"图片\")]),_c('div',{staticStyle:{\"width\":\"500px\",\"max-height\":\"500px\"}},[(_vm.picArrs.length)?_c('div',[_c('iframe',{attrs:{\"id\":\"google_ads_frame3\",\"name\":\"google_ads_frame3\",\"frameborder\":\"0\",\"width\":\"100%\",\"height\":\"500px\",\"src\":_vm.iframeSrc,\"marginwidth\":\"0\",\"marginheight\":\"0\",\"vspace\":\"0\",\"hspace\":\"0\",\"allowtransparency\":\"true\",\"scrolling\":\"no\",\"allowfullscreen\":\"true\"}})]):_vm._e(),(!_vm.picArrs.length)?_c('div',[_vm._v(\"暂无图片\")]):_vm._e()])]),(_vm.videoArr.length)?_c('el-tab-pane',[_c('span',{attrs:{\"slot\":\"label\"},slot:\"label\"},[_vm._v(\"视频\")]),_c('div',{staticStyle:{\"width\":\"500px\"}},_vm._l((_vm.videoArr),function(item,index){return _c('div',{key:index,staticStyle:{\"width\":\"200px\",\"height\":\"200px\",\"float\":\"left\",\"margin\":\"5px\"}},[_c('video',{attrs:{\"width\":\"100%\",\"height\":\"100%\",\"src\":'/image-service/common/image_get?systemId=dataPlatform&key='+item.key,\"controls\":\"\",\"poster\":'/image-service/common/image_get?systemId=dataPlatform&key='+ item.key +'&width=200'}})])}),0)]):_vm._e()],1)],1)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\r\n 上传图片的弹窗\r\n-->\r\n\r\n<template>\r\n <el-dialog title=\"上传图片\" :visible.sync=\"dialog.lookPic\" v-if=\"dialog.lookPic\" width=\"500px\">\r\n <div style=\"max-height:500px;overflow-y:auto;\">\r\n <el-tabs type=\"border-card\">\r\n <el-tab-pane>\r\n <span slot=\"label\">图片</span>\r\n <div style=\"width:500px;max-height:500px;\">\r\n <div v-if=\"picArrs.length\">\r\n <iframe\r\n id=\"google_ads_frame3\"\r\n name=\"google_ads_frame3\"\r\n frameborder=\"0\"\r\n width=\"100%\"\r\n height=\"500px\"\r\n :src=\"iframeSrc\"\r\n marginwidth=\"0\"\r\n marginheight=\"0\"\r\n vspace=\"0\"\r\n hspace=\"0\"\r\n allowtransparency=\"true\"\r\n scrolling=\"no\"\r\n allowfullscreen=\"true\"\r\n ></iframe>\r\n </div>\r\n <div v-if=\"!picArrs.length\">暂无图片</div>\r\n </div>\r\n </el-tab-pane>\r\n <el-tab-pane v-if=\"videoArr.length\">\r\n <span slot=\"label\">视频</span>\r\n <div style=\"width:500px;\">\r\n <div\r\n v-for=\" (item,index) in videoArr \"\r\n style=\"width:200px;height:200px;float:left;margin: 5px;\"\r\n :key=\"index\"\r\n >\r\n <video\r\n width=\"100%\"\r\n height=\"100%\"\r\n :src=\"\r\n '/image-service/common/image_get?systemId=dataPlatform&key='+item.key\"\r\n controls\r\n :poster=\"'/image-service/common/image_get?systemId=dataPlatform&key='+ item.key +'&width=200'\"\r\n ></video>\r\n </div>\r\n </div>\r\n </el-tab-pane>\r\n </el-tabs>\r\n </div>\r\n </el-dialog>\r\n</template>\r\n<script>\r\n import uploadImgs from \"@/components/old-adm/ledger/components/lib/uploadImgsName\";\r\n\r\n export default {\r\n components: {\r\n uploadImgs\r\n },\r\n props: {\r\n dialog: {\r\n type: Object,\r\n default: function () {\r\n return {\r\n lookPic: true\r\n };\r\n }\r\n },\r\n keysArr: {\r\n type: Array,\r\n default: function () {\r\n return []\r\n }\r\n },\r\n read: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data() {\r\n return {\r\n picArrs: [],\r\n panoramaArr: [],\r\n videoArr: [],\r\n videoPicArr: [],\r\n changeKeys: [],\r\n iframeSrc: \"\"\r\n };\r\n },\r\n created() { },\r\n mounted() { },\r\n methods: {\r\n imageItem(images) {\r\n this.picArrs = images\r\n this.change()\r\n },\r\n\r\n panoramaItem(images) {\r\n this.panoramaArr = images\r\n this.change()\r\n },\r\n\r\n videoItem(videos, pe, pics) {\r\n this.videoArr = videos\r\n this.videoPicArr = pics\r\n this.change()\r\n },\r\n\r\n change() {\r\n // let picsArr = this.getArr(this.picArrs, \"设备图片\", \"image\")\r\n // let videos = this.getArr(this.videoArr, \"视频\", \"video\")\r\n // let videoPics = this.getArr(this.videoPicArr, \"视频资料\", \"image_video\")\r\n // let panoramas = this.getArr(this.panoramaArr, \"全景照片\", \"panorama\")\r\n let picsArr = this.picArrs\r\n let videos = this.videoArr\r\n let videoPics = this.videoPicArr\r\n let panoramas = this.panoramaArr\r\n this.changeKeys = picsArr.concat(videos).concat(videoPics).concat(panoramas)\r\n console.log(this.changeKeys)\r\n this.$emit(\"change\", this.changeKeys)\r\n },\r\n\r\n getArr(arr, name, type) {\r\n return arr.map(item => {\r\n return { \"systemId\": \"dataPlatform\", \"name\": name, \"type\": type, \"key\": item }\r\n })\r\n },\r\n\r\n //将父组件传来的数据进行分组\r\n fatherTochild() {\r\n this.panoramaArr = []\r\n this.videoArr = []\r\n this.videoPicArr = []\r\n this.picArrs = []\r\n if (this.keysArr instanceof Array) {\r\n this.keysArr.map(item => {\r\n if (item.type == 'panorama') {\r\n this.panoramaArr.push(item)\r\n } else if (item.type == \"video\") {\r\n this.videoArr.push(item)\r\n } else if (item.type == 'image_video') {\r\n this.videoPicArr.push(item)\r\n } else {\r\n this.picArrs.push(item)\r\n }\r\n })\r\n } else {\r\n this.panoramaArr = []\r\n this.videoArr = []\r\n this.videoPicArr = []\r\n this.picArrs = []\r\n }\r\n if (this.picArrs.length) {\r\n this.$nextTick(_ => {\r\n this.iframeSrc = \r\n window.__systemConf.BASE_URL +\r\n // process.env.BASE_URL + \r\n \":8890/photo-View.html\"\r\n // this.iframeSrc = process.env.BASE_URL + \"/photo-View.html\"\r\n let iframe = document.getElementById(\"google_ads_frame3\")\r\n console.log(iframe)\r\n iframe.onload = () => {\r\n console.log(\"onload\")\r\n let arr = this.picArrs.map(i => ({\r\n key: i.Key,\r\n name: i.Name,\r\n type: i.Type\r\n }))\r\n iframe.contentWindow.postMessage(arr, \"*\")\r\n }\r\n })\r\n }\r\n }\r\n },\r\n watch: {\r\n dialog: {\r\n deep: true,\r\n handler: function () {\r\n if (this.dialog.lookPic) {\r\n this.fatherTochild()\r\n }\r\n }\r\n }\r\n }\r\n};\r\n</script>\r\n<style>\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./lookImages.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./lookImages.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./lookImages.vue?vue&type=template&id=47a42cf6&\"\nimport script from \"./lookImages.vue?vue&type=script&lang=js&\"\nexport * from \"./lookImages.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\r\n <div style=\"height: calc(100% - 44.5px); padding: 0px 10px 10px; box-sizing: border-box\" v-loading=\"loading\">\r\n <div class=\"hanson-bar\">\r\n <div style=\"float: right; overflow: hidden\">\r\n <el-checkbox v-model=\"isShowDelivered\" @change=\"getHeaderData(mess)\">显示有值信息点</el-checkbox>\r\n <span style=\"margin-left: 10px\">当前筛选条件下共{{ page.total || \"--\" }}设备</span>\r\n </div>\r\n <el-select v-model=\"onlyRead\" @change=\"getHeaderData(mess)\" style=\"width: 100px; margin-right: 8px; vertical-align: bottom\">\r\n <el-option v-for=\"item in options\" :key=\"item.value\" :label=\"item.label\" :value=\"item.value\"></el-option>\r\n </el-select>\r\n <el-select v-model=\"showType\" @change=\"handleChangeShowType\" style=\"width: 100px; margin-right: 8px; vertical-align: bottom\">\r\n <el-option v-for=\"item in showTypes\" :key=\"item.value\" :label=\"item.label\" :value=\"item.value\"></el-option>\r\n </el-select>\r\n <!-- <el-button size=\"small\" style='width: 80px;' @click=\"download\" icon=\"iconfont icon-xiazai\">下载</el-button> -->\r\n <el-select\r\n v-show=\"mess.deviceId\"\r\n v-model=\"showInfoList\"\r\n filterable\r\n clearable\r\n multiple\r\n collapse-tags\r\n @change=\"initTable\"\r\n style=\"width: 200px; margin-right: 8px; vertical-align: bottom\"\r\n placeholder=\"请选择信息点\"\r\n >\r\n <el-option v-for=\"item in headerOptions\" :key=\"item.code\" :label=\"item.name\" :value=\"item.code\"> </el-option>\r\n </el-select>\r\n <el-button size=\"small\" style=\"width: 80px\" @click=\"addDevice\">添加设备 </el-button>\r\n <el-button size=\"small\" @click=\"Batch\" v-show=\"!onlyRead\" :disabled=\"!(tableData && tableData.length)\">批量维护信息点 </el-button>\r\n <el-button size=\"small\" @click=\"handleBatchEquipPoint\" v-show=\"true\">批量维护设备位置</el-button>\r\n <el-button size=\"small\" style=\"width: 80px\" @click=\"reset\">刷新 </el-button>\r\n <el-button size=\"small\" style=\"width: 80px\" v-show=\"!onlyRead\" @click=\"undo\">撤销 </el-button>\r\n </div>\r\n <!-- 二维码弹窗 -->\r\n <qrcode :dialog=\"myDialog\" :qrcodeUrl=\"qrcodeUrl\" :addBody=\"true\" ref=\"qrcode\"></qrcode>\r\n <!-- bim坐标弹框 -->\r\n <bimDialog\r\n :dialog=\"myDialog\"\r\n :bimcodeobj=\"bimcodeobj\"\r\n @closeBIM=\"closeBIM\"\r\n :addBody=\"true\"\r\n ref=\"bimdialog\"\r\n :read=\"onlyRead ? true : false\"\r\n ></bimDialog>\r\n <!-- 上传文件-->\r\n <upload-files-dialog\r\n :read=\"onlyRead ? true : false\"\r\n ref=\"upload\"\r\n @changeFile=\"fileChange\"\r\n :keysArr=\"filesArr\"\r\n :firmDataType=\"firmDataType\"\r\n :information=\"information\"\r\n :infoType=\"infoType\"\r\n :dialog=\"myDialog\"\r\n />\r\n <!-- 上传图片-->\r\n <upload-img-dialog\r\n :read=\"onlyRead ? true : false\"\r\n @changeFile=\"imgChange\"\r\n :keysArr=\"imgsArr\"\r\n :dialog=\"myDialog\"\r\n :firmDataType=\"firmDataType\"\r\n :information=\"information\"\r\n :infoType=\"infoType\"\r\n />\r\n <pic-dialog\r\n :read=\"onlyRead ? true : false\"\r\n :dialog=\"myDialog\"\r\n :keysArr=\"picsArr\"\r\n @change=\"changePics\"\r\n :firmDataType=\"firmDataType\"\r\n :information=\"information\"\r\n :infoType=\"infoType\"\r\n />\r\n <div class=\"middle_sty\" style=\"height: 91%; text-align: center\" v-show=\"!mess.deviceId && (!tableData || !tableData.length)\">\r\n <p>\r\n <i class=\"icon-wushuju iconfont\"></i>\r\n 请选择设备类别\r\n </p>\r\n </div>\r\n\r\n <div class=\"center middle_sty\" style=\"height: 91%\" v-show=\"mess.deviceId && (!tableData || !tableData.length)\">\r\n <p>\r\n <i class=\"icon-wushuju iconfont\"></i>\r\n 暂无数据\r\n </p>\r\n </div>\r\n\r\n <div v-show=\"mess.deviceId && tableData && tableData.length\" id=\"handsontable\" ref=\"handsontable\"></div>\r\n <div v-show=\"mess.deviceId && tableData && tableData.length\" class=\"right\">\r\n <my-pagination @change=\"getTableData\" :page=\"page\" :key=\"pageKey\"></my-pagination>\r\n </div>\r\n <details-dialog :iframeSrc=\"iframeSrc\" v-if=\"myDialog.details\" :dialog=\"myDialog\"></details-dialog>\r\n <!-- 关联的系统 -->\r\n <system-type\r\n :device=\"mess\"\r\n :curDevice=\"curDevice\"\r\n :dialog=\"myDialog\"\r\n :type=\"onlyRead ? 'read' : 'edit'\"\r\n @change=\"changeSystemType\"\r\n :list=\"systemList\"\r\n ></system-type>\r\n <!-- 关联资产 -->\r\n <change-rea @changeProperty=\"changeProperty\" :dialog=\"myDialog\" :category=\"deviceType\"></change-rea>\r\n <!-- 多选枚举类型维护 -->\r\n <menum :dialog=\"myDialog\" :updateInfoData=\"updateInfoData\" :updateInput=\"updateInput\" @change=\"handleChangeMenum\"></menum>\r\n <look-pic :dialog=\"myDialog\" :keysArr=\"picsArr\"></look-pic>\r\n <!-- 不支持的输入方式 -->\r\n <el-dialog title=\"临时维护信息点\" :visible.sync=\"myDialog.update\" @close=\"handleCloseUpdate\" width=\"670px\">\r\n <el-row>\r\n 该信息点未定义对应组件,现在维护数据不确定后续是否可用。如确实需要维护,请点击\r\n <el-link @click=\"updateInputShow = true\" type=\"primary\" :underline=\"false\">继续维护 </el-link>\r\n 。\r\n </el-row>\r\n <el-row style=\"margin-top: 20px\" v-show=\"updateInputShow\">\r\n <el-input type=\"textarea\" :autosize=\"{ minRows: 4, maxRows: 8 }\" placeholder=\"请输入内容\" v-model=\"updateInput\"></el-input>\r\n </el-row>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"myDialog.update = false\">取 消</el-button>\r\n <el-button type=\"primary\" @click=\"handleClickUpdate\">确 认</el-button>\r\n </span>\r\n </el-dialog>\r\n <!-- 新增设备 -->\r\n <el-dialog title=\"确定新增设备的类型\" :visible.sync=\"myDialog.addDevice\" width=\"670px\">\r\n <el-row>\r\n <my-cascader ref=\"cascader\" @change=\"changeAddType\" :all=\"true\"></my-cascader>\r\n </el-row>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button type=\"primary\" @click=\"toAddDevice\">下 一 步</el-button>\r\n </span>\r\n </el-dialog>\r\n <!-- 维护信息弹窗-->\r\n <batchDialog\r\n ref=\"batchDialogs\"\r\n :mess=\"mess\"\r\n :information=\"information\"\r\n :newEnclosure=\"newEnclosure\"\r\n :tableHeader=\"tableHeader\"\r\n @multiples=\"multiples\"\r\n @upDataDevice=\"upDataDevice\"\r\n />\r\n </div>\r\n</template>\r\n<script>\r\nimport ScanController from \"@/controller/old-adm/ScanController\";\r\nimport EquipController from \"@/controller/old-adm/equipController\";\r\nimport DicController from \"@/controller/old-adm/dicController\";\r\n\r\nimport tools from \"@/utils/old-adm/scan/tools\";\r\nimport handsonUtils from \"@/utils/old-adm/hasontableUtils\";\r\nimport showTools from \"@/utils/old-adm/handsontable/notShow\";\r\nimport text from \"@/utils/old-adm/handsontable/mainText\";\r\nimport myCascader from \"@/components/old-adm/ledger/components/lib/cascader\";\r\nimport BuildController from \"@/controller/old-adm/buildController\";\r\nimport qrcode from \"@/components/old-adm/ledger/components/lib/qrcode\";\r\nimport bimDialog from \"@/components/old-adm/ledger/components/lib/bimDialog\";\r\nimport uploadFilesDialog from \"@/components/old-adm/dialogs/list/filesDialog\";\r\nimport uploadImgDialog from \"@/components/old-adm/dialogs/list/uploadImgDialog\";\r\nimport picDialog from \"@/components/old-adm/dialogs/list/picDialog\";\r\nimport menum from \"@/components/old-adm/dialogs/list/menum\";\r\nimport batchDialog from \"@/components/old-adm/dialogs/list/batchDialog\";\r\nimport systemType from \"@/components/old-adm/dialogs/list/systemType\";\r\nimport myPagination from \"@/components/old-adm/ledger/components/lib/myPagination\";\r\nimport detailsDialog from \"@/components/old-adm/ledger/components/lib/detailsDia\";\r\nimport changeRea from \"@/components/old-adm/dialogs/changeRea\";\r\nimport { mapGetters } from \"vuex\";\r\n//图片查看\r\nimport lookPic from \"@/components/old-adm/ledger/components/lib/lookImages\";\r\nimport Handsontable from \"handsontable-pro\";\r\nimport \"handsontable-pro/dist/handsontable.full.css\";\r\nimport lStorage from \"@/utils/old-adm/localStorage\";\r\nimport dataTypeMap from \"@/utils/old-adm/handsontable/dataTypeMap\";\r\n//下拉插件\r\n// import \"@/assets/js/chosen.jquery.min\";\r\n// import \"@/assets/js/handsontable-chosen-editor\";\r\n\r\nexport default {\r\n props: [\"myParam\"],\r\n components: {\r\n qrcode, //二维码页面\r\n uploadFilesDialog,\r\n uploadImgDialog,\r\n picDialog,\r\n myPagination,\r\n systemType,\r\n detailsDialog,\r\n changeRea,\r\n lookPic,\r\n myCascader,\r\n batchDialog,\r\n bimDialog,\r\n menum,\r\n },\r\n created() {\r\n BuildController.getData(this.buildFloorData);\r\n },\r\n activated() {\r\n if (!this.$route.meta.isBack) {\r\n this.onlyRead = false;\r\n this.isShowDelivered = false;\r\n this.showInfoList = [];\r\n this.showType = \"Visible\";\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(\"layout\", [\"projectId\", \"secret\", \"userId\", \"group_code\"]),\r\n showTypes() {\r\n return this.onlyRead\r\n ? [\r\n { value: \"Visible\", label: \"只看采集信息\" },\r\n { value: \"all\", label: \"全部\" },\r\n ]\r\n : [\r\n { value: \"Visible\", label: \"只看采集信息\" },\r\n { value: \"all\", label: \"全部\" },\r\n ];\r\n },\r\n // batchDate() {\r\n // // return !(!this.onlyRead && this.copyMain)\r\n // return !(!this.onlyRead && this.page.total > 1)\r\n // },\r\n batchDialogShow() {\r\n return this.$refs.batchDialogs.batchDialog;\r\n },\r\n },\r\n data() {\r\n return {\r\n options: [\r\n {\r\n value: true,\r\n label: \"只读模式\",\r\n },\r\n {\r\n value: false,\r\n label: \"编辑模式\",\r\n },\r\n ],\r\n buildFloorData: [], //楼层数据\r\n tableData: [],\r\n mess: {},\r\n tableHeader: null,\r\n page: {\r\n size: 50,\r\n sizes: [10, 30, 50, 100, 150, 200],\r\n total: 0,\r\n currentPage: 1,\r\n },\r\n pageKey: new Date().getTime(),\r\n myDialog: {\r\n qrcode: false, //二维码弹窗\r\n bimcode: false, //bim弹窗\r\n uploadFiles: false, //上传文件\r\n uploadImgs: false, //上传单个图片\r\n pic: false, //多个图片\r\n addDevice: false, //添加设备\r\n systemType: false, //关联系统\r\n details: false, //详情页\r\n changeRea: false, //关联资产\r\n lookPic: false, //图片查看\r\n update: false, //临时维护信息点\r\n menum: false, //临时多选枚举类型信息点\r\n },\r\n row: null, //被修改的row\r\n filesArr: [], //保存临时的文件key\r\n messKey: null,\r\n imgsArr: [], //临时保存的图片key数组\r\n picsArr: [], //临时设备图片keys数组\r\n systemList: [], //关联的系统\r\n copyMain: null,\r\n iframeSrc: \"\",\r\n id: 0,\r\n onlyRead: false,\r\n showType: \"Visible\",\r\n linkNameFalg: true,\r\n qrcodeUrl: \"\", //二维码图片地址\r\n bimcodeobj: \"\", //BIM对象\r\n loading: false,\r\n deviceType: {}, //族3位编码及名称\r\n floorData: [],\r\n curDevice: \"\", //当前点击的设备id\r\n addData: {}, //\r\n showParts: false,\r\n inputMap: {\r\n flowBuild: {\r\n editable: true,\r\n code: \"flowBuild\",\r\n name: \"建筑楼层\",\r\n path: \"flowBuild\",\r\n category: \"STATIC\",\r\n dataType: \"ENUM\",\r\n },\r\n }, //信息点和输入方式映射表\r\n updateInputShow: false, //是否显示临时维护输入框\r\n updateInfoData: {}, //当前信息点信息\r\n updateInfoPoint: \"\", //临时维护信息点键\r\n updateInput: \"\", //临时维护信息点值\r\n firmDataType: \"row\",\r\n information: {\r\n archive: {\r\n Archive: [], //设备文档\r\n name: \"设备文档\",\r\n code: \"infos.PhotoDoc.Archive\",\r\n num: 14,\r\n },\r\n checkReport: {\r\n CheckReport: [], //安装质检报告\r\n name: \"安装质检报告\",\r\n code: \"infos.Siteinstall.CheckReport\",\r\n num: 18,\r\n },\r\n drawing: {\r\n Drawing: [], //设备图纸\r\n name: \"设备图纸\",\r\n code: \"infos.PhotoDoc.Drawing\",\r\n num: 13,\r\n },\r\n installDrawing: {\r\n InstallDrawing: [], //安装图纸\r\n name: \"安装图纸\",\r\n code: \"infos.Siteinstall.InstallDrawing\",\r\n num: 16,\r\n },\r\n installPic: {\r\n InstallPic: [], //安装照片\r\n name: \"安装照片\",\r\n code: \"infos.Siteinstall.InstallPic\",\r\n num: 17,\r\n },\r\n insuranceFile: {\r\n InsuranceFile: [], //保险文件\r\n name: \"保险文件\",\r\n code: \"infos.InsuranceDoc.InsuranceFile\",\r\n num: 11,\r\n },\r\n nameplate: {\r\n Nameplate: [], //设备铭牌照片\r\n name: \"设备铭牌照片\",\r\n code: \"infos.PhotoDoc.Nameplate\",\r\n num: 12,\r\n },\r\n pic: {\r\n Pic: [], //设备照片\r\n name: \"设备照片\",\r\n code: \"infos.PhotoDoc.Pic\",\r\n num: 15,\r\n },\r\n },\r\n infoType: \"\",\r\n newEnclosure: [],\r\n headerOptions: [], // 信息点选项列表\r\n showInfoList: [], // 筛选的信息点列表\r\n isShowDelivered: false, // 是否显示已交付的信息点\r\n };\r\n },\r\n methods: {\r\n //获取表头\r\n getHeaderData(code) {\r\n let tempParams = this.$route.params;\r\n if (!tempParams.used && tempParams.pageSize) {\r\n this.page.currentPage = Number(tempParams.pageNo);\r\n this.page.size = Number(tempParams.pageSize);\r\n this.onlyRead = tempParams.readOnly;\r\n tempParams.used = true;\r\n } else {\r\n this.page.currentPage = 1;\r\n }\r\n this.pageKey = new Date().getTime();\r\n this.mess = code;\r\n this.changeCader();\r\n if (this.mess.deviceId) {\r\n // 清空筛选的信息点列表\r\n this.showInfoList = [];\r\n // 查询已交付的信息点\r\n if (this.isShowDelivered) {\r\n this.getDeliveredInfos(this.mess.deviceId);\r\n } else {\r\n // 查询全部信息点\r\n this.getDataDictionary(this.mess.deviceId);\r\n }\r\n } else {\r\n this.tableHeader = [];\r\n this.tableData = [];\r\n }\r\n },\r\n /**\r\n * 查询已交付的信息点\r\n * @param classCode 设备类型\r\n */\r\n async getDeliveredInfos(classCode) {\r\n let params = {\r\n classCode: classCode,\r\n objType: \"equipment\",\r\n };\r\n if (this.mess.buildId == \"noKnow\") {\r\n params.buildingId = `isNull`;\r\n } else if (this.mess.buildId && this.mess.buildId != \"all\") {\r\n params.buildingId = `${this.mess.buildId}`;\r\n }\r\n\r\n if (this.mess.floorId == \"noKnow\") {\r\n params.floorId = `isNull`;\r\n } else if (this.mess.floorId && this.mess.floorId != \"all\") {\r\n params.floorId = `${this.mess.floorId}`;\r\n }\r\n const res = await DicController.deliveredInfos(params)\r\n this.tableHeader = res.content;\r\n this.codeToDataSource = {};\r\n this.tableHeader.forEach((item) => {\r\n if (item.path) {\r\n this.inputMap[item.path] = item;\r\n }\r\n if (item.dataSource) {\r\n try {\r\n this.codeToDataSource[item.code] = {};\r\n item.dataSource.forEach((dic) => {\r\n this.codeToDataSource[item.code][dic.code] = dic.name;\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n });\r\n this.getTableData();\r\n // 信息维护\r\n this.newEnclosure = res.content.filter((i) => i.dataType == dataTypeMap.ATTACHMENT && i.editable == true);\r\n },\r\n /**\r\n * 查询全部信息点\r\n * @param classCode 设备类型\r\n */\r\n async getDataDictionary(classCode) {\r\n let params = {\r\n type: classCode,\r\n orders: \"sort asc, name desc\",\r\n };\r\n const res = await DicController.getDataDictionary(params)\r\n this.tableHeader = res.content;\r\n this.codeToDataSource = {};\r\n this.tableHeader.forEach((item) => {\r\n if (item.path) {\r\n this.inputMap[item.path] = item;\r\n }\r\n if (item.dataSource) {\r\n try {\r\n this.codeToDataSource[item.code] = {};\r\n item.dataSource.forEach((dic) => {\r\n this.codeToDataSource[item.code][dic.code] = dic.name;\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n });\r\n this.getTableData();\r\n // 信息维护\r\n this.newEnclosure = res.content.filter((i) => i.dataType == dataTypeMap.ATTACHMENT && i.editable == true);\r\n },\r\n //关闭弹窗\r\n closeBIM(val) {\r\n this.myDialog.bimcode = false;\r\n if (val == \"update\") {\r\n this.getTableData();\r\n }\r\n },\r\n //获取主体数据\r\n getTableData(keyWord) {\r\n if (keyWord) {\r\n this.mess.keyWord = keyWord;\r\n this.page.currentPage = 1;\r\n }\r\n this.loading = true;\r\n //type存在发送请求\r\n if (this.mess.deviceId) {\r\n let param = {\r\n pageSize: this.page.size,\r\n orders: \"createTime desc,id desc,localId desc,localName desc\",\r\n pageNumber: this.page.currentPage,\r\n filters: `classCode='${this.mess.deviceId}'`,\r\n };\r\n\r\n if (this.mess.buildId == \"noKnow\") {\r\n param.filters += `;buildingId isNull`;\r\n } else if (this.mess.buildId && this.mess.buildId != \"all\") {\r\n param.filters += `;buildingId='${this.mess.buildId}'`;\r\n }\r\n\r\n if (this.mess.floorId == \"noKnow\") {\r\n param.filters += `;floorId isNull`;\r\n } else if (this.mess.floorId && this.mess.floorId != \"all\") {\r\n param.filters += `;floorId='${this.mess.floorId}'`;\r\n }\r\n\r\n if (this.mess.keyWord) {\r\n param.filters += `;localName contain '${this.mess.keyWord}' || localId contain '${this.mess.keyWord}' || cADID contain '${this.mess.keyWord}' || infos.digitalDeliveryID contain '${this.mess.keyWord}'`;\r\n }\r\n\r\n EquipController.getEquipTableCon(param).then((res) => {\r\n this.loading = false;\r\n // 注释:去掉包含的部件\r\n // this.showParts = res.message == \"1\" ? true : false; // 判断是否显示包含的部件列\r\n this.tableData = res.content.map((item) => {\r\n if (item.hasOwnProperty(\"buildingId\") && item.hasOwnProperty(\"floorId\")) {\r\n item.flowBuild = item.buildingId + \"-\" + item.floorId;\r\n } else if (item.hasOwnProperty(\"buildingId\") && !item.hasOwnProperty(\"floorId\")) {\r\n item.flowBuild = item.buildingId;\r\n }\r\n return item;\r\n });\r\n this.copyMain = tools.deepCopy(this.tableData);\r\n this.page.total = res.total;\r\n if (this.tableData && this.tableData.length) {\r\n if (this.onlyRead) {\r\n this.getBatch(this.tableData);\r\n }\r\n this.initTable();\r\n }\r\n });\r\n } else {\r\n this.loading = false;\r\n this.$message.info(\"请选择设备类别!\");\r\n }\r\n },\r\n //获取动态参数\r\n getBatch(data) {\r\n let param = {\r\n groupCode: this.group_code,\r\n appId: \"datacenter\",\r\n projectId: this.projectId,\r\n data: [],\r\n };\r\n\r\n //一级遍历list\r\n this.tableHeader.map((head) => {\r\n //如果一级标签为动态参数或者设定参数放入数据等待请求\r\n if (head.category != \"STATIC\") {\r\n data.map((item) => {\r\n let cur = tools.dataForKey(item, head.path);\r\n\r\n if (cur) {\r\n param.data.push({\r\n objectId: item.id,\r\n infoCode: head.code,\r\n });\r\n }\r\n });\r\n }\r\n });\r\n if (param.data.length) {\r\n ScanController.BeatchQueryParam(param).then((res) => {\r\n if (!this.onlyRead) {\r\n return false;\r\n }\r\n this.tableData = data.map((item) => {\r\n res.data.map((child) => {\r\n if (item.id == child.objectId) {\r\n if (!!child.data || child.data == 0) {\r\n this.tableHeader.map((head) => {\r\n if (head.code == child.infoCode) {\r\n let contentVal = child.data;\r\n if (this.codeToDataSource[child.infoCode]) {\r\n contentVal = this.codeToDataSource[child.infoCode][child.data];\r\n }\r\n tools.setDataForKey(item, head.path, contentVal);\r\n }\r\n });\r\n } else {\r\n this.tableHeader.map((head) => {\r\n if (head.code == child.infoCode) {\r\n tools.setDataForKey(\r\n item,\r\n head.path,\r\n child.error ? (child.value ? \"表号功能号格式错误\" : \"表号功能号不存在\") : \"暂未采集到实时数据\"\r\n );\r\n }\r\n });\r\n }\r\n }\r\n });\r\n return item;\r\n });\r\n this.hot.loadData(this.tableData);\r\n });\r\n }\r\n },\r\n //修改资产\r\n changeAssetsFalg() {\r\n if (this.linkNameFalg) {\r\n this.linkNameFalg = false;\r\n } else {\r\n this.$confirm(\r\n \"<p>真的要在这里修改设备关联的资产么?</p><p>真的能通过列表信息找到想关联的资产么?</p><p>在这里修改关联的资产一定是因为之前关联错了要修改么?</p>\",\r\n \"提示\",\r\n {\r\n dangerouslyUseHTMLString: true,\r\n confirmButtonText: \"没错!我要改关联的资产\",\r\n cancelButtonText: \"我就点开看看\",\r\n confirmButtonClass: \"cancelButtonClass\",\r\n cancelButtonClass: \"cancelButtonClass\",\r\n }\r\n )\r\n .then((_) => {\r\n this.linkNameFalg = true;\r\n })\r\n .catch((_) => {\r\n this.$message(\"取消\");\r\n });\r\n }\r\n },\r\n //撤回\r\n undo() {\r\n this.hot.undo();\r\n },\r\n //刷新-switch改变\r\n reset() {\r\n this.getTableData();\r\n },\r\n //添加设备\r\n addDevice() {\r\n this.myDialog.addDevice = true;\r\n if (this.mess.deviceId) {\r\n this.$nextTick(() => {\r\n this.$refs.cascader.setValue(this.mess.deviceId);\r\n this.changeAddType({code:this.mess.deviceId,facility:this.mess.name});\r\n });\r\n }\r\n },\r\n //下一步\r\n toAddDevice() {\r\n if (this.addData.deviceId) {\r\n this.myDialog.addDevice = false;\r\n this.$router.push({\r\n path: \"/ledger/deviceadd\",\r\n query: this.addData,\r\n });\r\n } else {\r\n this.$message.info(\"请选择设备类别后再操作!\");\r\n }\r\n },\r\n //选择设备类型-添加设备\r\n changeAddType(val) {\r\n this.addData.deviceId = val.code;\r\n this.addData.name = val.facility;\r\n this.addData.showType = this.showType;\r\n },\r\n //下载\r\n download() {\r\n if (!this.onlyRead) {\r\n if (!!this.hot) {\r\n let fileName =\r\n this.mess.name + \"-页数:\" + this.page.currentPage + \"-个数:\" + this.tableData.length + \"-总个数:\" + this.page.total;\r\n this.hot.getPlugin(\"exportFile\").downloadFile(\"csv\", {\r\n filename: fileName,\r\n columnHeaders: true,\r\n exportHiddenRows: true,\r\n exportHiddenColumns: true,\r\n rowHeaders: true,\r\n });\r\n } else {\r\n this.$message(\"请确定存在表格\");\r\n }\r\n } else {\r\n this.$message(\"下载需在编辑状态下\");\r\n }\r\n },\r\n /**\r\n * 切换信息点查看类型\r\n */\r\n handleChangeShowType() {\r\n this.showInfoList = [];\r\n this.initTable();\r\n },\r\n //拼接表头固定列\r\n formatHeaderData(list) {\r\n let arr = tools.copyArr(list);\r\n let data = showTools.headerTextFilter(arr, \"equipment\", this.onlyRead, this.showType, true);\r\n if (this.showParts) {\r\n // data.unshift(\"操作\", \"当前关联的资产\", \"所属系统实例\", \"包含的部件\");\r\n data.unshift(\"操作\", \"所属系统实例\", \"包含的部件\");\r\n } else {\r\n // data.unshift(\"操作\", \"当前关联的资产\", \"所属系统实例\");\r\n data.unshift(\"操作\", \"所属系统实例\");\r\n }\r\n if (this.showType == \"all\" && this.showParts) {\r\n data.splice(5, 0, \"所属建筑楼层\");\r\n } else if (this.showType == \"all\" && !this.showParts) {\r\n data.splice(4, 0, \"所属建筑楼层\");\r\n }\r\n return data;\r\n },\r\n //格式化表内容\r\n formatHeaderType(list) {\r\n let arr = tools.copyArr(list);\r\n let data = showTools.headerTypeFilter(arr, \"equipment\", this.onlyRead, this.showType, true);\r\n this.headerOptions = this.showType === \"all\" ? tools.copyArr(this.tableHeader) : this.tableHeader.filter((item) => item.visible);\r\n if (this.showParts) {\r\n data.unshift(\r\n {\r\n data: \"caozuo\",\r\n renderer: tools.lookDetails,\r\n readOnly: true,\r\n },\r\n // {\r\n // data: \"linkEquipLocalName\",\r\n // readOnly: true,\r\n // renderer: tools.LinkEquipLocalName\r\n // },\r\n {\r\n data: \"linkSystem\",\r\n renderer: text.systemList,\r\n readOnly: true,\r\n },\r\n {\r\n data: \"count\",\r\n readOnly: true,\r\n renderer: tools.lookDetails,\r\n }\r\n );\r\n } else {\r\n data.unshift(\r\n {\r\n data: \"caozuo\",\r\n renderer: tools.lookDetails,\r\n readOnly: true,\r\n },\r\n // {\r\n // data: \"linkEquipLocalName\",\r\n // readOnly: true,\r\n // renderer: tools.LinkEquipLocalName\r\n // },\r\n {\r\n data: \"linkSystem\",\r\n renderer: text.systemList,\r\n readOnly: true,\r\n }\r\n );\r\n }\r\n if (this.showType == \"all\" && this.showParts) {\r\n data.splice(5, 0, {\r\n data: \"flowBuild\",\r\n renderer: tools.customDropdownRenderer,\r\n editor: \"chosen\",\r\n chosenOptions: {\r\n data: this.buildFloorData,\r\n },\r\n readOnly: this.onlyRead,\r\n });\r\n } else if (this.showType == \"all\" && !this.showParts) {\r\n data.splice(4, 0, {\r\n data: \"flowBuild\",\r\n renderer: tools.customDropdownRenderer,\r\n editor: \"chosen\",\r\n chosenOptions: {\r\n data: this.buildFloorData,\r\n },\r\n readOnly: this.onlyRead,\r\n });\r\n }\r\n return data;\r\n },\r\n /**\r\n * 筛选要展示的表头函数\r\n */\r\n filterShowInfo(list) {\r\n let arr = this.tableHeader.filter((item) => {\r\n return item.code === \"localId\" || item.code === \"localName\" || list.includes(item.code);\r\n });\r\n return arr;\r\n },\r\n //初始化插件\r\n initTable() {\r\n var container = document.getElementById(\"handsontable\");\r\n let winHeight = document.documentElement.clientHeight;\r\n if (this.hot) {\r\n this.hot.destroy();\r\n this.hot = null;\r\n }\r\n\r\n this.hot = new Handsontable(container, {\r\n data: this.tableData,\r\n fixedColumnsLeft: this.showParts ? 5 : 4,\r\n colHeaders: this.formatHeaderData(this.showInfoList.length ? this.filterShowInfo(this.showInfoList) : this.tableHeader), //表头文案\r\n columns: this.formatHeaderType(this.showInfoList.length ? this.filterShowInfo(this.showInfoList) : this.tableHeader), //数据显示格式\r\n filters: true,\r\n maxRows: this.tableData.length,\r\n height: winHeight - 335,\r\n columnSorting: true, //添加排序\r\n sortIndicator: true, //添加排序\r\n renderAllRows: true,\r\n // colWidths: 200,\r\n autoColumnSize: true,\r\n // language: \"zh-CN\",\r\n fillHandle: \"vertical\", //允许纵向填充\r\n manualColumnResize: true,\r\n manualColumnMove: true,\r\n dropdownMenu: [\"filter_by_condition\", \"filter_by_value\", \"filter_action_bar\"],\r\n contextMenu: this.onlyRead\r\n ? false\r\n : {\r\n items: {\r\n remove_row: {\r\n name: \"删除选中设备\",\r\n },\r\n },\r\n },\r\n // 事件\r\n afterChange: this.handleUpdataTable, //修改后\r\n afterFilter: this.trimmedRows, //排序前\r\n afterRemoveRow: this.handleDeleteTableRow, //右键删除\r\n afterOnCellMouseDown: this.eventClick, //鼠标点击\r\n });\r\n let pro = document.getElementById(\"hot-display-license-info\");\r\n if (!!pro) {\r\n pro.parentNode.removeChild(pro);\r\n }\r\n this.isLoading = false;\r\n },\r\n //表格中的点击\r\n eventClick(el, rowArr) {\r\n //点击的是表头\r\n if (rowArr.row < 0) {\r\n return;\r\n }\r\n //被筛选过后的数组\r\n let trimmedArr = this.trimmedRows();\r\n //是否启用了排序\r\n let isSort = this.hot.getPlugin(\"columnSorting\").isSorted();\r\n if (trimmedArr.length && isSort) {\r\n let sortArr = this.myHotArr.getPlugin(\"columnSorting\").rowsMapper.__arrayMap;\r\n let infos = this.tableData[trimmedArr[sortArr[rowArr.row]]];\r\n this.getInfors(infos, { row: sortArr[rowArr.row], col: rowArr.col }, el);\r\n } else if (isSort) {\r\n //排序后的数组\r\n let sortArr = this.hot.getPlugin(\"columnSorting\").rowsMapper.__arrayMap;\r\n let infos = this.tableData[sortArr[rowArr.row]];\r\n this.getInfors(infos, { row: sortArr[rowArr.row], col: rowArr.col }, el);\r\n } else if (trimmedArr.length) {\r\n let infos = this.tableData[trimmedArr[rowArr.row]];\r\n this.getInfors(infos, { row: trimmedArr[rowArr.row], col: rowArr.col }, el);\r\n } else {\r\n let infos = this.tableData[rowArr.row];\r\n this.getInfors(infos, rowArr, el);\r\n }\r\n },\r\n // 更新\r\n handleUpdataTable(changeData, source) {\r\n if (!this.onlyRead && source != \"ObserveChanges.change\") {\r\n if (changeData) {\r\n let trimmedArr = this.trimmedRows();\r\n let param = handsonUtils.getParam(changeData, source, this.hot, trimmedArr);\r\n let data = [];\r\n for (let i = 0; i < param.length; i++) {\r\n data.push(param[i]);\r\n }\r\n //如果data中包含/且data长度为1,将其转换成.\r\n if (changeData.length == 1 && changeData[0][1].indexOf(\"/\") > 0) {\r\n changeData[0][1] = changeData[0][1].split(\"/\").join(\".\");\r\n }\r\n //存在data进行修改请求\r\n if (data && data.length) {\r\n this.updateBusiness(data, changeData);\r\n }\r\n }\r\n }\r\n },\r\n //删除设备\r\n handleDeleteTableRow() {\r\n let params = tools.differenceArr(this.tableData, this.copyMain);\r\n let _this = this;\r\n if (params.length < 1) {\r\n return;\r\n }\r\n let param = [];\r\n params.map((item) => {\r\n this.deleteCode = item.classCode;\r\n param.push({ id: item.id });\r\n });\r\n this.$confirm(\"此操作将删除设备,是否继续?\", \"提示\", {\r\n confirmButtonText: \"确定\",\r\n cancelButtonText: \"取消\",\r\n type: \"warning\",\r\n })\r\n .then(() => {\r\n this.removeDevice(param);\r\n })\r\n .catch(() => {\r\n this.reset();\r\n this.$message(\"取消删除\");\r\n });\r\n },\r\n // 删除设备\r\n removeDevice(param) {\r\n ScanController.deleteEquip(param).then((res) => {\r\n this.$message.success(\"删除成功\");\r\n this.$emit(\"close\", { code: this.deleteCode });\r\n // this.getTableData()\r\n });\r\n },\r\n // 更新\r\n updateBusiness(data, change) {\r\n let param = {\r\n content: [],\r\n },\r\n keyList = [];\r\n //生成要修改字段列表\r\n change.map((item) => {\r\n // let key = item[1].split(\".\")[0];\r\n // if (key == \"flowBuild\" && keyList.indexOf(key) == -1) {\r\n // keyList.push(\"buildingId\", \"floorId\");\r\n // }\r\n if (item[1] && keyList.indexOf(item[1]) == -1 && item[1] != \"propertyId\") {\r\n keyList.push(item[1]);\r\n }\r\n });\r\n //生成对应修改数据\r\n data.map((item, index) => {\r\n let nullList = [];\r\n keyList.map((value) => {\r\n if (value == \"flowBuild\") {\r\n let itemData = tools.dataForKey(item, \"flowBuild\");\r\n if (itemData == \"\") {\r\n tools.setDataForKey(item, \"buildingId\", null);\r\n tools.setDataForKey(item, \"floorId\", null);\r\n nullList.push(\"buildingId\", \"floorId\");\r\n } else {\r\n let BuildingId = itemData.split(\"-\")[0];\r\n let FloorId = itemData.split(\"-\")[1];\r\n if (BuildingId && FloorId) {\r\n tools.setDataForKey(item, \"buildingId\", BuildingId);\r\n tools.setDataForKey(item, \"floorId\", FloorId);\r\n } else if (BuildingId && !FloorId) {\r\n tools.setDataForKey(item, \"buildingId\", BuildingId);\r\n tools.setDataForKey(item, \"floorId\", null);\r\n nullList.push(\"floorId\");\r\n }\r\n }\r\n } else {\r\n let itemData = tools.dataForKey(item, value);\r\n tools.setDataForKey(item, value, itemData == \"\" ? null : itemData);\r\n // 数据为空加入置空列表(空数据类型包含: undefind / \"\" / null )\r\n itemData || nullList.push(value);\r\n }\r\n });\r\n // 置空列表不为空\r\n if (nullList.length) {\r\n // 深拷贝需更新的对象,并添加置空列表\r\n const updateItem = JSON.parse(JSON.stringify(item));\r\n updateItem.nullList = nullList;\r\n param.content.push(updateItem);\r\n } else {\r\n // 无置空内容\r\n param.content.push(item);\r\n }\r\n });\r\n ScanController.updateEquip(param);\r\n },\r\n //修改设备类型\r\n changeCader() {\r\n if (this.mess.deviceId) {\r\n let param = {\r\n data: {\r\n filters: `equipCode='${this.mess.deviceId}'`,\r\n pageNumber: 1,\r\n pageSize: 50,\r\n },\r\n };\r\n ScanController.getEquipBelongs(param).then((res) => {\r\n if (res.content.length) {\r\n this.deviceType.assetType = res.content[0].family;\r\n this.deviceType.assetName = res.content[0].familyName;\r\n }\r\n });\r\n }\r\n },\r\n forValue(arr, val) {\r\n let enclosure = [];\r\n arr &&\r\n arr.length &&\r\n arr.map((i) => {\r\n if (i.path == val) {\r\n enclosure = i.value;\r\n } else {\r\n enclosure = [];\r\n }\r\n });\r\n return enclosure;\r\n },\r\n multiples(val) {\r\n this.firmDataType = \"dialog\";\r\n switch (val) {\r\n case \"infos.insuranceFile\": //保险文件\r\n this.filesArr = this.forValue(this.newEnclosure, val);\r\n this.infoType = val;\r\n this.myDialog.uploadFiles = true;\r\n break;\r\n case \"infos.archive\": //设备文档\r\n this.filesArr = this.forValue(this.newEnclosure, val);\r\n this.infoType = val;\r\n this.myDialog.uploadFiles = true;\r\n break;\r\n case \"infos.checkReport\": //安装质检报告\r\n this.filesArr = this.forValue(this.newEnclosure, val);\r\n this.infoType = val;\r\n this.myDialog.uploadFiles = true;\r\n break;\r\n case \"infos.maintainManual\": //维修保养手册\r\n this.filesArr = this.forValue(this.newEnclosure, val);\r\n this.infoType = val;\r\n this.myDialog.uploadFiles = true;\r\n break;\r\n case \"infos.approachingAcceptance\": //进场验收单\r\n this.filesArr = this.forValue(this.newEnclosure, val);\r\n this.infoType = val;\r\n this.myDialog.uploadFiles = true;\r\n break;\r\n case \"infos.acceptanceReport\": //验收报告\r\n this.filesArr = this.forValue(this.newEnclosure, val);\r\n this.infoType = val;\r\n this.myDialog.uploadFiles = true;\r\n break;\r\n case \"infos.operationManual\": //操作说明书\r\n this.filesArr = this.forValue(this.newEnclosure, val);\r\n this.infoType = val;\r\n this.myDialog.uploadFiles = true;\r\n break;\r\n case \"infos.originalCertificate\": //原厂证明\r\n this.filesArr = this.forValue(this.newEnclosure, val);\r\n this.infoType = val;\r\n this.myDialog.uploadFiles = true;\r\n break;\r\n case \"infos.testReport\": //检测报告\r\n this.filesArr = this.forValue(this.newEnclosure, val);\r\n this.infoType = val;\r\n this.myDialog.uploadFiles = true;\r\n break;\r\n case \"infos.productCertification\": //产品合格证\r\n this.filesArr = this.forValue(this.newEnclosure, val);\r\n this.infoType = val;\r\n this.myDialog.uploadFiles = true;\r\n break;\r\n case \"infos.installInstruction\": //安装说明书\r\n this.filesArr = this.forValue(this.newEnclosure, val);\r\n this.infoType = val;\r\n this.myDialog.uploadFiles = true;\r\n break;\r\n case \"infos.drawing\": //设备图纸\r\n this.filesArr = this.forValue(this.newEnclosure, val);\r\n this.infoType = val;\r\n this.myDialog.uploadFiles = true;\r\n break;\r\n case \"infos.installDrawing\": //安装图纸\r\n this.filesArr = this.forValue(this.newEnclosure, val);\r\n this.infoType = val;\r\n this.myDialog.uploadFiles = true;\r\n break;\r\n case \"infos.supplierContract\": //供应合同\r\n this.filesArr = this.forValue(this.newEnclosure, val);\r\n this.infoType = val;\r\n this.myDialog.uploadFiles = true;\r\n break;\r\n case \"infos.installPic\": //安装照片\r\n this.imgsArr = this.forValue(this.newEnclosure, val);\r\n this.infoType = val;\r\n this.myDialog.uploadImgs = true;\r\n break;\r\n case \"infos.nameplate\": //设备铭牌照片\r\n this.imgsArr = this.forValue(this.newEnclosure, val);\r\n this.infoType = val;\r\n this.myDialog.uploadImgs = true;\r\n break;\r\n case \"infos.pic\": //设备照片\r\n this.picsArr = this.forValue(this.newEnclosure, val);\r\n this.infoType = val;\r\n this.myDialog.pic = true;\r\n break;\r\n case \"infos.designIDGraph\": //设计工况空调机组处理过程焓湿图(F2)\r\n this.filesArr = this.forValue(this.newEnclosure, val);\r\n this.infoType = val;\r\n this.myDialog.uploadFiles = true;\r\n break;\r\n case \"infos.fanCharacterCurve\": //风机性能曲线(F1)\r\n this.filesArr = this.forValue(this.newEnclosure, val);\r\n this.infoType = val;\r\n this.myDialog.uploadFiles = true;\r\n break;\r\n }\r\n },\r\n getInfors(infos, row, el) {\r\n let val = this.hot.colToProp(row.col);\r\n let inputData = this.inputMap[val];\r\n this.row = row.row;\r\n this.messKey = val;\r\n this.curDevice = infos.id;\r\n this.firmDataType = \"row\";\r\n lStorage.set(\"screen_data\", {\r\n path: this.$route.path,\r\n data: { equip: infos },\r\n });\r\n switch (val) {\r\n //操作\r\n case \"caozuo\":\r\n // window.open(`http://adm.sagacloud.cn:8058/spread?id=${infos.EquipID}&pid=${this.projectId}&secret=${this.secret}`,\"_blank\")\r\n // this.$message(\"开发中...\")\r\n this.$router.push({\r\n path: \"deviceDetails\",\r\n query: {\r\n type: this.mess.deviceId,\r\n equipId: infos.id,\r\n equipName: infos.localName ? infos.localName : infos.name ? infos.name : \"\",\r\n equipCode: infos.localId ? infos.localId : \"\",\r\n data: this.tableData.map((item) => {\r\n return {\r\n value: item.id,\r\n label: item.localName ? item.localName : item.name ? item.name : \"\",\r\n };\r\n }),\r\n },\r\n });\r\n return false;\r\n //设备二维码图片(infos.defaultQRCode)\r\n // case \"infos.defaultQRCode\":\r\n case \"defaultQRCode\":\r\n this.qrcodeUrl = this.tableData[row.row][val];\r\n if (this.qrcodeUrl) {\r\n this.myDialog.qrcode = true;\r\n } else {\r\n this.$message(\"此设备没有设备二维码\");\r\n }\r\n return false;\r\n //BIM模型中坐标(bimLocation)\r\n case \"bimLocation\":\r\n this.bimcodeobj = this.tableData[row.row];\r\n if (Object.keys(this.bimcodeobj).length > 0) {\r\n this.myDialog.bimcode = true;\r\n } else {\r\n this.$message(\"此设备没有BIM模型中坐标\");\r\n }\r\n return false;\r\n //关联系统()\r\n case \"linkSystem\":\r\n this.systemList = this.tableData[row.row].linkSystem || [];\r\n this.myDialog.systemType = true;\r\n return false;\r\n //关联资产()\r\n case \"linkEquipLocalName\":\r\n if (!this.onlyRead) {\r\n this.myDialog.changeRea = true;\r\n }\r\n return false;\r\n /**\r\n * 关联资产后才可维护的信息点\r\n */\r\n // case 'flowBuild': //所属建筑楼层\r\n // case 'infos.productDate': //生产日期\r\n // case 'infos.serialNum': //出厂编号\r\n // case 'infos.assetID': //资产编号\r\n // case 'infos.purchasePrice': //采购价格\r\n // case 'infos.insuranceNum': //保险单号\r\n // case 'infos.insuranceFile': //保险文件\r\n // if (!this.onlyRead) {\r\n // const linkId = this.tableData[row.row].linkId;\r\n // if (!linkId) { //未关联资产\r\n // this.$confirm('您暂未关联设备对应的资产,该信息点不可编辑', '提示', {\r\n // confirmButtonText: '我知道了',\r\n // showCancelButton: false,\r\n // type: 'warning',\r\n // center: true\r\n // }).then(() => {\r\n // return false;\r\n // });\r\n // }\r\n // }\r\n // return false;\r\n //保险文件--设备文档--安装质检报告\r\n case \"infos.insuranceFile\": //保险文件(F2)\r\n case \"infos.archive\": //设备文档(F2)\r\n case \"infos.checkReport\": //安装质检报告(F2)\r\n case \"infos.maintainManual\": //维修保养手册(F2)\r\n case \"infos.approachingAcceptance\": //进场验收单(F2)\r\n case \"infos.acceptanceReport\": //验收报告(F2)\r\n case \"infos.operationManual\": //操作说明书(F2)\r\n case \"infos.originalCertificate\": //原厂证明(F2)\r\n case \"infos.testReport\": //检测报告(F2)\r\n case \"infos.productCertification\": //产品合格证(F2)\r\n case \"infos.installInstruction\": //安装说明书(F2)\r\n case \"infos.supplierContract\": //供应合同(F2)\r\n case \"infos.drawing\": //设备图纸(F2)\r\n case \"infos.installDrawing\": //安装图纸(F2)\r\n case \"infos.designIDGraph\": //设计工况空调机组处理过程焓湿图(F2)\r\n case \"infos.fanCharacterCurve\": //风机性能曲线(F1)\r\n let IPSdata = tools.dataForKey(this.tableData[row.row], val);\r\n this.filesArr = IPSdata ? IPSdata : [];\r\n if (!this.onlyRead || this.filesArr.length) {\r\n this.myDialog.uploadFiles = true;\r\n }\r\n return false;\r\n //安装照片--设备铭牌照片(F2)\r\n case \"infos.installPic\":\r\n case \"infos.nameplate\":\r\n let SSPPdata = tools.dataForKey(this.tableData[row.row], val);\r\n this.imgsArr = SSPPdata ? SSPPdata : [];\r\n if (!this.onlyRead || this.imgsArr.length) {\r\n this.myDialog.uploadImgs = true;\r\n }\r\n return false;\r\n //设备照片(F2)\r\n case \"infos.pic\":\r\n let Pdata = tools.dataForKey(this.tableData[row.row], val);\r\n this.picsArr = Pdata ? Pdata : [];\r\n if (!this.onlyRead || this.picsArr.length) {\r\n this.myDialog.pic = true;\r\n }\r\n return false;\r\n //包含的部件字段\r\n case \"count\":\r\n let countUrl = this.onlyRead ? \"/ledger/parts\" : \"/ledger/partsmanage\";\r\n this.$router.push({\r\n path: countUrl,\r\n query: {\r\n deviceId: infos.id,\r\n typeId: this.mess.deviceId,\r\n pageNo: this.page.currentPage,\r\n pageSize: this.page.size,\r\n },\r\n });\r\n return false;\r\n default:\r\n break;\r\n }\r\n if (!this.onlyRead && !inputData.editable) {\r\n this.$confirm(\"该信息点的值为自动生成,不可人工维护!\", \"提示\", {\r\n confirmButtonText: \"我知道了\",\r\n showCancelButton: false,\r\n type: \"warning\",\r\n center: true,\r\n }).then(() => {\r\n return false;\r\n });\r\n }\r\n // 维护多选枚举值\r\n if (\r\n !this.onlyRead &&\r\n (inputData.dataType == \"MENUM\" ||\r\n (inputData.dataType == \"ENUM\" && inputData.multiple) ||\r\n (inputData.dataType == \"BOOLEAN\" && inputData.multiple))\r\n ) {\r\n this.updateInfoData = inputData;\r\n this.updateInfoPoint = val;\r\n this.updateInput = tools.dataForKey(this.tableData[row.row], val);\r\n this.myDialog.menum = true;\r\n return false;\r\n }\r\n // 区间值和复数值暂无组件支持输入\r\n if (!this.onlyRead && (inputData.region || inputData.multiple)) {\r\n this.$confirm(\"该信息点为区间值/复数值,暂无组件支持输入!\", \"提示\", {\r\n confirmButtonText: \"我知道了\",\r\n showCancelButton: false,\r\n type: \"warning\",\r\n center: true,\r\n }).then(() => {\r\n return false;\r\n });\r\n }\r\n if (!this.onlyRead && showTools.inputModeArr.indexOf(inputData.dataType) == \"-1\") {\r\n this.updateInfoPoint = val;\r\n this.updateInput = tools.dataForKey(this.tableData[row.row], val);\r\n this.myDialog.update = true;\r\n return false;\r\n }\r\n },\r\n //关闭临时维护弹窗回调\r\n handleCloseUpdate() {\r\n this.updateInputShow = false;\r\n this.updateInfoPoint = \"\";\r\n this.updateInput = \"\";\r\n },\r\n //更新临时维护信息点\r\n handleClickUpdate() {\r\n tools.setDataForKey(this.tableData[this.row], this.updateInfoPoint, this.updateInput);\r\n this.handleUpdataTable([[this.row, this.updateInfoPoint, null, this.updateInput]], \"edit\");\r\n this.updateInputShow = false;\r\n this.myDialog.update = false;\r\n this.updateInput = \"\";\r\n },\r\n //多选枚举类型值修改\r\n handleChangeMenum(newValue) {\r\n tools.setDataForKey(this.tableData[this.row], this.updateInfoPoint, newValue);\r\n this.handleUpdataTable([[this.row, this.updateInfoPoint, null, newValue]], \"edit\");\r\n this.myDialog.menum = false;\r\n this.updateInput = \"\";\r\n },\r\n //获取被筛选掉的行号\r\n trimmedRows() {\r\n var plugin = this.hot.getPlugin(\"trimRows\").trimmedRows;\r\n let dataLength = this.tableData.length;\r\n let dataArr = new Array();\r\n for (let i = 0; i < dataLength; i++) {\r\n dataArr.push(i);\r\n }\r\n if (plugin.length <= 0) {\r\n dataArr = undefined;\r\n } else {\r\n dataArr = this.array_diff(dataArr, plugin);\r\n }\r\n return dataArr || [];\r\n },\r\n //去除数组中相同的元素\r\n array_diff(a, b) {\r\n for (var i = 0; i < b.length; i++) {\r\n for (var j = 0; j < a.length; j++) {\r\n if (a[j] == b[i]) {\r\n a.splice(j, 1);\r\n j = j - 1;\r\n }\r\n }\r\n }\r\n return a;\r\n },\r\n //修改关联的资产\r\n changeProperty(val) {\r\n this.setDataToMain(val.propertyId, \"propertyId\", this.row);\r\n this.setDataToMain(val.linkEquipLocalName, \"linkEquipLocalName\", this.row);\r\n },\r\n //上传文件弹窗触发事件\r\n fileChange(keys, type, file) {\r\n if (type === \"dialog\") {\r\n this.newEnclosure.forEach((i) => {\r\n if (i.path == keys) {\r\n this.$set(i, \"value\", file);\r\n }\r\n return i;\r\n });\r\n } else {\r\n this.setDataToMain(keys, this.messKey, this.row);\r\n }\r\n },\r\n //上传图片弹窗触发事件\r\n imgChange(keys, type, file) {\r\n if (type === \"dialog\") {\r\n this.newEnclosure.forEach((i) => {\r\n if (i.path == keys) {\r\n this.$set(i, \"value\", file);\r\n }\r\n return i;\r\n });\r\n } else {\r\n this.setDataToMain(keys, this.messKey, this.row);\r\n }\r\n },\r\n //关联系统更改\r\n changeSystemType(data) {\r\n tools.setDataForKey(this.tableData[this.row], \"linkSystem\", data);\r\n },\r\n //设备图片弹窗改变事件\r\n changePics(keys, type, file) {\r\n if (type === \"dialog\") {\r\n // this.information = keys\r\n this.newEnclosure.forEach((i) => {\r\n if (i.path == keys) {\r\n this.$set(i, \"value\", file);\r\n }\r\n return i;\r\n });\r\n } else {\r\n this.setDataToMain(keys, this.messKey, this.row);\r\n }\r\n },\r\n utilToKey(key, name, data, messName) {\r\n if (key == name) {\r\n this.setDataToMain(data[key], messName, this.row);\r\n }\r\n },\r\n //判断是否有值,有值赋值\r\n setDataToMain(data, key, row) {\r\n if (!!data && data != \"--\") {\r\n if (!!this.tableData[row]) {\r\n tools.setDataForKey(this.tableData[row], key, data);\r\n this.handleUpdataTable([[row, key, null, data]], \"edit\");\r\n } else {\r\n this.tableData[row] = {};\r\n tools.setDataForKey(this.tableData[row], key, data);\r\n }\r\n } else {\r\n tools.setDataForKey(this.tableData[row], key, \"\");\r\n }\r\n },\r\n // 批量信息维护\r\n Batch() {\r\n this.firmDataType = \"dialog\";\r\n this.$refs.batchDialogs.batchDialog = true;\r\n },\r\n // 批量维护设备位置\r\n handleBatchEquipPoint() {\r\n let query = {};\r\n // 跳转批量维护设备位置页面\r\n this.$router.push({\r\n name: \"BatchPointAssets\",\r\n params: query,\r\n });\r\n },\r\n upDataDevice() {\r\n setTimeout(() => {\r\n this.getTableData();\r\n }, 1000);\r\n },\r\n },\r\n watch: {\r\n projectId() {\r\n this.buildFloorData = [];\r\n BuildController.getData(this.buildFloorData);\r\n this.tableData = [];\r\n this.mess.deviceId = null;\r\n this.page.total = 0;\r\n },\r\n showTypes: {\r\n handler(newName, oldName) {\r\n if (newName && newName[0] && newName[0].value) {\r\n this.showType = newName[0].value;\r\n } else {\r\n this.showType = \"Visible\";\r\n }\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n/deep/ .el-select__tags-text {\r\n display: inline-block;\r\n max-width: 80px;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n}\r\n/deep/ .el-select .el-tag__close.el-icon-close {\r\n right: -4px;\r\n top: -6px;\r\n}\r\n</style>\r\n<style lang=\"less\">\r\n.hanson-bar {\r\n height: 40px;\r\n padding: 5px 0;\r\n font-size: 14px;\r\n overflow: hidden;\r\n margin-top: 0;\r\n line-height: 40px;\r\n\r\n .iconfont {\r\n font-size: 12px;\r\n }\r\n}\r\n\r\n.cancelButtonClass {\r\n width: 180px;\r\n}\r\n\r\n.handsontable .ht_master thead,\r\n.handsontable .ht_master tr th,\r\n.handsontable .ht_clone_left thead {\r\n visibility: visible;\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./device.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./device.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./device.vue?vue&type=template&id=6425fa62&scoped=true&\"\nimport script from \"./device.vue?vue&type=script&lang=js&\"\nexport * from \"./device.vue?vue&type=script&lang=js&\"\nimport style0 from \"./device.vue?vue&type=style&index=0&id=6425fa62&lang=less&scoped=true&\"\nimport style1 from \"./device.vue?vue&type=style&index=1&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6425fa62\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"title\":\"批量关联资产\",\"visible\":_vm.dialog.linkAssets,\"width\":\"700px\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.dialog, \"linkAssets\", $event)},\"open\":_vm.handleOpenReset}},[_c('el-row',[_c('span',{staticClass:\"condition-title\"},[_vm._v(\"设备类型:\")]),_c('el-select',{staticStyle:{\"width\":\"350px\"},attrs:{\"filterable\":\"\",\"size\":\"small\"},on:{\"change\":_vm.handleChangeDevice},model:{value:(_vm.deviceType),callback:function ($$v) {_vm.deviceType=$$v},expression:\"deviceType\"}},_vm._l((_vm.deviceTypeList),function(item){return _c('el-option',{key:item.classCode,attrs:{\"label\":item.name,\"value\":item.classCode}})}),1)],1),_c('el-row',{staticStyle:{\"margin-top\":\"30px\"}},[_c('span',{staticClass:\"condition-title\"},[_vm._v(\"建筑楼层:\")]),_c('el-cascader',{staticStyle:{\"width\":\"350px\"},attrs:{\"options\":_vm.bfoptions,\"filterable\":\"\",\"size\":\"small\"},on:{\"change\":_vm.handleChangeBf},model:{value:(_vm.buildFloor),callback:function ($$v) {_vm.buildFloor=$$v},expression:\"buildFloor\"}})],1),_c('el-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.spaceShow),expression:\"spaceShow\"}],staticStyle:{\"margin-top\":\"30px\"}},[_c('span',{staticClass:\"condition-title\"},[_vm._v(\"分区类型:\")]),_c('el-select',{staticStyle:{\"width\":\"350px\"},attrs:{\"filterable\":\"\",\"size\":\"small\"},on:{\"change\":_vm.handleChangeZone},model:{value:(_vm.zone),callback:function ($$v) {_vm.zone=$$v},expression:\"zone\"}},_vm._l((_vm.zoneList),function(item){return _c('el-option',{key:item.code,attrs:{\"label\":item.name,\"value\":item.code}})}),1)],1),_c('el-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.spaceShow && _vm.zone != 'all' && _vm.zone != 'noKnow'),expression:\"spaceShow && zone != 'all' && zone != 'noKnow'\"}],staticStyle:{\"margin-top\":\"30px\"}},[_c('span',{staticClass:\"condition-title\"},[_vm._v(\"空间实例:\")]),_c('el-select',{staticStyle:{\"width\":\"350px\"},attrs:{\"multiple\":\"\",\"filterable\":\"\",\"collapse-tags\":\"\",\"placeholder\":\"请选择\"},model:{value:(_vm.space),callback:function ($$v) {_vm.space=$$v},expression:\"space\"}},_vm._l((_vm.spaceList),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":_vm.handleClickClose}},[_vm._v(\"取 消\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.toLinkAssets}},[_vm._v(\"确 认\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <el-dialog title=\"批量关联资产\" :visible.sync=\"dialog.linkAssets\" @open=\"handleOpenReset\" width=\"700px\">\r\n <el-row>\r\n <span class=\"condition-title\">设备类型:</span>\r\n <el-select v-model=\"deviceType\" filterable size=\"small\" @change=\"handleChangeDevice\" style=\"width:350px;\">\r\n <el-option v-for=\"item in deviceTypeList\" :key=\"item.classCode\" :label=\"item.name\"\r\n :value=\"item.classCode\"></el-option>\r\n </el-select>\r\n </el-row>\r\n <el-row style=\"margin-top:30px;\">\r\n <span class=\"condition-title\">建筑楼层:</span>\r\n <el-cascader :options=\"bfoptions\" v-model=\"buildFloor\" filterable size=\"small\" @change=\"handleChangeBf\"\r\n style=\"width:350px;\"></el-cascader>\r\n </el-row>\r\n <el-row style=\"margin-top:30px;\" v-show=\"spaceShow\">\r\n <span class=\"condition-title\">分区类型:</span>\r\n <el-select v-model=\"zone\" filterable size=\"small\" @change=\"handleChangeZone\" style=\"width:350px;\">\r\n <el-option v-for=\"item in zoneList\" :key=\"item.code\" :label=\"item.name\" :value=\"item.code\"></el-option>\r\n </el-select>\r\n </el-row>\r\n <el-row style=\"margin-top:30px;\" v-show=\"spaceShow && zone != 'all' && zone != 'noKnow'\">\r\n <span class=\"condition-title\">空间实例:</span>\r\n <el-select v-model=\"space\" multiple filterable collapse-tags style=\"width:350px;\" placeholder=\"请选择\">\r\n <el-option v-for=\"item in spaceList\" :key=\"item.value\" :label=\"item.label\" :value=\"item.value\">\r\n </el-option>\r\n </el-select>\r\n </el-row>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"handleClickClose\">取 消</el-button>\r\n <el-button type=\"primary\" @click=\"toLinkAssets\">确 认</el-button>\r\n </span>\r\n </el-dialog>\r\n</template>\r\n<script>\r\nimport DicController from '@/controller/old-adm/dicController'\r\nimport BuilderController from '@/controller/old-adm/buildController'\r\nimport FloorController from '@/controller/old-adm/floorController'\r\nimport ScanController from '@/controller/old-adm/ScanController'\r\nimport { mapGetters } from \"vuex\"\r\n\r\nexport default {\r\n props: {\r\n dialog: {\r\n type: Object,\r\n default: function () {\r\n return {\r\n linkAssets: false\r\n };\r\n }\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(\"layout\", [\"projectId\", \"secret\", \"userId\"])\r\n },\r\n data() {\r\n return {\r\n bfoptions: [], //建筑楼层列表\r\n buildFloor: ['all'], //选择的建筑楼层\r\n deviceTypeList: [], //未关联资产的设备或部件列表\r\n deviceType: '', //选择的设备类型\r\n zone: 'all', //空间分区\r\n zoneList: [], //空间分区列表\r\n spaceList: [], //空间实例列表\r\n space: [], //选择的空间实例\r\n spaceShow: false\r\n };\r\n },\r\n created() {\r\n this.getPartsDieType() //获取未关联资产的设备或部件类型\r\n this.getBuildFloorData() //获取建筑楼层数据\r\n this.getSpaceData() //获取分区类型数据\r\n },\r\n mounted() {\r\n },\r\n methods: {\r\n //打开弹窗回调,初始化选择\r\n handleOpenReset() {\r\n this.deviceType = ''\r\n this.buildFloor = ['all']\r\n this.zone = 'all'\r\n this.space = []\r\n this.spaceShow = false\r\n },\r\n //获取未关联资产的设备或部件类型\r\n getPartsDieType() {\r\n let _this = this\r\n ScanController.TypePartsDie(res => { \r\n _this.deviceTypeList = res.content\r\n })\r\n },\r\n //获取建筑楼层数据\r\n getBuildFloorData() {\r\n let data, buildParams = {\r\n pageNumber: 1,\r\n pageSize: 1000,\r\n orders: \"localName asc\",\r\n projection: [\r\n \"id\",\r\n \"localName\"\r\n ]\r\n }, floorParams = {\r\n orders: \"floorSequenceID desc\",\r\n pageNumber: 1,\r\n pageSize: 1000,\r\n projection: [\r\n \"buildingId\",\r\n \"id\",\r\n \"localName\",\r\n \"floorSequenceID\"\r\n ]\r\n }\r\n Promise.all([BuilderController.buildingQuery(buildParams), FloorController.floorQuery(floorParams)]).then(values => {\r\n let builData = values[0].content, floorData = values[1].content\r\n data = builData.map(build => {\r\n return {\r\n value: build.id,\r\n label: build.localName\r\n }\r\n })\r\n data.unshift({\r\n value: \"all\",\r\n label: \"全部\"\r\n }, {\r\n value: \"noKnow\",\r\n label: \"不在建筑内\"\r\n })\r\n data.forEach(build => {\r\n floorData.forEach(floor => {\r\n if (build.value == floor.buildingId && floor.id && floor.localName) {\r\n if (build.children) {\r\n build.children.push({\r\n value: floor.id,\r\n label: floor.localName,\r\n FloorSequenceID: floor.floorSequenceID\r\n })\r\n } else {\r\n build.children = []\r\n build.children.push({\r\n value: \"all\",\r\n label: \"全部\"\r\n }, {\r\n value: 'noKnow',\r\n label: \"不在楼层内\"\r\n }, {\r\n value: floor.id,\r\n label: floor.localName,\r\n FloorSequenceID: floor.floorSequenceID\r\n })\r\n }\r\n }\r\n })\r\n })\r\n this.bfoptions = data\r\n })\r\n },\r\n //获取空间分区数据\r\n getSpaceData() {\r\n let params = {\r\n type: \"space\"\r\n }\r\n DicController.queryPhysicsAllType(params).then(res => {\r\n if (res.content) {\r\n\t\t\t\t\tthis.zoneList = res.content.filter(item => {\r\n\t\t\t\t\t\tif (item.name !== item.aliasName) {\r\n\t\t\t\t\t\t\titem.name = `${item.name}(${item.aliasName})`\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (item.code != 'Ispace') {\r\n\t\t\t\t\t\t\treturn item\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t\tthis.zoneList.unshift({\r\n\t\t\t\t\t\tname: '全部',\r\n\t\t\t\t\t\tcode: 'all'\r\n\t\t\t\t\t})\r\n\t\t\t\t\tthis.zoneList.push({\r\n\t\t\t\t\t\tname: '不在任何业务空间内',\r\n\t\t\t\t\t\tcode: 'noKnow'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n })\r\n },\r\n // 修改设备类型\r\n handleChangeDevice(val) {\r\n this.zoneListIsShow()\r\n },\r\n // 修改建筑楼层\r\n handleChangeBf(val) {\r\n this.zoneListIsShow()\r\n // 重置空间实例选择\r\n this.space = []\r\n this.spaceList = []\r\n this.handleChangeSpaceItem()\r\n },\r\n //判断是否显示空间分区选择\r\n zoneListIsShow() {\r\n let lastVal = this.buildFloor.slice(-1)[0]\r\n if (!lastVal || lastVal == 'noKnow' || this.buildFloor[0] == 'all' || this.deviceType.length != 6) {\r\n this.spaceShow = false\r\n } else {\r\n this.spaceShow = true\r\n }\r\n },\r\n //修改分区类型\r\n handleChangeZone() {\r\n // 重置空间实例选择\r\n this.space = []\r\n this.spaceList = []\r\n this.handleChangeSpaceItem()\r\n },\r\n // 获取空间实例\r\n handleChangeSpaceItem() {\r\n if (this.zone != 'all' && this.zone != 'noKnow') {\r\n let nodes = []\r\n let recursionGetData = (pageNum, zone) => {\r\n pageNum = pageNum ? pageNum : 1\r\n let params = {\r\n orders: \"createTime desc, id asc\",\r\n pageNumber: pageNum,\r\n pageSize: 1000,\r\n projection: [\"id\", \"name\", \"localName\", \"createTime\"],\r\n zoneType: zone\r\n }\r\n if (this.spaceShow) {\r\n if (this.buildFloor.length == 2 && this.buildFloor[1] != 'all') {\r\n params.buildingId = this.buildFloor[0];\r\n params.floorId = this.buildFloor[1];\r\n } else {\r\n params.buildingId = this.buildFloor[0];\r\n }\r\n }\r\n ScanController.zoneQuery(params, res => {\r\n nodes = nodes.concat(res.content.map(item => ({\r\n value: item.id,\r\n label: item.localName ? item.localName : item.name\r\n })))\r\n if (res.total / (res.pageSize * res.pageNumber) > 1) {\r\n recursionGetData(res.pageNumber + 1, zone)\r\n } else {\r\n this.spaceList = nodes\r\n }\r\n })\r\n }\r\n recursionGetData(1, this.zone)\r\n }\r\n },\r\n // 点击取消关闭弹窗\r\n handleClickClose() {\r\n this.dialog.linkAssets = false\r\n },\r\n // 批量关联资产详情页\r\n toLinkAssets() {\r\n let query = {}\r\n // 校验必填项\r\n if (!this.deviceType) {\r\n this.$message.info('请选择设备类型!')\r\n return false\r\n } else if (!this.buildFloor.length) {\r\n this.$message.info('请选择建筑楼层!')\r\n return false\r\n }\r\n if (this.spaceShow) { //选择了空间\r\n if (this.zone == 'all') {//全部空间\r\n query = {\r\n deviceType: this.deviceType,\r\n buildFloor: this.buildFloor\r\n }\r\n } else {\r\n if (this.space.length) {//选择了具体的空间实例\r\n query = {\r\n deviceType: this.deviceType,\r\n buildFloor: this.buildFloor,\r\n spaceList: this.space\r\n }\r\n } else {\r\n query = {\r\n deviceType: this.deviceType,\r\n buildFloor: this.buildFloor,\r\n spaceList: this.zone //(包含具体的业务空间分区和不在任何分区两种情况)\r\n }\r\n }\r\n }\r\n } else {\r\n query = {\r\n deviceType: this.deviceType,\r\n buildFloor: this.buildFloor\r\n }\r\n }\r\n this.$router.push({\r\n name: \"batchlinkAssets\",\r\n params: query\r\n })\r\n }\r\n },\r\n watch: {}\r\n};\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n.condition-title {\r\n width: 100px;\r\n display: inline-block;\r\n text-align: right;\r\n margin-left: 10px;\r\n margin-right: 12px;\r\n color: #999999;\r\n font-size: 14px;\r\n vertical-align: top;\r\n}\r\n\r\n/deep/ .el-dialog__body {\r\n max-height: 420px;\r\n overflow-y: auto;\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./linkassets.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./linkassets.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./linkassets.vue?vue&type=template&id=44a7f606&scoped=true&\"\nimport script from \"./linkassets.vue?vue&type=script&lang=js&\"\nexport * from \"./linkassets.vue?vue&type=script&lang=js&\"\nimport style0 from \"./linkassets.vue?vue&type=style&index=0&id=44a7f606&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"44a7f606\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{staticClass:\"dialogFormVisible\",attrs:{\"title\":\"深化点表导入\",\"visible\":_vm.dialogFormVisible},on:{\"update:visible\":function($event){_vm.dialogFormVisible=$event},\"close\":_vm.handleCloseDialog}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.active == 1),expression:\"active == 1\"}]},[_c('h5',{staticClass:\"title\"},[_vm._v(\"1、需要在深化点表中插入1列,表头为“反馈信息”,此列请不要填充内容。\")]),_c('h5',{staticClass:\"title\"},[_vm._v(\"2、深化点表中需含“本地编码”、“信息点编码”、“表号”、“功能号”、“反馈信息”五列,对五列的具体位置和顺序不做要求。\")]),_c('h5',{staticClass:\"title\"},[_vm._v(\" 3、本地编码不能为空:系统从上到下逐行识别信息,若遇到本地编码的单元格为空时,系统将判定已完成信息识别,不再向下继续识别。 \")]),_c('h5',{staticClass:\"title\"},[_vm._v(\" 4、上传深化点表结束后,请在弹窗左下角点击“下载导入结果”,下载后查看表格“反馈信息”列,若上传失败,则根据失败原因在反馈列显示“本地编码重复”、“信息点编码不能为空”、“表号不能为空”、“功能号不能为空”等。 \")]),_c('el-upload',{staticClass:\"upload-demo\",attrs:{\"drag\":\"\",\"action\":(\"\" + _vm.baseUrl + _vm.dataCenter + \"/graphic/import/point\"),\"accept\":\".xlsx\",\"show-file-list\":false,\"headers\":_vm.headers,\"name\":\"file\",\"multiple\":\"\",\"on-progress\":_vm.progress,\"on-success\":_vm.success,\"on-error\":_vm.error}},[_c('i',{staticClass:\"el-icon-upload\"}),_c('div',{staticClass:\"el-upload__text\"},[_vm._v(\"将Excel文件拖到此处,或\"),_c('em',[_vm._v(\"点击上传Excel文件\")])]),_c('div',{staticClass:\"el-upload__tip tips\",attrs:{\"slot\":\"tip\"},slot:\"tip\"},[_vm._v(\" 上传的Excel数据将完全覆盖当前设备信息点(原有数据不会保留) \"),(_vm.historyKey)?_c('el-button',{staticStyle:{\"float\":\"right\"},attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.download(_vm.historyKey)}}},[_vm._v(\"下载上一次导入结果\")]):_vm._e()],1)])],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.active == 2),expression:\"active == 2\"}]},[_c('div',{staticClass:\"block\"},[_c('el-timeline',_vm._l((_vm.activities),function(activity,index){return _c('el-timeline-item',{key:index,attrs:{\"icon\":activity.icon,\"type\":activity.type,\"color\":activity.color,\"size\":activity.size}},[_vm._v(\" \"+_vm._s(activity.content)+\" \")])}),1)],1),_c('el-button',{attrs:{\"disabled\":!_vm.messageKey},on:{\"click\":function($event){return _vm.download(_vm.messageKey)}}},[_vm._v(\"下载导入结果\")]),_c('footer',{staticClass:\"dialog-footer\",staticStyle:{\"text-align\":\"right\"},attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.active = 1}}},[_vm._v(\"返回\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){_vm.dialogFormVisible = false}}},[_vm._v(\"确认\")])],1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <el-dialog title=\"深化点表导入\" :visible.sync=\"dialogFormVisible\" class=\"dialogFormVisible\" @close=\"handleCloseDialog\">\r\n <div v-show=\"active == 1\">\r\n <h5 class=\"title\">1、需要在深化点表中插入1列,表头为“反馈信息”,此列请不要填充内容。</h5>\r\n <h5 class=\"title\">2、深化点表中需含“本地编码”、“信息点编码”、“表号”、“功能号”、“反馈信息”五列,对五列的具体位置和顺序不做要求。</h5>\r\n <h5 class=\"title\">\r\n 3、本地编码不能为空:系统从上到下逐行识别信息,若遇到本地编码的单元格为空时,系统将判定已完成信息识别,不再向下继续识别。\r\n </h5>\r\n <h5 class=\"title\">\r\n 4、上传深化点表结束后,请在弹窗左下角点击“下载导入结果”,下载后查看表格“反馈信息”列,若上传失败,则根据失败原因在反馈列显示“本地编码重复”、“信息点编码不能为空”、“表号不能为空”、“功能号不能为空”等。\r\n </h5>\r\n <el-upload\r\n class=\"upload-demo\"\r\n drag\r\n :action=\"`${baseUrl}${dataCenter}/graphic/import/point`\"\r\n accept=\".xlsx\"\r\n :show-file-list=\"false\"\r\n :headers=\"headers\"\r\n name=\"file\"\r\n multiple\r\n :on-progress=\"progress\"\r\n :on-success=\"success\"\r\n :on-error=\"error\"\r\n >\r\n <i class=\"el-icon-upload\"></i>\r\n <div class=\"el-upload__text\">将Excel文件拖到此处,或<em>点击上传Excel文件</em></div>\r\n <div class=\"el-upload__tip tips\" slot=\"tip\">\r\n 上传的Excel数据将完全覆盖当前设备信息点(原有数据不会保留)\r\n <el-button style=\"float: right\" v-if=\"historyKey\" type=\"primary\" @click=\"download(historyKey)\">下载上一次导入结果</el-button>\r\n </div>\r\n </el-upload>\r\n </div>\r\n <div v-show=\"active == 2\">\r\n <div class=\"block\">\r\n <el-timeline>\r\n <el-timeline-item\r\n v-for=\"(activity, index) in activities\"\r\n :key=\"index\"\r\n :icon=\"activity.icon\"\r\n :type=\"activity.type\"\r\n :color=\"activity.color\"\r\n :size=\"activity.size\"\r\n >\r\n {{ activity.content }}\r\n </el-timeline-item>\r\n </el-timeline>\r\n </div>\r\n <el-button :disabled=\"!messageKey\" @click=\"download(messageKey)\">下载导入结果</el-button>\r\n <footer slot=\"footer\" style=\"text-align: right\" class=\"dialog-footer\">\r\n <el-button @click=\"active = 1\">返回</el-button>\r\n <el-button type=\"primary\" @click=\"dialogFormVisible = false\">确认</el-button>\r\n </footer>\r\n </div>\r\n </el-dialog>\r\n</template>\r\n\r\n<script>\r\nimport storage from \"@/utils/storageUtil\";\r\nimport ScanController from \"@/controller/old-adm/ScanController\";\r\nimport { mapGetters } from \"vuex\";\r\nimport { datacenter_pre } from \"@/controller/old-adm/preTypes\";\r\n\r\nexport default {\r\n data() {\r\n return {\r\n active: 1,\r\n dialogFormVisible: false,\r\n messageKey: \"\",\r\n historyKey: \"\",\r\n activities: [],\r\n baseUrl: window.__systemConf.baseServiceUrl,\r\n dataCenter: datacenter_pre,\r\n };\r\n },\r\n computed: {\r\n ...mapGetters(\"layout\", [\"projectId\"]),\r\n headers() {\r\n return {\r\n //头信息中的 ProjectId 改为 projectId nh-2021.11.25\r\n projectId: this.projectId,\r\n Comming: \"adm\",\r\n Account: storage.get(\"user_name\"),\r\n };\r\n },\r\n },\r\n methods: {\r\n openDialog() {\r\n this.dialogFormVisible = true;\r\n },\r\n /**\r\n * 获取导入历史key\r\n */\r\n getHistoryKey() {\r\n const params = {\r\n filters: \"type = 'iot'\",\r\n orders: \"createTime desc\",\r\n pageSize: 1,\r\n };\r\n ScanController.queryDownloadsKey(params).then((res) => {\r\n if (res.result === \"success\" && res.content && res.content.length && res.content[0].key) {\r\n this.historyKey = res.content[0].key;\r\n } else {\r\n this.historyKey = \"\";\r\n }\r\n });\r\n },\r\n progress(event, file, fileList) {\r\n this.active = 2;\r\n this.activities = [\r\n {\r\n content: \"数据文件处理中..\",\r\n size: \"large\",\r\n type: \"primary\",\r\n icon: \"el-icon-check\",\r\n color: \"#0bbd87\",\r\n },\r\n ];\r\n },\r\n success(event, file, fileList) {\r\n if (event.result == \"success\") {\r\n this.messageKey = event.message;\r\n if (event.content && event.content[0] && event.content[0].state === \"0\") {\r\n // 全部导入成功\r\n this.activities = [\r\n {\r\n content: \"数据文件处理中..\",\r\n size: \"large\",\r\n type: \"primary\",\r\n icon: \"el-icon-check\",\r\n color: \"#0bbd87\",\r\n },\r\n {\r\n content: `全部导入成功(导入信息点:${event.content[0].successCount} 条)`,\r\n color: \"#0bbd87\",\r\n icon: \"el-icon-check\",\r\n size: \"large\",\r\n type: \"success\",\r\n },\r\n ];\r\n // 导入成功刷新台账数据\r\n this.$emit(\"upDataDevice\");\r\n } else if (event.content && event.content[0] && event.content[0].state === \"1\") {\r\n // 部分导入成功\r\n this.activities = [\r\n {\r\n content: \"数据文件处理中..\",\r\n size: \"large\",\r\n type: \"primary\",\r\n icon: \"el-icon-check\",\r\n color: \"#0bbd87\",\r\n },\r\n {\r\n content: `部分导入成功(导入成功:${event.content[0].successCount} 条;导入失败:${event.content[0].failCount} 条)`,\r\n color: \"#0bbd87\",\r\n icon: \"el-icon-check\",\r\n size: \"large\",\r\n type: \"success\",\r\n },\r\n ];\r\n // 导入成功刷新台账数据\r\n this.$emit(\"upDataDevice\");\r\n } else {\r\n // 导入失败\r\n this.activities = [\r\n {\r\n content: \"数据文件处理中..\",\r\n size: \"large\",\r\n type: \"primary\",\r\n icon: \"el-icon-check\",\r\n color: \"#0bbd87\",\r\n },\r\n {\r\n content: \"导入失败!\",\r\n color: \"#f56c6c\",\r\n icon: \"el-icon-close\",\r\n size: \"large\",\r\n type: \"primary\",\r\n },\r\n ];\r\n }\r\n } else {\r\n this.messageKey = \"\";\r\n if (event.result === \"failure\" && event.message) {\r\n this.activities = [\r\n {\r\n content: \"数据文件处理中..\",\r\n size: \"large\",\r\n type: \"primary\",\r\n icon: \"el-icon-check\",\r\n color: \"#0bbd87\",\r\n },\r\n {\r\n content: `导入失败!(${event.message})`,\r\n color: \"#f56c6c\",\r\n icon: \"el-icon-close\",\r\n size: \"large\",\r\n type: \"primary\",\r\n },\r\n ];\r\n } else {\r\n this.activities = [\r\n {\r\n content: \"数据文件处理中..\",\r\n size: \"large\",\r\n type: \"primary\",\r\n icon: \"el-icon-check\",\r\n color: \"#0bbd87\",\r\n },\r\n {\r\n content: \"导入失败!\",\r\n color: \"#f56c6c\",\r\n icon: \"el-icon-close\",\r\n size: \"large\",\r\n type: \"primary\",\r\n },\r\n ];\r\n }\r\n }\r\n },\r\n error(event, file, fileList) {},\r\n download(key) {\r\n const url = `${this.baseUrl}${datacenter_pre}/graphic/downloads/point?key=` + key;\r\n let a = document.createElement(\"a\");\r\n a.href = url;\r\n a.download = `${key}.xlsx`;\r\n a.click();\r\n },\r\n handleCloseDialog() {\r\n this.messageKey = \"\";\r\n this.historyKey = \"\";\r\n this.active = 1;\r\n this.activities = [];\r\n },\r\n },\r\n watch: {\r\n dialogFormVisible(n, o) {\r\n // 打开弹窗获取历史导入key值\r\n if (n) this.getHistoryKey();\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.dialogFormVisible {\r\n .time {\r\n margin: 10px 0;\r\n font-size: 15px;\r\n\r\n .text {\r\n margin-right: 10px;\r\n font-size: 14px;\r\n }\r\n }\r\n\r\n .tips {\r\n color: red;\r\n font-size: 14px;\r\n font-weight: bold;\r\n }\r\n\r\n /deep/ .el-upload {\r\n width: 100%;\r\n }\r\n\r\n /deep/ .el-upload-dragger {\r\n margin: 0 auto;\r\n width: 100%;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dynamicDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dynamicDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./dynamicDialog.vue?vue&type=template&id=24050cd1&scoped=true&\"\nimport script from \"./dynamicDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./dynamicDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./dynamicDialog.vue?vue&type=style&index=0&id=24050cd1&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"24050cd1\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{staticClass:\"dialogFormVisible\",attrs:{\"title\":\"台账信息导入\",\"visible\":_vm.dialogFormVisible},on:{\"update:visible\":function($event){_vm.dialogFormVisible=$event},\"close\":_vm.handleCloseDialog}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.active == 1),expression:\"active == 1\"}]},[_c('h5',{staticClass:\"title\"},[_vm._v(\" 1、只可导入维护数据类型为“单个-数值量(Num)、单个-字符量(Str)、单个-布尔量(Bool)、单个-单选枚举量(Eunm)、单个-日期时间量(DTime)”的静态信息点的值。 \")]),_c('h5',{staticClass:\"title\"},[_vm._v(\"2、“单个-布尔量(Bool)、单个-单选枚举量(Eunm)”的值需填写选项的编码、“单个-日期时间量(DTime)”的值需填写YYYYMMDD。\")]),_c('h5',{staticClass:\"title\"},[_vm._v(\"3、第一列为识别设备实例的唯一标识;第二列为实例的设备类型。其他列为信息点,可任意增加信息点列。\")]),_c('h5',{staticClass:\"title\"},[_vm._v(\"4、设备唯一标识三选一:设备本地编码EquipLocalID、数字化交付编码DigitaIDeliveryID、设备类型ClassCode。\")]),_c('h5',{staticClass:\"title\"},[_vm._v(\"5、行为对象实例对应该信息点的值。值为空时不做处理,不会清空台账中已维护的值。\")]),_c('el-upload',{staticClass:\"upload-demo\",attrs:{\"drag\":\"\",\"action\":(\"\" + _vm.baseUrl + _vm.dataCenter + \"/object/equip/import/\"),\"accept\":\".xlsx\",\"show-file-list\":false,\"headers\":_vm.headers,\"name\":\"file\",\"multiple\":\"\",\"on-progress\":_vm.progress,\"on-success\":_vm.success,\"on-error\":_vm.error}},[_c('i',{staticClass:\"el-icon-upload\"}),_c('div',{staticClass:\"el-upload__text\"},[_vm._v(\"将Excel文件拖到此处,或\"),_c('em',[_vm._v(\"点击上传Excel文件\")])]),_c('div',{staticClass:\"el-upload__tip tips\",attrs:{\"slot\":\"tip\"},slot:\"tip\"},[_vm._v(\" 上传的Excel数据将完全覆盖当前设备信息点(原有数据不会保留) \"),_c('el-button',{staticStyle:{\"float\":\"right\"},attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.downloadEquipTemplate()}}},[_vm._v(\"下载模板\")]),(_vm.historyKey)?_c('el-button',{staticStyle:{\"float\":\"right\",\"margin-right\":\"10px\"},attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.download(_vm.historyKey)}}},[_vm._v(\"下载上一次导入结果\")]):_vm._e()],1)])],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.active == 2),expression:\"active == 2\"}]},[_c('div',{staticClass:\"block\"},[_c('el-timeline',_vm._l((_vm.activities),function(activity,index){return _c('el-timeline-item',{key:index,attrs:{\"icon\":activity.icon,\"type\":activity.type,\"color\":activity.color,\"size\":activity.size}},[_vm._v(\" \"+_vm._s(activity.content)+\" \")])}),1)],1),_c('el-button',{attrs:{\"disabled\":!_vm.messageKey},on:{\"click\":function($event){return _vm.download(_vm.messageKey)}}},[_vm._v(\"下载导入结果\")]),_c('footer',{staticClass:\"dialog-footer\",staticStyle:{\"text-align\":\"right\"},attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.active = 1}}},[_vm._v(\"返回\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){_vm.dialogFormVisible = false}}},[_vm._v(\"确认\")])],1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <el-dialog title=\"台账信息导入\" :visible.sync=\"dialogFormVisible\" class=\"dialogFormVisible\" @close=\"handleCloseDialog\">\r\n <div v-show=\"active == 1\">\r\n <h5 class=\"title\">\r\n 1、只可导入维护数据类型为“单个-数值量(Num)、单个-字符量(Str)、单个-布尔量(Bool)、单个-单选枚举量(Eunm)、单个-日期时间量(DTime)”的静态信息点的值。\r\n </h5>\r\n <h5 class=\"title\">2、“单个-布尔量(Bool)、单个-单选枚举量(Eunm)”的值需填写选项的编码、“单个-日期时间量(DTime)”的值需填写YYYYMMDD。</h5>\r\n <h5 class=\"title\">3、第一列为识别设备实例的唯一标识;第二列为实例的设备类型。其他列为信息点,可任意增加信息点列。</h5>\r\n <h5 class=\"title\">4、设备唯一标识三选一:设备本地编码EquipLocalID、数字化交付编码DigitaIDeliveryID、设备类型ClassCode。</h5>\r\n <h5 class=\"title\">5、行为对象实例对应该信息点的值。值为空时不做处理,不会清空台账中已维护的值。</h5>\r\n <el-upload\r\n class=\"upload-demo\"\r\n drag\r\n :action=\"`${baseUrl}${dataCenter}/object/equip/import/`\"\r\n accept=\".xlsx\"\r\n :show-file-list=\"false\"\r\n :headers=\"headers\"\r\n name=\"file\"\r\n multiple\r\n :on-progress=\"progress\"\r\n :on-success=\"success\"\r\n :on-error=\"error\"\r\n >\r\n <i class=\"el-icon-upload\"></i>\r\n <div class=\"el-upload__text\">将Excel文件拖到此处,或<em>点击上传Excel文件</em></div>\r\n <div class=\"el-upload__tip tips\" slot=\"tip\">\r\n 上传的Excel数据将完全覆盖当前设备信息点(原有数据不会保留)\r\n <el-button style=\"float: right;\" type=\"primary\" @click=\"downloadEquipTemplate()\">下载模板</el-button>\r\n <el-button style=\"float: right; margin-right: 10px;\" v-if=\"historyKey\" type=\"primary\" @click=\"download(historyKey)\">下载上一次导入结果</el-button>\r\n </div>\r\n </el-upload>\r\n </div>\r\n <div v-show=\"active == 2\">\r\n <div class=\"block\">\r\n <el-timeline>\r\n <el-timeline-item\r\n v-for=\"(activity, index) in activities\"\r\n :key=\"index\"\r\n :icon=\"activity.icon\"\r\n :type=\"activity.type\"\r\n :color=\"activity.color\"\r\n :size=\"activity.size\"\r\n >\r\n {{ activity.content }}\r\n </el-timeline-item>\r\n </el-timeline>\r\n </div>\r\n <el-button :disabled=\"!messageKey\" @click=\"download(messageKey)\">下载导入结果</el-button>\r\n <footer slot=\"footer\" style=\"text-align: right\" class=\"dialog-footer\">\r\n <el-button @click=\"active = 1\">返回</el-button>\r\n <el-button type=\"primary\" @click=\"dialogFormVisible = false\">确认</el-button>\r\n </footer>\r\n </div>\r\n </el-dialog>\r\n</template>\r\n\r\n<script>\r\nimport storage from \"@/utils/storageUtil\";\r\nimport ScanController from \"@/controller/old-adm/ScanController\";\r\nimport { mapGetters } from \"vuex\";\r\nimport { datacenter_pre, graphhic_pre } from \"@/controller/old-adm/preTypes\";\r\n\r\nexport default {\r\n data() {\r\n return {\r\n active: 1,\r\n dialogFormVisible: false,\r\n messageKey: \"\",\r\n historyKey: \"\",\r\n activities: [],\r\n baseUrl: window.__systemConf.baseServiceUrl,\r\n dataCenter: datacenter_pre,\r\n };\r\n },\r\n computed: {\r\n ...mapGetters(\"layout\", [\"projectId\"]),\r\n headers() {\r\n return {\r\n //头信息中的 ProjectId 改为 projectId nh-2021.11.25\r\n projectId: this.projectId,\r\n Comming: \"adm\",\r\n Account: storage.get(\"user_name\"),\r\n };\r\n },\r\n },\r\n methods: {\r\n openDialog() {\r\n this.dialogFormVisible = true;\r\n },\r\n /**\r\n * 获取导入历史key\r\n */\r\n getHistoryKey() {\r\n const params = {\r\n filters: \"type = 'static'\",\r\n orders: \"createTimse desc\",\r\n pageSize: 1,\r\n };\r\n ScanController.queryDownloadsKey(params).then((res) => {\r\n ScanController.queryDownloadsKey(params).then((res) => {\r\n if (res.result === \"success\" && res.content && res.content.length && res.content[0].key) {\r\n this.historyKey = res.content[0].key;\r\n } else {\r\n this.historyKey = \"\";\r\n }\r\n });\r\n });\r\n },\r\n progress(event, file, fileList) {\r\n this.active = 2;\r\n this.activities = [\r\n {\r\n content: \"数据文件处理中..\",\r\n size: \"large\",\r\n type: \"primary\",\r\n icon: \"el-icon-check\",\r\n color: \"#0bbd87\",\r\n },\r\n ];\r\n },\r\n success(event, file, fileList) {\r\n if (event.result == \"success\") {\r\n this.messageKey = event.message;\r\n if (event.content && event.content[0] && event.content[0].state === \"0\") {\r\n // 全部导入成功\r\n this.activities = [\r\n {\r\n content: \"数据文件处理中..\",\r\n size: \"large\",\r\n type: \"primary\",\r\n icon: \"el-icon-check\",\r\n color: \"#0bbd87\",\r\n },\r\n {\r\n content: `全部导入成功(导入信息点:${event.content[0].successCount} 条)`,\r\n color: \"#0bbd87\",\r\n icon: \"el-icon-check\",\r\n size: \"large\",\r\n type: \"success\",\r\n },\r\n ];\r\n // 导入成功刷新台账数据\r\n this.$emit(\"upDataDevice\");\r\n } else if (event.content && event.content[0] && event.content[0].state === \"1\") {\r\n // 部分导入成功\r\n this.activities = [\r\n {\r\n content: \"数据文件处理中..\",\r\n size: \"large\",\r\n type: \"primary\",\r\n icon: \"el-icon-check\",\r\n color: \"#0bbd87\",\r\n },\r\n {\r\n content: `部分导入成功(导入成功:${event.content[0].successCount} 条;导入失败:${event.content[0].failCount} 条)`,\r\n color: \"#0bbd87\",\r\n icon: \"el-icon-check\",\r\n size: \"large\",\r\n type: \"success\",\r\n },\r\n ];\r\n // 导入成功刷新台账数据\r\n this.$emit(\"upDataDevice\");\r\n } else {\r\n // 导入失败\r\n this.activities = [\r\n {\r\n content: \"数据文件处理中..\",\r\n size: \"large\",\r\n type: \"primary\",\r\n icon: \"el-icon-check\",\r\n color: \"#0bbd87\",\r\n },\r\n {\r\n content: \"导入失败!\",\r\n color: \"#f56c6c\",\r\n icon: \"el-icon-close\",\r\n size: \"large\",\r\n type: \"primary\",\r\n },\r\n ];\r\n }\r\n } else {\r\n this.messageKey = \"\";\r\n if (event.result === \"failure\" && event.message) {\r\n this.activities = [\r\n {\r\n content: \"数据文件处理中..\",\r\n size: \"large\",\r\n type: \"primary\",\r\n icon: \"el-icon-check\",\r\n color: \"#0bbd87\",\r\n },\r\n {\r\n content: `导入失败!(${event.message})`,\r\n color: \"#f56c6c\",\r\n icon: \"el-icon-close\",\r\n size: \"large\",\r\n type: \"primary\",\r\n },\r\n ];\r\n } else {\r\n this.activities = [\r\n {\r\n content: \"数据文件处理中..\",\r\n size: \"large\",\r\n type: \"primary\",\r\n icon: \"el-icon-check\",\r\n color: \"#0bbd87\",\r\n },\r\n {\r\n content: \"导入失败!\",\r\n color: \"#f56c6c\",\r\n icon: \"el-icon-close\",\r\n size: \"large\",\r\n type: \"primary\",\r\n },\r\n ];\r\n }\r\n }\r\n },\r\n error(event, file, fileList) {},\r\n download(key) {\r\n const url = `${this.baseUrl}${datacenter_pre}/graphic/downloads/point?key=` + key;\r\n let a = document.createElement(\"a\");\r\n a.href = url;\r\n a.download = `${key}.xlsx`;\r\n a.click();\r\n\r\n },\r\n /**\r\n * 台账信息导入模板\r\n */\r\n downloadEquipTemplate() {\r\n // ScanController.equipTemplate();\r\n // window.location.href = graphhic_pre + \"/downloads/equip/template\"\r\n window.location.href =window.__systemConf.baseServiceUrl +graphhic_pre +\"/downloads/equip/template\";\r\n },\r\n handleCloseDialog() {\r\n this.messageKey = \"\";\r\n this.historyKey = \"\";\r\n this.active = 1;\r\n this.activities = [];\r\n },\r\n },\r\n watch: {\r\n dialogFormVisible(n, o) {\r\n // 打开弹窗获取历史导入key值\r\n if (n) this.getHistoryKey();\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.dialogFormVisible {\r\n .time {\r\n margin: 10px 0;\r\n font-size: 15px;\r\n\r\n .text {\r\n margin-right: 10px;\r\n font-size: 14px;\r\n }\r\n }\r\n\r\n .tips {\r\n color: red;\r\n font-size: 14px;\r\n font-weight: bold;\r\n }\r\n\r\n /deep/ .el-upload {\r\n width: 100%;\r\n }\r\n\r\n /deep/ .el-upload-dragger {\r\n margin: 0 auto;\r\n width: 100%;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./staticDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./staticDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./staticDialog.vue?vue&type=template&id=ae04942a&scoped=true&\"\nimport script from \"./staticDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./staticDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./staticDialog.vue?vue&type=style&index=0&id=ae04942a&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ae04942a\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div id=\"deviceList\">\r\n <saga-title :mess=\"mess\"></saga-title>\r\n <div class=\"table-main\">\r\n <div class=\"search-header\">\r\n <floor-cascader @change=\"changeFloor\"></floor-cascader>\r\n <my-cascader ref=\"cascader\" @change=\"changeDevice\"></my-cascader>\r\n <el-tooltip class=\"item\" effect=\"dark\" content=\"按照本地名称 | 本地编码 | 图纸编码 | 交付编码关键字搜索\" placement=\"top-start\">\r\n <el-input\r\n v-show=\"param.deviceId\"\r\n v-model=\"param.keyWord\"\r\n @keyup.enter.native=\"handleChangeKeyWord\"\r\n @clear=\"handleChangeKeyWord\"\r\n clearable\r\n placeholder=\"请输入关键字\"\r\n prefix-icon=\"el-icon-search\"\r\n style=\"width: 250px; margin-left: 10px\"\r\n ></el-input>\r\n </el-tooltip>\r\n <!-- <el-button size=\"small\" @click=\"handleLinkAssets\" class=\"iconfont icon-batchassociation\">批量关联资产</el-button> -->\r\n <!-- <el-tooltip class=\"item\" effect=\"dark\" content=\"请选择建筑楼层和设备类\" placement=\"top-start\"> -->\r\n <el-dropdown @command=\"handleCommand\" class=\"deviceList-excel\">\r\n <el-button type=\"primary\"> 数据导入<i class=\"el-icon-arrow-down el-icon--right\"></i> </el-button>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item command=\"dynamic\">深化点表导入</el-dropdown-item>\r\n <el-dropdown-item command=\"static\">台账信息导入</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n <!-- </el-tooltip> -->\r\n </div>\r\n <hanson-table @close=\"close\" :graphyId=\"graphyId\" ref=\"tableMain\"></hanson-table>\r\n </div>\r\n <linkassets-dialog :dialog=\"dialog\"></linkassets-dialog>\r\n <!-- 深化点表导入 -->\r\n <dynamic-dialog ref=\"dynamicDialog\" @upDataDevice=\"upDataDevice\"></dynamic-dialog>\r\n <!-- 台账信息导入 -->\r\n <static-dialog ref=\"staticDialog\" @upDataDevice=\"upDataDevice\"></static-dialog>\r\n </div>\r\n</template>\r\n<script>\r\nimport sagaTitle from \"../components/lib/title\";\r\nimport floorCascader from \"../components/lib/floorCascader\";\r\nimport myCascader from \"../components/lib/equipCascader\";\r\nimport hansonTable from \"../components/handsontables/device\";\r\nimport linkassetsDialog from \"../components/lib/linkassets\";\r\n\r\nimport EquipController from \"@/controller/old-adm/equipController\";\r\nimport dynamicDialog from \"../components/lib/dynamicDialog\";\r\nimport staticDialog from \"../components/lib/staticDialog\";\r\nimport { mapGetters } from \"vuex\";\r\n\r\nexport default {\r\n components: {\r\n sagaTitle,\r\n floorCascader,\r\n myCascader,\r\n hansonTable,\r\n linkassetsDialog,\r\n staticDialog,\r\n dynamicDialog,\r\n },\r\n data() {\r\n return {\r\n currentBuilding: \"\", // 当前建筑楼层信息\r\n mess: {\r\n perjectName: \"\",\r\n name: [\r\n {\r\n key: \"设备\",\r\n num: 0,\r\n },\r\n {\r\n key: \"资产\",\r\n num: 0,\r\n },\r\n ],\r\n },\r\n param: {\r\n buildId: \"\",\r\n floorId: \"\",\r\n deviceId: \"\",\r\n keyWord: \"\", //检索关键字\r\n ProjId: \"\",\r\n secret: \"\",\r\n },\r\n assetGroupList: [],\r\n graphyId: null,\r\n dialog: {\r\n linkAssets: false,\r\n },\r\n };\r\n },\r\n computed: {\r\n ...mapGetters('layout', [\"projectId\", \"projects\", \"secret\", \"userId\"]),\r\n },\r\n created() {\r\n this.param.ProjId = this.projectId;\r\n this.param.secret = this.secret;\r\n this.getProjName();\r\n this.getCount();\r\n },\r\n activated() {\r\n if (!this.$route.meta.isBack) {\r\n this.param.ProjId = this.projectId;\r\n this.param.secret = this.secret;\r\n this.getProjName();\r\n this.getCount();\r\n let deviceId = this.$route.params.deviceId;\r\n if (deviceId) {\r\n this.$nextTick(() => {\r\n this.$refs.cascader.setValue(deviceId);\r\n this.changeDevice({ code: deviceId, facility: this.$route.params.facility });\r\n });\r\n } else {\r\n this.$nextTick(() => {\r\n this.$refs.cascader.setValue(\"\");\r\n this.changeDevice({ code: \"\", facility: \"\" });\r\n });\r\n }\r\n }\r\n this.$route.meta.isBack = false;\r\n },\r\n /**\r\n * 路由守卫\r\n * 从部件和详情页返回,设置页面缓存\r\n */\r\n beforeRouteEnter(to, from, next) {\r\n const routerList = [\"/ledger/parts\", \"/ledger/partsmanage\", \"/ledger/deviceDetails\"]\r\n if (routerList.includes(from.path)) {\r\n to.meta.isBack = true;\r\n } else {\r\n to.meta.isBack = false;\r\n }\r\n next();\r\n },\r\n watch: {\r\n projectId() {\r\n this.param.ProjId = this.projectId;\r\n this.param.secret = this.secret;\r\n this.getProjName();\r\n this.getCount();\r\n },\r\n },\r\n methods: {\r\n getProjName() {\r\n this.projects.forEach((item) => {\r\n if (item.id == this.projectId) this.mess.perjectName = item.name;\r\n });\r\n },\r\n close(val) {\r\n this.getCount();\r\n this.$refs.tableMain.getTableData();\r\n },\r\n //获取统计数量\r\n async getCount() {\r\n let param = {\r\n filters: \"not propertyId isnull\",\r\n };\r\n let [res1, res2] = await Promise.all([EquipController.countEquip({filters: ''}), EquipController.countEquip(param)])\r\n this.mess.name[0].num = res1.count\r\n this.mess.name[1].num = res2.count;\r\n },\r\n //修改楼层\r\n changeFloor(value) {\r\n if (value[0]) {\r\n this.param.buildId = value[0];\r\n }\r\n if (value[1]) {\r\n this.param.floorId = value[1];\r\n } else {\r\n this.param.floorId = null;\r\n }\r\n if (!!this.param.deviceId) {\r\n if (this.$refs.tableMain) this.$refs.tableMain.getHeaderData(this.param);\r\n }\r\n this.currentBuilding = value;\r\n this.$refs.cascader.getData(value);\r\n },\r\n\r\n //修改设备族\r\n changeDevice(value) {\r\n this.param.deviceId = value.code || \"\";\r\n this.param.name = value.facility || \"\";\r\n this.param.keyWord = \"\";\r\n if (this.$refs.tableMain) this.$refs.tableMain.getHeaderData(this.param);\r\n },\r\n // 修改检索关键字\r\n handleChangeKeyWord() {\r\n if (this.$refs.tableMain) this.$refs.tableMain.getTableData(this.param.keyWord);\r\n },\r\n // 刷新数据\r\n upDataDevice() {\r\n this.$refs.tableMain.getTableData();\r\n },\r\n // 批量关联资产\r\n handleLinkAssets() {\r\n this.dialog.linkAssets = true;\r\n },\r\n /**\r\n * 选择下拉菜单\r\n * @param command 下拉选项标识\r\n */\r\n handleCommand(command) {\r\n // 选择深化点表导入\r\n if (command === \"dynamic\") {\r\n this.$refs.dynamicDialog.openDialog();\r\n } else if (command === \"static\") {\r\n // 选择台账信息导入\r\n this.$refs.staticDialog.openDialog();\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n#deviceList {\r\n overflow: hidden;\r\n height: 100%;\r\n background-color: #fff;\r\n position: relative;\r\n\r\n .table-main {\r\n position: absolute;\r\n top: 87px;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n background-color: #fff;\r\n // border-radius: 5px;\r\n // padding: 10px 0;\r\n }\r\n\r\n .search-header {\r\n overflow: hidden;\r\n padding-bottom: 10px;\r\n margin: 0 10px;\r\n border-bottom: 1px solid #bcbcbc;\r\n\r\n .deviceList-excel {\r\n float: right;\r\n margin-right: 15px;\r\n }\r\n\r\n .icon-batchassociation {\r\n float: right;\r\n font-size: 12px;\r\n\r\n /deep/ span {\r\n margin-left: 5px;\r\n }\r\n }\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=8de6b618&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=8de6b618&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8de6b618\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tableDisplay\"},[_c('div',{staticClass:\"header\"},[_c('el-button',{staticStyle:{\"float\":\"left\"},attrs:{\"size\":\"small\",\"type\":\"default\",\"icon\":\"el-icon-back\"},on:{\"click\":_vm.goBack}}),_c('span',{staticClass:\"details-title\",attrs:{\"title\":(_vm.name + \" - \" + _vm.code)}},[_c('b',[_vm._v(_vm._s(_vm.name)+\" - \"+_vm._s(_vm.code))])])],1),_c('div',{staticClass:\"content\"},[_c('el-scrollbar',{staticStyle:{\"height\":\"100%\"}},[_c('div',{staticClass:\"content-scrollbar\"},[_c('div',{staticClass:\"content-left\"},[_c('div',{staticClass:\"content-keyPoint\"},[_c('exhibitionCrux',{attrs:{\"exhibitionCrux\":_vm.exhibitionCrux,\"type\":_vm.type},on:{\"cruxSuccess\":_vm.cruxSuccess}})],1),_c('div',{staticClass:\"content-showType\"},[_c('selectRadio',{attrs:{\"selectRadio\":_vm.selectRadio},on:{\"changeRadio\":_vm.changeRadio}})],1),_c('div',{staticClass:\"content-point\"},[_c('div',{staticClass:\"content-point-left\"},[_c('exhibitionBaseInformation',{attrs:{\"exhibitionBaseInformation\":_vm.exhibitionBaseInformation}})],1),_c('div',{staticClass:\"content-point-right\"},[_c('exhibitionEnergy',{attrs:{\"exhibitionEnergy\":_vm.exhibitionEnergy}})],1)])]),_c('div',{staticClass:\"content-right\"},[_c('div',{staticClass:\"content-repair\"},[_c('exhibitionMaintain',{attrs:{\"exhibitionMaintain\":_vm.exhibitionMaintain}})],1),_c('div',{staticClass:\"content-media\"},[_c('exhibitionImage',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isShowImage),expression:\"isShowImage\"}],attrs:{\"exhibitionImage\":_vm.exhibitionImage}}),_c('exhibitionVideo',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isShowVideo),expression:\"isShowVideo\"}],attrs:{\"exhibitionVideo\":_vm.exhibitionVideo}}),_c('exhibitionFile',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isShowFile),expression:\"isShowFile\"}],attrs:{\"exhibitionFile\":_vm.exhibitionFile}})],1)])])])],1),_c('div',{staticClass:\"footer\"},[_c('el-button-group',{staticStyle:{\"float\":\"right\",\"margin\":\"8px 10px 0 0\"}},[_c('el-button',{attrs:{\"disabled\":_vm.list.findIndex(function (item) { return item.value == _vm.id; }) == 0,\"size\":\"mini\",\"icon\":\"el-icon-arrow-left\"},on:{\"click\":_vm.handleClickPrev}},[_vm._v(\" 上一页 \")]),_c('el-select',{staticStyle:{\"float\":\"left\",\"margin\":\"0 10px\"},attrs:{\"size\":\"mini\",\"placeholder\":\"请选择\"},on:{\"change\":_vm.handleChangeExample},model:{value:(_vm.id),callback:function ($$v) {_vm.id=$$v},expression:\"id\"}},_vm._l((_vm.list),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1),_c('el-button',{attrs:{\"disabled\":_vm.list.findIndex(function (item) { return item.value == _vm.id; }) == _vm.list.length-1,\"size\":\"mini\"},on:{\"click\":_vm.handleClickNext}},[_vm._v(\" 下一页 \"),_c('i',{staticClass:\"el-icon-arrow-right el-icon--right\"})])],1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"exhibition-baseInformation\"},_vm._l((_vm.exhibitionBaseInformation.information),function(val,key,i){return _c('section',[_c('h4',{staticClass:\"base\"},[_vm._v(_vm._s(key == \"undefined\" ? \"基本信息\" : key))]),_vm._l((val.paths),function(value,keys,index){return _c('div',{staticClass:\"infoPoint-item\"},[_c('span',[_vm._v(\" \"+_vm._s(value.InfoPointName)+\":\")]),(value.Path == 'EquipQRCode' || value.Path == 'RoomQRCode' || value.Path == 'ShaftQRCode')?_c('el-popover',{attrs:{\"placement\":\"right\",\"width\":\"360\",\"trigger\":\"hover\"}},[_c('p',{staticStyle:{\"border-bottom\":\"1px solid #eee\",\"padding\":\"2px 0 4px 0\"}},[_vm._v(_vm._s(value.InfoPointName))]),_c('div',{staticStyle:{\"overflow\":\"hidden\"}},[(value.Value)?_c('div',{staticStyle:{\"float\":\"left\",\"width\":\"60%\"}},[_c('img',{staticStyle:{\"width\":\"200px\",\"height\":\"200px\"},attrs:{\"src\":'/image-service/common/file_get/' + value.Value + '?systemId=dataPlatform',\"alt\":\"二维码\"}})]):_c('div',{staticStyle:{\"width\":\"100%\",\"text-align\":\"center\",\"padding-top\":\"10px\"}},[_vm._v(\"暂无数据\")]),_c('div',{staticStyle:{\"float\":\"right\",\"width\":\"40%\",\"margin-top\":\"30px\"}},[_c('span',[_vm._v(_vm._s(value.Value))])])]),_c('el-button',{attrs:{\"slot\":\"reference\",\"type\":\"text\"},slot:\"reference\"},[_vm._v(\"有\")])],1):(Array.isArray(value.Value) && value.dataType == 'ATTACHMENT')?_c('span',[(value.Value.length)?_c('el-popover',{attrs:{\"placement\":\"right\",\"width\":\"250\",\"trigger\":\"hover\"}},[_c('p',{staticStyle:{\"border-bottom\":\"1px solid #eee\",\"padding\":\"2px 0 4px 0\"}},[_vm._v(_vm._s(value.InfoPointName))]),_vm._l((value.Value),function(pic,index){return _c('div',[_c('div',[_vm._v(\" 图纸名称:\"+_vm._s(pic.name)+\" \"),_c('a',{staticStyle:{\"cursor\":\"pointer\",\"color\":\"#409eff\"},attrs:{\"href\":(\"/image-service/common/image_get?systemId=dataPlatform&key=\" + (pic.key)),\"download\":pic.name}},[_vm._v(\"下载\")])])])}),_c('el-button',{attrs:{\"slot\":\"reference\",\"type\":\"text\"},slot:\"reference\"},[_vm._v(\"有\")])],2):_c('span',[_vm._v(\"-\")])],1):(value.Value && value.Value.length && ((value.InfoPointName) + \":\" + (value.Value)).length > 21)?_c('el-popover',{attrs:{\"placement\":\"right\",\"width\":\"160\",\"trigger\":\"hover\"}},[_c('p',{staticStyle:{\"border-bottom\":\"1px solid #eee\",\"padding\":\"2px 0 4px 0\"}},[_vm._v(_vm._s(value.InfoPointName))]),_c('p',[_vm._v(_vm._s(value.Value))]),_c('div',{staticStyle:{\"text-align\":\"center\",\"margin\":\"0\"}},[_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"mini\"},on:{\"click\":function($event){return _vm.handleCopy(value.Value)}}},[_vm._v(\"复制\")])],1),_c('el-button',{attrs:{\"slot\":\"reference\",\"type\":\"text\"},slot:\"reference\"},[_vm._v(_vm._s(_vm.handleName(value.InfoPointName, value.Value)))])],1):(Array.isArray(value.Value) && value.dataType == 'MENUM')?_c('span',[_vm._v(_vm._s(_vm._f(\"filterMenumValue\")(value)))]):_c('span',[_vm._v(_vm._s(value.Value))])],1)})],2)}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"exhibition-baseInformation\">\r\n <section v-for=\"(val, key, i) in exhibitionBaseInformation.information\">\r\n <h4 class=\"base\">{{ key == \"undefined\" ? \"基本信息\" : key }}</h4>\r\n <div class=\"infoPoint-item\" v-for=\"(value, keys, index) in val.paths\">\r\n <span> {{ value.InfoPointName }}:</span>\r\n <el-popover\r\n v-if=\"value.Path == 'EquipQRCode' || value.Path == 'RoomQRCode' || value.Path == 'ShaftQRCode'\"\r\n placement=\"right\"\r\n width=\"360\"\r\n trigger=\"hover\"\r\n >\r\n <p style=\"border-bottom: 1px solid #eee;padding:2px 0 4px 0;'\">{{ value.InfoPointName }}</p>\r\n <div style=\"overflow: hidden\">\r\n <div style=\"float: left; width: 60%\" v-if=\"value.Value\">\r\n <img\r\n style=\"width: 200px; height: 200px\"\r\n :src=\"'/image-service/common/file_get/' + value.Value + '?systemId=dataPlatform'\"\r\n alt=\"二维码\"\r\n />\r\n </div>\r\n <div v-else style=\"width: 100%; text-align: center; padding-top: 10px\">暂无数据</div>\r\n <div style=\"float: right; width: 40%; margin-top: 30px\">\r\n <span>{{ value.Value }}</span>\r\n </div>\r\n </div>\r\n\r\n <el-button slot=\"reference\" type=\"text\">有</el-button>\r\n </el-popover>\r\n <span v-else-if=\"Array.isArray(value.Value) && value.dataType == 'ATTACHMENT'\">\r\n <el-popover v-if=\"value.Value.length\" placement=\"right\" width=\"250\" trigger=\"hover\">\r\n <p style=\"border-bottom: 1px solid #eee;padding:2px 0 4px 0;'\">{{ value.InfoPointName }}</p>\r\n <div v-for=\"(pic, index) in value.Value\">\r\n <div>\r\n 图纸名称:{{ pic.name }}\r\n <a\r\n style=\"cursor: pointer; color: #409eff\"\r\n :href=\"`/image-service/common/image_get?systemId=dataPlatform&key=${pic.key}`\"\r\n :download=\"pic.name\"\r\n >下载</a\r\n >\r\n </div>\r\n </div>\r\n <el-button slot=\"reference\" type=\"text\">有</el-button>\r\n </el-popover>\r\n <span v-else>-</span>\r\n </span>\r\n\r\n <el-popover\r\n v-else-if=\"value.Value && value.Value.length && `${value.InfoPointName}:${value.Value}`.length > 21\"\r\n placement=\"right\"\r\n width=\"160\"\r\n trigger=\"hover\"\r\n >\r\n <p style=\"border-bottom: 1px solid #eee;padding:2px 0 4px 0;'\">{{ value.InfoPointName }}</p>\r\n <p>{{ value.Value }}</p>\r\n <div style=\"text-align: center; margin: 0\">\r\n <el-button type=\"text\" size=\"mini\" @click=\"handleCopy(value.Value)\">复制</el-button>\r\n </div>\r\n <el-button slot=\"reference\" type=\"text\">{{ handleName(value.InfoPointName, value.Value) }}</el-button>\r\n </el-popover>\r\n <span v-else-if=\"Array.isArray(value.Value) && value.dataType == 'MENUM'\">{{ value | filterMenumValue }}</span>\r\n <span v-else>{{ value.Value }}</span>\r\n </div>\r\n </section>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"exhibition-baseInformation\",\r\n props: [\"exhibitionBaseInformation\"],\r\n data() {\r\n return {};\r\n },\r\n filters: {\r\n filterMenumValue(value) {\r\n return value.Value.map((val) => {\r\n return value.dataSource.find((item) => item.code === val).name;\r\n }).join(\",\");\r\n },\r\n },\r\n created() {},\r\n methods: {\r\n downloadFile(key) {\r\n window.open(\"/image-service/common/file_get/\" + key + \"?systemId=dataPlatform\");\r\n },\r\n handleCopy(data) {\r\n let oInput = document.createElement(\"input\");\r\n if (typeof data != \"string\") {\r\n data = JSON.stringify(data);\r\n }\r\n oInput.value = data;\r\n document.body.appendChild(oInput);\r\n oInput.select();\r\n document.execCommand(\"Copy\");\r\n this.$message.success(\"复制成功\");\r\n oInput.remove();\r\n },\r\n handleName(infoPoint, val) {\r\n let value = val;\r\n if (Array.isArray(value)) {\r\n value = JSON.stringify(val);\r\n }\r\n let text = `${infoPoint}:${value}`;\r\n return text.length > 21 ? value.substring(0, 21 - `${infoPoint}:`.length) + \"...\" : value;\r\n },\r\n },\r\n};\r\n</script>\r\n\\ \r\n<style scoped lang=\"less\">\r\n.exhibition-baseInformation {\r\n section {\r\n /*border: 1px solid #eeeeee;*/\r\n /*margin: 10px;*/\r\n\r\n .base {\r\n margin: 10px;\r\n font-weight: 600;\r\n /*text-indent: 10px;*/\r\n border-bottom: 1px dashed #eee;\r\n }\r\n\r\n /deep/ .el-button--text {\r\n color: #555 !important;\r\n font-size: 14px;\r\n }\r\n }\r\n\r\n .ml-10 {\r\n margin-left: 10px;\r\n text-indent: 10px;\r\n }\r\n\r\n .infoPoint-item {\r\n width: 315px;\r\n display: inline-block;\r\n margin-left: 20px;\r\n vertical-align: text-top;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exhibitionBaseInformation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exhibitionBaseInformation.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./exhibitionBaseInformation.vue?vue&type=template&id=5083842e&scoped=true&\"\nimport script from \"./exhibitionBaseInformation.vue?vue&type=script&lang=js&\"\nexport * from \"./exhibitionBaseInformation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./exhibitionBaseInformation.vue?vue&type=style&index=0&id=5083842e&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5083842e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"exhibition-file\"},[_c('p',{staticClass:\"title\"},[_c('span',{staticClass:\" iconfont icon-fujian\"}),_vm._v(\" \"+_vm._s(_vm.exhibitionFile.title))]),_c('div',[_c('lookFile',{attrs:{\"exhibitionFile\":_vm.exhibitionFile}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"exhibition-file\"},[(Object.keys(_vm.exhibitionFile.list).length)?_c('div',_vm._l((_vm.exhibitionFile.list),function(val,key,i){return _c('div',{key:i},_vm._l((val),function(j,index){return _c('div',{},[_c('p',{staticClass:\"title\"},[_c('span',{staticClass:\"iconfont icon-juxing\"}),_vm._v(\" \"+_vm._s(key)+\" \")]),(j.fileList !=undefined && j.fileList.length)?_c('div',_vm._l((j.fileList),function(item,index){return _c('div',{key:index,staticClass:\"content\"},[_c('div',{staticClass:\"file-box\"},[_vm._m(0,true),_c('div',{staticClass:\"file-box-center\"},[_c('p',{staticStyle:{\"margin-top\":\"20px\"},attrs:{\"title\":item.name}},[_vm._v(\" \"+_vm._s(_vm.delFile(item.name)))]),_c('p',[_vm._v(\" \"+_vm._s(item.createTime))])]),_c('div',{staticClass:\"file-box-right \"},[_c('a',{staticClass:\"iconfont icon-download1 df fs20\",staticStyle:{\"height\":\"88px\",\"cursor\":\"pointer\",\"color\":\"#555\"},attrs:{\"href\":(\"/image-service/common/file_get/\" + (item.key) + \"?systemId=dataPlatform\"),\"download\":item.name}})])])])}),0):_c('div',{staticStyle:{\"text-align\":\"center\",\"margin\":\"10px auto\"}},[_vm._v(\"暂无数据\")])])}),0)}),0):_c('div',{staticStyle:{\"text-align\":\"center\",\"margin\":\"10px auto\"}},[_vm._v(\"暂无数据\")])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"file-box-left \"},[_c('div',{staticClass:\"file-box-left-content \"},[_c('span',{staticClass:\"iconfont icon-Excel excel fs20\"})])])}]\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"exhibition-file\">\r\n <div v-if=\"Object.keys(exhibitionFile.list).length\">\r\n <div v-for=\"(val,key,i) in exhibitionFile.list\" :key=\"i\">\r\n <div class=\"\" v-for=\"(j,index) in val\">\r\n <p class=\"title\">\r\n <span class=\"iconfont icon-juxing\"></span>\r\n {{key}}\r\n </p>\r\n <div v-if=\"j.fileList !=undefined && j.fileList.length\">\r\n <div v-for=\"(item,index) in j.fileList\" class=\"content\" :key=\"index\">\r\n <!-- 图标-->\r\n <div class=\"file-box\" >\r\n <div class=\"file-box-left \">\r\n <div class=\"file-box-left-content \">\r\n <span class=\"iconfont icon-Excel excel fs20\"></span>\r\n </div>\r\n </div>\r\n <div class=\"file-box-center\">\r\n <p style=\"margin-top: 20px\" :title=\"item.name\"> {{delFile(item.name)}}</p>\r\n <p> {{item.createTime}}</p>\r\n </div>\r\n <div class=\"file-box-right \">\r\n <a\r\n style=\"height: 88px;cursor: pointer;color: #555\"\r\n class=\"iconfont icon-download1 df fs20\"\r\n :href=\"`/image-service/common/file_get/${item.key}?systemId=dataPlatform`\"\r\n :download=\"item.name\"\r\n />\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n <div v-else style=\"text-align: center;margin: 10px auto\">暂无数据</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div v-else style=\"text-align: center;margin: 10px auto\">暂无数据</div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n\r\n export default {\r\n props: ['exhibitionFile'],\r\n data() {\r\n return {};\r\n },\r\n created() {\r\n },\r\n methods: {\r\n //处理地址\r\n delFile(name) {\r\n return name && name.length > 14 ? name.substring(0, 14) + \"...\" : name\r\n },\r\n //删除图片\r\n deleteFile(i, key) {\r\n this.filesArr.splice(i, 1);\r\n this.$emit(\"change\", this.filesArr, this.defined);\r\n },\r\n\r\n //上传\r\n uploadAndSubmit(item) {\r\n // var form = document.forms[\"demoForm\"];\r\n\r\n // if (form[\"file\"].files.length > 0) {\r\n // 寻找表单域中的 <input type=\"file\" ... /> 标签\r\n // var file = form[\"file\"].files[0];\r\n\r\n let file = item.file;\r\n // try sending\r\n let reader = new FileReader();\r\n\r\n let vm = this;\r\n\r\n let fileType = file.name.split(\".\");\r\n let type = fileType[fileType.length - 1];\r\n let key = \"&key=\" + fileType[0] + file.uid + \".\" + type\r\n let CreateTime = tools.formatDate(new Date(file.lastModified))\r\n reader.onloadstart = function () {\r\n // 这个事件在读取开始时触发\r\n };\r\n reader.onprogress = function (p) {\r\n // 这个事件在读取进行中定时触发\r\n };\r\n\r\n reader.onload = function () {\r\n // 这个事件在读取成功结束后触发\r\n };\r\n reader.onloadend = function () {\r\n // 这个事件在读取结束后,无论成功或者失败都会触发\r\n if (reader.error) {\r\n } else {\r\n // document.getElementById(\"bytesRead\").textContent = file.size;\r\n // 构造 XMLHttpRequest 对象,发送文件 Binary 数据\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(\r\n /* method */\r\n \"POST\",\r\n /* target url */\r\n \"/image-service/common/file_upload?systemId=dataPlatform&secret=9e0891a7a8c8e885&overwrite=true\" + key\r\n /*, async, default to true */\r\n );\r\n //xhr.overrideMimeType(\"application/octet-stream\");\r\n xhr.send(reader.result);\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState == 4) {\r\n console.log(xhr)\r\n if (xhr.status == 200) {\r\n let fileObject = {\r\n key: key.split(\"=\")[1],\r\n type: type,\r\n name: file.name,\r\n createTime: CreateTime,\r\n systemId: 'dataPlatform'\r\n }\r\n vm.filesArr.push(fileObject);\r\n vm.$emit(\"change\", vm.filesArr, vm.defined);\r\n } else {\r\n this.$message.error(res.data.ResultMsg)\r\n }\r\n }\r\n };\r\n }\r\n };\r\n reader.readAsArrayBuffer(file);\r\n }\r\n },\r\n\r\n };\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n .exhibition-file {\r\n .icon-download1:hover {\r\n color: #409eff;\r\n cursor: pointer;\r\n }\r\n\r\n .title {\r\n /*border-left: 8px solid black;*/\r\n margin: 10px;\r\n font-weight: 600;\r\n /*text-indent: 10px;*/\r\n display: block;\r\n overflow: hidden;\r\n }\r\n\r\n .df {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n\r\n .file-box {\r\n border: 1px solid #eee;\r\n margin: 10px;\r\n height: 88px;\r\n\r\n .file-box-left {\r\n display: inline-block;\r\n width: 20%;\r\n height: 100%;\r\n overflow: hidden;\r\n text-align: center;\r\n\r\n .file-box-left-content {\r\n background: #eeeeee;\r\n width: 50px;\r\n height: 50px;\r\n margin: 20px 14px;\r\n .excel{\r\n display: block;\r\n padding-top: 5px;\r\n }\r\n }\r\n }\r\n\r\n .file-box-center {\r\n display: inline-block;\r\n width: 58%;\r\n height: 100%;\r\n overflow: hidden;\r\n text-align: center;\r\n }\r\n\r\n .file-box-right {\r\n display: inline-block;\r\n width: 19%;\r\n height: 100%;\r\n overflow: hidden;\r\n a:hover {\r\n color: #409eff !important;\r\n }\r\n }\r\n }\r\n\r\n\r\n .df {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n\r\n .fs20 {\r\n font-size: 20px;\r\n }\r\n\r\n .list-name {\r\n text-align: center;\r\n }\r\n }\r\n</style>\r\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./lookFile.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./lookFile.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./lookFile.vue?vue&type=template&id=c6a0631e&scoped=true&\"\nimport script from \"./lookFile.vue?vue&type=script&lang=js&\"\nexport * from \"./lookFile.vue?vue&type=script&lang=js&\"\nimport style0 from \"./lookFile.vue?vue&type=style&index=0&id=c6a0631e&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c6a0631e\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div class=\"exhibition-file\">\r\n <p class=\"title\">\r\n <span class=\" iconfont icon-fujian\"></span>\r\n {{exhibitionFile.title}}</p>\r\n <div>\r\n <lookFile :exhibitionFile=\"exhibitionFile\"/>\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\n import lookFile from \"./lookFile\";\r\n export default {\r\n name: \"exhibition-file\",\r\n props: ['exhibitionFile'],\r\n data() {return{}},\r\n components:{lookFile}\r\n }\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n .exhibition-file {\r\n border: 1px solid #eeeeee;\r\n background: #FFFFFF;\r\n margin-bottom: 10px;\r\n\r\n .title {\r\n border-bottom: 1px solid #eee;\r\n padding: 10px 0;\r\n font-weight: 600;\r\n text-indent: 10px;\r\n }\r\n }\r\n</style>\r\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exhibitionFile.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exhibitionFile.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./exhibitionFile.vue?vue&type=template&id=4f73814c&scoped=true&\"\nimport script from \"./exhibitionFile.vue?vue&type=script&lang=js&\"\nexport * from \"./exhibitionFile.vue?vue&type=script&lang=js&\"\nimport style0 from \"./exhibitionFile.vue?vue&type=style&index=0&id=4f73814c&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4f73814c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"exhibition-image\"},[_c('p',{staticClass:\"title\"},[_c('span',{staticClass:\" icon-floorplan iconfont\"}),_c('span',[_vm._v(_vm._s(_vm.exhibitionImage.title))])]),_c('div',{staticClass:\"image\"},[_c('lookImage',{attrs:{\"exhibitionImage\":_vm.exhibitionImage}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"sagaUploads-look-image\"}},[_c('div',{staticClass:\"saga-upload-images\"},[(Object.keys(_vm.exhibitionImage.list).length)?_c('div',_vm._l((_vm.exhibitionImage.list),function(val,key,i){return _c('div',{key:i},_vm._l((val),function(j,index){return _c('div',{},[_c('p',{staticClass:\"title\"},[_c('span',{staticClass:\"iconfont icon-juxing\"}),_vm._v(\" \"+_vm._s(key)+\" \")]),(j.PicList !=undefined && j.PicList.length >0)?_c('div',[_vm._l((j.PicList),function(item){return [_c('div',{staticClass:\"point-look-image\"},[_c('img',{directives:[{name:\"load\",rawName:\"v-load\"}],staticStyle:{\"margin-bottom\":\"5px\"},attrs:{\"src\":_vm.handleLookImage(item.key),\"alt\":\"\"},on:{\"click\":_vm.lookImg}}),_c('p',{staticClass:\"pic-name\"},[_vm._v(_vm._s(_vm.handleName(item.name)))])])]})],2):_c('div',{staticStyle:{\"text-align\":\"center\",\"margin\":\"10px auto\"}},[_vm._v(\"暂无数据\")])])}),0)}),0):_c('div',{staticStyle:{\"text-align\":\"center\"}},[_vm._v(\"暂无数据\")])]),_c('details-dialog',{attrs:{\"title\":'图片',\"iframeSrc\":_vm.iframeSrc,\"dialog\":_vm.dialog,\"setData\":_vm.exhibitionImage.arr}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div id=\"sagaUploads-look-image\">\r\n <div class=\"saga-upload-images\">\r\n <div v-if=\"Object.keys(exhibitionImage.list).length\">\r\n <div v-for=\"(val,key,i) in exhibitionImage.list\" :key=\"i\">\r\n <div class=\"\" v-for=\"(j,index) in val\">\r\n <p class=\"title\">\r\n <span class=\"iconfont icon-juxing\"></span>\r\n {{ key }}\r\n </p>\r\n <div v-if=\"j.PicList !=undefined && j.PicList.length >0\">\r\n <template v-for=\"item in j.PicList\">\r\n <div class=\"point-look-image\">\r\n <img @click=\"lookImg\"\r\n :src=handleLookImage(item.key) alt\r\n v-load style=\"margin-bottom: 5px\">\r\n <p class=\"pic-name\">{{ handleName(item.name) }}</p>\r\n </div>\r\n </template>\r\n </div>\r\n <div v-else style=\"text-align: center;margin: 10px auto\">暂无数据</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"text-align: center\" v-else>暂无数据</div>\r\n </div>\r\n <details-dialog :title=\"'图片'\" :iframeSrc=\"iframeSrc\" :dialog=\"dialog\"\r\n :setData=\"exhibitionImage.arr\"></details-dialog>\r\n </div>\r\n</template>\r\n<script>\r\nimport detailsDialog from \"@/components/old-adm/business_space/lib/detailsDia\"\r\n\r\nexport default {\r\n components: {\r\n detailsDialog\r\n },\r\n props: ['exhibitionImage'],\r\n data() {\r\n return {\r\n baseUrl: \"\",\r\n imageGetUrl: \"/image-service/common/image_get?systemId=dataPlatform\",\r\n imageUploadUrl: \"/image-service/common/image_upload?systemId=dataPlatform&secret=9e0891a7a8c8e885&overwrite=true\",\r\n imagesArr: [],\r\n iframeSrc: \"\",\r\n dialog: {\r\n details: false\r\n }\r\n };\r\n },\r\n methods: {\r\n handleLookImage(key) {\r\n return `/image-service/common/image_get?systemId=dataPlatform&key=${key}`\r\n },\r\n handleName(val) {\r\n return val && val.length > 10 ? val.substring(1, 10) + '...' : val\r\n },\r\n //查看图片\r\n lookImg() {\r\n this.dialog.details = true\r\n this.iframeSrc =\r\n // process.env.BASE_URL +\r\n window.__systemConf.BASE_URL +\r\n \":8890/photo-View.html\"\r\n // this.iframeSrc = process.env.BASE_URL + \"/photo-View.html\"\r\n },\r\n\r\n //上传\r\n uploadAndSubmit(item, key) {\r\n let file = item.file;\r\n // try sending\r\n let reader = new FileReader();\r\n\r\n let vm = this;\r\n\r\n let fileType = file.name.split(\".\");\r\n let type = fileType[fileType.length - 1];\r\n let CreateTime = tools.formatDate(new Date(file.lastModified))\r\n\r\n let uploadKey = file.uid\r\n if (!!key) {\r\n uploadKey = key\r\n }\r\n\r\n reader.onloadstart = function () {\r\n // 这个事件在读取开始时触发\r\n };\r\n reader.onprogress = function (p) {\r\n // 这个事件在读取进行中定时触发\r\n };\r\n\r\n reader.onload = function () {\r\n // 这个事件在读取成功结束后触发\r\n };\r\n reader.onloadend = function () {\r\n // 这个事件在读取结束后,无论成功或者失败都会触发\r\n if (reader.error) {\r\n } else {\r\n // document.getElementById(\"bytesRead\").textContent = file.size;\r\n // 构造 XMLHttpRequest 对象,发送文件 Binary 数据\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(\r\n /* method */\r\n \"POST\",\r\n /* target url */\r\n vm.imageUploadUrl + \"&key=\" + uploadKey + \".\" + type\r\n /*, async, default to true */\r\n );\r\n //xhr.overrideMimeType(\"application/octet-stream\");\r\n xhr.send(reader.result);\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState == 4) {\r\n if (xhr.status == 200) {\r\n if (vm.type == 'image') {\r\n vm.imagesArr.push({\r\n name: uploadKey + '',\r\n key: uploadKey + \".\" + type,\r\n systemId: \"dataPlatform\",\r\n type: \"image\",\r\n createTime: CreateTime\r\n });\r\n }\r\n if (type == 'mp4') {\r\n vm.videoPicArr.push({\r\n name: uploadKey + '',\r\n key: uploadKey + \".\" + type,\r\n systemId: \"dataPlatform\",\r\n type: \"video\",\r\n createTime: CreateTime\r\n });\r\n vm.creatImg(vm.imageGetUrl + \"&key=\" + uploadKey + \".\" + type, uploadKey)\r\n }\r\n // if (vm.type == \"video\" && type == \"png\") {\r\n // vm.videoPicArr.push({\r\n // Name: uploadKey + '',\r\n // Key: uploadKey + \".\" + type,\r\n // SystemId: \"dataPlatform\",\r\n // Type: \"image_video\",\r\n // CreateTime\r\n // })\r\n // }\r\n vm.$emit(\"change\", vm.imagesArr, vm.defined, vm.videoPicArr);\r\n }\r\n }\r\n };\r\n }\r\n };\r\n reader.readAsArrayBuffer(file);\r\n },\r\n dataURLtoBlob(dataURI, type) {\r\n var binary = atob(dataURI.split(',')[1]);\r\n var array = [];\r\n for (var i = 0; i < binary.length; i++) {\r\n array.push(binary.charCodeAt(i));\r\n }\r\n return new Blob([new Uint8Array(array)], { type: type });\r\n },\r\n\r\n creatImg(reader, key) {\r\n var videoDom = document.getElementById('video');\r\n videoDom.src = reader;\r\n let vm = this\r\n videoDom.onloadeddata = function () {\r\n // 这里可以打印视频时长\r\n // 这里取得视频封面\r\n var canvas = document.createElement('canvas');\r\n canvas.width = 300;\r\n canvas.height = 300 * this.videoHeight / this.videoWidth;\r\n canvas.getContext('2d').drawImage(this, 0, 0, canvas.width, canvas.height);\r\n //将canvas的base64位图片转换成图片png的file\r\n var blob = vm.dataURLtoBlob(canvas.toDataURL('image/png'), \"image/png\")\r\n //将其转换成file对象\r\n var file = new File([blob], \"video_image.png\", { type: \"image/png\", lastModified: Date.now() })//blob转file\r\n vm.uploadAndSubmit({ file: file }, key)\r\n }\r\n },\r\n },\r\n watch: {\r\n keysArr: function (val) {\r\n this.imageFalg();\r\n }\r\n },\r\n //自定义指令\r\n directives: {\r\n load: function (el) {\r\n let imgDom = document.createElement(\"img\");\r\n imgDom.style.position = \"absolute\";\r\n imgDom.style.top = \"-999px\";\r\n imgDom.style.opacity = 0;\r\n imgDom.src = el.src;\r\n el.src = \"\";\r\n imgDom.onload = () => {\r\n let width = imgDom.width;\r\n let height = imgDom.height;\r\n if (width > height) {\r\n el.style.height = \"100%\";\r\n el.style.width = \"auto\";\r\n el.style.position = \"absolute\";\r\n el.style.left = \"50%\";\r\n el.style.top = \"0\";\r\n el.style.transform = \"translateX(-50%)\";\r\n el.style.webkitTransform = \"translateX(-50%) translateY(0)\";\r\n el.style.MozTransform = \"translateX(-50%) translateY(0)\";\r\n el.style.msTransform = \"translateX(-50%) translateY(0)\";\r\n el.style.OTransform = \"translateX(-50%) translateY(0)\";\r\n } else if (width < height) {\r\n el.src = imgDom.src;\r\n el.style.width = \"100%\";\r\n el.style.height = \"auto\";\r\n el.style.position = \"absolute\";\r\n el.style.top = \"50%\";\r\n el.style.left = \"0\";\r\n el.style.transform = \"translateY(-50%) translateX(0)\";\r\n el.style.webkitTransform = \"translateY(-50%) translateX(0)\";\r\n el.style.MozTransform = \"translateY(-50%) translateX(0)\";\r\n el.style.msTransform = \"translateY(-50%) translateX(0)\";\r\n el.style.OTransform = \"translateY(-50%) translateX(0)\";\r\n } else {\r\n el.style.width = \"100%\";\r\n el.style.height = \"100%\";\r\n el.style.position = \"absolute\";\r\n el.style.top = \"0\";\r\n el.style.left = \"0\";\r\n el.style.transform = \"translateY(0) translateX(0)\";\r\n el.style.webkitTransform = \"translateY(0) translateX(0)\";\r\n el.style.MozTransform = \"translateY(0) translateX(0)\";\r\n el.style.msTransform = \"translateY(0) translateX(0)\";\r\n el.style.OTransform = \"translateY(0) translateX(0)\";\r\n }\r\n el.src = imgDom.src;\r\n };\r\n }\r\n }\r\n};\r\n</script>\r\n<style lang=\"less\">\r\n#sagaUploads-look-image {\r\n overflow: hidden;\r\n\r\n .title {\r\n /*border-left: 8px solid black;*/\r\n margin: 10px 10px 10px 0;\r\n font-weight: 600;\r\n /*text-indent: 10px;*/\r\n display: block;\r\n overflow: hidden;\r\n }\r\n\r\n .avatar-uploader {\r\n height: 180px;\r\n width: 180px;\r\n overflow: hidden;\r\n\r\n .el-upload {\r\n width: 180px;\r\n height: 180px;\r\n\r\n .el-upload-dragger {\r\n width: 180px;\r\n height: 180px;\r\n\r\n .el-icon-plus {\r\n display: block;\r\n width: 20px;\r\n height: 20px;\r\n font-size: 20px;\r\n margin: 80px;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .pic-name {\r\n position: absolute;\r\n right: 72px;\r\n display: inline-block;\r\n background: #fff;\r\n color: #000;\r\n padding: 3px;\r\n z-index: 99;\r\n border-radius: 8px;\r\n bottom: 5px;\r\n }\r\n\r\n .point-look-image {\r\n height: 180px;\r\n margin-bottom: 10px;\r\n position: relative;\r\n overflow: hidden;\r\n\r\n img {\r\n z-index: 11;\r\n }\r\n\r\n i {\r\n position: absolute;\r\n bottom: 10px;\r\n right: 10px;\r\n background-color: #fff;\r\n padding: 5px;\r\n cursor: pointer;\r\n z-index: 66;\r\n }\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./lookImage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./lookImage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./lookImage.vue?vue&type=template&id=7a1ccc6c&\"\nimport script from \"./lookImage.vue?vue&type=script&lang=js&\"\nexport * from \"./lookImage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./lookImage.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\r\n <div class=\"exhibition-image\">\r\n <p class=\"title\">\r\n <span class=\" icon-floorplan iconfont\"></span>\r\n <span>{{exhibitionImage.title}}</span>\r\n </p>\r\n <div class=\"image\">\r\n <lookImage :exhibitionImage=\"exhibitionImage\"/>\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\n import lookImage from \"./lookImage\";\r\n export default {\r\n name: \"exhibition-image\",\r\n props: ['exhibitionImage'],\r\n components:{lookImage},\r\n data() {\r\n return {\r\n\r\n }\r\n },\r\n methods:{\r\n deepcopy(obj) {\r\n return JSON.parse(JSON.stringify(obj));\r\n },\r\n }\r\n }\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n .exhibition-image {\r\n border: 1px solid #eeeeee;\r\n background: #fff;\r\n margin-bottom: 10px;\r\n .title {\r\n border-bottom: 1px solid #eee;\r\n padding: 10px 0;\r\n font-weight: 600;\r\n text-indent: 10px;\r\n }\r\n\r\n .image {\r\n margin: 10px;\r\n /*text-align: center;*/\r\n }\r\n\r\n }\r\n\r\n</style>\r\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exhibitionImage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exhibitionImage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./exhibitionImage.vue?vue&type=template&id=1cd4b3ba&scoped=true&\"\nimport script from \"./exhibitionImage.vue?vue&type=script&lang=js&\"\nexport * from \"./exhibitionImage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./exhibitionImage.vue?vue&type=style&index=0&id=1cd4b3ba&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1cd4b3ba\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"exhibition-video\"},[_c('p',{staticClass:\"title\"},[_c('span',{staticClass:\" icon-shipin-tianchong iconfont\"}),_vm._v(\" \"+_vm._s(_vm.exhibitionVideo.title))]),_c('div',{staticClass:\"image\"},[_c('lookVideo',{attrs:{\"exhibitionVideo\":_vm.exhibitionVideo}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"sagaUploads-look-video\"}},[_c('div',{staticClass:\"saga-upload-images\"},[(_vm.exhibitionVideo.list.length)?_c('div',[_vm._l((_vm.exhibitionVideo.list),function(item,index){return [_c('div',{staticClass:\"point-look-video\"},[_c('video',{attrs:{\"width\":\"100%\",\"height\":\"100%;\",\"src\":_vm.imageGetUrl + '&key=' +item.key,\"controls\":\"controls\"}},[_vm._v(\"您的浏览器不支持 video 标签。\")])])]})],2):_c('div',{staticStyle:{\"text-align\":\"center\",\"margin\":\"10px auto\"}},[_vm._v(\"暂无数据\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div id=\"sagaUploads-look-video\">\r\n <div class=\"saga-upload-images\">\r\n <div v-if=\"exhibitionVideo.list.length\">\r\n <template v-for=\"(item,index) in exhibitionVideo.list\">\r\n <div class=\"point-look-video\">\r\n <video\r\n width=\"100%\"\r\n height=\"100%;\"\r\n :src=\"imageGetUrl + '&key=' +item.key\"\r\n controls=\"controls\"\r\n >您的浏览器不支持 video 标签。</video>\r\n </div>\r\n </template>\r\n </div>\r\n <div v-else style=\"text-align: center;margin: 10px auto\">暂无数据</div>\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\n\r\n export default {\r\n props: ['exhibitionVideo'],\r\n data() {\r\n return {\r\n baseUrl: \"\",\r\n imageGetUrl: \"/image-service/common/image_get?systemId=dataPlatform\",\r\n imageUploadUrl: \"/image-service/common/image_upload?systemId=dataPlatform&secret=9e0891a7a8c8e885&overwrite=true\",\r\n imagesArr: [],\r\n iframeSrc: \"\",\r\n dialog: {\r\n details: false\r\n }\r\n };\r\n },\r\n methods: {\r\n //上传\r\n uploadAndSubmit(item, key) {\r\n // var form = document.forms[\"demoForm\"];\r\n\r\n // if (form[\"file\"].files.length > 0) {\r\n // 寻找表单域中的 <input type=\"file\" ... /> 标签\r\n // var file = form[\"file\"].files[0];\r\n\r\n console.log(\"lalala\", item)\r\n let file = item.file;\r\n // try sending\r\n let reader = new FileReader();\r\n\r\n let vm = this;\r\n\r\n let fileType = file.name.split(\".\");\r\n let type = fileType[fileType.length - 1];\r\n let CreateTime = tools.formatDate(new Date(file.lastModified))\r\n\r\n let uploadKey = file.uid\r\n if (!!key) {\r\n uploadKey = key\r\n }\r\n\r\n reader.onloadstart = function () {\r\n // 这个事件在读取开始时触发\r\n };\r\n reader.onprogress = function (p) {\r\n // 这个事件在读取进行中定时触发\r\n };\r\n\r\n reader.onload = function () {\r\n // 这个事件在读取成功结束后触发\r\n };\r\n reader.onloadend = function () {\r\n // 这个事件在读取结束后,无论成功或者失败都会触发\r\n if (reader.error) {\r\n } else {\r\n // document.getElementById(\"bytesRead\").textContent = file.size;\r\n // 构造 XMLHttpRequest 对象,发送文件 Binary 数据\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(\r\n /* method */\r\n \"POST\",\r\n /* target url */\r\n vm.imageUploadUrl + \"&key=\" + uploadKey + \".\" + type\r\n /*, async, default to true */\r\n );\r\n //xhr.overrideMimeType(\"application/octet-stream\");\r\n xhr.send(reader.result);\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState == 4) {\r\n if (xhr.status == 200) {\r\n if (vm.type == 'image') {\r\n vm.imagesArr.push({\r\n name: uploadKey + '',\r\n key: uploadKey + \".\" + type,\r\n systemId: \"dataPlatform\",\r\n type: \"image\",\r\n createTime: CreateTime\r\n });\r\n }\r\n if (type == 'mp4') {\r\n vm.imagesArr.push({\r\n name: uploadKey + '',\r\n key: uploadKey + \".\" + type,\r\n systemId: \"dataPlatform\",\r\n type: \"video\",\r\n createTime: CreateTime\r\n });\r\n vm.creatImg(vm.imageGetUrl + \"&key=\" + uploadKey + \".\" + type, uploadKey)\r\n }\r\n if (vm.type == \"video\" && type == \"png\") {\r\n vm.videoPicArr.push({\r\n name: uploadKey + '',\r\n key: uploadKey + \".\" + type,\r\n systemId: \"dataPlatform\",\r\n type: \"image_video\",\r\n createTime: CreateTime\r\n })\r\n }\r\n vm.$emit(\"change\", vm.imagesArr, vm.defined, vm.videoPicArr);\r\n }\r\n }\r\n };\r\n }\r\n };\r\n reader.readAsArrayBuffer(file);\r\n },\r\n dataURLtoBlob(dataURI, type) {\r\n var binary = atob(dataURI.split(',')[1]);\r\n var array = [];\r\n for (var i = 0; i < binary.length; i++) {\r\n array.push(binary.charCodeAt(i));\r\n }\r\n return new Blob([new Uint8Array(array)], { type: type });\r\n },\r\n\r\n creatImg(reader, key) {\r\n var videoDom = document.getElementById('video');\r\n videoDom.src = reader;\r\n let vm = this\r\n videoDom.onloadeddata = function () {\r\n // 这里可以打印视频时长\r\n // 这里取得视频封面\r\n var canvas = document.createElement('canvas');\r\n canvas.width = 300;\r\n canvas.height = 300 * this.videoHeight / this.videoWidth;\r\n canvas.getContext('2d').drawImage(this, 0, 0, canvas.width, canvas.height);\r\n //将canvas的base64位图片转换成图片png的file\r\n var blob = vm.dataURLtoBlob(canvas.toDataURL('image/png'), \"image/png\")\r\n //将其转换成file对象\r\n var file = new File([blob], \"video_image.png\", { type: \"image/png\", lastModified: Date.now() })//blob转file\r\n vm.uploadAndSubmit({ file: file }, key)\r\n }\r\n },\r\n },\r\n watch: {\r\n keysArr: function (val) {\r\n this.imageFalg();\r\n }\r\n },\r\n //自定义指令\r\n directives: {\r\n load: function (el) {\r\n let imgDom = document.createElement(\"img\");\r\n imgDom.style.position = \"absolute\";\r\n imgDom.style.top = \"-999px\";\r\n imgDom.style.opacity = 0;\r\n imgDom.src = el.src;\r\n el.src = \"\";\r\n imgDom.onload = () => {\r\n let width = imgDom.width;\r\n let height = imgDom.height;\r\n if (width > height) {\r\n el.style.height = \"100%\";\r\n el.style.width = \"auto\";\r\n el.style.position = \"absolute\";\r\n el.style.left = \"50%\";\r\n el.style.top = \"0\";\r\n el.style.transform = \"translateX(-50%)\";\r\n el.style.webkitTransform = \"translateX(-50%) translateY(0)\";\r\n el.style.MozTransform = \"translateX(-50%) translateY(0)\";\r\n el.style.msTransform = \"translateX(-50%) translateY(0)\";\r\n el.style.OTransform = \"translateX(-50%) translateY(0)\";\r\n } else if (width < height) {\r\n el.src = imgDom.src;\r\n el.style.width = \"100%\";\r\n el.style.height = \"auto\";\r\n el.style.position = \"absolute\";\r\n el.style.top = \"50%\";\r\n el.style.left = \"0\";\r\n el.style.transform = \"translateY(-50%) translateX(0)\";\r\n el.style.webkitTransform = \"translateY(-50%) translateX(0)\";\r\n el.style.MozTransform = \"translateY(-50%) translateX(0)\";\r\n el.style.msTransform = \"translateY(-50%) translateX(0)\";\r\n el.style.OTransform = \"translateY(-50%) translateX(0)\";\r\n } else {\r\n el.style.width = \"100%\";\r\n el.style.height = \"100%\";\r\n el.style.position = \"absolute\";\r\n el.style.top = \"0\";\r\n el.style.left = \"0\";\r\n el.style.transform = \"translateY(0) translateX(0)\";\r\n el.style.webkitTransform = \"translateY(0) translateX(0)\";\r\n el.style.MozTransform = \"translateY(0) translateX(0)\";\r\n el.style.msTransform = \"translateY(0) translateX(0)\";\r\n el.style.OTransform = \"translateY(0) translateX(0)\";\r\n }\r\n el.src = imgDom.src;\r\n };\r\n }\r\n }\r\n };\r\n</script>\r\n<style lang=\"less\">\r\n #sagaUploads-look-video {\r\n overflow: hidden;\r\n\r\n .title {\r\n /*border-left: 8px solid black;*/\r\n margin: 10px;\r\n font-weight: 600;\r\n /*text-indent: 10px;*/\r\n display: block;\r\n overflow: hidden;\r\n }\r\n\r\n .avatar-uploader {\r\n height: 180px;\r\n width: 180px;\r\n overflow: hidden;\r\n\r\n .el-upload {\r\n width: 180px;\r\n height: 180px;\r\n\r\n .el-upload-dragger {\r\n width: 180px;\r\n height: 180px;\r\n .el-icon-plus {\r\n display: block;\r\n width: 20px;\r\n height: 20px;\r\n font-size: 20px;\r\n margin: 80px;\r\n }\r\n }\r\n }\r\n }\r\n .pic-name {\r\n position: absolute;\r\n right: 72px;\r\n display: inline-block;\r\n background: #fff;\r\n color: #000;\r\n padding: 3px;\r\n z-index: 99;\r\n border-radius: 8px;\r\n bottom: 5px;\r\n }\r\n\r\n .point-look-video {\r\n height: 180px;\r\n position: relative;\r\n overflow: hidden;\r\n img {\r\n z-index: 11;\r\n }\r\n i {\r\n position: absolute;\r\n bottom: 10px;\r\n right: 10px;\r\n background-color: #fff;\r\n padding: 5px;\r\n cursor: pointer;\r\n z-index: 66;\r\n }\r\n }\r\n }\r\n</style>\r\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./lookVideo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./lookVideo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./lookVideo.vue?vue&type=template&id=473bf8f0&\"\nimport script from \"./lookVideo.vue?vue&type=script&lang=js&\"\nexport * from \"./lookVideo.vue?vue&type=script&lang=js&\"\nimport style0 from \"./lookVideo.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\r\n <div class=\"exhibition-video\">\r\n <p class=\"title\">\r\n <span class=\" icon-shipin-tianchong iconfont\"></span>\r\n {{exhibitionVideo.title}}</p>\r\n <div class=\"image\">\r\n <lookVideo :exhibitionVideo=\"exhibitionVideo\"/>\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\n import lookVideo from \"./lookVideo\";\r\n export default {\r\n name: \"exhibition-video\",\r\n props: ['exhibitionVideo'],\r\n components:{lookVideo},\r\n data() {\r\n return {\r\n\r\n }\r\n },\r\n methods:{\r\n deepcopy(obj) {\r\n return JSON.parse(JSON.stringify(obj));\r\n },\r\n }\r\n }\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n .exhibition-video {\r\n border: 1px solid #eeeeee;\r\n background: #fff;\r\n margin-bottom: 10px;\r\n .title {\r\n border-bottom: 1px solid #eee;\r\n padding: 10px 0;\r\n font-weight: 600;\r\n text-indent: 10px;\r\n }\r\n\r\n .image {\r\n margin: 10px;\r\n /*text-align: center;*/\r\n }\r\n\r\n }\r\n\r\n</style>\r\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exhibitionVideo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exhibitionVideo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./exhibitionVideo.vue?vue&type=template&id=7572c589&scoped=true&\"\nimport script from \"./exhibitionVideo.vue?vue&type=script&lang=js&\"\nexport * from \"./exhibitionVideo.vue?vue&type=script&lang=js&\"\nimport style0 from \"./exhibitionVideo.vue?vue&type=style&index=0&id=7572c589&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7572c589\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"exhibition-crux\"},[_c('p',{staticClass:\"title\"},[_c('span',{staticClass:\"iconfont icon-juxing\"}),_vm._v(\" \"+_vm._s(_vm.exhibitionCrux.title)+\" \"),_c('span',{staticClass:\"icon-shezhi iconfont setting\",on:{\"click\":_vm.setting}})]),_c('div',[(_vm.exhibitionCrux.cruxArray.length)?_c('div',_vm._l((_vm.exhibitionCrux.cruxArray),function(item,index){return _c('div',{key:index,staticClass:\"crux-list\"},[_vm._v(_vm._s(item.name)+\": \"),(item.Path == 'equipQRCode' || item.Path == 'roomQRCode' || item.Path == 'shaftQRCode')?_c('el-popover',{attrs:{\"placement\":\"top\",\"width\":\"360\",\"trigger\":\"hover\"}},[_c('p',{staticStyle:{\"border-bottom\":\"1px solid #eee\",\"padding\":\"2px 0 4px 0\"}},[_vm._v(_vm._s(item.InfoPointName))]),_c('div',{staticStyle:{\"overflow\":\"hidden\"}},[_c('div',{staticStyle:{\"float\":\"left\",\"width\":\"60%\"}},[_c('img',{staticStyle:{\"width\":\"200px\",\"height\":\"200px\"},attrs:{\"src\":'/image-service/common/file_get/'+ item.value +'?systemId=dataPlatform',\"alt\":\"二维码\"}})]),_c('div',{staticStyle:{\"float\":\"right\",\"width\":\"40%\",\"margin-top\":\"30px\"}},[_c('span',[_vm._v(_vm._s(item.value))])])]),_c('div',{staticStyle:{\"text-align\":\"center\",\"margin\":\"0\"}},[_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"mini\"},on:{\"click\":function($event){return _vm.handleCopy(item.value)}}},[_vm._v(\"复制\")])],1),_c('el-button',{attrs:{\"slot\":\"reference\",\"type\":\"text\"},slot:\"reference\"},[_vm._v(_vm._s(item.value ? '有' : '-'))])],1):(Array.isArray(item.value) && item.dataType== 'ATTACHMENT')?_c('el-popover',{attrs:{\"placement\":\"right\",\"width\":\"250\",\"trigger\":\"hover\"}},[_c('p',{staticStyle:{\"border-bottom\":\"1px solid #eee\",\"padding\":\"2px 0 4px 0\"}},[_vm._v(_vm._s(item.InfoPointName))]),_vm._l((item.value),function(pic,index){return _c('div',[_c('div',[_vm._v(\"图纸名称:\"+_vm._s(pic.name)+\" \"),_c('el-button',{attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.downloadFile(pic.key)}}},[_vm._v(\"下载\")])],1)])}),_c('el-button',{attrs:{\"slot\":\"reference\",\"type\":\"text\"},slot:\"reference\"},[_vm._v(_vm._s(item.value ? '有' : '-'))])],2):(item.value && item.value.length && ((item.InfoPointName) + \":\" + (item.value)).length>21)?_c('el-popover',{attrs:{\"placement\":\"top\",\"width\":\"160\",\"trigger\":\"hover\"}},[_c('p',{staticStyle:{\"border-bottom\":\"1px solid #eee\",\"padding\":\"2px 0 4px 0\"}},[_vm._v(_vm._s(item.InfoPointName))]),_c('p',[_vm._v(_vm._s(item.value))]),_c('div',{staticStyle:{\"text-align\":\"center\",\"margin\":\"0\"}},[_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"mini\"},on:{\"click\":function($event){return _vm.handleCopy(item.value)}}},[_vm._v(\"复制\")])],1),_c('el-button',{attrs:{\"slot\":\"reference\",\"type\":\"text\"},slot:\"reference\"},[_vm._v(_vm._s(_vm.handleName(item.InfoPointName, item.value)))])],1):_c('span',[_vm._v(_vm._s(item.value))])],1)}),0):_vm._e()]),_c('cruxDialog',{ref:\"setting\",attrs:{\"crux\":_vm.exhibitionCrux.allMessage,\"type\":_vm.type},on:{\"cruxSuccess\":_vm.cruxSuccess}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{staticClass:\"crux-dialog\",attrs:{\"title\":\"关键信息点\",\"visible\":_vm.dialogFormVisible},on:{\"update:visible\":function($event){_vm.dialogFormVisible=$event}}},[_vm._l((_vm.checkList),function(val,key,i){return _c('section',{key:i},[_c('h4',{staticClass:\"base\"},[_vm._v(_vm._s(key == 'undefined' ? '基本信息' : key))]),_vm._l((val),function(option,index){return _c('el-checkbox',{key:option+index,attrs:{\"label\":option.InfoPointName},model:{value:(option.KeyWord),callback:function ($$v) {_vm.$set(option, \"KeyWord\", $$v)},expression:\"option.KeyWord\"}})})],2)}),_c('div',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.dialogFormVisible = false}}},[_vm._v(\"取 消\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.save}},[_vm._v(\"保 存\")])],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <el-dialog title=\"关键信息点\" :visible.sync=\"dialogFormVisible\" class=\"crux-dialog\">\r\n <section v-for=\"(val,key,i) in checkList\" :key=\"i\">\r\n <h4 class=\"base\">{{ key == 'undefined' ? '基本信息' : key }}</h4>\r\n <el-checkbox\r\n v-for=\"(option,index) in val\"\r\n :key=\"option+index\"\r\n :label=\"option.InfoPointName\"\r\n v-model=\"option.KeyWord\"\r\n />\r\n </section>\r\n <div slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"dialogFormVisible = false\">取 消</el-button>\r\n <el-button type=\"primary\" @click=\"save\">保 存</el-button>\r\n </div>\r\n </el-dialog>\r\n</template>\r\n\r\n<script>\r\nimport Dic from \"@/controller/old-adm/dicController\";\r\n\r\nexport default {\r\n name: \"cruxDialog\",\r\n props: ['crux', 'type'],\r\n data() {\r\n return {\r\n dialogFormVisible: false,\r\n checkList: {},\r\n checkboxGroup: []\r\n }\r\n },\r\n computed: {\r\n allChecks() {\r\n const tmp = [];\r\n for (const key in this.checkList) {\r\n if (this.checkList.hasOwnProperty(key)) {\r\n const element = this.checkList[key];\r\n tmp.push(...element);\r\n }\r\n }\r\n return tmp;\r\n }\r\n },\r\n\r\n watch: {\r\n crux() {\r\n this.changeList()\r\n }\r\n },\r\n methods: {\r\n changeList() {\r\n const tmp = {};\r\n for (let key in this.crux) {\r\n if (this.crux.hasOwnProperty(key)) {\r\n const element = this.crux[key];\r\n tmp[key] = [\r\n ...element.paths.map(i => ({\r\n InfoPointCode: i.InfoPointCode,\r\n KeyWord: i.KeyWord || false,\r\n type: i.type,\r\n code: i.InfoPointCode,\r\n classCode: i.classCode,\r\n id: i.id,\r\n groupCode: i.groupCode,\r\n InfoPointName: i.InfoPointName\r\n }))\r\n ]\r\n }\r\n }\r\n this.checkList = tmp;\r\n },\r\n dialogOpen() {\r\n this.dialogFormVisible = true\r\n },\r\n save() {\r\n let arrLenght = this.allChecks.filter(i => i.KeyWord)\r\n if (arrLenght.length > 6) {\r\n this.$message.info('不可超过6个')\r\n return false\r\n } else {\r\n let param = {\r\n content: []\r\n }\r\n param.content = this.allChecks.map(i => {\r\n if (i.InfoPointName) {\r\n delete i.InfoPointName\r\n }\r\n // return { ...i }\r\n return {\r\n keyWord: i.KeyWord,\r\n // type: this.type,\r\n type: i.type,\r\n code: i.InfoPointCode,\r\n classCode: i.classCode,\r\n id: i.id,\r\n groupCode: i.groupCode\r\n }\r\n })\r\n Dic.setDataDictionary(param, res => {\r\n this.dialogFormVisible = false\r\n this.$emit('cruxSuccess')\r\n this.$message.success('保存成功')\r\n\r\n });\r\n\r\n }\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.crux-dialog {\r\n .el-checkbox {\r\n display: inline-block;\r\n width: 20%;\r\n }\r\n\r\n /deep/ .el-dialog__body {\r\n height: 420px;\r\n overflow: auto;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cruxDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cruxDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cruxDialog.vue?vue&type=template&id=7b362ad8&scoped=true&\"\nimport script from \"./cruxDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./cruxDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./cruxDialog.vue?vue&type=style&index=0&id=7b362ad8&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7b362ad8\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <section class=\"exhibition-crux\">\r\n <p class=\"title\">\r\n <span class=\"iconfont icon-juxing\"></span>\r\n {{ exhibitionCrux.title }}\r\n <span class=\"icon-shezhi iconfont setting\" @click=\"setting\"></span></p>\r\n <div>\r\n <div v-if=\"exhibitionCrux.cruxArray.length\">\r\n <div class=\"crux-list\" v-for=\"(item,index) in exhibitionCrux.cruxArray\" :key=\"index\">{{ item.name }}:\r\n\r\n <el-popover\r\n v-if=\"item.Path == 'equipQRCode' || item.Path == 'roomQRCode' || item.Path == 'shaftQRCode'\"\r\n placement=\"top\"\r\n width=\"360\"\r\n trigger=\"hover\">\r\n <p style=\"border-bottom: 1px solid #eee;padding:2px 0 4px 0;'\">{{ item.InfoPointName }}</p>\r\n <div style=\"overflow:hidden;\">\r\n <div style=\"float:left;width: 60%\">\r\n <img\r\n style=\"width:200px;height:200px;\"\r\n :src=\"'/image-service/common/file_get/'+ item.value +'?systemId=dataPlatform'\"\r\n alt=\"二维码\"\r\n >\r\n </div>\r\n <div style=\"float:right;width: 40%;margin-top: 30px\">\r\n <span>{{ item.value }}</span>\r\n </div>\r\n </div>\r\n <div style=\"text-align: center; margin: 0\">\r\n <el-button type=\"text\" size=\"mini\" @click=\"handleCopy(item.value)\">复制</el-button>\r\n </div>\r\n <el-button slot=\"reference\" type=\"text\">{{ item.value ? '有' : '-' }}</el-button>\r\n </el-popover>\r\n <el-popover\r\n v-else-if=\"Array.isArray(item.value) && item.dataType== 'ATTACHMENT'\"\r\n placement=\"right\"\r\n width=\"250\"\r\n trigger=\"hover\">\r\n <p style=\"border-bottom: 1px solid #eee;padding:2px 0 4px 0;'\">{{ item.InfoPointName }}</p>\r\n <div v-for=\"(pic,index) in item.value\">\r\n <div>图纸名称:{{ pic.name }}\r\n <el-button size=\"mini\" style=\"\" type=\"text\" @click=\"downloadFile(pic.key)\">下载</el-button>\r\n </div>\r\n </div>\r\n <el-button slot=\"reference\" type=\"text\">{{ item.value ? '有' : '-' }}</el-button>\r\n </el-popover>\r\n\r\n <el-popover\r\n v-else-if=\"item.value && item.value.length && `${item.InfoPointName}:${item.value}`.length>21\"\r\n placement=\"top\"\r\n width=\"160\"\r\n trigger=\"hover\">\r\n <p style=\"border-bottom: 1px solid #eee;padding:2px 0 4px 0;'\">{{ item.InfoPointName }}</p>\r\n <p>{{ item.value }}</p>\r\n <div style=\"text-align: center; margin: 0\">\r\n <el-button type=\"text\" size=\"mini\" @click=\"handleCopy(item.value)\">复制</el-button>\r\n </div>\r\n <el-button slot=\"reference\" type=\"text\">{{ handleName(item.InfoPointName, item.value) }}</el-button>\r\n </el-popover>\r\n <span v-else>{{ item.value }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <cruxDialog\r\n ref=\"setting\"\r\n :crux=\"exhibitionCrux.allMessage\"\r\n :type=\"type\"\r\n @cruxSuccess=\"cruxSuccess\"\r\n\r\n />\r\n </section>\r\n</template>\r\n\r\n<script>\r\nimport cruxDialog from \"./cruxDialog\";\r\n\r\nexport default {\r\n name: \"exhibition-crux\",\r\n props: ['exhibitionCrux', 'type'],\r\n components: { cruxDialog },\r\n data() {\r\n return {\r\n list: []\r\n }\r\n },\r\n methods: {\r\n downloadFile(key) {\r\n window.open(\"/image-service/common/file_get/\" + key + \"?systemId=dataPlatform\")\r\n },\r\n setting() {\r\n this.$refs.setting.dialogOpen()\r\n },\r\n cruxSuccess() {\r\n this.$emit('cruxSuccess')\r\n },\r\n handleCopy(data) {\r\n let oInput = document.createElement('input')\r\n oInput.value = data\r\n document.body.appendChild(oInput)\r\n oInput.select()\r\n document.execCommand('Copy')\r\n this.$message.success('复制成功')\r\n oInput.remove()\r\n },\r\n handleName(infoPoint, val) {\r\n let value = val;\r\n if (Array.isArray(value)) {\r\n value = JSON.stringify(val)\r\n }\r\n let text = `${infoPoint}:${value}`;\r\n return text.length > 21 ? value.substring(0, 21 - `${infoPoint}:`.length) + '...' : value;\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n.exhibition-crux {\r\n padding: 10px 0;\r\n\r\n /deep/ .el-button--text {\r\n color: #555 !important;\r\n font-size: 14px;\r\n }\r\n\r\n .title {\r\n /*border-left: 8px solid black;*/\r\n margin: 0 20px 0 10px;\r\n font-weight: 600;\r\n /*text-indent: 10px;*/\r\n display: block;\r\n overflow: hidden;\r\n\r\n .setting {\r\n float: right;\r\n }\r\n\r\n }\r\n\r\n .crux-list {\r\n display: inline-block;\r\n width: 315px;\r\n margin-left: 20px;\r\n vertical-align: text-top;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exhibitionCrux.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exhibitionCrux.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./exhibitionCrux.vue?vue&type=template&id=1cd70944&scoped=true&\"\nimport script from \"./exhibitionCrux.vue?vue&type=script&lang=js&\"\nexport * from \"./exhibitionCrux.vue?vue&type=script&lang=js&\"\nimport style0 from \"./exhibitionCrux.vue?vue&type=style&index=0&id=1cd70944&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1cd70944\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"exhibition-energy\"},[_c('div',{staticClass:\"title\"},_vm._l((_vm.exhibitionEnergy.list),function(val,key,i){return _c('section',[_c('h4',{staticClass:\"base\"},[_vm._v(_vm._s(key))]),_vm._l((val.paths),function(value,keys,index){return _c('div',{staticClass:\"table-dynamic\"},[_c('div',{staticClass:\"table-title\"},[_vm._v(\" \"+_vm._s(value.InfoPointName)+\":\")]),_c('p',{staticClass:\"iot_data\",style:({'color':value.value? '' :'#F56C6C'}),attrs:{\"title\":value.value ? (\"\" + (value.value)) : '未维护'}},[_vm._v(_vm._s(value.value ? (\"\" + (value.value)) : '未维护'))]),(value.data == '0')?_c('p',[_vm._v(_vm._s(value.data)+_vm._s(value.Unit))]):(value.data)?_c('p',[_vm._v(_vm._s(value.data)+_vm._s(value.Unit))]):(value.error)?_c('el-popover',{attrs:{\"placement\":\"right\",\"width\":\"160\",\"trigger\":\"hover\"}},[_c('p',{staticStyle:{\"border-bottom\":\"1px solid #eee\",\"padding\":\"2px 0 4px 0\"}},[_vm._v(\"错误原因\")]),_c('p',[_vm._v(_vm._s('表号功能号不存在'))]),_c('div',{staticStyle:{\"text-align\":\"center\",\"margin\":\"0\"}},[_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"mini\"},on:{\"click\":function($event){return _vm.handleCopy(value.error)}}},[_vm._v(\"复制错误信息\")])],1),_c('el-button',{staticStyle:{\"color\":\"#F56C6C\"},attrs:{\"slot\":\"reference\",\"type\":\"text\"},slot:\"reference\"},[_vm._v(\"error\")])],1):_c('p',[_vm._v(\"--\")]),_c('p',[_vm._v(_vm._s(value.receivetime ? _vm.formatDate(value.receivetime):'--'))])],1)})],2)}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"exhibition-energy\">\r\n <div class=\"title\">\r\n <section v-for=\"(val,key,i) in exhibitionEnergy.list\">\r\n <h4 class=\"base\">{{key}}</h4>\r\n <div class=\"table-dynamic\" v-for=\"(value,keys,index) in val.paths\">\r\n <div class=\"table-title\"> {{ value.InfoPointName }}:</div>\r\n <p class=\"iot_data\" :style=\"{'color':value.value? '' :'#F56C6C'}\" :title=\"value.value ? `${value.value}` : '未维护'\">{{ value.value ? `${value.value}` : '未维护' }}</p>\r\n <p v-if=\"value.data == '0'\">{{ value.data }}{{ value.Unit }}</p>\r\n <p v-else-if=\"value.data\">{{ value.data }}{{ value.Unit }}</p>\r\n <!-- <p v-else-if=\"value.error\">{{value.error}}</p>-->\r\n <el-popover\r\n v-else-if=\"value.error\"\r\n placement=\"right\"\r\n width=\"160\"\r\n trigger=\"hover\">\r\n <p style=\"border-bottom: 1px solid #eee;padding:2px 0 4px 0;'\">错误原因</p>\r\n <p>{{ '表号功能号不存在' }}</p>\r\n <div style=\"text-align: center; margin: 0\">\r\n <el-button type=\"text\" size=\"mini\" @click=\"handleCopy(value.error)\">复制错误信息</el-button>\r\n </div>\r\n <el-button slot=\"reference\" type=\"text\" style=\"color:#F56C6C\">error</el-button>\r\n </el-popover>\r\n <p v-else>--</p>\r\n\r\n <p>{{value.receivetime ? formatDate(value.receivetime):'--'}}</p>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n export default {\r\n name: \"exhibitionEnergy\",\r\n props: ['exhibitionEnergy'],\r\n methods:{\r\n formatDate(str) {\r\n if (str) {\r\n if (str.includes('-')) {\r\n return str\r\n } else {\r\n if (str.length > 8) {\r\n return str.substr(0, 4) + \"-\" + str.substr(4, 2) + \"-\" + str.substr(6, 2) + \" \" + str.substr(8, 2) + \":\" + str.substr(10, 2) + \":\" + str.substr(12, 2)\r\n } else if (str === 'null') {\r\n return '--'\r\n }else {\r\n return str.substr(0, 4) + \"-\" + str.substr(4, 2) + \"-\" + str.substr(6, 2) + \" \" + str.substr(8, 2)\r\n }\r\n }\r\n } else {\r\n return '--'\r\n }\r\n },\r\n handleCopy(data) {\r\n let oInput = document.createElement('input')\r\n oInput.value = data\r\n document.body.appendChild(oInput)\r\n oInput.select()\r\n document.execCommand('Copy')\r\n this.$message.success('复制成功')\r\n oInput.remove()\r\n },\r\n }\r\n }\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n .exhibition-energy {\r\n .base {\r\n margin: 10px;\r\n font-weight: 600;\r\n text-indent: 10px;\r\n border-bottom: 1px dashed #eee;\r\n }\r\n\r\n .table-dynamic {\r\n /*height: 85px;*/\r\n width: 100%;\r\n margin: 5px 0;\r\n padding-left: 20px;\r\n box-sizing: border-box;\r\n }\r\n\r\n .iot_data {\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n\r\n .table-title {\r\n float: left;\r\n max-width: 200px;\r\n width: 100px;\r\n height: 85px;\r\n }\r\n }\r\n</style>\r\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exhibitionEnergy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exhibitionEnergy.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./exhibitionEnergy.vue?vue&type=template&id=ef204720&scoped=true&\"\nimport script from \"./exhibitionEnergy.vue?vue&type=script&lang=js&\"\nexport * from \"./exhibitionEnergy.vue?vue&type=script&lang=js&\"\nimport style0 from \"./exhibitionEnergy.vue?vue&type=style&index=0&id=ef204720&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ef204720\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"exhibition-maintain\"},[_c('p',{staticClass:\"title disable\"},[_c('span',{staticClass:\" iconfont icon-weixiubeijing \"}),_vm._v(\" \"+_vm._s(_vm.exhibitionMaintain.title)+\" \"),_c('span',{staticClass:\"iconfont icon-right \",staticStyle:{\"float\":\"right\",\"margin-right\":\"20px\"}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"exhibition-maintain\">\r\n <p class=\"title disable\">\r\n <span class=\" iconfont icon-weixiubeijing \"></span>\r\n {{exhibitionMaintain.title}}\r\n <span class=\"iconfont icon-right \" style=\"float: right;margin-right: 20px\"></span></p>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n export default {\r\n name: \"exhibitionMaintain\",\r\n props: ['exhibitionMaintain']\r\n }\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n .exhibition-maintain {\r\n\r\n .title {\r\n margin-left: 10px;\r\n font-weight: 600;\r\n /*text-indent: 10px;*/\r\n }\r\n .disable{\r\n color:#ccc;\r\n }\r\n }\r\n</style>\r\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exhibitionMaintain.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exhibitionMaintain.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./exhibitionMaintain.vue?vue&type=template&id=552a0238&scoped=true&\"\nimport script from \"./exhibitionMaintain.vue?vue&type=script&lang=js&\"\nexport * from \"./exhibitionMaintain.vue?vue&type=script&lang=js&\"\nimport style0 from \"./exhibitionMaintain.vue?vue&type=style&index=0&id=552a0238&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"552a0238\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"select-radio\"},[_c('p',{staticClass:\"title\"},[_c('span',{staticClass:\"iconfont icon-juxing\"}),_vm._v(\" \"+_vm._s(_vm.selectRadio.information)+\" \")]),_vm._l((_vm.selectRadio.radioList),function(item,index){return _c('el-radio-group',{key:index,staticStyle:{\"margin\":\"0 10px\"},on:{\"change\":_vm.changeRadio},model:{value:(_vm.selectRadio.initRadio),callback:function ($$v) {_vm.$set(_vm.selectRadio, \"initRadio\", $$v)},expression:\"selectRadio.initRadio\"}},[_c('el-radio',{attrs:{\"label\":item.label}},[_vm._v(_vm._s(item.value))])],1)})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"select-radio\">\r\n <p class=\"title\">\r\n <span class=\"iconfont icon-juxing\"></span>\r\n {{selectRadio.information}}\r\n </p>\r\n <template>\r\n <el-radio-group\r\n style=\" margin: 0 10px;\"\r\n v-model=\"selectRadio.initRadio\"\r\n @change=\"changeRadio\"\r\n v-for=\"(item,index) in selectRadio.radioList\"\r\n :key=\"index\"\r\n >\r\n <el-radio :label=\"item.label\">{{item.value}}</el-radio>\r\n </el-radio-group>\r\n </template>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n export default {\r\n name: \"selectRadio\",\r\n props: ['selectRadio'],\r\n data() {\r\n return {\r\n radio: '1'\r\n };\r\n },\r\n methods: {\r\n changeRadio(val) {\r\n this.$emit('changeRadio', val)\r\n }\r\n }\r\n }\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n .select-radio {\r\n .title {\r\n /*border-left: 8px solid black;*/\r\n margin: 10px 40px 10px 10px;\r\n font-weight: 600;\r\n /*text-indent: 10px;*/\r\n display: inline-block;\r\n\r\n }\r\n }\r\n</style>\r\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectRadio.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectRadio.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./selectRadio.vue?vue&type=template&id=996549b0&scoped=true&\"\nimport script from \"./selectRadio.vue?vue&type=script&lang=js&\"\nexport * from \"./selectRadio.vue?vue&type=script&lang=js&\"\nimport style0 from \"./selectRadio.vue?vue&type=style&index=0&id=996549b0&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"996549b0\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div class=\"tableDisplay\">\r\n <div class=\"header\">\r\n <el-button style=\"float:left;\" size=\"small\" type=\"default\" icon=\"el-icon-back\" @click=\"goBack\"></el-button>\r\n <span :title=\"`${name} - ${code}`\" class=\"details-title\"><b>{{ name }} - {{ code }}</b></span>\r\n </div>\r\n <div class=\"content\">\r\n <el-scrollbar style=\"height:100%;\">\r\n <div class=\"content-scrollbar\">\r\n <div class=\"content-left\">\r\n <div class=\"content-keyPoint\">\r\n <exhibitionCrux :exhibitionCrux=\"exhibitionCrux\" :type=\"type\" @cruxSuccess=\"cruxSuccess\"/>\r\n </div>\r\n <div class=\"content-showType\">\r\n <selectRadio\r\n :selectRadio=\"selectRadio\"\r\n @changeRadio=\"changeRadio\"\r\n />\r\n </div>\r\n <div class=\"content-point\">\r\n <div class=\"content-point-left\">\r\n <exhibitionBaseInformation :exhibitionBaseInformation=\"exhibitionBaseInformation\"/>\r\n </div>\r\n <div class=\"content-point-right\">\r\n <exhibitionEnergy :exhibitionEnergy=\"exhibitionEnergy\"/>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"content-right\">\r\n <div class=\"content-repair\">\r\n <exhibitionMaintain :exhibitionMaintain=\"exhibitionMaintain\"/>\r\n </div>\r\n <div class=\"content-media\">\r\n <exhibitionImage :exhibitionImage=\"exhibitionImage\" v-show=\"isShowImage\"/>\r\n <exhibitionVideo :exhibitionVideo=\"exhibitionVideo\" v-show=\"isShowVideo\"/>\r\n <exhibitionFile :exhibitionFile=\"exhibitionFile\" v-show=\"isShowFile\"/>\r\n </div>\r\n </div>\r\n </div>\r\n </el-scrollbar>\r\n </div>\r\n <div class=\"footer\">\r\n <el-button-group style=\"float:right;margin:8px 10px 0 0\">\r\n <el-button\r\n :disabled=\"list.findIndex(item => item.value == id) == 0\"\r\n @click=\"handleClickPrev\"\r\n size=\"mini\"\r\n icon=\"el-icon-arrow-left\">\r\n 上一页\r\n </el-button>\r\n <el-select size=\"mini\" style=\"float:left;margin:0 10px;\" v-model=\"id\" @change=\"handleChangeExample\"\r\n placeholder=\"请选择\">\r\n <el-option\r\n v-for=\"item in list\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\">\r\n </el-option>\r\n </el-select>\r\n <el-button\r\n :disabled=\"list.findIndex(item => item.value == id) == list.length-1\"\r\n @click=\"handleClickNext\"\r\n size=\"mini\">\r\n 下一页\r\n <i class=\"el-icon-arrow-right el-icon--right\"></i>\r\n </el-button>\r\n </el-button-group>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport exhibitionBaseInformation from \"@/components/old-adm/ledger/components/details/detail/exhibitionBaseInformation\";\r\nimport exhibitionFile from \"@/components/old-adm/ledger/components/details/detail/exhibitionFile\";\r\nimport exhibitionImage from \"@/components/old-adm/ledger/components/details/detail/exhibitionImage\";\r\nimport exhibitionVideo from \"@/components/old-adm/ledger/components/details/detail/exhibitionVideo\";\r\nimport exhibitionCrux from \"@/components/old-adm/ledger/components/details/detail/exhibitionCrux\";\r\nimport exhibitionEnergy from \"@/components/old-adm/ledger/components/details/detail/exhibitionEnergy\";\r\nimport exhibitionMaintain from \"@/components/old-adm/ledger/components/details/detail/exhibitionMaintain\";\r\nimport selectRadio from \"@/components/old-adm/ledger/components/details/detail/selectRadio\";\r\nimport tools from \"@/utils/old-adm/scan/tools\"\r\nimport ScanController from \"@/controller/old-adm/ScanController\";\r\nimport Dic from \"@/controller/old-adm/dicController\";\r\nimport EquipController from \"@/controller/old-adm/equipController\";\r\nimport {mapGetters} from \"vuex\";\r\n\r\nexport default {\r\n name: \"deviceDetails\",\r\n components: {\r\n exhibitionBaseInformation,\r\n exhibitionFile,\r\n exhibitionVideo,\r\n exhibitionImage,\r\n exhibitionMaintain,\r\n selectRadio,\r\n exhibitionCrux,\r\n exhibitionEnergy\r\n },\r\n created() {\r\n this.id = this.$route.query.equipId;\r\n this.name = this.$route.query.equipName;\r\n this.code = this.$route.query.equipCode;\r\n this.type = this.$route.query.type;\r\n this.list = this.$route.query.data;\r\n this.getData();\r\n },\r\n computed: {\r\n ...mapGetters(\"layout\", [\"projectId\", \"secret\", \"userId\", \"group_code\"])\r\n },\r\n data() {\r\n return {\r\n id: '', //当前设备id\r\n name: '', //当前设备本地名称\r\n code: '', //当前设备的本地编码\r\n type: '', //设备类型\r\n list: [], //设备列表\r\n pointData: [], //信息点数据\r\n exampleData: {}, //实例数据\r\n currentRadio: '1',//当前选中的select\r\n criterias: [], //动态参数\r\n criteriasArray: [],\r\n selectRadio: {\r\n information: '设备信息点',\r\n initRadio: '1',\r\n radioList: [\r\n {\r\n value: '显示需采集信息点',\r\n label: '1'\r\n },\r\n {\r\n value: '显示有值信息点',\r\n label: '2'\r\n },\r\n {\r\n value: '显示全部信息点',\r\n label: '3'\r\n }\r\n ]\r\n },\r\n exhibitionBaseInformation: {\r\n information: {}\r\n },\r\n exhibitionEnergy: {\r\n title: '能耗信息',\r\n firstName: '',\r\n dynamic: [],\r\n list: {}\r\n },\r\n exhibitionMaintain: {\r\n title: '维修/维保记录'\r\n },\r\n exhibitionFile: {\r\n title: '文件',\r\n list: {}\r\n },\r\n exhibitionCrux: {\r\n title: '关键信息点:',\r\n cruxArray: [],\r\n allMessage: [],//全部信息点\r\n },\r\n exhibitionImage: {\r\n title: '图片',\r\n list: {},\r\n arr: []\r\n },\r\n exhibitionVideo: {\r\n title: '视频',\r\n list: []\r\n },\r\n instance: {},//实例信息处理\r\n isShowImage: false,\r\n isShowVideo: false,\r\n isShowFile: false,\r\n }\r\n },\r\n methods: {\r\n deepCopy(obj) {\r\n return JSON.parse(JSON.stringify(obj))\r\n },\r\n cruxSuccess() {\r\n this.getData()\r\n },\r\n // 获取表头和实例数据(动态数据在组件中获取,在此格式化请求参数)\r\n getData() {\r\n let params1 = {\r\n orders: \"sort asc\",\r\n pageNumber: 1,\r\n pageSize: 1000,\r\n type: this.type\r\n }, params2 = {\r\n filters: `id='${this.id}'`,\r\n };\r\n let promise1 = new Promise((resolve, reject) => {\r\n Dic.getDataDictionary(params1, res => {\r\n resolve(res)\r\n })\r\n })\r\n let promise2 = new Promise((resolve, reject) => {\r\n EquipController.queryEquip(params2).then(res => {\r\n resolve(res)\r\n })\r\n })\r\n // 数据初始化\r\n this.exhibitionEnergy.dynamic = [];\r\n this.criterias = [];\r\n\r\n Promise.all([promise1, promise2]).then(values => {\r\n this.pointData = values[0].content;\r\n this.exampleData = values[1].content[0];\r\n this.name = this.exampleData.localName ? this.exampleData.localName : this.exampleData.name ? this.exampleData.name : '';\r\n this.code = this.exampleData.localId ? this.exampleData.localId : '';\r\n let obj = this.deepCopy(values[1].content[0]);\r\n obj = tools.flattenKeys(obj);\r\n for (let key in obj) { //删除对象中数组为空的项\r\n if (Array.isArray(obj[key]) && !obj[key].length) {\r\n delete obj[key]\r\n }\r\n }\r\n this.instance = obj;\r\n this.pointData.forEach(item => {\r\n if (item.category != \"STATIC\") {\r\n let cur = tools.dataForKey(this.exampleData, item.path);\r\n if (cur) {\r\n this.criterias.push({\r\n objectId: this.exampleData.id,\r\n infoCode: item.code\r\n })\r\n }\r\n }\r\n if (this.instance.hasOwnProperty(item.path)) {\r\n item.value = this.instance[item.path]\r\n }\r\n })\r\n let params = { //获取动态参数\r\n groupCode: this.group_code,\r\n appId: \"datacenter\",\r\n projectId: this.projectId,\r\n data: []\r\n }\r\n params.data = this.criterias\r\n if (this.criterias.length) {\r\n ScanController.BeatchQueryParam(params, res => {\r\n this.criteriasArray = res.data;\r\n res.data.length && res.data.map(child => {\r\n this.pointData.map(head => {\r\n if (head.code == child.infoCode) {\r\n if (head.dataSource) {\r\n head.dataSource.forEach(i => {\r\n if (i.code == child.data) {\r\n this.$set(head, 'data', i.name)\r\n }\r\n })\r\n } else {\r\n this.$set(head, 'data', child.data)\r\n }\r\n // this.$set(head, 'svalue', child.value)\r\n this.$set(head, 'svalue', child.infoValue)\r\n // this.$set(head, 'receivetime', child.receivetime)\r\n this.$set(head, 'receivetime', child.time)\r\n this.$set(head, 'error', child.error)\r\n }\r\n return head\r\n })\r\n })\r\n this.handleRadios(this.currentRadio);\r\n this.handleEnclosure() //处理图片视频文件信息\r\n })\r\n } else {\r\n this.handleRadios(this.currentRadio);\r\n this.handleEnclosure() //处理图片视频文件信息\r\n }\r\n\r\n })\r\n },\r\n handleEnclosure() {\r\n //图片文件处理,脱离radio控制\r\n let isArr = []\r\n isArr = this.pointData.filter(k => k.value)\r\n this.handlePicList(isArr)\r\n this.handleFileList(isArr)\r\n },\r\n handleRadios(val) { //判断radio的值显示关键信息,基本信息,图片,文件\r\n let arr = []\r\n //关键信息点\r\n this.exhibitionCrux.cruxArray = this.pointData.filter(i => i.keyWord)\r\n this.exhibitionCrux.cruxArray.map(i => {\r\n if (this.instance.hasOwnProperty(i.path)) {\r\n return {\r\n ...i,\r\n value: this.instance[i.path]\r\n }\r\n }\r\n })\r\n\r\n if (val == 1) { //需采集信息\r\n arr = this.pointData.filter(i => i.visible)\r\n } else if (val == 2) { //有值信息点\r\n arr = this.pointData.filter(k => k.value)\r\n } else { //全部信息点\r\n arr = this.pointData\r\n }\r\n this.displayData(arr)\r\n },\r\n handlePicList(arr) {\r\n let picObject = {}\r\n let video = []\r\n //处理数据格式\r\n arr.map(i => {\r\n if (i.dataType == 'ATTACHMENT') {\r\n switch (i.path) {\r\n case 'infos.installPic':\r\n case 'infos.nameplate':\r\n case 'infos.pic':\r\n if (this.instance.hasOwnProperty(i.path)) {\r\n i.PicList = this.instance[i.path].filter(i => i.type === 'image' || i.type === 'panorama')\r\n video = video.concat(this.instance[i.path].filter(i => i.type === 'video'))\r\n }\r\n if (picObject[i.name]) {\r\n } else {\r\n picObject[i.name] = []\r\n }\r\n picObject[i.name].push({\r\n ...i,\r\n })\r\n break;\r\n }\r\n }\r\n\r\n })\r\n //展示图片\r\n let isArray = [] //获取图片数组\r\n for (let i in picObject) {\r\n if (Array.isArray(picObject[i])) {\r\n let list = picObject[i]\r\n list.forEach(i => {\r\n if (i.PicList) {\r\n isArray.push(...i.PicList)\r\n }\r\n })\r\n }\r\n }\r\n this.exhibitionImage.list = picObject\r\n this.exhibitionImage.arr = isArray\r\n this.exhibitionVideo.list = video\r\n //判断是否显示图片组件\r\n this.isShowImage = isArray.length ? true : false\r\n //判断是否显示video组件\r\n this.isShowVideo = video.length ? true : false\r\n\r\n },\r\n handleFileList(arr) {\r\n let picObject = {}\r\n //处理数据格式\r\n arr.map(i => {\r\n if (i.dataType == 'ATTACHMENT') {\r\n switch (i.path) {\r\n case 'infos.originalCertificate': //原厂证明\r\n case 'infos.acceptanceReport': //验收报告\r\n case 'infos.maintainManual': //维修保养手册\r\n case 'infos.archive': //设备文档\r\n case 'infos.drawing': //设备图纸\r\n case 'infos.approachingAcceptance': //进场验收单\r\n case 'infos.testReport': //检测报告\r\n case 'infos.supplierContract': //供应合同\r\n case 'infos.productCertification': //产品合格证\r\n case 'infos.operationManual': //操作说明书\r\n case 'infos.insuranceFile': //保险文件\r\n case 'infos.checkReport': //安装质检报告\r\n case 'infos.installDrawing': //安装图纸\r\n case 'infos.installInstruction': //安装说明书\r\n case 'infos.designIDGraph': //设计工况空调机组处理过程焓湿图\r\n case 'infos.fanCharacterCurve': //风机性能曲线\r\n if (this.instance.hasOwnProperty(i.path)) {\r\n i.fileList = this.instance[i.path]\r\n }\r\n if (picObject[i.name]) {\r\n\r\n } else {\r\n picObject[i.name] = []\r\n }\r\n picObject[i.name].push({\r\n ...i,\r\n })\r\n break\r\n }\r\n }\r\n })\r\n //展示文件\r\n this.exhibitionFile.list = picObject\r\n let isArray = [] //获取文件数组\r\n for (let i in picObject) {\r\n if (Array.isArray(picObject[i])) {\r\n let list = picObject[i]\r\n list.forEach(i => {\r\n if (i.fileList) {\r\n isArray.push(...i.fileList)\r\n }\r\n })\r\n }\r\n }\r\n //判断是否显示文件组件\r\n this.isShowFile = isArray.length ? true : false\r\n\r\n },\r\n changeRadio(val) { //1,需采集,2,有值,3,全部\r\n this.handleRadios(val)\r\n this.currentRadio = val\r\n },\r\n formatDate(str) {\r\n if (str) {\r\n if (str.includes('-')) {\r\n return str\r\n } else {\r\n if (str.length > 8) {\r\n return str.substr(0, 4) + \"-\" + str.substr(4, 2) + \"-\" + str.substr(6, 2) + \" \" + str.substr(8, 2) + \":\" + str.substr(10, 2) + \":\" + str.substr(12, 2)\r\n } else {\r\n return str.substr(0, 4) + \"-\" + str.substr(4, 2) + \"-\" + str.substr(6, 2) + \" \" + str.substr(8, 2)\r\n }\r\n }\r\n } else {\r\n return '--'\r\n }\r\n },\r\n displayData(arr) {//对数据进行处理传给组件展示\r\n const result = {}\r\n const resultEnergy = {};\r\n arr.map(i => {\r\n if (this.instance.hasOwnProperty(i.path) && this.currentRadio != 2) {\r\n i.value = this.instance[i.path]\r\n }\r\n if (i.dataType == 'DATETIME') {\r\n if (this.instance.hasOwnProperty(i.path)) {\r\n let time = this.instance[i.path]\r\n i.value = this.formatDate(time)\r\n }\r\n }\r\n if (i.dataSource && i.dataSource.length) {\r\n // let source = JSON.parse(i.dataSource)\r\n let source = i.dataSource\r\n //判断输入类型\r\n if (i.dataType == 'ENUM') {\r\n let d1l = tools.formatDataSource(i.dataSource)\r\n d1l.forEach(k => {\r\n if (k.code == this.instance[i.path]) {\r\n i.value = k.name\r\n }\r\n })\r\n } else if (i.dataType == 'MENUM' || i.dataType == 'DATETIME'){\r\n if (this.instance.hasOwnProperty(i.path)) {\r\n if (!Array.isArray(this.instance[i.path])) {\r\n let transArray = this.instance[i.path].split(',')\r\n i.value = source.filter(item => transArray.includes(item.code)).map(item => item.name).join(',')\r\n }\r\n }\r\n }\r\n source.forEach(j => {\r\n if (j.code == this.instance[i.path]) {\r\n i.value = j.name\r\n }\r\n })\r\n }\r\n // 动态信息点处理\r\n switch (i.category) {\r\n case \"STATIC\":\r\n if (result[`${i.firstName}${i.secondName ? '/' + i.secondName : ''}`]) {\r\n result[`${i.firstName}${i.secondName ? '/' + i.secondName : ''}`].paths.push({\r\n Path: i.path,\r\n InfoPointName: i.name,\r\n InfoPointCode: i.code,\r\n Value: i.value,\r\n Visible: i.visible,\r\n KeyWord: i.keyWord,\r\n classCode: i.classCode,\r\n id: i.id,\r\n groupCode: i.groupCode,\r\n type: i.type,\r\n dataType: i.dataType,\r\n dataSource: i.dataSource,\r\n })\r\n } else {\r\n result[`${i.firstName}${i.secondName ? '/' + i.secondName : ''}`] = {\r\n paths: [{\r\n Path: i.path,\r\n InfoPointName: i.name,\r\n InfoPointCode: i.code,\r\n Value: i.value,\r\n Visible: i.visible,\r\n KeyWord: i.keyWord,\r\n classCode: i.classCode,\r\n id: i.id,\r\n groupCode: i.groupCode,\r\n type: i.type,\r\n dataType: i.dataType,\r\n dataSource: i.dataSource,\r\n }]\r\n }\r\n }\r\n break\r\n default:\r\n if (resultEnergy[`${i.firstName}${i.secondName ? '/' + i.secondName : ''}`]) {\r\n resultEnergy[`${i.firstName}${i.secondName ? '/' + i.secondName : ''}`].paths.push({\r\n Path: i.path,\r\n InfoPointName: i.name,\r\n InfoPointCode: i.code,\r\n value: i.svalue,\r\n Visible: i.visible,\r\n KeyWord: i.keyWord,\r\n data: i.data,\r\n receivetime: i.receivetime,\r\n error: i.error,\r\n Unit: i.unit,\r\n FirstName: i.firstName,\r\n dataType: i.dataType,\r\n dataSource: i.dataSource,\r\n })\r\n } else {\r\n resultEnergy[`${i.firstName}${i.secondName ? '/' + i.secondName : ''}`] = {\r\n paths: [{\r\n Path: i.path,\r\n InfoPointName: i.name,\r\n InfoPointCode: i.code,\r\n value: i.svalue,\r\n Visible: i.visible,\r\n KeyWord: i.keyWord,\r\n data: i.data,\r\n receivetime: i.receivetime,\r\n error: i.error,\r\n Unit: i.unit,\r\n FirstName: i.firstName,\r\n dataType: i.dataType,\r\n dataSource: i.dataSource,\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n this.exhibitionBaseInformation.information = result\r\n this.exhibitionCrux.allMessage = result\r\n this.exhibitionEnergy.list = resultEnergy;\r\n },\r\n goBack() {\r\n this.$router.push({ name: \"facilityLedger\" })\r\n },\r\n // 切换实例\r\n handleChangeExample() {\r\n this.selectRadio.initRadio = '1';\r\n this.currentRadio = '1';\r\n this.getData();\r\n },\r\n // 切换上一个实例\r\n handleClickPrev() {\r\n let index = this.list.findIndex(item => item.value == this.id);\r\n this.id = this.list[index - 1].value;\r\n this.handleChangeExample();\r\n },\r\n // 切换下一个实例\r\n handleClickNext() {\r\n let index = this.list.findIndex(item => item.value == this.id);\r\n this.id = this.list[index + 1].value;\r\n this.handleChangeExample();\r\n },\r\n },\r\n watch: {\r\n projectId() {\r\n this.$router.push({ path: \"/ledger/facility\" })\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n@bgc: #fff;\r\n.tableDisplay {\r\n .header {\r\n padding-bottom: 10px;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n\r\n .details-title {\r\n color: #333;\r\n font-size: 16px;\r\n margin-left: 20px;\r\n line-height: 32px;\r\n cursor: pointer;\r\n }\r\n }\r\n\r\n .content {\r\n height: calc(100% - 77px);\r\n\r\n .content-scrollbar {\r\n display: flex;\r\n height: 100%;\r\n flex-direction: row;\r\n box-sizing: border-box;\r\n background-color: #f2f2f2;\r\n\r\n .content-left {\r\n display: flex;\r\n flex-direction: column;\r\n flex: 1;\r\n box-sizing: border-box;\r\n\r\n .content-keyPoint {\r\n border: 1px solid #ccc;\r\n box-sizing: border-box;\r\n margin-bottom: 10px;\r\n // overflow: hidden;\r\n background: @bgc;\r\n }\r\n\r\n .content-showType {\r\n height: 50px;\r\n border: 1px solid #ccc;\r\n border-bottom: none;\r\n box-sizing: border-box;\r\n background: @bgc;\r\n }\r\n\r\n .content-point {\r\n display: flex;\r\n flex-direction: row;\r\n border: 1px solid #ccc;\r\n box-sizing: border-box;\r\n background: @bgc;\r\n\r\n .content-point-left {\r\n flex: 1;\r\n }\r\n\r\n .content-point-right {\r\n width: 300px;\r\n border-left: 1px solid #ccc;\r\n }\r\n }\r\n }\r\n\r\n .content-right {\r\n width: 400px;\r\n margin-left: 10px;\r\n box-sizing: border-box;\r\n\r\n .content-repair {\r\n height: 50px;\r\n line-height: 50px;\r\n margin-bottom: 10px;\r\n border: 1px solid #ccc;\r\n background: @bgc;\r\n box-sizing: border-box;\r\n }\r\n\r\n .content-media {\r\n box-sizing: border-box;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .footer {\r\n position: fixed;\r\n bottom: 0;\r\n left: 235px;\r\n width: calc(100% - 235px);\r\n height: 45px;\r\n background-color: #fff;\r\n box-sizing: border-box;\r\n }\r\n}\r\n\r\n/deep/ .el-scrollbar__wrap {\r\n overflow-x: hidden;\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=d3e43494&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=d3e43494&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d3e43494\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"deviceList\"}},[_c('saga-title',{attrs:{\"mess\":_vm.mess}}),_c('div',{staticClass:\"table-main\"},[_c('div',{staticClass:\"search-header\"},[_c('floor-cascader',{on:{\"change\":_vm.changeFloor}}),_c('my-cascader',{ref:\"cascader\",on:{\"change\":_vm.changeDevice}})],1),_c('hanson-table',{ref:\"tableMain\",on:{\"close\":_vm.close}})],1),_c('table-transfers')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"cascaderMap\"}},[_c('span',{staticClass:\"buildFloor\",staticStyle:{\"padding-right\":\"12px\"}},[_vm._v(\"所属专业系统类型\")]),_c('el-select',{style:(_vm.isWidth ? '' : 'width:160px;'),attrs:{\"placeholder\":\"请选择\",\"props\":_vm.props,\"filterable\":\"\",\"size\":\"small\"},on:{\"change\":_vm.changeVal},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},_vm._l((_vm.options),function(item){return _c('el-option',{key:item.classCode,attrs:{\"label\":item.categoryName,\"value\":item.classCode}})}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div id=\"cascaderMap\">\r\n <span class=\"buildFloor\" style=\"padding-right: 12px;\">所属专业系统类型</span>\r\n <el-select v-model=\"value\" placeholder=\"请选择\" :props=\"props\" filterable :style=\"isWidth ? '' : 'width:160px;'\"\r\n size=\"small\" @change=\"changeVal\">\r\n <el-option v-for=\"item in options\" :key=\"item.classCode\" :label=\"item.categoryName\"\r\n :value=\"item.classCode\"></el-option>\r\n </el-select>\r\n <!-- <el-cascader placeholder=\"请选择\" :options=\"options\" v-model=\"value\" :props=\"props\" filterable :style=\"isWidth ? '' : 'width:160px;'\" size=\"small\"\r\n @change=\"changeVal\" change-on-select></el-cascader> -->\r\n </div>\r\n</template>\r\n<script>\r\nimport { mapGetters } from 'vuex';\r\n// import { queryLinkSys } from \"@/api/scan/request\";\r\n// import { queryPhysicsAllType } from \"@/api/dict\";\r\nimport Dic from '@/controller/old-adm/dicController'\r\nimport Scan from '@/controller/old-adm/ScanController'\r\n\r\nconst { queryPhysicsAllType } = Dic;\r\nconst { queryLinkSys } = Scan;\r\n\r\n\r\nexport default {\r\n name: \"getCode\",\r\n props: {\r\n isWidth: {\r\n type: Boolean,\r\n default: true\r\n },\r\n all: {\r\n default: false\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(\"layout\", [\"projectId\"])\r\n },\r\n data() {\r\n return {\r\n value: [],\r\n options: [],\r\n props: {\r\n value: \"classCode\",\r\n label: \"categoryName\"\r\n }\r\n };\r\n },\r\n created() {\r\n this.init()\r\n },\r\n watch: {\r\n projectId() {\r\n this.value = ''\r\n this.init()\r\n }\r\n },\r\n methods: {\r\n init() {\r\n if (this.all) {\r\n //物理世界所有系统\r\n this.getAllData();\r\n } else {\r\n //当前项目下已有的系统\r\n this.getData();\r\n }\r\n },\r\n setValue(val) {\r\n this.value = val\r\n },\r\n //修改val\r\n changeVal(val) {\r\n let value = {}\r\n this.options.map(item => {\r\n if (item.classCode == val) {\r\n value = item\r\n }\r\n })\r\n this.value = val\r\n this.$emit(\"change\", value)\r\n },\r\n async getData() {\r\n let param = {\r\n distinct: true,\r\n pageNumber: 1,\r\n pageSize: 1000,\r\n projection: [\r\n \"classCode\", \"CategoryName\"\r\n ]\r\n }\r\n try {\r\n const res = await queryLinkSys(param);\r\n console.log({res})\r\n this.options = res.content;\r\n if (this.value && this.options.find(item => item.classCode === this.value)) {\r\n this.changeVal(this.value)\r\n } else {\r\n this.changeVal(\"\")\r\n }\r\n } catch (error) {\r\n console.log({error})\r\n }\r\n \r\n \r\n },\r\n async getAllData() {\r\n let param = {\r\n type: 'system'\r\n }\r\n const res = await queryPhysicsAllType(param);\r\n \r\n \r\n this.options = this.changeArr(res.content)\r\n if (this.value && this.options.find(item => item.classCode === this.value)) {\r\n this.changeVal(this.value)\r\n } else {\r\n this.changeVal(\"\")\r\n }\r\n \r\n },\r\n changeArr(arr) {\r\n let data = [];\r\n arr.forEach(item => {\r\n data.push({ classCode: item.classCode || item.code, categoryName: item.categoryName || item.name });\r\n });\r\n console.log(data, 'data')\r\n return data;\r\n }\r\n }\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n#cascaderMap {\r\n float: left;\r\n margin-left: 10px;\r\n\r\n .buildFloor {\r\n color: #999999;\r\n font-size: 14px;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./system.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./system.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./system.vue?vue&type=template&id=8cede20c&scoped=true&\"\nimport script from \"./system.vue?vue&type=script&lang=js&\"\nexport * from \"./system.vue?vue&type=script&lang=js&\"\nimport style0 from \"./system.vue?vue&type=style&index=0&id=8cede20c&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8cede20c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"height\":\"calc(100% - 44.5px)\",\"padding\":\"0px 10px 10px\",\"box-sizing\":\"border-box\"}},[_c('div',{staticClass:\"hanson-bar\"},[_c('div',{staticStyle:{\"float\":\"right\",\"overflow\":\"hidden\"}},[_c('el-checkbox',{on:{\"change\":function($event){return _vm.getHeaderData(_vm.mess)}},model:{value:(_vm.isShowDelivered),callback:function ($$v) {_vm.isShowDelivered=$$v},expression:\"isShowDelivered\"}},[_vm._v(\"显示有值信息点\")]),_c('span',{staticStyle:{\"margin-left\":\"10px\"}},[_vm._v(\"当前筛选条件下共\"+_vm._s(_vm.page.total || \"--\")+\"系统\")])],1),_c('el-select',{staticStyle:{\"width\":\"100px\",\"margin-right\":\"20px\",\"vertical-align\":\"bottom\"},on:{\"change\":function($event){return _vm.getHeaderData(_vm.mess)}},model:{value:(_vm.onlyRead),callback:function ($$v) {_vm.onlyRead=$$v},expression:\"onlyRead\"}},_vm._l((_vm.options),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1),_c('el-select',{staticStyle:{\"width\":\"100px\",\"margin-right\":\"10px\",\"vertical-align\":\"bottom\"},on:{\"change\":_vm.handleChangeShowType},model:{value:(_vm.showType),callback:function ($$v) {_vm.showType=$$v},expression:\"showType\"}},_vm._l((_vm.showTypes),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1),_c('el-select',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mess.deviceId),expression:\"mess.deviceId\"}],staticStyle:{\"width\":\"200px\",\"margin-right\":\"8px\",\"vertical-align\":\"bottom\"},attrs:{\"filterable\":\"\",\"clearable\":\"\",\"multiple\":\"\",\"collapse-tags\":\"\",\"placeholder\":\"请选择信息点\"},on:{\"change\":_vm.initTable},model:{value:(_vm.showInfoList),callback:function ($$v) {_vm.showInfoList=$$v},expression:\"showInfoList\"}},_vm._l((_vm.headerOptions),function(item){return _c('el-option',{key:item.code,attrs:{\"label\":item.name,\"value\":item.code}})}),1),_c('el-button',{staticStyle:{\"width\":\"80px\"},attrs:{\"size\":\"small\",\"icon\":\"iconfont icon-tianjia\"},on:{\"click\":_vm.addDevice}},[_vm._v(\"添加系统\")]),_c('el-button',{staticStyle:{\"width\":\"80px\"},attrs:{\"size\":\"small\",\"icon\":\"iconfont icon-shuaxin\"},on:{\"click\":_vm.reset}},[_vm._v(\"刷新\")]),_c('el-button',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.onlyRead),expression:\"!onlyRead\"}],staticStyle:{\"width\":\"80px\"},attrs:{\"size\":\"small\",\"icon\":\"iconfont icon-undo\"},on:{\"click\":_vm.undo}},[_vm._v(\"撤销\")])],1),_c('qrcode',{ref:\"qrcode\",attrs:{\"dialog\":_vm.myDialog,\"addBody\":true}}),_c('upload-files-dialog',{ref:\"upload\",attrs:{\"keysArr\":_vm.filesArr,\"firmDataType\":\"row\",\"dialog\":_vm.myDialog},on:{\"changeFile\":_vm.fileChange}}),_c('upload-img-dialog',{attrs:{\"read\":_vm.onlyRead ? true : false,\"keysArr\":_vm.imgsArr,\"firmDataType\":\"row\",\"dialog\":_vm.myDialog},on:{\"changeFile\":_vm.imgChange}}),_c('pic-dialog',{attrs:{\"dialog\":_vm.myDialog,\"keysArr\":_vm.picsArr},on:{\"change\":_vm.changePics}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.mess.deviceId && (!_vm.tableData || !_vm.tableData.length)),expression:\"!mess.deviceId && (!tableData || !tableData.length)\"}],staticClass:\"middle_sty\",staticStyle:{\"height\":\"91%\"}},[_vm._m(0)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mess.deviceId && (!_vm.tableData || !_vm.tableData.length)),expression:\"mess.deviceId && (!tableData || !tableData.length)\"}],staticClass:\"middle_sty\",staticStyle:{\"height\":\"91%\"}},[_vm._m(1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mess.deviceId && _vm.tableData && _vm.tableData.length),expression:\"mess.deviceId && tableData && tableData.length\"},{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],ref:\"handsontable\",attrs:{\"id\":\"handsontable\"}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mess.deviceId && _vm.tableData && _vm.tableData.length),expression:\"mess.deviceId && tableData && tableData.length\"}],staticClass:\"right\"},[_c('my-pagination',{attrs:{\"page\":_vm.page},on:{\"change\":_vm.getTableData}})],1),(_vm.myDialog.details)?_c('details-dialog',{attrs:{\"iframeSrc\":_vm.iframeSrc,\"dialog\":_vm.myDialog}}):_vm._e(),_c('system-relevance',{attrs:{\"id\":_vm.systemId,\"dialog\":_vm.myDialog},on:{\"close\":_vm.reset}}),_c('menum',{attrs:{\"dialog\":_vm.myDialog,\"updateInfoData\":_vm.updateInfoData,\"updateInput\":_vm.updateInput},on:{\"change\":_vm.handleChangeMenum}}),_c('el-dialog',{attrs:{\"title\":\"临时维护信息点\",\"visible\":_vm.myDialog.update,\"width\":\"670px\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.myDialog, \"update\", $event)},\"close\":_vm.handleCloseUpdate}},[_c('el-row',[_vm._v(\" 该信息点未定义对应组件,现在维护数据不确定后续是否可用。如确实需要维护,请点击 \"),_c('el-link',{attrs:{\"type\":\"primary\",\"underline\":false},on:{\"click\":function($event){_vm.updateInputShow = true}}},[_vm._v(\"继续维护\")]),_vm._v(\" 。 \")],1),_c('el-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.updateInputShow),expression:\"updateInputShow\"}],staticStyle:{\"margin-top\":\"20px\"}},[_c('el-input',{attrs:{\"type\":\"textarea\",\"autosize\":{ minRows: 4, maxRows: 8 },\"placeholder\":\"请输入内容\"},model:{value:(_vm.updateInput),callback:function ($$v) {_vm.updateInput=$$v},expression:\"updateInput\"}})],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.myDialog.update = false}}},[_vm._v(\"取 消\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.handleClickUpdate}},[_vm._v(\"确 认\")])],1)],1),_c('editSysfloor',{ref:\"editFloor\",on:{\"relateSuccess\":_vm.relateSuccess}}),_c('el-dialog',{attrs:{\"title\":\"确定新增系统的类型\",\"visible\":_vm.myDialog.addDevice,\"width\":\"30%\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.myDialog, \"addDevice\", $event)}}},[_c('el-row',[_c('my-cascader',{ref:\"cascader\",attrs:{\"all\":true},on:{\"change\":_vm.changeAddType}})],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.toAddDevice}},[_vm._v(\"下 一 步\")])],1)],1)],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticStyle:{\"text-align\":\"center\"}},[_c('i',{staticClass:\"icon-wushuju middle_sty iconfont\"}),_vm._v(\"请选择系统类型\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticStyle:{\"text-align\":\"center\"}},[_c('i',{staticClass:\"icon-wushuju middle_sty iconfont\"}),_vm._v(\"暂无数据\")])}]\n\nexport { render, staticRenderFns }","const handsonUtils = {\r\n /**\r\n * 获取被排序后的数组\r\n *\r\n * @param changeData 发生改变的数据\r\n * @param source 数组\r\n *\r\n * @return array 经过排序后或者经过搜索后的数组\r\n */\r\n getParam: function(changeData, source, hot, trimmedArr) {\r\n let param = \"\";\r\n //被筛选过后的数组\r\n // let trimmedArr = this.trimmedRows();\r\n //是否启用了排序\r\n let isSort = hot.getPlugin(\"columnSorting\").isSorted();\r\n if (trimmedArr.length && isSort) {\r\n //排序后的数组\r\n let sortArr = hot.getPlugin(\"columnSorting\").rowsMapper.__arrayMap;\r\n param = changeData.map(item => {\r\n return hot.getSourceDataAtRow(trimmedArr[sortArr[item[0]]]);\r\n });\r\n } else if (isSort) {\r\n //排序后的数组\r\n let sortArr = hot.getPlugin(\"columnSorting\").rowsMapper.__arrayMap;\r\n param = changeData.map(item => {\r\n return hot.getSourceDataAtRow(sortArr[item[0]]);\r\n });\r\n } else if (trimmedArr.length) {\r\n param = changeData.map(item => {\r\n return hot.getSourceDataAtRow(trimmedArr[item[0]]);\r\n });\r\n } else {\r\n param = changeData.map(item => {\r\n return hot.getSourceDataAtRow(item[0]);\r\n });\r\n }\r\n return param;\r\n },\r\n\r\n /**\r\n * \r\n * @param {handsontable修改参数} changeData \r\n * @param {*} source \r\n * @param {handsontabele实例} hot \r\n * @param {排序数组} trimmedArr\r\n * \r\n * @return 修改数值的前一个对象 \r\n */\r\n getUnshiftParam: function(changeData, source, hot, trimmedArr) {\r\n //是否启用了排序\r\n let isSort = hot.getPlugin(\"columnSorting\").isSorted();\r\n if (trimmedArr.length && isSort) {\r\n //排序后的数组\r\n let sortArr = hot.getPlugin(\"columnSorting\").rowsMapper.__arrayMap;\r\n return hot.getSourceDataAtRow(trimmedArr[sortArr[changeData[0][0] - 1]])\r\n } else if (isSort) {\r\n //排序后的数组\r\n let sortArr = hot.getPlugin(\"columnSorting\").rowsMapper.__arrayMap;\r\n return hot.getSourceDataAtRow(sortArr[changeData[0][0] - 1])\r\n } else if (trimmedArr.length) {\r\n //进行了筛选\r\n return hot.getSourceDataAtRow(trimmedArr[changeData[0][0] - 1])\r\n } else {\r\n //没有进行排序和筛选\r\n return hot.getSourceDataAtRow(changeData[0][0] - 1);\r\n }\r\n },\r\n}\r\n\r\nexport default handsonUtils","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.dialog.qrcode)?_c('el-dialog',{attrs:{\"title\":\"二维码\",\"custom-class\":\"custom-dialog\",\"visible\":_vm.dialog.qrcode,\"width\":\"500px\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.dialog, \"qrcode\", $event)}}},[_c('div',[_c('div',{attrs:{\"id\":\"qrcode\"}},[_c('img',{staticStyle:{\"width\":\"200px\",\"height\":\"200px\",\"margin\":\"auto\",\"display\":\"block\"},attrs:{\"src\":'/image-service/common/file_get/'+ _vm.qrcodeUrl +'?systemId=dataPlatform',\"alt\":\"二维码\"}})])])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <el-dialog\r\n title=\"二维码\"\r\n v-if=\"dialog.qrcode\"\r\n custom-class=\"custom-dialog\"\r\n :visible.sync=\"dialog.qrcode\"\r\n width=\"500px\"\r\n >\r\n <div>\r\n <div id=\"qrcode\">\r\n <img\r\n style=\"width:200px;height:200px;margin:auto;display:block;\"\r\n :src=\"'/image-service/common/file_get/'+ qrcodeUrl +'?systemId=dataPlatform'\"\r\n alt=\"二维码\"\r\n >\r\n </div>\r\n </div>\r\n </el-dialog>\r\n</template>\r\n<script>\r\n// import { qrcanvas } from \"qrcanvas\";\r\nexport default {\r\n props: {\r\n dialog: {\r\n type: Object,\r\n default: function () {\r\n return {\r\n qrcode: false\r\n };\r\n }\r\n },\r\n qrcodeUrl: {\r\n default: \"\"\r\n }\r\n },\r\n data() {\r\n return {};\r\n },\r\n created() { },\r\n mounted() {\r\n },\r\n methods: {\r\n // getCanvas(id) {\r\n // let canvas = qrcanvas({\r\n // cellSize: 8,\r\n // data: 'http://service.sagacloud.cn/qrcode/' + 'Pea3a31168a30d4056acda3a56e557940b'\r\n // });\r\n // canvas.style.margin = \"auto\"\r\n // canvas.style.display = \"block\"\r\n // this.$nextTick(() => {\r\n // document.getElementById(\"qrcode\").innerHTML = null;\r\n // document.getElementById(\"qrcode\").appendChild(canvas);\r\n // });\r\n // }\r\n }\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n#qrcode {\r\n height: 300px;\r\n overflow: auto;\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./qrcode.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./qrcode.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./qrcode.vue?vue&type=template&id=068a71cc&scoped=true&\"\nimport script from \"./qrcode.vue?vue&type=script&lang=js&\"\nexport * from \"./qrcode.vue?vue&type=script&lang=js&\"\nimport style0 from \"./qrcode.vue?vue&type=style&index=0&id=068a71cc&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"068a71cc\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"title\":\"上传图片\",\"visible\":_vm.dialog.pic,\"width\":\"500px\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.dialog, \"pic\", $event)}}},[_c('div',{staticStyle:{\"max-height\":\"500px\",\"overflow-y\":\"auto\"}},[_c('div',[_c('h3',[_vm._v(\"设备图片\")]),_c('upload-imgs',{attrs:{\"readOnly\":_vm.read,\"keysArr\":_vm.picArrs,\"max\":\"6\"},on:{\"change\":_vm.imageItem}})],1),_c('div',[_c('h3',[_vm._v(\"视频\")]),_c('upload-imgs',{attrs:{\"accept\":'video/*',\"type\":\"video\",\"keysArr\":_vm.videoArr,\"videoPicArr\":_vm.videoPicArr,\"max\":\"2\",\"readOnly\":_vm.read},on:{\"change\":_vm.videoItem}})],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{style:({marginLeft:(_vm.isShow && _vm.imagesArr.length>2) ? '157px':'',marginTop:(_vm.isShow && _vm.imagesArr.length>2) ? '-25px':''}),attrs:{\"id\":\"sagaUploads\"}},[_c('div',{staticClass:\"saga-upload-images\"},[_vm._l((_vm.imagesArr),function(item,index){return (_vm.type != 'video')?_c('div',{staticClass:\"point-view\"},[_c('div',{staticClass:\"point-image\"},[(!_vm.readOnly)?_c('i',{staticClass:\"el-icon-delete\",on:{\"click\":function($event){return _vm.delImage(index,item)}}}):_vm._e(),_c('img',{directives:[{name:\"load\",rawName:\"v-load\"}],attrs:{\"src\":_vm.imageGetUrl + '&key=' +item.key,\"alt\":\"\"},on:{\"click\":_vm.lookImg}})]),(_vm.readOnly)?_c('p',[_vm._v(_vm._s(item.name))]):_c('form-input',{attrs:{\"label\":'',\"keys\":index,\"value\":item.name,\"width\":10},on:{\"change\":_vm.getName}})],1):_vm._e()}),_vm._l((_vm.imagesArr),function(item,index){return (_vm.type == 'video')?_c('div',{staticClass:\"point-view\"},[_c('div',{staticClass:\"point-image\"},[(!_vm.readOnly)?_c('i',{staticClass:\"el-icon-delete\",on:{\"click\":function($event){return _vm.delImage(index,item)}}}):_vm._e(),_c('video',{attrs:{\"width\":\"100%\",\"height\":\"100%;\",\"src\":_vm.imageGetUrl + '&key=' +item.key,\"controls\":\"controls\"}},[_vm._v(\"您的浏览器不支持 video 标签。\")])]),(_vm.readOnly)?_c('p',[_vm._v(_vm._s(item.name))]):_c('form-input',{attrs:{\"label\":'',\"keys\":index,\"value\":item.name,\"width\":10},on:{\"change\":_vm.getName}})],1):_vm._e()}),(!_vm.readOnly)?_c('div',{staticStyle:{\"float\":\"left\"}},[_c('el-upload',{staticClass:\"avatar-uploader\",staticStyle:{\"position\":\"relative\"},attrs:{\"http-request\":_vm.uploadAndSubmit,\"show-file-list\":false,\"accept\":_vm.accept,\"action\":\"\",\"drag\":\"\"}},[_c('i',{staticClass:\"el-icon-plus avatar-uploader-icon\"})]),_c('video',{staticStyle:{\"display\":\"none\"},attrs:{\"id\":\"video\",\"controls\":\"\"}})],1):_vm._e()],2),_c('details-dialog',{attrs:{\"title\":'图片',\"iframeSrc\":_vm.iframeSrc,\"dialog\":_vm.dialog,\"setData\":_vm.imagesArr}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\r\n @param keysArr 承接数组\r\n @param readOnly 删除按钮是否显示,上传是否显示\r\n @param max 上传最大数限制\r\n @click change 承接数组发生变化时触发函数\r\n-->\r\n<template>\r\n <div id=\"sagaUploads\" :style=\"{marginLeft:(isShow && imagesArr.length>2) ? '157px':'',marginTop:(isShow && imagesArr.length>2) ? '-25px':''}\">\r\n <div class=\"saga-upload-images\">\r\n <div v-if=\"type != 'video'\" class=\"point-view\" v-for=\"(item,index) in imagesArr\">\r\n <div class=\"point-image\">\r\n <i v-if=\"!readOnly\" class=\"el-icon-delete\" @click=\"delImage(index,item)\"></i>\r\n <img @click=\"lookImg\" :src=\"imageGetUrl + '&key=' +item.key\" alt v-load>\r\n </div>\r\n <p v-if=\"readOnly\" >{{item.name}}</p>\r\n <form-input v-else :label=\"''\" @change=\"getName\" :keys=\"index\" :value=\"item.name\" :width=\"10\"></form-input>\r\n </div>\r\n <div v-if=\"type == 'video'\" class=\"point-view\" v-for=\"(item,index) in imagesArr\">\r\n <div class=\"point-image\">\r\n <i v-if=\"!readOnly\" class=\"el-icon-delete\" @click=\"delImage(index,item)\"></i>\r\n <video\r\n width=\"100%\"\r\n height=\"100%;\"\r\n :src=\"imageGetUrl + '&key=' +item.key\"\r\n controls=\"controls\"\r\n >您的浏览器不支持 video 标签。</video>\r\n </div>\r\n <p v-if=\"readOnly\" >{{item.name}}</p>\r\n <form-input v-else :label=\"''\" @change=\"getName\" :keys=\"index\" :value=\"item.name\" :width=\"10\"></form-input>\r\n </div>\r\n <div v-if=\"!readOnly\" style=\"float:left;\">\r\n <el-upload\r\n class=\"avatar-uploader\"\r\n :http-request=\"uploadAndSubmit\"\r\n :show-file-list=\"false\"\r\n :accept=\"accept\"\r\n action\r\n drag\r\n style=\"position: relative\"\r\n >\r\n <i class=\"el-icon-plus avatar-uploader-icon\"></i>\r\n </el-upload>\r\n <video style=\"display:none;\" id=\"video\" controls/>\r\n </div>\r\n </div>\r\n <details-dialog :title=\"'图片'\" :iframeSrc=\"iframeSrc\" :dialog=\"dialog\" :setData=\"imagesArr\"></details-dialog>\r\n </div>\r\n</template>\r\n<script>\r\nimport tools from \"@/utils/old-adm/scan/tools\";\r\nimport formInput from \"@/components/old-adm/business_space/lib/formInput\"\r\nimport detailsDialog from \"@/components/old-adm/business_space/lib/detailsDia\"\r\n\r\nexport default {\r\n components: {\r\n formInput,\r\n detailsDialog\r\n },\r\n props: {\r\n keysArr: {\r\n type: [Array, String]\r\n },\r\n readOnly: {\r\n type: Boolean,\r\n default: false\r\n },\r\n max: {\r\n type: [Number, String],\r\n default: 6\r\n },\r\n accept: {\r\n type: String,\r\n default: \"image/*\"\r\n },\r\n type: {\r\n type: String,\r\n default: \"image\"\r\n },\r\n contextKey: {\r\n type: [String, Object]\r\n },\r\n isShow: {\r\n type: [Number, String]\r\n },\r\n defined: null,\r\n videoPicArr: {\r\n type: Array,\r\n default: function () {\r\n return []\r\n }\r\n }\r\n },\r\n data() {\r\n return {\r\n baseUrl: \"\",\r\n imageGetUrl: \"/image-service/common/image_get?systemId=dataPlatform\",\r\n imageUploadUrl: \"/image-service/common/image_upload?systemId=dataPlatform&secret=9e0891a7a8c8e885&overwrite=true\",\r\n imagesArr: [],\r\n iframeSrc: \"\",\r\n dialog: {\r\n details: false\r\n }\r\n };\r\n },\r\n created() {\r\n this.imageFalg();\r\n },\r\n methods: {\r\n getName(name, index) {\r\n this.imagesArr[index].name = name\r\n if (this.isShow === 1) {\r\n let oFile = {}\r\n oFile[this.contextKey] = this.imagesArr\r\n this.$emit(\"change\", oFile, this.defined, this.videoPicArr);\r\n\r\n } else {\r\n this.$emit(\"change\", this.imagesArr, this.defined, this.videoPicArr);\r\n\r\n }\r\n },\r\n //判断是否为空\r\n imageFalg() {\r\n let type = typeof this.keysArr;\r\n if (type == \"string\") {\r\n this.imagesArr = [this.keysArr];\r\n } else {\r\n this.imagesArr = tools.copyArr(this.keysArr);\r\n }\r\n\r\n if (!this.keysArr) {\r\n this.imagesArr = [];\r\n }\r\n },\r\n\r\n //查看图片\r\n lookImg() {\r\n this.dialog.details = true\r\n this.iframeSrc = window.__systemConf.BASE_URL +\":8890/photo-View.html\"\r\n //process.env.BASE_URL + \":8890/photo-View.html\"\r\n // this.iframeSrc = process.env.BASE_URL + \"/photo-View.html\"\r\n },\r\n\r\n //删除图片\r\n delImage(i, key) {\r\n if (this.type == \"video\") {\r\n this.videoPicArr = this.videoPicArr.map(item => {\r\n if (item.key.substring(0, item.length - 3) == this.imagesArr[i].key.substring(0, this.imagesArr[i].length - 3)) {\r\n return undefined\r\n } else {\r\n return item\r\n }\r\n }).filter(p => p)\r\n }\r\n this.imagesArr.splice(i, 1);\r\n this.$emit(\"change\", this.imagesArr, this.defined, this.videoPicArr);\r\n },\r\n\r\n //上传\r\n uploadAndSubmit(item, key) {\r\n // var form = document.forms[\"demoForm\"];\r\n\r\n // if (form[\"file\"].files.length > 0) {\r\n // 寻找表单域中的 <input type=\"file\" ... /> 标签\r\n // var file = form[\"file\"].files[0];\r\n\r\n let file = item.file;\r\n // try sending\r\n let reader = new FileReader();\r\n\r\n let vm = this;\r\n\r\n let fileType = file.name.split(\".\");\r\n let type = fileType[fileType.length - 1];\r\n let CreateTime = tools.formatDate(new Date(file.lastModified))\r\n\r\n let uploadKey = file.uid\r\n if (!!key) {\r\n uploadKey = key\r\n }\r\n\r\n reader.onloadstart = function () {\r\n // 这个事件在读取开始时触发\r\n };\r\n reader.onprogress = function (p) {\r\n // 这个事件在读取进行中定时触发\r\n };\r\n\r\n reader.onload = function () {\r\n // 这个事件在读取成功结束后触发\r\n };\r\n reader.onloadend = function () {\r\n // 这个事件在读取结束后,无论成功或者失败都会触发\r\n if (reader.error) {\r\n } else {\r\n // document.getElementById(\"bytesRead\").textContent = file.size;\r\n // 构造 XMLHttpRequest 对象,发送文件 Binary 数据\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(\r\n /* method */\r\n \"POST\",\r\n /* target url */\r\n vm.imageUploadUrl + \"&key=\" + uploadKey + \".\" + type\r\n /*, async, default to true */\r\n );\r\n //xhr.overrideMimeType(\"application/octet-stream\");\r\n xhr.send(reader.result);\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState == 4) {\r\n if (xhr.status == 200) {\r\n if (vm.type == 'image') {\r\n vm.imagesArr.push({\r\n name: uploadKey + '',\r\n key: uploadKey + \".\" + type,\r\n systemId: \"dataPlatform\",\r\n type: \"image\",\r\n createTime: CreateTime\r\n });\r\n }\r\n if (type == 'mp4') {\r\n vm.imagesArr.push({\r\n name: uploadKey + '',\r\n key: uploadKey + \".\" + type,\r\n systemId: \"dataPlatform\",\r\n type: \"video\",\r\n createTime: CreateTime\r\n });\r\n vm.creatImg(vm.imageGetUrl + \"&key=\" + uploadKey + \".\" + type, uploadKey)\r\n }\r\n if (vm.type == \"video\" && type == \"png\") {\r\n vm.videoPicArr.push({\r\n name: uploadKey + '',\r\n key: uploadKey + \".\" + type,\r\n systemId: \"dataPlatform\",\r\n type: \"image_video\",\r\n createTime: CreateTime\r\n })\r\n }\r\n if (vm.isShow === 1) {\r\n let oFile = {}\r\n oFile[vm.contextKey] = vm.imagesArr\r\n vm.$emit(\"change\", oFile, vm.defined, vm.videoPicArr);\r\n } else {\r\n vm.$emit(\"change\", vm.imagesArr, vm.defined, vm.videoPicArr);\r\n\r\n }\r\n }\r\n }\r\n };\r\n }\r\n };\r\n reader.readAsArrayBuffer(file);\r\n },\r\n dataURLtoBlob(dataURI, type) {\r\n var binary = atob(dataURI.split(',')[1]);\r\n var array = [];\r\n for (var i = 0; i < binary.length; i++) {\r\n array.push(binary.charCodeAt(i));\r\n }\r\n return new Blob([new Uint8Array(array)], { type: type });\r\n },\r\n\r\n creatImg(reader, key) {\r\n var videoDom = document.getElementById('video');\r\n videoDom.src = reader;\r\n let vm = this\r\n videoDom.onloadeddata = function () {\r\n // 这里可以打印视频时长\r\n // 这里取得视频封面\r\n var canvas = document.createElement('canvas');\r\n canvas.width = 300;\r\n canvas.height = 300 * this.videoHeight / this.videoWidth;\r\n canvas.getContext('2d').drawImage(this, 0, 0, canvas.width, canvas.height);\r\n //将canvas的base64位图片转换成图片png的file\r\n var blob = vm.dataURLtoBlob(canvas.toDataURL('image/png'), \"image/png\")\r\n //将其转换成file对象\r\n var file = new File([blob], \"video_image.png\", { type: \"image/png\", lastModified: Date.now() })//blob转file\r\n vm.uploadAndSubmit({ file: file }, key)\r\n }\r\n },\r\n },\r\n watch: {\r\n keysArr: function (val) {\r\n this.imageFalg();\r\n }\r\n },\r\n //自定义指令\r\n directives: {\r\n load: function (el) {\r\n let imgDom = document.createElement(\"img\");\r\n imgDom.style.position = \"absolute\";\r\n imgDom.style.top = \"-999px\";\r\n imgDom.style.opacity = 0;\r\n imgDom.src = el.src;\r\n el.src = \"\";\r\n imgDom.onload = () => {\r\n let width = imgDom.width;\r\n let height = imgDom.height;\r\n if (width > height) {\r\n el.style.height = \"100%\";\r\n el.style.width = \"auto\";\r\n el.style.position = \"absolute\";\r\n el.style.left = \"50%\";\r\n el.style.top = \"0\";\r\n el.style.transform = \"translateX(-50%)\";\r\n el.style.webkitTransform = \"translateX(-50%) translateY(0)\";\r\n el.style.MozTransform = \"translateX(-50%) translateY(0)\";\r\n el.style.msTransform = \"translateX(-50%) translateY(0)\";\r\n el.style.OTransform = \"translateX(-50%) translateY(0)\";\r\n } else if (width < height) {\r\n el.src = imgDom.src;\r\n el.style.width = \"100%\";\r\n el.style.height = \"auto\";\r\n el.style.position = \"absolute\";\r\n el.style.top = \"50%\";\r\n el.style.left = \"0\";\r\n el.style.transform = \"translateY(-50%) translateX(0)\";\r\n el.style.webkitTransform = \"translateY(-50%) translateX(0)\";\r\n el.style.MozTransform = \"translateY(-50%) translateX(0)\";\r\n el.style.msTransform = \"translateY(-50%) translateX(0)\";\r\n el.style.OTransform = \"translateY(-50%) translateX(0)\";\r\n } else {\r\n el.style.width = \"100%\";\r\n el.style.height = \"100%\";\r\n el.style.position = \"absolute\";\r\n el.style.top = \"0\";\r\n el.style.left = \"0\";\r\n el.style.transform = \"translateY(0) translateX(0)\";\r\n el.style.webkitTransform = \"translateY(0) translateX(0)\";\r\n el.style.MozTransform = \"translateY(0) translateX(0)\";\r\n el.style.msTransform = \"translateY(0) translateX(0)\";\r\n el.style.OTransform = \"translateY(0) translateX(0)\";\r\n }\r\n el.src = imgDom.src;\r\n };\r\n }\r\n }\r\n};\r\n</script>\r\n<style lang=\"less\">\r\n#sagaUploads {\r\n /deep/ .el-upload--text {\r\n box-sizing: border-box;\r\n }\r\n\r\n overflow: hidden;\r\n\r\n .avatar-uploader {\r\n /*height: 180px;*/\r\n /*width: 180px;*/\r\n /*overflow: hidden;*/\r\n\r\n .el-upload {\r\n /*width: 180px;*/\r\n /*height: 180px;*/\r\n\r\n .el-upload-dragger {\r\n width: 180px !important;\r\n height: 180px !important;\r\n .el-icon-plus {\r\n display: block;\r\n width: 20px;\r\n height: 20px;\r\n font-size: 20px;\r\n margin: 80px;\r\n }\r\n }\r\n }\r\n }\r\n .point-view {\r\n float: left;\r\n margin-right: 10px;\r\n margin-bottom: 10px;\r\n overflow: hidden;\r\n height: 240px;\r\n }\r\n .point-image {\r\n width: 180px;\r\n height: 180px;\r\n position: relative;\r\n border: 1px solid #ccc;\r\n overflow: hidden;\r\n img {\r\n z-index: 11;\r\n }\r\n i {\r\n position: absolute;\r\n bottom: 10px;\r\n right: 10px;\r\n background-color: #fff;\r\n padding: 5px;\r\n cursor: pointer;\r\n z-index: 66;\r\n }\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./uploadImgsName.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./uploadImgsName.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./uploadImgsName.vue?vue&type=template&id=750d46d3&\"\nimport script from \"./uploadImgsName.vue?vue&type=script&lang=js&\"\nexport * from \"./uploadImgsName.vue?vue&type=script&lang=js&\"\nimport style0 from \"./uploadImgsName.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\r\n 上传图片的弹窗\r\n-->\r\n\r\n<template>\r\n <el-dialog title=\"上传图片\" :visible.sync=\"dialog.pic\" width=\"500px\">\r\n <div style=\"max-height:500px;overflow-y:auto;\">\r\n <div>\r\n <h3>设备图片</h3>\r\n <upload-imgs :readOnly=\"read\" :keysArr=\"picArrs\" @change=\"imageItem\" max=\"6\"></upload-imgs>\r\n </div>\r\n <div>\r\n <h3>视频</h3>\r\n <upload-imgs\r\n :accept=\"'video/*'\"\r\n type=\"video\"\r\n :keysArr=\"videoArr\"\r\n @change=\"videoItem\"\r\n :videoPicArr=\"videoPicArr\"\r\n max=\"2\"\r\n :readOnly=\"read\"\r\n ></upload-imgs>\r\n </div>\r\n </div>\r\n </el-dialog>\r\n</template>\r\n<script>\r\nimport uploadImgs from \"@/components/old-adm/business_space/lib/uploadImgsName\";\r\nimport tools from \"@/utils/old-adm/scan/tools\"\r\nexport default {\r\n components: {\r\n uploadImgs\r\n },\r\n props: {\r\n dialog: {\r\n type: Object,\r\n default: function () {\r\n return {\r\n pic: true\r\n };\r\n }\r\n },\r\n keysArr: {\r\n type: Array,\r\n default: function () {\r\n return []\r\n }\r\n },\r\n read: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data() {\r\n return {\r\n picArrs: [],\r\n panoramaArr: [],\r\n videoArr: [],\r\n videoPicArr: [],\r\n changeKeys: []\r\n };\r\n },\r\n created() { },\r\n mounted() { },\r\n methods: {\r\n imageItem(images) {\r\n this.picArrs = images\r\n this.change()\r\n },\r\n\r\n panoramaItem(images) {\r\n this.panoramaArr = images\r\n this.change()\r\n },\r\n\r\n videoItem(videos, pe, pics) {\r\n this.videoArr = videos\r\n this.videoPicArr = pics\r\n this.change()\r\n },\r\n\r\n change() {\r\n // let picsArr = this.getArr(this.picArrs, \"设备图片\", \"image\")\r\n // let videos = this.getArr(this.videoArr, \"视频\", \"video\")\r\n // let videoPics = this.getArr(this.videoPicArr, \"视频资料\", \"image_video\")\r\n // let panoramas = this.getArr(this.panoramaArr, \"全景照片\", \"panorama\")\r\n let picsArr = this.picArrs\r\n let videos = this.videoArr\r\n let videoPics = this.videoPicArr\r\n let panoramas = this.panoramaArr\r\n this.changeKeys = picsArr.concat(videos).concat(videoPics).concat(panoramas)\r\n this.$emit(\"change\", this.changeKeys)\r\n },\r\n\r\n getArr(arr, name, type) {\r\n return arr.map(item => {\r\n return { \"systemId\": \"dataPlatform\", \"name\": name, \"type\": type, \"key\": item }\r\n })\r\n },\r\n\r\n //将父组件传来的数据进行分组\r\n fatherTochild() {\r\n this.panoramaArr = []\r\n this.videoArr = []\r\n this.videoPicArr = []\r\n this.picArrs = []\r\n if (this.keysArr instanceof Array) {\r\n this.keysArr.map(item => {\r\n if (item.type == 'panorama') {\r\n this.panoramaArr.push(item)\r\n } else if (item.type == \"video\") {\r\n this.videoArr.push(item)\r\n } else if (item.type == 'image_video') {\r\n this.videoPicArr.push(item)\r\n } else {\r\n this.picArrs.push(item)\r\n }\r\n })\r\n } else {\r\n this.panoramaArr = []\r\n this.videoArr = []\r\n this.videoPicArr = []\r\n this.picArrs = []\r\n }\r\n }\r\n },\r\n watch: {\r\n dialog: {\r\n deep: true,\r\n handler: function () {\r\n if (this.dialog.pic) {\r\n this.fatherTochild()\r\n }\r\n }\r\n }\r\n }\r\n};\r\n</script>\r\n<style>\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./picDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./picDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./picDialog.vue?vue&type=template&id=6a4766a5&\"\nimport script from \"./picDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./picDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"block\"},[_c('el-pagination',{attrs:{\"current-page\":_vm.page.currentPage,\"page-sizes\":_vm.page.sizes,\"page-size\":_vm.page.size,\"layout\":_vm.isSmall ? 'total, sizes, prev, pager, next, jumper' : 'prev, pager, next',\"total\":_vm.page.total},on:{\"size-change\":_vm.handleSizeChange,\"current-change\":_vm.handleCurrentChange,\"update:currentPage\":function($event){return _vm.$set(_vm.page, \"currentPage\", $event)},\"update:current-page\":function($event){return _vm.$set(_vm.page, \"currentPage\", $event)}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\r\n props:{\r\n size: 当前页的页数,\r\n sizes: 下拉的条数,\r\n total: 总条数,\r\n currentPage: 当前页\r\n }\r\n @change 发生改变\r\n-->\r\n<template>\r\n <div class=\"block\">\r\n <el-pagination\r\n @size-change=\"handleSizeChange\"\r\n @current-change=\"handleCurrentChange\"\r\n :current-page.sync=\"page.currentPage\"\r\n :page-sizes=\"page.sizes\"\r\n :page-size=\"page.size\"\r\n :layout=\" isSmall ? 'total, sizes, prev, pager, next, jumper' : 'prev, pager, next'\"\r\n :total=\"page.total\">\r\n </el-pagination>\r\n </div>\r\n</template>\r\n<script>\r\nexport default {\r\n name: \"pagination\",\r\n props: {\r\n page: {\r\n type: Object\r\n },\r\n isSmall:{\r\n type:Boolean,\r\n default: true\r\n }\r\n },\r\n methods: {\r\n //当前条数发生改变\r\n handleSizeChange(val) {\r\n this.page.size = val;\r\n this.page.currentPage = 1;\r\n this.change()\r\n },\r\n //当前页发生改变\r\n handleCurrentChange(val) {\r\n this.page.currentPage = val;\r\n this.change()\r\n },\r\n //发生改变\r\n change() {\r\n this.$emit(\"change\");\r\n }\r\n }\r\n};\r\n</script>\r\n<style>\r\n.el-pagination button, .el-pagination span:not([class*=suffix]) {\r\n vertical-align: middle;\r\n}\r\n.block{\r\n /* margin-top: 5px; */\r\n}\r\n</style>","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./myPagination.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./myPagination.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./myPagination.vue?vue&type=template&id=46ae7383&\"\nimport script from \"./myPagination.vue?vue&type=script&lang=js&\"\nexport * from \"./myPagination.vue?vue&type=script&lang=js&\"\nimport style0 from \"./myPagination.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"title\":\"关联设备\",\"before-close\":_vm.close,\"visible\":_vm.dialog.relevance,\"width\":\"900px\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.dialog, \"relevance\", $event)}}},[_c('div',{attrs:{\"id\":\"tableTransfers\"}},[_c('div',{staticClass:\"main-left\"},[_c('h4',[_vm._v(\"未关联该系统的设备\")]),_c('div',{staticClass:\"border-view\"},[_c('div',{staticClass:\"search\"},[_c('div',{staticClass:\"search-small\",staticStyle:{\"padding\":\"10px 10px 0 10px\"}},[_c('el-input',{staticStyle:{\"width\":\"300px\",\"margin-right\":\"10px\"},attrs:{\"placeholder\":\"输入设备名称进行查询\",\"size\":\"small\",\"clearable\":\"\"},model:{value:(_vm.search1),callback:function ($$v) {_vm.search1=$$v},expression:\"search1\"}}),_c('el-button',{attrs:{\"size\":\"small\"},on:{\"click\":_vm.getLeftData}},[_vm._v(\"查找\")])],1),_c('div',{staticClass:\"search-small\",staticStyle:{\"padding\":\"10px\"}},[_c('floor-cascader',{attrs:{\"isWidth\":false},on:{\"change\":_vm.changeBuild}}),_c('cascader',{attrs:{\"isWidth\":false,\"all\":true},on:{\"change\":_vm.changeCascader}})],1)]),_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.isLoading1),expression:\"isLoading1\"}],ref:\"multipleTable\",staticClass:\"data-table\",staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.tableData,\"height\":\"300px\",\"tooltip-effect\":\"dark\",\"border\":\"\"},on:{\"selection-change\":_vm.handleSelectionChange}},[_c('el-table-column',{attrs:{\"type\":\"selection\",\"width\":\"55\"}}),_c('el-table-column',{attrs:{\"label\":\"设备名称\",\"width\":\"120\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(scope.row.EquipLocalName || scope.row.EquipName))]}}])}),_c('el-table-column',{attrs:{\"label\":\"设备编号\",\"width\":\"120\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(scope.row.EquipLocalID || \"--\"))]}}])}),_c('el-table-column',{attrs:{\"label\":\"设备类\",\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(_vm.getName(scope.row.Category)))]}}])}),_c('el-table-column',{attrs:{\"prop\":\"address\",\"label\":\"安装位置\",\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(scope.row.InstallLocation || \"--\"))]}}])})],1),_c('div',{staticClass:\"right\",staticStyle:{\"overflow\":\"hidden\"}},[_c('my-pagination',{attrs:{\"page\":_vm.pages1},on:{\"change\":_vm.changePages1}})],1)],1)]),_c('div',{staticClass:\"main-button\"},[_c('el-button',{staticClass:\"top\",attrs:{\"disabled\":_vm.SelectionList && _vm.SelectionList.length ? false : true,\"type\":_vm.SelectionList && _vm.SelectionList.length ? 'primary' : '',\"icon\":\"el-icon-arrow-left\",\"circle\":\"\"},on:{\"click\":_vm.rightToLeft}}),_c('el-button',{staticClass:\"bottom\",attrs:{\"disabled\":_vm.multipleSelection && _vm.multipleSelection.length ? false : true,\"type\":_vm.multipleSelection && _vm.multipleSelection.length ? 'primary' : '',\"icon\":\"el-icon-arrow-right\",\"circle\":\"\"},on:{\"click\":_vm.leftToRight}})],1),_c('div',{staticClass:\"main-right\"},[_c('h4',[_vm._v(\"已关联该系统的设备\")]),_c('div',{staticClass:\"border-view\"},[_c('div',{staticClass:\"search\"},[_c('div',{staticClass:\"search-big\"},[_c('el-input',{staticStyle:{\"width\":\"200px\",\"margin-bottom\":\"10px\"},attrs:{\"placeholder\":\"输入设备名称进行查询\",\"size\":\"small\",\"clearable\":\"\"},model:{value:(_vm.search2),callback:function ($$v) {_vm.search2=$$v},expression:\"search2\"}}),_c('el-button',{attrs:{\"size\":\"small\"},on:{\"click\":_vm.getRightData}},[_vm._v(\"查找\")])],1)]),_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.isLoading2),expression:\"isLoading2\"}],ref:\"multipleTable\",staticClass:\"data-table\",staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.table2Data,\"height\":\"300px\",\"tooltip-effect\":\"dark\",\"border\":\"\"},on:{\"selection-change\":_vm.tableChange}},[_c('el-table-column',{attrs:{\"type\":\"selection\",\"width\":\"55\"}}),_c('el-table-column',{attrs:{\"label\":\"设备名称\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(scope.row.EquipLocalName || scope.row.EquipName))]}}])})],1),_c('div',{staticClass:\"right\"},[_c('my-pagination',{attrs:{\"page\":_vm.pages2,\"isSmall\":false},on:{\"change\":_vm.changePages2}})],1)],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <el-dialog title=\"关联设备\" :before-close=\"close\" :visible.sync=\"dialog.relevance\" width=\"900px\">\r\n <div id=\"tableTransfers\">\r\n <div class=\"main-left\">\r\n <h4>未关联该系统的设备</h4>\r\n <div class=\"border-view\">\r\n <div class=\"search\">\r\n <div class=\"search-small\" style=\"padding: 10px 10px 0 10px\">\r\n <el-input placeholder=\"输入设备名称进行查询\" v-model=\"search1\" style=\"width:300px;margin-right: 10px;\" size=\"small\"\r\n clearable></el-input>\r\n <el-button @click=\"getLeftData\" size=\"small\">查找</el-button>\r\n </div>\r\n <div class=\"search-small\" style=\"padding: 10px\">\r\n <floor-cascader :isWidth=\"false\" @change=\"changeBuild\"></floor-cascader>\r\n <cascader :isWidth=\"false\" @change=\"changeCascader\" :all=\"true\"></cascader>\r\n </div>\r\n </div>\r\n <el-table ref=\"multipleTable\" :data=\"tableData\" height=\"300px\" tooltip-effect=\"dark\" style=\"width: 100%\"\r\n class=\"data-table\"\r\n @selection-change=\"handleSelectionChange\" v-loading=\"isLoading1\" border>\r\n <el-table-column type=\"selection\" width=\"55\"></el-table-column>\r\n <el-table-column label=\"设备名称\" width=\"120\">\r\n <template slot-scope=\"scope\">{{ scope.row.EquipLocalName || scope.row.EquipName }}</template>\r\n </el-table-column>\r\n <el-table-column label=\"设备编号\" width=\"120\">\r\n <template slot-scope=\"scope\">{{ scope.row.EquipLocalID || \"--\" }}</template>\r\n </el-table-column>\r\n <el-table-column label=\"设备类\" show-overflow-tooltip>\r\n <template slot-scope=\"scope\">{{ getName(scope.row.Category) }}</template>\r\n </el-table-column>\r\n <el-table-column prop=\"address\" label=\"安装位置\" show-overflow-tooltip>\r\n <template slot-scope=\"scope\">{{ scope.row.InstallLocation || \"--\" }}</template>\r\n </el-table-column>\r\n </el-table>\r\n <div class=\"right\" style=\"overflow:hidden;\">\r\n <my-pagination @change=\"changePages1\" :page=\"pages1\"></my-pagination>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"main-button\">\r\n <el-button class=\"top\" @click=\"rightToLeft\" :disabled=\"SelectionList && SelectionList.length ? false : true\"\r\n :type=\"SelectionList && SelectionList.length ? 'primary' : ''\" icon=\"el-icon-arrow-left\"\r\n circle></el-button>\r\n <el-button class=\"bottom\" @click=\"leftToRight\"\r\n :disabled=\"multipleSelection && multipleSelection.length ? false : true\"\r\n :type=\"multipleSelection && multipleSelection.length ? 'primary' : ''\" icon=\"el-icon-arrow-right\"\r\n circle></el-button>\r\n </div>\r\n <div class=\"main-right\">\r\n <h4>已关联该系统的设备</h4>\r\n <div class=\"border-view\">\r\n <div class=\"search\">\r\n <div class=\"search-big\">\r\n <el-input placeholder=\"输入设备名称进行查询\" v-model=\"search2\" style=\"width:200px; margin-bottom: 10px;\"\r\n size=\"small\" clearable>\r\n </el-input>\r\n <el-button @click=\"getRightData\" size=\"small\">查找</el-button>\r\n </div>\r\n </div>\r\n <el-table ref=\"multipleTable\" :data=\"table2Data\" height=\"300px\" tooltip-effect=\"dark\" style=\"width: 100%\"\r\n class=\"data-table\"\r\n @selection-change=\"tableChange\" v-loading=\"isLoading2\" border>\r\n <el-table-column type=\"selection\" width=\"55\"></el-table-column>\r\n <el-table-column label=\"设备名称\">\r\n <template slot-scope=\"scope\">{{ scope.row.EquipLocalName || scope.row.EquipName }}</template>\r\n </el-table-column>\r\n </el-table>\r\n <div class=\"right\">\r\n <my-pagination :page=\"pages2\" @change=\"changePages2\" :isSmall=\"false\"></my-pagination>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </el-dialog>\r\n</template>\r\n<script>\r\nimport myPagination from \"@/components/old-adm/common/myPagination\";\r\nimport floorCascader from \"@/components/old-adm/ledger/components/lib/floorCascader\";\r\nimport cascader from \"@/components/old-adm/ledger/components/lib/cascader\";\r\n\r\n// import {\r\n// getEquipNotInSys,\r\n// getEquipInSys,\r\n// getEquipBelongs,\r\n// sysLinkEquip,\r\n// sysUnlinkEquip\r\n// } from \"../api/scan/request\"\r\nimport ScanController from \"@/controller/old-adm/ScanController\";\r\nimport {\r\n mapGetters,\r\n mapActions\r\n} from \"vuex\";\r\n\r\nexport default {\r\n props: {\r\n dialog: {\r\n type: Object,\r\n default: function () {\r\n return {\r\n relevance: false\r\n }\r\n }\r\n },\r\n id: {\r\n type: String\r\n }\r\n },\r\n components: {\r\n myPagination,\r\n floorCascader,\r\n cascader\r\n },\r\n computed: {\r\n ...mapGetters(\"layout\", [\"projectId\", \"secret\", \"userId\"])\r\n },\r\n data() {\r\n return {\r\n dialogVisible: true,\r\n pages1: {\r\n size: 50,\r\n sizes: [10, 20, 30, 50, 100, 200],\r\n total: 0,\r\n currentPage: 1\r\n },\r\n pages2: {\r\n size: 50,\r\n sizes: [10, 20, 30, 50, 100, 200],\r\n total: 0,\r\n currentPage: 1\r\n },\r\n search1: '', //左侧输条件\r\n search2: '',//右侧输入条件\r\n buildingId: '',//建筑id\r\n floorId: '',//楼层id\r\n category: '',//设备类型\r\n tableData: [], //第一个表格的数据\r\n table2Data: [], //第二个表格的数据\r\n multipleSelection: [], //第一个表格的被选择数组\r\n SelectionList: [], //第二个表格的被选择数组\r\n List: [],\r\n isLoading1: false,\r\n isLoading2: false,\r\n };\r\n },\r\n created() {\r\n this.getAllData();\r\n },\r\n methods: {\r\n //关闭\r\n close(done) {\r\n this.$emit(\"close\")\r\n done()\r\n },\r\n //根据设备类型编码获取名称\r\n getName(code) {\r\n let str = \"\"\r\n this.List.map(item => {\r\n if (item.code == code) {\r\n str = item.facility\r\n }\r\n })\r\n return str\r\n },\r\n //获取物理世界所有设备类型\r\n getAllData() {\r\n let param = {\r\n data: {\r\n distinct: true,\r\n orders: \"equipName asc\",\r\n pageNumber: 1,\r\n pageSize: 500,\r\n projection: [\r\n \"equipCode\", \"equipName\"\r\n ]\r\n }\r\n }\r\n ScanController.getEquipBelongs(param).then(res => {\r\n this.List = this.formatOptions(res.content)\r\n })\r\n },\r\n //格式化List数据\r\n formatOptions(arr) {\r\n let data = [];\r\n arr.map(t => {\r\n let temp = {};\r\n temp.code = t.equipCode;\r\n temp.facility = t.equipName;\r\n data.push(temp)\r\n })\r\n return data;\r\n },\r\n //获取两侧数据\r\n getAllTable() {\r\n this.pages1.currentPage = 1\r\n this.pages2.currentPage = 1\r\n this.getLeftData()\r\n this.getRightData()\r\n },\r\n //pages1改变\r\n changePages1(page) {\r\n this.pages1.PageNumber = page\r\n this.getLeftData()\r\n },\r\n changePages2(page) {\r\n this.pages2.PageNumber = page\r\n this.getRightData()\r\n },\r\n //修改设备类型\r\n changeCascader(val) {\r\n this.category = val.code\r\n this.getLeftData()\r\n },\r\n //获取未关联该系统的设备\r\n getLeftData() {\r\n this.isLoading1 = true\r\n let param = {\r\n data: {\r\n Filters: '',\r\n Orders: \"EquipID desc\",\r\n PageNumber: this.pages1.currentPage,\r\n PageSize: this.pages1.size\r\n },\r\n sysId: this.id\r\n }\r\n if (this.search1 != '') {\r\n param.data.Filters = `EquipLocalName contain '${this.search1}' || EquipName contain '${this.search1}';`\r\n }\r\n //建筑id\r\n if (this.buildingId == \"noKnow\") {\r\n param.data.Filters += `buildingId isNull;`\r\n } else if (this.buildingId && this.buildingId != \"all\") {\r\n param.data.Filters += `buildingId='${this.buildingId}';`\r\n }\r\n //楼层id\r\n if (this.floorId == \"noKnow\") {\r\n param.data.Filters += `floorId isNull;`\r\n } else if (this.floorId && this.floorId != \"all\") {\r\n param.data.Filters += `floorId='${this.floorId}';`\r\n }\r\n //设备类型\r\n if (this.category) {\r\n param.data.Filters += `category='${this.category}';`\r\n }\r\n if (param.data.Filters) {\r\n param.data.Filters = param.data.Filters.substring(0, param.data.Filters.length - 1)\r\n } else {\r\n delete param.data.Filters;\r\n }\r\n ScanController.getEquipNotInSys(param).then(res => {\r\n this.tableData = res.Content\r\n this.pages1.total = res.Total\r\n this.isLoading1 = false\r\n })\r\n },\r\n //获取已关联该系统的设备\r\n getRightData() {\r\n this.isLoading2 = true\r\n let param = {\r\n Filters: `sysId='${this.id}'`,\r\n Orders: \"EquipID desc\",\r\n PageNumber: this.pages2.currentPage,\r\n PageSize: this.pages2.size\r\n }\r\n if (this.search2 != '') {\r\n param.Filters += `;EquipLocalName contain '${this.search2}' || EquipName contain '${this.search2}'`\r\n }\r\n ScanController.getEquipInSys(param).then(res => {\r\n this.table2Data = res.Content\r\n this.pages2.total = res.Total\r\n this.isLoading2 = false\r\n })\r\n },\r\n //左侧多选框改变\r\n handleSelectionChange(val) {\r\n this.multipleSelection = val\r\n },\r\n //右侧多选框发生改变\r\n tableChange(val) {\r\n this.SelectionList = val;\r\n },\r\n //关联\r\n leftToRight() {\r\n let relationList = this.multipleSelection\r\n relationList = relationList.map(t => {\r\n return t.EquipID || t.EquipId\r\n })\r\n this.relationChange(relationList)\r\n },\r\n //取消关联\r\n rightToLeft() {\r\n let tempIDs = this.SelectionList.map(t => {\r\n return {\r\n EquipID: t.EquipId,\r\n SysID: t.SysID\r\n }\r\n })\r\n ScanController.sysUnlinkEquip(tempIDs).then(res => {\r\n this.$message.success('修改关联关系成功')\r\n this.getAllTable()\r\n })\r\n },\r\n //更新设备 系统关系\r\n relationChange(arr) {\r\n let param = {\r\n sysId: this.id,\r\n equipIdList: arr\r\n }\r\n ScanController.sysLinkEquip(param).then(res => {\r\n this.$message.success('修改关联关系成功')\r\n this.getAllTable()\r\n })\r\n },\r\n //修改楼层\r\n changeBuild(val) {\r\n this.buildingId = val[0]\r\n if (val[1]) {\r\n this.floorId = val[1]\r\n }\r\n this.getLeftData()\r\n },\r\n },\r\n watch: {\r\n dialog: {\r\n deep: true,\r\n handler: function () {\r\n if (this.dialog.relevance) {\r\n this.search1 = ''\r\n this.search2 = ''\r\n this.getAllTable()\r\n }\r\n }\r\n }\r\n }\r\n};\r\n</script>\r\n<style lang=\"less\">\r\n#tableTransfers {\r\n height: 500px;\r\n width: 100%;\r\n overflow-x: hidden;\r\n overflow-y: auto;\r\n\r\n h4 {\r\n font-size: 20px;\r\n font-weight: 500;\r\n }\r\n\r\n .search {\r\n .search-small {\r\n overflow: hidden;\r\n }\r\n\r\n border-bottom: #dcdfe6 1px solid;\r\n\r\n .search-big {\r\n padding: 10px;\r\n }\r\n }\r\n\r\n .main-left {\r\n float: left;\r\n width: 550px;\r\n height: 500px;\r\n }\r\n\r\n .border-view {\r\n border: 1px solid #ccc;\r\n }\r\n\r\n .main-button {\r\n float: left;\r\n width: 60px;\r\n height: 500px;\r\n position: relative;\r\n\r\n .top {\r\n position: absolute;\r\n bottom: 300px;\r\n left: 10px;\r\n }\r\n\r\n .bottom {\r\n position: absolute;\r\n bottom: 200px;\r\n left: 10px;\r\n }\r\n }\r\n\r\n .el-button + .el-button {\r\n margin: 0;\r\n }\r\n\r\n .main-right {\r\n height: 300px;\r\n float: left;\r\n width: 230px;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tableTransfers.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tableTransfers.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./tableTransfers.vue?vue&type=template&id=626c2098&\"\nimport script from \"./tableTransfers.vue?vue&type=script&lang=js&\"\nexport * from \"./tableTransfers.vue?vue&type=script&lang=js&\"\nimport style0 from \"./tableTransfers.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"title\":\"所属建筑楼层\",\"visible\":_vm.connectDialogVis,\"width\":\"50%\",\"id\":\"messageDialog\"},on:{\"update:visible\":function($event){_vm.connectDialogVis=$event}}},[_c('div',{staticClass:\"cascader-row\"},[_c('div',{staticStyle:{\"line-height\":\"32px\"}},[_vm._v(\"添加\"+_vm._s(_vm.system.SysLocalName)+\"所属建筑楼层 :\")]),_c('div',{staticStyle:{\"width\":\"70%\"}},[_c('bfCascader',{ref:\"bfCascader\",attrs:{\"SysID\":_vm.system.SysID}})],1)]),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{attrs:{\"size\":\"small\"},on:{\"click\":function($event){_vm.connectDialogVis=false}}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"primary\"},on:{\"click\":_vm.save}},[_vm._v(\"确认\")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-cascader',{ref:\"elCascader\",attrs:{\"options\":_vm.options,\"props\":_vm.props,\"clearable\":\"\"},on:{\"remove-tag\":_vm.removeTag},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <el-cascader v-model=\"value\" :options=\"options\" :props=\"props\" clearable ref=\"elCascader\" @remove-tag=\"removeTag\"></el-cascader>\r\n</template>\r\n<script>\r\n// import { buildingQuery } from \"@/api/scan/request\";\r\n// import { buildingQuery } from '@/api/object/build';\r\nimport Builder from \"@/controller/old-adm/buildController\";\r\nconst { buildingQuery } = Builder;\r\n\r\nexport default {\r\n data() {\r\n return {\r\n value: [],\r\n props: {\r\n multiple: true,\r\n checkStrictly: true,\r\n value: 'id',\r\n label: 'localName',\r\n children: 'floor'\r\n },\r\n options: []\r\n }\r\n },\r\n props: {\r\n SysID: {\r\n default: ''\r\n }\r\n },\r\n\r\n methods: {\r\n getCascader() {\r\n let param = {\r\n cascade: [\r\n { name: \"floor\", orders: \"floorSequenceID desc\" }\r\n ],\r\n orders: \"localName asc\",\r\n pageNumber: 1,\r\n pageSize: 50\r\n }\r\n buildingQuery(param, res => {\r\n res.content.map(t => {\r\n if (t.floor && t.floor.length) {\r\n t.floor = t.floor.map(item => {\r\n if (item.id == this.FloorID) return\r\n item.BuildID = item.id\r\n item.BuildLocalName = item.localName || item.name\r\n return item\r\n }).filter(it => it)\r\n }\r\n })\r\n this.options = res.content\r\n })\r\n },\r\n getSelectedNodes() {\r\n let nodes = this.$refs.elCascader.getCheckedNodes();\r\n let arr = [], flag = false, brr = [];\r\n if (nodes.length) {\r\n nodes.map(t => {\r\n let obj = {\r\n BuildName: t.pathLabels[0],\r\n BuildID: t.path[0]\r\n }\r\n if (t.path.length > 1) {\r\n obj.FloorName = t.pathLabels[1]\r\n obj.FloorID = t.path[1]\r\n } else {\r\n flag = true;\r\n }\r\n arr.push(obj);\r\n })\r\n if (flag) {\r\n for (let i = 0; i < arr.length; i++) {\r\n for (let j = 0; j < arr.length; j++) {\r\n if (!arr[i].FloorID && arr[j].FloorID && arr[i].BuildID == arr[j].BuildID) {\r\n brr.push(i)\r\n }\r\n }\r\n }\r\n arr = arr.map((t, i) => {\r\n if (brr.indexOf(i) > -1) {\r\n return undefined;\r\n }\r\n return t;\r\n }).filter(item => item);\r\n }\r\n }\r\n return arr;\r\n },\r\n removeTag(){\r\n console.log(arguments)\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.el-cascader {\r\n width: 100%;\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./buildfloorCascader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./buildfloorCascader.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./buildfloorCascader.vue?vue&type=template&id=11801cf8&scoped=true&\"\nimport script from \"./buildfloorCascader.vue?vue&type=script&lang=js&\"\nexport * from \"./buildfloorCascader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./buildfloorCascader.vue?vue&type=style&index=0&id=11801cf8&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"11801cf8\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <el-dialog title=\"所属建筑楼层\" :visible.sync=\"connectDialogVis\" width=\"50%\" id=\"messageDialog\">\r\n <div class=\"cascader-row\">\r\n <div style=\"line-height:32px;\">添加{{ system.SysLocalName }}所属建筑楼层 :</div>\r\n <div style=\"width:70%\">\r\n <bfCascader ref=\"bfCascader\" :SysID=\"system.SysID\"></bfCascader>\r\n </div>\r\n </div>\r\n\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button size=\"small\" @click=\"connectDialogVis=false\">取消</el-button>\r\n <el-button size=\"small\" type=\"primary\" @click=\"save\">确认</el-button>\r\n </span>\r\n </el-dialog>\r\n</template>\r\n<script>\r\nimport bfCascader from './buildfloorCascader'\r\n// import { sysRelateBuild, sysRelateFloor } from \"@/api/scan/request\";\r\nimport Scan from '@/controller/old-adm/ScanController'\r\nconst { sysRelateBuild, sysRelateFloor } = Scan;\r\nexport default {\r\n data() {\r\n return {\r\n buildName: '',\r\n connectDialogVis: false,\r\n system: {}\r\n }\r\n },\r\n components: {\r\n bfCascader\r\n },\r\n props: {\r\n isCreate: {\r\n default: false\r\n }\r\n },\r\n methods: {\r\n showDialog(system) {\r\n this.system = system;\r\n this.connectDialogVis = true;\r\n this.$nextTick(() => {\r\n this.$refs.bfCascader.getCascader()\r\n let arr = this.system.buildingFloorInfoList || [];\r\n let value = []\r\n if (arr.length) {\r\n arr.map(t => {\r\n if (t.FloorID) {\r\n value.push([t.BuildID, t.FloorID]);\r\n } else {\r\n value.push([t.BuildID])\r\n }\r\n })\r\n }\r\n this.$refs.bfCascader.value = value\r\n console.log(value)\r\n })\r\n },\r\n save() {\r\n // 如果是创建\r\n if (this.isCreate) {\r\n let data = this.$refs.bfCascader.getSelectedNodes();\r\n this.connectDialogVis = false;\r\n this.$emit('relateSuccess', data);\r\n return\r\n }\r\n let arr = this.$refs.bfCascader.value;\r\n let buildIds = [], floorIds = [];\r\n arr.map(t => {\r\n if (buildIds.indexOf(t[0]) < 0) {\r\n buildIds.push(t[0]);\r\n }\r\n if (t.length > 1 && floorIds.indexOf(t[1]) < 0) {\r\n floorIds.push(t[1]);\r\n }\r\n })\r\n let buildPa = {\r\n sysId: this.system.id,\r\n buildingIdList: buildIds\r\n }\r\n let floorPa = {\r\n sysId: this.system.id,\r\n floorIdList: floorIds\r\n }\r\n let promise1 = new Promise((resolve, reject) => {\r\n sysRelateBuild(buildPa, res => {\r\n resolve(res);\r\n })\r\n })\r\n let primise2 = new Promise((resolve, reject) => {\r\n sysRelateFloor(floorPa, res => {\r\n resolve(res);\r\n })\r\n })\r\n let buildFloor = this.$refs.bfCascader.getSelectedNodes();\r\n Promise.all([promise1, primise2]).then(res => {\r\n this.connectDialogVis = false;\r\n this.$message.success(\"关联成功\");\r\n this.$emit('relateSuccess', buildFloor);\r\n })\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n#messageDialog {\r\n .cascader-row {\r\n max-height: 200px;\r\n overflow: auto;\r\n }\r\n\r\n /*.el-row {*/\r\n /* !*height: 50px;*!*/\r\n /* max-height: 200px;*/\r\n /* overflow-y: auto;*/\r\n /* overflow-x: hidden;*/\r\n /*}*/\r\n /*.el-row > div {*/\r\n /* float: left;*/\r\n /*}*/\r\n /*.el-row > div + div {*/\r\n /* margin-left: 10px;*/\r\n /*}*/\r\n /*/deep/ .el-input__inner {*/\r\n /* vertical-align: baseline;*/\r\n /*}*/\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./editSysFloor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./editSysFloor.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./editSysFloor.vue?vue&type=template&id=30aef957&scoped=true&\"\nimport script from \"./editSysFloor.vue?vue&type=script&lang=js&\"\nexport * from \"./editSysFloor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./editSysFloor.vue?vue&type=style&index=0&id=30aef957&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"30aef957\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div style=\"height: calc(100% - 44.5px); padding: 0px 10px 10px; box-sizing: border-box\">\r\n <div class=\"hanson-bar\">\r\n <div style=\"float: right; overflow: hidden\">\r\n <el-checkbox v-model=\"isShowDelivered\" @change=\"getHeaderData(mess)\">显示有值信息点</el-checkbox>\r\n <span style=\"margin-left: 10px\">当前筛选条件下共{{ page.total || \"--\" }}系统</span>\r\n </div>\r\n <el-select v-model=\"onlyRead\" @change=\"getHeaderData(mess)\" style=\"width: 100px; margin-right: 20px; vertical-align: bottom\">\r\n <el-option v-for=\"item in options\" :key=\"item.value\" :label=\"item.label\" :value=\"item.value\"></el-option>\r\n </el-select>\r\n <el-select v-model=\"showType\" @change=\"handleChangeShowType\" style=\"width: 100px; margin-right: 10px; vertical-align: bottom\">\r\n <el-option v-for=\"item in showTypes\" :key=\"item.value\" :label=\"item.label\" :value=\"item.value\"></el-option>\r\n </el-select>\r\n <el-select\r\n v-show=\"mess.deviceId\"\r\n v-model=\"showInfoList\"\r\n filterable\r\n clearable\r\n multiple\r\n collapse-tags\r\n @change=\"initTable\"\r\n style=\"width: 200px; margin-right: 8px; vertical-align: bottom\"\r\n placeholder=\"请选择信息点\"\r\n >\r\n <el-option v-for=\"item in headerOptions\" :key=\"item.code\" :label=\"item.name\" :value=\"item.code\"> </el-option>\r\n </el-select>\r\n <el-button size=\"small\" style=\"width: 80px\" @click=\"addDevice\" icon=\"iconfont icon-tianjia\">添加系统</el-button>\r\n <el-button size=\"small\" style=\"width: 80px\" @click=\"reset\" icon=\"iconfont icon-shuaxin\">刷新</el-button>\r\n <el-button v-show=\"!onlyRead\" size=\"small\" style=\"width: 80px\" @click=\"undo\" icon=\"iconfont icon-undo\">撤销</el-button>\r\n </div>\r\n <qrcode :dialog=\"myDialog\" :addBody=\"true\" ref=\"qrcode\"></qrcode>\r\n <upload-files-dialog ref=\"upload\" @changeFile=\"fileChange\" :keysArr=\"filesArr\" firmDataType=\"row\" :dialog=\"myDialog\"></upload-files-dialog>\r\n <upload-img-dialog\r\n :read=\"onlyRead ? true : false\"\r\n @changeFile=\"imgChange\"\r\n :keysArr=\"imgsArr\"\r\n firmDataType=\"row\"\r\n :dialog=\"myDialog\"\r\n ></upload-img-dialog>\r\n <pic-dialog :dialog=\"myDialog\" :keysArr=\"picsArr\" @change=\"changePics\"></pic-dialog>\r\n <div class=\"middle_sty\" style=\"height: 91%\" v-show=\"!mess.deviceId && (!tableData || !tableData.length)\">\r\n <p style=\"text-align: center\"><i class=\"icon-wushuju middle_sty iconfont\"></i>请选择系统类型</p>\r\n </div>\r\n <div class=\"middle_sty\" style=\"height: 91%\" v-show=\"mess.deviceId && (!tableData || !tableData.length)\">\r\n <p style=\"text-align: center\"><i class=\"icon-wushuju middle_sty iconfont\"></i>暂无数据</p>\r\n </div>\r\n <div v-show=\"mess.deviceId && tableData && tableData.length\" v-loading=\"loading\" id=\"handsontable\" ref=\"handsontable\"></div>\r\n <div v-show=\"mess.deviceId && tableData && tableData.length\" class=\"right\">\r\n <my-pagination @change=\"getTableData\" :page=\"page\"></my-pagination>\r\n </div>\r\n <!-- <dialog-assets :assetType=\"[this.mess.deviceId]\" @close=\"getClose\" v-if=\"myDialog.addDevice\" ref=\"assets\" :dialog=\"myDialog\"></dialog-assets> -->\r\n <details-dialog :iframeSrc=\"iframeSrc\" v-if=\"myDialog.details\" :dialog=\"myDialog\"></details-dialog>\r\n <system-relevance @close=\"reset\" :id=\"systemId\" :dialog=\"myDialog\"></system-relevance>\r\n <!-- 多选枚举类型维护 -->\r\n <menum :dialog=\"myDialog\" :updateInfoData=\"updateInfoData\" :updateInput=\"updateInput\" @change=\"handleChangeMenum\"></menum>\r\n <!-- 不支持的输入方式 -->\r\n <el-dialog title=\"临时维护信息点\" :visible.sync=\"myDialog.update\" @close=\"handleCloseUpdate\" width=\"670px\">\r\n <el-row>\r\n 该信息点未定义对应组件,现在维护数据不确定后续是否可用。如确实需要维护,请点击\r\n <el-link @click=\"updateInputShow = true\" type=\"primary\" :underline=\"false\">继续维护</el-link>\r\n 。\r\n </el-row>\r\n <el-row style=\"margin-top: 20px\" v-show=\"updateInputShow\">\r\n <el-input type=\"textarea\" :autosize=\"{ minRows: 4, maxRows: 8 }\" placeholder=\"请输入内容\" v-model=\"updateInput\"></el-input>\r\n </el-row>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"myDialog.update = false\">取 消</el-button>\r\n <el-button type=\"primary\" @click=\"handleClickUpdate\">确 认</el-button>\r\n </span>\r\n </el-dialog>\r\n <!-- 关联楼层 -->\r\n <editSysfloor ref=\"editFloor\" @relateSuccess=\"relateSuccess\"></editSysfloor>\r\n <!-- 新增系统 -->\r\n <el-dialog title=\"确定新增系统的类型\" :visible.sync=\"myDialog.addDevice\" width=\"30%\">\r\n <el-row>\r\n <my-cascader ref=\"cascader\" @change=\"changeAddType\" :all=\"true\"></my-cascader>\r\n </el-row>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button type=\"primary\" @click=\"toAddDevice\">下 一 步</el-button>\r\n </span>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n<script>\r\n// import { BeatchQueryParam, deleteGeneralSys, querySysLinkBuild, updateGeneralSys } from \"@/api/scan/request\";\r\nimport Scan from '@/controller/old-adm/ScanController'\r\n// import { getDataDictionary, deliveredInfos } from \"@/api/dict\";\r\nimport Dic from '@/controller/old-adm/dicController'\r\n\r\nimport myCascader from \"@/components/old-adm/ledger/components/lib/system\";\r\nimport tools from \"@/utils/old-adm/scan/tools\";\r\nimport handsonUtils from \"@/utils/old-adm/scan/hasontableUtils\";\r\nimport showTools from \"@/utils/old-adm/handsontable/notShow\";\r\nimport qrcode from \"@/components/old-adm/business_space/lib/qrcode\";\r\nimport uploadFilesDialog from \"@/components/old-adm/dialogs/list/filesDialog\";\r\nimport uploadImgDialog from \"@/components/old-adm/dialogs/list/uploadImgDialog\";\r\nimport picDialog from \"@/components/old-adm/business_space/dialogs/list/picDialog\";\r\nimport myPagination from \"@/components/old-adm/common/myPagination\";\r\nimport detailsDialog from \"@/components/old-adm/business_space/lib/detailsDia\";\r\nimport systemRelevance from \"@/components/old-adm/ledger/components/tableTransfers\";\r\nimport Handsontable from \"handsontable-pro\";\r\nimport text from \"@/utils/old-adm/handsontable/mainText\";\r\nimport \"handsontable-pro/dist/handsontable.full.css\";\r\nimport editSysfloor from \"@/components/old-adm/ledger/components/lib/editSysFloor\";\r\nimport menum from \"@/components/old-adm/dialogs/list/menum\";\r\n\r\nimport { mapGetters } from \"vuex\";\r\n\r\nconst { BeatchQueryParam, deleteGeneralSys, querySysLinkBuild, updateGeneralSys } = Scan;\r\nconst { getDataDictionary, deliveredInfos } = Dic;\r\n\r\nexport default {\r\n components: {\r\n qrcode, //二维码页面\r\n uploadFilesDialog,\r\n uploadImgDialog,\r\n picDialog,\r\n myPagination,\r\n detailsDialog,\r\n systemRelevance,\r\n myCascader,\r\n editSysfloor,\r\n menum,\r\n },\r\n computed: {\r\n ...mapGetters(\"layout\", [\"projectId\", \"secret\", \"userId\", \"group_code\"]),\r\n showTypes() {\r\n return this.onlyRead\r\n ? [\r\n { value: \"Visible\", label: \"只看采集信息\" },\r\n { value: \"all\", label: \"全部\" },\r\n ]\r\n : [\r\n { value: \"Visible\", label: \"只看采集信息\" },\r\n { value: \"all\", label: \"全部\" },\r\n ];\r\n },\r\n },\r\n data() {\r\n return {\r\n options: [\r\n {\r\n value: true,\r\n label: \"只读模式\",\r\n },\r\n {\r\n value: false,\r\n label: \"编辑模式\",\r\n },\r\n ],\r\n tableData: [],\r\n mess: {},\r\n tableHeader: null,\r\n page: {\r\n size: 50,\r\n sizes: [10, 30, 50, 100, 150, 200],\r\n total: 0,\r\n currentPage: 1,\r\n },\r\n myDialog: {\r\n qrcode: false, //二维码弹窗\r\n uploadFiles: false, //上传文件\r\n uploadImgs: false, //上传单个图片\r\n pic: false, //多个图片\r\n addDevice: false,\r\n details: false, //详情页\r\n relevance: false, //关联设备\r\n update: false, //临时维护信息点\r\n menum: false, //临时多选枚举类型信息点\r\n },\r\n row: null, //被修改的row\r\n filesArr: [], //保存临时的文件key\r\n messKey: null,\r\n imgsArr: [], //临时保存的图片key数组\r\n picsArr: [], //临时设备图片keys数组\r\n noShowList: [\"SysID\", \"SysName\"],\r\n copyMain: null,\r\n iframeSrc: \"\",\r\n systemId: \"\",\r\n onlyRead: true,\r\n showType: \"Visible\",\r\n linkNameFalg: false,\r\n qrcodeUrl: \"\", //二维码图片地址\r\n loading: false,\r\n addData: {}, //添加设备选择的设备类型\r\n inputMap: {\r\n flowBuild: {\r\n editable: true,\r\n code: \"flowBuild\",\r\n name: \"建筑楼层\",\r\n path: \"flowBuild\",\r\n category: \"STATIC\",\r\n dataType: \"ENUM\",\r\n },\r\n }, //信息点和输入方式映射表\r\n updateInputShow: false, //是否显示临时维护输入框\r\n updateInfoData: {}, //当前信息点信息\r\n updateInfoPoint: \"\", //临时维护信息点\r\n updateInput: \"\", //临时维护信息点值\r\n headerOptions: [], // 信息点选项列表\r\n showInfoList: [], // 筛选的信息点列表\r\n isShowDelivered: false, // 是否显示已交付的信息点\r\n };\r\n },\r\n created() {},\r\n mounted() {},\r\n methods: {\r\n //触发父组件change\r\n getClose(val) {\r\n this.$emit(\"close\", val);\r\n },\r\n //获取表头\r\n getHeaderData(code) {\r\n this.mess = code;\r\n\r\n if (this.mess.deviceId) {\r\n // 清空筛选的信息点列表\r\n this.showInfoList = [];\r\n // 查询已交付的信息点\r\n if (this.isShowDelivered) {\r\n this.getDeliveredInfos(this.mess.deviceId);\r\n } else {\r\n // 查询全部信息点\r\n this.getDataDictionary(this.mess.deviceId);\r\n }\r\n }\r\n },\r\n /**\r\n * 查询已交付的信息点\r\n * @param classCode 设备类型\r\n */\r\n getDeliveredInfos(classCode) {\r\n let params = {\r\n classCode: classCode,\r\n objType: \"system\",\r\n };\r\n if (this.mess.buildId == \"noKnow\") {\r\n params.buildingId = `isNull`;\r\n } else if (this.mess.buildId && this.mess.buildId != \"all\") {\r\n params.buildingId = `${this.mess.buildId}`;\r\n }\r\n\r\n if (this.mess.floorId == \"noKnow\") {\r\n params.floorId = `isNull`;\r\n } else if (this.mess.floorId && this.mess.floorId != \"all\") {\r\n params.floorId = `${this.mess.floorId}`;\r\n }\r\n deliveredInfos(params, (res) => {\r\n this.tableHeader = res.content;\r\n this.codeToDataSource = {};\r\n this.tableHeader.forEach((item) => {\r\n if (item.path) {\r\n this.inputMap[item.path] = item;\r\n }\r\n if (item.dataSource) {\r\n try {\r\n this.codeToDataSource[item.code] = {};\r\n item.dataSource.forEach((dic) => {\r\n this.codeToDataSource[item.code][dic.code] = dic.name;\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n });\r\n this.getTableData();\r\n });\r\n },\r\n /**\r\n * 查询全部信息点\r\n * @param classCode 设备类型\r\n */\r\n getDataDictionary(classCode) {\r\n let params = {\r\n type: classCode,\r\n orders: \"sort asc, name desc\",\r\n };\r\n getDataDictionary(params, (res) => {\r\n this.tableHeader = res.content;\r\n this.codeToDataSource = {};\r\n this.tableHeader.forEach((item) => {\r\n if (item.path) {\r\n this.inputMap[item.path] = item;\r\n }\r\n if (item.dataSource) {\r\n try {\r\n this.codeToDataSource[item.code] = {};\r\n item.dataSource.forEach((dic) => {\r\n this.codeToDataSource[item.code][dic.code] = dic.name;\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n });\r\n this.getTableData();\r\n });\r\n },\r\n changeWatch() {\r\n this.reset();\r\n },\r\n //获取主体数据\r\n getTableData() {\r\n let _this = this;\r\n this.loading = true;\r\n if (!!this.mess.deviceId) {\r\n let param = {\r\n data: {\r\n pageSize: this.page.size,\r\n orders: \"createTime desc, localName desc, localId desc, id desc\",\r\n pageNumber: this.page.currentPage,\r\n filters: `classCode='${this.mess.deviceId}'`,\r\n },\r\n };\r\n if (this.mess.buildId == \"noKnow\") {\r\n param.buildingId = 1;\r\n } else if (this.mess.buildId && this.mess.buildId != \"all\") {\r\n param.buildingId = this.mess.buildId;\r\n }\r\n if (this.mess.floorId == \"noKnow\") {\r\n param.floorId = 1;\r\n } else if (this.mess.floorId && this.mess.floorId != \"all\") {\r\n param.floorId = this.mess.floorId;\r\n }\r\n querySysLinkBuild(param, (res) => {\r\n this.loading = false;\r\n _this.tableData = res.content;\r\n _this.copyMain = tools.deepCopy(res.content);\r\n _this.page.total = res.total;\r\n if (res.content && res.content.length) {\r\n if (this.onlyRead) {\r\n this.getBatch(res.content);\r\n }\r\n _this.initTable();\r\n }\r\n });\r\n }\r\n },\r\n //撤回\r\n undo() {\r\n if (this.tableData.length) {\r\n this.hot.undo();\r\n }\r\n },\r\n //刷新\r\n reset() {\r\n if (this.mess.deviceId) {\r\n this.getTableData();\r\n } else {\r\n this.$message({\r\n message: \"请选择系统类型\",\r\n type: \"warning\",\r\n });\r\n }\r\n },\r\n //添加设备\r\n addDevice() {\r\n this.myDialog.addDevice = true;\r\n if (this.mess.deviceId) {\r\n this.$nextTick(() => {\r\n this.$refs.cascader.setValue(this.mess.deviceId);\r\n });\r\n }\r\n },\r\n //下一步\r\n toAddDevice() {\r\n if (this.addData.category) {\r\n this.$router.push({\r\n path: \"/ledger/systemadd\",\r\n query: this.addData,\r\n });\r\n }\r\n },\r\n //选择设备类型-添加设备\r\n changeAddType(val) {\r\n this.addData.category = val.classCode;\r\n this.addData.categoryName = val.categoryName;\r\n this.addData.showType = this.showType;\r\n console.log(\"val\", val, this.addData);\r\n },\r\n /**\r\n * 切换信息点查看类型\r\n */\r\n handleChangeShowType() {\r\n this.showInfoList = [];\r\n this.initTable();\r\n },\r\n //格式化表头\r\n formatHeaderData(list) {\r\n let arr = tools.copyArr(list);\r\n let data = showTools.headerTextFilter(arr, \"system\", this.onlyRead, this.showType);\r\n data.unshift(\"操作\");\r\n if (this.showType == \"all\") {\r\n data.splice(3, 0, \"所属建筑楼层\");\r\n }\r\n return data;\r\n },\r\n //格式化表内容\r\n formatHeaderType(list) {\r\n let arr = tools.copyArr(list);\r\n let data = showTools.headerTypeFilter(arr, \"system\", this.onlyRead, this.showType);\r\n this.headerOptions = this.showType === \"all\" ? tools.copyArr(this.tableHeader) : this.tableHeader.filter((item) => item.visible);\r\n data.unshift(\r\n {\r\n data: \"caozuo\",\r\n renderer: tools.lookDetails,\r\n readOnly: true,\r\n }\r\n // {\r\n // data: \"Count\",\r\n // renderer: tools.num,\r\n // readOnly: true\r\n // }\r\n );\r\n if (this.onlyRead) {\r\n data.map((item) => {\r\n item.readOnly = true;\r\n });\r\n }\r\n if (this.showType == \"all\") {\r\n data.splice(3, 0, {\r\n data: \"buildingFloorInfoList\",\r\n renderer: text.sysInBuildFloor,\r\n readOnly: this.onlyRead,\r\n });\r\n }\r\n return data;\r\n },\r\n //获取动态参数\r\n getBatch(data) {\r\n let param = {\r\n groupCode: this.group_code,\r\n appId: \"datacenter\",\r\n projectId: this.projectId,\r\n data: [],\r\n };\r\n //一级遍历list\r\n this.tableHeader.map((head) => {\r\n //如果一级标签为动态参数或者设定参数放入数据等待请求\r\n if (head.category != \"STATIC\") {\r\n data.map((item) => {\r\n let cur = tools.dataForKey(item, head.path);\r\n if (cur) {\r\n param.data.push({\r\n objectId: item.id,\r\n infoCode: head.code,\r\n });\r\n }\r\n });\r\n }\r\n });\r\n if (param.data.length) {\r\n BeatchQueryParam(param, (res) => {\r\n if (!this.onlyRead) {\r\n return false;\r\n }\r\n this.tableData = data.map((item) => {\r\n res.data.map((child) => {\r\n if (item.id == child.objectId) {\r\n if (!!child.data || child.data == 0) {\r\n this.tableHeader.map((head) => {\r\n if (head.code == child.infoCode) {\r\n let contentVal = child.data;\r\n if (this.codeToDataSource[child.infoCode]) {\r\n contentVal = this.codeToDataSource[child.infoCode][child.data];\r\n }\r\n tools.setDataForKey(item, head.path, contentVal);\r\n }\r\n });\r\n } else {\r\n this.tableHeader.map((head) => {\r\n if (head.code == child.infoCode) {\r\n tools.setDataForKey(\r\n item,\r\n head.path,\r\n child.error ? (child.value ? \"表号功能号格式错误\" : \"表号功能号不存在\") : \"暂未采集到实时数据\"\r\n );\r\n }\r\n });\r\n }\r\n }\r\n });\r\n return item;\r\n });\r\n this.hot.loadData(this.tableData);\r\n });\r\n }\r\n },\r\n /**\r\n * 筛选要展示的表头函数\r\n */\r\n filterShowInfo(list) {\r\n let arr = this.tableHeader.filter((item) => {\r\n return item.code === \"localId\" || item.code === \"localName\" || list.includes(item.code);\r\n });\r\n return arr;\r\n },\r\n //初始化插件\r\n initTable() {\r\n var container = document.getElementById(\"handsontable\");\r\n let winHeight = document.documentElement.clientHeight;\r\n if (this.hot) {\r\n this.hot.destroy();\r\n this.hot = null;\r\n }\r\n this.hot = new Handsontable(container, {\r\n data: this.tableData,\r\n fixedColumnsLeft: 3,\r\n colHeaders: this.formatHeaderData(this.showInfoList.length ? this.filterShowInfo(this.showInfoList) : this.tableHeader), //表头文案\r\n columns: this.formatHeaderType(this.showInfoList.length ? this.filterShowInfo(this.showInfoList) : this.tableHeader), //数据显示格式\r\n filters: true,\r\n maxRows: this.tableData.length,\r\n height: winHeight - 335,\r\n columnSorting: true, //添加排序\r\n sortIndicator: true, //添加排序\r\n renderAllRows: true,\r\n // observeChanges: false, //启用observeChanges插件\r\n // colWidths: 200,\r\n autoColumnSize: true,\r\n language: \"zh-CN\",\r\n fillHandle: \"vertical\", //允许纵向填充\r\n manualColumnResize: true,\r\n manualColumnMove: true,\r\n dropdownMenu: [\"filter_by_condition\", \"filter_by_value\", \"filter_action_bar\"],\r\n contextMenu: this.onlyRead\r\n ? false\r\n : {\r\n items: {\r\n remove_row: {\r\n name: \"删除该系统\",\r\n },\r\n },\r\n },\r\n // 事件\r\n afterChange: this.handleUpdataTable, //修改后\r\n afterFilter: this.trimmedRows, //排序前\r\n afterRemoveRow: this.handleDeleteTableRow, //右键删除\r\n afterOnCellMouseDown: this.eventClick, //鼠标点击\r\n });\r\n let pro = document.getElementById(\"hot-display-license-info\");\r\n if (!!pro) {\r\n pro.parentNode.removeChild(pro);\r\n }\r\n this.isLoading = false;\r\n },\r\n //表格中的点击\r\n eventClick(el, rowArr) {\r\n //点击的是表头\r\n if (rowArr.row < 0) {\r\n return;\r\n }\r\n //被筛选过后的数组\r\n let trimmedArr = this.trimmedRows();\r\n //是否启用了排序\r\n let isSort = this.hot.getPlugin(\"columnSorting\").isSorted();\r\n if (trimmedArr.length && isSort) {\r\n let sortArr = this.myHotArr.getPlugin(\"columnSorting\").rowsMapper.__arrayMap;\r\n let infos = this.tableData[trimmedArr[sortArr[rowArr.row]]];\r\n this.getInfors(infos, { row: sortArr[rowArr.row], col: rowArr.col });\r\n } else if (isSort) {\r\n //排序后的数组\r\n let sortArr = this.hot.getPlugin(\"columnSorting\").rowsMapper.__arrayMap;\r\n let infos = this.tableData[sortArr[rowArr.row]];\r\n this.getInfors(infos, { row: sortArr[rowArr.row], col: rowArr.col });\r\n } else if (trimmedArr.length) {\r\n let infos = this.tableData[trimmedArr[rowArr.row]];\r\n this.getInfors(infos, { row: trimmedArr[rowArr.row], col: rowArr.col });\r\n } else {\r\n let infos = this.tableData[rowArr.row];\r\n this.getInfors(infos, rowArr);\r\n }\r\n },\r\n handleUpdataTable(changeData, source) {\r\n if (!this.onlyRead && source != \"ObserveChanges.change\") {\r\n if (changeData) {\r\n let trimmedArr = this.trimmedRows();\r\n let param = handsonUtils.getParam(changeData, source, this.hot, trimmedArr);\r\n let data = [];\r\n for (let i = 0; i < param.length; i++) {\r\n data.push(param[i]);\r\n }\r\n //如果data中包含/且data长度为1,将其转换成.\r\n if (changeData.length == 1 && changeData[0][1].indexOf(\"/\") > 0) {\r\n changeData[0][1] = changeData[0][1].split(\"/\").join(\".\");\r\n }\r\n\r\n //存在data进行修改请求\r\n if (data && data.length) {\r\n this.updateBusiness(data, changeData);\r\n }\r\n }\r\n }\r\n },\r\n //删除资产\r\n async handleDeleteTableRow() {\r\n this.$confirm(\"此操作将删除该系统, 是否继续?\", \"提示\", {\r\n confirmButtonText: \"确定\",\r\n cancelButtonText: \"取消\",\r\n type: \"warning\",\r\n })\r\n .then(() => {\r\n let params = tools.differenceArr(this.tableData, this.copyMain);\r\n let param = [];\r\n params.map((item) => {\r\n param.push({ id: item.id });\r\n });\r\n this.removeSys(param);\r\n })\r\n .catch(() => {\r\n this.getTableData();\r\n this.$message(\"取消删除\");\r\n });\r\n },\r\n async removeSys(param) {\r\n await deleteGeneralSys(param, (res) => {\r\n this.$message.success(\"删除成功\");\r\n this.$emit(\"close\", \"\");\r\n this.getTableData();\r\n });\r\n },\r\n // 修改\r\n updateBusiness(data, change) {\r\n let param = {\r\n content: [],\r\n },\r\n keyList = [];\r\n //生成要修改字段列表\r\n change.map((item) => {\r\n // let key = item[1].split(\".\")[0]\r\n // if (item[1] && keyList.indexOf(key) == -1) {\r\n // keyList.push(key);\r\n // }\r\n if (item[1] && keyList.indexOf(item[1]) == -1) {\r\n keyList.push(item[1]);\r\n }\r\n });\r\n //生成对应修改数据\r\n data.map((item, index) => {\r\n let nullList = [];\r\n keyList.map((value) => {\r\n let itemData = tools.dataForKey(item, value);\r\n tools.setDataForKey(item, value, itemData == \"\" ? null : itemData);\r\n // 数据为空加入置空列表(空数据类型包含: undefind / \"\" / null )\r\n itemData || nullList.push(value);\r\n });\r\n // 置空列表不为空\r\n if (nullList.length) {\r\n // 深拷贝需更新的对象,并添加置空列表\r\n const updateItem = JSON.parse(JSON.stringify(item));\r\n updateItem.nullList = nullList;\r\n param.content.push(updateItem);\r\n } else {\r\n // 无置空内容\r\n param.content.push(item);\r\n }\r\n });\r\n updateGeneralSys(param, (res) => {});\r\n },\r\n //获取到了正确的信息\r\n getInfors(infos, row) {\r\n //其他的开始判断\r\n let val = this.hot.colToProp(row.col);\r\n let inputData = this.inputMap[val];\r\n this.systemId = infos.SysID;\r\n this.row = row.row;\r\n this.messKey = val;\r\n switch (val) {\r\n //操作\r\n case \"caozuo\":\r\n // window.open(`http://adm.sagacloud.cn:8058/system?id=${infos.id}&pid=${this.projectId}&secret=${this.secret}`,\"_blank\")\r\n // this.$message(\"开发中...\")\r\n console.log(infos);\r\n this.$router.push({\r\n path: \"/ledger/systemDetail\",\r\n query: { SysID: infos.id, Name: infos.localName || infos.name, SysType: infos.classCode },\r\n });\r\n return false;\r\n //设备二维码图片\r\n // case 'EquipQRCode':\r\n case \"defaultQRCode\":\r\n this.qrcodeUrl = this.tableData[row.row].EquipQRCode;\r\n if (!!this.qrcodeUrl) {\r\n this.myDialog.qrcode = true;\r\n } else {\r\n this.$message(\"此设备没有设备二维码\");\r\n }\r\n return false;\r\n //关联设备数量\r\n case \"count\":\r\n if (!this.onlyRead) {\r\n this.myDialog.relevance = true;\r\n }\r\n return false;\r\n case \"buildingFloorInfoList\":\r\n if (!this.onlyRead) {\r\n this.$refs.editFloor.showDialog(this.tableData[row.row]);\r\n }\r\n return false;\r\n //系统图(F2)\r\n case \"infos.systemChart\":\r\n let SSPPdata = tools.dataForKey(this.tableData[row.row], val);\r\n this.imgsArr = SSPPdata ? SSPPdata : [];\r\n if (!this.onlyRead || this.imgsArr.length) {\r\n this.myDialog.uploadImgs = true;\r\n }\r\n return false;\r\n default:\r\n break;\r\n }\r\n if (!this.onlyRead && !inputData.editable) {\r\n this.$confirm(\"该信息点的值为自动生成,不可人工维护!\", \"提示\", {\r\n confirmButtonText: \"我知道了\",\r\n showCancelButton: false,\r\n type: \"warning\",\r\n center: true,\r\n }).then(() => {\r\n return false;\r\n });\r\n }\r\n // 维护多选枚举值\r\n if (!this.onlyRead && inputData.dataType == \"MENUM\") {\r\n this.updateInfoData = inputData;\r\n this.updateInfoPoint = val;\r\n this.updateInput = tools.dataForKey(this.tableData[row.row], val);\r\n this.myDialog.menum = true;\r\n return false;\r\n }\r\n if (!this.onlyRead && showTools.inputModeArr.indexOf(inputData.dataType) == \"-1\") {\r\n this.updateInfoPoint = val;\r\n this.updateInput = tools.dataForKey(this.tableData[row.row], val);\r\n this.myDialog.update = true;\r\n return false;\r\n }\r\n },\r\n //关闭临时维护弹窗回调\r\n handleCloseUpdate() {\r\n this.updateInputShow = false;\r\n this.updateInfoPoint = \"\";\r\n this.updateInput = \"\";\r\n },\r\n //更新临时维护信息点\r\n handleClickUpdate() {\r\n // this.$message(\"更新成功\");\r\n tools.setDataForKey(this.tableData[this.row], this.updateInfoPoint, this.updateInput);\r\n this.handleUpdataTable([[this.row, this.updateInfoPoint, null, this.updateInput]], \"edit\");\r\n this.updateInputShow = false;\r\n this.myDialog.update = false;\r\n this.updateInput = \"\";\r\n },\r\n //多选枚举类型值修改\r\n handleChangeMenum(newValue) {\r\n tools.setDataForKey(this.tableData[this.row], this.updateInfoPoint, newValue);\r\n this.handleUpdataTable([[this.row, this.updateInfoPoint, null, newValue]], \"edit\");\r\n this.myDialog.menum = false;\r\n this.updateInput = \"\";\r\n },\r\n //关联建筑楼层成功\r\n relateSuccess(data) {\r\n this.getTableData();\r\n // tools.setDataForKey(this.tableData[this.row], \"BuildingFloorInfoList\", data)\r\n },\r\n //获取被筛选掉的行号\r\n trimmedRows() {\r\n // var plugin = hot.getPlugin('trimRows').trimmedRows;//获取被筛选掉的行号\r\n var plugin = this.hot.getPlugin(\"trimRows\").trimmedRows;\r\n let dataLength = this.tableData.length;\r\n let dataArr = new Array();\r\n for (let i = 0; i < dataLength; i++) {\r\n dataArr.push(i);\r\n }\r\n if (plugin.length <= 0) {\r\n dataArr = undefined;\r\n } else {\r\n dataArr = this.array_diff(dataArr, plugin);\r\n }\r\n return dataArr || [];\r\n // var DataArray = new Array();\r\n\r\n // for (var i = 0; i < plugin.length; i++) {\r\n // // 通过行号获取数据\r\n // DataArray.push(this.hot.getSourceDataAtRow(plugin[i]));\r\n // }\r\n },\r\n //上传文件弹窗触发事件\r\n fileChange(keys) {\r\n this.setDataToMain(keys, this.messKey, this.row);\r\n },\r\n //上传图片弹窗触发事件\r\n imgChange(keys) {\r\n this.setDataToMain(keys, this.messKey, this.row);\r\n },\r\n //设备图片弹窗改变事件\r\n changePics(keys) {\r\n this.setDataToMain(keys, this.messKey, this.row);\r\n },\r\n //判断是否有值,有值赋值\r\n setDataToMain(data, key, row) {\r\n if (!!data && data != \"--\") {\r\n if (!!this.tableData[row]) {\r\n tools.setDataForKey(this.tableData[row], key, data);\r\n this.handleUpdataTable([[row, key, null, data]], \"edit\");\r\n } else {\r\n this.tableData[row] = {};\r\n tools.setDataForKey(this.tableData[row], key, data);\r\n }\r\n } else {\r\n tools.setDataForKey(this.tableData[row], key, \"\");\r\n }\r\n },\r\n },\r\n watch: {\r\n projectId() {\r\n this.tableData = [];\r\n this.mess.deviceId = null;\r\n this.page.total = 0;\r\n },\r\n showTypes: {\r\n handler(newName, oldName) {\r\n if (newName && newName[0] && newName[0].value) {\r\n this.showType = newName[0].value;\r\n } else {\r\n this.showType = \"Visible\";\r\n }\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n/deep/ .el-select__tags-text {\r\n display: inline-block;\r\n max-width: 80px;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n}\r\n/deep/ .el-select .el-tag__close.el-icon-close {\r\n right: -4px;\r\n top: -6px;\r\n}\r\n</style>\r\n<style lang=\"less\">\r\n.hanson-bar {\r\n height: 40px;\r\n padding: 5px 0;\r\n font-size: 14px;\r\n overflow: hidden;\r\n margin-top: 0;\r\n line-height: 40px;\r\n\r\n .iconfont {\r\n font-size: 12px;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./system.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./system.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./system.vue?vue&type=template&id=5b9a72ce&scoped=true&\"\nimport script from \"./system.vue?vue&type=script&lang=js&\"\nexport * from \"./system.vue?vue&type=script&lang=js&\"\nimport style0 from \"./system.vue?vue&type=style&index=0&id=5b9a72ce&lang=less&scoped=true&\"\nimport style1 from \"./system.vue?vue&type=style&index=1&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5b9a72ce\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div id=\"deviceList\">\r\n <saga-title :mess=\"mess\"></saga-title>\r\n <div class=\"table-main\">\r\n <div class=\"search-header\">\r\n <floor-cascader @change=\"changeFloor\"></floor-cascader>\r\n <my-cascader ref=\"cascader\" @change=\"changeDevice\"></my-cascader>\r\n </div>\r\n <hanson-table @close=\"close\" ref=\"tableMain\"></hanson-table>\r\n </div>\r\n <table-transfers></table-transfers>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport sagaTitle from \"@/components/old-adm/ledger/components/lib/title\";\r\nimport floorCascader from \"@/components/old-adm/ledger/components/lib/floorCascader\";\r\nimport myCascader from \"@/components/old-adm/ledger/components/lib/system\";\r\nimport hansonTable from \"@/components/old-adm/ledger/components/handsontables/system\";\r\nimport tableTransfers from \"@/components/old-adm/ledger/components/tableTransfers\";\r\nimport { mapGetters } from \"vuex\";\r\n// import { countGeneralSys } from \"@/api/scan/request\"\r\nimport Scan from '@/controller/old-adm/ScanController'\r\nimport 'handsontable-pro/dist/handsontable.full.css'\r\nconst { countGeneralSys } = Scan\r\nexport default {\r\n components: {\r\n sagaTitle,\r\n floorCascader,\r\n myCascader,\r\n hansonTable,\r\n tableTransfers\r\n },\r\n data() {\r\n return {\r\n mess: {\r\n perjectName: \"\",\r\n name: [\r\n {\r\n key: \"系统\",\r\n num: 0\r\n }\r\n ]\r\n },\r\n param: {\r\n buildId: \"\",\r\n floorId: \"\",\r\n deviceId: \"\",\r\n ProjId: '',\r\n secret: ''\r\n }\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(\"layout\", [\"projectId\", \"secret\", \"userId\"])\r\n },\r\n created() {\r\n this.param.ProjId = this.projectId\r\n this.param.secret = this.secret\r\n this.countGeneralSys()\r\n let SysType = this.$route.params.SysType;\r\n if (SysType) {\r\n this.$nextTick(() => {\r\n this.$refs.cascader.changeVal(SysType)\r\n })\r\n }\r\n },\r\n watch: {\r\n projectId() {\r\n this.param.ProjId = this.projectId\r\n this.param.secret = this.secret\r\n this.countGeneralSys()\r\n }\r\n },\r\n methods: {\r\n close(val) {\r\n this.countGeneralSys()\r\n if (!!val && !!val.Category) {\r\n if (this.$refs.cascader)\r\n this.$refs.cascader.changeVal(val.Category)\r\n }\r\n this.$refs.cascader.getData()\r\n },\r\n //获取系统统计信息\r\n countGeneralSys() {\r\n let param = {}\r\n countGeneralSys(param, res => {\r\n this.mess.name[0].num = res.count\r\n })\r\n },\r\n //修改楼层\r\n changeFloor(value) {\r\n if (value[0]) {\r\n this.param.buildId = value[0]\r\n }\r\n if (value[1]) {\r\n this.param.floorId = value[1]\r\n } else {\r\n this.param.floorId = null\r\n }\r\n if (!!this.param.deviceId) {\r\n if (this.$refs.tableMain)\r\n this.$refs.tableMain.getHeaderData(this.param);\r\n }\r\n },\r\n //修改设备族\r\n changeDevice(value) {\r\n console.log({value})\r\n this.param.deviceId = value.classCode\r\n if (value) {\r\n if (this.$refs.tableMain)\r\n this.$refs.tableMain.getHeaderData(this.param);\r\n }\r\n }\r\n }\r\n \r\n\r\n}\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n#deviceList {\r\n overflow: hidden;\r\n height: 100%;\r\n background-color: #fff;\r\n position: relative;\r\n .table-main {\r\n position: absolute;\r\n top: 87px;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n background-color: #fff;\r\n // border-radius: 5px;\r\n // padding: 10px 0;\r\n }\r\n .search-header {\r\n overflow: hidden;\r\n padding-bottom: 10px;\r\n margin: 0 10px;\r\n border-bottom: 1px solid #bcbcbc;\r\n }\r\n}\r\n</style>","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=43b79e44&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=43b79e44&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"43b79e44\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"manageTenantZone\"}},[_c('el-row',{staticStyle:{\"margin\":\"5px 0 0 0\"}},[_c('el-button',{staticStyle:{\"float\":\"left\"},attrs:{\"size\":\"small\",\"type\":\"default\",\"icon\":\"el-icon-back\"},on:{\"click\":_vm.goback}}),_c('div',{attrs:{\"id\":\"buildFloor\"}},[_c('span',{staticClass:\"buildFloor\"},[_vm._v(\"建筑楼层\")]),_c('el-cascader',{ref:\"floorCascader\",attrs:{\"placeholder\":\"请选择\",\"props\":_vm.props,\"options\":_vm.bfOptions,\"filterable\":\"\",\"size\":\"small\"},on:{\"change\":_vm.changeFloor},model:{value:(_vm.floorValue),callback:function ($$v) {_vm.floorValue=$$v},expression:\"floorValue\"}})],1),_c('my-cascader',{ref:\"cascader\",on:{\"change\":_vm.changeDevice}}),_c('el-button',{staticStyle:{\"float\":\"right\"},attrs:{\"type\":\"primary\",\"size\":\"mini\",\"disabled\":!_vm.isChange},on:{\"click\":_vm.handleClickSave}},[_vm._v(\"确认\")]),_c('el-button',{staticStyle:{\"float\":\"right\",\"margin-right\":\"10px\"},attrs:{\"size\":\"mini\"},on:{\"click\":_vm.cancel}},[_vm._v(\"取消\")])],1),_c('el-row',{staticClass:\"main-container\"},[_c('el-row',{staticClass:\"main-container-header\"},[_c('el-select',{staticStyle:{\"width\":\"100px\",\"margin-left\":\"10px\"},attrs:{\"placeholder\":\"请选择\"},on:{\"change\":_vm.handleChangeIspoint},model:{value:(_vm.isPoint),callback:function ($$v) {_vm.isPoint=$$v},expression:\"isPoint\"}},_vm._l((_vm.isPointOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1),_c('el-input',{staticStyle:{\"width\":\"250px\",\"margin-left\":\"10px\"},attrs:{\"placeholder\":\"请输入设备标识关键字\",\"clearable\":\"\",\"suffix-icon\":\"el-icon-search\"},on:{\"change\":_vm.handleChangeKeyword},model:{value:(_vm.keyword),callback:function ($$v) {_vm.keyword=$$v},expression:\"keyword\"}})],1),_c('el-row',{staticClass:\"main-container-box\"},[_c('el-col',{staticClass:\"container-box-left\",attrs:{\"span\":3}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"placeholder\":\"请选择\"},model:{value:(_vm.showName),callback:function ($$v) {_vm.showName=$$v},expression:\"showName\"}},_vm._l((_vm.showNameOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1),_c('div',{staticClass:\"equip-list\"},[_c('el-scrollbar',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.equipList.length),expression:\"equipList.length\"}],staticStyle:{\"height\":\"100%\"}},[_c('ul',{directives:[{name:\"infinite-scroll\",rawName:\"v-infinite-scroll\",value:(_vm.getEquipData),expression:\"getEquipData\"}],attrs:{\"infinite-scroll-disabled\":\"disabled\"}},[_vm._l((_vm.equipList),function(item){return _c('li',{key:item.id,staticClass:\"equip-item\",class:{'equip-item-selected': item.selected},attrs:{\"title\":item[_vm.showName]},on:{\"click\":function($event){return _vm.handleSelectIcon(item)}}},[_c('p',{staticClass:\"equip-item-text\"},[_vm._v(_vm._s(item[_vm.showName] || '--'))]),(item.hasLocation)?_c('i',{staticClass:\"iconfont icon-hook equip-item-icon\",staticStyle:{\"color\":\"#67C23A\",\"font-size\":\"14px\"}}):_c('i',{staticClass:\"iconfont icon-cross equip-item-icon\",staticStyle:{\"color\":\"#ccc\",\"font-size\":\"14px\"}})])}),(_vm.loading)?_c('p',{staticStyle:{\"text-align\":\"center\"}},[_vm._v(\"加载中...\")]):_vm._e(),(_vm.noMore)?_c('p',{staticStyle:{\"text-align\":\"center\"}},[_vm._v(\"没有更多了\")]):_vm._e()],2)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.equipList.length),expression:\"!equipList.length\"}],staticClass:\"no-data\"},[_c('div',{staticClass:\"position-icon\"},[_c('i',{staticClass:\"icon-wushuju iconfont\"}),_vm._v(\" 暂无数据 \")])])],1)],1),_c('el-col',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.canvasLoading),expression:\"canvasLoading\"}],staticClass:\"container-box-right\",attrs:{\"id\":\"canvasBox\",\"span\":21}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showCanvas),expression:\"showCanvas\"}],staticStyle:{\"height\":\"100%\"}},[_c('canvas',{ref:\"graphy\",attrs:{\"height\":_vm.cadHeight,\"width\":_vm.cadWidth,\"id\":\"floorCanvas\"}})]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showCanvas),expression:\"!showCanvas\"}],staticClass:\"no-data\"},[_c('div',{staticClass:\"position-icon\"},[_c('i',{staticClass:\"icon-wushuju iconfont\"}),_vm._v(\" 暂无数据 \")])])])],1)],1),_c('el-popover',{ref:\"popover\",attrs:{\"placement\":\"right\",\"trigger\":\"manual\",\"width\":\"400\"},model:{value:(_vm.visible),callback:function ($$v) {_vm.visible=$$v},expression:\"visible\"}},[_c('div',{staticStyle:{\"text-align\":\"right\",\"margin-bottom\":\"10px\"}},[_c('span',{staticStyle:{\"float\":\"left\"}},[_vm._v(\"设定Z轴高度\")]),_c('el-link',{attrs:{\"icon\":\"el-icon-close\",\"underline\":false},on:{\"click\":function($event){_vm.visible = false}}})],1),_c('el-row',[_c('p',[_vm._v(\"距地面高度:\"+_vm._s(_vm.equipZ)+\"mm\")])]),_c('div',{staticClass:\"elSlider\"},[_c('el-slider',{attrs:{\"min\":_vm.minHeight,\"max\":_vm.maxHeight,\"step\":1,\"marks\":_vm.marks},model:{value:(_vm.equipZ),callback:function ($$v) {_vm.equipZ=$$v},expression:\"equipZ\"}})],1),_c('el-row',{staticStyle:{\"text-align\":\"right\"}},[_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){_vm.visible = false}}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"mini\"},on:{\"click\":_vm.handleUpdateZ}},[_vm._v(\"确认\")])],1)],1),_c('span',{directives:[{name:\"popover\",rawName:\"v-popover:popover\",arg:\"popover\"}],staticClass:\"popStyle\",style:(_vm.popoverPosition)})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n \t<div id=\"manageTenantZone\">\r\n\t\t<el-row style=\"margin:5px 0 0 0;\">\r\n\t\t\t<el-button style=\"float:left;\" size=\"small\" type=\"default\" icon=\"el-icon-back\" @click=\"goback\"></el-button>\r\n\t\t\t<div id=\"buildFloor\">\r\n <span class=\"buildFloor\">建筑楼层</span>\r\n <el-cascader ref=\"floorCascader\" placeholder=\"请选择\" :props=\"props\" v-model=\"floorValue\" :options=\"bfOptions\" filterable size=\"small\" @change=\"changeFloor\"></el-cascader>\r\n </div>\r\n\t\t\t<my-cascader ref=\"cascader\" @change=\"changeDevice\"></my-cascader>\r\n\t\t\t<el-button type=\"primary\" size=\"mini\" @click=\"handleClickSave\" :disabled=\"!isChange\" style=\"float:right;\">确认</el-button>\r\n\t\t\t<el-button size=\"mini\" style=\"float:right;margin-right:10px;\" @click=\"cancel\">取消</el-button>\r\n\t\t</el-row>\r\n\t\t<el-row class=\"main-container\">\r\n\t\t\t<el-row class=\"main-container-header\">\r\n\t\t\t\t<el-select v-model=\"isPoint\" @change=\"handleChangeIspoint\" placeholder=\"请选择\" style=\"width: 100px;margin-left: 10px;\">\r\n\t\t\t\t\t<el-option v-for=\"item in isPointOptions\" :key=\"item.value\" :label=\"item.label\" :value=\"item.value\"></el-option>\r\n\t\t\t\t</el-select>\r\n\t\t\t\t<el-input\r\n\t\t\t\t\tstyle=\"width:250px;margin-left: 10px;\"\r\n\t\t\t\t\tplaceholder=\"请输入设备标识关键字\"\r\n\t\t\t\t\tclearable\r\n\t\t\t\t\tsuffix-icon=\"el-icon-search\"\r\n\t\t\t\t\t@change=\"handleChangeKeyword\"\r\n\t\t\t\t\tv-model=\"keyword\"\r\n\t\t\t\t></el-input>\r\n\t\t\t</el-row>\r\n\t\t\t<el-row class=\"main-container-box\">\r\n\t\t\t\t<el-col :span=\"3\" class=\"container-box-left\">\r\n\t\t\t\t\t<el-select v-model=\"showName\" placeholder=\"请选择\" style=\"width: 100%;\">\r\n\t\t\t\t\t\t<el-option v-for=\"item in showNameOptions\" :key=\"item.value\" :label=\"item.label\" :value=\"item.value\"></el-option>\r\n\t\t\t\t\t</el-select>\r\n\t\t\t\t\t<div class=\"equip-list\">\r\n\t\t\t\t\t\t<el-scrollbar style=\"height:100%;\" v-show=\"equipList.length\">\r\n\t\t\t\t\t\t\t<ul v-infinite-scroll=\"getEquipData\" infinite-scroll-disabled=\"disabled\">\r\n\t\t\t\t\t\t\t\t<li class=\"equip-item\"\r\n v-for=\"item in equipList\"\r\n :class=\"{'equip-item-selected': item.selected}\"\r\n :key=\"item.id\"\r\n :title=\"item[showName]\"\r\n @click=\"handleSelectIcon(item)\"\r\n >\r\n\t\t\t\t\t\t\t\t\t<p class=\"equip-item-text\">{{item[showName] || '--'}}</p>\r\n\t\t\t\t\t\t\t\t\t<i v-if=\"item.hasLocation\" class=\"iconfont icon-hook equip-item-icon\" style=\"color: #67C23A;font-size: 14px;\"></i>\r\n\t\t\t\t\t\t\t\t\t<i v-else class=\"iconfont icon-cross equip-item-icon\" style=\"color: #ccc;font-size: 14px;\"></i>\r\n\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t<p style=\"text-align: center;\" v-if=\"loading\">加载中...</p>\r\n\t\t\t\t\t\t\t\t<p style=\"text-align: center;\" v-if=\"noMore\">没有更多了</p>\r\n\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t</el-scrollbar>\r\n\t\t\t\t\t\t<div v-show=\"!equipList.length\" class=\"no-data\">\r\n\t\t\t\t\t\t\t<div class=\"position-icon\">\r\n\t\t\t\t\t\t\t\t<i class=\"icon-wushuju iconfont\"></i>\r\n\t\t\t\t\t\t\t\t暂无数据\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</el-col>\r\n\t\t\t\t<el-col id=\"canvasBox\" class=\"container-box-right\" :span=\"21\" v-loading=\"canvasLoading\">\r\n\t\t\t\t\t<div v-show=\"showCanvas\" style=\"height: 100%;\">\r\n\t\t\t\t\t\t<canvas :height=\"cadHeight\" :width=\"cadWidth\" id=\"floorCanvas\" ref=\"graphy\"></canvas>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"no-data\" v-show=\"!showCanvas\">\r\n\t\t\t\t\t\t<div class=\"position-icon\">\r\n\t\t\t\t\t\t\t<i class=\"icon-wushuju iconfont\"></i>\r\n\t\t\t\t\t\t\t暂无数据\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</el-col>\r\n\t\t\t</el-row>\r\n\t\t</el-row>\r\n <el-popover ref='popover' placement='right' trigger='manual' v-model='visible' width='400'>\r\n <div style=\"text-align: right;margin-bottom: 10px;\">\r\n <span style=\"float: left;\">设定Z轴高度</span>\r\n <el-link icon=\"el-icon-close\" :underline=\"false\" @click=\"visible = false\"></el-link>\r\n </div>\r\n <el-row>\r\n <p>距地面高度:{{equipZ}}mm</p>\r\n </el-row>\r\n <div class=\"elSlider\">\r\n <el-slider v-model=\"equipZ\" :min=\"minHeight\" :max=\"maxHeight\" :step=\"1\" :marks=\"marks\"></el-slider>\r\n </div>\r\n <el-row style=\"text-align: right;\">\r\n <el-button size=\"mini\" @click=\"visible = false\">取消</el-button>\r\n <el-button type=\"primary\" size=\"mini\" @click=\"handleUpdateZ\">确认</el-button>\r\n </el-row>\r\n </el-popover>\r\n <span class='popStyle' :style='popoverPosition' v-popover:popover></span>\r\n \t</div>\r\n</template>\r\n<script>\r\nimport floorCascader from \"@/components/old-adm/ledger/components/lib/floorCascader\";\r\nimport myCascader from \"@/components/old-adm/ledger/components/lib/cascader\";\r\nimport EquipController from \"@/controller/old-adm/equipController\";\r\nimport { LocationPointScene, FloorView, Opt } from \"@saga-web/cad-engine/lib\";\r\nimport { SPoint, SColor } from \"@saga-web/draw\";\r\nimport { mapGetters } from \"vuex\";\r\nimport ScanController from \"@/controller/old-adm/ScanController\";\r\nimport BuildController from \"@/controller/old-adm/buildController\";\r\nexport default {\r\n components: {\r\n floorCascader,\r\n myCascader\r\n },\r\n data() {\r\n return {\r\n visible: false,\r\n equipZ: 0,\r\n maxHeight: 99000,\r\n minHeight: -99000,\r\n popoverPosition: {\r\n top: 0,\r\n left: 0,\r\n },\r\n selectedIcon: null,\r\n floorValue: \"\",\r\n oldFloorValue: \"\",\r\n\t\tbuildId: \"\", //建筑Id\r\n\t\tfloorId: \"\", //楼层Id\r\n\t\tfloorMap: \"\", //楼层平面图地址\r\n\t\tfloorOutline: null, //楼层平面图蒙版地址\r\n\t\tclassCode: \"\", //设备类别\r\n\t\tisPoint: \"all\", //是否有坐标(全部-all、有坐标-yes、无坐标-no)\r\n\t\tkeyword: \"\", //设备标识关键字\r\n\t\tshowName: \"localName\", //显示名称\r\n\t\tisIndeterminate: false, //全选样式显示\r\n\t\tcheckAll: false, //是否全选\r\n\t\tcheckedEquip: [], //选中的设备\r\n\t\tcadWidth: 800,\r\n\t\tcadHeight: 800,\r\n\t\tview: \"\",\r\n \tscene: null,\r\n\t\tshowCanvas: false, //是否有底图数据\r\n\t\tcanvasLoading: false,\r\n\t\tisPointOptions: [{\r\n value: \"all\",\r\n label: \"全部\"\r\n }, {\r\n value: \"yes\",\r\n label: \"有坐标\"\r\n }, {\r\n value: \"no\",\r\n label: \"无坐标\"\r\n\t\t}],\r\n\t\tshowNameOptions: [{\r\n value: \"localName\",\r\n label: \"显示设备本地名称\"\r\n }, {\r\n value: \"localId\",\r\n label: \"显示设备本地编码\"\r\n }, {\r\n value: \"cADID\",\r\n label: \"显示图纸编码\"\r\n\t\t}],\r\n equipList: [],\r\n marks: {\r\n 0: '本层地面',\r\n 99000: '本层屋顶'\r\n },\r\n\t\tloading: false,\r\n\t\tpageNumber: 1,\r\n\t\tpageSize: 50,\r\n total: 0,\r\n isChange: false, //平面图设备是否更改\r\n isMarking: false, // 标记是否选中的是无坐标的设备,true-打点,打完以后重置为false\r\n props: {\r\n value: 'id',\r\n label: 'localName',\r\n children: 'floor'\r\n }, // 建筑楼层字段绑定\r\n bfOptions: [], // 建筑楼层下拉\r\n fIdToFloor: {}, // 楼层id映射楼层对象\r\n\t};\r\n },\r\n computed: {\r\n\t...mapGetters(\"layout\", [\"projectId\", \"projects\"]),\r\n\tnoMore () {\r\n\t\treturn this.equipList.length >= this.total\r\n\t},\r\n\tdisabled () {\r\n\t\treturn this.loading || this.noMore\r\n\t}\r\n },\r\n created() {\r\n this.getCascader()\r\n },\r\n mounted() {\r\n this.cadWidth = document.getElementById('canvasBox').offsetWidth;\r\n this.cadHeight = document.getElementById('canvasBox').offsetHeight;\r\n // 添加监听点击事件,处理popover显隐\r\n window.addEventListener('click', this.handlePopover, false)\r\n this.$once('hook:beforeDestroy', () => {\r\n window.removeEventListener('click', this.handlePopover)\r\n })\r\n },\r\n methods: {\r\n // 返回\r\n goback() {\r\n this.confirm(() => {\r\n this.$router.push({ name: \"facilityLedger\" });\r\n })\r\n },\r\n getCascader() {\r\n let param = {\r\n cascade: [\r\n { name: \"floor\", orders: \"floorSequenceID desc\" }\r\n ],\r\n orders: \"localName asc\",\r\n pageNumber: 1,\r\n pageSize: 50\r\n }\r\n BuildController.buildingQuery(param).then(res => {\r\n this.fIdToFloor = {}\r\n this.bfOptions = res.content.map(t => {\r\n if (t.floor && t.floor.length) {\r\n t.floor = t.floor.map(item => {\r\n this.fIdToFloor[item.id] = item;\r\n return item\r\n }).filter(it => it)\r\n }\r\n return t\r\n })\r\n })\r\n },\r\n // 二次确认\r\n confirm(callback, cancel) {\r\n if (this.isChange) {\r\n this.$confirm('平面图数据未保存,此操作将不会保存修改数据!', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n callback();\r\n }). catch(() => {\r\n cancel();\r\n });\r\n } else {\r\n callback();\r\n }\r\n },\r\n // 点击列表设备\r\n handleSelectIcon(equip) {\r\n // 保存当前选中设备数据\r\n this.equipData = equip;\r\n // 选中样式处理\r\n this.equipList.forEach(item => {\r\n if (equip.id === item.id) {\r\n item.selected = true;\r\n } else {\r\n item.selected = false;\r\n }\r\n })\r\n // 有坐标 执行选中\r\n if (equip.hasLocation) {\r\n // 清除打点动作\r\n this.isMarking = false;\r\n // 关联平面图设备选中\r\n if (this.scene) {\r\n this.scene.iconList.forEach(item => {\r\n if (item.data.id === equip.id) {\r\n this.scene.selectContainer.setItem(item);\r\n }\r\n })\r\n }\r\n } else {\r\n // 无坐标 执行打点\r\n this.isMarking = true;\r\n }\r\n },\r\n handleClickIcon(item, events) {\r\n const e = events[0];\r\n this.selectedIcon = item;\r\n if (item.data.Z) {\r\n this.equipZ = (item.data.Z);\r\n } else {\r\n this.equipZ = 0;\r\n }\r\n this.visible = false\r\n this.$nextTick(() =>{\r\n this.popoverPosition.top = `${e.clientY}px`;\r\n this.popoverPosition.left = `${e.clientX}px`;\r\n this.visible = true;\r\n })\r\n },\r\n // 修改设备Z坐标\r\n handleUpdateZ() {\r\n if (this.selectedIcon.data.Z !== this.equipZ) {\r\n this.selectedIcon.data.Z = this.equipZ;\r\n this.isChange = true;\r\n this.visible = false;\r\n try {\r\n const str = this.selectedIcon.textItemList[0].text.split('\\n');\r\n str[2] = this.equipZ\r\n this.selectedIcon.textItemList[0].text = str.join('\\n');\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n },\r\n listChange(item, ev) {\r\n if (!ev[0].length) {\r\n this.visible = false;\r\n this.selectedIcon = null;\r\n }\r\n },\r\n /**\r\n * @description 处理popover显隐\r\n * 当点击位置不在canvas内部时 ( 如点击 页面空白,图例,楼层,设备设施左侧列表项时),将visible置为false,隐藏popover\r\n */\r\n handlePopover(e) {\r\n this.$nextTick(() => {\r\n if (!this.$refs.graphy.contains(e.target)) {\r\n this.visible = false\r\n }\r\n })\r\n },\r\n\t//获取所以主体数据---用于维护信息\r\n\tgetEquipData() {\r\n\t\tif (this.classCode && this.floorId && (this.floorId != \"noKnow\" || this.floorId != \"all\")) {\r\n\t\t\tthis.loading = true;\r\n\t\t\tlet params = {\r\n\t\t\t\tfilters: `classCode='${this.classCode}'`,\r\n\t\t\t\tpageSize: this.pageSize,\r\n\t\t\t\torders: 'createTime desc, id desc',\r\n\t\t\t\tpageNumber: this.pageNumber\r\n\t\t\t}\r\n\t\t\tif (this.buildId == 'noKnow') {\r\n\t\t\t\tparams.filters += `;buildingId isNull`\r\n\t\t\t} else if (this.buildId && this.buildId != 'all') {\r\n\t\t\t\tparams.filters += `;buildingId='${this.buildId}'`\r\n\t\t\t}\r\n\r\n\t\t\tif (this.floorId == 'noKnow') {\r\n\t\t\t\tparams.filters += `;floorId isNull`\r\n\t\t\t} else if (this.floorId && this.floorId != 'all') {\r\n\t\t\t\tparams.filters += `;floorId='${this.floorId}'`\r\n\t\t\t}\r\n\r\n\t\t\tif (this.isPoint == \"yes\") {\r\n\t\t\t\tparams.filters += `;not bimLocation isNull`\r\n\t\t\t} else if (this.isPoint == \"no\") {\r\n\t\t\t\tparams.filters += `;bimLocation isNull`\r\n\t\t\t}\r\n\r\n\t\t\tif (this.keyword) {\r\n\t\t\t\tparams.filters += `;localName contain'${this.keyword}' or localId contain '${this.keyword}' or cADID contain '${this.keyword}'`\r\n\t\t\t}\r\n\r\n\t this.canvasLoading = true;\r\n\t\t\tEquipController.queryEquip(params).then((res) => {\r\n this.equipList = [];\r\n\t\t\t\tthis.equipList = this.equipList.concat(res.content.map(item => {item.selected = false; item.hasLocation = !!item.bimLocation; return item;}));\r\n\t\t\t\tif (this.view && this.view.scene) {\r\n\t\t\t\t\tres.content.forEach(item =>{\r\n\t\t\t\t\t\tif (item.locationJson && item.locationJson.x && item.locationJson.y) {\r\n this.scene.addIconText({\r\n id: item.id,\r\n X: item.locationJson.x, \r\n Y: -item.locationJson.y, \r\n Z: item.locationJson.z,\r\n text: [`${item.localName || '--'}\\n${item.localId || '--'}\\n${item.locationJson.z || '--'}`]\r\n });\r\n\t\t\t\t\t\t}\r\n });\r\n this.scene.iconMove(this, this.iconMove);\r\n this.scene.spaceClick(this, this.spaceClick);\r\n this.scene.iconChangeText(this, this.handleClickIcon);\r\n\t\t\t\t\tthis.view.update();\r\n this.canvasLoading = false;\r\n this.isChange = false;\r\n\t\t\t\t}\r\n\t\t\t\tthis.total = res.total;\r\n\t\t\t\tif (!this.noMore) { //判断是否有更多数据\r\n\t\t\t\t\tthis.pageNumber++;\r\n\t\t\t\t}\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t})\r\n\t\t}\r\n },\r\n //设备移动回调\r\n iconMove(item) {\r\n this.isChange = true;\r\n },\r\n // 打点\r\n spaceClick(item, e) {\r\n if (this.isMarking) {\r\n const p = item.mapToScene(e[0].x, e[0].y)\r\n this.scene.addIconText({\r\n id: this.equipData.id,\r\n X: p.x, \r\n Y: p.y, \r\n Z: 0,\r\n text: [`${this.equipData.localName || '--'}\\n${this.equipData.localId || '--'}\\n0`]\r\n });\r\n // 保存按钮\r\n this.isChange = true;\r\n // 设置有坐标标识\r\n this.equipData.hasLocation = true;\r\n // 绑定事件\r\n this.scene.iconChangeText(this, this.handleClickIcon)\r\n // 重置打点动作\r\n this.isMarking = false;\r\n }\r\n // 取消选中状态\r\n this.scene && this.scene.selectContainer.clear()\r\n },\r\n\t//初始化条件并查询设备\r\n\tinitParams() {\r\n\t\tthis.pageNumber = 1;\r\n\t\tthis.total = 0;\r\n\t\tthis.equipList = [];\r\n this.clearIcon();\r\n if (this.view) {\r\n this.view.update();\r\n }\r\n\t\tthis.getEquipData();\r\n\t},\r\n //修改楼层\r\n changeFloor(value) {\r\n this.confirm(() => { \r\n this.oldFloorValue = value;\r\n this.isChange = false;\r\n this.showCanvas = false;\r\n this.clearGraphy();\r\n if (value[0]) {\r\n this.buildId = value[0];\r\n }\r\n if (value[1]) {\r\n this.floorId = value[1];\r\n this.floorData = this.fIdToFloor[value[1]];\r\n } else {\r\n this.floorId = \"\";\r\n this.floorData = {}\r\n }\r\n if (this.floorData.infos && this.floorData.infos.floorMap) {\r\n this.floorMap = this.floorData.infos.floorMap;\r\n this.showCanvas = true;\r\n this.getGraphy();\r\n } else {\r\n this.initParams();\r\n this.floorMap = \"\";\r\n }\r\n if (this.floorData.infos && this.floorData.infos.height) {\r\n this.maxHeight = this.floorData.infos.height;\r\n this.minHeight = -(this.floorData.infos.height);\r\n } else {\r\n this.maxHeight = 99000;\r\n this.minHeight = -99000;\r\n }\r\n if (this.floorData.outline && this.floorData.outline.length) {\r\n this.floorOutline = this.floorData.outline;\r\n } else {\r\n this.floorOutline = null;\r\n }\r\n }, () => {\r\n this.floorValue = this.oldFloorValue;\r\n })\r\n\t},\r\n //修改设备族\r\n changeDevice(value) {\r\n\t\tif (value.code) {\r\n\t\t\tthis.classCode = value.code;\r\n\t\t} else {\r\n\t\t\tthis.classCode = \"\";\r\n\t\t}\r\n\t\tthis.initParams();\r\n\t},\r\n\t//切换是否有坐标\r\n\thandleChangeIspoint() {\r\n\t\tthis.initParams();\r\n\t},\r\n\t//检索关键字\r\n\thandleChangeKeyword() {\r\n\t\tthis.initParams();\r\n },\r\n // 保存数据\r\n handleClickSave() {\r\n if (this.scene && this.scene.iconList.length && this.isChange) {\r\n this.isChange = false\r\n let param = {content: []}\r\n this.scene.iconList.map((item) => {\r\n if (item.data.id) {\r\n param.content.push({\r\n id: item.data.id,\r\n bimLocation: `${item.x},${-item.y},${item.data.Z}`\r\n })\r\n }\r\n })\r\n ScanController.updateEquip(param).then(() => {\r\n this.$message({message: '保存成功!', type: 'success'});\r\n })\r\n }\r\n },\r\n\t// 获取底图\r\n getGraphy() {\r\n this.scene = new LocationPointScene();\r\n this.scene.selectContainer.connect('listChange', this, this.listChange)\r\n this.canvasLoading = true;\r\n const temp = this.floorMap.split('.')[1];\r\n if (temp && temp.toString().toLowerCase() == 'png' || temp.toString().toLowerCase() == 'jpg') {\r\n let x = 0;\r\n let y = 0;\r\n let scale = 1;\r\n if (this.floorData && this.floorData.infos && this.floorData.infos.floorMapRatio && this.floorData.infos.floorMapShift) {\r\n const point = JSON.parse(this.floorData.infos.floorMapShift);\r\n x = point.x;\r\n y = point.y;\r\n scale = this.floorData.infos.floorMapRatio;\r\n }\r\n this.scene.loadImg(`/image-service/common/image_get?systemId=dataPlatform&key=${this.floorMap}`, res => {\r\n this.getGraphtSuc(res)\r\n }, x, y, scale)\r\n } else {\r\n this.scene.loadUrl(`/image-service/common/file_get?systemId=revit&key=${this.floorMap}`).then(res => {\r\n this.getGraphtSuc(res)\r\n })\r\n }\r\n\t},\r\n\tgetGraphtSuc(res) {\r\n\t this.initParams();\r\n this.canvasLoading = false;\r\n if (res == 'error') {\r\n this.FloorMap = '';\r\n console.log('数据解析异常');\r\n return;\r\n }\r\n this.view.scene = this.scene;\r\n // 蒙版\r\n if (this.floorOutline) {\r\n Opt.sceneMarkColor = new SColor('#ffffff');\r\n let newArr = this.floorOutline.map(t => {\r\n return new SPoint(t.X, t.Y);\r\n })\r\n this.scene.addSceneMark(newArr)\r\n }\r\n\t this.scene.isSpaceSelectable = false;\r\n\t this.view.fitSceneToView();\r\n // this.view.minScale = this.view.scale;\r\n // if (this.$refs.canvasFun) {\r\n // this.$refs.canvasFun.everyScale = this.view.scale;\r\n\t// }\r\n },\r\n\t//清空平面图\r\n clearGraphy() {\r\n if (this.view) {\r\n this.view.scene = null;\r\n return\r\n\t }\r\n this.view = new FloorView(\"floorCanvas\");\r\n\t},\r\n\t//清空标记\r\n\tclearIcon() {\r\n if (this.scene)\r\n this.scene.clearIcon();\r\n },\r\n // 取消操作\r\n cancel() {\r\n this.initParams();\r\n }\r\n },\r\n watch: {\r\n projectId() {\r\n this.$router.push({ name: \"facilityLedger\" });\r\n }\r\n }\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n@normal-border-color: #e4e4e4;\r\n@normal-border-active-color: #e8e8e8;\r\n#manageTenantZone {\r\n position: relative;\r\n height: 100%;\r\n #buildFloor{\r\n margin-left: 10px;\r\n float: left;\r\n .buildFloor {\r\n color: #999999;\r\n font-size: 14px;\r\n margin-right: 12px;\r\n }\r\n }\r\n .main-container {\r\n margin-top: 10px;\r\n background: #fff;\r\n border: 1px solid @normal-border-color;\r\n height: calc(100% - 53px);\r\n\toverflow: hidden;\r\n\t.main-container-header {\r\n\t\tpadding: 10px 0;\r\n\t\tborder-bottom: 1px solid @normal-border-color;\r\n\t}\r\n\t.main-container-box {\r\n\t\theight: calc(100% - 53px);\r\n\t\t.container-box-left {\r\n\t\t\theight: 100%;\r\n\t\t\tborder-right: 1px solid @normal-border-color;\r\n\t\t\t/deep/ .el-input__inner {\r\n\t\t\t\tborder: none;\r\n\t\t\t\tborder-bottom: 1px solid #DCDFE6;\r\n\t\t\t\tborder-radius: 0;\r\n\t\t\t}\r\n\t\t\t.equip-list {\r\n\t\t\t\theight: calc(100% - 32px);\r\n\t\t\t\t/deep/ .el-scrollbar__wrap {\r\n\t\t\t\t\toverflow-x: hidden;\r\n\t\t\t\t}\r\n\t\t\t\t.equip-item {\r\n\t\t\t\t\tpadding-left: 15px;\r\n\t\t\t\t\tpadding-right: 10px;\r\n\t\t\t\t\twidth: 100%;\r\n\t\t\t\t\theight: 32px;\r\n\t\t\t\t\tline-height: 32px;\r\n\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\tcursor: pointer;\r\n\t\t\t\t\t.equip-item-text {\r\n\t\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\t\twidth: calc(100% - 20px);\r\n\t\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t.equip-item-icon {\r\n\t\t\t\t\t\tfloat: right;\r\n\t\t\t\t\t}\r\n }\r\n .equip-item-selected {\r\n background-color: #f5f7fa;\r\n }\r\n\t\t\t\t.equip-item:hover {\r\n\t\t\t\t\tbackground-color: #f5f7fa;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t.container-box-right {\r\n\t\t\theight: 100%;\r\n\t\t}\r\n\t}\r\n }\r\n .popStyle {\r\n position: fixed;\r\n }\r\n}\r\n.elSlider{\r\n padding: 10px 24px;\r\n margin-bottom:15px;\r\n /deep/ .el-slider__marks-text:nth-child(2) {\r\n width: 80px;\r\n }\r\n}\r\n.no-data {\r\n\theight: 100%;\r\n\ttext-align: center;\r\n\tbox-sizing: border-box;\r\n\tposition: relative;\r\n\t.position-icon {\r\n\t\tposition: absolute;\r\n\t\ttop: 50%;\r\n\t\tleft: 50%;\r\n\t\ttransform: translate(-50%, -50%);\r\n\t}\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./batchPoint.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./batchPoint.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./batchPoint.vue?vue&type=template&id=d744e7a6&scoped=true&\"\nimport script from \"./batchPoint.vue?vue&type=script&lang=js&\"\nexport * from \"./batchPoint.vue?vue&type=script&lang=js&\"\nimport style0 from \"./batchPoint.vue?vue&type=style&index=0&id=d744e7a6&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d744e7a6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"bd-fl-manage\"}},[_c('el-row',[_c('div',{staticClass:\"l-list\"},[_c('div',{staticClass:\"action-box\"},[_c('div',[_c('el-button',{attrs:{\"icon\":\"el-icon-plus\",\"size\":\"small\",\"type\":\"default\"},on:{\"click\":_vm.addBuild}}),_c('el-button',{attrs:{\"icon\":\"el-icon-minus\",\"size\":\"small\",\"type\":\"default\",\"disabled\":!_vm.buildList.length},on:{\"click\":_vm.delBuild}}),_c('el-button',{attrs:{\"icon\":\"el-icon-edit-outline\",\"size\":\"small\",\"type\":\"default\",\"disabled\":!_vm.buildList.length},on:{\"click\":_vm.editBuild}})],1)]),_c('h4',[_vm._v(\"建筑\")]),_c('div',{staticClass:\"build-list\"},_vm._l((_vm.buildList),function(item,index){return _c('div',{key:item.id,class:{ 'floor-item': true, active: item.active },staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.changeBuild(index)}}},[_c('span',[_vm._v(\" \"+_vm._s(item.localName || item.name)+\" \"),(item.count > 0)?_c('el-badge',{staticClass:\"mark\",attrs:{\"value\":item.count}}):_vm._e()],1)])}),0)]),(_vm.buildList.length > 0)?_c('div',{staticClass:\"r-table\"},[_c('div',{staticClass:\"action-box\"},[_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"default\"},on:{\"click\":_vm.addFloor}},[_vm._v(\"添加楼层 \")])],1),_c('div',{staticClass:\"table-box\"},[_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.tableData,\"header-cell-style\":_vm.headerStyle,\"height\":\"100%\"}},[_c('el-table-column',{attrs:{\"label\":\"楼层本地名\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(scope.row.localName))]}}],null,false,1893948503)}),_c('el-table-column',{attrs:{\"label\":\"楼层顺序号\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(scope.row.floorSequenceID))]}}],null,false,3267156151)}),_c('el-table-column',{attrs:{\"label\":\"楼层信息\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"icon\":\"el-icon-edit-outline\",\"plain\":\"\",\"size\":\"mini\"},on:{\"click\":function($event){return _vm.editFloorData(scope.row)}}})]}}],null,false,4074602054)}),_c('el-table-column',{attrs:{\"label\":\"平面图\",\"prop\":\"dataSource\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.sign > 0)?_c('p',{on:{\"click\":function($event){return _vm.checkDrawImg(scope.row, 2)}}},[_c('el-badge',{attrs:{\"is-dot\":\"\"}},[_c('i',{staticClass:\"iconfont icon-floorplan\"})]),_vm._v(\" 平面图重复 \")],1):(scope.row.infos ? scope.row.infos.floorMap : false)?_c('p',{on:{\"click\":function($event){return _vm.checkDrawImg(scope.row, 1)}}},[_c('i',{staticClass:\"iconfont icon-floorplan\"}),_vm._v(\" 查看平面图 \")]):_c('p',{on:{\"click\":function($event){return _vm.checkDrawImg(scope.row, 3)}}},[_c('i',{staticClass:\"iconfont icon-nopicture\"}),_vm._v(\" 暂无平面图 \")])]}}],null,false,286248779)}),_c('el-table-column',{attrs:{\"label\":\"楼层贯通关系\",\"prop\":\"SubTypeName\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',{staticStyle:{\"margin-right\":\"20px\"}},[_vm._v(_vm._s(scope.row.floorThroughList ? scope.row.floorThroughList.length : 0))]),_c('el-button',{attrs:{\"icon\":\"el-icon-edit-outline\",\"plain\":\"\",\"size\":\"mini\"},on:{\"click\":function($event){return _vm.changeConnection(scope.row)}}})]}}],null,false,1248956205)}),_c('el-table-column',{attrs:{\"label\":\"操作\",\"prop\":\"action\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"icon\":\"el-icon-delete\",\"plain\":\"\",\"size\":\"mini\",\"type\":\"danger\"},on:{\"click\":function($event){return _vm.handleDelete(scope.row)}}})]}}],null,false,1247337244)})],1)],1)]):_c('div',{staticClass:\"r-table\"},[_c('div',{staticClass:\"center\",staticStyle:{\"margin-top\":\"300px\"}},[_c('i',{staticClass:\"icon-wushuju iconfont\"}),_vm._v(\" 请先在左侧创建建筑\")])])]),_c('addFloor',{ref:\"addFloorDialog\",attrs:{\"curBuildId\":_vm.curBuildId,\"curFloorId\":_vm.curFloorId,\"title\":_vm.floorTitle},on:{\"refresh\":_vm.refresh}}),_c('addBuild',{ref:\"addBuildDialog\",attrs:{\"buildTitle\":_vm.buildTitle,\"buildMessage\":_vm.buildMessage},on:{\"handleBuild\":_vm.handleBuild}}),_c('el-dialog',{attrs:{\"visible\":_vm.delDialogVis,\"id\":\"messageDialog\",\"title\":\"提示\",\"width\":\"20%\"},on:{\"update:visible\":function($event){_vm.delDialogVis=$event},\"close\":_vm.handleClose}},[_c('div',[_vm._v(\"确定要删除该\"+_vm._s(_vm.delText)+\"?\")]),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{attrs:{\"size\":\"small\"},on:{\"click\":function($event){_vm.delDialogVis = false}}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"primary\"},on:{\"click\":_vm.confirmDel}},[_vm._v(\"确认\")])],1)]),_c('addConnectivity',{ref:\"addConnectivity\",on:{\"refresh\":_vm.refresh}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"title\":_vm.title,\"visible\":_vm.dialogVisible,\"width\":\"850px\",\"id\":\"messageDialog\"},on:{\"update:visible\":function($event){_vm.dialogVisible=$event},\"close\":_vm.handleClose}},[_c('el-row',[_c('formItems',{ref:\"formItems\",attrs:{\"type\":'floor'}})],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{attrs:{\"size\":\"small\"},on:{\"click\":function($event){_vm.dialogVisible=false}}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"primary\"},on:{\"click\":_vm.confirm}},[_vm._v(\"确认\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"inforsPoint\"}},[_c('el-form',{ref:\"ruleForm\",attrs:{\"model\":_vm.form,\"label-width\":\"150px\",\"rules\":_vm.rules,\"inline\":true,\"label-position\":'right'}},_vm._l((_vm.InforsList),function(item){return _c('div',{key:item.id,staticStyle:{\"width\":\"50%\",\"display\":\"inline-block\"}},[(_vm.all || item.visible)?_c('el-form-item',{class:{ FloorTypeSelect: item.dataType == 'ENUM' || item.unit },attrs:{\"label\":item.name,\"prop\":item.code}},[(\n item.infoPointCode == 'bimLocation' ||\n item.infoPointCode == 'modelId'\n )?_c('el-input',{attrs:{\"disabled\":\"\"},model:{value:(_vm.form[item.path]),callback:function ($$v) {_vm.$set(_vm.form, item.path, (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"form[item.path]\"}}):(item.infoPointCode == 'DefaultQRCode')?_c('span',[(!_vm.form[item.path])?_c('el-input',{attrs:{\"disabled\":\"\"},model:{value:(_vm.form[item.path]),callback:function ($$v) {_vm.$set(_vm.form, item.path, (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"form[item.path]\"}}):_c('el-popover',{attrs:{\"placement\":\"right\",\"width\":\"210\",\"trigger\":\"click\"}},[_c('div',{staticStyle:{\"overflow\":\"hidden\"}},[_c('img',{staticStyle:{\"width\":\"200px\",\"height\":\"200px\"},attrs:{\"src\":'/image-service/common/file_get/' +\n _vm.form[item.path] +\n '?systemId=dataPlatform',\"alt\":\"二维码\"}})]),_c('el-button',{attrs:{\"slot\":\"reference\",\"type\":\"text\"},slot:\"reference\"},[_vm._v(\"点击查看\")])],1)],1):(item.infoPointCode == 'QRCodePic')?_c('span',[(!_vm.form[item.path])?_c('el-input',{attrs:{\"disabled\":\"\"},model:{value:(_vm.form[item.path]),callback:function ($$v) {_vm.$set(_vm.form, item.path, (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"form[item.path]\"}}):_c('el-popover',{attrs:{\"placement\":\"right\",\"width\":\"210\",\"trigger\":\"click\"}},[_c('div',{staticStyle:{\"overflow\":\"hidden\"}},[_c('img',{staticStyle:{\"width\":\"200px\",\"height\":\"200px\"},attrs:{\"src\":'/image-service/common/file_get/' +\n _vm.form[item.path] +\n '?systemId=dataPlatform',\"alt\":\"二维码\"}})]),_c('el-button',{attrs:{\"slot\":\"reference\",\"type\":\"text\"},slot:\"reference\"},[_vm._v(\"点击查看\")])],1)],1):(item.dataType == 'STRING')?_c('span',[_c('el-input',{attrs:{\"disabled\":!item.editable,\"placeholder\":item.dataType == 'STRING' && item.path === 'localId'\n ? '填写示例:F1、B1?'\n : ''},model:{value:(_vm.form[item.path]),callback:function ($$v) {_vm.$set(_vm.form, item.path, (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"form[item.path]\"}}),(\n item.dataType == 'STRING' &&\n item.path === 'localId' &&\n _vm.isShowTitle\n )?_c('div',{staticStyle:{\"color\":\"gray\",\"font-size\":\"12px\"}},[_vm._v(\" 用于楼层平面图切换 \")]):_vm._e()],1):(item.dataType == 'INTEGER' || item.dataType == 'DOUBLE')?_c('el-input-number',{staticStyle:{\"text-align\":\"right\"},attrs:{\"controls\":false},model:{value:(_vm.form[item.path]),callback:function ($$v) {_vm.$set(_vm.form, item.path, (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"form[item.path]\"}},[(item.unit)?_c('template',{slot:\"append\"},[_vm._v(_vm._s(item.unit))]):_vm._e()],2):(item.dataType == 'ENUM')?_c('el-select',{attrs:{\"placeholder\":\"请选择\"},model:{value:(_vm.form[item.path]),callback:function ($$v) {_vm.$set(_vm.form, item.path, $$v)},expression:\"form[item.path]\"}},_vm._l((item.options),function(op,index){return _c('el-option',{key:index,attrs:{\"label\":op.name,\"value\":op.code}})}),1):_c('el-input',{attrs:{\"disabled\":!item.editable,\"placeholder\":item.dataType ? '' : '字典无输入类型'},model:{value:(_vm.form[item.path]),callback:function ($$v) {_vm.$set(_vm.form, item.path, (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"form[item.path]\"}})],1):_vm._e()],1)}),0)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div id=\"inforsPoint\">\r\n <el-form\r\n ref=\"ruleForm\"\r\n :model=\"form\"\r\n label-width=\"150px\"\r\n :rules=\"rules\"\r\n :inline=\"true\"\r\n :label-position=\"'right'\"\r\n >\r\n <div\r\n v-for=\"item in InforsList\"\r\n :key=\"item.id\"\r\n style=\"width: 50%; display: inline-block\"\r\n >\r\n <el-form-item\r\n :label=\"item.name\"\r\n :prop=\"item.code\"\r\n v-if=\"all || item.visible\"\r\n :class=\"{ FloorTypeSelect: item.dataType == 'ENUM' || item.unit }\"\r\n >\r\n <el-input\r\n v-model.trim=\"form[item.path]\"\r\n v-if=\"\r\n item.infoPointCode == 'bimLocation' ||\r\n item.infoPointCode == 'modelId'\r\n \"\r\n disabled\r\n />\r\n\r\n <!--二维码相关-->\r\n <span v-else-if=\"item.infoPointCode == 'DefaultQRCode'\">\r\n <el-input\r\n v-if=\"!form[item.path]\"\r\n v-model.trim=\"form[item.path]\"\r\n disabled\r\n />\r\n <el-popover v-else placement=\"right\" width=\"210\" trigger=\"click\">\r\n <div style=\"overflow: hidden\">\r\n <img\r\n style=\"width: 200px; height: 200px\"\r\n :src=\"\r\n '/image-service/common/file_get/' +\r\n form[item.path] +\r\n '?systemId=dataPlatform'\r\n \"\r\n alt=\"二维码\"\r\n />\r\n </div>\r\n <el-button slot=\"reference\" type=\"text\">点击查看</el-button>\r\n </el-popover>\r\n </span>\r\n\r\n <span v-else-if=\"item.infoPointCode == 'QRCodePic'\">\r\n <el-input\r\n v-if=\"!form[item.path]\"\r\n v-model.trim=\"form[item.path]\"\r\n disabled\r\n />\r\n <el-popover v-else placement=\"right\" width=\"210\" trigger=\"click\">\r\n <div style=\"overflow: hidden\">\r\n <img\r\n style=\"width: 200px; height: 200px\"\r\n :src=\"\r\n '/image-service/common/file_get/' +\r\n form[item.path] +\r\n '?systemId=dataPlatform'\r\n \"\r\n alt=\"二维码\"\r\n />\r\n </div>\r\n <el-button slot=\"reference\" type=\"text\">点击查看</el-button>\r\n </el-popover>\r\n </span>\r\n\r\n <!--/二维码相关-->\r\n <span v-else-if=\"item.dataType == 'STRING'\">\r\n <el-input\r\n v-model.trim=\"form[item.path]\"\r\n :disabled=\"!item.editable\"\r\n :placeholder=\"\r\n item.dataType == 'STRING' && item.path === 'localId'\r\n ? '填写示例:F1、B1?'\r\n : ''\r\n \"\r\n />\r\n <div\r\n v-if=\"\r\n item.dataType == 'STRING' &&\r\n item.path === 'localId' &&\r\n isShowTitle\r\n \"\r\n style=\"color: gray; font-size: 12px\"\r\n >\r\n 用于楼层平面图切换\r\n </div>\r\n </span>\r\n\r\n <el-input-number\r\n v-model.trim=\"form[item.path]\"\r\n :controls=\"false\"\r\n style=\"text-align: right;\"\r\n v-else-if=\"item.dataType == 'INTEGER' || item.dataType == 'DOUBLE'\"\r\n >\r\n <template slot=\"append\" v-if=\"item.unit\">{{ item.unit }}</template>\r\n </el-input-number>\r\n\r\n <el-select\r\n v-model=\"form[item.path]\"\r\n placeholder=\"请选择\"\r\n v-else-if=\"item.dataType == 'ENUM'\"\r\n >\r\n <el-option\r\n v-for=\"(op, index) in item.options\"\r\n :key=\"index\"\r\n :label=\"op.name\"\r\n :value=\"op.code\"\r\n ></el-option>\r\n </el-select>\r\n <el-input\r\n v-model.trim=\"form[item.path]\"\r\n v-else\r\n :disabled=\"!item.editable\"\r\n :placeholder=\"item.dataType ? '' : '字典无输入类型'\"\r\n ></el-input>\r\n </el-form-item>\r\n </div>\r\n </el-form>\r\n </div>\r\n</template>\r\n<script>\r\nimport DicController from \"@/controller/old-adm/dicController\";\r\n\r\nexport default {\r\n props: {\r\n type: {\r\n default: \"floor\",\r\n },\r\n },\r\n data() {\r\n let validateId = (rule, value, callback) => {\r\n if (!value) {\r\n this.isShowTitle = false;\r\n return callback(new Error(\"请输入楼层本地编码\"));\r\n } else {\r\n this.isShowTitle = true;\r\n callback();\r\n }\r\n };\r\n return {\r\n form: {},\r\n isShowTitle: true,\r\n InforsList: [],\r\n all: true, // 默认显示全部\r\n rules: {\r\n localId: [{ validator: validateId, trigger: \"blur\", required: true }],\r\n localName: [\r\n { required: true, message: \"请输入楼层本地名称\", trigger: \"blur\" },\r\n ],\r\n floorSequenceID: [\r\n { required: true, message: \"请输入楼层顺序号\", trigger: \"blur\" },\r\n ],\r\n },\r\n };\r\n },\r\n\r\n created() {\r\n this.getInforsPoint();\r\n },\r\n methods: {\r\n getInforsPoint() {\r\n let params = {\r\n type: this.type,\r\n // orders: \"sort asc,infoPointCode asc\",\r\n pageNumber: 1,\r\n pageSize: 1000,\r\n orders: \"sort asc, name desc\",\r\n };\r\n DicController.getDataDictionary(params).then(res => {\r\n let arr = res.content.map(item => {\r\n const category = ['ENUM', 'MENUM', 'BOOLEAN']\r\n if (item.category == 'STATIC' && category.includes(item.dataType) && item.dataSource) {\r\n item.options = item.dataSource\r\n if (item.options[0]) {\r\n item.props = {\r\n value: \"code\",\r\n label: \"name\",\r\n children: \"content\",\r\n checkStrictly: true,\r\n };\r\n }\r\n }\r\n switch (\r\n item.code //过滤掉待删除的\r\n ) {\r\n case \"floorIdentity\":\r\n case \"relatedSchedule\":\r\n case \"outPeopleFlow\":\r\n case \"inPeopleFlow\":\r\n case \"exsitPeopleNum\":\r\n break;\r\n default:\r\n return item;\r\n }\r\n }).filter(_c=>{return !!_c;});\r\n this.InforsList = arr;\r\n console.log('[ arr ] >', arr)\r\n });\r\n },\r\n submitForm(call) {\r\n this.$refs.ruleForm.validate((valid) => {\r\n if (valid) {\r\n call();\r\n } else {\r\n return false;\r\n }\r\n });\r\n },\r\n },\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n#inforsPoint {\r\n .el-form-item {\r\n /deep/ label.el-form-item__label {\r\n font-size: 12px;\r\n }\r\n }\r\n /deep/ .el-input-number .el-input__inner {\r\n text-align: left;\r\n }\r\n\r\n /deep/ .FloorTypeSelect .el-form-item__content {\r\n width: 200px;\r\n }\r\n\r\n /deep/ .el-input--small {\r\n width: 200px;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./formItems.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./formItems.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./formItems.vue?vue&type=template&id=5eefb1ba&scoped=true&\"\nimport script from \"./formItems.vue?vue&type=script&lang=js&\"\nexport * from \"./formItems.vue?vue&type=script&lang=js&\"\nimport style0 from \"./formItems.vue?vue&type=style&index=0&id=5eefb1ba&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5eefb1ba\",\n null\n \n)\n\nexport default component.exports","const tools = {}\r\n\r\n/**\r\n * @param arr [a,b,c]\r\n *\r\n * val value\r\n */\r\nfunction returnNewObj(data, arr, val) {\r\n if (arr.length > 1) {\r\n let k = arr.shift()\r\n if (!data[k]) {\r\n data[k] = {}\r\n }\r\n returnNewObj(data[k], arr, val)\r\n } else {\r\n let curk = arr[0]\r\n data[curk] = val;\r\n }\r\n}\r\n\r\n/**\r\n * @param key a\r\n * @param val {b:{c:''}}|''|1\r\n * @return a.b.c\r\n */\r\nfunction rKeyStrVal(key, val) {\r\n let nk = key, arr = []\r\n if (val instanceof Object && !(val instanceof Array)) {\r\n // for(let k in )\r\n return nk + '.' + rKeyStrVal()\r\n }\r\n return nk\r\n}\r\n\r\n/**\r\n * @param data Object\r\n * @returns 将对象中 key 为a.b.c 转换为a:{b:{c:''}}\r\n */\r\ntools.formatData = (data) => {\r\n let newData = JSON.parse(JSON.stringify(data))\r\n for (let key in newData) {\r\n if (key.indexOf('.') > -1) {\r\n let arr = key.split('.')\r\n returnNewObj(newData, arr, newData[key])\r\n delete newData[key]\r\n }\r\n }\r\n return newData\r\n}\r\n\r\n\r\n\r\n/**\r\n * @param data {a:{b:{c:{}}}}\r\n *\r\n * @returns a.b.c\r\n *\r\n */\r\ntools.desFormatData = (data) => {\r\n let newData = {}\r\n for (let key in data) {\r\n if (data[key] instanceof Object && !(data[key] instanceof Array)) {\r\n for (let childK in data[key]) {\r\n let nk = `${key}.${childK}`\r\n newData[nk] = data[key][childK]\r\n }\r\n } else {\r\n newData[key] = data[key]\r\n }\r\n }\r\n return newData\r\n}\r\n\r\nexport default tools\r\n","<template>\r\n <el-dialog :title=\"title\" :visible.sync=\"dialogVisible\" width=\"850px\" @close=\"handleClose\" id=\"messageDialog\">\r\n <el-row>\r\n <formItems :type=\"'floor'\" ref=\"formItems\"></formItems>\r\n </el-row>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button size=\"small\" @click=\"dialogVisible=false\">取消</el-button>\r\n <el-button size=\"small\" type=\"primary\" @click=\"confirm\">确认</el-button>\r\n </span>\r\n </el-dialog>\r\n</template>\r\n<script>\r\nimport FloorController from \"@/controller/old-adm/floorController\";\r\nimport formItems from \"@/components/old-adm/ready/components/formItems\";\r\nimport tools from \"@/utils/old-adm/buildfloor/tools\";\r\n\r\nexport default {\r\n props: {\r\n title: {\r\n default: '提示'\r\n },\r\n type: {\r\n default: 'Floor'\r\n },\r\n curBuildId: {\r\n default: ''\r\n },\r\n curFloorId: {\r\n default: ''\r\n }\r\n },\r\n components: {\r\n formItems\r\n },\r\n data() {\r\n return {\r\n dialogVisible: false, //弹窗显示与隐藏\r\n floorData: {},\r\n };\r\n },\r\n methods: {\r\n showDialog(data) {\r\n this.floorData = data || {};\r\n this.floorData = tools.desFormatData(this.floorData)\r\n this.floorData.outline = this.floorData.outline ? JSON.stringify(this.floorData.outline) : undefined;\r\n //===测试代码===\r\n // this.floorData.DefaultQRCode = 'Eq1101080004a93a45ce15e948dda155e9683803cf46QR'\r\n // this.floorData.QRCodePic = 'Eq1101080004a93a45ce15e948dda155e9683803cf46QR'\r\n //=====\r\n this.timeoutSetVal()\r\n this.dialogVisible = true;\r\n },\r\n timeoutSetVal() {\r\n setTimeout(() => {\r\n if (this.$refs.formItems) {\r\n this.$refs.formItems.form = this.floorData\r\n } else {\r\n this.timeoutSetVal()\r\n }\r\n }, 500)\r\n },\r\n handleClose() {\r\n },\r\n //创建\r\n confirm() {\r\n this.$refs.formItems.submitForm(this.save)\r\n },\r\n save() {\r\n let form = this.$refs.formItems.form\r\n if (form.outline) form.outline = JSON.parse(form.outline);\r\n let newform = tools.formatData(form)\r\n newform.buildingId = this.curBuildId\r\n let Param = {\r\n content: [newform]\r\n }\r\n if (newform.id) {\r\n FloorController.manageUpdateFloor(Param).then(res => {\r\n this.$message.success('更新成功')\r\n this.$emit('refresh')\r\n this.dialogVisible = false;\r\n })\r\n } else {\r\n FloorController.manageCreateFloor(Param).then(res => {\r\n this.$message.success('创建成功')\r\n this.$emit('refresh')\r\n this.dialogVisible = false;\r\n })\r\n }\r\n }\r\n },\r\n mounted() {\r\n },\r\n created() {\r\n }\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n#messageDialog {\r\n /deep/ .el-dialog__body {\r\n height: 420px;\r\n overflow: auto;\r\n }\r\n\r\n .el-form-item {\r\n /deep/ label.el-form-item__label {\r\n font-size: 12px;\r\n }\r\n }\r\n\r\n /deep/ .FloorTypeSelect .el-form-item__content {\r\n width: 200px;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=3542fea2&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=3542fea2&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3542fea2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"title\":_vm.buildTitle,\"visible\":_vm.buildDialogVis,\"id\":\"messageDialog\",\"width\":\"850px\"},on:{\"update:visible\":function($event){_vm.buildDialogVis=$event}}},[_c('el-form',{ref:\"ruleForm\",attrs:{\"inline\":true,\"model\":_vm.form,\"label-width\":\"160px\",\"label-position\":'right',\"rules\":_vm.rules}},[_vm._l((_vm.buildMessage),function(val,key){return [_c('h4',{domProps:{\"textContent\":_vm._s(key != 'undefined' ? key :'信息')}}),_vm._l((val),function(item){return _c('div',{key:item.InfoPointCode,class:[{'upload-file':item.dataType == 'ATTACHMENT' || item.Path === 'infos.pic'}],staticStyle:{\"width\":\"50%\",\"display\":\"inline-block\"}},[(_vm.all||item.Visible)?_c('el-form-item',{class:{FloorTypeSelect:item.dataType == 'ENUM'||item.Unit},attrs:{\"label\":item.InfoPointName,\"prop\":item.InfoPointCode}},[(item.dataType == 'STRING')?_c('el-input',{attrs:{\"disabled\":!item.editable},model:{value:(_vm.form[item.Path]),callback:function ($$v) {_vm.$set(_vm.form, item.Path, (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"form[item.Path]\"}}):(item.dataType == 'INTEGER' || item.dataType == 'DOUBLE')?_c('el-input',{attrs:{\"type\":\"number\"},model:{value:(_vm.form[item.Path]),callback:function ($$v) {_vm.$set(_vm.form, item.Path, (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"form[item.Path]\"}},[(item.Unit)?_c('template',{slot:\"append\"},[_vm._v(_vm._s(item.Unit))]):_vm._e()],2):(item.dataType == 'ENUM' || item.dataType == 'BOOLEAN')?_c('el-select',{attrs:{\"placeholder\":\"请选择\"},model:{value:(_vm.form[item.Path]),callback:function ($$v) {_vm.$set(_vm.form, item.Path, $$v)},expression:\"form[item.Path]\"}},_vm._l((item.options),function(op){return _c('el-option',{key:op.name,attrs:{\"label\":op.name,\"value\":op.code}})}),1):(item.dataType == 'MENUM')?_c('el-select',{attrs:{\"placeholder\":\"请选择\",\"multiple\":\"\",\"collapse-tags\":\"\"},model:{value:(_vm.form[item.Path]),callback:function ($$v) {_vm.$set(_vm.form, item.Path, $$v)},expression:\"form[item.Path]\"}},_vm._l((item.options),function(op){return _c('el-option',{key:op.name,attrs:{\"label\":op.name,\"value\":op.code}})}),1):(item.dataType == 'DATETIME')?_c('el-date-picker',{attrs:{\"placeholder\":\"选择日期\",\"type\":\"date\"},model:{value:(_vm.form[item.Path]),callback:function ($$v) {_vm.$set(_vm.form, item.Path, $$v)},expression:\"form[item.Path]\"}}):(item.dataType == 'ATTACHMENT'&& item.Path === 'infos.Pic')?_c('uploadImgs',{attrs:{\"readOnly\":false,\"keysArr\":Array.isArray(_vm.buildData[item.Path]) ? _vm.buildData[item.Path]:[],\"context-key\":item.Path,\"isShow\":1},on:{\"change\":_vm.changeItem},model:{value:(_vm.form[item.Path]),callback:function ($$v) {_vm.$set(_vm.form, item.Path, $$v)},expression:\"form[item.Path]\"}}):(item.dataType == 'ATTACHMENT')?_c('upload-files',{attrs:{\"readOnly\":false,\"isShow\":1,\"keys-arr\":Array.isArray(_vm.buildData[item.Path]) ? _vm.buildData[item.Path]:[],\"show-file-list\":false,\"context-key\":item.Path},on:{\"change\":_vm.changeItem},model:{value:(_vm.form[item.Path]),callback:function ($$v) {_vm.$set(_vm.form, item.Path, $$v)},expression:\"form[item.Path]\"}}):_vm._e()],1):_vm._e()],1)})]})],2),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.buildDialogVis = false}}},[_vm._v(\"取 消\")]),_c('el-button',{attrs:{\"type\":\"primary\",\"disabled\":_vm.buildDisabled},on:{\"click\":function($event){return _vm.submitForm('ruleForm')}}},[_vm._v(\"确 定\")])],1),_c('el-dialog',{attrs:{\"visible\":_vm.dialogVisible},on:{\"update:visible\":function($event){_vm.dialogVisible=$event}}},[_c('img',{attrs:{\"width\":\"100%\",\"src\":_vm.dialogImageUrl,\"alt\":\"\"}})])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"saga-upload\"}},[_c('div',{attrs:{\"id\":\"uploadFile\"}},[_c('el-upload',{staticClass:\"upload-file\",attrs:{\"action\":\"\",\"drag\":\"\",\"http-request\":_vm.uploadAndSubmit,\"show-file-list\":false}},[(!_vm.readOnly)?_c('el-button',{attrs:{\"size\":\"small\",\"type\":_vm.isShow ===1 ? 'text':'primary'}},[_vm._v(\"点击上传\")]):_vm._e(),((_vm.isShow !== 1 || _vm.isShow == undefined) && !_vm.readOnly)?_c('div',{staticClass:\"el-upload__tip\",attrs:{\"slot\":\"tip\"},slot:\"tip\"},[_vm._v(\"请上传文件,且不大于50M\")]):_vm._e()],1),_vm._l((_vm.filesArr),function(item,index){return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(item && _vm.filesArr.length),expression:\"item && filesArr.length\"}],key:item.key},[_c('p',{staticClass:\"file-list\"},[_c('span',{staticClass:\"file-name\",attrs:{\"title\":item.name}},[_vm._v(_vm._s(item.name))]),_c('i',{staticClass:\"el-icon-download\",staticStyle:{\"margin-left\":\"10px\",\"cursor\":\"pointer\"},attrs:{\"title\":\"下载\"},on:{\"click\":function($event){return _vm.download(item)}}}),(!_vm.readOnly)?_c('i',{staticClass:\"el-icon-close delete-icon\",staticStyle:{\"margin-left\":\"10px\",\"cursor\":\"pointer\"},attrs:{\"title\":\"删除\"},on:{\"click\":function($event){return _vm.deleteFile(index,item)}}}):_vm._e()])])})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\r\n 上传组件\r\n type: 类型,默认image\r\n identify: key值,通过val获取\r\n disabled: 是否可用\r\n index: 父组件的下标\r\n imageIndex: 图片下标\r\n isShow: 图片的显示\r\n -->\r\n<template>\r\n <div id=\"saga-upload\">\r\n <div id=\"uploadFile\">\r\n <el-upload\r\n class=\"upload-file\"\r\n action drag\r\n :http-request=\"uploadAndSubmit\"\r\n :show-file-list=\"false\">\r\n <el-button size=\"small\" :type=\"isShow ===1 ? 'text':'primary'\" v-if=\"!readOnly\">点击上传</el-button>\r\n <div slot=\"tip\" class=\"el-upload__tip\" v-if=\"(isShow !== 1 || isShow == undefined) && !readOnly\">请上传文件,且不大于50M</div>\r\n </el-upload>\r\n <div v-show=\"item && filesArr.length\" v-for=\"(item,index) in filesArr\" :key=\"item.key\">\r\n <p class=\"file-list\">\r\n <span class=\"file-name\" :title=\"item.name\">{{item.name}}</span>\r\n <i title=\"下载\" class=\"el-icon-download\" style=\"margin-left:10px; cursor:pointer\" @click=\"download(item)\"></i>\r\n <i v-if=\"!readOnly\" title=\"删除\" class=\"el-icon-close delete-icon\" style=\"margin-left:10px; cursor:pointer\" @click=\"deleteFile(index,item)\"></i>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport tools from \"@/utils/old-adm/scan/tools\";\r\n\r\nexport default {\r\n props: {\r\n keysArr: {\r\n type: [Array, String],\r\n default: function () {\r\n return []\r\n }\r\n },\r\n readOnly: {\r\n type: Boolean,\r\n default: false\r\n },\r\n max: {\r\n type: [Number, String],\r\n default: 6\r\n },\r\n isShow: {\r\n type: Number\r\n },\r\n contextKey: {\r\n type: [String, Object]\r\n },\r\n defined: null\r\n },\r\n data() {\r\n return {\r\n filesArr: []\r\n };\r\n },\r\n created() {\r\n this.fileFalg()\r\n },\r\n methods: {\r\n //判断是否为空\r\n fileFalg() {\r\n let type = typeof (this.keysArr)\r\n if (type == 'string') {\r\n this.filesArr = [this.keysArr]\r\n } else {\r\n this.filesArr = tools.deepCopy(this.keysArr)\r\n }\r\n\r\n if (!this.keysArr) {\r\n this.filesArr = []\r\n }\r\n },\r\n\r\n resetFile() {\r\n this.filesArr = []\r\n },\r\n\r\n\r\n //点击下载\r\n download(item) {\r\n if (item.Key) {\r\n let a = document.createElement(\"a\");\r\n a.href = `/image-service/common/file_get/${item.key}?systemId=dataPlatform`;\r\n a.download = `${item.name}`;\r\n a.click();\r\n document.body.removeChild(a);\r\n } else {\r\n this.$message({\r\n message: \"无该获取该文件资源链接!\",\r\n type: \"error\"\r\n });\r\n }\r\n },\r\n\r\n //删除图片\r\n deleteFile(i, key) {\r\n this.filesArr.splice(i, 1);\r\n this.$emit(\"change\", this.filesArr, this.defined);\r\n },\r\n\r\n //上传\r\n uploadAndSubmit(item) {\r\n // var form = document.forms[\"demoForm\"];\r\n\r\n // if (form[\"file\"].files.length > 0) {\r\n // 寻找表单域中的 <input type=\"file\" ... /> 标签\r\n // var file = form[\"file\"].files[0];\r\n\r\n let file = item.file;\r\n // try sending\r\n let size = item.file.size;\r\n if( size > 50*1024*1024 ) { //文件大于50M\r\n this.$message.error('文件不可大于50M,请重新上传')\r\n return false\r\n }\r\n else {\r\n let reader = new FileReader();\r\n let vm = this;\r\n let fileType = file.name.split(\".\");\r\n let type = fileType[fileType.length - 1];\r\n let key = \"&key=\" + fileType[0] + file.uid + \".\" + type\r\n let CreateTime = tools.formatDate(new Date(file.lastModified))\r\n reader.onloadstart = function () {\r\n // 这个事件在读取开始时触发\r\n };\r\n reader.onprogress = function (p) {\r\n // 这个事件在读取进行中定时触发\r\n\r\n };\r\n reader.onUploadProgress = function (progressEvent) {\r\n let percent = (progressEvent.loaded / progressEvent.total * 100) | 0\r\n //调用onProgress方法来显示进度条,需要传递个对象 percent为进度值\r\n uploader.onProgress({percent: percent})\r\n }\r\n reader.onload = function () {\r\n // 这个事件在读取成功结束后触发\r\n };\r\n reader.onloadend = function () {\r\n // 这个事件在读取结束后,无论成功或者失败都会触发\r\n if (reader.error) {\r\n } else {\r\n // document.getElementById(\"bytesRead\").textContent = file.size;\r\n // 构造 XMLHttpRequest 对象,发送文件 Binary 数据\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(\r\n /* method */\r\n \"POST\",\r\n /* target url */\r\n window.__systemConf.baseServiceUrl + \"/image-service/common/file_upload?systemId=dataPlatform&secret=9e0891a7a8c8e885&overwrite=true\" + key\r\n /*, async, default to true */\r\n );\r\n //xhr.overrideMimeType(\"application/octet-stream\");\r\n xhr.send(reader.result);\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState == 4) {\r\n if (xhr.status == 200) {\r\n let fileObject = {\r\n key: key.split(\"=\")[1],\r\n type,\r\n name: file.name,\r\n createTime: CreateTime,\r\n systemId: 'dataPlatform'\r\n }\r\n vm.filesArr.push(fileObject);\r\n\r\n if(vm.isShow === 1) {\r\n let oFile = {}\r\n oFile[vm.contextKey] = vm.filesArr\r\n vm.$emit(\"change\", oFile, vm.defined);\r\n } else {\r\n vm.$emit(\"change\", vm.filesArr, vm.defined);\r\n }\r\n } else {\r\n this.$message.error(res.data.ResultMsg)\r\n }\r\n }\r\n };\r\n }\r\n };\r\n reader.readAsArrayBuffer(file);\r\n }\r\n }\r\n },\r\n watch: {\r\n keysArr: function (val) {\r\n this.fileFalg()\r\n }\r\n }\r\n };\r\n</script>\r\n\r\n<style lang=\"less\">\r\n #saga-upload {\r\n .dill-image {\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n font-size: 20px;\r\n }\r\n\r\n .el-upload-dragger {\r\n width: 180px;\r\n height: 180px;\r\n }\r\n\r\n img {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n #uploadFile {\r\n .upload-file {\r\n overflow: hidden;\r\n .el-upload-dragger {\r\n width: inherit;\r\n height: inherit;\r\n border: none;\r\n }\r\n }\r\n .file-list {\r\n .file-name {\r\n display: inline-block;\r\n width: 400px;\r\n font-size: 12px;\r\n color: #409eff;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n vertical-align: top;\r\n cursor: pointer;\r\n }\r\n .file-name:hover {\r\n color: #66b1ff;\r\n }\r\n }\r\n }\r\n }\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./uploadFiles.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./uploadFiles.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./uploadFiles.vue?vue&type=template&id=3aa6bf4f&\"\nimport script from \"./uploadFiles.vue?vue&type=script&lang=js&\"\nexport * from \"./uploadFiles.vue?vue&type=script&lang=js&\"\nimport style0 from \"./uploadFiles.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\r\n <el-dialog\r\n :title=\"buildTitle\"\r\n :visible.sync=\"buildDialogVis\"\r\n id=\"messageDialog\"\r\n width=\"850px\"\r\n >\r\n <el-form\r\n :inline=\"true\"\r\n :model=\"form\"\r\n label-width=\"160px\"\r\n :label-position=\"'right'\"\r\n :rules=\"rules\"\r\n ref=\"ruleForm\"\r\n >\r\n <template v-for=\"(val,key) in buildMessage\">\r\n <h4 v-text=\"key != 'undefined' ? key :'信息'\"></h4>\r\n\r\n <div\r\n :key=\"item.InfoPointCode\"\r\n v-for=\"item in val\"\r\n :class=\"[{'upload-file':item.dataType == 'ATTACHMENT' || item.Path === 'infos.pic'}]\"\r\n style=\"width: 50%;display: inline-block\">\r\n\r\n <el-form-item\r\n :class=\"{FloorTypeSelect:item.dataType == 'ENUM'||item.Unit}\"\r\n :label=\"item.InfoPointName\"\r\n :prop=\"item.InfoPointCode\"\r\n v-if=\"all||item.Visible\">\r\n <el-input\r\n :disabled=\"!item.editable\"\r\n v-if=\"item.dataType == 'STRING'\"\r\n v-model.trim=\"form[item.Path]\"/>\r\n\r\n <el-input\r\n v-else-if=\"item.dataType == 'INTEGER' || item.dataType == 'DOUBLE'\"\r\n type=\"number\"\r\n v-model.trim=\"form[item.Path]\">\r\n <template slot=\"append\" v-if=\"item.Unit\">{{ item.Unit }}</template>\r\n </el-input>\r\n\r\n <el-select\r\n v-else-if=\"item.dataType == 'ENUM' || item.dataType == 'BOOLEAN'\"\r\n placeholder=\"请选择\"\r\n v-model=\"form[item.Path]\">\r\n <el-option :key=\"op.name\" :label=\"op.name\" :value=\"op.code\" v-for=\"op in item.options\"></el-option>\r\n </el-select>\r\n\r\n <el-select\r\n v-else-if=\"item.dataType == 'MENUM'\"\r\n placeholder=\"请选择\"\r\n v-model=\"form[item.Path]\"\r\n multiple\r\n collapse-tags>\r\n <el-option :key=\"op.name\" :label=\"op.name\" :value=\"op.code\" v-for=\"op in item.options\"></el-option>\r\n </el-select>\r\n <el-date-picker\r\n v-else-if=\"item.dataType == 'DATETIME'\"\r\n v-model=\"form[item.Path]\"\r\n placeholder=\"选择日期\"\r\n type=\"date\">\r\n </el-date-picker>\r\n\r\n <uploadImgs\r\n v-else-if=\"item.dataType == 'ATTACHMENT'&& item.Path === 'infos.Pic'\"\r\n :readOnly=\"false\"\r\n v-model=\"form[item.Path]\"\r\n :keysArr=\"Array.isArray(buildData[item.Path]) ? buildData[item.Path]:[]\"\r\n :context-key=\"item.Path\"\r\n :isShow=\"1\"\r\n @change=\"changeItem\"/>\r\n\r\n <upload-files\r\n v-else-if=\"item.dataType == 'ATTACHMENT'\"\r\n v-model=\"form[item.Path]\"\r\n :readOnly=\"false\"\r\n :isShow=\"1\"\r\n :keys-arr=\"Array.isArray(buildData[item.Path]) ? buildData[item.Path]:[] \"\r\n :show-file-list=\"false\"\r\n :context-key=\"item.Path\"\r\n @change=\"changeItem\"/>\r\n\r\n </el-form-item>\r\n </div>\r\n </template>\r\n </el-form>\r\n <span\r\n class=\"dialog-footer\"\r\n slot=\"footer\">\r\n <el-button @click=\"buildDialogVis = false\">取 消</el-button>\r\n <el-button @click=\"submitForm('ruleForm')\" type=\"primary\" :disabled=\"buildDisabled\">确 定</el-button>\r\n </span>\r\n <el-dialog :visible.sync=\"dialogVisible\">\r\n <img width=\"100%\" :src=\"dialogImageUrl\" alt=\"\">\r\n </el-dialog>\r\n </el-dialog>\r\n</template>\r\n<script>\r\nimport uploadFiles from \"@/components/old-adm/business_space/lib/uploadFiles\";\r\nimport uploadImgs from \"@/components/old-adm/business_space/lib/uploadImgsName\";\r\n\r\nfunction flattenKeys(obj) {\r\n let res = {}\r\n\r\n function isObject(val) {\r\n return typeof val === 'object' && !Array.isArray(val)\r\n }\r\n\r\n function digKeys(prev, obj) {\r\n Object.entries(obj).forEach(([key, value]) => {\r\n const currentKey = prev ? `${prev}.${key}` : key\r\n if (isObject(value)) {\r\n digKeys(currentKey, value)\r\n } else {\r\n res[currentKey] = value\r\n }\r\n })\r\n }\r\n\r\n digKeys('', obj)\r\n\r\n return res\r\n}\r\n\r\nexport default {\r\n data() {\r\n\r\n return {\r\n buildName: '',\r\n keysArr: [], //保存临时的文件key\r\n buildDialogVis: false,\r\n form: {},\r\n dialogImageUrl: '',\r\n dialogVisible: false,\r\n all: true,\r\n rules: {\r\n \"localId\": [\r\n {\"required\": true, \"message\": \"请输入建筑本地编码\", \"trigger\": \"blur\"}\r\n ],\r\n \"localName\": [\r\n {\"required\": true, \"message\": \"请输入建筑本地名称\", \"trigger\": \"blur\"}\r\n ]\r\n },\r\n buildData: {},\r\n buildDisabled: false,\r\n }\r\n },\r\n components: {uploadFiles, uploadImgs},\r\n props: ['buildTitle', 'buildMessage', 'currentBuild'],\r\n computed: {},\r\n mounted() {\r\n },\r\n watch: {},\r\n methods: {\r\n deepCopy(obj) {\r\n return JSON.parse(JSON.stringify(obj))\r\n },\r\n showDialog(data) {\r\n //获取信息\r\n let buildData = data || {}; // string =>array key\r\n buildData = flattenKeys(buildData);\r\n // for (let key in this.buildMessage) {\r\n // let arr = this.buildMessage[key];\r\n // if (Array.isArray(arr)) {\r\n // let list = arr.filter(i => i.dataType == 'MENUM' || i.dataType == 'DATETIME');\r\n // list.forEach(j => {\r\n // if (buildData.hasOwnProperty(j.Path)) {\r\n // if (!Array.isArray(buildData[j.Path])) {\r\n // buildData[j.Path] = buildData[j.Path].split(',');\r\n // }\r\n // }\r\n //\r\n // })\r\n // }\r\n // }\r\n this.buildData = buildData;\r\n this.timeoutSetVal()\r\n this.buildDialogVis = true\r\n },\r\n\r\n timeoutSetVal() {\r\n let that = this\r\n setTimeout(() => {\r\n if (that.form) {\r\n that.form = that.buildData\r\n } else {\r\n this.timeoutSetVal()\r\n }\r\n })\r\n },\r\n closeDialog() {\r\n this.buildDialogVis = false\r\n },\r\n submitForm(formName) {\r\n this.$refs[formName].validate((valid) => {\r\n if (valid) {\r\n this.buildDisabled = true\r\n this.$emit('handleBuild', this.form)\r\n setTimeout(() => {\r\n this.buildDisabled = false\r\n }, 2500)\r\n } else {\r\n return false;\r\n }\r\n });\r\n },\r\n changeItem(val) {\r\n let _key = Object.keys(val)[0] + '';\r\n this.form[_key] = val[_key];\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n\r\n#messageDialog {\r\n /deep/ .el-date-editor.el-input, .el-date-editor.el-input__inner, /deep/ .el-select {\r\n width: 200px;\r\n }\r\n\r\n /deep/ .FloorTypeSelect .el-form-item__content {\r\n width: 200px;\r\n }\r\n\r\n /deep/ .el-dialog__body {\r\n height: 420px;\r\n overflow: auto;\r\n }\r\n\r\n .upload-file {\r\n width: 100% !important;\r\n display: block !important;\r\n }\r\n\r\n /deep/ .el-input--small {\r\n width: 200px\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./addBuild.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./addBuild.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./addBuild.vue?vue&type=template&id=0842a1a5&scoped=true&\"\nimport script from \"./addBuild.vue?vue&type=script&lang=js&\"\nexport * from \"./addBuild.vue?vue&type=script&lang=js&\"\nimport style0 from \"./addBuild.vue?vue&type=style&index=0&id=0842a1a5&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0842a1a5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"title\":\"楼层贯通关系维护\",\"visible\":_vm.connectDialogVis,\"width\":\"730px\",\"id\":\"messageDialog\"},on:{\"update:visible\":function($event){_vm.connectDialogVis=$event}}},[_c('el-row',{staticStyle:{\"height\":\"80px\"}},[_c('div',{staticStyle:{\"line-height\":\"32px\"}},[_vm._v(\"添加与\"+_vm._s(_vm.floor.FloorLocalName)+\"层有贯通关系的楼层 :\")]),_c('div',{staticStyle:{\"width\":\"70%\"}},[_c('bfCascader',{ref:\"bfCascader\",attrs:{\"floorId\":_vm.floor.id}})],1)]),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{attrs:{\"size\":\"small\"},on:{\"click\":function($event){_vm.connectDialogVis = false}}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"primary\"},on:{\"click\":_vm.save}},[_vm._v(\"确认\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-cascader',{attrs:{\"options\":_vm.options,\"props\":_vm.props,\"clearable\":\"\"},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <el-cascader v-model=\"value\" :options=\"options\" :props=\"props\" clearable></el-cascader>\r\n</template>\r\n<script>\r\nimport BuildController from \"@/controller/old-adm/buildController\";\r\n\r\nexport default {\r\n data() {\r\n return {\r\n value: [],\r\n props: {\r\n multiple: true,\r\n value: \"id\",\r\n label: \"localName\",\r\n children: \"floor\",\r\n },\r\n options: [],\r\n };\r\n },\r\n props: {\r\n floorId: {\r\n default: \"\",\r\n },\r\n },\r\n created() {},\r\n methods: {\r\n getCascader() {\r\n let param = {\r\n cascade: [{ name: \"floor\", orders: \"floorSequenceID desc\", filters: `id != '${this.floorId}'` }],\r\n pageNumber: 1,\r\n pageSize: 50,\r\n };\r\n BuildController.buildingQuery(param).then((res) => {\r\n this.options = res.content.filter((build) => build.floor);\r\n });\r\n },\r\n },\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.el-cascader {\r\n width: 100%;\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./buildfloorCascader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./buildfloorCascader.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./buildfloorCascader.vue?vue&type=template&id=a8f493b8&scoped=true&\"\nimport script from \"./buildfloorCascader.vue?vue&type=script&lang=js&\"\nexport * from \"./buildfloorCascader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./buildfloorCascader.vue?vue&type=style&index=0&id=a8f493b8&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a8f493b8\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <el-dialog title=\"楼层贯通关系维护\" :visible.sync=\"connectDialogVis\" width=\"730px\" id=\"messageDialog\">\r\n <el-row style=\"height: 80px\">\r\n <div style=\"line-height: 32px\">添加与{{ floor.FloorLocalName }}层有贯通关系的楼层 :</div>\r\n <div style=\"width: 70%\">\r\n <bfCascader ref=\"bfCascader\" :floorId=\"floor.id\"></bfCascader>\r\n </div>\r\n </el-row>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button size=\"small\" @click=\"connectDialogVis = false\">取消</el-button>\r\n <el-button size=\"small\" type=\"primary\" @click=\"save\">确认</el-button>\r\n </span>\r\n </el-dialog>\r\n</template>\r\n<script>\r\nimport bfCascader from \"@/components/old-adm/ready/components/buildfloorCascader\";\r\nimport ScanController from \"@/controller/old-adm/ScanController\";\r\n\r\nexport default {\r\n data() {\r\n return {\r\n buildName: \"\",\r\n connectDialogVis: false,\r\n floor: {},\r\n };\r\n },\r\n components: {\r\n bfCascader,\r\n },\r\n methods: {\r\n showDialog() {\r\n this.connectDialogVis = true;\r\n this.$nextTick(() => {\r\n this.$refs.bfCascader.getCascader();\r\n let arr = this.floor.floorThroughList || [];\r\n let value = [];\r\n if (arr.length) {\r\n arr.map((t) => {\r\n value.push([t.buildingId, t.id]);\r\n });\r\n }\r\n this.$refs.bfCascader.value = value;\r\n });\r\n },\r\n save() {\r\n let arr = this.$refs.bfCascader.value;\r\n let param = {\r\n floorId: this.floor.id,\r\n floorOtherIdList: [],\r\n };\r\n arr.map((t) => {\r\n if (t[1]) {\r\n param.floorOtherIdList.push(t[1]);\r\n }\r\n });\r\n ScanController.createRelationInFloor(param).then((res) => {\r\n this.connectDialogVis = false;\r\n this.$message.success(\"关联成功\");\r\n this.$emit(\"refresh\");\r\n });\r\n },\r\n },\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n#messageDialog {\r\n .el-row {\r\n height: 50px;\r\n max-height: 200px;\r\n overflow-y: auto;\r\n overflow-x: hidden;\r\n }\r\n\r\n .el-row > div {\r\n float: left;\r\n }\r\n\r\n .el-row > div + div {\r\n margin-left: 10px;\r\n }\r\n\r\n /deep/ .el-input__inner {\r\n vertical-align: baseline;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./addConnectivity.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./addConnectivity.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./addConnectivity.vue?vue&type=template&id=dd69ca78&scoped=true&\"\nimport script from \"./addConnectivity.vue?vue&type=script&lang=js&\"\nexport * from \"./addConnectivity.vue?vue&type=script&lang=js&\"\nimport style0 from \"./addConnectivity.vue?vue&type=style&index=0&id=dd69ca78&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dd69ca78\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div id=\"bd-fl-manage\">\r\n <el-row>\r\n <div class=\"l-list\">\r\n <div class=\"action-box\">\r\n <div>\r\n <el-button @click=\"addBuild\" icon=\"el-icon-plus\" size=\"small\" type=\"default\" />\r\n <el-button @click=\"delBuild\" icon=\"el-icon-minus\" size=\"small\" type=\"default\" :disabled=\"!buildList.length\" />\r\n <el-button @click=\"editBuild\" icon=\"el-icon-edit-outline\" size=\"small\" type=\"default\" :disabled=\"!buildList.length\" />\r\n </div>\r\n </div>\r\n <h4>建筑</h4>\r\n <div class=\"build-list\">\r\n <div\r\n :class=\"{ 'floor-item': true, active: item.active }\"\r\n :key=\"item.id\"\r\n @click=\"changeBuild(index)\"\r\n style=\"cursor: pointer\"\r\n v-for=\"(item, index) in buildList\"\r\n >\r\n <span>\r\n {{ item.localName || item.name }}\r\n <el-badge :value=\"item.count\" class=\"mark\" v-if=\"item.count > 0\" />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"r-table\" v-if=\"buildList.length > 0\">\r\n <div class=\"action-box\">\r\n <el-button @click=\"addFloor\" size=\"small\" type=\"default\">添加楼层 </el-button>\r\n </div>\r\n <div class=\"table-box\">\r\n <el-table :data=\"tableData\" :header-cell-style=\"headerStyle\" height=\"100%\" style=\"width: 100%\" v-loading=\"loading\">\r\n <el-table-column label=\"楼层本地名\">\r\n <template slot-scope=\"scope\">{{ scope.row.localName }}</template>\r\n </el-table-column>\r\n <el-table-column label=\"楼层顺序号\">\r\n <template slot-scope=\"scope\">{{ scope.row.floorSequenceID }}</template>\r\n </el-table-column>\r\n <el-table-column label=\"楼层信息\">\r\n <template slot-scope=\"scope\">\r\n <el-button @click=\"editFloorData(scope.row)\" icon=\"el-icon-edit-outline\" plain size=\"mini\"></el-button>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"平面图\" prop=\"dataSource\">\r\n <template slot-scope=\"scope\">\r\n <p @click=\"checkDrawImg(scope.row, 2)\" v-if=\"scope.row.sign > 0\">\r\n <el-badge is-dot>\r\n <i class=\"iconfont icon-floorplan\" />\r\n </el-badge>\r\n 平面图重复\r\n </p>\r\n <p @click=\"checkDrawImg(scope.row, 1)\" v-else-if=\"scope.row.infos ? scope.row.infos.floorMap : false\">\r\n <i class=\"iconfont icon-floorplan\" />\r\n 查看平面图\r\n </p>\r\n <p @click=\"checkDrawImg(scope.row, 3)\" v-else>\r\n <i class=\"iconfont icon-nopicture\" />\r\n 暂无平面图\r\n </p>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"楼层贯通关系\" prop=\"SubTypeName\">\r\n <template slot-scope=\"scope\">\r\n <span style=\"margin-right: 20px\">{{ scope.row.floorThroughList ? scope.row.floorThroughList.length : 0 }}</span>\r\n <el-button @click=\"changeConnection(scope.row)\" icon=\"el-icon-edit-outline\" plain size=\"mini\" />\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"操作\" prop=\"action\">\r\n <template slot-scope=\"scope\">\r\n <el-button @click=\"handleDelete(scope.row)\" icon=\"el-icon-delete\" plain size=\"mini\" type=\"danger\" />\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n </div>\r\n </div>\r\n <div v-else class=\"r-table\">\r\n <div class=\"center\" style=\"margin-top: 300px\"><i class=\"icon-wushuju iconfont\"></i> 请先在左侧创建建筑</div>\r\n </div>\r\n </el-row>\r\n <!-- 添加-修改楼层 -->\r\n <addFloor :curBuildId=\"curBuildId\" :curFloorId=\"curFloorId\" :title=\"floorTitle\" @refresh=\"refresh\" ref=\"addFloorDialog\" />\r\n <!-- 添加-修改建筑 :currentType=\"currentType\"-->\r\n <addBuild :buildTitle=\"buildTitle\" ref=\"addBuildDialog\" :buildMessage=\"buildMessage\" @handleBuild=\"handleBuild\" />\r\n <!-- 删除建筑-删除楼层 -->\r\n <el-dialog :visible.sync=\"delDialogVis\" @close=\"handleClose\" id=\"messageDialog\" title=\"提示\" width=\"20%\">\r\n <div>确定要删除该{{ delText }}?</div>\r\n <span class=\"dialog-footer\" slot=\"footer\">\r\n <el-button @click=\"delDialogVis = false\" size=\"small\">取消</el-button>\r\n <el-button @click=\"confirmDel\" size=\"small\" type=\"primary\">确认</el-button>\r\n </span>\r\n </el-dialog>\r\n <!-- 添加贯通关系弹窗 -->\r\n <addConnectivity @refresh=\"refresh\" ref=\"addConnectivity\" />\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport addFloor from \"@/components/old-adm/ready/buildfloor/addFloor/index\";\r\nimport addBuild from \"@/components/old-adm/ready/components/addBuild\";\r\nimport { mapGetters } from \"vuex\";\r\nimport addConnectivity from \"@/components/old-adm/ready/components/addConnectivity\";\r\nimport tools from \"@/utils/old-adm/buildfloor/tools\";\r\nimport DicController from \"@/controller/old-adm/dicController\";\r\nimport ScanController from \"@/controller/old-adm/ScanController\";\r\n\r\nexport default {\r\n components: {\r\n addFloor,\r\n addBuild,\r\n addConnectivity,\r\n },\r\n data() {\r\n return {\r\n repetitionGraphyVisible: false, // 替换平面图弹窗\r\n floorTitle: \"添加楼层\",\r\n buildTitle: \"添加建筑\",\r\n delDialogVis: false,\r\n delText: \"建筑\",\r\n headerStyle: {\r\n backgroundColor: \"#d9d9d9\",\r\n color: \"#2b2b2b\",\r\n lineHeight: \"30px\",\r\n },\r\n buildList: [],\r\n tableData: [],\r\n page: {\r\n pageSize: 500,\r\n pageSizes: [10, 20, 50, 100],\r\n pageNumber: 1,\r\n total: 0,\r\n },\r\n loading: false, //列表loading\r\n curBuildId: \"\", //当前选中的建筑id\r\n curBuildName: \"\", //当前选中建筑的名称\r\n curFloorId: \"\", //当前选中的楼层id\r\n modelId: \"\",\r\n buildMessage: {},\r\n selectedBuildIndex: 0,\r\n };\r\n },\r\n computed: {\r\n ...mapGetters(\"layout\", [\"projectId\"]),\r\n },\r\n mounted() {},\r\n created() {\r\n this.init();\r\n this.handleBuildQuery();\r\n this.handleSearchBuildKey();\r\n },\r\n methods: {\r\n init() {\r\n let bdParam = {\r\n orders: \"localName asc\",\r\n pageNumber: 1,\r\n pageSize: 500,\r\n };\r\n ScanController.buildingQueryAndCount(bdParam).then((res) => {\r\n this.buildList = res.content;\r\n if (this.buildList.length) {\r\n // 如果存在建筑id,则将当前选择建筑置为该建筑\r\n if (this.$route.query.buildingId) {\r\n this.selectedBuildIndex = this.buildList.findIndex((item) => item.id === this.$route.query.buildingId);\r\n }\r\n this.changeBuild(this.selectedBuildIndex > this.buildList.length - 1 ? 0 : this.selectedBuildIndex);\r\n }\r\n });\r\n },\r\n //change build\r\n changeBuild(index) {\r\n this.selectedBuildIndex = index;\r\n this.buildList.map((item) => {\r\n item.active = false;\r\n return item;\r\n });\r\n this.buildList[index].active = true;\r\n this.curBuildId = this.buildList[index].id;\r\n this.curBuildName = this.buildList[index].localName || this.buildList[index].name;\r\n this.getFloorTableData();\r\n this.$forceUpdate();\r\n },\r\n //add build\r\n addBuild() {\r\n // this.$message.warning(\"开发中...\");\r\n // return;\r\n this.buildTitle = \"添加建筑\";\r\n this.$refs.addBuildDialog.showDialog();\r\n this.handleSearchBuildKey();\r\n },\r\n handleSearchBuildKey() {\r\n let params = {\r\n type: \"building\",\r\n pageNumber: 1,\r\n pageSize: 1000,\r\n orders: \"sort asc, name desc\",\r\n };\r\n DicController.getDataDictionary(params).then((res) => {\r\n let first = {};\r\n //一级循环出来一级标签\r\n let list = res.content.filter((i) => i.firstName !== \"工作历\" && i.firstName !== \"能耗信息\" && i.firstName !== \"人员信息\");\r\n list.map((item) => {\r\n // console.table(item.category, item.dataType)\r\n const category = [\"ENUM\", \"MENUM\", \"BOOLEAN\"];\r\n if (item.category == \"STATIC\" && item.dataType.includes(category) && item.dataSource) {\r\n item.options = item.dataSource;\r\n item.props = {\r\n value: \"code\",\r\n label: \"name\",\r\n children: \"content\",\r\n checkStrictly: true,\r\n };\r\n }\r\n if (first[item.firstName] && first[item.firstName].length) {\r\n } else {\r\n first[item.firstName] = [];\r\n }\r\n if (item.path !== \"infos.areaTree\") {\r\n //DefaultQRCode,BuildQRCode 不再维护\r\n first[item.firstName].push({\r\n InfoPointName: item.name,\r\n InfoPointCode: item.code,\r\n Visible: item.visible,\r\n UnDisabled: item.unDisabled,\r\n SecondName: item.secondName ? item.secondName : \"\",\r\n options: item.dataSource,\r\n props: item.props,\r\n Unit: item.unit,\r\n Path: item.path,\r\n dataType: item.dataType,\r\n category: item.category,\r\n editable: item.editable,\r\n });\r\n }\r\n });\r\n this.buildMessage = first;\r\n });\r\n },\r\n //delete build ,根据id删除建筑信息\r\n delBuild() {\r\n this.delText = \"建筑\";\r\n this.delDialogVis = true;\r\n },\r\n //edit build\r\n editBuild() {\r\n this.buildTitle = \"编辑建筑\";\r\n this.handleSearchBuildKey();\r\n let list = this.currentBuildList.filter((i) => i.id === this.curBuildId);\r\n let obj = {};\r\n for (let i = 0; i < list.length; i++) {\r\n obj = list[i];\r\n }\r\n this.$refs.addBuildDialog.showDialog(obj);\r\n },\r\n handleFile(val, name) {},\r\n // handleBuild 获取建筑信息\r\n handleBuild(val) {\r\n let newform = tools.formatData(val);\r\n let Param = {\r\n content: [newform],\r\n };\r\n if (newform.id) {\r\n ScanController.objectUpdateBuild(Param).then((res) => {\r\n this.$message.success(\"更新成功\");\r\n this.$refs.addBuildDialog.closeDialog();\r\n });\r\n } else {\r\n ScanController.objectCreateBuild(Param).then((res) => {\r\n this.$message.success(\"创建成功\");\r\n this.$refs.addBuildDialog.closeDialog();\r\n });\r\n }\r\n setTimeout(() => {\r\n this.handleBuildQuery();\r\n this.init();\r\n }, 500);\r\n },\r\n //delete floor\r\n handleDelete(floor) {\r\n this.delText = \"楼层\";\r\n this.delDialogVis = true;\r\n this.curFloorId = floor.id;\r\n },\r\n //确认删除弹窗关闭\r\n handleClose() {},\r\n addFloor() {\r\n this.curFloorId = \"\";\r\n this.floorTitle = \"添加楼层\";\r\n this.$refs.addFloorDialog.showDialog();\r\n },\r\n // 获取列表\r\n getFloorTableData() {\r\n let floorParam = {\r\n cascade: [{ name: \"floorThroughList\" }],\r\n orders: \"floorSequenceID desc\",\r\n pageNumber: this.page.pageNumber,\r\n pageSize: this.page.pageSize,\r\n filters: `buildingId='${this.curBuildId}'`,\r\n };\r\n ScanController.floorQueryAndSign(floorParam).then((res) => {\r\n this.tableData = res.content;\r\n this.page.total = res.total;\r\n });\r\n },\r\n // 创建楼层成功-修改关系成功\r\n refresh() {\r\n this.getFloorTableData();\r\n },\r\n // 确认删除(删除建筑-楼层公用)\r\n confirmDel() {\r\n if (this.delText == \"楼层\") {\r\n let delParam = [{ id: this.curFloorId }];\r\n this.delDialogVis = false;\r\n ScanController.deleteFloorInfo(delParam).then((res) => {\r\n this.$message.success(\"删除成功\");\r\n this.init();\r\n });\r\n } else {\r\n // 删除建筑\r\n if (this.tableData && this.tableData.length) {\r\n this.$message.error(\"当前建筑中包含楼层,不可删除\");\r\n this.delDialogVis = false;\r\n } else {\r\n let param = [{ id: this.curBuildId }];\r\n this.delDialogVis = false;\r\n ScanController.deleteBuildInfo(param).then((res) => {\r\n this.$message.success(\"删除成功\");\r\n this.handleBuildQuery();\r\n this.init();\r\n });\r\n }\r\n }\r\n },\r\n // 修改楼层信息\r\n editFloorData(floor) {\r\n this.floorTitle = \"编辑楼层信息\";\r\n this.curFloorId = floor.id;\r\n this.$refs.addFloorDialog.showDialog(floor);\r\n },\r\n // 修改楼层贯通关系\r\n changeConnection(row) {\r\n this.$refs.addConnectivity.showDialog();\r\n this.$refs.addConnectivity.floor = row;\r\n },\r\n // 查看平面图\r\n checkDrawImg(row, index) {\r\n if (3 == index) {\r\n this.modelId = \"\";\r\n } else if (index == 1) {\r\n this.modelId = row.infos.floorMap;\r\n } else {\r\n this.modelId = row.modelId;\r\n }\r\n const pa = { modelId: this.modelId, FloorID: row.id, BuildID: row.buildingId, BuildName: this.curBuildName, FloorName: row.localName };\r\n this.$router.push({ name: \"repetitionGraphy\", query: pa });\r\n },\r\n // 查询建筑信息\r\n handleBuildQuery() {\r\n let param = {\r\n projectId: this.projectId,\r\n orders: \"localName asc\",\r\n pageNumber: 1,\r\n pageSize: 500,\r\n };\r\n ScanController.objectQueryBuild(param).then((res) => {\r\n this.currentBuildList = res.content;\r\n });\r\n },\r\n },\r\n watch: {\r\n projectId() {\r\n this.init();\r\n },\r\n },\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n#bd-fl-manage {\r\n overflow: hidden;\r\n height: 100%;\r\n position: relative;\r\n\r\n .el-row {\r\n height: 100%;\r\n\r\n .el-col-4 {\r\n width: 17%;\r\n }\r\n\r\n .el-col-20 {\r\n width: 82%;\r\n }\r\n\r\n & > div {\r\n float: left;\r\n height: 100%;\r\n overflow: hidden;\r\n background-color: #fff;\r\n box-sizing: border-box;\r\n border: 1px solid #dfe6ec;\r\n\r\n .action-box {\r\n padding: 10px;\r\n\r\n .el-button--small {\r\n padding: 10px 11px;\r\n }\r\n }\r\n }\r\n\r\n .l-list {\r\n width: 17%;\r\n overflow-y: auto;\r\n\r\n h4 {\r\n padding-left: 10px;\r\n border-top: 1px solid #d9d9d9;\r\n border-bottom: 1px solid #d9d9d9;\r\n background: #d9d9d9;\r\n color: #2b2b2b;\r\n line-height: 44px;\r\n }\r\n\r\n .build-list {\r\n line-height: 48px;\r\n\r\n .floor-item {\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n\r\n span {\r\n margin-left: 10px;\r\n }\r\n }\r\n\r\n .floor-item.active,\r\n .floor-item:hover {\r\n background-color: #f5f7fa;\r\n color: #000;\r\n }\r\n }\r\n }\r\n\r\n .r-table {\r\n width: 82%;\r\n margin-left: 1%;\r\n\r\n .table-box {\r\n height: calc(100% - 54px);\r\n margin-bottom: 8px;\r\n\r\n .iconfont {\r\n vertical-align: middle;\r\n }\r\n\r\n /deep/ .el-badge__content.is-fixed {\r\n transform: translateY(-6%) translateX(-100%);\r\n }\r\n\r\n p {\r\n cursor: pointer;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=c943ccd0&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=c943ccd0&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c943ccd0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"repetitionGraphy\"}},[_c('div',{staticClass:\"buttons\"},[_c('el-button',{attrs:{\"icon\":\"el-icon-back\",\"size\":\"mini\"},on:{\"click\":_vm.backRouter}}),(!_vm.hasModel)?[(_vm.step==-1)?_c('el-upload',{staticClass:\"upload-demo\",attrs:{\"action\":\"string\",\"http-request\":_vm.uploadAndSubmit,\"show-file-list\":false,\"accept\":\".jpg,.png\",\"before-upload\":_vm.beforeUpload}},[_c('el-button',{attrs:{\"size\":\"mini\"}},[_vm._v(_vm._s(_vm.hasGraph?'替换平面图图片':'上传平面图图片'))])],1):_vm._e(),(_vm.step==0)?_c('el-button',{staticStyle:{\"float\":\"right\"},attrs:{\"size\":\"mini\",\"type\":\"primary\",\"disabled\":_vm.nextStepBtnDisable},on:{\"click\":_vm.nextStep}},[_vm._v(\"下一步\")]):_vm._e(),(_vm.step==1)?_c('el-button',{staticStyle:{\"float\":\"right\"},attrs:{\"size\":\"mini\",\"type\":\"primary\"},on:{\"click\":_vm.nextStep}},[_vm._v(\"保存\")]):_vm._e(),(_vm.step==1)?_c('el-button',{staticStyle:{\"float\":\"right\"},attrs:{\"size\":\"mini\"},on:{\"click\":_vm.lastStep}},[_vm._v(\"上一步\")]):_vm._e()]:[(!_vm.isEdit)?_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":_vm.changeGraphy}},[_vm._v(_vm._s(_vm.hasGraph?'替换模型文件':'关联模型文件'))]):_vm._e(),((_vm.sign||_vm.otherSign)&&!_vm.isEdit)?_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":_vm.editGraphy}},[_vm._v(\"编辑平面图\")]):_vm._e(),(_vm.isEdit)?_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":_vm.cancel}},[_vm._v(\"取消\")]):_vm._e(),(_vm.isEdit)?_c('el-button',{attrs:{\"size\":\"mini\",\"type\":\"primary\"},on:{\"click\":_vm.confirm}},[_vm._v(\"确认\")]):_vm._e(),(_vm.repeatFloor.length)?_c('span',{staticClass:\"repeatTips\",attrs:{\"title\":_vm.repeatTextTips}},[_vm._v(_vm._s(_vm.repeatTextTips))]):_vm._e()],(_vm.file.FolderName)?_c('span',{staticStyle:{\"float\":\"right\"}},[_vm._v(\"当前对应的模型文件:\"+_vm._s(_vm.file.FolderName)+\" - \"+_vm._s(_vm.file.FloorName))]):_vm._e()],2),_c('div',{staticClass:\"drawImg\"},[(_vm.hasGraph)?_c('div',{staticStyle:{\"width\":\"100%\",\"height\":\"100%\",\"position\":\"relative\"}},[_c('drawFloor',{ref:\"drawFloor\",attrs:{\"isEdit\":_vm.isEdit,\"showTools\":true,\"id\":1},on:{\"changeSign\":_vm.changeSign,\"getGraphSuc\":_vm.getGraphSuc,\"handled\":_vm.repeatHandled}}),(_vm.step>-1)?_c('div',{staticClass:\"stepContainer\"},[_c('el-steps',{attrs:{\"active\":_vm.step,\"align-center\":\"\",\"finish-status\":\"success\",\"process-status\":\"process\"}},[_c('el-step',{attrs:{\"title\":\"设定比例尺\",\"description\":_vm.stepDes[0]}}),_c('el-step',{attrs:{\"title\":\"楼层对齐\",\"description\":_vm.stepDes[1]}})],1)],1):_vm._e(),(_vm.step==1)?_c('ul',{staticClass:\"floorList\"},[(_vm.floorList.length > 1)?[_c('li',{staticStyle:{\"border-bottom\":\"1px solid #ccc\",\"text-align\":\"center\",\"padding\":\"0\"}},[_vm._v(\"选择对齐楼层\")]),_vm._l((_vm.floorList),function(t){return _c('li',{key:t.id},[_c('el-radio',{attrs:{\"label\":t,\"disabled\":t.id == _vm.FloorID},on:{\"change\":_vm.changeFloor},model:{value:(_vm.floorRadio),callback:function ($$v) {_vm.floorRadio=$$v},expression:\"floorRadio\"}},[_vm._v(_vm._s(t.localId || t.localName))])],1)})]:[_c('li',{staticStyle:{\"text-align\":\"center\",\"padding\":\"0\"}},[_vm._v(\" 暂无对齐楼层 \")])]],2):_vm._e()],1):_c('div',{staticStyle:{\"width\":\"100%\",\"height\":\"100%\"}},[_vm._m(0)])]),_c('checkGraphy',{ref:\"checkGraphy\",attrs:{\"alreadyRelatedModel\":_vm.alreadyRelatedModel},on:{\"refresh\":_vm.refresh}}),_c('setScaleDialog',{ref:\"setScaleDialog\",on:{\"textChange\":_vm.scaleTextChange}}),_c('backTips',{ref:\"backTips\",on:{\"back\":_vm.runBack}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"center\",staticStyle:{\"padding-top\":\"300px\"}},[_c('i',{staticClass:\"icon-wushuju iconfont\"}),_vm._v(\"暂无平面图 \")])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.canvasLoading),expression:\"canvasLoading\"}],staticClass:\"drawFloor\",attrs:{\"id\":(\"drawFloor\" + _vm.id)}},[_c('canvas',{ref:\"canvas\",attrs:{\"id\":(\"floorCanvas\" + _vm.id),\"width\":_vm.cadWidth,\"height\":_vm.cadHeight,\"tabindex\":\"0\"}}),(_vm.showTools)?_c('div',{staticClass:\"operate\"},[_c('canvasFun',{ref:\"canvasFun\",attrs:{\"config\":_vm.config},on:{\"fit\":_vm.fit,\"savePng\":_vm.savePng,\"saveSvg\":_vm.saveSvg,\"divide\":_vm.divide,\"clearDivide\":_vm.clearDivide,\"scale\":_vm.scale,\"changeAbsorb\":_vm.changeAbsorb,\"saveJson\":_vm.saveJson}})],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-row',{class:{'isEdit':_vm.config.isEdit},attrs:{\"id\":\"canvas-actions-box\"}},[(_vm.config.isEdit&&_vm.config.groupSelect)?_c('div',{class:{'active':_vm.active=='groupSelect'},on:{\"click\":_vm.groupSelect}},[_c('i',{staticClass:\"iconfont icon-shuxingxuanze\"})]):_vm._e(),_c('div',{on:{\"click\":_vm.fitToWindow}},[_c('i',{staticClass:\"iconfont icon-maximize\"})]),(!_vm.config.isEdit)?_c('div',[_c('el-dropdown',{attrs:{\"size\":\"mini\",\"placement\":\"top-start\"},on:{\"command\":_vm.handleCommand}},[_c('i',{staticClass:\"el-icon-download\",staticStyle:{\"font-size\":\"20px\",\"color\":\"#fff\"}}),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{attrs:{\"command\":\"savePng\"}},[_vm._v(\"保存为png\")]),_c('el-dropdown-item',{attrs:{\"command\":\"saveSvg\"}},[_vm._v(\"保存为svg\")]),_c('el-dropdown-item',{attrs:{\"command\":\"saveJson\"}},[_vm._v(\"保存为Json\")])],1)],1)],1):_vm._e(),(_vm.config.isEdit&&_vm.config.divide)?_c('div',{class:{'active':_vm.active=='divide'},on:{\"click\":_vm.divide}},[_c('el-dropdown',{attrs:{\"size\":\"mini\",\"placement\":\"top-start\",\"hide-on-click\":false},on:{\"command\":_vm.handleDivideCommand}},[_c('i',{staticClass:\"iconfont icon-edit1\"}),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{attrs:{\"command\":\"savePng\"}},[_vm._v(\" 吸附 \"),_c('el-switch',{model:{value:(_vm.isSwitch),callback:function ($$v) {_vm.isSwitch=$$v},expression:\"isSwitch\"}})],1)],1)],1)],1):_vm._e(),(_vm.config.isEdit&&_vm.config.divide)?_c('div',{on:{\"click\":_vm.clearDivide}},[_c('i',{staticClass:\"iconfont icon-Erase\"})]):_vm._e(),_c('div',{on:{\"click\":_vm.reduce}},[_c('i',{staticClass:\"iconfont icon-narrow\"})]),_c('div',{staticClass:\"line\"},[_c('el-slider',{attrs:{\"tooltip-class\":\"tooltip-class\",\"min\":_vm.min,\"show-tooltip\":false,\"max\":_vm.max},on:{\"input\":_vm.scale},model:{value:(_vm.sliderVal),callback:function ($$v) {_vm.sliderVal=$$v},expression:\"sliderVal\"}})],1),_c('div',{on:{\"click\":_vm.plus}},[_c('i',{staticClass:\"iconfont icon-zoom\"})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <el-row id=\"canvas-actions-box\" :class=\"{'isEdit':config.isEdit}\">\r\n <!-- <div :class=\"{'active':active=='move'}\">\r\n <i class=\"iconfont icon-move\" @click=\"moveCanvas\"></i>\r\n </div> -->\r\n <div v-if=\"config.isEdit&&config.groupSelect\" :class=\"{'active':active=='groupSelect'}\" @click=\"groupSelect\">\r\n <i class=\"iconfont icon-shuxingxuanze\"></i>\r\n </div>\r\n <div @click=\"fitToWindow\">\r\n <i class=\"iconfont icon-maximize\"></i>\r\n </div>\r\n <div v-if=\"!config.isEdit\">\r\n <el-dropdown size=\"mini\" placement=\"top-start\" @command=\"handleCommand\">\r\n <i class=\"el-icon-download\" style=\"font-size:20px;color:#fff;\"></i>\r\n <el-dropdown-menu slot='dropdown'>\r\n <el-dropdown-item command=\"savePng\">保存为png</el-dropdown-item>\r\n <el-dropdown-item command=\"saveSvg\">保存为svg</el-dropdown-item>\r\n <el-dropdown-item command=\"saveJson\">保存为Json</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n </div>\r\n <div v-if=\"config.isEdit&&config.divide\" :class=\"{'active':active=='divide'}\" @click=\"divide\">\r\n <el-dropdown size=\"mini\" placement=\"top-start\" @command=\"handleDivideCommand\" :hide-on-click=\"false\">\r\n <i class=\"iconfont icon-edit1\"></i>\r\n <el-dropdown-menu slot='dropdown'>\r\n <el-dropdown-item command=\"savePng\">\r\n 吸附 <el-switch v-model=\"isSwitch\"></el-switch>\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n </div>\r\n <div v-if=\"config.isEdit&&config.divide\" @click=\"clearDivide\">\r\n <i class=\"iconfont icon-Erase\"></i>\r\n </div>\r\n <!-- <div v-if=\"config.isEdit\" @click=\"undo\">\r\n <i class=\"iconfont icon-Cancel\"></i>\r\n </div>\r\n <div v-if=\"config.isEdit\" @click=\"redo\">\r\n <i class=\"iconfont icon-Anti-cancel\"></i>\r\n </div> -->\r\n <div @click=\"reduce\">\r\n <i class=\"iconfont icon-narrow\"></i>\r\n </div>\r\n <div class=\"line\">\r\n <el-slider tooltip-class=\"tooltip-class\" :min=\"min\" v-model=\"sliderVal\" :show-tooltip=\"false\" @input=\"scale\" :max=\"max\"></el-slider>\r\n </div>\r\n <div @click=\"plus\">\r\n <i class=\"iconfont icon-zoom\"></i>\r\n </div>\r\n </el-row>\r\n</template>\r\n<script>\r\nexport default {\r\n data() {\r\n return {\r\n sliderVal: 1, // 滑块值\r\n active: '',\r\n min: 1,\r\n max: 1000,\r\n everyScale: 1, // 每份的放大倍数\r\n isSwitch: false, // 是否开启吸附\r\n }\r\n },\r\n props: {\r\n config: {\r\n type: Object,\r\n default: {\r\n isEdit: false,\r\n divide: true,\r\n groupSelect: false\r\n }\r\n }\r\n },\r\n computed: {\r\n },\r\n methods: {\r\n // 移动画布\r\n // moveCanvas() {\r\n // this.active = this.active != \"move\" ? \"move\" : '';\r\n // this.$emit('move', this.active == 'move');\r\n // },\r\n //\r\n groupSelect() {\r\n this.active = 'groupSelect';\r\n this.$emit('groupSelect');\r\n },\r\n // 适配大小\r\n fitToWindow() {\r\n this.$emit('fit');\r\n },\r\n // 下拉菜单\r\n handleCommand(command) {\r\n this.$emit(command)\r\n },\r\n // 是否开启吸附\r\n handleDivideCommand(commond) {\r\n this.$emit('changeAbsorb', this.isSwitch);\r\n },\r\n // 切割编辑\r\n divide() {\r\n this.active = 'divide';\r\n this.$emit('divide');\r\n },\r\n // 清除编辑\r\n clearDivide() {\r\n this.active = '';\r\n this.$emit('clearDivide');\r\n },\r\n // 撤销\r\n undo() {\r\n this.$emit('undo');\r\n },\r\n // 反撤销\r\n redo() {\r\n this.$emit('redo');\r\n },\r\n // 减\r\n reduce() {\r\n this.sliderVal /= 1.1;\r\n if (this.sliderVal < this.min) {\r\n this.sliderVal = this.min;\r\n }\r\n this.scale(this.sliderVal);\r\n },\r\n // 缩放\r\n scale(val) {\r\n // 换算\r\n let scale = val * this.everyScale / 10;\r\n this.$emit('scale', scale);\r\n },\r\n // 加\r\n plus() {\r\n this.sliderVal *= 1.1;\r\n if (this.sliderVal > this.maxScale) {\r\n this.sliderVal = this.maxScale;\r\n }\r\n this.scale(this.sliderVal);\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n#canvas-actions-box {\r\n // min-width: 542px;\r\n & > div {\r\n float: left;\r\n font-size: 20px;\r\n padding: 0 10px;\r\n color: #fff;\r\n background-color: #6da60f;\r\n i {\r\n cursor: pointer;\r\n color: #fff;\r\n }\r\n }\r\n & > div:active {\r\n background-color: #4b7902;\r\n }\r\n & > div.active {\r\n background-color: #4b7902;\r\n }\r\n &.isEdit > div {\r\n background-color: #02a7f0;\r\n }\r\n &.isEdit > div:active {\r\n background-color: #027db4;\r\n }\r\n &.isEdit > div.active {\r\n background-color: #027db4;\r\n }\r\n & > div.line {\r\n width: 200px;\r\n height: 40px;\r\n padding: 0;\r\n /deep/.el-slider__runway {\r\n margin: 18px 0;\r\n height: 4px;\r\n .el-slider__bar {\r\n background-color: #fff;\r\n height: 4px;\r\n }\r\n }\r\n }\r\n}\r\n</style>","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./canvasFun.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./canvasFun.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./canvasFun.vue?vue&type=template&id=0a368011&scoped=true&\"\nimport script from \"./canvasFun.vue?vue&type=script&lang=js&\"\nexport * from \"./canvasFun.vue?vue&type=script&lang=js&\"\nimport style0 from \"./canvasFun.vue?vue&type=style&index=0&id=0a368011&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0a368011\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div :id=\"`drawFloor${id}`\" class=\"drawFloor\" v-loading=\"canvasLoading\">\r\n <canvas :id=\"`floorCanvas${id}`\" :width=\"cadWidth\" :height=\"cadHeight\" ref=\"canvas\" tabindex=\"0\"></canvas>\r\n <div class=\"operate\" v-if=\"showTools\">\r\n <canvasFun @fit=\"fit\" @savePng=\"savePng\" @saveSvg=\"saveSvg\" @divide=\"divide\" @clearDivide=\"clearDivide\" @scale=\"scale\"\r\n @changeAbsorb=\"changeAbsorb\" :config=\"config\" ref=\"canvasFun\" @saveJson=\"saveJson\"></canvasFun>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { DivideFloorScene, FloorView, Opt } from \"@saga-web/cad-engine/lib\"\r\nimport { SColor, SPoint } from \"@saga-web/draw/lib\";\r\nimport canvasFun from \"@/components/old-adm/business_space/newGraphy/canvasFun\"\r\nimport ScanController from \"@/controller/old-adm/ScanController\";\r\nimport { EditLineItem } from \"@saga-web/cad-engine\"\r\nimport { mapGetters } from \"vuex\";\r\nexport default {\r\n components: {\r\n canvasFun\r\n },\r\n data() {\r\n return {\r\n drawMainScene: null,\r\n view: null,\r\n dataKey: '',\r\n cadWidth: 800,\r\n cadHeight: 600,\r\n canvasLoading: false,\r\n FloorID: '',\r\n Outline: [],\r\n floorData: {},\r\n config: {\r\n isEdit: false,\r\n divide: true\r\n },\r\n shadeList: [],\r\n type: 1, // 当前图展示类型\r\n scaleItem: null, // 比例尺item\r\n urlModelId: '', // url中传入的modelid\r\n };\r\n },\r\n props: {\r\n isEdit: {\r\n default: false\r\n },\r\n showTools: {\r\n default: false\r\n },\r\n id: {\r\n default: 0\r\n },\r\n dialog: {\r\n default: false\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(\"layout\", [\"projectId\", \"projects\"]),\r\n projectName() {\r\n let projectObj = this.projects.find(item => {\r\n return item.id == this.projectId\r\n })\r\n return projectObj ? projectObj.name ? projectObj.name : projectObj.id : this.projectId\r\n }\r\n },\r\n created() {\r\n this.FloorID = this.$route.query.FloorID;\r\n this.urlModelId = this.$route.query.modelId\r\n Opt.sceneMarkColor = new SColor('#00000080');\r\n if (!this.dialog) {\r\n this.init();\r\n }\r\n },\r\n mounted() {\r\n this.cadWidth = document.getElementById(`drawFloor${this.id}`).offsetWidth;\r\n this.cadHeight = document.getElementById(`drawFloor${this.id}`).offsetHeight;\r\n },\r\n methods: {\r\n //\r\n init() {\r\n this.getFloorData();\r\n },\r\n // 初始化canvas\r\n initGraphy(Id, type) {\r\n // type=1 => id:模型id\r\n // type=2 => id:floormap\r\n // type=3 => id:图片的key\r\n let that = this;\r\n that.type = type;\r\n that.clearGraphy()\r\n that.drawMainScene = new DivideFloorScene();\r\n that.canvasLoading = true;\r\n if (type == 1) {\r\n that.drawMainScene.getFloorData(`${window.__systemConf.baseServiceUrl}/revit-algorithm/base-graph/query`, { ModelId: Id }).then(res => {\r\n that.getGraphtSuc(res)\r\n })\r\n } else if(type==2){\r\n that.drawMainScene.loadUrl(`${window.__systemConf.baseServiceUrl}/image-service/common/file_get?systemId=revit&key=${Id}`).then(res => {\r\n that.getGraphtSuc(res)\r\n })\r\n }else if(type==3){\r\n that.drawMainScene.loadImg(`${window.__systemConf.baseServiceUrl}/image-service/common/image_get?systemId=dataPlatform&key=${Id}`, res=>{\r\n that.getGraphtSuc(res)\r\n })\r\n }\r\n },\r\n // 获取底图成功\r\n getGraphtSuc(res) {\r\n this.canvasLoading = false;\r\n if (res == 'error') {\r\n this.FloorMap = '';\r\n console.log('数据解析异常');\r\n return;\r\n }\r\n if (res.Result == 'failure') {\r\n this.showTools = false;\r\n this.$message.warning(res.Message);\r\n return;\r\n }\r\n this.view.scene = this.drawMainScene;\r\n this.view.fitSceneToView();\r\n this.drawMainScene.isSpaceSelectable = false;\r\n\r\n if (this.type == 3) {\r\n this.addScaleItem(this.floorData.properties)\r\n this.$emit('getGraphSuc');\r\n if (this.floorData.infos && this.floorData.infos.FloorMapShift) {\r\n const struct = JSON.parse(this.floorData.infos.FloorMapShift)\r\n const x = struct.x;\r\n const y = struct.y;\r\n if (x != 0 || y != 0) {\r\n this.drawMainScene.imgList[0].moveTo(x, y);\r\n }\r\n }\r\n }\r\n\r\n if (this.$refs.canvasFun) {\r\n this.view.minScale = this.view.scale;\r\n this.$refs.canvasFun.everyScale = this.view.scale;\r\n }\r\n if (this.floorData.outline && this.floorData.outline.length) {\r\n let newArr = this.floorData.outline.map(t => {\r\n return new SPoint(t.X, t.Y);\r\n })\r\n this.drawMainScene.addSceneMark(newArr);\r\n }\r\n this.$emit('handled', this.floorData.outline && this.floorData.outline.length > 0)\r\n },\r\n // 获取楼层数据\r\n getFloorData() {\r\n let pa = {\r\n filters: `id='${this.FloorID}'`,\r\n // 根据接口调整\r\n // cascade: [{ name: 'floorOutline' }]\r\n }\r\n // 先用 floorQuery 级联 floorOutline 以后与 floorQueryOutline 一块使用\r\n const temp = this.urlModelId && this.urlModelId.split('.')[1]\r\n if (temp && (temp.toLowerCase() == 'png' || temp.toLowerCase() == 'jpg')) { //底图为图片且已经绑定过图片\r\n ScanController.floorQueryAndSign(pa).then(res => {\r\n this.floorData = res.content[0];\r\n if (this.floorData.infos && this.floorData.infos.floorMap) {\r\n let floorMap = this.floorData.infos.floorMap\r\n this.initGraphy(floorMap, 3)\r\n }\r\n })\r\n } else {\r\n // floorQuery\r\n ScanController.floorQueryOutline(pa).then(res => {\r\n this.floorData = res.content[0];\r\n if (this.floorData.infos && this.floorData.infos.floorMap) {\r\n this.getOtherFloorOutLine();\r\n let floorMap = this.floorData.infos.floorMap\r\n this.initGraphy(floorMap, 2)\r\n }\r\n })\r\n }\r\n },\r\n // 获取绑定该模型id的其他楼层轮廓线\r\n getOtherFloorOutLine() {\r\n let modelid = this.floorData.modelId;\r\n if (modelid) {\r\n let pa = {\r\n filters: `modelId='${modelid}'`,\r\n cascade: [{ name: 'building' }]\r\n }\r\n this.shadeList = [];\r\n ScanController.floorQueryOutline(pa).then(res => {\r\n const temp = res.content.map(t => {\r\n if (t.id != this.FloorID) {\r\n if ( t.outline && t.outline.length) {\r\n let line = t.outline.map(item => {\r\n return new SPoint(item.X, item.Y);\r\n })\r\n this.shadeList.push(line);\r\n }\r\n return t\r\n }\r\n }).filter(item => item);\r\n this.drawMainScene.addAllShade(this.shadeList);\r\n this.$emit('changeSign', res.content.length > 1, temp);\r\n });\r\n }\r\n },\r\n // 添加比例尺item 当楼层图为图片类型时 回显比例尺\r\n addScaleItem(data) {\r\n this.scaleItem = new EditLineItem(null)\r\n this.scaleItem.strokeColor = SColor.Red;\r\n this.drawMainScene.addItem(this.scaleItem)\r\n if (data && data.line && data.line.length == 2) {\r\n this.scaleItem.line = data.line;\r\n this.scaleItem.text = data.text;\r\n // todo\r\n this.scaleItem.pointChange();\r\n }\r\n },\r\n // 清空平面图\r\n clearGraphy() {\r\n if (this.view) {\r\n this.view.scene = null;\r\n return\r\n }\r\n let id = `floorCanvas${this.id}`;\r\n this.view = new FloorView(id)\r\n },\r\n // canvas 获取焦点\r\n focus() {\r\n document.getElementById(`floorCanvas${this.id}`).focus()\r\n },\r\n // 工具栏操作\r\n // 适配底图到窗口\r\n fit() {\r\n this.view.fitSceneToView()\r\n },\r\n // 保存为png\r\n savePng() {\r\n this.view.saveImage(`${this.projectName}-${this.buildFloorName}.png`, 'png');\r\n },\r\n // 保存为svg\r\n saveSvg() {\r\n this.view.saveSceneSvg(`${this.projectName}-${this.buildFloorName}.svg`, 6400, 4800);\r\n },\r\n // 保存json\r\n saveJson() {\r\n this.view.saveFloorJson(`${this.projectName}-${this.buildFloorName}.json`)\r\n },\r\n // 切割划分\r\n divide() {\r\n this.drawMainScene.isMarking = true;\r\n },\r\n // 清除切割划分\r\n clearDivide() {\r\n this.drawMainScene.clearSceneMark()\r\n },\r\n // 吸附\r\n changeAbsorb(isAbsorbing) {\r\n this.drawMainScene.isAbsorbing = isAbsorbing;\r\n },\r\n // 缩放\r\n scale(val) {\r\n if (!this.view) {\r\n return;\r\n }\r\n let scale = this.view.scale;\r\n this.view.scaleByPoint(val / scale, this.cadWidth / 2, this.cadHeight / 2)\r\n },\r\n },\r\n watch: {\r\n \"view.scale\": {\r\n handler(n) {\r\n if (this.$refs.canvasFun) {\r\n let s = n * 10 / this.view.minScale\r\n this.$refs.canvasFun.sliderVal = s > 1000 ? 1000 : s;\r\n }\r\n }\r\n },\r\n \"isEdit\": {\r\n handler(n) {\r\n this.config.isEdit = n;\r\n }\r\n }\r\n }\r\n};\r\n</script>\r\n<style scoped lang=\"less\">\r\n.drawFloor {\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n .operate {\r\n position: absolute;\r\n left: 50%;\r\n bottom: 20px;\r\n transform: translateX(-50%);\r\n z-index: 99;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./drawFloor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./drawFloor.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./drawFloor.vue?vue&type=template&id=e3186cda&scoped=true&\"\nimport script from \"./drawFloor.vue?vue&type=script&lang=js&\"\nexport * from \"./drawFloor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./drawFloor.vue?vue&type=style&index=0&id=e3186cda&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e3186cda\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"id\":\"checkGraphy\",\"title\":\"添加平面图\",\"visible\":_vm.checkGraphyVisible,\"width\":\"500px\"},on:{\"update:visible\":function($event){_vm.checkGraphyVisible=$event},\"close\":_vm.handleClose}},[_c('div',{staticClass:\"bodys\"},[_c('el-cascader',{attrs:{\"options\":_vm.options,\"show-all-levels\":false,\"clearable\":\"\",\"placeholder\":\"请选择模型文件\"},on:{\"change\":_vm.handleChange,\"active-item-change\":_vm.handleItemChange},model:{value:(_vm.casVal),callback:function ($$v) {_vm.casVal=$$v},expression:\"casVal\"}})],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":_vm.handleClose}},[_vm._v(\"取 消\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.bindGraphy}},[_vm._v(\"确 定\")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <el-dialog id='checkGraphy' title='添加平面图' :visible.sync='checkGraphyVisible' width='500px' @close='handleClose'>\r\n <div class='bodys'>\r\n <el-cascader\r\n :options='options'\r\n :show-all-levels='false'\r\n @change='handleChange'\r\n @active-item-change='handleItemChange'\r\n clearable\r\n placeholder='请选择模型文件'\r\n v-model='casVal'\r\n ></el-cascader>\r\n </div>\r\n <span slot='footer' class='dialog-footer'>\r\n <el-button @click='handleClose'>取 消</el-button>\r\n <el-button type='primary' @click='bindGraphy'>确 定</el-button>\r\n </span>\r\n </el-dialog>\r\n</template>\r\n<script>\r\nimport drawFloor from './drawFloor'\r\nimport { mapGetters } from 'vuex'\r\nimport FileController from '@/controller/old-adm/fileController'\r\nimport ScanController from '@/controller/old-adm/ScanController'\r\n\r\nexport default {\r\n components: {\r\n drawFloor,\r\n },\r\n computed: {\r\n ...mapGetters('layout', ['projectId']),\r\n },\r\n props: {\r\n alreadyRelatedModel: {\r\n default: [],\r\n },\r\n },\r\n data() {\r\n return {\r\n casVal: [],\r\n jsonKey: '', //map.josn\r\n checkGraphyVisible: false,\r\n options: [],\r\n floor: {}, // 当前选中的楼层数据\r\n modelIdToFloorId: {},\r\n key: '',\r\n }\r\n },\r\n methods: {\r\n // 弹窗显示\r\n showDialog(floor) {\r\n this.floor = floor\r\n this.checkGraphyVisible = true\r\n },\r\n // 关闭弹窗\r\n handleClose() {\r\n this.checkGraphyVisible = false\r\n this.casVal = []\r\n // this.$refs.drawFloorDialog.clearGraphy()\r\n },\r\n //上传图片\r\n uploadAndSubmit(item) {\r\n let file = item.file\r\n console.log(file)\r\n let reader = new FileReader()\r\n let vm = this\r\n let fileType = file.name.split('.')\r\n let type = fileType[fileType.length - 1]\r\n let uploadKey = file.uid\r\n reader.onloadend = function () {\r\n // 这个事件在读取结束后,无论成功或者失败都会触发\r\n if (reader.error) {\r\n } else {\r\n // document.getElementById(\"bytesRead\").textContent = file.size;\r\n // 构造 XMLHttpRequest 对象,发送文件 Binary 数据\r\n var xhr = new XMLHttpRequest()\r\n xhr.open(\r\n /* method */ 'POST',\r\n /* target url */\r\n '/image-service/common/image_upload?systemId=dataPlatform&secret=9e0891a7a8c8e885&overwrite=true&key=' + file.uid + '.' + type\r\n /*, async, default to true */\r\n )\r\n //xhr.overrideMimeType(\"application/octet-stream\");\r\n xhr.send(reader.result)\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState == 4) {\r\n if (xhr.status == 200) {\r\n vm.key = uploadKey + '.' + type\r\n vm.jsonKey = ''\r\n // vm.$refs.drawFloorDialog.initGraphy(vm.key, 3)\r\n //vm.$emit(\"getKey\", file.uid + '.' + type, vm.keyName);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n reader.readAsArrayBuffer(file)\r\n },\r\n // 更新楼层 平面图文件\r\n bindGraphy() {\r\n if (!this.jsonKey && !this.key) {\r\n this.$message.warning('请选择模型文件')\r\n return\r\n }\r\n if (this.alreadyRelatedModel.indexOf(this.modelIdToFloorId[this.jsonKey]) > -1) {\r\n this.$message.warning('此模型已关联该建筑下的楼层')\r\n return\r\n }\r\n let pa = {\r\n floorId: this.floor.FloorID,\r\n buildingId: this.floor.BuildID,\r\n cover: true,\r\n currentModelId: this.floor.CurrentModelId\r\n }\r\n if (this.jsonKey) {\r\n pa.id = this.modelIdToFloorId[this.jsonKey]\r\n FileController.bindFloorModel(pa).then((res) => {\r\n this.$message.success('更新成功')\r\n this.handleClose()\r\n this.$emit('refresh', this.jsonKey, pa)\r\n })\r\n }\r\n if (this.key) {\r\n let Param = {\r\n content: [{ id: this.floor.FloorID, infos: { floorMap: this.key } }]\r\n }\r\n ScanController.manageUpdateFloor(Param).then((res) => {\r\n this.$message.success('更新成功')\r\n this.handleClose()\r\n this.$emit('refresh', this.key)\r\n })\r\n }\r\n },\r\n // 点击多级联动\r\n handleChange(val) {\r\n // this.$refs.drawFloorDialog.initGraphy(val[1], 1)\r\n this.jsonKey = val[1]\r\n this.key = ''\r\n },\r\n // 通过id查询文件夹下模型文件\r\n handleItemChange(val) {\r\n let data = {\r\n FolderId: val[0],\r\n Status: '4',\r\n ProjectId: this.projectId,\r\n }\r\n FileController.queryFloorList(data).then((res) => {\r\n let tempArr = res.Content.map((t) => {\r\n this.modelIdToFloorId[t.CurrentModelId] = t.Id\r\n return {\r\n value: t.CurrentModelId,\r\n label: t.FloorName,\r\n }\r\n })\r\n this.pushChild(this.options, tempArr, val[0])\r\n })\r\n },\r\n // 将模型文件list填到相应的文件夹下\r\n pushChild(options, arr, Code) {\r\n options.map((option) => {\r\n if (option.value == Code) {\r\n option.children = arr\r\n } else {\r\n if (option.children) {\r\n this.pushChild(option.children, arr, Code)\r\n }\r\n }\r\n })\r\n },\r\n init() {\r\n this.getDirectory()\r\n },\r\n // 获取文件夹\r\n getDirectory() {\r\n FileController.queryModel('').then((res) => {\r\n this.options = res.Content.map((t) => {\r\n return {\r\n value: t.Id,\r\n label: t.Name,\r\n children: [],\r\n }\r\n })\r\n })\r\n },\r\n },\r\n created() {\r\n this.init()\r\n },\r\n watch: {\r\n projectId() {\r\n this.init()\r\n },\r\n },\r\n}\r\n</script>\r\n<style lang=\"less\">\r\n#checkGraphy {\r\n .bodys {\r\n .upload-demo {\r\n display: inline-block;\r\n }\r\n\r\n .showBox {\r\n box-sizing: border-box;\r\n width: 100%;\r\n height: 300px;\r\n border: 1px #ccc solid;\r\n padding: 10px;\r\n margin-top: 20px;\r\n }\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./checkGraphy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./checkGraphy.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./checkGraphy.vue?vue&type=template&id=19858893&\"\nimport script from \"./checkGraphy.vue?vue&type=script&lang=js&\"\nexport * from \"./checkGraphy.vue?vue&type=script&lang=js&\"\nimport style0 from \"./checkGraphy.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"title\":\"设定比例尺\",\"visible\":_vm.dialogVis,\"width\":\"500px\",\"id\":\"scaleDialog\",\"close-on-click-modal\":false},on:{\"update:visible\":function($event){_vm.dialogVis=$event}}},[_c('el-row',[_c('div',{staticStyle:{\"line-height\":\"32px\"}},[_vm._v(\"设定比例尺长度 : \")]),_c('div',{staticStyle:{\"width\":\"70%\"}},[_c('el-input-number',{attrs:{\"controls-position\":\"right\",\"min\":0},model:{value:(_vm.scaleInput),callback:function ($$v) {_vm.scaleInput=$$v},expression:\"scaleInput\"}}),_vm._v(\" mm \")],1)]),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{attrs:{\"size\":\"small\"},on:{\"click\":function($event){_vm.dialogVis=false}}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"primary\"},on:{\"click\":_vm.confirm}},[_vm._v(\"确认\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <el-dialog title=\"设定比例尺\" :visible.sync=\"dialogVis\" width=\"500px\" id=\"scaleDialog\" :close-on-click-modal='false'>\r\n <el-row>\r\n <div style=\"line-height:32px;\">设定比例尺长度 : </div>\r\n <div style=\"width:70%\">\r\n <el-input-number v-model=\"scaleInput\" controls-position=\"right\" :min=\"0\"></el-input-number> mm\r\n </div>\r\n </el-row>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button size=\"small\" @click=\"dialogVis=false\">取消</el-button>\r\n <el-button size=\"small\" type=\"primary\" @click=\"confirm\">确认</el-button>\r\n </span>\r\n </el-dialog>\r\n</template>\r\n<script>\r\nexport default {\r\n data() {\r\n return {\r\n dialogVis: false,\r\n scaleInput: '',\r\n item: '', // 当前修改的item\r\n }\r\n },\r\n methods: {\r\n showDialog(v) {\r\n this.dialogVis = true\r\n this.item = v;\r\n this.scaleInput = v.text.substring(0, v.text.length - 3);\r\n },\r\n confirm() {\r\n this.item.text = this.scaleInput + ' mm';\r\n this.item.update()\r\n this.$emit('textChange', this.scaleInput)\r\n this.dialogVis = false\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n#scaleDialog {\r\n .el-row{\r\n height: 50px;\r\n max-height: 200px;\r\n overflow-y: auto;\r\n overflow-x: hidden;\r\n }\r\n .el-row > div {\r\n float: left;\r\n }\r\n .el-row > div + div {\r\n margin-left: 10px;\r\n }\r\n /deep/ .el-input__inner {\r\n vertical-align: baseline;\r\n }\r\n}\r\n</style>","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./setScaleDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./setScaleDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./setScaleDialog.vue?vue&type=template&id=031cf93c&scoped=true&\"\nimport script from \"./setScaleDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./setScaleDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./setScaleDialog.vue?vue&type=style&index=0&id=031cf93c&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"031cf93c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"title\":\"提示\",\"visible\":_vm.dialogVis,\"width\":\"500px\",\"id\":\"tipsDialog\",\"close-on-click-modal\":false},on:{\"update:visible\":function($event){_vm.dialogVis=$event}}},[_c('el-row',[_c('div',{staticStyle:{\"line-height\":\"32px\"}},[_vm._v(\"上传图片未保存,退出后上传图片将失效。是否确认退出?\")])]),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{attrs:{\"size\":\"small\"},on:{\"click\":function($event){_vm.dialogVis=false}}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"primary\"},on:{\"click\":_vm.confirm}},[_vm._v(\"确认\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <el-dialog title=\"提示\" :visible.sync=\"dialogVis\" width=\"500px\" id=\"tipsDialog\" :close-on-click-modal='false'>\r\n <el-row>\r\n <div style=\"line-height:32px;\">上传图片未保存,退出后上传图片将失效。是否确认退出?</div>\r\n </el-row>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button size=\"small\" @click=\"dialogVis=false\">取消</el-button>\r\n <el-button size=\"small\" type=\"primary\" @click=\"confirm\">确认</el-button>\r\n </span>\r\n </el-dialog>\r\n</template>\r\n<script>\r\nexport default {\r\n data() {\r\n return {\r\n dialogVis: false,\r\n scaleInput: '',\r\n item: '', // 当前修改的item\r\n }\r\n },\r\n methods: {\r\n showDialog(v) {\r\n this.dialogVis = true\r\n },\r\n confirm() {\r\n this.dialogVis = false;\r\n this.$emit('back');\r\n }\r\n }\r\n}\r\n</script>","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./backTips.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./backTips.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./backTips.vue?vue&type=template&id=737b230c&\"\nimport script from \"./backTips.vue?vue&type=script&lang=js&\"\nexport * from \"./backTips.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\r\n <!-- 查看平面图页面 -->\r\n <div id='repetitionGraphy'>\r\n <div class='buttons'>\r\n <el-button icon='el-icon-back' size='mini' @click='backRouter'></el-button>\r\n <template v-if=\"!hasModel\">\r\n <el-upload class='upload-demo' action='string' :http-request='uploadAndSubmit' :show-file-list='false' v-if=\"step==-1\" accept=\".jpg,.png\"\r\n :before-upload=\"beforeUpload\">\r\n <el-button size=\"mini\">{{hasGraph?'替换平面图图片':'上传平面图图片'}}</el-button>\r\n </el-upload>\r\n <el-button style='float:right;' size='mini' type='primary' v-if=\"step==0\" @click=\"nextStep\" :disabled=\"nextStepBtnDisable\">下一步</el-button>\r\n <el-button style='float:right;' size='mini' type='primary' v-if=\"step==1\" @click=\"nextStep\">保存</el-button>\r\n <el-button style='float:right;' size='mini' v-if=\"step==1\" @click=\"lastStep\">上一步</el-button>\r\n </template>\r\n <template v-else>\r\n <el-button v-if='!isEdit' size='mini' @click='changeGraphy'>{{hasGraph?'替换模型文件':'关联模型文件'}}</el-button>\r\n <el-button v-if='(sign||otherSign)&&!isEdit' size='mini' @click='editGraphy'>编辑平面图</el-button>\r\n <el-button v-if='isEdit' size='mini' @click='cancel'>取消</el-button>\r\n <el-button v-if='isEdit' size='mini' @click='confirm' type='primary'>确认</el-button>\r\n <span :title=\"repeatTextTips\" class=\"repeatTips\" v-if=\"repeatFloor.length\">{{repeatTextTips}}</span>\r\n </template>\r\n <span style='float:right;' v-if='file.FolderName'>当前对应的模型文件:{{file.FolderName}} - {{file.FloorName}}</span>\r\n </div>\r\n <!-- 展示图片 -->\r\n <div class='drawImg'>\r\n <div style=\"width: 100%;height: 100%;position: relative;\" v-if=\"hasGraph\">\r\n <drawFloor ref='drawFloor' :isEdit='isEdit' :showTools='true' :id='1' @changeSign='changeSign' @getGraphSuc=\"getGraphSuc\" @handled=\"repeatHandled\"></drawFloor>\r\n <div class=\"stepContainer\" v-if=\"step>-1\">\r\n <el-steps :active=\"step\" align-center finish-status=\"success\" process-status=\"process\">\r\n <el-step title=\"设定比例尺\" :description=\"stepDes[0]\"></el-step>\r\n <el-step title=\"楼层对齐\" :description=\"stepDes[1]\"></el-step>\r\n </el-steps>\r\n </div>\r\n <ul class=\"floorList\" v-if=\"step==1\">\r\n <template v-if=\"floorList.length > 1\">\r\n <li style=\"border-bottom:1px solid #ccc;text-align: center;padding: 0\">选择对齐楼层</li>\r\n <li v-for=\"t in floorList\" :key=\"t.id\">\r\n <el-radio v-model=\"floorRadio\" :label=\"t\" @change=\"changeFloor\" :disabled=\"t.id == FloorID\">{{t.localId || t.localName}}</el-radio>\r\n </li>\r\n </template>\r\n <template v-else>\r\n <li style=\"text-align: center;padding: 0\">\r\n 暂无对齐楼层\r\n </li>\r\n </template>\r\n </ul>\r\n </div>\r\n <div style=\"width: 100%;height: 100%\" v-else>\r\n <div class=\"center\" style=\"padding-top: 300px\">\r\n <i class=\"icon-wushuju iconfont\"></i>暂无平面图\r\n </div>\r\n </div>\r\n </div>\r\n <!-- 查看图片弹窗 -->\r\n <checkGraphy ref='checkGraphy' @refresh='refresh' :alreadyRelatedModel='alreadyRelatedModel'></checkGraphy>\r\n <!-- 设定比例尺弹窗 -->\r\n <setScaleDialog ref=\"setScaleDialog\" @textChange=\"scaleTextChange\"></setScaleDialog>\r\n <!-- 退出时弹窗提示 -->\r\n <backTips ref='backTips' @back=\"runBack\"></backTips>\r\n </div>\r\n</template>\r\n<script>\r\nimport drawFloor from './drawGraphy/drawFloor'\r\nimport checkGraphy from './drawGraphy/checkGraphy' //查看图片\r\nimport setScaleDialog from '@/components/old-adm/ready/components/setScaleDialog'\r\nimport backTips from '@/components/old-adm/ready/components/backTips'\r\n\r\nimport ScanController from '@/controller/old-adm/ScanController'\r\nimport FileController from '@/controller/old-adm/fileController'\r\nimport {SItemStatus, SImageShowType } from \"@saga-web/cad-engine\"\r\nimport { SImageItem } from '@saga-web/graph/lib'\r\nimport { SMathUtil } from \"@saga-web/cad-engine/lib/utils/SMathUtil\"\r\nexport default {\r\n components: {\r\n drawFloor,\r\n checkGraphy,\r\n setScaleDialog,\r\n backTips\r\n },\r\n data() {\r\n return {\r\n modelId: '', //\r\n isEdit: false, // 是否编辑模式\r\n FloorID: '',\r\n file: {},\r\n alreadyRelatedModel: [],\r\n sign: false,\r\n otherSign: false,\r\n hasGraph: false, // 当前楼层是否有平面图\r\n hasModel: false, // 项目中时候有模型文件\r\n step: -1, // 当前处于第几步 同时为比例尺item判断是否创建的可编辑的依据;能否返回上页的依据\r\n key: '', // 当楼层图为图片时图的key\r\n stepDes: [\r\n '请在图上点击两点绘制线段并标记实际长度',\r\n '请移动图片与其他楼层对齐'\r\n ], // 描述文字\r\n floorList: [], // 当前建筑下所有楼层\r\n floorRadio: '', // 当前选中的楼层对象\r\n imgService: `${window.__systemConf.baseServiceUrl}/image-service/common/image_get?systemId=dataPlatform&key=`,\r\n curImgItem: null, // 对齐的楼层图片\r\n scaleItem: null, // 比例尺item\r\n baseImgItem: null, // 当前楼层图的图片\r\n nextStepBtnDisable: true, // 比例尺item创建标识\r\n timeOut: true, // 保存按钮延时3秒可操作\r\n repeatFloor: [], // 重复的楼层\r\n handled: false,\r\n }\r\n },\r\n created() {\r\n this.modelId = this.$route.query.modelId\r\n this.FloorID = this.$route.query.FloorID\r\n this.BuildID = this.$route.query.BuildID\r\n this.BuildName = this.$route.query.BuildName\r\n this.FloorName = this.$route.query.FloorName\r\n if (this.modelId != '') {\r\n this.hasGraph = true;\r\n const temp = this.modelId.split('.');\r\n if (temp[1] && (temp[1].toLowerCase() == 'png' || temp[1].toLowerCase() == 'jpg')) {\r\n // return\r\n } else {\r\n this.init()\r\n }\r\n } else {\r\n this.init()\r\n }\r\n this.getCountModel()\r\n this.$nextTick(() => {\r\n this.$refs.drawFloor.buildFloorName = `${this.BuildName}-${this.FloorName}`\r\n })\r\n },\r\n computed: {\r\n repeatTextTips() {\r\n let str = `当前楼层与${this.repeatFloor.join('、')}关联同一个平面图`\r\n if (!this.handled) {\r\n str += `,请通过「编辑平面图」划分当前楼层对应的平面图范围`\r\n }\r\n return str\r\n }\r\n },\r\n mounted() { },\r\n methods: {\r\n init() {\r\n this.getFloorData()\r\n },\r\n // 返回路由\r\n backRouter() {\r\n // 底图为图片 上传完图片后未保存\r\n if (this.step > -1) {\r\n this.$refs.backTips.showDialog();\r\n } else {\r\n this.runBack()\r\n }\r\n },\r\n runBack() {\r\n this.$router.push({ name: 'buildFloor', query: {buildingId: this.BuildID} })\r\n },\r\n // 替换模型文件\r\n changeGraphy() {\r\n this.$refs.checkGraphy.showDialog({ FloorID: this.FloorID, BuildID: this.BuildID, CurrentModelId: this.currentModelId })\r\n },\r\n // 确认保存\r\n confirm() {\r\n let sceneMark = this.$refs.drawFloor.drawMainScene.sceneMark,\r\n Outline = null\r\n if (sceneMark) {\r\n if (sceneMark.outLine.length < 3) {\r\n this.$message.warning('请添加轮廓线')\r\n return\r\n }\r\n if (!sceneMark.closeFlag) {\r\n this.$message.warning('请按回车闭合轮廓线')\r\n this.$refs.drawFloor.focus()\r\n return\r\n }\r\n Outline = this.$refs.drawFloor.drawMainScene.sceneMark.outLine\r\n Outline = Outline.map((t) => {\r\n return {\r\n X: t.x.toFixed(2),\r\n Y: -t.y.toFixed(2),\r\n }\r\n })\r\n }\r\n let pa = {\r\n content: [{ id: this.FloorID, outline: Outline }]\r\n }\r\n if (!Outline) {\r\n pa.nullItems = ['outline']\r\n }\r\n ScanController.floorUpdateOutline(pa).then((res) => {\r\n this.isEdit = false\r\n this.$message.success('更新成功');\r\n this.handled = !!Outline;\r\n })\r\n },\r\n // 取消\r\n cancel() {\r\n this.isEdit = false\r\n this.$refs.drawFloor.init()\r\n },\r\n // 编辑平面图\r\n editGraphy() {\r\n this.isEdit = true\r\n },\r\n // 替换模型文件成功\r\n refresh(modelId,pa) {\r\n this.modelId = modelId\r\n this.hasGraph = true;\r\n const temp = this.modelId.split('.');\r\n if (temp[1]) {\r\n if (temp[1].toLowerCase() != 'png' && temp[1].toLowerCase() != 'jpg') {\r\n // do nothing\r\n } else {\r\n // do nothing\r\n }\r\n } else {\r\n this.key = '';\r\n if (pa && pa.id) {\r\n this.getFileName(pa.id)\r\n this.currentModelId = pa.id;\r\n }\r\n this.initFromModelId(this.modelId)\r\n }\r\n },\r\n // 获取文件夹名称\r\n getFileName(modelId) {\r\n if (!modelId) return\r\n let pa = {\r\n Id: modelId,\r\n }\r\n FileController.getFileNameById(pa).then((res) => {\r\n this.file = res\r\n })\r\n },\r\n // 获取楼层\r\n // 标识 无值:初始化进入 有值'next': 下一步进入\r\n getFloorData(flag) {\r\n let floorParam = {\r\n pageSize: 1000,\r\n filters: `buildingId='${this.BuildID}'`,\r\n orders: 'floorSequenceID desc'\r\n }\r\n ScanController.floorQueryAndSign(floorParam).then((res) => {\r\n this.floorList = res.content.filter(t => t.infos && t.infos.floorMap || t.id == this.FloorID);\r\n // todo\r\n if (flag && flag == 'next') {\r\n this.floorRadio = this.floorList[0];\r\n if (this.floorRadio.id != this.FloorID) {\r\n this.loadOtherImg(this.floorRadio)\r\n }\r\n }\r\n this.alreadyRelatedModel = res.content.map((t) => {\r\n if (t.id != this.FloorID) return t.modelId\r\n this.sign = t.Sign > 0\r\n this.currentModelId = t.modelId;\r\n t.modelId && this.getFileName(t.modelId)\r\n }).filter((t) => t)\r\n })\r\n },\r\n changeSign(flag, arr) {\r\n this.otherSign = flag;\r\n this.repeatFloor = arr.map(t => `${t.building.localName || t.building.name}-${t.localName || t.name}`)\r\n },\r\n // 统计项目下是否有模型文件\r\n getCountModel() {\r\n FileController.countModel({ Filters: \"Status in [4]\" }).then(res => {\r\n this.hasModel = res.Count > 0\r\n })\r\n },\r\n //上传图片\r\n uploadAndSubmit(item) {\r\n let file = item.file\r\n let reader = new FileReader()\r\n let vm = this\r\n let fileType = file.name.split('.')\r\n let type = fileType[fileType.length - 1]\r\n let uploadKey = file.uid\r\n reader.onloadend = function () {\r\n // 这个事件在读取结束后,无论成功或者失败都会触发\r\n if (reader.error) {\r\n } else {\r\n // document.getElementById(\"bytesRead\").textContent = file.size;\r\n // 构造 XMLHttpRequest 对象,发送文件 Binary 数据\r\n var xhr = new XMLHttpRequest()\r\n xhr.open(\r\n /* method */ 'POST',\r\n /* target url */\r\n '/image-service/common/image_upload?systemId=dataPlatform&secret=9e0891a7a8c8e885&overwrite=true&key=' + uploadKey + '.' + type\r\n /*, async, default to true */\r\n )\r\n //xhr.overrideMimeType(\"application/octet-stream\");\r\n xhr.send(reader.result)\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState == 4) {\r\n if (xhr.status == 200) {\r\n vm.key = uploadKey + '.' + type\r\n // 将图片展示\r\n vm.refresh(uploadKey + '.' + type)\r\n // 设置步骤为第一步\r\n vm.step = 0;\r\n // watch中不会走到initGraph,所以手动触发\r\n vm.$nextTick(() => {\r\n vm.initFromModelId(uploadKey + '.' + type)\r\n })\r\n // 设定保存按钮不可操作\r\n this.timeOut = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n reader.readAsArrayBuffer(file)\r\n },\r\n // 上传前判断\r\n beforeUpload(file) {\r\n // 拿到当前上传图片的name,判断其后缀名是否符合\r\n let type = this.isImage(file.name);\r\n if (!type) {\r\n this.$message.error('仅支持png、jpg格式的图片');\r\n return false\r\n }\r\n return true\r\n },\r\n // 封装一个判断图片文件后缀名的方法\r\n isImage(fileName) {\r\n if (typeof fileName !== 'string') return;\r\n let name = fileName.toLowerCase();\r\n return name.endsWith('.png') || name.endsWith('.jpg');\r\n },\r\n // 更新楼层key 为图片,同时更新比例尺\r\n updateFloorKey() {\r\n const scaleItem = this.$refs.drawFloor.scaleItem;\r\n // 比例尺坐标处理,当底图被对齐操作后,需要跟随底图改变坐标\r\n const line = scaleItem.line.map(t => {\r\n return { x: t.x + this.baseImgItem.x, y: t.y + this.baseImgItem.y }\r\n })\r\n // 计算放缩比例\r\n const proDis = SMathUtil.pointDistance(line[0].x, line[0].y, line[1].x, line[1].y)\r\n const proText = scaleItem.text.substring(0, scaleItem.text.length - 3);\r\n const proScale = proDis / proText;\r\n let Param = {\r\n content: [{\r\n id: this.FloorID,\r\n infos: {\r\n floorMap: this.key,\r\n floorMapRatio: proScale,\r\n floorMapShift: JSON.stringify({ x: this.baseImgItem.x, y: this.baseImgItem.y })\r\n },\r\n properties: {\r\n line: line,\r\n text: scaleItem.text\r\n }\r\n }],\r\n }\r\n ScanController.manageUpdateFloor(Param).then((res) => {\r\n this.$message.success('更新成功')\r\n this.step = -1;\r\n this.baseImgItem.globalAlpha = 1\r\n this.baseImgItem.moveable = false;\r\n scaleItem.show()\r\n this.removeLast()\r\n this.$refs.drawFloor.fit()\r\n })\r\n },\r\n // 根据modelid初始化\r\n initFromModelId(id) {\r\n const temp = id.split('.')[1];\r\n if (temp) {\r\n if (temp.toLowerCase() == 'png' || temp.toLowerCase() == 'jpg') {\r\n this.$refs.drawFloor.initGraphy(id, 3)\r\n } else {\r\n this.$refs.drawFloor.initGraphy(id, 2)\r\n }\r\n } else {\r\n this.$refs.drawFloor.initGraphy(id, 1)\r\n }\r\n },\r\n // 上一步\r\n lastStep() {\r\n this.step = 0;\r\n this.$refs.drawFloor.scaleItem.show()\r\n this.baseImgItem.globalAlpha = 1\r\n this.baseImgItem.moveable = false;\r\n this.removeLast()\r\n },\r\n // 下一步||保存\r\n nextStep() {\r\n this.baseImgItem = this.$refs.drawFloor.drawMainScene.imgList[0]\r\n this.baseImgItem.globalAlpha = 0.5\r\n this.baseImgItem.moveable = true;\r\n // 下一步\r\n if (this.step == 0) {\r\n this.step = 1;\r\n this.$refs.drawFloor.scaleItem.hide();\r\n // 获取楼层列表\r\n this.getFloorData('next')\r\n // 延时3秒可操作性保存按钮\r\n setTimeout(() => {\r\n this.timeOut = false\r\n }, 3000)\r\n } else if (this.step == 1) {\r\n // 保存\r\n this.updateFloorKey();\r\n }\r\n },\r\n // 加载图成功 仅在底图为图片时返回成功\r\n getGraphSuc() {\r\n const scaleItem = this.$refs.drawFloor.scaleItem\r\n if (this.step == 0) {\r\n scaleItem.status = SItemStatus.Create;\r\n this.$refs.drawFloor.drawMainScene.grabItem = scaleItem;\r\n scaleItem.connect('changText', this, this.changeText)\r\n scaleItem.moveable = true;\r\n this.clearScaleData(scaleItem);\r\n } else if (this.step == -1) {\r\n scaleItem.status = SItemStatus.Normal;\r\n }\r\n },\r\n // 修改比例尺文字\r\n changeText(t, e) {\r\n this.$refs.setScaleDialog.showDialog(t)\r\n },\r\n // 文本修改\r\n scaleTextChange(v) {\r\n if (v > 0) {\r\n this.nextStepBtnDisable = false\r\n }\r\n },\r\n // 第二部楼层修改\r\n changeFloor(v) {\r\n // v->当前改为的楼层对象\r\n this.removeLast();\r\n this.loadOtherImg(v)\r\n },\r\n // 加载其他楼层图片\r\n loadOtherImg(v) {\r\n if (v.infos && v.infos.floorMap) {\r\n const temp = this.modelId.split('.');\r\n if (temp[1] && (temp[1].toLowerCase() == 'png' || temp[1].toLowerCase() == 'jpg')) {\r\n const url = this.imgService + v.infos.floorMap\r\n this.curImgItem = new SImageItem(null, url);\r\n this.curImgItem.enabled = false;\r\n this.curImgItem.showType = SImageShowType.AutoFit;\r\n if (v.properties) {\r\n try {\r\n const point = JSON.parse(v.infos.floorMapShift)\r\n // 计算两个比例尺差距\r\n const scaleItem = this.$refs.drawFloor.scaleItem\r\n this.curImgItem.zOrder = scaleItem.zOrder - 1;\r\n const r = this.calScaleGap(v.properties, scaleItem);\r\n if (r != 1) {\r\n this.$message.warning('比例尺相差较大,可以返回上一步修改比例尺')\r\n }\r\n this.curImgItem.showType == SImageShowType.Full;\r\n this.curImgItem.moveTo(point.x, point.y);\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n this.$refs.drawFloor.drawMainScene.addItem(this.curImgItem);\r\n this.$refs.drawFloor.fit()\r\n }\r\n }\r\n },\r\n // 清除上一张底图\r\n removeLast() {\r\n if (this.curImgItem) {\r\n this.$refs.drawFloor.drawMainScene.removeItem(this.curImgItem);\r\n this.curImgItem = null;\r\n this.$refs.drawFloor.view.update()\r\n }\r\n },\r\n // 清空比例尺数据\r\n clearScaleData(scaleItem) {\r\n scaleItem.line = [];\r\n scaleItem.pointChange();\r\n scaleItem.text = '0 mm';\r\n },\r\n // 计算两个比例尺差距\r\n calScaleGap(pro, item) {\r\n // pro -> 楼层的properties\r\n // item -> 当前的比例尺item\r\n let result = 1\r\n if (pro.line.length && pro.text) {\r\n try {\r\n const proDis = SMathUtil.pointDistance(pro.line[0].x, pro.line[0].y, pro.line[1].x, pro.line[1].y)\r\n const proText = pro.Text.substring(0, pro.text.length - 3);\r\n const proScale = proDis / proText;\r\n const itemDis = SMathUtil.pointDistance(item.line[0].x, item.line[0].y, item.line[1].x, item.line[1].y)\r\n const itemText = item.text.substring(0, item.text.length - 3);\r\n const itemScale = itemDis / itemText;\r\n result = (proScale / itemScale).toFixed()\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n return result;\r\n },\r\n // 是否处理过平面图重复\r\n repeatHandled(flag) {\r\n this.handled = flag;\r\n }\r\n },\r\n watch: {\r\n // modelId(n, o) {\r\n // if (o && n != o) {\r\n // if (n) {\r\n // // 替换的时候需要走\r\n // this.$nextTick(() => {\r\n // this.initFromModelId(n)\r\n // })\r\n // }\r\n // }\r\n // },\r\n },\r\n}\r\n</script>\r\n<style lang=\"less\">\r\n#repetitionGraphy {\r\n width: 100%;\r\n height: 100%;\r\n background: #fff;\r\n position: relative;\r\n padding: 10px;\r\n box-sizing: border-box;\r\n .repeatTips {\r\n display: inline-block;\r\n max-width: 800px;\r\n font-size: 12px;\r\n overflow: hidden;\r\n line-height: 1;\r\n margin-left: 10px;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n color: red;\r\n }\r\n .drawImg {\r\n width: 100%;\r\n margin-top: 10px;\r\n height: calc(100% - 40px);\r\n }\r\n .upload-demo {\r\n display: inline-block;\r\n }\r\n .stepContainer {\r\n width: 100%;\r\n position: absolute;\r\n top: 0;\r\n left: 50%;\r\n margin-left: -50%;\r\n z-index: 9;\r\n background-color: #fff;\r\n }\r\n .floorList {\r\n position: absolute;\r\n width: 100px;\r\n max-height: 250px;\r\n overflow-x: hidden;\r\n overflow-y: auto;\r\n left: 40px;\r\n top: 200px;\r\n z-index: 10;\r\n background: #fff;\r\n border: 1px solid #ccc;\r\n li {\r\n box-sizing: border-box;\r\n padding: 0 10px;\r\n width: 100%;\r\n }\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./repetitionGraphy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./repetitionGraphy.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./repetitionGraphy.vue?vue&type=template&id=5fb5a70a&\"\nimport script from \"./repetitionGraphy.vue?vue&type=script&lang=js&\"\nexport * from \"./repetitionGraphy.vue?vue&type=script&lang=js&\"\nimport style0 from \"./repetitionGraphy.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticStyle:{\"overflow\":\"hidden auto\"}},[_c('cardList',{attrs:{\"content\":_vm.content,\"source\":_vm.source,\"TableVisibleMoreLoading\":_vm.TableVisibleMoreLoading,\"computingNum\":_vm.computingNum},on:{\"calcSpecial\":_vm.calcSpecial,\"openComputed\":_vm.openComputed,\"RelationType\":_vm.RelationType,\"calcSpecialUpdate\":_vm.calcSpecialUpdate}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._l((_vm.content),function(item,index){return _c('div',{key:index},[_c('p',{staticClass:\"slave-relation-title\"},[_vm._v(_vm._s(item.graphTypeName)+\" \"),_c('span',[_vm._v(\"(主要连接对象按照标准字典显示)\")])]),_vm._l((item.childGraphicTypeList),function(child,childIndex){return _c('section',{key:child.graphTypeId,staticClass:\"container\"},[_c('p',{staticClass:\"relation-text\"},[_c('span',{staticClass:\"iconfont icon-juxing\"}),_c('span',{staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.toDetail(child)}}},[_vm._v(\" \"+_vm._s(child.graphTypeName)+\" \"),_c('i',{staticClass:\"icon-zuzhiguanxi iconfont\"})]),_c('span',{staticClass:\"pic-code\"},[_vm._v(\"图类型编码:\"+_vm._s(child.graphTypeCode))]),(child.Note)?_c('el-tooltip',{attrs:{\"content\":child.Note,\"placement\":\"top\"}},[_c('i',{staticClass:\"icon-shuoming iconfont\",on:{\"click\":_vm.explain}})]):_vm._e()],1),_c('el-row',{attrs:{\"gutter\":24}},_vm._l((child.relationTypeProjectList),function(relation,relIndex){return _c('el-col',{key:relation.Id,attrs:{\"span\":8}},[_c('el-card',{staticClass:\"card \",staticStyle:{\"position\":\"relative\"},attrs:{\"shadow\":\"hover\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(relation.computationalState === 3 ),expression:\"relation.computationalState === 3 \"}],staticClass:\"mask\"}),_c('div',{staticStyle:{\"overflow\":\"hidden\"}},[_c('el-tooltip',{attrs:{\"content\":relation.relationTypeName,\"placement\":\"top\"}},[_c('p',{staticClass:\"relation-title reset-test reset-title\"},[_vm._v(_vm._s(relation.relationTypeName))])]),_c('el-tooltip',{attrs:{\"content\":relation.relationTypeCode,\"placement\":\"top\"}},[_c('p',{staticClass:\"asc reset-title reset-test\"},[_vm._v(\"边类型编码:\"+_vm._s(relation.relationTypeCode))])]),_c('p',{staticClass:\"relation-title-icon reset-test fr\"},[(relation.note)?_c('el-tooltip',{staticStyle:{\"z-index\":\"3\",\"position\":\"relative\"},attrs:{\"content\":relation.note,\"placement\":\"top\"}},[_c('i',{staticClass:\"iconfont icon-warn icon\"})]):_vm._e()],1)],1),_c('article',[_c('el-row',[_c('el-col',{attrs:{\"span\":13}},[_c('div',{staticClass:\"grid-content\"},[_c('p',{staticClass:\"object\"},[_vm._v(\"主要连接对象\")]),_c('el-tooltip',{attrs:{\"content\":relation.conneObject,\"placement\":\"top\"}},[_c('p',{staticClass:\"group reset-title\"},[_vm._v(_vm._s(relation.conneObject))])])],1)]),_c('el-col',{attrs:{\"span\":2}},[_c('div',{staticClass:\"grid-content\"},[_c('p',{staticClass:\"thread\"})])]),_c('el-col',{attrs:{\"span\":9}},[_c('div',{staticClass:\"grid-content \"},[_c('p',{staticClass:\"line-number\"},[_vm._v(\"连接数量\")]),_c('p',{class:relation.count > 0? 'line-number-show' :'line-number-hide'},[_vm._v(_vm._s(relation.count))])])])],1),_c('p',{staticClass:\"last-computed\"},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(relation.computationalState === 3),expression:\"relation.computationalState === 3\"}]},[_vm._v(\"关系计算中...\")]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(relation.computationalState === 5),expression:\"relation.computationalState === 5\"}]},[_vm._v(\"计算失败\")]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(relation.computationalState !== 3 && relation.computingTime),expression:\"relation.computationalState !== 3 && relation.computingTime\"}]},[_vm._v(\"最后一次计算时间 \"+_vm._s(relation.computingTime))]),_c('el-tooltip',{attrs:{\"content\":relation.computationalState === 2 ? '关系变更,请重新计算':'启动计算',\"placement\":\"top\"}},[_c('el-badge',{staticClass:\"item float-right\",attrs:{\"is-dot\":relation.computationalState === 2 || relation.computationalState === 5}},[_c('el-button',{staticClass:\"sm-button\",attrs:{\"disabled\":!relation.source && !relation.automatic,\"circle\":\"\",\"type\":\"primary\",\"plain\":\"\",\"icon\":\"iconfont icon-changyongtubiao-mianxing-\"},on:{\"click\":function($event){return _vm.computed(relation)}}})],1)],1),_c('el-tooltip',{attrs:{\"content\":\"手动编辑\",\"placement\":\"top\"}},[_c('el-button',{staticClass:\"float-right sm-button\",style:({'border':(relation.manual=== 1? '1px solid #DCDFE6' :'')}),attrs:{\"disabled\":relation.manual === 1,\"circle\":\"\",\"type\":\"primary\",\"plain\":\"\",\"icon\":\"iconfont icon-bianji\"},on:{\"click\":function($event){return _vm.manual(relation)}}})],1),(relation.source)?_c('el-tooltip',{attrs:{\"content\":\"设定设备对象源/末端\",\"placement\":\"top\"}},[_c('el-button',{staticClass:\"float-right sm-button\",staticStyle:{\"transform\":\"rotate(90deg)\"},attrs:{\"type\":\"primary\",\"plain\":\"\",\"circle\":\"\",\"icon\":\"iconfont icon-23 \"},on:{\"click\":function($event){return _vm.equipment(relation)}}})],1):_vm._e()],1)],1)])],1)}),1)],1)})],2)}),_c('RelationMaintain',{ref:\"maintain\",attrs:{\"values\":_vm.values,\"source\":_vm.source,\"isComputed\":_vm.isComputed,\"ManualMaintenance\":_vm.ManualMaintenance,\"TableVisibleMoreLoading\":_vm.TableVisibleMoreLoading},on:{\"openComputed\":_vm.openComputed,\"RelationType\":_vm.RelationType,\"calcSpecialUpdate\":_vm.calcSpecialUpdate}})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"relation-maintain\"},[_c('el-dialog',{attrs:{\"title\":_vm.values.title,\"visible\":_vm.dialogTableVisible},on:{\"update:visible\":function($event){_vm.dialogTableVisible=$event}}},[_c('span',{staticClass:\"font-big\"},[_vm._v(_vm._s(_vm.values.autoComputed))]),_c('footer',{staticClass:\"dialog-footer \",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.dialogTableVisible = false}}},[_vm._v(_vm._s(_vm.values.cancel))]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.promptly}},[_vm._v(_vm._s(_vm.values.promptly)+\" \")])],1)]),_c('el-dialog',{attrs:{\"title\":_vm.values.title,\"visible\":_vm.dialogTableVisibleMore},on:{\"update:visible\":function($event){_vm.dialogTableVisibleMore=$event}}},[_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.TableVisibleMoreLoading),expression:\"TableVisibleMoreLoading\"}],staticStyle:{\"overflow\":\"hidden\"}},[_c('p',{staticClass:\"font-big\"},[_vm._v(_vm._s(_vm.values.existComputed))]),_c('p',{staticClass:\"exist-title\"},[_vm._v(_vm._s(_vm.values.existTitle))]),_c('el-row',{staticStyle:{\"margin-bottom\":\"20px\"},attrs:{\"gutter\":20}},[_c('el-col',{attrs:{\"span\":12}},[_c('p',[_vm._v(\"源端设备类:\")]),_c('el-select',{attrs:{\"placeholder\":\"请选择\",\"props\":_vm.props,\"multiple\":\"\",\"disabled\":\"\"},model:{value:(_vm.setValue),callback:function ($$v) {_vm.setValue=$$v},expression:\"setValue\"}},_vm._l((_vm.setOriginOption),function(item,index){return _c('el-option',{key:index,attrs:{\"label\":item.label,\"value\":item.value,\"disabled\":\"\"}})}),1)],1),_c('el-col',{attrs:{\"span\":12}},[_c('p',[_vm._v(\"末端设备类:\")]),_c('el-select',{attrs:{\"placeholder\":\"请选择\",\"props\":_vm.props},model:{value:(_vm.setEndValue),callback:function ($$v) {_vm.setEndValue=$$v},expression:\"setEndValue\"}},_vm._l((_vm.setEndOptions),function(item,index){return _c('el-option',{key:index,attrs:{\"label\":item.label,\"value\":item.value,\"disabled\":\"\"}})}),1)],1)],1),_c('footer',{staticClass:\"dialog-footer \",staticStyle:{\"float\":\"right\"},attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.dialogTableVisibleMore = false}}},[_vm._v(_vm._s(_vm.values.cancel))]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.computedUpdate}},[_vm._v(_vm._s(_vm.values.promptly)+\" \")])],1)],1)]),_c('el-dialog',{attrs:{\"title\":_vm.values.title,\"visible\":_vm.dialogEquipment},on:{\"update:visible\":function($event){_vm.dialogEquipment=$event}}},[_c('h4',[_vm._v(_vm._s(_vm.values.equipmentSetting))]),_c('el-row',{attrs:{\"gutter\":20}},[_c('el-col',{attrs:{\"span\":12}},[_c('p',[_vm._v(\"源端设备类:\")]),_c('el-tooltip',{attrs:{\"placement\":\"top\",\"disabled\":!_vm.sourceSideList.length}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('ul',_vm._l((_vm.sourceSideList),function(item){return _c('li',{key:item.sourceType},[_vm._v(\" \"+_vm._s(((_vm.oraginOption.find(function (e) { return e.value === item.sourceType; })? _vm.oraginOption.find(function (e) { return e.value === item.sourceType; }).label : \"\") + \":\" + (item.sourceCount) + \"个\"))+\" \")])}),0)]),_c('el-select',{attrs:{\"placeholder\":\"请选择\",\"multiple\":\"\"},on:{\"change\":_vm.changeVal},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},_vm._l((_vm.oraginOption),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1)],1),_c('el-col',{attrs:{\"span\":12}},[_c('p',[_vm._v(\"末端设备类:\")]),_c('el-select',{attrs:{\"placeholder\":\"请选择\"},model:{value:(_vm.endValue),callback:function ($$v) {_vm.endValue=$$v},expression:\"endValue\"}},_vm._l((_vm.endOption),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value,\"disabled\":\"\"}})}),1)],1)],1),_c('footer',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.dialogEquipment = false}}},[_vm._v(_vm._s(_vm.values.cancel))]),_c('el-button',{attrs:{\"type\":\"primary\",\"disabled\":_vm.disabled},on:{\"click\":_vm.handleAddSource}},[_vm._v(_vm._s(_vm.values.preservation)+\" \")])],1)],1),_c('el-dialog',{attrs:{\"title\":_vm.values.title,\"visible\":_vm.dialogManualTip},on:{\"update:visible\":function($event){_vm.dialogManualTip=$event}}},[_c('p',{staticClass:\"font-big\"},[_vm._v(_vm._s(_vm.values.tips))]),_vm._l((_vm.values.device),function(item){return _c('p',{staticClass:\"font-big\"},[_vm._v(_vm._s(item))])}),_c('footer',{staticClass:\"dialog-footer \",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.dialogManualTip = false}}},[_vm._v(_vm._s(_vm.values.confirm)+\" \")])],1)],2),_c('el-dialog',{attrs:{\"title\":_vm.values.title,\"visible\":_vm.dialogManualOption},on:{\"update:visible\":function($event){_vm.dialogManualOption=$event}}},[_c('p',{staticClass:\"option-tip\"},[_vm._v(_vm._s(_vm.values.optionTips))]),_c('el-row',{attrs:{\"span\":24}},[_c('el-col',{attrs:{\"span\":8}},[_c('p',[_c('i',{staticClass:\"iconfont icon-doc-line\"}),_vm._v(\" \"+_vm._s(_vm.values.currentNum)+\" 0 \")]),_c('a',{attrs:{\"href\":_vm.downloadProject('excel')}},[_c('el-button',{staticClass:\"mt-10\",attrs:{\"type\":\"primary\"}},[_vm._v(\" \"+_vm._s(_vm.values.download)+\" \")])],1)]),_c('el-col',{attrs:{\"span\":10}},[_vm._v(\" \"+_vm._s(_vm.values.lastTime)+\" \")])],1),_c('el-upload',{staticClass:\"upload-demo\",attrs:{\"drag\":\"\",\"action\":(\"\" + _vm.baseUrl + _vm.dataCenter + \"/graphic/import\"),\"multiple\":\"\",\"show-file-list\":false,\"name\":\"file\",\"headers\":_vm.headers,\"data\":_vm.dataId,\"on-progress\":_vm.progress,\"on-success\":_vm.success,\"on-error\":_vm.error,\"accept\":\"xlsx,xls\"}},[_c('i',{staticClass:\"el-icon-upload\"}),_c('div',{staticClass:\"el-upload__text\",domProps:{\"innerHTML\":_vm._s(_vm.values.uploadTxt)}}),_c('div',{staticClass:\"upload__tip danger\",attrs:{\"slot\":\"tip\"},slot:\"tip\"},[_vm._v(_vm._s(_vm.values.uploadTips))])])],1),_c('el-dialog',{attrs:{\"title\":_vm.values.title,\"visible\":_vm.dialogProcess},on:{\"update:visible\":function($event){_vm.dialogProcess=$event}}},[_c('div',{staticClass:\"block\"},[_c('el-timeline',_vm._l((_vm.activities),function(activity,index){return _c('el-timeline-item',{key:index,attrs:{\"icon\":activity.icon,\"type\":activity.type,\"color\":activity.color,\"size\":activity.size}},[_vm._v(\" \"+_vm._s(activity.content)+\" \")])}),1)],1),_c('a',{attrs:{\"href\":_vm.downloadProject('report')}},[_c('el-button',[_vm._v(_vm._s(_vm.values.downloadFile))])],1),_c('footer',{staticClass:\"dialog-footer \",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":_vm.errBack}},[_vm._v(_vm._s(_vm.values.back))]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.finish}},[_vm._v(_vm._s(_vm.values.done)+\" \")])],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","const deviceListString = {\r\n \"空调冷冻水供水\": \"ACCCCC-离心式冷水机组-true,ACCCAC-吸收式冷水机组-true,ACCCSC-螺杆式冷水机组-true,ACCCGH-地源热泵-true,ACCCWH-水源热泵-true,ACCCAH-空气源热泵-true,ACCCCP-供冷冷冻水泵,ACATFC-风机盘管,ACATAH-空调机组,ACATFU-新风机组,ACCCHE-供冷换热器,ACCHVD-真空脱气机,ACCCAD-供冷软化水装置,ACCCCL-供冷集水器,ACCCDB-供冷分水器\",\r\n \"空调冷冻水回水\": \"ACCCCC-离心式冷水机组-true,ACCCAC-吸收式冷水机组,ACCCSC-螺杆式冷水机组,ACCCGH-地源热泵,ACCCWH-水源热泵,ACCCAH-空气源热泵,ACCCCP-供冷冷冻水泵,ACATFC-风机盘管-true,ACATAH-空调机组-true,ACATFU-新风机组-true,ACCCHE-供冷换热器-true,ACCCAD-供冷软化水装置,ACCCCL-供冷集水器,ACCCDB-供冷分水器,ACCHVD-真空脱气机\",\r\n \"采暖水供水\": \"ACCHCB-供热燃煤锅炉-true,ACCHHE-供热换热器-true,ACCHGB-供热燃气锅炉-true,ACCHEB-供热电锅炉-true,ACCCGH-地源热泵-true,ACCCWH-水源热泵-true,ACCCAH-空气源热泵-true,ACCHHP-供热水泵,ACCHDB-供热分水器,ACCHCL-供热集水器,ACCHCF-供热定压补水装置,ACATFC-风机盘管,ACATAH-空调机组,ACATFU-新风机组,ACCHTU-供热全程水处理仪,ACCHHE-供热换热器,ACCHWT-供热水箱,ACATRD-散热器\",\r\n \"采暖水回水\": \"ACCHCB-供热燃煤锅炉,ACCHHE-供热换热器-true,ACCHGB-供热燃气锅炉,ACCHEB-供热电锅炉,ACCCGH-地源热泵,ACCCWH-水源热泵,ACCCAH-空气源热泵,ACCHHP-供热水泵,ACCHDB-供热分水器,ACCHCL-供热集水器,ACCHCF-供热定压补水装置,ACATFC-风机盘管-true,ACATAH-空调机组-true,ACATFU-新风机组-true,ACCHTU-供热全程水处理仪,ACCHHE-供热换热器,ACCHWT-供热水箱,ACATRD-散热器-true\",\r\n \"空调冷却水供水\": \"ACCCCC-离心式冷水机组-true,ACCCAC-吸收式冷水机组-true,ACCCSC-螺杆式冷水机组-true,ACCCGH-地源热泵-true,ACCCWH-水源热泵-true,ACCCAH-空气源热泵,ACCCOT-冷却塔,ACCCOP-冷却水\",\r\n \"空调冷却水回水\": \"ACCCCC-离心式冷水机组,true,ACCCAC-吸收式冷水机组,ACCCSC-螺杆式冷水机组,ACCCGH-地源热泵,ACCCWH-水源热泵,ACCCAH-空气源热泵,ACCCOT-冷却塔-true,ACCCOP-冷却水泵\",\r\n \"空调冷凝水排水\": \"ACATFC-风机盘管-true,ACATAH-空调机组-true,ACATVR-变频多联机-true,ACATVI-室内机-true,ACATVO-室外机\",\r\n \"采暖水补水\": \"ACCHCB-供热燃煤锅炉,ACCHHE-供热换热器-true,ACCHGB-供热燃气锅炉,ACCHEB-供热电锅炉,ACCCGH-地源热泵,ACCCWH-水源热泵,ACCCAH-空气源热泵,ACCHHP-供热水泵,ACCHDB-供热分水器,ACCHCL-供热集水器,ACCHCF-供热定压补水装置,ACATAH-空调机组,ACATFU-新风机组,ACCHTU-供热全程水处理仪,ACCHHE-供热换热器,ACCHWT-供热水箱,ACATFC-风机盘管,ACATAH-空调机组,ACATFU-新风机组,ACATRD-散热器\",\r\n \"多联机供回制冷剂\": \"ACATVR-变频多联机-true,ACATVI-室内机-true,ACATVO-室外机-true\",\r\n \"通风送风\": \"ACVTSF-送风风机,ACATVA-VAVBOX ,ACATIO-空调风口,CAVTIO-通风风口-true,ACSCEF-排烟风机,ACSCIO-排烟风口,ACSCEF-正压送风风机\",\r\n \"空调送风\": \"ACATVA-VAVBOX ,ACATFC-风机盘管,ACATIO-空调风口-true\",\r\n \"空调排风\": \"ACATAH-空调机组,ACATIO-空调风口-true,ACVTSF-排风风机,ACSCEF-排烟风机,ACVTIO-通风风口,ACSCIO-排烟风口-true,ACKLSF-抽油烟机,ACKLIO-厨房风口-true\",\r\n \"新风送风\": \"ACATFU-新风机组,ACATAH-空调机组,ACVTSF-新风机,ACATIO-空调风口-true\",\r\n \"消防排烟\": \"ACSCEF-排烟风机,ACSCIO-排烟风口-true\",\r\n \"通风排风\": \"ACVTSF-排风风机,ACVTIO-通风风口-true\",\r\n \"空调回风\": \"ACATFC-风机盘管,ACATAH-空调机组,ACATIO-空调风口-true\",\r\n \"生活给水供水\": \"WSDWPP-给水水泵,WSDWSU-生活给水供水机组-true,OTSEFL-水表,WSDWWT-水箱,WSDWPT-生活给水压力罐,ACCCOT-冷却塔\",\r\n \"生活热水供水\": \"WSDHWT-生活热水储水箱,WSDHSC-生活热水太阳能集热器-true,OTSEFL-水表,WSDHHE-生活热水换热器-true\",\r\n \"污水排水\": \"WSSTSP-潜污泵-true,WSSTOS-自动隔油装置-true\",\r\n \"中水供水\": \"WSRWWT-中水储水箱,WSRWTU-中水处理机组-true,WSRWSU-中水供水机组,WSRWRC-雨水收集设备\",\r\n \"直饮水供水\": \"WSDDTU-直饮水处理机组-true,WSDDIH-即时加热器\",\r\n \"消防给水供水\": \"FFFSHP-消火栓供水加压水泵-true,FFFSPS-消防稳压装置-true,FFFSHB-消火栓箱-true,FFFSWM-消防水炮设备-true\"\r\n}\r\n\r\nlet deviceList = new Object;\r\nfor (const key in deviceListString) {\r\n if (deviceListString.hasOwnProperty(key)) {\r\n const element = deviceListString[key]\r\n deviceList[key] = new Array\r\n const temp = element.split(/[,,]/)\r\n temp.forEach(i => {\r\n const [value, label, select] = i.split('-')\r\n deviceList[key].push({\r\n label,\r\n value,\r\n select\r\n })\r\n })\r\n }\r\n}\r\nexport default deviceList\r\n","<template>\r\n <div class=\"relation-maintain\">\r\n <!--计算无需配置源末端的关系时提示-->\r\n <el-dialog\r\n :title=\"values.title\"\r\n :visible.sync=\"dialogTableVisible\"\r\n >\r\n <span class=\"font-big\">{{ values.autoComputed }}</span>\r\n <footer\r\n slot=\"footer\"\r\n class=\"dialog-footer \"\r\n >\r\n <el-button @click=\"dialogTableVisible = false\">{{ values.cancel }}</el-button>\r\n <el-button\r\n type=\"primary\"\r\n @click=\"promptly\"\r\n >{{ values.promptly }}\r\n </el-button>\r\n </footer>\r\n </el-dialog>\r\n <!-- 计算需配置源末端的关系且已配置时提示-->\r\n <el-dialog\r\n :title=\"values.title\"\r\n :visible.sync=\"dialogTableVisibleMore\"\r\n >\r\n <div\r\n v-loading=\"TableVisibleMoreLoading\"\r\n style=\"overflow:hidden\"\r\n >\r\n <p class=\"font-big\">{{ values.existComputed }}</p>\r\n <p class=\"exist-title\">{{ values.existTitle }}</p>\r\n <el-row :gutter=\"20\" style=\"margin-bottom: 20px\">\r\n <el-col :span=\"12\">\r\n <p>源端设备类:</p>\r\n <el-select\r\n v-model=\"setValue\"\r\n placeholder=\"请选择\"\r\n :props=\"props\"\r\n multiple\r\n disabled\r\n >\r\n <el-option\r\n v-for=\"(item,index) in setOriginOption\"\r\n :key=\"index\"\r\n :label=\"item.label\"\r\n :value=\"item.value\"\r\n disabled\r\n />\r\n </el-select>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <p>末端设备类:</p>\r\n <el-select\r\n v-model=\"setEndValue\"\r\n placeholder=\"请选择\"\r\n :props=\"props\"\r\n >\r\n <el-option\r\n v-for=\"(item,index) in setEndOptions\"\r\n :key=\"index\"\r\n :label=\"item.label\"\r\n :value=\"item.value\"\r\n disabled\r\n />\r\n </el-select>\r\n </el-col>\r\n </el-row>\r\n <footer\r\n slot=\"footer\"\r\n class=\"dialog-footer \"\r\n style=\"float: right\"\r\n >\r\n <el-button @click=\"dialogTableVisibleMore = false\">{{ values.cancel }}</el-button>\r\n <el-button\r\n type=\"primary\"\r\n @click=\"computedUpdate\"\r\n >{{ values.promptly }}\r\n </el-button>\r\n </footer>\r\n </div>\r\n </el-dialog>\r\n <el-dialog\r\n :title=\"values.title\"\r\n :visible.sync=\"dialogEquipment\"\r\n >\r\n <h4>{{ values.equipmentSetting }}</h4>\r\n <el-row :gutter=\"20\">\r\n <el-col :span=\"12\">\r\n <p>源端设备类:</p>\r\n <el-tooltip placement=\"top\" :disabled=\"!sourceSideList.length\">\r\n\t\t\t\t\t\t<div slot=\"content\">\r\n\t\t\t\t\t\t\t<ul>\r\n\t\t\t\t\t\t\t\t<li v-for=\"item in sourceSideList\" :key=\"item.sourceType\">\r\n\t\t\t\t\t\t\t\t\t{{`${oraginOption.find(e => e.value === item.sourceType)? oraginOption.find(e => e.value === item.sourceType).label : \"\"}:${item.sourceCount}个`}}\r\n\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t</div>\r\n <el-select\r\n v-model=\"value\"\r\n placeholder=\"请选择\"\r\n multiple\r\n @change=\"changeVal\"\r\n >\r\n <el-option\r\n v-for=\"item in oraginOption\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\"\r\n />\r\n </el-select>\r\n \t</el-tooltip>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <p>末端设备类:</p>\r\n <el-select\r\n v-model=\"endValue\"\r\n placeholder=\"请选择\"\r\n >\r\n <el-option\r\n v-for=\"item in endOption\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\"\r\n disabled\r\n />\r\n </el-select>\r\n </el-col>\r\n </el-row>\r\n <footer\r\n slot=\"footer\"\r\n class=\"dialog-footer\"\r\n >\r\n <el-button @click=\"dialogEquipment = false\">{{ values.cancel }}</el-button>\r\n\r\n <el-button\r\n type=\"primary\"\r\n @click=\"handleAddSource\"\r\n :disabled=\"disabled\"\r\n >{{ values.preservation }}\r\n </el-button>\r\n </footer>\r\n </el-dialog>\r\n <!--手动编辑:提示引导-->\r\n <el-dialog\r\n :title=\"values.title\"\r\n :visible.sync=\"dialogManualTip\"\r\n >\r\n <p class=\"font-big\">{{ values.tips }}</p>\r\n <p\r\n class=\"font-big\"\r\n v-for=\"item in values.device\"\r\n >{{ item }}</p>\r\n <footer\r\n slot=\"footer\"\r\n class=\"dialog-footer \"\r\n >\r\n <el-button @click=\"dialogManualTip = false\">{{ values.confirm }}\r\n </el-button>\r\n </footer>\r\n </el-dialog>\r\n <!--手动编辑:手动维护-->\r\n <el-dialog\r\n :title=\"values.title\"\r\n :visible.sync=\"dialogManualOption\"\r\n >\r\n <p class=\"option-tip\">{{ values.optionTips }}</p>\r\n <el-row :span=\"24\">\r\n <el-col :span=\"8\">\r\n <p>\r\n <i class=\"iconfont icon-doc-line\"/>\r\n {{ values.currentNum }} 0\r\n </p>\r\n\r\n <a :href=\"downloadProject('excel')\">\r\n <el-button\r\n type=\"primary\"\r\n class=\"mt-10\"\r\n >\r\n {{ values.download }}\r\n </el-button>\r\n </a>\r\n </el-col>\r\n <el-col :span=\"10\">\r\n {{ values.lastTime }}\r\n </el-col>\r\n </el-row>\r\n <el-upload\r\n class=\"upload-demo\"\r\n drag\r\n :action=\"`${baseUrl}${dataCenter}/graphic/import`\"\r\n multiple\r\n :show-file-list='false'\r\n name=\"file\"\r\n :headers=\"headers\"\r\n :data=\"dataId\"\r\n :on-progress=\"progress\"\r\n :on-success=\"success\"\r\n :on-error=\"error\"\r\n\r\n\r\n accept=\"xlsx,xls\"\r\n >\r\n <i class=\"el-icon-upload\"/>\r\n <div\r\n class=\"el-upload__text\"\r\n v-html=\"values.uploadTxt\"\r\n />\r\n <div class=\"upload__tip danger\" slot=\"tip\">{{ values.uploadTips }}</div>\r\n </el-upload>\r\n </el-dialog>\r\n <!--手动编辑:手动维护.process结束-->\r\n <el-dialog\r\n :title=\"values.title\"\r\n :visible.sync=\"dialogProcess\"\r\n >\r\n <div class=\"block\">\r\n <el-timeline>\r\n <el-timeline-item\r\n v-for=\"(activity, index) in activities\"\r\n :key=\"index\"\r\n :icon=\"activity.icon\"\r\n :type=\"activity.type\"\r\n :color=\"activity.color\"\r\n :size=\"activity.size\"\r\n >\r\n {{ activity.content }}\r\n </el-timeline-item>\r\n </el-timeline>\r\n </div>\r\n <!-- 下载报告-->\r\n <a :href=\"downloadProject('report')\">\r\n <el-button>{{ values.downloadFile }}</el-button>\r\n </a>\r\n <footer\r\n slot=\"footer\"\r\n class=\"dialog-footer \"\r\n >\r\n <el-button @click=\"errBack\">{{ values.back }}</el-button>\r\n <el-button\r\n type=\"primary\"\r\n @click=\"finish\"\r\n >{{ values.done }}\r\n </el-button>\r\n </footer>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport {mapGetters} from 'vuex'\r\nimport storage from '@/utils/storageUtil'\r\n// import {addSource, sourceQuery} from \"@/api/relation/api\";\r\nimport deviceList from \"@/data/old-adm/deviceList\"\r\nimport { baseUrl, dataCenter } from '@/utils/scanUtil'\r\nimport Relation from '@/controller/old-adm/relationController'\r\n\r\nconst { addSource, sourceQuery } = Relation\r\n\r\nexport default {\r\n name: \"RelationMaintain\",\r\n props: ['values', 'isComputed', 'source', 'TableVisibleMoreLoading', 'ManualMaintenance'],\r\n created() {\r\n },\r\n mounted() {\r\n\r\n },\r\n data() {\r\n return {\r\n dialogTableVisible: false,\r\n dialogTableVisibleMore: false,\r\n dialogEquipment: false,\r\n dialogManualTip: false,\r\n dialogManualOption: false,\r\n dialogProcess: false,\r\n originEquipment: [],\r\n endEquipment: [],\r\n props: {\r\n multiple: true,\r\n label: 'FamilyName',\r\n value: 'lId',\r\n children: 'Items',\r\n\r\n },\r\n activities: [{\r\n content: '数据文件处理中..',\r\n size: 'large',\r\n type: 'primary',\r\n icon: 'el-icon-check',\r\n color: '#0bbd87'\r\n }, {\r\n content: '数据处理成功',\r\n color: '#0bbd87',\r\n icon: 'el-icon-check',\r\n size: 'large',\r\n type: 'primary',\r\n }],\r\n vals: [],\r\n val: [],\r\n idArr: [],//存储所有选择的id\r\n secondary: [],//单独存储二级数据\r\n list: [],//获取后台数据,重新组合,添加唯一标识和源端标识\r\n resultOrigin: [],//最终传给后台的源端数据\r\n resultEnd: [],//最终传给后台的末端数据\r\n ops: [],\r\n filterOps: [],//为清空第二个选择器\r\n isResouceShow: 0,\r\n RelationTypeName: '',//卡片名称\r\n value: [],\r\n oraginOption: [],\r\n endValue: [],\r\n endOption: [],\r\n setValue: [],\r\n setOriginOption: [],\r\n setEndValue: [],\r\n setEndOptions: [],\r\n\t sourceSideList: [],\r\n disabled: false,\r\n\t\t\tbaseUrl: baseUrl,\r\n dataCenter: dataCenter\r\n }\r\n },\r\n\r\n computed: {\r\n ...mapGetters('layout', ['projectId']),\r\n headers() {\r\n return {\r\n //头信息中的 ProjectId 改为 projectId nh-2021.11.25\r\n 'projectId': this.projectId,\r\n 'Comming': 'adm',\r\n 'Account': storage.get(\"user_name\")\r\n }\r\n },\r\n dataId() {\r\n return {\r\n relType: this.ManualMaintenance.RelationType || '',\r\n zoneType: this.ManualMaintenance.ZoneType || '',\r\n projectId: this.projectId\r\n }\r\n },\r\n disOptions() {\r\n let arr = this.list.length && this.deepCopy(this.list).map(item => {\r\n item.Items.length && item.Items.map(i => {\r\n if (this.idArr.includes(i.lId)) {\r\n i.disabled = true\r\n }\r\n return i\r\n })\r\n return item\r\n })\r\n this.filterOps = arr\r\n return arr\r\n },\r\n },\r\n methods: {\r\n deepCopy(obj) {\r\n return JSON.parse(JSON.stringify(obj))\r\n },\r\n //查询原末端回显数据\r\n handleSourceQuery() {\r\n let param = {\r\n // filters: `projectId='${this.projectId}';calcName='${this.RelationTypeName}'`\r\n calcName: this.RelationTypeName\r\n }\r\n sourceQuery(param, res => {\r\n this.value = []\r\n this.setValue = []\r\n\t\t\t\tthis.sourceSideList = res.content ? res.content : [];\r\n res.content && res.content.forEach(({sourceType}) => sourceType && this.value.push(sourceType))\r\n //启动计算\r\n res.content && res.content.forEach(({sourceType}) => sourceType && this.setValue.push(sourceType))\r\n // this.setOriginOption = this.oraginOption.forEach(i => this.setValue.includes(i.value))\r\n this.changeVal(this.value)\r\n this.setValue && this.handleSetValue()\r\n })\r\n },\r\n dialogEquipmentOpen(relation) { //设定源末端\r\n this.RelationTypeName = relation.relationTypeName\r\n this.oraginOption = deviceList[relation.relationTypeName] && deviceList[relation.relationTypeName].filter(i => i.select)\r\n this.data = deviceList[relation.relationTypeName]\r\n this.disabled = this.data != undefined ? false : true\r\n // console.log(this.data, relation.RelationTypeName)\r\n this.dialogEquipment = true\r\n\r\n },\r\n changeVal(val) {\r\n // 末端展示数据\r\n this.endOption = this.data && this.data.filter(i => !val.includes(i.value))\r\n // 启动计算末端展示数据\r\n // this.setEndOptions = this.data && this.data.filter(i => !val.includes(i.value))\r\n\r\n this.sourceList = []\r\n val.forEach(i => this.sourceList.push({\r\n sourceType: i,\r\n projectId: this.projectId,\r\n calcName: this.RelationTypeName\r\n }))\r\n },\r\n\r\n handleAddSource() { //保存设备类\r\n let params = {}\r\n if (this.sourceList.length) {\r\n params = {\r\n content: this.sourceList\r\n }\r\n\r\n } else {\r\n params = {\r\n content: [{\r\n projectId: this.projectId,\r\n calcName: this.RelationTypeName\r\n }]\r\n }\r\n }\r\n addSource(params, res => {\r\n this.$message.success('保存成功')\r\n })\r\n this.dialogEquipment = false\r\n },\r\n // showCascader() {\r\n // ++this.isResouceShow\r\n // let copy = this.deepCopy(this.source)\r\n // copy.forEach(item => {\r\n // item.Items.forEach(child => {\r\n // child.lId = this.list.length\r\n // this.list.push(child)\r\n // child.Items.forEach(i => {\r\n // i.lId = i.Id + i.BlockId\r\n // i.IsSource == true && this.ops.push([child.lId, i.lId])\r\n // i.IsSource == false && this.filterOps.push([child.lId, i.lId])\r\n // })\r\n // })\r\n // })\r\n // },\r\n showCascader(relation) {\r\n this.RelationTypeName = relation.relationTypeName\r\n\r\n\r\n },\r\n handleSetValue() {\r\n let device = deviceList[this.RelationTypeName]\r\n this.setOriginOption = device && device.filter(i => this.setValue.includes(i.value))\r\n this.setEndOptions = device && device.filter(i => !this.setValue.includes(i.value))\r\n },\r\n downloadProject(str) {\r\n let relType = this.ManualMaintenance.RelationType ? `&relType=${this.ManualMaintenance.RelationType}` : ''\r\n let zoneType = this.ManualMaintenance.ZoneType ? `&zoneType=${this.ManualMaintenance.ZoneType}` : null\r\n let url;\r\n if (str === 'excel') {\r\n relType = this.ManualMaintenance.RelationType ? `&relType=${this.ManualMaintenance.RelationType}` : ''\r\n // url = `${baseUrl}${dataCenter}/graphic/export?code=对象ID${relType}${zoneType}`\r\n if (zoneType) {\r\n url = `${baseUrl}${dataCenter}/graphic/export?projectId=${this.projectId}${relType}${zoneType}&code=对象ID`\r\n\r\n } else {\r\n url = `${baseUrl}${dataCenter}/graphic/export?projectId=${this.projectId}${relType}&code=对象ID`\r\n }\r\n } else {\r\n url = `${baseUrl}${dataCenter}/graphic/report-downloads?projectId=${this.projectId}${relType}${zoneType}`\r\n }\r\n return url\r\n },\r\n progress(event, file, fileList) {\r\n // console.log(event.file, fileList)\r\n },\r\n success(event, file, fileList) {\r\n this.dialogManualOption = true\r\n this.dialogProcess = true\r\n\r\n },\r\n error(event, file, fileList) {\r\n this.dialogManualOption = true\r\n this.dialogProcess = true\r\n\r\n },\r\n errBack() {\r\n this.dialogProcess = false\r\n },\r\n finish() {\r\n this.dialogProcess = false\r\n this.dialogManualOption = false\r\n },\r\n\r\n promptly() {\r\n\r\n if (this.isComputed.automatic && !this.isComputed.source) { //需要自动计算并且不需要配置云末端\r\n this.$emit('RelationType', this.isComputed.RelationType, this.isComputed.ZoneType)\r\n }\r\n this.dialogTableVisible = false\r\n },\r\n sourceOptions(val) {\r\n // this.ops = val\r\n this.idArr = val.map(item => item[1])\r\n this.deepCopy(this.list).forEach(item => this.secondary.push(...item.Items))\r\n let filterList = this.secondary.filter(item => this.idArr.includes(item.lId))\r\n //接口需要的数据格式\r\n filterList.forEach(item => {\r\n let {BlockId, BuildingId, Domain, Id, MepSystemType, ProjectId, Type, Statistics} = item\r\n this.resultOrigin.push({\r\n BlockId,\r\n BuildingId,\r\n Domain,\r\n // Id,\r\n MepSystemType,\r\n ProjectId,\r\n Source: true,\r\n SourceId: Id,\r\n SourceType: Type,\r\n Statistics\r\n })\r\n })\r\n },\r\n endOptions(val) {\r\n this.idArr = val.map(item => item[1])\r\n this.deepCopy(this.list).forEach(item => this.secondary.push(...item.Items))\r\n let filterList = this.secondary.filter(item => this.idArr.includes(item.lId))\r\n //接口需要的数据格式\r\n filterList.forEach(item => {\r\n let {BlockId, BuildingId, Domain, Id, MepSystemType, ProjectId, Type, Statistics} = item\r\n this.resultEnd.push({\r\n BlockId,\r\n BuildingId,\r\n Domain,\r\n // Id,\r\n MepSystemType,\r\n ProjectId,\r\n Source: false,\r\n SourceId: Id,\r\n SourceType: Type,\r\n Statistics\r\n })\r\n })\r\n },\r\n computedUpdate() {\r\n this.dialogTableVisibleMore = false\r\n let params = {\r\n projectId: this.projectId,\r\n relationType: this.isComputed.relationType\r\n }\r\n this.$emit(\"calcSpecialUpdate\", params);\r\n },\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.relation-maintain {\r\n .mt-10 {\r\n margin-top: 10px;\r\n }\r\n\r\n .danger {\r\n color: #d9001b;\r\n }\r\n\r\n .font-big {\r\n font-weight: 600;\r\n }\r\n\r\n\r\n .exist-title {\r\n font-size: 12px;\r\n color: #AAAAAA;\r\n }\r\n\r\n .option-tip {\r\n font-size: 18px;\r\n font-weight: 600;\r\n }\r\n\r\n .upload-demo {\r\n margin: 20px 0;\r\n\r\n }\r\n\r\n /deep/ .el-upload-dragger {\r\n width: 600px;\r\n margin: 0 auto;\r\n }\r\n}\r\n</style>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RelationMaintain.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RelationMaintain.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RelationMaintain.vue?vue&type=template&id=0ae53a0d&scoped=true&\"\nimport script from \"./RelationMaintain.vue?vue&type=script&lang=js&\"\nexport * from \"./RelationMaintain.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RelationMaintain.vue?vue&type=style&index=0&id=0ae53a0d&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0ae53a0d\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div>\r\n <div\r\n :key=\"index\"\r\n v-for=\"(item,index) in content\"\r\n >\r\n <p class=\"slave-relation-title\">{{ item.graphTypeName }}\r\n <span>(主要连接对象按照标准字典显示)</span>\r\n </p>\r\n <section\r\n :key=\"child.graphTypeId\"\r\n class=\"container\"\r\n v-for=\"(child,childIndex) in item.childGraphicTypeList\"\r\n >\r\n <p class=\"relation-text\">\r\n <span class=\"iconfont icon-juxing\"></span>\r\n <span @click=\"toDetail(child)\" style=\"cursor:pointer;\">\r\n {{ child.graphTypeName }}\r\n <i class=\"icon-zuzhiguanxi iconfont\"/></span>\r\n <span class=\"pic-code\">图类型编码:{{ child.graphTypeCode }}</span>\r\n <el-tooltip\r\n v-if=\"child.Note\"\r\n :content=\"child.Note\"\r\n placement=\"top\">\r\n <i\r\n @click=\"explain\"\r\n class=\"icon-shuoming iconfont\"\r\n />\r\n </el-tooltip>\r\n </p>\r\n\r\n <el-row :gutter=\"24\">\r\n <el-col\r\n :key=\"relation.Id\"\r\n :span=\"8\"\r\n v-for=\"(relation,relIndex) in child.relationTypeProjectList\"\r\n >\r\n <el-card\r\n class=\"card \"\r\n shadow=\"hover\"\r\n style=\"position: relative;\"\r\n\r\n >\r\n <!-- border:none-->\r\n <!-- <div v-show=\"relation.cardDisabled || relation.ComputationalState === 3 \" class=\"mask\"></div>-->\r\n <div v-show=\"relation.computationalState === 3 \" class=\"mask\"></div>\r\n <div style=\"overflow: hidden;\">\r\n <el-tooltip\r\n :content=\"relation.relationTypeName\"\r\n placement=\"top\"\r\n >\r\n <p class=\"relation-title reset-test reset-title\">{{ relation.relationTypeName }}</p>\r\n </el-tooltip>\r\n <el-tooltip\r\n :content=\"relation.relationTypeCode\"\r\n placement=\"top\"\r\n >\r\n <p class=\"asc reset-title reset-test\">边类型编码:{{ relation.relationTypeCode }}</p>\r\n </el-tooltip>\r\n <p class=\"relation-title-icon reset-test fr\">\r\n <el-tooltip\r\n v-if=\"relation.note\"\r\n :content=\"relation.note\"\r\n placement=\"top\"\r\n style=\"z-index: 3;position:relative;\"\r\n >\r\n <i class=\"iconfont icon-warn icon\"/>\r\n </el-tooltip>\r\n </p>\r\n </div>\r\n <article>\r\n <el-row>\r\n <el-col :span=\"13\">\r\n <div class=\"grid-content\">\r\n <p class=\"object\">主要连接对象</p>\r\n <el-tooltip\r\n :content=\"relation.conneObject\"\r\n placement=\"top\"\r\n >\r\n <p class=\"group reset-title\">{{ relation.conneObject }}</p>\r\n </el-tooltip>\r\n </div>\r\n </el-col>\r\n <el-col :span=\"2\">\r\n <div class=\"grid-content\">\r\n <p class=\"thread\"></p>\r\n </div>\r\n </el-col>\r\n <el-col :span=\"9\">\r\n <div class=\"grid-content \">\r\n <p class=\"line-number\">连接数量</p>\r\n <p :class=\"relation.count > 0? 'line-number-show' :'line-number-hide'\">{{ relation.count }}</p>\r\n\r\n </div>\r\n </el-col>\r\n </el-row>\r\n <p class=\"last-computed\">\r\n <!-- <span v-show=\"relation.ComputationalState === 3 || relation.ComputationalState === 4\">关系计算中...</span>-->\r\n <!-- <span v-show=\"relation.cardDisabled || relation.ComputationalState === 3\">关系计算中...</span>-->\r\n <span v-show=\"relation.computationalState === 3\">关系计算中...</span>\r\n <span v-show=\"relation.computationalState === 5\">计算失败</span>\r\n <span\r\n v-show=\"relation.computationalState !== 3 && relation.computingTime\">最后一次计算时间 {{ relation.computingTime }}</span>\r\n <el-tooltip\r\n :content=\"relation.computationalState === 2 ? '关系变更,请重新计算':'启动计算'\"\r\n placement=\"top\"\r\n >\r\n <el-badge\r\n class=\"item float-right\"\r\n :is-dot=\"relation.computationalState === 2 || relation.computationalState === 5\"\r\n >\r\n <el-button\r\n @click=\"computed(relation)\"\r\n :disabled=\"!relation.source && !relation.automatic \"\r\n circle\r\n type=\"primary\"\r\n plain\r\n icon=\"iconfont icon-changyongtubiao-mianxing-\"\r\n class=\"sm-button\"\r\n >\r\n <!--style=\"background: #000;color: #fff\"-->\r\n </el-button>\r\n </el-badge>\r\n </el-tooltip>\r\n <el-tooltip\r\n content=\"手动编辑\"\r\n placement=\"top\"\r\n >\r\n <el-button\r\n :disabled=\"relation.manual === 1\"\r\n :style=\"{'border':(relation.manual=== 1? '1px solid #DCDFE6' :'')}\"\r\n @click=\"manual(relation)\"\r\n circle\r\n class=\"float-right sm-button\"\r\n type=\"primary\"\r\n plain\r\n icon=\"iconfont icon-bianji\"\r\n\r\n >\r\n </el-button>\r\n\r\n </el-tooltip>\r\n <el-tooltip\r\n content=\"设定设备对象源/末端\"\r\n placement=\"top\"\r\n v-if=\"relation.source\"\r\n >\r\n <el-button\r\n @click=\"equipment(relation)\"\r\n type=\"primary\"\r\n plain\r\n circle\r\n class=\"float-right sm-button\"\r\n icon=\"iconfont icon-23 \"\r\n style=\"transform: rotate(90deg);\"\r\n >\r\n </el-button>\r\n </el-tooltip>\r\n </p>\r\n </article>\r\n </el-card>\r\n </el-col>\r\n </el-row>\r\n </section>\r\n </div>\r\n <RelationMaintain\r\n :values=\"values\"\r\n :source=\"source\"\r\n ref=\"maintain\"\r\n :isComputed=\"isComputed\"\r\n :ManualMaintenance=\"ManualMaintenance\"\r\n :TableVisibleMoreLoading=\"TableVisibleMoreLoading\"\r\n @openComputed=\"openComputed\"\r\n @RelationType=\"RelationType\"\r\n @calcSpecialUpdate=\"calcSpecialUpdate\"\r\n />\r\n </div>\r\n\r\n</template>\r\n\r\n<script>\r\nimport RelationMaintain from './Modal/RelationMaintain'\r\n\r\nexport default {\r\n name: \"cardList\",\r\n props: {\r\n content: Array,\r\n source: Array,\r\n TableVisibleMoreLoading: Boolean,\r\n\t\tcomputingNum: Number,\r\n // cardDisabled: Boolean\r\n },\r\n data() {\r\n return {\r\n values: {\r\n title: '关系维护',\r\n cancel: '取消',\r\n confirm: '确定',\r\n back: '返回',\r\n preservation: '保存',\r\n promptly: '立即计算',\r\n placeholder: '请选择',\r\n download: '下载模板(含数据)',\r\n done: '完成',\r\n underDesign: '高级配置页面正在设计中。。。',\r\n autoComputed: '根据现有数据自动计算',\r\n existComputed: '根据现有数据自动计算',\r\n existTitle: '计算方向使用的源端和末端如下:',\r\n originEquipment: '源端设备类:',\r\n endEquipment: '末端设备类:',\r\n device: '', //提示引导内容\r\n tips: '', //请前往以下功能页面维护\r\n optionTips: '', //请下载最新最新 xxxx 数据进行手动维护\r\n currentNum: '当前关系数量:',\r\n lastTime: '', //最后更新时间为\r\n uploadTxt: '将Excel文件拖到此处,或<em>单击上传Excel文件<em>',\r\n uploadTips: '上传的Excel数据将完全覆盖当前关系表(关系表先前数据不会保留)',\r\n inHand: '数据文件处理中...',\r\n dataFailed: '数据文件验证失败',\r\n allUpdateSuccess: 'xxxx全部更新成功',\r\n portionUpdateSuccess: ' xxxx关系部分更新成功',\r\n downloadFile: ' 下载报告文件',\r\n equipmentSetting: ''\r\n },\r\n isComputed: {}, // 当前要计算的对象\r\n ManualMaintenance: {},//手动编辑对象\r\n }\r\n },\r\n created() {\r\n },\r\n computed: {},\r\n\r\n methods: {\r\n explain() {\r\n // alert('explain click')\r\n },\r\n RelationType() {\r\n // this.cardDisabled = true\r\n this.$emit('RelationType', this.isComputed.relationType, this.isComputed.zoneType, this.isComputed)\r\n },\r\n calcSpecialUpdate(params) {\r\n this.$emit(\"calcSpecialUpdate\", params, this.isComputed);\r\n },\r\n computed(relation) {\r\n\t\t\tif (this.computingNum >= 5) {\r\n\t\t\t\tthis.$message.info(\"当前计算过多,稍等一下\");\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n this.isComputed = relation // 当前要计算的对象\r\n if (relation.relationType) {\r\n this.$emit('calcSpecial', relation)\r\n if (relation.source) {\r\n this.values.existComputed = `根据现有数据自动计算 <${ relation.relationTypeName }>`\r\n this.$refs.maintain.dialogTableVisibleMore = true\r\n this.$refs.maintain.showCascader(relation)\r\n this.$refs.maintain.handleSourceQuery()\r\n\r\n } else {\r\n this.values.autoComputed = `根据现有数据自动计算 <${ relation.relationTypeName }>`\r\n this.$refs.maintain.dialogTableVisible = true\r\n }\r\n } else {\r\n this.$message.warning(\"设计中\")\r\n return false\r\n }\r\n },\r\n equipment(relation) { //配置源端末端\r\n this.values.equipmentSetting = `${ relation.relationTypeName } 源末端关系设置`\r\n this.$refs.maintain.dialogEquipmentOpen(relation)\r\n this.$refs.maintain.handleSourceQuery()\r\n },\r\n manual(relation) {\r\n let { manual, prompting, relationTypeName, computingTime } = relation;\r\n let device = prompting && prompting.split(','),\r\n tips = `请前往以下功能页面维护 <${ relationTypeName }>`,\r\n optionTips = `请下载当前最新 <${ relationTypeName }> 数据进行手动维护`,\r\n lastTime = `最后更新时间为 ${ computingTime ? computingTime : '' }`\r\n\r\n if (manual === 2) {\r\n this.values = { ...this.values, device, tips }\r\n this.$refs.maintain.dialogManualTip = true\r\n }\r\n if (manual === 3) {\r\n // if (relation.RelManualType) {\r\n if (relation.relationType) {\r\n this.values = { ...this.values, optionTips, lastTime }\r\n // this.$refs.maintain.dialogManualOption = true //导出excel 弹窗\r\n this.$router.push({\r\n path: \"relationShip\"\r\n })\r\n console.log(relation, 'relation')\r\n localStorage.setItem('RelManualType', relation.relManualType)\r\n localStorage.setItem('RelationTypeName', relation.relationTypeName)\r\n localStorage.setItem('RelationType', relation.relationType)\r\n localStorage.setItem('ZoneType', relation.zoneType ? relation.zoneType : '')\r\n localStorage.setItem('MainObject', relation.mainObject)\r\n localStorage.setItem('FromObject', relation.fromObject)\r\n localStorage.setItem('count', relation.count)\r\n localStorage.setItem('ComputingTime', relation.computingTime ? relation.computingTime : '')\r\n } else {\r\n this.$message.warning(\"设计中\")\r\n return false\r\n }\r\n }\r\n this.ManualMaintenance = relation\r\n },\r\n\r\n openComputed(result) {\r\n this.$emit('openComputed', result)\r\n },\r\n\r\n //空间连接关系详情\r\n toDetail(detail) {\r\n return\r\n this.$router.push({\r\n name: 'relationDetail',\r\n query: {\r\n type: detail.graphTypeCode,\r\n RelationTypeProjectList: detail.relationTypeProjectList\r\n }\r\n })\r\n }\r\n },\r\n components: { RelationMaintain }\r\n}\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n@color-text: #333;\r\n@font-big: 600;\r\n@font-small: 12px;\r\n@font-code: #AAAAAA;\r\n@pos-relative: relative;\r\n@pos-absolute: absolute;\r\n@pos-zero: 0;\r\n@5px: 5px;\r\n\r\n.slave-relation-title {\r\n color: @font-code;\r\n font-weight: 600;\r\n border-bottom: 1px dashed @font-code;\r\n padding-bottom: @5px;\r\n}\r\n\r\n.container {\r\n @media (max-width: 1500px) {\r\n .relation-title {\r\n max-width: 160px;\r\n }\r\n\r\n .group {\r\n white-space: normal !important;\r\n }\r\n\r\n .asc {\r\n max-width: 108px;\r\n }\r\n\r\n .thread {\r\n margin-left: 5px !important;\r\n }\r\n\r\n /deep/ .el-card__body {\r\n padding: 18px !important;\r\n }\r\n\r\n .sm-button {\r\n height: 30px;\r\n width: 30px;\r\n text-align: center;\r\n padding: 0;\r\n }\r\n\r\n }\r\n\r\n .el-row {\r\n margin-bottom: 20px;\r\n\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n }\r\n\r\n .el-col {\r\n border-radius: 4px;\r\n }\r\n\r\n .grid-content {\r\n border-radius: 4px;\r\n min-height: 36px;\r\n\r\n .thread {\r\n border-left: 1px solid @font-code;\r\n margin-left: 10px;\r\n min-height: 36px;\r\n margin-top: 6px;\r\n }\r\n }\r\n\r\n .row-bg {\r\n padding: 10px 0;\r\n background-color: #f9fafc;\r\n }\r\n\r\n .reset-title {\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n }\r\n\r\n .reset-test {\r\n float: left;\r\n text-align: center;\r\n height: 40px;\r\n line-height: 40px;\r\n }\r\n\r\n .fr {\r\n float: right;\r\n }\r\n\r\n .el-card {\r\n margin: 10px 0;\r\n }\r\n\r\n .relation-text {\r\n overflow: hidden;\r\n margin-top: 10px;\r\n /*text-indent: 10px;*/\r\n margin-left: -3px;\r\n font-weight: @font-big;\r\n\r\n .pic-code {\r\n font-size: @font-small;\r\n color: @font-code;\r\n margin-left: @5px;\r\n font-weight: 400;\r\n }\r\n }\r\n\r\n .card {\r\n position: @pos-relative;\r\n\r\n }\r\n\r\n .mask {\r\n background: rgba(255, 255, 255, .6);\r\n position: @pos-absolute;\r\n top: @pos-zero;\r\n left: @pos-zero;\r\n right: @pos-zero;\r\n bottom: @pos-zero;\r\n user-select: none;\r\n z-index: 2\r\n }\r\n\r\n .relation-title {\r\n font-size: 20px;\r\n font-weight: @font-big;\r\n margin-right: 10px;\r\n\r\n .icon {\r\n display: block;\r\n float: right;\r\n color: #555;\r\n font-size: 18px;\r\n }\r\n }\r\n\r\n .relation-title-icon {\r\n font-size: 20px;\r\n font-weight: @font-big;\r\n overflow: hidden;\r\n\r\n .icon {\r\n display: block;\r\n float: right;\r\n color: #555;\r\n font-size: 18px;\r\n }\r\n }\r\n\r\n .asc {\r\n font-size: @font-small;\r\n color: @font-code;\r\n }\r\n\r\n .object {\r\n font-size: @font-small;\r\n color: @font-code;\r\n font-weight: @font-big;\r\n }\r\n\r\n .group {\r\n color: @color-text;\r\n font-weight: @font-big;\r\n }\r\n\r\n .line-number {\r\n font-size: @font-small;\r\n color: @font-code;\r\n font-weight: @font-big;\r\n }\r\n\r\n .line-number-show {\r\n color: @color-text;\r\n font-weight: @font-big;\r\n }\r\n\r\n .line-number-hide {\r\n color: @font-code;\r\n font-weight: @font-big;\r\n }\r\n\r\n\r\n article {\r\n overflow: hidden;\r\n }\r\n\r\n .last-computed {\r\n overflow: hidden;\r\n color: @font-code;\r\n\r\n .float-right {\r\n float: right;\r\n margin-left: @5px;\r\n }\r\n\r\n /deep/ .is-dot {\r\n margin-top: 7px;\r\n margin-right: @5px;\r\n }\r\n\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CardList.vue?vue&type=template&id=4373ce57&scoped=true&\"\nimport script from \"./CardList.vue?vue&type=script&lang=js&\"\nexport * from \"./CardList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CardList.vue?vue&type=style&index=0&id=4373ce57&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4373ce57\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div style=\"overflow: hidden auto\" v-loading=\"loading\">\r\n <cardList\r\n :content=\"content\"\r\n :source=\"source\"\r\n :TableVisibleMoreLoading=\"TableVisibleMoreLoading\"\r\n :computingNum=\"computingNum\"\r\n @calcSpecial=\"calcSpecial\"\r\n @openComputed=\"openComputed\"\r\n @RelationType=\"RelationType\"\r\n @calcSpecialUpdate=\"calcSpecialUpdate\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport CardList from \"@/components/old-adm/relation/components/overview/CardList\";\r\n// import {\r\n// blockQuery,\r\n// blockSource,\r\n// businessSpaceAll,\r\n// calcSpecial,\r\n// graphic,\r\n// graphicNumber,\r\n// sysDirection\r\n// } from \"../../../api/relation/api\";\r\nimport relation from '@/controller/old-adm/relationController'\r\nimport { mapGetters } from \"vuex\";\r\nimport { logicConfig } from \"@/logicConfig\";\r\nconst {\r\n blockQuery,\r\n blockSource,\r\n businessSpaceAll,\r\n calcSpecial,\r\n graphic,\r\n graphicNumber,\r\n sysDirection\r\n} = relation\r\nexport default {\r\n data() {\r\n return {\r\n content: [],\r\n countNumber: [],\r\n loading: false,\r\n source: [], //源端数据\r\n currentRelationTypeName: \"\", //当前点击卡片的RelationTypeName\r\n TableVisibleMoreLoading: false,\r\n computingNum: 0, //正在计算的关系数量\r\n };\r\n },\r\n created() {\r\n\t\tthis.computingNum = 0;\r\n this.init();\r\n },\r\n watch: {\r\n projectId() {\r\n this.init();\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(\"layout\", [\"projectId\"])\r\n },\r\n mounted() {\r\n },\r\n components: { \r\n CardList \r\n },\r\n methods: {\r\n init() {\r\n this.loading = true;\r\n let dataNumber = {\r\n projectId: this.projectId\r\n };\r\n const promise1 = new Promise((resolve, reject) => {\r\n graphic(dataNumber, res => {\r\n resolve(res)\r\n })\r\n })\r\n const promise2 = new Promise((resolve, reject) => {\r\n graphicNumber(dataNumber, res => {\r\n resolve(res)\r\n })\r\n })\r\n Promise.all([promise1, promise2]).then(values => {\r\n this.countNumber = values[1].content;\r\n this.content = values[0].content;\r\n this.transform(this.content, this.countNumber);\r\n this.loading = false;\r\n })\r\n },\r\n updateState() {\r\n this.loading = true;\r\n let dataNumber = {\r\n projectId: this.projectId\r\n };\r\n graphic(dataNumber, res => {\r\n if (res.result === \"success\") {\r\n this.content = res.content;\r\n this.transform(this.content, this.countNumber);\r\n this.loading = false;\r\n } else {\r\n this.$message.error(res.message);\r\n this.loading = false;\r\n }\r\n })\r\n },\r\n transform(list1, list2) {\r\n let countInfo = {}; // { graphTypeName: { Id: count } }\r\n list2.forEach(item => {\r\n countInfo[item.graphTypeName] = countInfo[item.graphTypeName] || {};\r\n let rList = item.relationTypeProjectList;\r\n rList.forEach(r => {\r\n countInfo[item.graphTypeName][r.id] = r.count;\r\n });\r\n });\r\n let changeList = [];\r\n list1.forEach(item => {\r\n // 这里保存的是引用\r\n if (item.childGraphicTypeList) {\r\n changeList.push(...item.childGraphicTypeList);\r\n }\r\n });\r\n changeList.length &&\r\n changeList.forEach(item => {\r\n let name = item.graphTypeName;\r\n let rList = item.relationTypeProjectList;\r\n rList.forEach(r => {\r\n r.count = countInfo[name][r.id];\r\n // this.$set(r, 'cardDisabled', false)\r\n });\r\n });\r\n },\r\n RelationType(relation_type, zone_type, obj) {\r\n let param = {\r\n relation_type,\r\n zone_type,\r\n proId: {\r\n projectId: this.projectId\r\n }\r\n };\r\n this.computingNum++;\r\n businessSpaceAll(param).then(res => {\r\n this.computingNum--;\r\n if (res.result != logicConfig.resultObj.success) {\r\n this.$message({\r\n message: \"计算失败\",\r\n type: \"error\"\r\n });\r\n }\r\n \r\n this.init();\r\n }).catch(err => {\r\n console.log({err})\r\n });\r\n // todo\r\n obj.computationalState = 3\r\n setTimeout(() => {\r\n this.updateState();\r\n })\r\n },\r\n /**\r\n * 计算需更新的关系\r\n */\r\n calcSpecialUpdate(params, obj) {\r\n\t\t\tthis.computingNum++;\r\n\t\t\tcalcSpecial(params, res => {\r\n\t\t\t\tthis.computingNum--;\r\n\t\t\t\tif (res.result === \"failure\") {\r\n\t\t\t\t\tthis.$message.success('计算失败')\r\n\t\t\t\t}\r\n\t\t\t\tthis.init();\r\n\t\t\t})\r\n\t\t\tobj.computationalState = 3\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.updateState();\r\n\t\t\t})\r\n },\r\n statusCard() {\r\n\r\n },\r\n calcSpecial(relation) {\r\n this.currentRelationTypeName = relation.RelationTypeName;\r\n },\r\n\r\n openComputed(result) {\r\n let param = {\r\n // BuildingId: '',\r\n domain: \"DomainPiping\",\r\n mepSystemType: \"冷冻水供水管\",\r\n projectId: this.projectId,\r\n sourceList: result\r\n };\r\n blockSource(param, res => {\r\n //覆盖源端数据\r\n //确定流向\r\n result.forEach(i => {\r\n let { blockId, buildingId, domain, source } = i;\r\n this.DataSorting(blockId, buildingId, domain, source);\r\n });\r\n });\r\n },\r\n DataSorting(BlockId, BuildingId, Domain, source) {\r\n let param = {\r\n blockId: BlockId,\r\n domain: Domain,\r\n source,\r\n buildingId: BuildingId,\r\n systemName: this.currentRelationTypeName\r\n };\r\n sysDirection(param, res => {\r\n this.init();\r\n });\r\n }\r\n }\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=cc35322e&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cc35322e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contentContainer\"},[_c('el-row',{staticClass:\"h100\"},[_c('el-col',{staticClass:\"h100\",attrs:{\"span\":4}},[_c('div',{staticClass:\"grid-content bg-purple bg h100\",staticStyle:{\"overflow-y\":\"scroll\"}},[_c('Tree',{attrs:{\"data\":_vm.options},on:{\"change\":_vm.selectFloorHandle}})],1)]),_c('el-col',{staticClass:\"h100\",staticStyle:{\"padding-left\":\"24px\"},attrs:{\"span\":20}},[_c('div',{staticClass:\"grid-content bg-purple-light tab-right bg h100\",staticStyle:{\"padding\":\"0 16px 16px\"}},[_c('div',{staticClass:\"tab_warp\"},[_c('Tabs',{attrs:{\"type\":\"first-nav\",\"data\":_vm.MENU_MAP},model:{value:(_vm.currentTab),callback:function ($$v) {_vm.currentTab=$$v},expression:\"currentTab\"}})],1),_c('div',[_c('div',{staticStyle:{\"display\":\"flex\",\"justify-content\":\"space-between\",\"margin-top\":\"24px\"}},[_c('h3',[_vm._v(\"图纸文件列表\")]),_c('div',[_c('Button',{attrs:{\"type\":\"primary\",\"disabled\":true,\"icon\":\"el-icon-download\"}},[_vm._v(\"批量导出\")]),_c('el-upload',{ref:\"upload\",staticClass:\"upload\",attrs:{\"multiple\":true,\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"file-list\":_vm.fileList,\"show-file-list\":false,\"on-change\":_vm.fileChange,\"on-progress\":_vm.progressHandle,\"auto-upload\":false}},[_c('Button',{attrs:{\"slot\":\"trigger\",\"type\":\"primary\",\"icon\":\"el-icon-download\"},slot:\"trigger\"},[_vm._v(\"上传.dwg CAD文件\")])],1)],1)]),_c('div',{staticClass:\"tableView1\"},[_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.tableLoading),expression:\"tableLoading\"}],ref:\"multipleTable\",staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.tableList,\"tooltip-effect\":\"dark\"},on:{\"selection-change\":_vm.handleSelectionChange}},[_c('el-table-column',{attrs:{\"type\":\"selection\",\"width\":\"55\"}}),_c('el-table-column',{attrs:{\"label\":\"文件名称\",\"prop\":\"fileName\"}}),_c('el-table-column',{attrs:{\"label\":\"最新上传时间\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(scope.row.modifiedTime))]}}])}),_c('el-table-column',{attrs:{\"prop\":\"creator\",\"label\":\"上传人\"}}),_c('el-table-column',{attrs:{\"fixed\":\"right\",\"label\":\"操作\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.delHandle(scope.row)}}},[_vm._v(\"删除\")]),_c('el-divider',{attrs:{\"direction\":\"vertical\"}}),_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"small\",\"disabled\":\"\"}},[_vm._v(\"导出\")])]}}])})],1)],1)])])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\r\n * @Author: ql\r\n * @Date: 2022-01-12 11:46:51\r\n * @LastEditTime: 2022-01-12 14:18:29\r\n * @LastEditors: Please set LastEditors\r\n * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE\r\n * @FilePath: \\adm-frontend\\src\\data\\cadConst.js\r\n */\r\nexport const MENU_MAP = [\r\n {name: '土建精装', id:'id1'},\r\n {name: '空调专业', id:'id2' },\r\n {name: '消防专业' , id:'id3'},\r\n {name: '给排水专业', id:'id4' },\r\n]\r\n","<!--\r\n * @Author: ql\r\n * @Date: 2022-01-11 14:46:04\r\n * @LastEditTime: 2022-01-14 15:18:59\r\n * @LastEditors: Please set LastEditors\r\n * @FilePath: \\adm-frontend\\src\\components\\cadDrawingManage\\index.vue\r\n-->\r\n<template>\r\n <div class=\"contentContainer\">\r\n <el-row class=\"h100\">\r\n <el-col :span=\"4\" class=\"h100\">\r\n <div class=\"grid-content bg-purple bg h100\" style=\"overflow-y: scroll\">\r\n <Tree\r\n :data=\"options\"\r\n @change=\"selectFloorHandle\"\r\n />\r\n </div>\r\n </el-col>\r\n <el-col :span=\"20\" style=\"padding-left: 24px\" class=\"h100\">\r\n <div class=\"grid-content bg-purple-light tab-right bg h100\" style=\"padding: 0 16px 16px\">\r\n <div class=\"tab_warp\">\r\n <Tabs type=\"first-nav\" :data=\"MENU_MAP\" v-model=\"currentTab\" />\r\n </div> \r\n <div>\r\n <div style=\"display: flex; justify-content: space-between;margin-top: 24px\">\r\n <h3>图纸文件列表</h3>\r\n \r\n <div>\r\n <Button type=\"primary\" :disabled='true' icon=\"el-icon-download\">批量导出</Button>\r\n <el-upload\r\n class=\"upload\"\r\n ref=\"upload\"\r\n :multiple=\"true\"\r\n action=\"https://jsonplaceholder.typicode.com/posts/\"\r\n :file-list=\"fileList\"\r\n :show-file-list=\"false\"\r\n :on-change='fileChange'\r\n :on-progress='progressHandle'\r\n :auto-upload=\"false\">\r\n <Button slot=\"trigger\" type=\"primary\" icon=\"el-icon-download\">上传.dwg CAD文件</Button>\r\n </el-upload>\r\n </div>\r\n \r\n </div>\r\n <div class=\"tableView1\">\r\n <el-table\r\n ref=\"multipleTable\"\r\n :data=\"tableList\"\r\n tooltip-effect=\"dark\"\r\n v-loading=\"tableLoading\"\r\n style=\"width: 100%\"\r\n @selection-change=\"handleSelectionChange\">\r\n <el-table-column\r\n type=\"selection\"\r\n width=\"55\">\r\n </el-table-column>\r\n <el-table-column\r\n label=\"文件名称\"\r\n prop=\"fileName\"\r\n >\r\n </el-table-column>\r\n <el-table-column \r\n label=\"最新上传时间\"\r\n >\r\n <template slot-scope=\"scope\">{{ scope.row.modifiedTime }}</template>\r\n </el-table-column>\r\n <el-table-column\r\n prop=\"creator\"\r\n label=\"上传人\"\r\n >\r\n </el-table-column>\r\n <el-table-column\r\n fixed=\"right\"\r\n label=\"操作\"\r\n >\r\n <template slot-scope=\"scope\">\r\n <el-button @click=\"delHandle(scope.row)\" type=\"text\" size=\"small\">删除</el-button>\r\n <el-divider direction=\"vertical\"></el-divider>\r\n <el-button type=\"text\" size=\"small\" disabled>导出</el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n </div>\r\n </div>\r\n </div>\r\n </el-col>\r\n </el-row>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { Tree, Tabs, Button } from 'meri-design'\r\nimport { MENU_MAP } from '@/data/cadConst'\r\nimport BuildController from \"@/controller/old-adm/buildController\"\r\nimport cadDrawingController from '@/controller/cadDarwingController'\r\nexport default {\r\n components: {\r\n Tree,\r\n Tabs,\r\n Button,\r\n },\r\n watch: {\r\n currentTab(nv, ov) {\r\n console.log({nv, ov})\r\n }\r\n },\r\n data() {\r\n return {\r\n currentTab: 'id1',\r\n MENU_MAP,\r\n options: [],\r\n tableList: [], //文件列表数据\r\n tableLoading: false,\r\n fileList: [], //已选择文件\r\n // 基础表格表头列表\r\n headList: [\r\n {\r\n title: \"文件名称\", // 列的名称\r\n key: \"state\", // 列的标识\r\n show: true // 是否显示该列\r\n },\r\n {\r\n title: \"最新上传时间\",\r\n key: \"name\",\r\n show: true,\r\n width: 300\r\n },\r\n {\r\n title: \"上传人\",\r\n key: \"job\",\r\n show: true\r\n }\r\n ],\r\n }\r\n },\r\n methods: {\r\n // 获取楼层信息\r\n async getCascader() {\r\n let param = {\r\n cascade: [{ name: \"floor\", orders: \"floorSequenceID desc\", filters: `id != '${this.floorId}'` }],\r\n pageNumber: 1,\r\n pageSize: 50,\r\n };\r\n \r\n this.options = await BuildController.buildDataFormat(param);\r\n \r\n },\r\n // 选择楼层\r\n selectFloorHandle(id) {\r\n console.log({id})\r\n },\r\n // 获取文件列表数据\r\n async getFileList () {\r\n this.tableLoading = true\r\n this.tableList = await cadDrawingController.queryFileList();\r\n this.tableLoading = false\r\n console.log({res})\r\n },\r\n fileChange(file, fileList) {\r\n console.log({file, fileList})\r\n },\r\n progressHandle(e, file, fileList) {\r\n console.log({file, fileList})\r\n },\r\n delHandle(row) {\r\n this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(async() => {\r\n this.tableLoading = true\r\n await cadDrawingController.delFile(row);\r\n this.tableLoading = false;\r\n this.getFileList();\r\n this.$message({\r\n type: 'success',\r\n message: '删除成功!'\r\n });\r\n }).catch(() => {\r\n this.$message({\r\n type: 'info',\r\n message: '已取消删除'\r\n }); \r\n });\r\n }\r\n\r\n },\r\n mounted() {\r\n this.getCascader()\r\n this.getFileList()\r\n }\r\n\r\n}\r\n</script>\r\n\r\n<style scoped lang='less'>\r\n .tab-right{\r\n & /deep/ .el-divider--horizontal {\r\n height: 0.5px;\r\n }\r\n & /deep/ .upload {\r\n display: inline-block;\r\n margin-left: 16px;\r\n }\r\n }\r\n .bg {\r\n background: #fff;\r\n }\r\n .h100 {\r\n height: 100%;\r\n }\r\n .tableView1 {\r\n margin-top: 16px;\r\n height: 290px\r\n }\r\n .tab_warp {\r\n display: flex;\r\n justify-content: center;\r\n border-bottom: 1px solid #eff0f1;\r\n box-sizing: border-box;\r\n & /deep/ .p-tabs-nav-wrap {\r\n box-sizing: content-box;\r\n margin-bottom: -1px;\r\n }\r\n }\r\n \r\n\r\n \r\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=17b85403&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=17b85403&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17b85403\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"left\"},[_c('Anchor')],1),_c('div',{staticClass:\"right\"},[_c('Basic',{attrs:{\"name\":\"基本信息\"}}),_c('Geo'),_c('Project'),_c('Business')],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._l((_vm.points),function(item){return _c('div',{key:item.value,on:{\"click\":function($event){return _vm.go(item.value)}}},[_vm._v(_vm._s(item.label))])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div v-for=\"item in points\" :key=\"item.value\" @click=\"go(item.value)\">{{item.label}}</div>\r\n </div>\r\n</template>\r\n<script>\r\nexport default {\r\n data() {\r\n return {\r\n points: [\r\n {\r\n label: '基本信息',\r\n value: 'basic'\r\n },\r\n {\r\n label: '地理信息',\r\n value: 'geo'\r\n },\r\n {\r\n label: '项目信息',\r\n value: 'project'\r\n },\r\n {\r\n label: '商业信息',\r\n value: 'business'\r\n }\r\n ]\r\n }\r\n },\r\n methods: {\r\n go(value) {\r\n this.$emit('goAnchor', value)\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped></style>","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./anchor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./anchor.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./anchor.vue?vue&type=template&id=288ddba4&scoped=true&\"\nimport script from \"./anchor.vue?vue&type=script&lang=js&\"\nexport * from \"./anchor.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"288ddba4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"basic-container\"},[_c('Title',{attrs:{\"name\":_vm.name}}),_c('div',{staticClass:\"basic-content\"},[_c('div',{staticClass:\"basic-line\"},[_vm._v(\" 项目ID:\"),_c('span',[_vm._v(_vm._s(\"XXXXXXXXX\"))])]),_c('div',{staticClass:\"basic-line\"},[_vm._v(\" 项目本地名称:\"),_c('span',[_vm._v(_vm._s(\"XXXXXXXXX\"))])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.name))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"name\">{{name}}</div>\r\n</template>\r\n<script>\r\nexport default {\r\n props: {\r\n name: {\r\n type: String,\r\n default: ''\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.name {\r\n height: 20px;\r\n line-height: 20px;\r\n display: flex;\r\n align-items: center;\r\n font-size: 16px;\r\n color: #1f2429;\r\n margin-bottom: 20px;\r\n &::before {\r\n content: '';\r\n display: inline-block; \r\n width: 3px;\r\n height:100%;\r\n background-color: #0091FF;\r\n margin-right: 12px;\r\n }\r\n}\r\n</style>","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./title.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./title.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./title.vue?vue&type=template&id=8c45be0e&scoped=true&\"\nimport script from \"./title.vue?vue&type=script&lang=js&\"\nexport * from \"./title.vue?vue&type=script&lang=js&\"\nimport style0 from \"./title.vue?vue&type=style&index=0&id=8c45be0e&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8c45be0e\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div class=\"basic-container\">\r\n <Title :name=\"name\" />\r\n <div class=\"basic-content\">\r\n <div class=\"basic-line\">\r\n 项目ID:<span>{{ \"XXXXXXXXX\" }}</span>\r\n </div>\r\n <div class=\"basic-line\">\r\n 项目本地名称:<span>{{ \"XXXXXXXXX\" }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\nimport Title from \"./title.vue\";\r\nexport default {\r\n components: {\r\n Title,\r\n },\r\n props: {\r\n name: {\r\n type: String,\r\n default: \"\",\r\n },\r\n },\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.basic {\r\n &-container {\r\n padding-bottom: 40px;\r\n }\r\n &-content {\r\n display: flex;\r\n padding-left: 16px;\r\n }\r\n &-line {\r\n font-size: 14px;\r\n color: #646c73;\r\n span {\r\n color: #1f2429;\r\n }\r\n &:nth-child(2) {\r\n margin-left: 157px;\r\n }\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./basic.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./basic.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./basic.vue?vue&type=template&id=10cfdf14&scoped=true&\"\nimport script from \"./basic.vue?vue&type=script&lang=js&\"\nexport * from \"./basic.vue?vue&type=script&lang=js&\"\nimport style0 from \"./basic.vue?vue&type=style&index=0&id=10cfdf14&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"10cfdf14\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"geo-container\"},[_c('Title',{attrs:{\"name\":\"地理信息\"}}),_c('div',{staticClass:\"geo-content\"},[_c('div',{attrs:{\"id\":\"map-container\"}}),_c('div',{staticClass:\"map-search-input\"},[_c('el-input',{attrs:{\"id\":\"tipinput\",\"placeholder\":\"搜索\"},model:{value:(_vm.inputVal2),callback:function ($$v) {_vm.inputVal2=$$v},expression:\"inputVal2\"}},[_c('i',{staticClass:\"el-input__icon el-icon-search\",attrs:{\"slot\":\"prefix\"},slot:\"prefix\"})])],1),_c('div',{staticClass:\"form-content\"},[_c('FormItem',{attrs:{\"label\":\"省市区县\",\"initValue\":_vm.geoFormData.district}}),_c('FormItem',{attrs:{\"label\":\"详细地址\",\"initValue\":_vm.geoFormData.address}}),_c('el-row',[_c('el-col',{attrs:{\"span\":12}},[_c('FormItem',{attrs:{\"label\":\"经度\",\"initValue\":_vm.geoFormData.lng,\"formType\":\"input-unit\",\"unit\":\"度\"}})],1),_c('el-col',{attrs:{\"span\":12}},[_c('FormItem',{attrs:{\"label\":\"纬度\",\"initValue\":_vm.geoFormData.lat,\"formType\":\"input-unit\",\"unit\":\"度\"}})],1)],1),_c('FormItem',{attrs:{\"label\":\"抗震设防烈度\",\"initValue\":_vm.geoFormData.level,\"formType\":\"select\"}})],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"formitem\"},[_c('div',{staticClass:\"label\",style:({ width: _vm.labelWidth + 'px' })},[_vm._v(\" \"+_vm._s(_vm.label)+\" \"),(_vm.showPop)?_c('Popover',{attrs:{\"type\":\"base\",\"placement\":\"top-left\"},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('article',[_vm._v(\" \"+_vm._s(_vm.popText)+\" \")])]},proxy:true}],null,false,3806895160)},[_c('Icon',{staticClass:\"icon\",attrs:{\"name\":'tagError'}})],1):_vm._e(),_vm._v(\" : \")],1),(_vm.formType === 'input')?_c('Input',{attrs:{\"placeholder\":_vm.placeholder},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}}):_vm._e(),(_vm.formType === 'input-unit')?_c('Input',{attrs:{\"placeholder\":_vm.placeholder,\"right-button\":[\n {\n id: '1',\n name: _vm.unit,\n checked: 'checked',\n } ]},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}}):_vm._e(),(_vm.formType === 'select')?_c('MSelect',{attrs:{\"width\":\"180\",\"data\":_vm.selectData},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}}):_vm._e(),(_vm.formType === 'upload')?_c('section',{staticClass:\"list\"},[_c('ImageUpload',{attrs:{\"hosts\":\"http://47.95.122.141:8209/domita/backend\",\"action\":\"/base/attachment/uploadX\",\"defaultFileList\":_vm.value,\"previewMode\":false,\"multiple\":true}})],1):_vm._e(),(_vm.formType === 'textarea')?_c('Input',{attrs:{\"type\":\"textarea\",\"rows\":6,\"autofocus\":false,\"max-length\":10},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"formitem\">\r\n <!-- 标题 -->\r\n <div class=\"label\" :style=\"{ width: labelWidth + 'px' }\">\r\n {{ label }}\r\n <!-- 提示 -->\r\n <Popover v-if=\"showPop\" type=\"base\" placement=\"top-left\">\r\n <template #content>\r\n <article>\r\n {{ popText }}\r\n </article>\r\n </template>\r\n <Icon class=\"icon\" :name=\"'tagError'\" />\r\n </Popover>\r\n :\r\n </div>\r\n <!-- 输出框 -->\r\n <Input\r\n v-if=\"formType === 'input'\"\r\n v-model=\"value\"\r\n :placeholder=\"placeholder\"\r\n ></Input>\r\n <!-- 输出框带单位 -->\r\n <Input\r\n v-if=\"formType === 'input-unit'\"\r\n v-model=\"value\"\r\n :placeholder=\"placeholder\"\r\n :right-button=\"[\r\n {\r\n id: '1',\r\n name: unit,\r\n checked: 'checked',\r\n },\r\n ]\"\r\n />\r\n <!-- 选择框 -->\r\n <MSelect\r\n v-if=\"formType === 'select'\"\r\n width=\"180\"\r\n v-model=\"value\"\r\n :data=\"selectData\"\r\n />\r\n <!-- 上传图片 -->\r\n <section class=\"list\" v-if=\"formType === 'upload'\">\r\n <ImageUpload\r\n hosts=\"http://47.95.122.141:8209/domita/backend\"\r\n action=\"/base/attachment/uploadX\"\r\n :defaultFileList=\"value\"\r\n :previewMode=\"false\"\r\n :multiple=\"true\"\r\n />\r\n </section>\r\n <Input\r\n v-if=\"formType === 'textarea'\"\r\n v-model=\"value\"\r\n type=\"textarea\"\r\n :rows=\"6\"\r\n :autofocus=\"false\"\r\n :max-length=\"10\"\r\n />\r\n </div>\r\n</template>\r\n<script>\r\nexport default {\r\n props: {\r\n label: String,\r\n formType: {\r\n type: String,\r\n default: \"input\",\r\n },\r\n initValue: [String, Number, Array, Object],\r\n placeholder: \"请输入\",\r\n labelWidth: {\r\n type: Number,\r\n default: 100,\r\n },\r\n unit: String,\r\n selectData: {\r\n type: Array,\r\n default: () => {\r\n return [];\r\n },\r\n },\r\n showPop: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n popText: String,\r\n },\r\n data() {\r\n return {\r\n value: this.initValue,\r\n };\r\n },\r\n watch: {\r\n initValue(val, old) {\r\n if (val !== old) {\r\n this.value = val;\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.formitem {\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 24px;\r\n .label {\r\n font-size: 14px;\r\n text-align: right;\r\n color: #646c73;\r\n margin-right: 20px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end;\r\n .icon {\r\n width: 11.5px;\r\n height: 11.5px;\r\n /deep/ .v-svg-tagError {\r\n width: 11.5px !important;\r\n height: 11.5px !important;\r\n }\r\n }\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./formItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./formItem.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./formItem.vue?vue&type=template&id=3e34d378&scoped=true&\"\nimport script from \"./formItem.vue?vue&type=script&lang=js&\"\nexport * from \"./formItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./formItem.vue?vue&type=style&index=0&id=3e34d378&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3e34d378\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div class=\"geo-container\">\r\n <Title name=\"地理信息\" />\r\n <div class=\"geo-content\">\r\n <div id=\"map-container\"></div>\r\n <div class=\"map-search-input\">\r\n <el-input id=\"tipinput\" placeholder=\"搜索\" v-model=\"inputVal2\">\r\n <i slot=\"prefix\" class=\"el-input__icon el-icon-search\"></i>\r\n </el-input>\r\n </div>\r\n <div class=\"form-content\">\r\n <FormItem label=\"省市区县\" :initValue=\"geoFormData.district\" />\r\n <FormItem label=\"详细地址\" :initValue=\"geoFormData.address\" />\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <FormItem\r\n label=\"经度\"\r\n :initValue=\"geoFormData.lng\"\r\n formType=\"input-unit\"\r\n unit=\"度\"\r\n />\r\n </el-col>\r\n <el-col :span=\"12\"\r\n ><FormItem\r\n label=\"纬度\"\r\n :initValue=\"geoFormData.lat\"\r\n formType=\"input-unit\"\r\n unit=\"度\"\r\n /></el-col>\r\n </el-row>\r\n <FormItem\r\n label=\"抗震设防烈度\"\r\n :initValue=\"geoFormData.level\"\r\n formType=\"select\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\nimport Title from \"./title.vue\";\r\nimport AMapLoader from \"@amap/amap-jsapi-loader\";\r\nimport FormItem from \"./formItem.vue\";\r\nexport default {\r\n components: {\r\n Title,\r\n FormItem,\r\n },\r\n data() {\r\n return {\r\n map: null,\r\n inputVal2: \"\",\r\n autocomplete: null,\r\n markers: [], // 标记数组\r\n\r\n geoFormData: {\r\n // 地理信息数据\r\n district: \"\", // 省市区县\r\n address: \"\", // 详细地址\r\n lng: \"\", // 经度\r\n lat: \"\", // 纬度\r\n level: null, // 抗震设防烈度\r\n },\r\n };\r\n },\r\n mounted() {\r\n this.initMap();\r\n },\r\n methods: {\r\n // 初始化地图\r\n initMap() {\r\n AMapLoader.load({\r\n key: window.__systemConf.mapKey,\r\n version: \"2.0\",\r\n plugins: [],\r\n }).then((Amap) => {\r\n this.map = new Amap.Map(\"map-container\", {\r\n zoom: 11,\r\n resizeEnable: true,\r\n });\r\n Amap.plugin([\"AMap.PlaceSearch\", \"AMap.AutoComplete\"], () => {\r\n const autoOptions = {\r\n input: \"tipinput\",\r\n };\r\n this.autocomplete = new Amap.Autocomplete(autoOptions);\r\n\r\n this.autocomplete.on(\"select\", (e) => {\r\n console.log(e);\r\n const location = e.poi.location;\r\n if (location) {\r\n this.setLocation(location);\r\n this.addMarker(Amap, location, e.poi.name);\r\n const { district, address } = e.poi;\r\n this.geoFormData.district = district;\r\n this.geoFormData.address = address;\r\n this.geoFormData.lng = location.lng.toString();\r\n this.geoFormData.lat = location.lat.toString();\r\n this.geoFormData.level = null;\r\n }\r\n });\r\n });\r\n });\r\n },\r\n getDicData() {},\r\n /**\r\n * 设置当前定位\r\n * @param {*} location\r\n */\r\n setLocation(location) {\r\n if (location) {\r\n this.map.setCenter([location.lng, location.lat], true);\r\n }\r\n },\r\n /**\r\n * 添加标记点\r\n * @param {*} Amap\r\n * @param {*} location\r\n * @param {*} name 标记点的标签内容\r\n */\r\n addMarker(Amap, location, name) {\r\n this.clearMarker();\r\n const marker = new Amap.Marker({\r\n position: [location.lng, location.lat],\r\n title: name,\r\n });\r\n marker.setLabel({\r\n offset: new AMap.Pixel(0, 0), //设置文本标注偏移量\r\n content: `<div class='info'>${name}</div>`, //设置文本标注内容\r\n direction: \"right\", //设置文本标注方位\r\n });\r\n this.markers.push(marker);\r\n this.map.add(marker);\r\n },\r\n /**\r\n * 清除地图所有标记点\r\n */\r\n clearMarker() {\r\n this.markers.forEach((marker) => this.map.remove(marker));\r\n },\r\n },\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.geo-container {\r\n width: 100%;\r\n .geo-content {\r\n width: 100%;\r\n height: 100%;\r\n padding: 0 16px;\r\n position: relative;\r\n #map-container {\r\n width: 100%;\r\n height: 200px;\r\n }\r\n .map-search-input {\r\n position: absolute;\r\n top: 12px;\r\n left: 24px;\r\n background-color: #fff;\r\n }\r\n .form-content {\r\n margin-top: 24px;\r\n }\r\n }\r\n}\r\n/deep/ .amap-marker-label {\r\n background-color: red;\r\n}\r\n</style>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./geo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./geo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./geo.vue?vue&type=template&id=99ac7a5e&scoped=true&\"\nimport script from \"./geo.vue?vue&type=script&lang=js&\"\nexport * from \"./geo.vue?vue&type=script&lang=js&\"\nimport style0 from \"./geo.vue?vue&type=style&index=0&id=99ac7a5e&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"99ac7a5e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"project-container\"},[_c('Title',{attrs:{\"name\":\"项目信息\"}}),_c('div',{staticClass:\"form-content\"},[_c('el-row',[_c('el-col',{attrs:{\"span\":12}},[_c('FormItem',{attrs:{\"label\":\"总建筑面积\",\"initValue\":_vm.formData.buildArea,\"formType\":\"input-unit\",\"unit\":\"m²\",\"showPop\":true,\"popText\":\"各建筑“建筑面积”之和\"}})],1),_c('el-col',{attrs:{\"span\":12}},[_c('FormItem',{attrs:{\"label\":\"占地面积\",\"initValue\":_vm.formData.coverArea,\"formType\":\"input-unit\",\"unit\":\"m²\",\"showPop\":true,\"popText\":\"红线面积\"}})],1)],1),_c('el-row',[_c('el-col',{attrs:{\"span\":12}},[_c('FormItem',{attrs:{\"label\":\"项目高度\",\"initValue\":_vm.formData.height,\"formType\":\"input-unit\",\"unit\":\"m²\"}})],1),_c('el-col',{attrs:{\"span\":12}},[_c('FormItem',{attrs:{\"label\":\"耐火等级\",\"initValue\":_vm.formData.level,\"formType\":\"select\",\"showPop\":true}})],1)],1),_c('el-row',[_c('el-col',{attrs:{\"span\":12}},[_c('FormItem',{attrs:{\"label\":\"项目功能类型\",\"initValue\":_vm.formData.type,\"formType\":\"select\"}})],1),_c('el-col',{attrs:{\"span\":12}},[_c('FormItem',{attrs:{\"label\":\"地下楼层数\",\"initValue\":_vm.formData.floor,\"formType\":\"input-unit\",\"unit\":\"层\"}})],1)],1),_c('FormItem',{attrs:{\"label\":\"项目Logo\",\"initValue\":_vm.formData.logos,\"formType\":\"upload\"}}),_c('FormItem',{attrs:{\"label\":\"区位图(城市)\",\"initValue\":_vm.formData.citys,\"formType\":\"upload\"}}),_c('FormItem',{attrs:{\"label\":\"项目简介\",\"initValue\":_vm.formData.desc,\"formType\":\"textarea\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"project-container\">\r\n <Title name=\"项目信息\" />\r\n <div class=\"form-content\">\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <FormItem\r\n label=\"总建筑面积\"\r\n :initValue=\"formData.buildArea\"\r\n formType=\"input-unit\"\r\n unit=\"m²\"\r\n :showPop=\"true\"\r\n popText=\"各建筑“建筑面积”之和\"\r\n />\r\n </el-col>\r\n <el-col :span=\"12\"\r\n ><FormItem\r\n label=\"占地面积\"\r\n :initValue=\"formData.coverArea\"\r\n formType=\"input-unit\"\r\n unit=\"m²\"\r\n :showPop=\"true\"\r\n popText=\"红线面积\"\r\n /></el-col>\r\n </el-row>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <FormItem\r\n label=\"项目高度\"\r\n :initValue=\"formData.height\"\r\n formType=\"input-unit\"\r\n unit=\"m²\"\r\n />\r\n </el-col>\r\n <el-col :span=\"12\"\r\n ><FormItem\r\n label=\"耐火等级\"\r\n :initValue=\"formData.level\"\r\n formType=\"select\"\r\n :showPop=\"true\"\r\n /></el-col>\r\n </el-row>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <FormItem\r\n label=\"项目功能类型\"\r\n :initValue=\"formData.type\"\r\n formType=\"select\"\r\n />\r\n </el-col>\r\n <el-col :span=\"12\"\r\n ><FormItem\r\n label=\"地下楼层数\"\r\n :initValue=\"formData.floor\"\r\n formType=\"input-unit\"\r\n unit=\"层\"\r\n /></el-col>\r\n </el-row>\r\n <FormItem\r\n label=\"项目Logo\"\r\n :initValue=\"formData.logos\"\r\n formType=\"upload\"\r\n />\r\n <FormItem\r\n label=\"区位图(城市)\"\r\n :initValue=\"formData.citys\"\r\n formType=\"upload\"\r\n />\r\n <FormItem\r\n label=\"项目简介\"\r\n :initValue=\"formData.desc\"\r\n formType=\"textarea\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\nimport Title from \"./title.vue\";\r\nimport FormItem from \"./formItem.vue\";\r\nexport default {\r\n components: {\r\n Title,\r\n FormItem,\r\n },\r\n data() {\r\n return {\r\n formData: {\r\n buildArea: \"\",\r\n coverArea: \"\",\r\n height: \"\",\r\n level: \"\",\r\n type: \"\",\r\n floor: \"\",\r\n logos: [],\r\n citys: [],\r\n desc: \"\",\r\n },\r\n };\r\n },\r\n};\r\n</script>\r\n<style lang=\"less\" scoped></style>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./project.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./project.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./project.vue?vue&type=template&id=c67f14ae&scoped=true&\"\nimport script from \"./project.vue?vue&type=script&lang=js&\"\nexport * from \"./project.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c67f14ae\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"business-container\"},[_c('Title',{attrs:{\"name\":\"商业信息\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"business-container\">\r\n <Title name=\"商业信息\" />\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport Title from \"./title.vue\";\r\nexport default {\r\n components: {\r\n Title,\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"less\" scoped></style>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./business.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./business.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./business.vue?vue&type=template&id=7528487c&scoped=true&\"\nimport script from \"./business.vue?vue&type=script&lang=js&\"\nexport * from \"./business.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7528487c\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div class=\"container\">\r\n <div class=\"left\">\r\n <Anchor />\r\n </div>\r\n <div class=\"right\">\r\n <Basic name=\"基本信息\" />\r\n <Geo />\r\n <Project />\r\n <Business />\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\nimport Anchor from \"./components/anchor.vue\";\r\nimport Basic from \"./components/basic.vue\";\r\nimport Geo from \"./components/geo.vue\";\r\nimport Project from \"./components/project.vue\";\r\nimport Business from \"./components/business.vue\";\r\nexport default {\r\n components: {\r\n Anchor,\r\n Basic,\r\n Geo,\r\n Project,\r\n Business,\r\n },\r\n mounted() {},\r\n methods: {},\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.container {\r\n width: 100%;\r\n display: flex;\r\n .left {\r\n flex: 0 0 143px;\r\n }\r\n .right {\r\n width: 100%;\r\n padding: 20px;\r\n background-color: #ffffff;\r\n overflow-y: auto;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=6b91c335&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=6b91c335&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6b91c335\",\n null\n \n)\n\nexport default component.exports","import { logicConfig } from \"@/logicConfig\";\r\nimport layoutMain from \"@/Main.vue\";\r\n//登录页\r\nimport login from \"@/components/frame/login.vue\";\r\n//系统图\r\nimport systemGraph from \"@/components/systemGraph\";\r\n//系统图编辑页面\r\nimport systemGraphEdit from \"@/components/systemGraph/edit\";\r\n\r\nimport facilityLedger from \"@/components/old-adm/ledger/facility/index\";\r\nimport deviceDetails from \"@/components/old-adm/ledger/facility/details/index\";\r\n// 系统台账\r\nimport systemLedger from '@/components/old-adm/ledger/system/index';\r\nimport batchPointAssets from '@/components/old-adm/ledger/facility/batchPoint' //批量维护设备位置\r\nimport buildFloor from '@/components/old-adm/ready/buildfloor/index'\r\nimport repetitionGraphy from '@/components/old-adm/ready/buildfloor/repetitionGraphy'\r\n\r\n\r\n// 全部关系总览\r\nimport overView from '@/components/old-adm/relation/overview'\r\n\r\n//cad核查图纸管理\r\nimport cadDrawingManage from '@/components/cadDrawingManage'\r\n\r\n// 项目信息管理\r\nimport projectManage from '@/components/project-manage/index'\r\n\r\nexport default [\r\n {\r\n path: logicConfig.routerNameConfig.loginRouteName,\r\n name: \"登录页\",\r\n component: login,\r\n },\r\n {\r\n path: \"/\",\r\n name: \"首页\",\r\n component: layoutMain,\r\n },\r\n {\r\n path: logicConfig.routerNameConfig.systemGraphName,\r\n name: \"系统图\",\r\n component: layoutMain,\r\n children: [\r\n {\r\n path: \"/\",\r\n component: systemGraph,\r\n },\r\n {\r\n path: '/ready/buildfloor',\r\n name: 'buildFloor',\r\n component: buildFloor,\r\n meta: {keepAlive: false, breadcrumbs: [{label: '建筑楼层管理'}]}\r\n },\r\n {\r\n path: 'repetitionGraphy',\r\n name: 'repetitionGraphy',\r\n component: repetitionGraphy,\r\n meta: {keepAlive: false, breadcrumbs: [{label: '建筑楼层管理', path: '/ready/buildfloor'}, {label: '平面图维护'}]}\r\n },\r\n {\r\n path: \"/ledger/facility\",\r\n name: \"facilityLedger\",\r\n component: facilityLedger,\r\n meta: {keepAlive: true, isBack: false, breadcrumbs: [{label: '台账管理', path: '/ledger/facility'}, {label: '设备台账'}]}\r\n },\r\n {\r\n path: '/ledger/batchPointAssets',\r\n name: 'BatchPointAssets',\r\n component: batchPointAssets,\r\n meta: {keepAlive: false,\r\n breadcrumbs: [{label: '台账管理', path: '/ledger/facility'}, {\r\n label: '设备台账',\r\n path: '/ledger/facility'\r\n }, {label: '批量维护设备位置'}]\r\n }\r\n },\r\n {\r\n path: '/ledger/deviceDetails',\r\n name: 'deviceDetails',\r\n component: deviceDetails,\r\n meta: {\r\n keepAlive: false,\r\n breadcrumbs: [\r\n {label: '台账管理', path: '/ledger/facility'},\r\n {label: '设备台账', path: '/ledger/facility'},\r\n {label: '台账详情'}\r\n ]\r\n }\r\n },\r\n {\r\n path: \"/project/manage\",\r\n name: \"项目信息管理\",\r\n component: projectManage,\r\n },\r\n {\r\n path: \"/ledger/list\",\r\n name: \"系统台账\",\r\n component: systemLedger,\r\n },\r\n {\r\n path: '/relation/overview',\r\n name: \"全部关系总览\",\r\n component: overView,\r\n },\r\n ],\r\n },\r\n {\r\n path: logicConfig.routerNameConfig.systemGraphEditName,\r\n name: \"系统图编辑器\",\r\n component: systemGraphEdit,\r\n },\r\n {\r\n path: '/deliveryTools',\r\n name: '现场交付工具',\r\n component: layoutMain,\r\n children: [\r\n {\r\n path: logicConfig.routerNameConfig.cadDrawingManageRoute,\r\n name: 'CAD核查图纸管理',\r\n component: cadDrawingManage\r\n }\r\n ]\r\n }\r\n];\r\n","import Vue from 'vue'\r\nimport Router from 'vue-router'\r\nimport systemRoute from './system'\r\nimport packageConfig from '../../package.json'\r\nimport {authUtils} from '@/utils/authUtils'\r\n\r\nVue.use(Router)\r\n\r\nlet routes = []\r\nroutes = routes.concat(systemRoute)\r\n\r\nconst router = new Router({\r\n mode: 'history',\r\n base: '/' + packageConfig.name,\r\n routes: routes\r\n})\r\n\r\nrouter.beforeEach(new authUtils().routerBeforeEach)\r\n\r\nexport default router\r\n","import Vue from 'vue'\r\nimport {Button, Input, MSelect, Icon, Popover, ImageUpload} from 'meri-design'\r\n\r\nVue.use(Button)\r\nVue.use(Input)\r\nVue.use(MSelect)\r\nVue.use(Icon)\r\nVue.use(Popover)\r\nVue.use(ImageUpload)\r\n","import Vue from 'vue'\r\nimport App from './App'\r\nimport router from './router'\r\nimport vueStore from './store'\r\nimport ElementUI from 'element-ui'\r\nimport 'element-ui/lib/theme-chalk/index.css'\r\nimport './meri'\r\n// import {Button} from 'meri-design'\r\n// import 'meri-design/dist/index.css'\r\nVue.use(ElementUI, { size: \"small\", zIndex: 1000 })\r\n// Vue.use(Button)\r\n\r\nimport 'font-awesome/less/font-awesome.less'\r\nimport '@/assets/style/main.less'\r\nimport '@/assets/style/iconfont/iconfont.css'\r\n\r\nVue.config.productionTip = false\r\nVue.config.devtools = true;\r\nnew Vue({\r\n el:'#app',\r\n router,\r\n store: vueStore,\r\n components: { App },\r\n template: '<App/>'\r\n})\r\n","import { baseHttpUtils } from \"@/utils/http/baseHttpUtils\";\r\nimport {\r\n datacenter_pre,\r\n dict_pre,\r\n equipcomponent_pre,\r\n equipquery_pre,\r\n floor_pre,\r\n graphhic_pre,\r\n object_pre,\r\n rwd_pre,\r\n} from \"./preTypes\";\r\nclass ScanController {\r\n static http = new baseHttpUtils();\r\n /**\r\n * 查询不在当前系统下的设备\r\n */\r\n static async getEquipNotInSys(params, fn) {\r\n const res = await this.http.postRequest(\r\n equipquery_pre + `/equip-sys?sysId=${params.sysId}`,\r\n params\r\n );\r\n return fn ? fn(res) : res;\r\n }\r\n /**\r\n *@description: 获取设定参数和动态参数\r\n\r\n *@param {*} params\r\n\r\n *@return {*}\r\n */\r\n static async BeatchQueryParam(params, fn) {\r\n let data = params.data;\r\n const res = await ScanController.http.postRequest(\r\n `/rwd/iot/data/current?projectId=${params.projectId}&groupCode=${params.groupCode}&appId=${params.appId}`,\r\n data\r\n );\r\n return fn ? fn(res) : res;\r\n }\r\n /** \r\n\r\n *@description: 根据条件查询项目下设备部件数量\r\n\r\n *@param {*} params\r\n\r\n *@return {*}\r\n */\r\n static async countPartsDie(params) {\r\n const res = await ScanController.http.postRequest(\r\n \"/equip-component/equip-query/count\",\r\n params\r\n );\r\n }\r\n /**\r\n\r\n *@description: 根据设备或部件批量创建资产\r\n\r\n *@param {*}\r\n\r\n *@return {*}\r\n */\r\n static async createPropertys(params) {\r\n return await ScanController.http.postRequest(\r\n \"/equip-component/equip-query/creat-propertys\",\r\n params\r\n );\r\n }\r\n /**\r\n\r\n *@description: 根据id删除资产信息\r\n\r\n *@param {*}\r\n\r\n *@return {*}\r\n */\r\n static async deleteProperty(params) {\r\n return await ScanController.http.postRequest(\r\n \"/datacenter/object/property/delete\",\r\n params\r\n );\r\n }\r\n /**\r\n\r\n *@description: 查询资产 同时关联设备信息\r\n\r\n *@param {*}\r\n\r\n *@return {*}\r\n */\r\n static async propertyLinkEq(params) {\r\n return await ScanController.http.postRequest(\r\n \"/equip-component/property/property-query\",\r\n params\r\n );\r\n }\r\n /** \r\n @description: 修改资产的附件功能\r\n @param {*}\r\n @return {*}\r\n */\r\n static async propertyUpdate(params) {\r\n return await ScanController.http.postRequest(\r\n \"/equip-component/property/update\",\r\n params\r\n );\r\n }\r\n /**\r\n *@description: 查询资产\r\n *@param {*}\r\n *@return {*}\r\n */\r\n static async queryProperty(params) {\r\n return await ScanController.http.postRequest(\r\n \"/datacenter/object/property/query\",\r\n params\r\n );\r\n }\r\n /**\r\n *@description: 更新资产信息\r\n *@param {*}\r\n *@return {*}\r\n */\r\n static async updateProperty(params) {\r\n return await ScanController.http.postRequest(\r\n \"/datacenter/object/property/update\",\r\n params\r\n );\r\n }\r\n /**\r\n *@description: 删除系统信息\r\n *@param {*}\r\n *@return {*}\r\n */\r\n static async deleteGeneralSys(params) {\r\n return await ScanController.http.postRequest(\r\n \"/datacenter/object/general-system/delete\",\r\n params\r\n );\r\n }\r\n /**\r\n\r\n *@description: 更新系统信息\r\n *@param {*}\r\n *@return {*}\r\n */\r\n static async updateGeneralSys(params) {\r\n return await ScanController.http.postRequest(\r\n \"/datacenter/object/general-system/update\",\r\n params\r\n );\r\n }\r\n /**\r\n @description: 创建资产所需(Family族id3位编码)-根据设备类型(4位编码)或部件类型(6位编码)查询,!!设备与设备族的关系\r\n @param {*}\r\n @return {*}\r\n */\r\n static async getEquipBelongs(params) {\r\n return await ScanController.http.postRequest(\r\n \"/datacenter/dict/family/query\",\r\n params\r\n );\r\n }\r\n\r\n /**\r\n @description: 查询建筑信息\r\n @param {*}\r\n @return {*}\r\n */\r\n static async buildingQuery(params) {\r\n return await ScanController.http.postRequest(\r\n \"/datacenter/object/building/query\",\r\n params\r\n );\r\n }\r\n /**\r\n @description: 关系-竖井所在建筑\r\n @param {*}\r\n @return {*}\r\n */\r\n static async shaftLinkBuild(params) {\r\n return await ScanController.http.postRequest(\r\n \"/datacenter/rel/sh-in-bd/link-bd\",\r\n params\r\n );\r\n }\r\n /**\r\n *@description: 查询系统信息 - 建筑楼层 - 系统一对多\r\n *@param {*} params\r\n *@return {*}\r\n */\r\n static async querySysLinkBuild(params, fn) {\r\n let url = \"/datacenter/object/general-system/query-new\";\r\n if (params.buildingId) {\r\n url += `?buildingId=${params.buildingId}`;\r\n }\r\n if (params.floorId) {\r\n url += `&floorId=${params.floorId}`;\r\n }\r\n const res = await ScanController.http.postRequest(url, params);\r\n return fn ? fn(res) : res;\r\n }\r\n static async countGeneralSys(params: any, fn: any) {\r\n const res = await ScanController.http.postRequest(\r\n \"/datacenter/object/general-system/count\",\r\n params\r\n );\r\n return fn ? fn(res) : res;\r\n }\r\n /**\r\n *@description: 获取楼层信息\r\n *@param {*}\r\n *@return {*}\r\n */\r\n static async getFloorMsgByFloorID(params?: any) {\r\n return await ScanController.http.postRequest(\r\n \"/datacenter/object/floor/query\",\r\n params\r\n );\r\n }\r\n /**\r\n *@description: //设备清单 - 查询系统关联专业 - 查询系统信息 - 查询系统所属专业类型\r\n *@param {*}\r\n *@return {*}\r\n */\r\n static async queryLinkSys(params) {\r\n return await ScanController.http.postRequest(\r\n \"/datacenter/object/general-system/query\",\r\n params\r\n );\r\n }\r\n static async getAllProject(params, fn) {\r\n const res = await ScanController.http.postRequest(\r\n \"/datacenter/object/project/query/obj\",\r\n params\r\n );\r\n return fn ? fn(res) : res;\r\n }\r\n\r\n /**\r\n * @description: 创建系统所在建筑关系,系统一对多,覆盖\r\n * @param {*} params\r\n * @param {*} fn\r\n * @return {*}\r\n */\r\n static async sysRelateBuild(params, fn) {\r\n const res = await ScanController.http.postRequest(\r\n \"/datacenter/rel/sy-in-bd/link-bd\",\r\n params\r\n );\r\n return fn ? fn(res) : res;\r\n }\r\n /**\r\n * @description: 创建系统所在建筑关系,系统一对多,覆盖\r\n * @param {*} params\r\n * @param {*} fn\r\n * @return {*}\r\n */\r\n static async sysRelateFloor(params, fn) {\r\n const res = await ScanController.http.postRequest(\r\n \"/datacenter/rel/sy-in-fl/link-fl\",\r\n params\r\n );\r\n return fn ? fn(res) : res;\r\n }\r\n static async getEquipInSys(params, fn) {\r\n const res = await ScanController.http.postRequest(\r\n `/equip-component/equip-query/sys-equip`,\r\n params\r\n );\r\n return fn ? fn(res) : res;\r\n }\r\n static async sysLinkEquip(params, fn) {\r\n const res = await ScanController.http.postRequest(\r\n `/datacenter/rel/sy-in-eq/link-sy-eq`,\r\n params\r\n );\r\n return fn ? fn(res) : res;\r\n }\r\n /**\r\n * 设备清单 - 更新设备\r\n * @param params\r\n */\r\n static async updateEquip(params) {\r\n return await this.http.postRequest(object_pre + \"/equip/update\", params);\r\n }\r\n /**\r\n * 设备清单 - 根据对象删除系统和设备的关系\r\n * @param params\r\n */\r\n static async sysUnlinkEquip(params, fn) {\r\n const res = await this.http.postRequest(\r\n datacenter_pre + \"/sy-in-eq/unlinks-sy-eq\",\r\n params\r\n );\r\n return fn ? fn(res) : res;\r\n }\r\n static async zoneQuery() {}\r\n static async TypePartsDie() {}\r\n /**\r\n * 下载报告-查询key值\r\n * @param params\r\n * @returns\r\n */\r\n static async queryDownloadsKey(params) {\r\n return await this.http.postRequest(\r\n graphhic_pre + \"/downloads/point/key\",\r\n params\r\n );\r\n }\r\n /**\r\n * 下载模板-设备静态信息维护模板\r\n * @param params\r\n * @returns\r\n */\r\n static async equipTemplate(params) {\r\n window.location.href =\r\n (window as any).__systemConf.baseServiceUrl +\r\n graphhic_pre +\r\n \"/downloads/equip/template\";\r\n // return await this.http.getRequest(\r\n // graphhic_pre + \"/downloads/equip/template\",\r\n // params\r\n // );\r\n }\r\n /**\r\n * 修改设备的附件功能\r\n * @param params\r\n * @returns\r\n */\r\n static async queryUpdate(params) {\r\n return await this.http.postRequest(equipquery_pre + \"/update\", params);\r\n }\r\n static async equipLinkSys() {}\r\n /**\r\n * 查询建筑信息+count\r\n */\r\n static async buildingQueryAndCount(params) {\r\n return await this.http.postRequest(\r\n equipcomponent_pre + \"/building/query\",\r\n params\r\n );\r\n }\r\n /**\r\n * 查询楼层信息+sign\r\n */\r\n static async floorQueryAndSign(params) {\r\n return await this.http.postRequest(\r\n equipcomponent_pre + \"/floor/query\",\r\n params\r\n );\r\n }\r\n /**\r\n * 建筑楼层管理-删除楼层(该接口有删除失败的原因)\r\n */\r\n static async deleteFloorInfo(params) {\r\n return await this.http.postRequest(floor_pre + \"/single/delete\", params);\r\n }\r\n /**\r\n * 根据id删除建筑信息(该接口有删除失败的原因)\r\n */\r\n static async deleteBuildInfo(params) {\r\n return await this.http.postRequest(\r\n object_pre + \"/building/single/delete\",\r\n params\r\n );\r\n }\r\n /**\r\n * 创建建筑信息\r\n */\r\n static async objectCreateBuild(params) {\r\n return await this.http.postRequest(object_pre + \"/building/create\", params);\r\n }\r\n /**\r\n * 查询建筑信息\r\n */\r\n static async objectQueryBuild(params) {\r\n return await this.http.postRequest(object_pre + \"/building/query\", params);\r\n }\r\n /**\r\n * 查询建筑信息\r\n */\r\n static async objectUpdateBuild(params) {\r\n return await this.http.postRequest(object_pre + \"/building/update\", params);\r\n }\r\n /**\r\n * 建筑楼层管理-创建楼层关联关系\r\n */\r\n static async createRelationInFloor(params) {\r\n return await this.http.postRequest(\r\n datacenter_pre + \"/rel/fl-through-fl/link-or\",\r\n params\r\n );\r\n }\r\n /**\r\n * 建筑楼层管理-修改楼层\r\n */\r\n static async manageUpdateFloor(params) {\r\n return await this.http.postRequest(floor_pre + \"/update\", params);\r\n }\r\n /**\r\n * 楼层接口-----更新楼层轮廓\r\n */\r\n static async floorUpdateOutline(params) {\r\n return await this.http.postRequest(floor_pre + \"/update-outline\", params);\r\n }\r\n /**\r\n * 楼层接口-----查询楼层轮廓\r\n */\r\n static async floorQueryOutline(params) {\r\n return await this.http.postRequest(floor_pre + \"/query-outline\", params);\r\n }\r\n}\r\n\r\nexport default ScanController;\r\n","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./qrcode.vue?vue&type=style&index=0&id=13576903&lang=less&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=c943ccd0&lang=less&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./drawFloor.vue?vue&type=style&index=0&id=e3186cda&scoped=true&lang=less&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dynamicDialog.vue?vue&type=style&index=0&id=24050cd1&scoped=true&lang=less&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./canvasFun.vue?vue&type=style&index=0&id=0a368011&lang=less&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./formItem.vue?vue&type=style&index=0&id=3e34d378&lang=less&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./buildfloorCascader.vue?vue&type=style&index=0&id=a8f493b8&lang=less&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cascader.vue?vue&type=style&index=0&id=f572d33e&lang=less&scoped=true&\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exhibitionVideo.vue?vue&type=style&index=0&id=7572c589&lang=less&scoped=true&\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exhibitionBaseInformation.vue?vue&type=style&index=0&id=5083842e&scoped=true&lang=less&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./batchPoint.vue?vue&type=style&index=0&id=d744e7a6&lang=less&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./editSysFloor.vue?vue&type=style&index=0&id=30aef957&lang=less&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=6b91c335&lang=less&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./floorCascader.vue?vue&type=style&index=0&lang=less&\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RelationMaintain.vue?vue&type=style&index=0&id=0ae53a0d&scoped=true&lang=less&\"","/*\r\n * @Author: your name\r\n * @Date: 2022-01-12 15:29:56\r\n * @LastEditTime: 2022-01-14 11:34:27\r\n * @LastEditors: Please set LastEditors\r\n * @Description: CAD图纸核查管理\r\n * @FilePath: \\adm-frontend\\src\\controller\\cadDarwingController.ts\r\n */\r\nimport { baseHttpUtils } from \"@/utils/http/baseHttpUtils\";\r\nimport { customHttpUtils } from '@/utils/http/customHttpUtils'\r\nimport { logicConfig } from \"@/logicConfig\";\r\nexport default class cadDarwingController {\r\n static baseUril = (window as any).__systemConf.baseServiceUrl;\r\n static http = new baseHttpUtils();\r\n static customHttp = new customHttpUtils()\r\n\r\n /**\r\n * @description: 查询文件列表接口\r\n * @param {*}\r\n * @return {*}\r\n */ \r\n static async queryFileList (params={}) {\r\n const headers = {\r\n 'Content-Type': 'application/json',\r\n 'token': '16:31eyJhbGciOiJIUzI1NiJ9.eyJkZXZpY2VUeXBlIjoxLCJhdWQiOiJ5dXNodS1zYWFzLWNsaWVudCIsInN1YiI6Inl1c2h1LXVzZXIiLCJhY2NvdW50SWQiOiIxNDc4MjcyMTQwNjU4MjAwNTc4IiwiYWNjb3VudE5hbWUiOiLmnY7mnbAiLCJpc3MiOiJ5dXNodSIsImp0aSI6ImEyYzgwYWQxLTRkZTgtNDVjMy04ODMyLTE5MzUxNWU3OWFmMCJ9.HYLA4Tc2c4TEDRXdi9dJ39zWuVmBoGoj5VrGRJk_9Ec'\r\n }\r\n try {\r\n const res = await this.customHttp.customRequest(`${this.baseUril}/adm-server/adm/adm-file/queryCadFiles?projectId=Pj5001120003&groupCode=XG&userId=adm`, headers, params, 'post');\r\n if(res?.result != logicConfig.resultObj.success) {\r\n console.log('error');\r\n return []\r\n }\r\n return res.data\r\n } catch (error) {\r\n \r\n } \r\n }\r\n /**\r\n * @description: 删除文件接口\r\n * @param {*}\r\n * @return {*}\r\n */ \r\n static async delFile(params) {\r\n const headers = {\r\n 'Content-Type': 'application/x-www-form-urlencoded',\r\n 'token': '16:31eyJhbGciOiJIUzI1NiJ9.eyJkZXZpY2VUeXBlIjoxLCJhdWQiOiJ5dXNodS1zYWFzLWNsaWVudCIsInN1YiI6Inl1c2h1LXVzZXIiLCJhY2NvdW50SWQiOiIxNDc4MjcyMTQwNjU4MjAwNTc4IiwiYWNjb3VudE5hbWUiOiLmnY7mnbAiLCJpc3MiOiJ5dXNodSIsImp0aSI6ImEyYzgwYWQxLTRkZTgtNDVjMy04ODMyLTE5MzUxNWU3OWFmMCJ9.HYLA4Tc2c4TEDRXdi9dJ39zWuVmBoGoj5VrGRJk_9Ec'\r\n }\r\n try {\r\n const res = await this.customHttp.customRequest(`${this.baseUril}/adm-server/adm/adm-file/delete?projectId=Pj5001120003&groupCode=XG&userId=adm&id=${params.id}`, headers, {}, 'post');\r\n if(res?.result != logicConfig.resultObj.success) {\r\n console.log('error');\r\n return []\r\n }\r\n return res.data\r\n } catch (error) {\r\n \r\n }\r\n }\r\n}","const PREFIX = '_sagacloud_admin_store_'\r\nconst loaclStorage = window.localStorage\r\n\r\nexport default {\r\n set(key, value, fn) {\r\n let _value = null\r\n try {\r\n _value = JSON.stringify(value)\r\n } catch (e) {\r\n _value = value\r\n }\r\n loaclStorage.setItem(PREFIX + key, _value)\r\n fn && fn()\r\n },\r\n get(key, fn) {\r\n if (!key) {\r\n return null\r\n }\r\n if (typeof key === 'object') {\r\n throw new Error('key不能是一个对象。')\r\n }\r\n var _value = loaclStorage.getItem(PREFIX + key)\r\n if (_value !== null) {\r\n try {\r\n return JSON.parse(_value)\r\n } catch (e) {}\r\n }\r\n return _value\r\n },\r\n remove(key) {\r\n loaclStorage.removeItem(PREFIX + key)\r\n }\r\n}\r\n","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./system.vue?vue&type=style&index=0&id=5b9a72ce&lang=less&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./uploadImgsName.vue?vue&type=style&index=0&lang=less&\"","// import {\r\n// getAllProject\r\n// } from \"@/api/scan/request\";\r\nimport ScanController from \"@/controller/old-adm/ScanController\";\r\nimport { userController } from \"@/controller/userController\";\r\n// import {\r\n// getUserInfo,getUserInfoByUserId\r\n// } from \"@/api/system/persagy-sso-server\";\r\nimport tools from \"@/utils/old-adm/scan/tools\";\r\n// import storage from '@/framework/utils/storage'\r\nimport storage from \"@/utils/storageUtil\";\r\nimport lStorage from \"@/utils/old-adm/localStorage\";\r\nimport store from \"@/store\";\r\n\r\nconst KEY_MENU_SELECTED = \"menu_selected\";\r\nconst KEY_PROJECT_SELECTED = \"global_project_selected\";\r\nconst KEY_PAGE_BRANDCRUMB = \"page_brandcrumb\";\r\n\r\nexport default {\r\n namespaced: true,\r\n state: {\r\n sidebarClosed: false,\r\n sidebarSelected: \"\", // sidebar选中的选项\r\n // userInfo: null, //{ username: 'admin' },\r\n userInfo: {\r\n userName: \"yanruolan\",\r\n userId: \"06328a53c69a41bb8f5bb1a552c6e8d6\",\r\n },\r\n permissions: {\r\n \"system:role:delete\": true,\r\n \"system:role:create\": true,\r\n \"system:role:query\": true,\r\n \"system:role:setOpts\": true,\r\n },\r\n menus: [], //系统菜单列表\r\n projectId: \"\",\r\n projectName: \"\",\r\n group_code: \"\",\r\n // projects: project[\"14\"],\r\n projects: [],\r\n breadcrumb: [],\r\n uploaderList: [], //当前上传文件列表\r\n secret: \"\", //项目密码\r\n userId: \"\", //用户id\r\n // userId: \"06328a53c69a41bb8f5bb1a552c6e8d6\", //用户id\r\n rowEdit: false, //表格数据变化\r\n errorReport: [], //扫楼错误报告\r\n },\r\n getters: {\r\n sidebarClosed: (state) => state.sidebarClosed,\r\n secret: (state) => state.secret,\r\n userId: (state) => state.userId,\r\n sidebarSelected: (state) => {\r\n // if (!state.pageSidebarSelected) {\r\n // let menu = storage.get(KEY_MENU_SELECTED)\r\n // if (menu) {\r\n // state.pageSidebarSelected = menu\r\n // }\r\n // }\r\n // return state.pageSidebarSelected\r\n return state.sidebarSelected;\r\n },\r\n userInfo: (state) => state.userInfo,\r\n permissions: (state) => state.permissions,\r\n menus: (state) => state.menus,\r\n projects: (state) => state.projects,\r\n uploaderList: (state) => state.uploaderList,\r\n projectId: (state) => {\r\n if (!state.projectId) {\r\n let pid = storage.get(KEY_PROJECT_SELECTED);\r\n if (pid) {\r\n state.projectId = pid;\r\n } else if (state.projects && state.projects.length) {\r\n state.projectId = state.projects[0].id;\r\n }\r\n }\r\n return state.projectId;\r\n },\r\n projectName: (state) => state.projectName,\r\n group_code: (state) => state.group_code,\r\n breadcrumb: (state) => {\r\n if (!state.breadcrumb) {\r\n let arr = storage.get(KEY_PAGE_BRANDCRUMB);\r\n if (arr) {\r\n state.breadcrumb = arr;\r\n }\r\n }\r\n return state.breadcrumb;\r\n },\r\n },\r\n mutations: {\r\n setRowEdit: (state, val) => (state.rowEdit = val),\r\n setErrorReport: (state, val) => (state.errorReport = val),\r\n setSidebarClosed: (state, val) => (state.sidebarClosed = val),\r\n setUserInfo: (state, val) => (state.userInfo = val),\r\n setGroupCode: (state, val) => (state.group_code = val),\r\n setUserId: (state, val) => (state.userId = val),\r\n setSidebarSelected: (state, val) => {\r\n state.sidebarSelected = val;\r\n storage.set(KEY_MENU_SELECTED, val);\r\n lStorage.set(\"screen_data\", {\r\n path: val,\r\n data: {},\r\n });\r\n },\r\n setProjects: (state, val) => (state.projects = val),\r\n setprojectId: (state, val) => {\r\n lStorage.remove(\"cacheInfo\"); //待删除(删除用户浏览器无用缓存)\r\n let cacheInfo = lStorage.get(\"historyInfo\")\r\n ? lStorage.get(\"historyInfo\")\r\n : {};\r\n state.projectId = val;\r\n lStorage.set(\"projectId\", val);\r\n if (cacheInfo[state.userInfo.userName]) {\r\n // cacheInfo[state.userInfo.userName].projectId = val\r\n cacheInfo[state.userInfo.userName] = [\r\n ...new Set([val, ...cacheInfo[state.userInfo.userName]]),\r\n ].slice(0, 3);\r\n lStorage.set(\"historyInfo\", cacheInfo);\r\n } else {\r\n cacheInfo[state.userInfo.userName] = [val];\r\n lStorage.set(\"historyInfo\", cacheInfo);\r\n }\r\n storage.set(KEY_PROJECT_SELECTED, val);\r\n state.projects.map((item) => {\r\n if (item.id == val) {\r\n state.secret = item.pwd;\r\n state.projectName = item.name;\r\n state.group_code = item.group_code;\r\n lStorage.set(\"group_code\", item.group_code);\r\n lStorage.set(\"secret\", item.pwd);\r\n }\r\n });\r\n },\r\n setMenus: (state, val) => (state.menus = val),\r\n setUploaderList: (state, val) => {\r\n state.uploaderList = val ? val : [];\r\n },\r\n },\r\n actions: {\r\n setRowEdit(contentx, value) {\r\n contentx.commit(\"setRowEdit\", value);\r\n },\r\n setErrorReport(contentx, value) {\r\n contentx.commit(\"setErrorReport\", value);\r\n },\r\n /**\r\n * @info 获取全部项目\r\n */\r\n getAllProject({ state }) {\r\n return new Promise((resolve, reject) => {\r\n ScanController.getAllProject(\r\n {\r\n pageNumber: 1,\r\n pageSize: 1000,\r\n },\r\n (res) => {\r\n if (res.result === \"success\" && res.content && res.content.length) {\r\n state.projects = [];\r\n // if (res.content[0] && res.content[0].id) {\r\n // state.projectId = res.content[0].id\r\n // state.projectName = res.content[0].localName || res.content[0].name || \"\"\r\n // state.secret = res.content[0].secret || \"\"\r\n // }\r\n res.content.forEach((proj) =>\r\n state.projects.push({\r\n id: proj.id,\r\n name: proj.localName || proj.name || \"\",\r\n pwd: proj.secret || \"\",\r\n group_code: proj.groupCode || \"\",\r\n })\r\n );\r\n resolve(res);\r\n } else {\r\n reject();\r\n }\r\n }\r\n );\r\n });\r\n },\r\n /**\r\n * 根据登录返回code获取用户信息和项目信息\r\n */\r\n loadUserInfo({ state }) {\r\n return new Promise(async (resolve, reject) => {\r\n /**\r\n * 改为调用运维平台的根据用户ID获取用户信息的接口\r\n * nh 2021.10.25\r\n */\r\n let userId = store.state.ssoToken\r\n ? store.state.ssoToken\r\n : lStorage.get(\"ssoToken\");\r\n\r\n let pd = lStorage.get(\"ssoPd\");\r\n const user = new userController();\r\n var infoData = await user.getUserInfoById();\r\n if (infoData.result === \"success\") {\r\n const data: any = (infoData.content || [])[0] || {};\r\n state.userInfo = {\r\n userName: data.userName,\r\n userId: data.userId,\r\n };\r\n state.userId = data.userId;\r\n state.projects = []; //初始化项目列表\r\n storage.set(\"user_name\", data.userName);\r\n storage.set(\"user_id\", data.userId);\r\n // 获取系统菜单成功\r\n if (data.authorizations && data.authorizations.length) {\r\n var menuArr = tools.formatMenu(data.authorizations);\r\n state.menus = menuArr;\r\n } else {\r\n state.menus = [];\r\n }\r\n\r\n // 获取项目信息成功\r\n if (data.projects && data.projects.length) {\r\n // 设置项目列表\r\n data.projects.forEach((proj) =>\r\n state.projects.push({\r\n id: proj.projectId,\r\n name: proj.projectLocalName,\r\n pwd: proj.secret ? proj.secret : \"\",\r\n group_code: proj.groupCode,\r\n })\r\n );\r\n }\r\n resolve(infoData);\r\n } else {\r\n state.userInfo = {\r\n userName: \"yanruolan\",\r\n userId: \"06328a53c69a41bb8f5bb1a552c6e8d6\",\r\n };\r\n resolve(infoData);\r\n }\r\n return;\r\n });\r\n },\r\n setBreadcrumb: {\r\n root: true,\r\n handler({ state, commit }, val) {\r\n let label = val[0].label;\r\n if (label === \"消息中心\") {\r\n commit(\"setSidebarSelected\", \"message\"); // 当进入消息中心页面的时候不选中导航栏\r\n }\r\n state.breadcrumb = [];\r\n state.breadcrumb = val;\r\n storage.set(KEY_PAGE_BRANDCRUMB, val);\r\n },\r\n },\r\n },\r\n};\r\n","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./lookVideo.vue?vue&type=style&index=0&lang=less&\"","export default class storage {\r\n static PREFIX = \"_sagacloud_admin_store_\";\r\n static set(key, value, fn?) {\r\n let _value = null;\r\n try {\r\n _value = JSON.stringify(value);\r\n } catch (e) {\r\n _value = value;\r\n }\r\n sessionStorage.setItem(storage.PREFIX + key, _value);\r\n fn && fn();\r\n }\r\n static get(key, fn?) {\r\n if (!key) {\r\n return null;\r\n }\r\n if (typeof key === \"object\") {\r\n throw new Error(\"key不能是一个对象。\");\r\n }\r\n var _value = sessionStorage.getItem(storage.PREFIX + key);\r\n if (_value !== null) {\r\n try {\r\n return JSON.parse(_value);\r\n } catch (e) {}\r\n }\r\n return _value;\r\n }\r\n static remove(key) {\r\n sessionStorage.removeItem(storage.PREFIX + key);\r\n }\r\n}\r\n","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectRadio.vue?vue&type=style&index=0&id=996549b0&scoped=true&lang=less&\"","module.exports = __webpack_public_path__ + \"public/img/login_bg.2d60ec49.png\";","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exhibitionFile.vue?vue&type=style&index=0&id=4f73814c&scoped=true&lang=less&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardList.vue?vue&type=style&index=0&id=4373ce57&lang=less&scoped=true&\"","/**\r\n * 系统图状态枚举\r\n */\r\nexport enum graphStateEnum {\r\n //未发布\r\n Draft = \"Draft\",\r\n //待审核\r\n WaitCheck = \"WaitCheck\",\r\n //审核完成\r\n Checked = \"Checked\",\r\n //回收站\r\n Recyle = \"Recyle\",\r\n //发布\r\n Publish = \"Publish\",\r\n}","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./checkGraphy.vue?vue&type=style&index=0&lang=less&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=3542fea2&lang=less&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./linkassets.vue?vue&type=style&index=0&id=44a7f606&lang=less&scoped=true&\"","module.exports = __webpack_public_path__ + \"public/img/logo.87be7c6e.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=1706b9a0&scoped=true&lang=less&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./floorCascader.vue?vue&type=style&index=1&id=3639d445&lang=less&scoped=true&\"","import { baseHttpUtils } from \"@/utils/http/baseHttpUtils\";\r\nimport { object_pre } from \"./preTypes\";\r\nexport interface QueryReq {\r\n orders: string;\r\n pageNumber: number;\r\n pageSize: number;\r\n}\r\nclass FloorController {\r\n static http = new baseHttpUtils();\r\n /**\r\n * 获取建筑楼层\r\n * @param {QueryReq} params\r\n * @returns\r\n */\r\n static async floorQuery(params: QueryReq) {\r\n return this.http.postRequest(object_pre + \"/floor/query\", params);\r\n }\r\n /**\r\n * 建筑楼层管理-创建楼层\r\n * @param params\r\n * @returns\r\n */\r\n static async manageCreateFloor(params) {\r\n return this.http.postRequest(object_pre + \"/floor/create\", params);\r\n }\r\n /**\r\n * 建筑楼层管理-修改楼层\r\n * @param params\r\n * @returns\r\n */\r\n static async manageUpdateFloor(params) {\r\n return this.http.postRequest(object_pre + \"/floor/update\", params);\r\n }\r\n}\r\nexport default FloorController;\r\n","var map = {\n\t\"./af\": \"1489\",\n\t\"./af.js\": \"1489\",\n\t\"./ar\": \"df53\",\n\t\"./ar-dz\": \"7b8b\",\n\t\"./ar-dz.js\": \"7b8b\",\n\t\"./ar-kw\": \"1d03\",\n\t\"./ar-kw.js\": \"1d03\",\n\t\"./ar-ly\": \"81dc\",\n\t\"./ar-ly.js\": \"81dc\",\n\t\"./ar-ma\": \"879b\",\n\t\"./ar-ma.js\": \"879b\",\n\t\"./ar-sa\": \"2751\",\n\t\"./ar-sa.js\": \"2751\",\n\t\"./ar-tn\": \"da41\",\n\t\"./ar-tn.js\": \"da41\",\n\t\"./ar.js\": \"df53\",\n\t\"./az\": \"f97e\",\n\t\"./az.js\": \"f97e\",\n\t\"./be\": \"c0c3\",\n\t\"./be.js\": \"c0c3\",\n\t\"./bg\": \"2c23\",\n\t\"./bg.js\": \"2c23\",\n\t\"./bm\": \"46dd\",\n\t\"./bm.js\": \"46dd\",\n\t\"./bn\": \"2bf9\",\n\t\"./bn.js\": \"2bf9\",\n\t\"./bo\": \"d5dc\",\n\t\"./bo.js\": \"d5dc\",\n\t\"./br\": \"2a3f\",\n\t\"./br.js\": \"2a3f\",\n\t\"./bs\": \"b87a\",\n\t\"./bs.js\": \"b87a\",\n\t\"./ca\": \"11da\",\n\t\"./ca.js\": \"11da\",\n\t\"./cs\": \"fa67\",\n\t\"./cs.js\": \"fa67\",\n\t\"./cv\": \"d359\",\n\t\"./cv.js\": \"d359\",\n\t\"./cy\": \"4c31\",\n\t\"./cy.js\": \"4c31\",\n\t\"./da\": \"0cbd\",\n\t\"./da.js\": \"0cbd\",\n\t\"./de\": \"5ff2\",\n\t\"./de-at\": \"be81\",\n\t\"./de-at.js\": \"be81\",\n\t\"./de-ch\": \"d495\",\n\t\"./de-ch.js\": \"d495\",\n\t\"./de.js\": \"5ff2\",\n\t\"./dv\": \"2da6\",\n\t\"./dv.js\": \"2da6\",\n\t\"./el\": \"e88e\",\n\t\"./el.js\": \"e88e\",\n\t\"./en-au\": \"dc3e\",\n\t\"./en-au.js\": \"dc3e\",\n\t\"./en-ca\": \"3899\",\n\t\"./en-ca.js\": \"3899\",\n\t\"./en-gb\": \"58b7\",\n\t\"./en-gb.js\": \"58b7\",\n\t\"./en-ie\": \"7ba5\",\n\t\"./en-ie.js\": \"7ba5\",\n\t\"./en-nz\": \"dedd\",\n\t\"./en-nz.js\": \"dedd\",\n\t\"./eo\": \"cb1e\",\n\t\"./eo.js\": \"cb1e\",\n\t\"./es\": \"0f06\",\n\t\"./es-do\": \"79e9\",\n\t\"./es-do.js\": \"79e9\",\n\t\"./es-us\": \"7eff\",\n\t\"./es-us.js\": \"7eff\",\n\t\"./es.js\": \"0f06\",\n\t\"./et\": \"65aa\",\n\t\"./et.js\": \"65aa\",\n\t\"./eu\": \"bae5\",\n\t\"./eu.js\": \"bae5\",\n\t\"./fa\": \"f7ae\",\n\t\"./fa.js\": \"f7ae\",\n\t\"./fi\": \"0fee\",\n\t\"./fi.js\": \"0fee\",\n\t\"./fo\": \"179b\",\n\t\"./fo.js\": \"179b\",\n\t\"./fr\": \"8247\",\n\t\"./fr-ca\": \"c9ad\",\n\t\"./fr-ca.js\": \"c9ad\",\n\t\"./fr-ch\": \"f70d\",\n\t\"./fr-ch.js\": \"f70d\",\n\t\"./fr.js\": \"8247\",\n\t\"./fy\": \"68c4\",\n\t\"./fy.js\": \"68c4\",\n\t\"./gd\": \"71e2\",\n\t\"./gd.js\": \"71e2\",\n\t\"./gl\": \"07f9\",\n\t\"./gl.js\": \"07f9\",\n\t\"./gom-latn\": \"d088\",\n\t\"./gom-latn.js\": \"d088\",\n\t\"./gu\": \"9ab1\",\n\t\"./gu.js\": \"9ab1\",\n\t\"./he\": \"1d28\",\n\t\"./he.js\": \"1d28\",\n\t\"./hi\": \"3d55\",\n\t\"./hi.js\": \"3d55\",\n\t\"./hr\": \"333f\",\n\t\"./hr.js\": \"333f\",\n\t\"./hu\": \"7bb4\",\n\t\"./hu.js\": \"7bb4\",\n\t\"./hy-am\": \"046f\",\n\t\"./hy-am.js\": \"046f\",\n\t\"./id\": \"a0cf\",\n\t\"./id.js\": \"a0cf\",\n\t\"./is\": \"ed2c\",\n\t\"./is.js\": \"ed2c\",\n\t\"./it\": \"3c3f\",\n\t\"./it.js\": \"3c3f\",\n\t\"./ja\": \"a598\",\n\t\"./ja.js\": \"a598\",\n\t\"./jv\": \"b646\",\n\t\"./jv.js\": \"b646\",\n\t\"./ka\": \"3ea3\",\n\t\"./ka.js\": \"3ea3\",\n\t\"./kk\": \"05ef\",\n\t\"./kk.js\": \"05ef\",\n\t\"./km\": \"11a4\",\n\t\"./km.js\": \"11a4\",\n\t\"./kn\": \"8c88\",\n\t\"./kn.js\": \"8c88\",\n\t\"./ko\": \"534b\",\n\t\"./ko.js\": \"534b\",\n\t\"./ky\": \"d2e7\",\n\t\"./ky.js\": \"d2e7\",\n\t\"./lb\": \"f3f5\",\n\t\"./lb.js\": \"f3f5\",\n\t\"./lo\": \"1cba\",\n\t\"./lo.js\": \"1cba\",\n\t\"./lt\": \"5a4b\",\n\t\"./lt.js\": \"5a4b\",\n\t\"./lv\": \"c92f\",\n\t\"./lv.js\": \"c92f\",\n\t\"./me\": \"1231\",\n\t\"./me.js\": \"1231\",\n\t\"./mi\": \"070b\",\n\t\"./mi.js\": \"070b\",\n\t\"./mk\": \"df07\",\n\t\"./mk.js\": \"df07\",\n\t\"./ml\": \"9afb\",\n\t\"./ml.js\": \"9afb\",\n\t\"./mr\": \"6109\",\n\t\"./mr.js\": \"6109\",\n\t\"./ms\": \"6fb2\",\n\t\"./ms-my\": \"f351\",\n\t\"./ms-my.js\": \"f351\",\n\t\"./ms.js\": \"6fb2\",\n\t\"./mt\": \"34ba\",\n\t\"./mt.js\": \"34ba\",\n\t\"./my\": \"2d36\",\n\t\"./my.js\": \"2d36\",\n\t\"./nb\": \"6851\",\n\t\"./nb.js\": \"6851\",\n\t\"./ne\": \"5e29\",\n\t\"./ne.js\": \"5e29\",\n\t\"./nl\": \"8ece\",\n\t\"./nl-be\": \"8ddb\",\n\t\"./nl-be.js\": \"8ddb\",\n\t\"./nl.js\": \"8ece\",\n\t\"./nn\": \"1f58\",\n\t\"./nn.js\": \"1f58\",\n\t\"./pa-in\": \"260c\",\n\t\"./pa-in.js\": \"260c\",\n\t\"./pl\": \"7d6e\",\n\t\"./pl.js\": \"7d6e\",\n\t\"./pt\": \"7313\",\n\t\"./pt-br\": \"415e\",\n\t\"./pt-br.js\": \"415e\",\n\t\"./pt.js\": \"7313\",\n\t\"./ro\": \"59ff\",\n\t\"./ro.js\": \"59ff\",\n\t\"./ru\": \"cc4e\",\n\t\"./ru.js\": \"cc4e\",\n\t\"./sd\": \"eb53\",\n\t\"./sd.js\": \"eb53\",\n\t\"./se\": \"8f6a\",\n\t\"./se.js\": \"8f6a\",\n\t\"./si\": \"f092\",\n\t\"./si.js\": \"f092\",\n\t\"./sk\": \"d4a8\",\n\t\"./sk.js\": \"d4a8\",\n\t\"./sl\": \"f7e7\",\n\t\"./sl.js\": \"f7e7\",\n\t\"./sq\": \"2d61\",\n\t\"./sq.js\": \"2d61\",\n\t\"./sr\": \"dd7d\",\n\t\"./sr-cyrl\": \"877a\",\n\t\"./sr-cyrl.js\": \"877a\",\n\t\"./sr.js\": \"dd7d\",\n\t\"./ss\": \"8855\",\n\t\"./ss.js\": \"8855\",\n\t\"./sv\": \"3443\",\n\t\"./sv.js\": \"3443\",\n\t\"./sw\": \"1b4b\",\n\t\"./sw.js\": \"1b4b\",\n\t\"./ta\": \"ffbc\",\n\t\"./ta.js\": \"ffbc\",\n\t\"./te\": \"b65d\",\n\t\"./te.js\": \"b65d\",\n\t\"./tet\": \"1f06\",\n\t\"./tet.js\": \"1f06\",\n\t\"./th\": \"068d\",\n\t\"./th.js\": \"068d\",\n\t\"./tl-ph\": \"b3e1\",\n\t\"./tl-ph.js\": \"b3e1\",\n\t\"./tlh\": \"de33\",\n\t\"./tlh.js\": \"de33\",\n\t\"./tr\": \"57d9\",\n\t\"./tr.js\": \"57d9\",\n\t\"./tzl\": \"8b99\",\n\t\"./tzl.js\": \"8b99\",\n\t\"./tzm\": \"17ec\",\n\t\"./tzm-latn\": \"326f\",\n\t\"./tzm-latn.js\": \"326f\",\n\t\"./tzm.js\": \"17ec\",\n\t\"./uk\": \"e50f\",\n\t\"./uk.js\": \"e50f\",\n\t\"./ur\": \"6e72\",\n\t\"./ur.js\": \"6e72\",\n\t\"./uz\": \"3c8b\",\n\t\"./uz-latn\": \"f2a1\",\n\t\"./uz-latn.js\": \"f2a1\",\n\t\"./uz.js\": \"3c8b\",\n\t\"./vi\": \"608a\",\n\t\"./vi.js\": \"608a\",\n\t\"./x-pseudo\": \"183e\",\n\t\"./x-pseudo.js\": \"183e\",\n\t\"./yo\": \"7c99\",\n\t\"./yo.js\": \"7c99\",\n\t\"./zh-cn\": \"1a07\",\n\t\"./zh-cn.js\": \"1a07\",\n\t\"./zh-hk\": \"fd71\",\n\t\"./zh-hk.js\": \"fd71\",\n\t\"./zh-tw\": \"b001\",\n\t\"./zh-tw.js\": \"b001\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"a3b4\";","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./formItems.vue?vue&type=style&index=0&id=5eefb1ba&lang=less&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./batchDialog.vue?vue&type=style&index=0&id=16068254&scoped=true&lang=less&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./noAllDataFloor.vue?vue&type=style&index=1&id=21265392&lang=less&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./equipCascader.vue?vue&type=style&index=1&id=5dbb2cdd&lang=less&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=d3e43494&scoped=true&lang=less&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./device.vue?vue&type=style&index=0&id=6425fa62&lang=less&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=8de6b618&lang=less&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./noAllDataFloor.vue?vue&type=style&index=0&lang=less&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./graph.vue?vue&type=style&index=0&id=0f1073bd&scoped=true&lang=css&\"","/**\r\n * 和用户相关的调用接口的入口类\r\n */\r\n\r\nimport { customHttpUtils } from \"@/utils/http/customHttpUtils\";\r\nimport { sessionStore } from \"@/store/sessionStore\";\r\n\r\nexport class userController {\r\n /**\r\n * 登录\r\n * @param userName \r\n * @param userPass \r\n * @returns \r\n */\r\n async login(userName: string, userPass: string) {\r\n var _dataStr = JSON.stringify({\r\n loginName: userName,\r\n password: userPass,\r\n loginDevice: \"PC\",\r\n longitude: 1,\r\n latitude: 1,\r\n });\r\n\r\n let requestUrl = (window as any).__systemConf.baseServiceUrl + \"/login-service\";\r\n let requestHeaders = {\r\n \"Content-Type\": \"application/x-www-form-urlencoded\",\r\n };\r\n let requestData = \"jsonString=\" + _dataStr;\r\n let requestMethod = \"post\";\r\n\r\n let customHttpUtilsInstance = new customHttpUtils();\r\n\r\n let loginResult = await customHttpUtilsInstance.customRequest(\r\n requestUrl,\r\n requestHeaders,\r\n requestData,\r\n requestMethod\r\n );\r\n return loginResult;\r\n };\r\n\r\n async getUserInfoById(){\r\n let userId = sessionStore.userId;\r\n return {\r\n result:'success',\r\n content:[{\r\n userId: userId,\r\n userName: 'adm',\r\n projects:[\r\n {\r\n \"projectLocalName\": \"银泰中心\",\r\n \"projName\": \"银泰中心\",\r\n \"latitude\": \"36.5\",\r\n \"productLine\": \"\",\r\n \"projectCode\": \"\",\r\n \"detailAddress\": \"001号\",\r\n \"projectLocalID\": \"1101050031\",\r\n \"functionType\": \"230\",\r\n \"partitionAbbr\": \"银泰中心\",\r\n \"projectName\": \"银泰中心\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"liveStatus\": \"1\",\r\n \"longitude\": \"102.12\",\r\n \"totalArea\": null,\r\n \"groupCode\": \"BR\"\r\n },\r\n {\r\n \"projectLocalName\": \"博锐尚格\",\r\n \"projName\": \"博锐尚格\",\r\n \"latitude\": \"36.5\",\r\n \"productLine\": \"1\",\r\n \"projectCode\": \"\",\r\n \"detailAddress\": \"北京市海淀区建材城中路27号金隅智造工场N2-3层\",\r\n \"projectLocalID\": \"1101080259\",\r\n \"functionType\": \"230\",\r\n \"partitionAbbr\": \"博锐尚格\",\r\n \"projectName\": \"博锐尚格\",\r\n \"projectId\": \"Pj1101080259\",\r\n \"liveStatus\": \"1\",\r\n \"longitude\": \"102.12\",\r\n \"totalArea\": null,\r\n \"groupCode\": \"BR\"\r\n },\r\n {\r\n \"projectLocalName\": \"禹数科技公司\",\r\n \"projName\": \"禹数科技公司\",\r\n \"latitude\": \"36.5\",\r\n \"productLine\": \"\",\r\n \"projectCode\": null,\r\n \"detailAddress\": \"金隅智造工厂N2楼3层\",\r\n \"projectLocalID\": \"1101101230\",\r\n \"functionType\": \"230\",\r\n \"partitionAbbr\": \"禹数科技公司\",\r\n \"projectName\": \"禹数科技公司\",\r\n \"projectId\": \"Pj1101101230\",\r\n \"liveStatus\": \"1\",\r\n \"longitude\": \"102.12\",\r\n \"totalArea\": null,\r\n \"groupCode\": \"BR\"\r\n },\r\n {\r\n \"projectLocalName\": \"北京万科半岛广场\",\r\n \"projName\": \"北京万科半岛广场\",\r\n \"latitude\": \"36.5\",\r\n \"productLine\": \"1\",\r\n \"projectCode\": \"\",\r\n \"detailAddress\": \"广阳新路9号院1号楼1-4层(商业部分)\",\r\n \"projectLocalID\": \"1101110003\",\r\n \"functionType\": \"230\",\r\n \"partitionAbbr\": \"北京万科半岛广场\",\r\n \"projectName\": \"北京万科半岛广场\",\r\n \"projectId\": \"Pj1101110003\",\r\n \"liveStatus\": \"1\",\r\n \"longitude\": \"102.12\",\r\n \"totalArea\": null,\r\n \"groupCode\": \"BR\"\r\n },\r\n {\r\n \"projectLocalName\": \"测试项目1\",\r\n \"projName\": null,\r\n \"latitude\": \"36.5\",\r\n \"productLine\": \"\",\r\n \"projectCode\": \"\",\r\n \"detailAddress\": \"\",\r\n \"projectLocalID\": \"1208001\",\r\n \"functionType\": \"200\",\r\n \"partitionAbbr\": null,\r\n \"projectName\": \"测试项目1\",\r\n \"projectId\": \"Pj1208001\",\r\n \"liveStatus\": \"1\",\r\n \"longitude\": \"102.12\",\r\n \"totalArea\": null,\r\n \"groupCode\": \"BR\"\r\n },\r\n {\r\n \"projectLocalName\": \"测试项目2\",\r\n \"projName\": null,\r\n \"latitude\": \"36.5\",\r\n \"productLine\": \"\",\r\n \"projectCode\": null,\r\n \"detailAddress\": \"\",\r\n \"projectLocalID\": \"1208002\",\r\n \"functionType\": \"200\",\r\n \"partitionAbbr\": null,\r\n \"projectName\": \"测试项目2\",\r\n \"projectId\": \"Pj1208002\",\r\n \"liveStatus\": \"0\",\r\n \"longitude\": \"102.12\",\r\n \"totalArea\": null,\r\n \"groupCode\": \"BR\"\r\n },\r\n {\r\n \"projectLocalName\": \"上海国际航空服务中心\",\r\n \"projName\": \"上海国际航空服务中心\",\r\n \"latitude\": \"36.5\",\r\n \"productLine\": null,\r\n \"projectCode\": null,\r\n \"detailAddress\": null,\r\n \"projectLocalID\": \"3101040002\",\r\n \"functionType\": \"230\",\r\n \"partitionAbbr\": \"上海国际航空服务中心\",\r\n \"projectName\": \"上海国际航空服务中心\",\r\n \"projectId\": \"Pj3101040002\",\r\n \"liveStatus\": \"1\",\r\n \"longitude\": \"102.12\",\r\n \"totalArea\": null,\r\n \"groupCode\": \"BR\"\r\n },\r\n {\r\n \"projectLocalName\": \"济南印象城\",\r\n \"projName\": \"济南印象城\",\r\n \"latitude\": \"36.5\",\r\n \"productLine\": \"1\",\r\n \"projectCode\": null,\r\n \"detailAddress\": \" 花园路136号7号楼(印象城)\",\r\n \"projectLocalID\": \"3701020004\",\r\n \"functionType\": \"230\",\r\n \"partitionAbbr\": \"济南印象城\",\r\n \"projectName\": \"济南印象城\",\r\n \"projectId\": \"Pj3701020004\",\r\n \"liveStatus\": \"1\",\r\n \"longitude\": \"102.12\",\r\n \"totalArea\": null,\r\n \"groupCode\": \"BR\"\r\n },\r\n {\r\n \"projectLocalName\": \"香港置地约克北郡\",\r\n \"projName\": \"香港置地约克北郡\",\r\n \"latitude\": \"36.5\",\r\n \"productLine\": \"1\",\r\n \"projectCode\": \"\",\r\n \"detailAddress\": \"重庆市渝北区0003项目\",\r\n \"projectLocalID\": \"5001120003\",\r\n \"functionType\": \"230\",\r\n \"partitionAbbr\": \"香港置地约克北郡\",\r\n \"projectName\": \"香港置地约克北郡\",\r\n \"projectId\": \"Pj5001120003\",\r\n \"liveStatus\": \"1\",\r\n \"longitude\": \"102.12\",\r\n \"totalArea\": null,\r\n \"groupCode\": \"BR\"\r\n },\r\n {\r\n \"projectLocalName\": \"不知道做什么的2\",\r\n \"projName\": null,\r\n \"latitude\": \"36.5\",\r\n \"productLine\": \"\",\r\n \"projectCode\": \"\",\r\n \"detailAddress\": \"\",\r\n \"projectLocalID\": \"5555567890\",\r\n \"functionType\": \"230\",\r\n \"partitionAbbr\": null,\r\n \"projectName\": \"不知道做什么的2\",\r\n \"projectId\": \"Pj5555567890\",\r\n \"liveStatus\": \"1\",\r\n \"longitude\": \"102.12\",\r\n \"totalArea\": null,\r\n \"groupCode\": \"BR\"\r\n },\r\n {\r\n \"projectLocalName\": \"不知道做什么的3\",\r\n \"projName\": null,\r\n \"latitude\": \"36.5\",\r\n \"productLine\": \"\",\r\n \"projectCode\": null,\r\n \"detailAddress\": \"\",\r\n \"projectLocalID\": \"6666667777\",\r\n \"functionType\": \"230\",\r\n \"partitionAbbr\": null,\r\n \"projectName\": \"不知道做什么的3\",\r\n \"projectId\": \"Pj6666667777\",\r\n \"liveStatus\": \"1\",\r\n \"longitude\": \"102.12\",\r\n \"totalArea\": null,\r\n \"groupCode\": \"BR\"\r\n },\r\n {\r\n \"projectLocalName\": \"龙华交付测试项目\",\r\n \"projName\": \"龙华模拟交付\",\r\n \"latitude\": \"36.5\",\r\n \"productLine\": \"\",\r\n \"projectCode\": null,\r\n \"detailAddress\": \"\",\r\n \"projectLocalID\": \"8888888801\",\r\n \"functionType\": \"230\",\r\n \"partitionAbbr\": \"龙华模拟交付\",\r\n \"projectName\": \"龙华交付测试项目\",\r\n \"projectId\": \"Pj8888888801\",\r\n \"liveStatus\": \"1\",\r\n \"longitude\": \"102.12\",\r\n \"totalArea\": null,\r\n \"groupCode\": \"BR\"\r\n },\r\n {\r\n \"projectLocalName\": \"京东测试项目\",\r\n \"projName\": \"京东测试项目\",\r\n \"latitude\": \"36.5\",\r\n \"productLine\": \"\",\r\n \"projectCode\": null,\r\n \"detailAddress\": \"\",\r\n \"projectLocalID\": \"9909990002\",\r\n \"functionType\": \"230\",\r\n \"partitionAbbr\": \"京东测试项目\",\r\n \"projectName\": \"京东测试项目\",\r\n \"projectId\": \"Pj9909990002\",\r\n \"liveStatus\": \"1\",\r\n \"longitude\": \"102.12\",\r\n \"totalArea\": null,\r\n \"groupCode\": \"BR\"\r\n },\r\n {\r\n \"projectLocalName\": \"不知道做什么的4\",\r\n \"projName\": null,\r\n \"latitude\": \"36.5\",\r\n \"productLine\": \"\",\r\n \"projectCode\": \"\",\r\n \"detailAddress\": \"\",\r\n \"projectLocalID\": \"9909990003\",\r\n \"functionType\": \"230\",\r\n \"partitionAbbr\": null,\r\n \"projectName\": \"不知道做什么的4\",\r\n \"projectId\": \"Pj9909990003\",\r\n \"liveStatus\": \"1\",\r\n \"longitude\": \"102.12\",\r\n \"totalArea\": null,\r\n \"groupCode\": \"BR\"\r\n },\r\n {\r\n \"projectLocalName\": \"京东本地测试项目\",\r\n \"projName\": \"京东本地测试项目\",\r\n \"latitude\": \"36.5\",\r\n \"productLine\": \"\",\r\n \"projectCode\": null,\r\n \"detailAddress\": \"\",\r\n \"projectLocalID\": \"9909990004\",\r\n \"functionType\": \"230\",\r\n \"partitionAbbr\": \"京东本地测试项目\",\r\n \"projectName\": \"京东本地测试项目\",\r\n \"projectId\": \"Pj9909990004\",\r\n \"liveStatus\": \"1\",\r\n \"longitude\": \"102.12\",\r\n \"totalArea\": null,\r\n \"groupCode\": \"BR\"\r\n },\r\n {\r\n \"projectLocalName\": \"测试003\",\r\n \"projName\": null,\r\n \"latitude\": \"39.93\",\r\n \"productLine\": \"\",\r\n \"projectCode\": null,\r\n \"detailAddress\": \"\",\r\n \"projectLocalID\": \"test003\",\r\n \"functionType\": \"111\",\r\n \"partitionAbbr\": null,\r\n \"projectName\": \"测试003\",\r\n \"projectId\": \"Pj129003\",\r\n \"liveStatus\": \"0\",\r\n \"longitude\": \"116.42\",\r\n \"totalArea\": null,\r\n \"groupCode\": \"BR\"\r\n }\r\n ]\r\n }],\r\n reason: ''\r\n };\r\n };\r\n}","/**\r\n * 封装axios的类\r\n * nh 2021.12.23\r\n */\r\n\r\nimport axios from \"axios\";\r\nimport vueStore from \"@/store\";\r\nimport { logicConfig } from \"@/logicConfig\";\r\n\r\nvar CancelToken = axios.CancelToken;\r\nvar cancel;\r\n\r\n// 创建axios实例\r\nconst axiosservice = axios.create({\r\n timeout: 3000000, // 请求超时时间\r\n cancelToken: new CancelToken(function executor(c) {\r\n // executor 函数接收一个 cancel 函数作为参数\r\n cancel = c;\r\n }),\r\n});\r\n\r\naxiosservice.interceptors.request.use(\r\n (config) => {\r\n return config;\r\n },\r\n (error) => {\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\naxiosservice.interceptors.response.use(\r\n function (res) {\r\n //在这里对返回的数据进行处理\r\n let resp = res.data;\r\n return res;\r\n },\r\n function (err) {\r\n console.log(\"axios interceptors err = \", err);\r\n return Promise.reject(err);\r\n }\r\n);\r\n\r\nexport class axiosUtils {\r\n /**\r\n * get请求\r\n * @param url\r\n * @param data\r\n * @returns\r\n */\r\n protected async getRequest(url: string, data: any) {\r\n try {\r\n var urlArr = url.split(\"?\");\r\n var urlPrefix = urlArr[0];\r\n var urlParamStr = urlArr[1] || \"\";\r\n\r\n var paramKeyArr = Object.keys(data || {});\r\n paramKeyArr.forEach(_key => { \r\n urlParamStr = _key + '=' + data[_key] + '&' + urlParamStr;\r\n });\r\n\r\n var newUrl = urlPrefix + '?' + urlParamStr;\r\n\r\n let response = await this.customRequest(newUrl, {}, {}, \"get\");\r\n return response;\r\n } catch (err) {\r\n throw err;\r\n }\r\n }\r\n\r\n /**\r\n * post请求\r\n * @param url\r\n * @param data\r\n * @returns\r\n */\r\n protected async postRequest(url: string, data: any) {\r\n try {\r\n let response = await this.customRequest(url, {}, data, \"post\");\r\n return response;\r\n } catch (err) {\r\n throw err;\r\n }\r\n }\r\n\r\n /**\r\n * 自定义请求\r\n * @param url\r\n * @param headers\r\n * @param data\r\n * @param method get | post 默认post\r\n * @returns\r\n */\r\n protected async customRequest(\r\n url: string,\r\n headers: any,\r\n data: any,\r\n method: string = \"post\"\r\n ) {\r\n try {\r\n //headers里放入 groupCode、projectId 为了兼顾老ADM的写法,以后可删除\r\n headers = headers || {};\r\n headers.groupCode =\r\n headers.groupCode || vueStore.state.selectProject.groupCode;\r\n headers.projectId = headers.projectId || vueStore.state.selectProject.id;\r\n\r\n var urlArr = url.split(\"?\");\r\n var urlPrefix = urlArr[0];\r\n var urlParamStr = urlArr[1] || \"\";\r\n if (urlParamStr.indexOf(\"projectId=\") == -1) {\r\n urlParamStr =\r\n \"projectId=\" + vueStore.state.selectProject.id + \"&\" + urlParamStr;\r\n }\r\n\r\n if (urlParamStr.indexOf(\"groupCode=\") == -1) {\r\n urlParamStr =\r\n \"groupCode=\" +\r\n vueStore.state.selectProject.groupCode +\r\n \"&\" +\r\n urlParamStr;\r\n }\r\n\r\n url = urlPrefix + \"?\" + urlParamStr;\r\n\r\n let response = await axiosservice({\r\n url,\r\n headers: headers || {},\r\n data,\r\n method: method == \"post\" ? \"post\" : \"get\",\r\n });\r\n return response.data;\r\n } catch (err) {\r\n // throw err;\r\n console.error(err);\r\n return {\r\n result: logicConfig.resultObj.failure,\r\n reason: '请求异常'\r\n };\r\n }\r\n }\r\n}\r\n","import { graphStateEnum } from \"./graphStateEnum\";\r\nimport { sysGraphHttpUtils } from \"@/utils/http/sysGraphHttpUtils\";\r\nimport { logicConfig } from \"@/logicConfig\";\r\nimport moment from 'moment';\r\n\r\nexport class sysGraphController {\r\n private static sysGraphHttpUtilsInstance = new sysGraphHttpUtils();\r\n //key为系统类型编码,值为 系统图类型 > 模板数据 的二级结构数组\r\n private static _tempTemplateObj = {};\r\n //三级数组 专业>系统类型>系统实例\r\n private static zhuanyeArr = [];\r\n\r\n\r\n //根据状态编码转状态名称\r\n static getStateNameByCode(stateCode: string) {\r\n return stateCode == graphStateEnum.Draft ? '草稿' :\r\n stateCode == graphStateEnum.Publish ? '上架' :\r\n stateCode == graphStateEnum.Recyle ? '回收站' : '';\r\n }\r\n\r\n /**\r\n * 查询系统图列表\r\n * @param grpphName 系统图名称\r\n */\r\n static async getDiagrams(grpphName: string) {\r\n //先取得所有的系统图,注:没有分页\r\n var resultObj = await this.sysGraphHttpUtilsInstance.postRequest('/diagram/getDiagrams', { name: grpphName });\r\n if (resultObj.result != logicConfig.resultObj.success)\r\n console.error(resultObj.reason);\r\n\r\n //key为系统类型编码,值为系统类型数据\r\n var _tempSystemTypeObj = {};\r\n var newDataArr = [];\r\n var dataArr = (resultObj.data || []).filter(_c => {\r\n return (_c.extraProps || {}).state != graphStateEnum.Recyle;\r\n });\r\n dataArr.sort(function (a, b) {\r\n return b.createTime - a.createTime;\r\n });\r\n\r\n\r\n //取得专业>系统类型>系统实例 以和系统图列表中的系统类型编码 对应以获取系统类型名称\r\n if (this.zhuanyeArr.length == 0) {\r\n var url2 = '/diagram/major/system/instance';\r\n var zhuanyeObj = await this.sysGraphHttpUtilsInstance.postRequest(url2, {});\r\n this.zhuanyeArr = zhuanyeObj.data || [];\r\n }\r\n\r\n\r\n for (let i = 0; i < dataArr.length; i++) {\r\n let _c = dataArr[i];\r\n let extraProps = _c.extraProps;\r\n //图状态(Draft: 未发布, WaitCheck: 待审核, Checked: 审核完成, Recyle: 回收站, Publish: 发布)\r\n let stateName = this.getStateNameByCode(extraProps.state);\r\n\r\n //获取系统类型名称\r\n let systemTypeName = (_tempSystemTypeObj[_c.system] || {}).aliasName;\r\n if (!systemTypeName) {\r\n getSystemTypeByCode(_c.system);\r\n systemTypeName = (_tempSystemTypeObj[_c.system] || {}).aliasName || '';\r\n }\r\n\r\n //获取模版名称\r\n let _templateObj = await this.getTemplateGraphTypeBySysTypeCode(_c.system, _c.templateId);\r\n let templateName = ((_templateObj || {}).template || {}).name || '';\r\n\r\n //格式化日期时间\r\n let momentInstance = moment(_c.createTime);\r\n let timeStr = momentInstance.format('YYYY[/]MM[/]DD[ ]HH[:]mm');\r\n\r\n newDataArr.push({\r\n id: _c.id,\r\n name: _c.name,\r\n //系统类型名称\r\n sysType: systemTypeName,\r\n //系统实例名称\r\n sysInstance: extraProps.systemInstanceName,\r\n //模板名称\r\n sysTemplate: templateName,\r\n stateName: stateName,\r\n createTime: timeStr\r\n });\r\n }\r\n return newDataArr;\r\n\r\n\r\n function getSystemTypeByCode(systemTypeCode: string) {\r\n for (let i = 0; i < sysGraphController.zhuanyeArr.length; i++) {\r\n //专业\r\n let zhuanye = sysGraphController.zhuanyeArr[i];\r\n //系统类型数组\r\n let systemTypeArr = zhuanye.children || [];\r\n let isFind = false;\r\n for (let j = 0; j < systemTypeArr.length; j++) {\r\n //系统类型\r\n let systemType = systemTypeArr[j];\r\n if (systemType.code == systemTypeCode) {\r\n isFind = true;\r\n _tempSystemTypeObj[systemTypeCode] = systemType;\r\n break;\r\n }\r\n }\r\n if (isFind)\r\n break;\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * 根据系统类型查询系统图模板和系统图类型,数据结构:系统图类型 -> 系统图模版\r\n * @param sysTypeCode 系统类型编码\r\n * @param templateId 模版ID\r\n * @return {template:{id:'',name:''},graphType:{id:'',name:''}}\r\n */\r\n static async getTemplateGraphTypeBySysTypeCode(sysTypeCode: string, templateId: string) {\r\n var dataArr = this._tempTemplateObj[sysTypeCode];\r\n\r\n if (!dataArr) {\r\n let url = '/diagram/systemType/template';\r\n let resultObj = await sysGraphController.sysGraphHttpUtilsInstance.postRequest(url, { system: sysTypeCode });\r\n dataArr = resultObj.data || [];\r\n }\r\n this._tempTemplateObj[sysTypeCode] = dataArr;\r\n\r\n for (let i = 0; i < dataArr.length; i++) {\r\n //_sysGraphType为系统图类型\r\n let sysGraphType = dataArr[i];\r\n //模板数组\r\n let templateArr = sysGraphType.children || [];\r\n for (let j = 0; j < templateArr.length; j++) {\r\n //模板\r\n let template = templateArr[j];\r\n if (template.id == templateId) {\r\n return {\r\n template: { id: template.id, name: template.name },\r\n graphType: { id: sysGraphType.id, name: sysGraphType.name }\r\n };\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n\r\n /**\r\n * 根据项目查询该项目下的专业>系统类型>系统实例\r\n * @param projectId 项目ID\r\n * @param groupCode 集团编码\r\n */\r\n static async getSysInstanceByProject(projectId: string, groupCode: string) {\r\n var url = '/diagram/major/system/instance?projectId=' + projectId + '&groupCode=' + groupCode;\r\n var resultObj = await this.sysGraphHttpUtilsInstance.postRequest(url, {});\r\n if (resultObj.result != logicConfig.resultObj.success)\r\n console.error(resultObj.reason);\r\n var dataArr = resultObj.data || [];\r\n this.zhuanyeArr = dataArr;\r\n var newDataArr = [];\r\n\r\n dataArr.forEach(_c => {\r\n //_c为专业\r\n let zhuanye = { value: _c.id, label: _c.label, code: _c.code, children: [] };\r\n let sysTypeArr = [];\r\n (_c.children || []).forEach(_c2 => {\r\n //_c2为系统类型\r\n let sysType = { value: _c2.id, label: _c2.aliasName, code: _c2.code, children: [] };\r\n let sysInstanceArr = [];\r\n (_c2.children || []).forEach(_c3 => {\r\n //_c3为系统实例\r\n sysInstanceArr.push({ value: _c3.id, label: _c3.name, code: _c3.code });\r\n });\r\n sysType.children = sysInstanceArr;\r\n sysTypeArr.push(sysType);\r\n });\r\n zhuanye.children = sysTypeArr;\r\n newDataArr.push(zhuanye);\r\n });\r\n return newDataArr;\r\n }\r\n\r\n /**\r\n * 根据系统类型查询系统图模板,数据结构:系统图类型 -> 系统图模版\r\n * @param sysTypeCode 系统类型编码\r\n */\r\n static async getTemplateBySysTypeCode(sysTypeCode: string) {\r\n var url = '/diagram/systemType/template';\r\n var resultObj = await this.sysGraphHttpUtilsInstance.postRequest(url, { system: sysTypeCode });\r\n if (resultObj.result != logicConfig.resultObj.success)\r\n console.error(resultObj.reason);\r\n var dataArr = resultObj.data || [];\r\n var newDataArr = [];\r\n\r\n dataArr.forEach(_sysGraphType => {\r\n //_sysGraphType为系统图类型\r\n let sysGraphType = { value: _sysGraphType.id, label: _sysGraphType.name, code: _sysGraphType.code, children: [] };\r\n let templateArr = [];\r\n (_sysGraphType.children || []).forEach(_template => {\r\n //_template为模版\r\n let template = { value: _template.id, label: _template.name, code: _template.code };\r\n templateArr.push(template);\r\n });\r\n sysGraphType.children = templateArr;\r\n newDataArr.push(sysGraphType);\r\n });\r\n return newDataArr;\r\n }\r\n\r\n /**\r\n * 新增系统图\r\n * @param _paramObj {name:'系统图名称',type:'系统图类型编码',templateId:'引用的模板id',system:'所属的系统类型编码',projectId:'项目id',systemId:'对应的系统实例id',groupCode:'集团编码',}\r\n */\r\n static async createSysGraph(_paramObj: any) {\r\n var url = '/diagram/newDiagram';\r\n var resultObj = await this.sysGraphHttpUtilsInstance.postRequest(url, _paramObj);\r\n if (resultObj.result != logicConfig.resultObj.success) {\r\n resultObj.reason = '新建系统图失败:' + resultObj.reason;\r\n return resultObj;\r\n }\r\n\r\n var dataObj = resultObj.data || {};\r\n if (!dataObj.id)\r\n return { result: logicConfig.resultObj.failure, reason: '缺少系统图ID' };\r\n\r\n //新增成功后,要加载数据\r\n var loadDataUrl = '/diagram/loadData';\r\n var loadResultObj = await this.sysGraphHttpUtilsInstance.postRequest(loadDataUrl, { id: dataObj.id });\r\n if (loadResultObj.result != logicConfig.resultObj.success) {\r\n loadResultObj.reason = '加载模板数据失败:' + loadResultObj.reason;\r\n return loadResultObj;\r\n }\r\n\r\n //加载数据成功后保存数据\r\n var saveResultObj = await this.saveSysGraph(loadResultObj.data);\r\n if (saveResultObj.result != logicConfig.resultObj.success) {\r\n saveResultObj.reason = '保存系统图数据失败:' + saveResultObj.reason;\r\n return saveResultObj;\r\n }\r\n\r\n //因为保存数据成功返回的data里的数据不全,所以返回加载数据成功后的数据给页面\r\n return loadResultObj;\r\n }\r\n\r\n /**\r\n * 保存系统图数据\r\n * @param _paramObj 参见后台loadData接口的返回\r\n */\r\n static async saveSysGraph(_paramObj: any) {\r\n var saveUrl = '/diagram/newDiagram';\r\n var saveResultObj = await this.sysGraphHttpUtilsInstance.postRequest(saveUrl, _paramObj);\r\n return saveResultObj;\r\n }\r\n\r\n /**\r\n * 根据系统图ID查询系统图信息\r\n * @param id 系统图ID\r\n */\r\n static async getDiagramById(id: string, groupCode: string, projectId: string) {\r\n var url = '/diagram/getDiagram?diagramId=' + id;\r\n var resultObj = await this.sysGraphHttpUtilsInstance.getRequest(url, {});\r\n if (resultObj.result != logicConfig.resultObj.success) {\r\n console.error(resultObj.reason);\r\n return resultObj;\r\n }\r\n\r\n var dataObj = resultObj.data || {};\r\n if (!dataObj.id)\r\n return { result: logicConfig.resultObj.failure, reason: '缺少系统图ID' };\r\n\r\n //取得专业>系统类型>系统实例 以和系统图列表中的系统类型编码 对应以获取系统实例名称\r\n if (this.zhuanyeArr.length == 0) {\r\n var url2 = '/diagram/major/system/instance?groupCode=' + groupCode + '&projectId=' + projectId;\r\n var zhuanyeObj = await this.sysGraphHttpUtilsInstance.postRequest(url2, {});\r\n this.zhuanyeArr = zhuanyeObj.data || [];\r\n }\r\n\r\n //获取系统实例名称\r\n var _systemInstance = getSystemInstanceByCode(resultObj.data.systemId);\r\n console.log(_systemInstance);\r\n resultObj.data.systemInstanceName = _systemInstance.name || '';\r\n\r\n\r\n //获取系统图类型和系统图模版\r\n var _temoObj = await this.getTemplateGraphTypeBySysTypeCode(resultObj.data.system, resultObj.data.templateId);\r\n resultObj.data.graphTypeName = ((_temoObj || {}).graphType || {}).name;\r\n resultObj.data.templateName = ((_temoObj || {}).template || {}).name;\r\n\r\n //状态名称\r\n resultObj.data.stateName = this.getStateNameByCode(resultObj.data.extraProps.state);\r\n\r\n\r\n return resultObj;\r\n\r\n //获取系统实例信息\r\n function getSystemInstanceByCode(systemInstanceId: string) {\r\n for (let i = 0; i < sysGraphController.zhuanyeArr.length; i++) {\r\n //专业\r\n let zhuanye = sysGraphController.zhuanyeArr[i];\r\n //系统类型数组\r\n let systemTypeArr = zhuanye.children || [];\r\n let isFind = false;\r\n for (let j = 0; j < systemTypeArr.length; j++) {\r\n //系统类型\r\n let systemType = systemTypeArr[j];\r\n //系统实例数组\r\n let systemInstanceArr = systemType.children || [];\r\n for (let k = 0; k < systemInstanceArr.length; k++) {\r\n //系统实例\r\n let systemInstance = systemInstanceArr[k];\r\n if (systemInstance.id == systemInstanceId)\r\n return systemInstance;\r\n }\r\n }\r\n if (isFind)\r\n break;\r\n }\r\n };\r\n\r\n return {\r\n result: 'success',\r\n data: {\r\n \"id\": \"5715eb4e955249babeba81641f868328\",\r\n \"name\": \"高压系统图7\",\r\n \"remark\": null,\r\n \"type\": \"SETDHVSL\",\r\n \"templateId\": \"cef7e4266e22489dbd78e3d8b0248292\",\r\n \"system\": \"SETD\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"systemId\": \"Sy11010500316d809bec3e06439e91cc0852a4853dcc\",\r\n \"groupCode\": \"BR\",\r\n \"extraProps\": {\r\n \"state\": \"Draft\"\r\n },\r\n \"nodes\": [\r\n {\r\n \"id\": \"665bcb59f4354d00ab2db5528f7a0cd9\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH5\",\r\n \"layoutIndex\": 0,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031ef68077a421c42ae9ed64d4509bc8d2f\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-XQ9GR\",\r\n \"localId\": \"1H4\",\r\n \"localName\": \"至1#高压冷机高压开关柜(1H4)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131901077.png\",\r\n \"name\": \"1635131901077\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635660\",\r\n \"cADID\": \"1H4\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"147419.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031ef68077a421c42ae9ed64d4509bc8d2f\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至1#高压冷机高压开关柜(1H4)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"de1b2fc7c9bb46ea820f48c01b01bdde\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 0,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003101228dce0fff4268aea05f1fe968eb63\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"modifiedTime\": 1639034991000,\r\n \"modifier\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-30VAS\",\r\n \"localId\": \"2H16\",\r\n \"localName\": \"至GTR2变压器高压开关柜(2H16)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132039836.png\",\r\n \"name\": \"1635132039836\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635795\",\r\n \"cADID\": \"2H16\",\r\n \"ratedI\": 200,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"158039.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"大厂\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003101228dce0fff4268aea05f1fe968eb63\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至GTR2变压器高压开关柜(2H16)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"104aebb297eb4fc4ad56b8401f5c62ce\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 140,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 1,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031026a23aa76584336bcf695b6680f4702\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-MZJKK\",\r\n \"localId\": \"2H8\",\r\n \"localName\": \"至DTR1变压器高压开关柜(2H8)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132033445.png\",\r\n \"name\": \"1635132033445\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635769\",\r\n \"cADID\": \"2H8\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"161019.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031026a23aa76584336bcf695b6680f4702\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至DTR1变压器高压开关柜(2H8)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"9899f9764dee43cd90b979145866f9b7\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 260,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 2,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031062159cf022846e087d17615389a0e7e\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-L0Q0Y\",\r\n \"localId\": \"1H17\",\r\n \"localName\": \"至JTR2变压器高压开关柜(1H17)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132028195.png\",\r\n \"name\": \"1635132028195\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635806\",\r\n \"cADID\": \"1H17\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"148739.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031062159cf022846e087d17615389a0e7e\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至JTR2变压器高压开关柜(1H17)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"0079b127e99c443fbde993b93a18bf58\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 380,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 3,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500310ef16b1a962e47f099286adf2bb266d5\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-SX4KP\",\r\n \"localId\": \"1H9\",\r\n \"localName\": \"至4#高压冷机高压开关柜(1H19)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132021639.png\",\r\n \"name\": \"1635132021639\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635726\",\r\n \"cADID\": \"1H9\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"151419.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500310ef16b1a962e47f099286adf2bb266d5\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至4#高压冷机高压开关柜(1H19)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"0c8d855d39de490a9270e8e269a7e245\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 500,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 4,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003128ca598367094aa191f0247062ae1cd4\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-Q3GG6\",\r\n \"localId\": \"2H4\",\r\n \"localName\": \"至ITR1变压器高压开关柜(2H4)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132016310.png\",\r\n \"name\": \"1635132016310\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635732\",\r\n \"cADID\": \"2H4\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"157819.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003128ca598367094aa191f0247062ae1cd4\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至ITR1变压器高压开关柜(2H4)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"ddad82b74c544c82afc7ec34630a5699\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 620,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 5,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003128e188326d0c491192e50e1dfa8f9e88\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-657H4\",\r\n \"localId\": \"2H14\",\r\n \"localName\": \"至DTR2变压器高压开关柜(2H14)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132011691.png\",\r\n \"name\": \"1635132011691\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635793\",\r\n \"cADID\": \"2H14\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"159639.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003128e188326d0c491192e50e1dfa8f9e88\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至DTR2变压器高压开关柜(2H14)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"40227bad01004fcf8b27fc9fbb5f3b6d\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 740,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 6,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031313199daf1da4c0d875be48ce7abc27e\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-MFPK3\",\r\n \"localId\": \"1H16\",\r\n \"localName\": \"至CTR2变压器高压开关柜(1H16)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132002308.png\",\r\n \"name\": \"1635132002308\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635805\",\r\n \"cADID\": \"1H16\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"149539.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031313199daf1da4c0d875be48ce7abc27e\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至CTR2变压器高压开关柜(1H16)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"fb62d9a766d74a418c1cc5379183357c\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 860,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 7,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500313487b5c481b94b448beff55119dfa83f\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-VPJ9E\",\r\n \"localId\": \"1H8\",\r\n \"localName\": \"至JTR1变压器高压开关柜(1H8)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132006695.png\",\r\n \"name\": \"1635132006695\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635709\",\r\n \"cADID\": \"1H8\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"150619.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500313487b5c481b94b448beff55119dfa83f\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至JTR1变压器高压开关柜(1H8)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"de98991bc9564e078c5d675698e77f28\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 980,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 8,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003136ea4dfb412d43ce8b7300ef5ce15ff7\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-U8KAC\",\r\n \"localId\": \"1H20\",\r\n \"localName\": \"至6#高压冷机高压开关柜(1H20)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131997646.png\",\r\n \"name\": \"1635131997646\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635833\",\r\n \"cADID\": \"1H20\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"146339.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003136ea4dfb412d43ce8b7300ef5ce15ff7\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至6#高压冷机高压开关柜(1H20)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"ee50bc4e37734870afbc4d8b947b50a1\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 1100,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 9,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003143051732a5ee463fa85ab9eaeeba77ff\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-LT3R8\",\r\n \"localId\": \"1H19\",\r\n \"localName\": \"至4#高压冷机高压开关柜(1H19)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131992585.png\",\r\n \"name\": \"1635131992585\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635808\",\r\n \"cADID\": \"1H19\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"147139.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003143051732a5ee463fa85ab9eaeeba77ff\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至4#高压冷机高压开关柜(1H19)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"fa9475c542b4412fb5a2c674fde0b0d7\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 1220,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 10,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031501fcc3a7b52427f8cee02fcfefca03d\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-7XM1E\",\r\n \"localId\": \"2H13\",\r\n \"localName\": \"至GTR1变压器高压开关柜(2H5)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131988003.png\",\r\n \"name\": \"1635131988003\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635790\",\r\n \"cADID\": \"2H13\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"160439.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031501fcc3a7b52427f8cee02fcfefca03d\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至GTR1变压器高压开关柜(2H5)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"46a481f457b643cfb22efa581834e180\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 1340,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 11,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003154c5e7447ad1427687cf0142c84fbab4\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-0H72G\",\r\n \"localId\": \"1H5\",\r\n \"localName\": \"至3#高压冷机高压开关柜(1H5)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131983256.png\",\r\n \"name\": \"1635131983256\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635706\",\r\n \"cADID\": \"1H5\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"148219.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003154c5e7447ad1427687cf0142c84fbab4\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至3#高压冷机高压开关柜(1H5)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"332e94ae0ae147f88d1b449f9ad85c6d\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 1460,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 12,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003156026840464d42aebb769c16ffb7f5fb\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-EWUJ4\",\r\n \"localId\": \"1H15\",\r\n \"localName\": \"至BTR2变压器高压开关柜(1H15)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131978046.png\",\r\n \"name\": \"1635131978046\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635804\",\r\n \"cADID\": \"1H15\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"150339.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003156026840464d42aebb769c16ffb7f5fb\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至BTR2变压器高压开关柜(1H15)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"c2e6557968104d47b7209c719086fd9b\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 1580,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 13,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003171d36433975f4c60a660451cc5b2a15a\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-PBMHK\",\r\n \"localId\": \"1H10\",\r\n \"localName\": \"至ATR1变压器高压开关柜(1H10)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131973401.png\",\r\n \"name\": \"1635131973401\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635802\",\r\n \"cADID\": \"1H10\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"152219.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003171d36433975f4c60a660451cc5b2a15a\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至ATR1变压器高压开关柜(1H10)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"7b96f2eab16d4affb441108b68afc891\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 1700,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 14,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031724af298a2b8421e864583aab9db71de\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-1ECNN\",\r\n \"localId\": \"2H6\",\r\n \"localName\": \"至HTR1变压器高压开关柜(2H6)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131968575.png\",\r\n \"name\": \"1635131968575\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635760\",\r\n \"cADID\": \"2H6\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"159419.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031724af298a2b8421e864583aab9db71de\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至HTR1变压器高压开关柜(2H6)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"4a75d62a98d1439c8b3d4ed55e610994\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 1820,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 15,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031900b335312c5457bba6315e0a6a983fa\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-YU4GS\",\r\n \"localId\": \"1H21\",\r\n \"localName\": \"至8#高压冷机高压开关柜(1H21)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131963280.png\",\r\n \"name\": \"1635131963280\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635841\",\r\n \"cADID\": \"1H21\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"145564.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031900b335312c5457bba6315e0a6a983fa\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至8#高压冷机高压开关柜(1H21)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"13d58337bc9b425283fa2433450ecf5f\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 1940,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 16,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500319b69d94e1d9c40e184a160453ccf0a24\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-3MHLZ\",\r\n \"localId\": \"1H7\",\r\n \"localName\": \"至7#高压冷机高压开关柜(1H7)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131958483.png\",\r\n \"name\": \"1635131958483\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635708\",\r\n \"cADID\": \"1H7\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"149819.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500319b69d94e1d9c40e184a160453ccf0a24\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至7#高压冷机高压开关柜(1H7)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"37fcd93aeef74eb3a940148769b9b692\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 2060,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 17,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500319e5df7eb4ba9461ea4330cb8224041de\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-0JRDF\",\r\n \"localId\": \"2H17\",\r\n \"localName\": \"至ITR2变压器高压开关柜(2H17)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131953786.png\",\r\n \"name\": \"1635131953786\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635796\",\r\n \"cADID\": \"2H17\",\r\n \"ratedI\": 150,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"157239.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500319e5df7eb4ba9461ea4330cb8224041de\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至ITR2变压器高压开关柜(2H17)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"018c985f4d094e2187fc56a276b3c567\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 2180,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 18,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031a154b8ea354549a3b62eef40f03f2e15\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-B6NJT\",\r\n \"localId\": \"2H7\",\r\n \"localName\": \"至FTR1变压器高压开关柜(2H7)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131948987.png\",\r\n \"name\": \"1635131948987\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635761\",\r\n \"cADID\": \"2H7\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"160219.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031a154b8ea354549a3b62eef40f03f2e15\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至FTR1变压器高压开关柜(2H7)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"23106fade3d14576844a1a1eac87123d\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 2300,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 19,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031a366b97e21924b97bc501aed18b295af\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-MASE7\",\r\n \"localId\": \"2H15\",\r\n \"localName\": \"至HTR2变压器高压开关柜(2H15)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131943907.png\",\r\n \"name\": \"1635131943907\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635794\",\r\n \"cADID\": \"2H15\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"158839.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031a366b97e21924b97bc501aed18b295af\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至HTR2变压器高压开关柜(2H15)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"1b08de72c361438688a4cd2c5f44a3d5\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 2420,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 20,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031a9d4e7d6244e491d91ddc8f3bb52c9f8\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-5G0HB\",\r\n \"localId\": \"1H11\",\r\n \"localName\": \"至BTR1变压器高压开关柜(1H11)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131939263.png\",\r\n \"name\": \"1635131939263\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635801\",\r\n \"cADID\": \"1H11\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"153019.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031a9d4e7d6244e491d91ddc8f3bb52c9f8\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至BTR1变压器高压开关柜(1H11)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"793cbf708aee499f8d036ea5cb3e8e52\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 2540,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 21,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031aa5495ba596e4611a6b48e9eb67c5f46\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-F8TMX\",\r\n \"localId\": \"1H18\",\r\n \"localName\": \"至2#高压冷机高压开关柜(1H18)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131934621.png\",\r\n \"name\": \"1635131934621\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635807\",\r\n \"cADID\": \"1H18\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"147939.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031aa5495ba596e4611a6b48e9eb67c5f46\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至2#高压冷机高压开关柜(1H18)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"e1515037460049d892156fb66d83548a\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 2660,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 22,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031abb2871e19a74143ae43bcb68fab1c63\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-B9DG6\",\r\n \"localId\": \"1H14\",\r\n \"localName\": \"至ATR1变压器高压开关柜(1H14)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131929119.png\",\r\n \"name\": \"1635131929119\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635803\",\r\n \"cADID\": \"1H14\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"151139.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031abb2871e19a74143ae43bcb68fab1c63\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至ATR1变压器高压开关柜(1H14)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"23c6d3b608a840ecad4e0a741a4d0021\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 2780,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 23,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031c8665c4ca53d4b36b6d87b1542e7a732\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-NP9T5\",\r\n \"localId\": \"1H6\",\r\n \"localName\": \"至5#高压冷机高压开关柜(1H6)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131923416.png\",\r\n \"name\": \"1635131923416\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635707\",\r\n \"cADID\": \"1H6\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"149019.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031c8665c4ca53d4b36b6d87b1542e7a732\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至5#高压冷机高压开关柜(1H6)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"79e0a727d71f4691b9584a32499c0af0\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 2900,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 24,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031de22c8e4b6c94c998b23ec8ffbf5cbf9\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-VJKJP\",\r\n \"localId\": \"2H9\",\r\n \"localName\": \"至ETR1变压器高压开关柜(2H9)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131918643.png\",\r\n \"name\": \"1635131918643\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635770\",\r\n \"cADID\": \"2H9\",\r\n \"ratedI\": 150,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"161819.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031de22c8e4b6c94c998b23ec8ffbf5cbf9\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至ETR1变压器高压开关柜(2H9)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"bd5b097b4bb8402a976c18e536c2de28\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 3020,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 25,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031df33c8d6f3a147cba2768f6e292be874\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-TVQF3\",\r\n \"localId\": \"2H12\",\r\n \"localName\": \"至ETR2变压器高压开关柜(2H12)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131913600.png\",\r\n \"name\": \"1635131913600\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635789\",\r\n \"cADID\": \"2H12\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"161239.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031df33c8d6f3a147cba2768f6e292be874\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至ETR2变压器高压开关柜(2H12)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"c6fa88b158f349ff928d56ae6826d788\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 3140,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 26,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031f75e4f0f8313472e94dd2d0af702f29f\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-T9PFG\",\r\n \"localId\": \"2H5\",\r\n \"localName\": \"至GTR1变压器高压开关柜(2H5)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131908792.png\",\r\n \"name\": \"1635131908792\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635733\",\r\n \"cADID\": \"2H5\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"158619.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031f75e4f0f8313472e94dd2d0af702f29f\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至GTR1变压器高压开关柜(2H5)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"68bbccf1c49d423c931d5bc6f35655c9\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH6\",\r\n \"layoutIndex\": 0,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003106e228756d1f46afa0020a43851abaa8\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压分段主柜-VP1B9\",\r\n \"localId\": \"1H12\",\r\n \"localName\": \"高压联络柜-1H12\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDSM\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132479341.png\",\r\n \"name\": \"1635132479341\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635728\",\r\n \"cADID\": \"1H12:高压联络柜-1H12\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"152739.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003106e228756d1f46afa0020a43851abaa8\",\r\n \"objClassCode\": \"SETDSM\",\r\n \"legendId\": \"ecf524cf811b4817bfd4ede78887b313\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压联络柜-1H12\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"b49a7947e2e04b169064d5eb80421678\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 240\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH6\",\r\n \"layoutIndex\": 1,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500318d53cc4ad269457c97e9de110ee8f601\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压分段主柜-T8AJK\",\r\n \"localId\": \"2H10\",\r\n \"localName\": \"高压联络柜-2H10\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDSM\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132475039.png\",\r\n \"name\": \"1635132475039\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635791\",\r\n \"cADID\": \"2H10:高压联络柜-2H10\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"162839.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500318d53cc4ad269457c97e9de110ee8f601\",\r\n \"objClassCode\": \"SETDSM\",\r\n \"legendId\": \"ecf524cf811b4817bfd4ede78887b313\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压联络柜-2H10\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"34382ce76dea492ea8f4ecc33d4df0a2\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 460\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH6\",\r\n \"layoutIndex\": 2,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031c63be7bc95734d6ab7190c9512c94e00\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压分段主柜-BJX4D\",\r\n \"localId\": \"2H11\",\r\n \"localName\": \"高压联络柜-2H11\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDSM\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132470795.png\",\r\n \"name\": \"1635132470795\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635792\",\r\n \"cADID\": \"2H11:高压联络柜-2H11\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"162039.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031c63be7bc95734d6ab7190c9512c94e00\",\r\n \"objClassCode\": \"SETDSM\",\r\n \"legendId\": \"ecf524cf811b4817bfd4ede78887b313\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压联络柜-2H11\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"8a2c806c4ab14347b7cada41b80f32c9\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 680\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH6\",\r\n \"layoutIndex\": 3,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031faed937fd36344919af38761f6bbcb4b\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压分段主柜-M5AQA\",\r\n \"localId\": \"1H13\",\r\n \"localName\": \"高压联络柜-1H13\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDSM\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132466453.png\",\r\n \"name\": \"1635132466453\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635727\",\r\n \"cADID\": \"1H13:高压联络柜-1H13\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"151939.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031faed937fd36344919af38761f6bbcb4b\",\r\n \"objClassCode\": \"SETDSM\",\r\n \"legendId\": \"ecf524cf811b4817bfd4ede78887b313\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压联络柜-1H13\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"90c61b8c9d9546479e281a8772d94f84\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH3\",\r\n \"layoutIndex\": 0,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003117877f1714f3412ba94d92ee8f4fcac4\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压计量柜-8EUQP\",\r\n \"localId\": \"2H3\",\r\n \"localName\": \"高压计量柜-2H3\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHM\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635731\",\r\n \"cADID\": \"2H3:计量-2H3\",\r\n \"ratedI\": 600,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"157019.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003117877f1714f3412ba94d92ee8f4fcac4\",\r\n \"objClassCode\": \"SETDHM\",\r\n \"legendId\": \"2ceb6d09e4874af998be82603f842a5f\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压计量柜-2H3\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"66183e7ec34b4adfa9e46cdeb8fb6a37\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 240\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH3\",\r\n \"layoutIndex\": 1,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500317084430836d04d4cb1dc46456dc54383\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压计量柜-BFR2V\",\r\n \"localId\": \"2H18\",\r\n \"localName\": \"高压计量柜-2H18\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHM\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635797\",\r\n \"cADID\": \"2H18:计量-2H18\",\r\n \"ratedI\": 600,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"156439.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500317084430836d04d4cb1dc46456dc54383\",\r\n \"objClassCode\": \"SETDHM\",\r\n \"legendId\": \"2ceb6d09e4874af998be82603f842a5f\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压计量柜-2H18\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"cdb25192dab14526a165f7992b0c026b\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 460\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH3\",\r\n \"layoutIndex\": 2,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031a726021dce71421c89cd0136ccd034eb\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压计量柜-9JHDC\",\r\n \"localId\": \"1H22\",\r\n \"localName\": \"高压计量柜-1H22\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHM\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635849\",\r\n \"cADID\": \"1H22:高压计量柜-1H22\",\r\n \"ratedI\": 600,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"144764.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031a726021dce71421c89cd0136ccd034eb\",\r\n \"objClassCode\": \"SETDHM\",\r\n \"legendId\": \"2ceb6d09e4874af998be82603f842a5f\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压计量柜-1H22\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"3c0d94bcf6c945a191e60eff680d2caf\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 680\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH3\",\r\n \"layoutIndex\": 3,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031e9eec0b95e234d39a5dc40077ca9b39f\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压计量柜-JGVHX\",\r\n \"localId\": \"1H3\",\r\n \"localName\": \"高压计量柜-1H3\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHM\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635652\",\r\n \"cADID\": \"1H3:高压计量柜-1H3\",\r\n \"ratedI\": 600,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"146619.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031e9eec0b95e234d39a5dc40077ca9b39f\",\r\n \"objClassCode\": \"SETDHM\",\r\n \"legendId\": \"2ceb6d09e4874af998be82603f842a5f\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压计量柜-1H3\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"dc68461bf2584b2caae7e957fd501781\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 0,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003106633eb7d8c44b54aa1b1e1898a90d1c\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-AWSZJ\",\r\n \"localId\": \"EH2\",\r\n \"localName\": \"高压进线柜-EH2\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132319714.png\",\r\n \"name\": \"1635132319714\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB1:4426857\",\r\n \"cADID\": \"EH2\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl110105003188e36af7c6af4eaba983676d15ba3e66\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"121474.94,85000.01,-3950.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003106633eb7d8c44b54aa1b1e1898a90d1c\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-EH2\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"f96074c150024d32b3770031f7c74f91\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 240\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 1,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500310cab8db5dfd740e79117a1e7bd25de79\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-X7RXU\",\r\n \"localId\": \"EH1\",\r\n \"localName\": \"高压进线柜-EH1\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132314697.png\",\r\n \"name\": \"1635132314697\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB1:4426856\",\r\n \"cADID\": \"EH1\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl110105003188e36af7c6af4eaba983676d15ba3e66\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"125924.94,85000.01,-3950.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500310cab8db5dfd740e79117a1e7bd25de79\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-EH1\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"b9d03e548b3e4166b0b10e4b73e4d450\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 460\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 2,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003120fbb1961a5d4cb0a05b30ad36dafc27\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-CGBCQ\",\r\n \"localId\": \"1H1\",\r\n \"localName\": \"高压进线柜-1H1\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132300458.png\",\r\n \"name\": \"1635132300458\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4634495\",\r\n \"cADID\": \"1H1:高压进线柜-1H1\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"145019.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003120fbb1961a5d4cb0a05b30ad36dafc27\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-1H1\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"4b47ff646e724d26aed1ace4543596cb\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 680\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 3,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500312a6e15fa58cd45ab82f77d95dafb1910\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-9W81K\",\r\n \"localId\": \"2H19\",\r\n \"localName\": \"高压进线柜-2H19\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132295770.png\",\r\n \"name\": \"1635132295770\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635798\",\r\n \"cADID\": \"2H19:高压进线柜-2H19\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"155639.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500312a6e15fa58cd45ab82f77d95dafb1910\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-2H19\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"4b59aae972d047a2a1895ec08623a457\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 900\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 4,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031360a3ae7225341b6a6e797216e8b427b\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-B5M7M\",\r\n \"localId\": \"FH1\",\r\n \"localName\": \"高压进线柜-FH1\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132291303.png\",\r\n \"name\": \"1635132291303\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:5117561\",\r\n \"cADID\": \"FH1:高压进线柜-FH1\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"202354.99,20970.46,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031360a3ae7225341b6a6e797216e8b427b\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-FH1\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"cb3f4e6bfe2347d09445e63ba964ec17\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 1120\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 5,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500313a5e92f45bb3478b893b90b0973bc863\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-5MTRM\",\r\n \"localId\": \"1H2\",\r\n \"localName\": \"高压进线柜-1H2\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132253941.png\",\r\n \"name\": \"1635132253941\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635646\",\r\n \"cADID\": \"1H2:高压进线柜-1H2\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"145819.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500313a5e92f45bb3478b893b90b0973bc863\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-1H2\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"2aa95a057f9142f797feaecc192ca134\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 1340\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 6,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500314c8d3164c6fa470485384077d8738fc3\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-TC521\",\r\n \"localId\": \"1H23\",\r\n \"localName\": \"高压进线柜-1H23\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132286764.png\",\r\n \"name\": \"1635132286764\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635855\",\r\n \"cADID\": \"1H23:高压进线柜-1H23\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"143964.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500314c8d3164c6fa470485384077d8738fc3\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-1H23\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"2dbc3d0ce0544a209bc8261eed9abd7a\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 1560\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 7,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500314ec806ac3b2a4fdc9cf22334bc457fb0\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-H7JJN\",\r\n \"localId\": \"HH1\",\r\n \"localName\": \"高压进线柜-HH1\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132249268.png\",\r\n \"name\": \"1635132249268\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:5115971\",\r\n \"cADID\": \"HH1:高压进线柜-HH1\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"11854.99,22970.46,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500314ec806ac3b2a4fdc9cf22334bc457fb0\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-HH1\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"5437992a7e464037b07e7903d2182325\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 1780\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 8,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500315022681c90c344f6b75a7794616395c8\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-47F7S\",\r\n \"localId\": \"AH2\",\r\n \"localName\": \"高压进线柜-AH1B2\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132244493.png\",\r\n \"name\": \"1635132244493\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB3:4730856\",\r\n \"cADID\": \"AH2\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl11010500315ee406c45c4e4d46b775226827244cd2\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"102500.52,62440.88,-13050.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500315022681c90c344f6b75a7794616395c8\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-AH1B2\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"70fa41c245ca4e1a8b12ab7bf342c4ae\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 2000\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 9,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003171843bb0cc4b4ff58550784064b2eb26\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-YBZDL\",\r\n \"localId\": \"1H24\",\r\n \"localName\": \"高压进线柜-1H24\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132282069.png\",\r\n \"name\": \"1635132282069\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:5007513\",\r\n \"cADID\": \"1H24:高压进线柜-1H24\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"143164.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003171843bb0cc4b4ff58550784064b2eb26\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-1H24\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"d590beead9484b75b2af469795f0dbbc\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 2220\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 10,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003172b0ab44271d4525977da7338a3e5638\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-LSNS5\",\r\n \"localId\": \"DH2\",\r\n \"localName\": \"高压进线柜-DH2\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132310116.png\",\r\n \"name\": \"1635132310116\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB1:4417594\",\r\n \"cADID\": \"DH2\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl110105003188e36af7c6af4eaba983676d15ba3e66\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"92175.0,85000.01,-3950.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003172b0ab44271d4525977da7338a3e5638\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-DH2\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"3ffaa645614346e79aa57fa2839628b9\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 2440\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 11,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003173a0b6e5f07943d19387d0eb8d9ca940\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-XFFVD\",\r\n \"localId\": \"HH2\",\r\n \"localName\": \"高压进线柜-HH2\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132277703.png\",\r\n \"name\": \"1635132277703\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:5115775\",\r\n \"cADID\": \"HH2:高压进线柜-HH2\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"11854.99,25650.47,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003173a0b6e5f07943d19387d0eb8d9ca940\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-HH2\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"cb07e219a7734b7c8fb66cf764a1e7a3\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 2660\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 12,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500318b8cc19131fa4b399b83ece89e878b8d\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-U4FW7\",\r\n \"localId\": \"2H2\",\r\n \"localName\": \"高压进线柜-2H2\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132273141.png\",\r\n \"name\": \"1635132273141\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635730\",\r\n \"cADID\": \"2H2:高压进线柜-2H2\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"156219.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500318b8cc19131fa4b399b83ece89e878b8d\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-2H2\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"86c11f2c2db84b97b30bca3dc94249e4\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 2880\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 13,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500318c798d0a9b3346609f6ad78ca9e214ff\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-KC4YT\",\r\n \"localId\": \"BH1\",\r\n \"localName\": \"高压进线柜-BH1\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132239509.png\",\r\n \"name\": \"1635132239509\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB3:4730812\",\r\n \"cADID\": \"BH1\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl11010500315ee406c45c4e4d46b775226827244cd2\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"102500.52,66590.44,-13050.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500318c798d0a9b3346609f6ad78ca9e214ff\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-BH1\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"8fd33aee24074b2287cfaf937257a2a4\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 3100\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 14,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500319d02f904f8ce404ab530faf52a0cd4e3\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-55QZ7\",\r\n \"localId\": \"BH2\",\r\n \"localName\": \"高压进线柜-BH2\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132234703.png\",\r\n \"name\": \"1635132234703\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB3:4730731\",\r\n \"cADID\": \"BH2\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl11010500315ee406c45c4e4d46b775226827244cd2\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"102500.52,69274.44,-13050.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500319d02f904f8ce404ab530faf52a0cd4e3\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-BH2\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"694608a529cf401495ee7cf797f01ff3\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 3320\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 15,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031a169757a08784e98aa44203776863ee3\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-B017U\",\r\n \"localId\": \"FH2\",\r\n \"localName\": \"高压进线柜-FH2\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132268632.png\",\r\n \"name\": \"1635132268632\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:5117560\",\r\n \"cADID\": \"FH2:高压进线柜-FH2\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"202354.99,25150.47,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031a169757a08784e98aa44203776863ee3\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-FH2\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"ab01f1ee3187422eb8a5e60d35939883\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 3540\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 16,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031b68efd24347942a099bb293af437c833\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-Q4PSZ\",\r\n \"localId\": \"AH1\",\r\n \"localName\": \"高压进线柜-AH1\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132230016.png\",\r\n \"name\": \"1635132230016\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB3:4801863\",\r\n \"cADID\": \"AH1\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl11010500315ee406c45c4e4d46b775226827244cd2\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"119398.08,62626.29,-13050.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031b68efd24347942a099bb293af437c833\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-AH1\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"15501595a6df42a08c604380d1c359c3\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 3760\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 17,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031bc2a4974e0ba4b868fe3f06a75ee2ede\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-ZHHKW\",\r\n \"localId\": \"2H20\",\r\n \"localName\": \"高压进线柜-2H20\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132262887.png\",\r\n \"name\": \"1635132262887\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:5007538\",\r\n \"cADID\": \"2H20:高压进线柜-2H20\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"154839.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031bc2a4974e0ba4b868fe3f06a75ee2ede\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-2H20\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"5ddcfd43ce2d4e74bf7fce07af2fcb27\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 3980\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 18,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031d9845e17932748d691ac24b5a01d4734\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-6V6HV\",\r\n \"localId\": \"2H1\",\r\n \"localName\": \"高压进线柜-2H1\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132258323.png\",\r\n \"name\": \"1635132258323\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635729\",\r\n \"cADID\": \"2H1:高压进线柜-2H1\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"155419.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031d9845e17932748d691ac24b5a01d4734\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-2H1\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"aad7571303b940b3b42c582ee827b9ea\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 4200\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 19,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031f5fa354d412c4d919168dd1561c1ea7c\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-BVM6C\",\r\n \"localId\": \"DH1\",\r\n \"localName\": \"高压进线柜-DH1\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132305189.png\",\r\n \"name\": \"1635132305189\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB1:4426421\",\r\n \"cADID\": \"DH1\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl110105003188e36af7c6af4eaba983676d15ba3e66\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"96625.0,85000.01,-3950.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031f5fa354d412c4d919168dd1561c1ea7c\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-DH1\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n }\r\n ],\r\n \"lines\": [\r\n\r\n ],\r\n \"template\": {\r\n \"diagramType\": \"SETDHVSL\",\r\n \"id\": \"cef7e4266e22489dbd78e3d8b0248292\",\r\n \"name\": \"模板\",\r\n \"code\": null,\r\n \"remark\": null,\r\n \"frame\": {\r\n \"id\": \"frame\",\r\n \"name\": null,\r\n \"compType\": \"container\",\r\n \"position\": {\r\n \"minW\": 200,\r\n \"minH\": 200,\r\n \"paddingTop\": 0,\r\n \"paddingRight\": 0,\r\n \"paddingBottom\": 0,\r\n \"paddingLeft\": 0,\r\n \"absolute\": false,\r\n \"absolutePoint\": null\r\n },\r\n \"location\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"x\": 4660,\r\n \"y\": 4460\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"children\": [\r\n {\r\n \"id\": \"AH1\",\r\n \"name\": \"1#进线隔离及PT柜\",\r\n \"compType\": \"container\",\r\n \"position\": {\r\n \"minW\": 100,\r\n \"minH\": 200,\r\n \"paddingTop\": 0,\r\n \"paddingRight\": 0,\r\n \"paddingBottom\": 0,\r\n \"paddingLeft\": 0,\r\n \"absolute\": false,\r\n \"absolutePoint\": null\r\n },\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"children\": [\r\n\r\n ],\r\n \"layout\": {\r\n \"layout\": 1,\r\n \"align\": 0,\r\n \"valign\": 0,\r\n \"marginTop\": 20,\r\n \"marginRight\": 20,\r\n \"marginBottom\": 20,\r\n \"marginLeft\": 20,\r\n \"spaceH\": 20,\r\n \"spaceV\": 20\r\n },\r\n \"equipmentTypes\": [\r\n \"SETDHI\"\r\n ],\r\n \"remark\": null,\r\n \"dataFilter\": {\r\n \"type\": 1,\r\n \"not\": false,\r\n \"object\": \"name\",\r\n \"operation\": \"contains\",\r\n \"value\": \"1#;隔离\"\r\n },\r\n \"equipPack\": null,\r\n \"dynGroup\": null,\r\n \"groupLabel\": null\r\n },\r\n {\r\n \"id\": \"AH2\",\r\n \"name\": \"1#进线断路器柜\",\r\n \"compType\": \"container\",\r\n \"position\": {\r\n \"minW\": 100,\r\n \"minH\": 200,\r\n \"paddingTop\": 0,\r\n \"paddingRight\": 0,\r\n \"paddingBottom\": 0,\r\n \"paddingLeft\": 0,\r\n \"absolute\": false,\r\n \"absolutePoint\": null\r\n },\r\n \"location\": {\r\n \"x\": 140,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"children\": [\r\n\r\n ],\r\n \"layout\": {\r\n \"layout\": 1,\r\n \"align\": 0,\r\n \"valign\": 0,\r\n \"marginTop\": 20,\r\n \"marginRight\": 20,\r\n \"marginBottom\": 20,\r\n \"marginLeft\": 20,\r\n \"spaceH\": 20,\r\n \"spaceV\": 20\r\n },\r\n \"equipmentTypes\": [\r\n \"SETDHI\"\r\n ],\r\n \"remark\": null,\r\n \"dataFilter\": {\r\n \"type\": 2,\r\n \"not\": false,\r\n \"items\": [\r\n {\r\n \"type\": 1,\r\n \"not\": false,\r\n \"object\": \"name\",\r\n \"operation\": \"contains\",\r\n \"value\": \"1#\"\r\n },\r\n {\r\n \"type\": 1,\r\n \"not\": true,\r\n \"object\": \"name\",\r\n \"operation\": \"contains\",\r\n \"value\": \"隔离\"\r\n }\r\n ]\r\n },\r\n \"equipPack\": null,\r\n \"dynGroup\": null,\r\n \"groupLabel\": null\r\n },\r\n {\r\n \"id\": \"AH3\",\r\n \"name\": \"1#进线计量柜\",\r\n \"compType\": \"container\",\r\n \"position\": {\r\n \"minW\": 100,\r\n \"minH\": 200,\r\n \"paddingTop\": 0,\r\n \"paddingRight\": 0,\r\n \"paddingBottom\": 0,\r\n \"paddingLeft\": 0,\r\n \"absolute\": false,\r\n \"absolutePoint\": null\r\n },\r\n \"location\": {\r\n \"x\": 260,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"children\": [\r\n\r\n ],\r\n \"layout\": {\r\n \"layout\": 1,\r\n \"align\": 0,\r\n \"valign\": 0,\r\n \"marginTop\": 20,\r\n \"marginRight\": 20,\r\n \"marginBottom\": 20,\r\n \"marginLeft\": 20,\r\n \"spaceH\": 20,\r\n \"spaceV\": 20\r\n },\r\n \"equipmentTypes\": [\r\n \"SETDHM\"\r\n ],\r\n \"remark\": null,\r\n \"dataFilter\": {\r\n \"type\": 1,\r\n \"not\": false,\r\n \"object\": \"name\",\r\n \"operation\": \"contains\",\r\n \"value\": \"1#\"\r\n },\r\n \"equipPack\": null,\r\n \"dynGroup\": null,\r\n \"groupLabel\": null\r\n },\r\n {\r\n \"id\": \"AH5\",\r\n \"name\": \"1#高压送风风机断路器柜\",\r\n \"compType\": \"container\",\r\n \"position\": {\r\n \"minW\": 100,\r\n \"minH\": 200,\r\n \"paddingTop\": 0,\r\n \"paddingRight\": 0,\r\n \"paddingBottom\": 0,\r\n \"paddingLeft\": 0,\r\n \"absolute\": false,\r\n \"absolutePoint\": null\r\n },\r\n \"location\": {\r\n \"x\": 380,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 140,\r\n \"y\": 240\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"children\": [\r\n {\r\n \"id\": \"665bcb59f4354d00ab2db5528f7a0cd9\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH5\",\r\n \"layoutIndex\": 0,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031ef68077a421c42ae9ed64d4509bc8d2f\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-XQ9GR\",\r\n \"localId\": \"1H4\",\r\n \"localName\": \"至1#高压冷机高压开关柜(1H4)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131901077.png\",\r\n \"name\": \"1635131901077\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635660\",\r\n \"cADID\": \"1H4\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"147419.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031ef68077a421c42ae9ed64d4509bc8d2f\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至1#高压冷机高压开关柜(1H4)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n }\r\n ],\r\n \"layout\": {\r\n \"layout\": 2,\r\n \"align\": 0,\r\n \"valign\": 0,\r\n \"marginTop\": 20,\r\n \"marginRight\": 20,\r\n \"marginBottom\": 20,\r\n \"marginLeft\": 20,\r\n \"spaceH\": 20,\r\n \"spaceV\": 20\r\n },\r\n \"equipmentTypes\": [\r\n \"SETDHF\"\r\n ],\r\n \"remark\": null,\r\n \"dataFilter\": {\r\n \"type\": 1,\r\n \"not\": false,\r\n \"object\": \"name\",\r\n \"operation\": \"contains\",\r\n \"value\": \"1#\"\r\n },\r\n \"equipPack\": null,\r\n \"dynGroup\": null,\r\n \"groupLabel\": null\r\n },\r\n {\r\n \"id\": \"AH4\",\r\n \"name\": \"1#变压器断路器柜\",\r\n \"compType\": \"container\",\r\n \"position\": {\r\n \"minW\": 100,\r\n \"minH\": 200,\r\n \"paddingTop\": 0,\r\n \"paddingRight\": 0,\r\n \"paddingBottom\": 0,\r\n \"paddingLeft\": 0,\r\n \"absolute\": false,\r\n \"absolutePoint\": null\r\n },\r\n \"location\": {\r\n \"x\": 540,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 3260,\r\n \"y\": 240\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"children\": [\r\n {\r\n \"id\": \"de1b2fc7c9bb46ea820f48c01b01bdde\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 0,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003101228dce0fff4268aea05f1fe968eb63\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"modifiedTime\": 1639034991000,\r\n \"modifier\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-30VAS\",\r\n \"localId\": \"2H16\",\r\n \"localName\": \"至GTR2变压器高压开关柜(2H16)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132039836.png\",\r\n \"name\": \"1635132039836\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635795\",\r\n \"cADID\": \"2H16\",\r\n \"ratedI\": 200,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"158039.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"大厂\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003101228dce0fff4268aea05f1fe968eb63\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至GTR2变压器高压开关柜(2H16)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"104aebb297eb4fc4ad56b8401f5c62ce\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 140,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 1,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031026a23aa76584336bcf695b6680f4702\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-MZJKK\",\r\n \"localId\": \"2H8\",\r\n \"localName\": \"至DTR1变压器高压开关柜(2H8)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132033445.png\",\r\n \"name\": \"1635132033445\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635769\",\r\n \"cADID\": \"2H8\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"161019.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031026a23aa76584336bcf695b6680f4702\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至DTR1变压器高压开关柜(2H8)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"9899f9764dee43cd90b979145866f9b7\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 260,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 2,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031062159cf022846e087d17615389a0e7e\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-L0Q0Y\",\r\n \"localId\": \"1H17\",\r\n \"localName\": \"至JTR2变压器高压开关柜(1H17)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132028195.png\",\r\n \"name\": \"1635132028195\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635806\",\r\n \"cADID\": \"1H17\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"148739.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031062159cf022846e087d17615389a0e7e\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至JTR2变压器高压开关柜(1H17)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"0079b127e99c443fbde993b93a18bf58\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 380,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 3,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500310ef16b1a962e47f099286adf2bb266d5\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-SX4KP\",\r\n \"localId\": \"1H9\",\r\n \"localName\": \"至4#高压冷机高压开关柜(1H19)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132021639.png\",\r\n \"name\": \"1635132021639\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635726\",\r\n \"cADID\": \"1H9\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"151419.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500310ef16b1a962e47f099286adf2bb266d5\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至4#高压冷机高压开关柜(1H19)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"0c8d855d39de490a9270e8e269a7e245\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 500,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 4,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003128ca598367094aa191f0247062ae1cd4\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-Q3GG6\",\r\n \"localId\": \"2H4\",\r\n \"localName\": \"至ITR1变压器高压开关柜(2H4)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132016310.png\",\r\n \"name\": \"1635132016310\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635732\",\r\n \"cADID\": \"2H4\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"157819.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003128ca598367094aa191f0247062ae1cd4\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至ITR1变压器高压开关柜(2H4)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"ddad82b74c544c82afc7ec34630a5699\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 620,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 5,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003128e188326d0c491192e50e1dfa8f9e88\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-657H4\",\r\n \"localId\": \"2H14\",\r\n \"localName\": \"至DTR2变压器高压开关柜(2H14)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132011691.png\",\r\n \"name\": \"1635132011691\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635793\",\r\n \"cADID\": \"2H14\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"159639.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003128e188326d0c491192e50e1dfa8f9e88\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至DTR2变压器高压开关柜(2H14)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"40227bad01004fcf8b27fc9fbb5f3b6d\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 740,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 6,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031313199daf1da4c0d875be48ce7abc27e\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-MFPK3\",\r\n \"localId\": \"1H16\",\r\n \"localName\": \"至CTR2变压器高压开关柜(1H16)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132002308.png\",\r\n \"name\": \"1635132002308\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635805\",\r\n \"cADID\": \"1H16\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"149539.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031313199daf1da4c0d875be48ce7abc27e\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至CTR2变压器高压开关柜(1H16)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"fb62d9a766d74a418c1cc5379183357c\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 860,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 7,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500313487b5c481b94b448beff55119dfa83f\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-VPJ9E\",\r\n \"localId\": \"1H8\",\r\n \"localName\": \"至JTR1变压器高压开关柜(1H8)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132006695.png\",\r\n \"name\": \"1635132006695\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635709\",\r\n \"cADID\": \"1H8\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"150619.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500313487b5c481b94b448beff55119dfa83f\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至JTR1变压器高压开关柜(1H8)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"de98991bc9564e078c5d675698e77f28\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 980,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 8,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003136ea4dfb412d43ce8b7300ef5ce15ff7\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-U8KAC\",\r\n \"localId\": \"1H20\",\r\n \"localName\": \"至6#高压冷机高压开关柜(1H20)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131997646.png\",\r\n \"name\": \"1635131997646\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635833\",\r\n \"cADID\": \"1H20\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"146339.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003136ea4dfb412d43ce8b7300ef5ce15ff7\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至6#高压冷机高压开关柜(1H20)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"ee50bc4e37734870afbc4d8b947b50a1\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 1100,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 9,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003143051732a5ee463fa85ab9eaeeba77ff\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-LT3R8\",\r\n \"localId\": \"1H19\",\r\n \"localName\": \"至4#高压冷机高压开关柜(1H19)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131992585.png\",\r\n \"name\": \"1635131992585\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635808\",\r\n \"cADID\": \"1H19\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"147139.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003143051732a5ee463fa85ab9eaeeba77ff\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至4#高压冷机高压开关柜(1H19)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"fa9475c542b4412fb5a2c674fde0b0d7\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 1220,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 10,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031501fcc3a7b52427f8cee02fcfefca03d\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-7XM1E\",\r\n \"localId\": \"2H13\",\r\n \"localName\": \"至GTR1变压器高压开关柜(2H5)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131988003.png\",\r\n \"name\": \"1635131988003\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635790\",\r\n \"cADID\": \"2H13\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"160439.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031501fcc3a7b52427f8cee02fcfefca03d\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至GTR1变压器高压开关柜(2H5)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"46a481f457b643cfb22efa581834e180\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 1340,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 11,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003154c5e7447ad1427687cf0142c84fbab4\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-0H72G\",\r\n \"localId\": \"1H5\",\r\n \"localName\": \"至3#高压冷机高压开关柜(1H5)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131983256.png\",\r\n \"name\": \"1635131983256\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635706\",\r\n \"cADID\": \"1H5\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"148219.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003154c5e7447ad1427687cf0142c84fbab4\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至3#高压冷机高压开关柜(1H5)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"332e94ae0ae147f88d1b449f9ad85c6d\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 1460,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 12,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003156026840464d42aebb769c16ffb7f5fb\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-EWUJ4\",\r\n \"localId\": \"1H15\",\r\n \"localName\": \"至BTR2变压器高压开关柜(1H15)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131978046.png\",\r\n \"name\": \"1635131978046\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635804\",\r\n \"cADID\": \"1H15\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"150339.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003156026840464d42aebb769c16ffb7f5fb\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至BTR2变压器高压开关柜(1H15)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"c2e6557968104d47b7209c719086fd9b\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 1580,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 13,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003171d36433975f4c60a660451cc5b2a15a\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-PBMHK\",\r\n \"localId\": \"1H10\",\r\n \"localName\": \"至ATR1变压器高压开关柜(1H10)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131973401.png\",\r\n \"name\": \"1635131973401\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635802\",\r\n \"cADID\": \"1H10\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"152219.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003171d36433975f4c60a660451cc5b2a15a\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至ATR1变压器高压开关柜(1H10)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"7b96f2eab16d4affb441108b68afc891\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 1700,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 14,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031724af298a2b8421e864583aab9db71de\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-1ECNN\",\r\n \"localId\": \"2H6\",\r\n \"localName\": \"至HTR1变压器高压开关柜(2H6)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131968575.png\",\r\n \"name\": \"1635131968575\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635760\",\r\n \"cADID\": \"2H6\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"159419.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031724af298a2b8421e864583aab9db71de\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至HTR1变压器高压开关柜(2H6)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"4a75d62a98d1439c8b3d4ed55e610994\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 1820,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 15,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031900b335312c5457bba6315e0a6a983fa\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-YU4GS\",\r\n \"localId\": \"1H21\",\r\n \"localName\": \"至8#高压冷机高压开关柜(1H21)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131963280.png\",\r\n \"name\": \"1635131963280\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635841\",\r\n \"cADID\": \"1H21\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"145564.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031900b335312c5457bba6315e0a6a983fa\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至8#高压冷机高压开关柜(1H21)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"13d58337bc9b425283fa2433450ecf5f\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 1940,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 16,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500319b69d94e1d9c40e184a160453ccf0a24\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-3MHLZ\",\r\n \"localId\": \"1H7\",\r\n \"localName\": \"至7#高压冷机高压开关柜(1H7)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131958483.png\",\r\n \"name\": \"1635131958483\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635708\",\r\n \"cADID\": \"1H7\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"149819.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500319b69d94e1d9c40e184a160453ccf0a24\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至7#高压冷机高压开关柜(1H7)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"37fcd93aeef74eb3a940148769b9b692\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 2060,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 17,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500319e5df7eb4ba9461ea4330cb8224041de\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-0JRDF\",\r\n \"localId\": \"2H17\",\r\n \"localName\": \"至ITR2变压器高压开关柜(2H17)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131953786.png\",\r\n \"name\": \"1635131953786\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635796\",\r\n \"cADID\": \"2H17\",\r\n \"ratedI\": 150,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"157239.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500319e5df7eb4ba9461ea4330cb8224041de\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至ITR2变压器高压开关柜(2H17)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"018c985f4d094e2187fc56a276b3c567\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 2180,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 18,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031a154b8ea354549a3b62eef40f03f2e15\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-B6NJT\",\r\n \"localId\": \"2H7\",\r\n \"localName\": \"至FTR1变压器高压开关柜(2H7)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131948987.png\",\r\n \"name\": \"1635131948987\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635761\",\r\n \"cADID\": \"2H7\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"160219.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031a154b8ea354549a3b62eef40f03f2e15\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至FTR1变压器高压开关柜(2H7)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"23106fade3d14576844a1a1eac87123d\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 2300,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 19,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031a366b97e21924b97bc501aed18b295af\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-MASE7\",\r\n \"localId\": \"2H15\",\r\n \"localName\": \"至HTR2变压器高压开关柜(2H15)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131943907.png\",\r\n \"name\": \"1635131943907\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635794\",\r\n \"cADID\": \"2H15\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"158839.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031a366b97e21924b97bc501aed18b295af\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至HTR2变压器高压开关柜(2H15)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"1b08de72c361438688a4cd2c5f44a3d5\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 2420,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 20,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031a9d4e7d6244e491d91ddc8f3bb52c9f8\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-5G0HB\",\r\n \"localId\": \"1H11\",\r\n \"localName\": \"至BTR1变压器高压开关柜(1H11)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131939263.png\",\r\n \"name\": \"1635131939263\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635801\",\r\n \"cADID\": \"1H11\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"153019.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031a9d4e7d6244e491d91ddc8f3bb52c9f8\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至BTR1变压器高压开关柜(1H11)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"793cbf708aee499f8d036ea5cb3e8e52\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 2540,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 21,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031aa5495ba596e4611a6b48e9eb67c5f46\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-F8TMX\",\r\n \"localId\": \"1H18\",\r\n \"localName\": \"至2#高压冷机高压开关柜(1H18)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131934621.png\",\r\n \"name\": \"1635131934621\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635807\",\r\n \"cADID\": \"1H18\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"147939.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031aa5495ba596e4611a6b48e9eb67c5f46\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至2#高压冷机高压开关柜(1H18)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"e1515037460049d892156fb66d83548a\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 2660,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 22,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031abb2871e19a74143ae43bcb68fab1c63\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-B9DG6\",\r\n \"localId\": \"1H14\",\r\n \"localName\": \"至ATR1变压器高压开关柜(1H14)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131929119.png\",\r\n \"name\": \"1635131929119\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635803\",\r\n \"cADID\": \"1H14\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"151139.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031abb2871e19a74143ae43bcb68fab1c63\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至ATR1变压器高压开关柜(1H14)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"23c6d3b608a840ecad4e0a741a4d0021\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 2780,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 23,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031c8665c4ca53d4b36b6d87b1542e7a732\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-NP9T5\",\r\n \"localId\": \"1H6\",\r\n \"localName\": \"至5#高压冷机高压开关柜(1H6)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131923416.png\",\r\n \"name\": \"1635131923416\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635707\",\r\n \"cADID\": \"1H6\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"149019.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031c8665c4ca53d4b36b6d87b1542e7a732\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至5#高压冷机高压开关柜(1H6)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"79e0a727d71f4691b9584a32499c0af0\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 2900,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 24,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031de22c8e4b6c94c998b23ec8ffbf5cbf9\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-VJKJP\",\r\n \"localId\": \"2H9\",\r\n \"localName\": \"至ETR1变压器高压开关柜(2H9)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131918643.png\",\r\n \"name\": \"1635131918643\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635770\",\r\n \"cADID\": \"2H9\",\r\n \"ratedI\": 150,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"161819.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031de22c8e4b6c94c998b23ec8ffbf5cbf9\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至ETR1变压器高压开关柜(2H9)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"bd5b097b4bb8402a976c18e536c2de28\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 3020,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 25,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031df33c8d6f3a147cba2768f6e292be874\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-TVQF3\",\r\n \"localId\": \"2H12\",\r\n \"localName\": \"至ETR2变压器高压开关柜(2H12)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131913600.png\",\r\n \"name\": \"1635131913600\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635789\",\r\n \"cADID\": \"2H12\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"161239.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031df33c8d6f3a147cba2768f6e292be874\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至ETR2变压器高压开关柜(2H12)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"c6fa88b158f349ff928d56ae6826d788\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 3140,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH4\",\r\n \"layoutIndex\": 26,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031f75e4f0f8313472e94dd2d0af702f29f\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压馈线柜-T9PFG\",\r\n \"localId\": \"2H5\",\r\n \"localName\": \"至GTR1变压器高压开关柜(2H5)\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHF\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635131908792.png\",\r\n \"name\": \"1635131908792\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635733\",\r\n \"cADID\": \"2H5\",\r\n \"ratedI\": 100,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"158619.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031f75e4f0f8313472e94dd2d0af702f29f\",\r\n \"objClassCode\": \"SETDHF\",\r\n \"legendId\": \"2de2ea60811f44d6b7063db6550608e2\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"至GTR1变压器高压开关柜(2H5)\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n }\r\n ],\r\n \"layout\": {\r\n \"layout\": 2,\r\n \"align\": 0,\r\n \"valign\": 0,\r\n \"marginTop\": 20,\r\n \"marginRight\": 20,\r\n \"marginBottom\": 20,\r\n \"marginLeft\": 20,\r\n \"spaceH\": 20,\r\n \"spaceV\": 20\r\n },\r\n \"equipmentTypes\": [\r\n \"SETDHF\"\r\n ],\r\n \"remark\": null,\r\n \"dataFilter\": null,\r\n \"equipPack\": null,\r\n \"dynGroup\": null,\r\n \"groupLabel\": null\r\n },\r\n {\r\n \"id\": \"AH6\",\r\n \"name\": \"1#母线高压联络股\",\r\n \"compType\": \"container\",\r\n \"position\": {\r\n \"minW\": 100,\r\n \"minH\": 200,\r\n \"paddingTop\": 0,\r\n \"paddingRight\": 0,\r\n \"paddingBottom\": 0,\r\n \"paddingLeft\": 0,\r\n \"absolute\": false,\r\n \"absolutePoint\": null\r\n },\r\n \"location\": {\r\n \"x\": 3820,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 140,\r\n \"y\": 900\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"children\": [\r\n {\r\n \"id\": \"68bbccf1c49d423c931d5bc6f35655c9\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH6\",\r\n \"layoutIndex\": 0,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003106e228756d1f46afa0020a43851abaa8\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压分段主柜-VP1B9\",\r\n \"localId\": \"1H12\",\r\n \"localName\": \"高压联络柜-1H12\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDSM\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132479341.png\",\r\n \"name\": \"1635132479341\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635728\",\r\n \"cADID\": \"1H12:高压联络柜-1H12\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"152739.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003106e228756d1f46afa0020a43851abaa8\",\r\n \"objClassCode\": \"SETDSM\",\r\n \"legendId\": \"ecf524cf811b4817bfd4ede78887b313\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压联络柜-1H12\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"b49a7947e2e04b169064d5eb80421678\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 240\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH6\",\r\n \"layoutIndex\": 1,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500318d53cc4ad269457c97e9de110ee8f601\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压分段主柜-T8AJK\",\r\n \"localId\": \"2H10\",\r\n \"localName\": \"高压联络柜-2H10\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDSM\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132475039.png\",\r\n \"name\": \"1635132475039\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635791\",\r\n \"cADID\": \"2H10:高压联络柜-2H10\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"162839.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500318d53cc4ad269457c97e9de110ee8f601\",\r\n \"objClassCode\": \"SETDSM\",\r\n \"legendId\": \"ecf524cf811b4817bfd4ede78887b313\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压联络柜-2H10\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"34382ce76dea492ea8f4ecc33d4df0a2\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 460\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH6\",\r\n \"layoutIndex\": 2,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031c63be7bc95734d6ab7190c9512c94e00\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压分段主柜-BJX4D\",\r\n \"localId\": \"2H11\",\r\n \"localName\": \"高压联络柜-2H11\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDSM\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132470795.png\",\r\n \"name\": \"1635132470795\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635792\",\r\n \"cADID\": \"2H11:高压联络柜-2H11\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"162039.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031c63be7bc95734d6ab7190c9512c94e00\",\r\n \"objClassCode\": \"SETDSM\",\r\n \"legendId\": \"ecf524cf811b4817bfd4ede78887b313\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压联络柜-2H11\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"8a2c806c4ab14347b7cada41b80f32c9\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 680\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"AH6\",\r\n \"layoutIndex\": 3,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031faed937fd36344919af38761f6bbcb4b\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压分段主柜-M5AQA\",\r\n \"localId\": \"1H13\",\r\n \"localName\": \"高压联络柜-1H13\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDSM\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132466453.png\",\r\n \"name\": \"1635132466453\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635727\",\r\n \"cADID\": \"1H13:高压联络柜-1H13\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"151939.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031faed937fd36344919af38761f6bbcb4b\",\r\n \"objClassCode\": \"SETDSM\",\r\n \"legendId\": \"ecf524cf811b4817bfd4ede78887b313\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压联络柜-1H13\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n }\r\n ],\r\n \"layout\": {\r\n \"layout\": 1,\r\n \"align\": 0,\r\n \"valign\": 0,\r\n \"marginTop\": 20,\r\n \"marginRight\": 20,\r\n \"marginBottom\": 20,\r\n \"marginLeft\": 20,\r\n \"spaceH\": 20,\r\n \"spaceV\": 20\r\n },\r\n \"equipmentTypes\": [\r\n \"SETDSM\"\r\n ],\r\n \"remark\": null,\r\n \"dataFilter\": null,\r\n \"equipPack\": null,\r\n \"dynGroup\": null,\r\n \"groupLabel\": null\r\n },\r\n {\r\n \"id\": \"BH5\",\r\n \"name\": \"2#高压送风风机断路器柜\",\r\n \"compType\": \"container\",\r\n \"position\": {\r\n \"minW\": 100,\r\n \"minH\": 200,\r\n \"paddingTop\": 0,\r\n \"paddingRight\": 0,\r\n \"paddingBottom\": 0,\r\n \"paddingLeft\": 0,\r\n \"absolute\": false,\r\n \"absolutePoint\": null\r\n },\r\n \"location\": {\r\n \"x\": 3980,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"children\": [\r\n\r\n ],\r\n \"layout\": {\r\n \"layout\": 2,\r\n \"align\": 0,\r\n \"valign\": 0,\r\n \"marginTop\": 20,\r\n \"marginRight\": 20,\r\n \"marginBottom\": 20,\r\n \"marginLeft\": 20,\r\n \"spaceH\": 20,\r\n \"spaceV\": 20\r\n },\r\n \"equipmentTypes\": [\r\n \"SETDHF\"\r\n ],\r\n \"remark\": null,\r\n \"dataFilter\": null,\r\n \"equipPack\": null,\r\n \"dynGroup\": null,\r\n \"groupLabel\": null\r\n },\r\n {\r\n \"id\": \"BH4\",\r\n \"name\": \"2#变压器断路器柜\",\r\n \"compType\": \"container\",\r\n \"position\": {\r\n \"minW\": 100,\r\n \"minH\": 200,\r\n \"paddingTop\": 0,\r\n \"paddingRight\": 0,\r\n \"paddingBottom\": 0,\r\n \"paddingLeft\": 0,\r\n \"absolute\": false,\r\n \"absolutePoint\": null\r\n },\r\n \"location\": {\r\n \"x\": 4100,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"children\": [\r\n\r\n ],\r\n \"layout\": {\r\n \"layout\": 2,\r\n \"align\": 0,\r\n \"valign\": 0,\r\n \"marginTop\": 20,\r\n \"marginRight\": 20,\r\n \"marginBottom\": 20,\r\n \"marginLeft\": 20,\r\n \"spaceH\": 20,\r\n \"spaceV\": 20\r\n },\r\n \"equipmentTypes\": [\r\n \"SETDHF\"\r\n ],\r\n \"remark\": null,\r\n \"dataFilter\": null,\r\n \"equipPack\": null,\r\n \"dynGroup\": null,\r\n \"groupLabel\": null\r\n },\r\n {\r\n \"id\": \"BH3\",\r\n \"name\": \"2#高压计量柜\",\r\n \"compType\": \"container\",\r\n \"position\": {\r\n \"minW\": 100,\r\n \"minH\": 200,\r\n \"paddingTop\": 0,\r\n \"paddingRight\": 0,\r\n \"paddingBottom\": 0,\r\n \"paddingLeft\": 0,\r\n \"absolute\": false,\r\n \"absolutePoint\": null\r\n },\r\n \"location\": {\r\n \"x\": 4220,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 140,\r\n \"y\": 900\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"children\": [\r\n {\r\n \"id\": \"90c61b8c9d9546479e281a8772d94f84\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH3\",\r\n \"layoutIndex\": 0,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003117877f1714f3412ba94d92ee8f4fcac4\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压计量柜-8EUQP\",\r\n \"localId\": \"2H3\",\r\n \"localName\": \"高压计量柜-2H3\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHM\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635731\",\r\n \"cADID\": \"2H3:计量-2H3\",\r\n \"ratedI\": 600,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"157019.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003117877f1714f3412ba94d92ee8f4fcac4\",\r\n \"objClassCode\": \"SETDHM\",\r\n \"legendId\": \"2ceb6d09e4874af998be82603f842a5f\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压计量柜-2H3\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"66183e7ec34b4adfa9e46cdeb8fb6a37\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 240\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH3\",\r\n \"layoutIndex\": 1,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500317084430836d04d4cb1dc46456dc54383\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压计量柜-BFR2V\",\r\n \"localId\": \"2H18\",\r\n \"localName\": \"高压计量柜-2H18\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHM\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635797\",\r\n \"cADID\": \"2H18:计量-2H18\",\r\n \"ratedI\": 600,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"156439.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500317084430836d04d4cb1dc46456dc54383\",\r\n \"objClassCode\": \"SETDHM\",\r\n \"legendId\": \"2ceb6d09e4874af998be82603f842a5f\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压计量柜-2H18\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"cdb25192dab14526a165f7992b0c026b\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 460\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH3\",\r\n \"layoutIndex\": 2,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031a726021dce71421c89cd0136ccd034eb\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压计量柜-9JHDC\",\r\n \"localId\": \"1H22\",\r\n \"localName\": \"高压计量柜-1H22\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHM\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635849\",\r\n \"cADID\": \"1H22:高压计量柜-1H22\",\r\n \"ratedI\": 600,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"144764.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031a726021dce71421c89cd0136ccd034eb\",\r\n \"objClassCode\": \"SETDHM\",\r\n \"legendId\": \"2ceb6d09e4874af998be82603f842a5f\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压计量柜-1H22\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"3c0d94bcf6c945a191e60eff680d2caf\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 680\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH3\",\r\n \"layoutIndex\": 3,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031e9eec0b95e234d39a5dc40077ca9b39f\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压计量柜-JGVHX\",\r\n \"localId\": \"1H3\",\r\n \"localName\": \"高压计量柜-1H3\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHM\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635652\",\r\n \"cADID\": \"1H3:高压计量柜-1H3\",\r\n \"ratedI\": 600,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"146619.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031e9eec0b95e234d39a5dc40077ca9b39f\",\r\n \"objClassCode\": \"SETDHM\",\r\n \"legendId\": \"2ceb6d09e4874af998be82603f842a5f\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压计量柜-1H3\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n }\r\n ],\r\n \"layout\": {\r\n \"layout\": 1,\r\n \"align\": 0,\r\n \"valign\": 0,\r\n \"marginTop\": 20,\r\n \"marginRight\": 20,\r\n \"marginBottom\": 20,\r\n \"marginLeft\": 20,\r\n \"spaceH\": 20,\r\n \"spaceV\": 20\r\n },\r\n \"equipmentTypes\": [\r\n \"SETDHM\"\r\n ],\r\n \"remark\": null,\r\n \"dataFilter\": null,\r\n \"equipPack\": null,\r\n \"dynGroup\": null,\r\n \"groupLabel\": null\r\n },\r\n {\r\n \"id\": \"BH2\",\r\n \"name\": \"2#高压进线断路器柜\",\r\n \"compType\": \"container\",\r\n \"position\": {\r\n \"minW\": 100,\r\n \"minH\": 200,\r\n \"paddingTop\": 0,\r\n \"paddingRight\": 0,\r\n \"paddingBottom\": 0,\r\n \"paddingLeft\": 0,\r\n \"absolute\": false,\r\n \"absolutePoint\": null\r\n },\r\n \"location\": {\r\n \"x\": 4380,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 140,\r\n \"y\": 4420\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"children\": [\r\n {\r\n \"id\": \"dc68461bf2584b2caae7e957fd501781\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 0,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003106633eb7d8c44b54aa1b1e1898a90d1c\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-AWSZJ\",\r\n \"localId\": \"EH2\",\r\n \"localName\": \"高压进线柜-EH2\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132319714.png\",\r\n \"name\": \"1635132319714\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB1:4426857\",\r\n \"cADID\": \"EH2\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl110105003188e36af7c6af4eaba983676d15ba3e66\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"121474.94,85000.01,-3950.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003106633eb7d8c44b54aa1b1e1898a90d1c\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-EH2\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"f96074c150024d32b3770031f7c74f91\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 240\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 1,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500310cab8db5dfd740e79117a1e7bd25de79\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-X7RXU\",\r\n \"localId\": \"EH1\",\r\n \"localName\": \"高压进线柜-EH1\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132314697.png\",\r\n \"name\": \"1635132314697\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB1:4426856\",\r\n \"cADID\": \"EH1\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl110105003188e36af7c6af4eaba983676d15ba3e66\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"125924.94,85000.01,-3950.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500310cab8db5dfd740e79117a1e7bd25de79\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-EH1\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"b9d03e548b3e4166b0b10e4b73e4d450\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 460\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 2,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003120fbb1961a5d4cb0a05b30ad36dafc27\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-CGBCQ\",\r\n \"localId\": \"1H1\",\r\n \"localName\": \"高压进线柜-1H1\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132300458.png\",\r\n \"name\": \"1635132300458\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4634495\",\r\n \"cADID\": \"1H1:高压进线柜-1H1\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"145019.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003120fbb1961a5d4cb0a05b30ad36dafc27\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-1H1\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"4b47ff646e724d26aed1ace4543596cb\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 680\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 3,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500312a6e15fa58cd45ab82f77d95dafb1910\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-9W81K\",\r\n \"localId\": \"2H19\",\r\n \"localName\": \"高压进线柜-2H19\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132295770.png\",\r\n \"name\": \"1635132295770\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635798\",\r\n \"cADID\": \"2H19:高压进线柜-2H19\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"155639.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500312a6e15fa58cd45ab82f77d95dafb1910\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-2H19\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"4b59aae972d047a2a1895ec08623a457\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 900\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 4,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031360a3ae7225341b6a6e797216e8b427b\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-B5M7M\",\r\n \"localId\": \"FH1\",\r\n \"localName\": \"高压进线柜-FH1\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132291303.png\",\r\n \"name\": \"1635132291303\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:5117561\",\r\n \"cADID\": \"FH1:高压进线柜-FH1\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"202354.99,20970.46,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031360a3ae7225341b6a6e797216e8b427b\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-FH1\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"cb3f4e6bfe2347d09445e63ba964ec17\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 1120\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 5,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500313a5e92f45bb3478b893b90b0973bc863\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-5MTRM\",\r\n \"localId\": \"1H2\",\r\n \"localName\": \"高压进线柜-1H2\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132253941.png\",\r\n \"name\": \"1635132253941\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635646\",\r\n \"cADID\": \"1H2:高压进线柜-1H2\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"145819.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500313a5e92f45bb3478b893b90b0973bc863\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-1H2\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"2aa95a057f9142f797feaecc192ca134\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 1340\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 6,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500314c8d3164c6fa470485384077d8738fc3\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-TC521\",\r\n \"localId\": \"1H23\",\r\n \"localName\": \"高压进线柜-1H23\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132286764.png\",\r\n \"name\": \"1635132286764\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635855\",\r\n \"cADID\": \"1H23:高压进线柜-1H23\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"143964.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500314c8d3164c6fa470485384077d8738fc3\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-1H23\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"2dbc3d0ce0544a209bc8261eed9abd7a\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 1560\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 7,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500314ec806ac3b2a4fdc9cf22334bc457fb0\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-H7JJN\",\r\n \"localId\": \"HH1\",\r\n \"localName\": \"高压进线柜-HH1\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132249268.png\",\r\n \"name\": \"1635132249268\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:5115971\",\r\n \"cADID\": \"HH1:高压进线柜-HH1\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"11854.99,22970.46,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500314ec806ac3b2a4fdc9cf22334bc457fb0\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-HH1\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"5437992a7e464037b07e7903d2182325\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 1780\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 8,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500315022681c90c344f6b75a7794616395c8\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-47F7S\",\r\n \"localId\": \"AH2\",\r\n \"localName\": \"高压进线柜-AH1B2\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132244493.png\",\r\n \"name\": \"1635132244493\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB3:4730856\",\r\n \"cADID\": \"AH2\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl11010500315ee406c45c4e4d46b775226827244cd2\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"102500.52,62440.88,-13050.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500315022681c90c344f6b75a7794616395c8\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-AH1B2\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"70fa41c245ca4e1a8b12ab7bf342c4ae\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 2000\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 9,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003171843bb0cc4b4ff58550784064b2eb26\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-YBZDL\",\r\n \"localId\": \"1H24\",\r\n \"localName\": \"高压进线柜-1H24\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132282069.png\",\r\n \"name\": \"1635132282069\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:5007513\",\r\n \"cADID\": \"1H24:高压进线柜-1H24\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"143164.32,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003171843bb0cc4b4ff58550784064b2eb26\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-1H24\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"d590beead9484b75b2af469795f0dbbc\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 2220\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 10,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003172b0ab44271d4525977da7338a3e5638\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-LSNS5\",\r\n \"localId\": \"DH2\",\r\n \"localName\": \"高压进线柜-DH2\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132310116.png\",\r\n \"name\": \"1635132310116\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB1:4417594\",\r\n \"cADID\": \"DH2\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl110105003188e36af7c6af4eaba983676d15ba3e66\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"92175.0,85000.01,-3950.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003172b0ab44271d4525977da7338a3e5638\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-DH2\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"3ffaa645614346e79aa57fa2839628b9\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 2440\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 11,\r\n \"dataObject\": {\r\n \"id\": \"Eq110105003173a0b6e5f07943d19387d0eb8d9ca940\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-XFFVD\",\r\n \"localId\": \"HH2\",\r\n \"localName\": \"高压进线柜-HH2\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132277703.png\",\r\n \"name\": \"1635132277703\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:5115775\",\r\n \"cADID\": \"HH2:高压进线柜-HH2\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"11854.99,25650.47,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq110105003173a0b6e5f07943d19387d0eb8d9ca940\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-HH2\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"cb07e219a7734b7c8fb66cf764a1e7a3\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 2660\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 12,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500318b8cc19131fa4b399b83ece89e878b8d\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-U4FW7\",\r\n \"localId\": \"2H2\",\r\n \"localName\": \"高压进线柜-2H2\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132273141.png\",\r\n \"name\": \"1635132273141\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635730\",\r\n \"cADID\": \"2H2:高压进线柜-2H2\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"156219.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500318b8cc19131fa4b399b83ece89e878b8d\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-2H2\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"86c11f2c2db84b97b30bca3dc94249e4\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 2880\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 13,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500318c798d0a9b3346609f6ad78ca9e214ff\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-KC4YT\",\r\n \"localId\": \"BH1\",\r\n \"localName\": \"高压进线柜-BH1\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132239509.png\",\r\n \"name\": \"1635132239509\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB3:4730812\",\r\n \"cADID\": \"BH1\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl11010500315ee406c45c4e4d46b775226827244cd2\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"102500.52,66590.44,-13050.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500318c798d0a9b3346609f6ad78ca9e214ff\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-BH1\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"8fd33aee24074b2287cfaf937257a2a4\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 3100\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 14,\r\n \"dataObject\": {\r\n \"id\": \"Eq11010500319d02f904f8ce404ab530faf52a0cd4e3\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-55QZ7\",\r\n \"localId\": \"BH2\",\r\n \"localName\": \"高压进线柜-BH2\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132234703.png\",\r\n \"name\": \"1635132234703\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB3:4730731\",\r\n \"cADID\": \"BH2\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl11010500315ee406c45c4e4d46b775226827244cd2\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"102500.52,69274.44,-13050.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq11010500319d02f904f8ce404ab530faf52a0cd4e3\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-BH2\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"694608a529cf401495ee7cf797f01ff3\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 3320\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 15,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031a169757a08784e98aa44203776863ee3\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-B017U\",\r\n \"localId\": \"FH2\",\r\n \"localName\": \"高压进线柜-FH2\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132268632.png\",\r\n \"name\": \"1635132268632\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:5117560\",\r\n \"cADID\": \"FH2:高压进线柜-FH2\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"202354.99,25150.47,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031a169757a08784e98aa44203776863ee3\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-FH2\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"ab01f1ee3187422eb8a5e60d35939883\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 3540\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 16,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031b68efd24347942a099bb293af437c833\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-Q4PSZ\",\r\n \"localId\": \"AH1\",\r\n \"localName\": \"高压进线柜-AH1\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132230016.png\",\r\n \"name\": \"1635132230016\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB3:4801863\",\r\n \"cADID\": \"AH1\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl11010500315ee406c45c4e4d46b775226827244cd2\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"119398.08,62626.29,-13050.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031b68efd24347942a099bb293af437c833\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-AH1\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"15501595a6df42a08c604380d1c359c3\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 3760\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 17,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031bc2a4974e0ba4b868fe3f06a75ee2ede\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-ZHHKW\",\r\n \"localId\": \"2H20\",\r\n \"localName\": \"高压进线柜-2H20\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132262887.png\",\r\n \"name\": \"1635132262887\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:5007538\",\r\n \"cADID\": \"2H20:高压进线柜-2H20\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"154839.49,10225.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031bc2a4974e0ba4b868fe3f06a75ee2ede\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-2H20\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"5ddcfd43ce2d4e74bf7fce07af2fcb27\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 3980\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 18,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031d9845e17932748d691ac24b5a01d4734\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-6V6HV\",\r\n \"localId\": \"2H1\",\r\n \"localName\": \"高压进线柜-2H1\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132258323.png\",\r\n \"name\": \"1635132258323\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB2:4635729\",\r\n \"cADID\": \"2H1:高压进线柜-2H1\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl1101050031e763f95cad5748cd9a62665904282543\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"155419.49,14675.0,-8450.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031d9845e17932748d691ac24b5a01d4734\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-2H1\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n },\r\n {\r\n \"id\": \"aad7571303b940b3b42c582ee827b9ea\",\r\n \"name\": null,\r\n \"compType\": \"equipmentNode\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 20,\r\n \"y\": 4200\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"containerId\": \"BH2\",\r\n \"layoutIndex\": 19,\r\n \"dataObject\": {\r\n \"id\": \"Eq1101050031f5fa354d412c4d919168dd1561c1ea7c\",\r\n \"valid\": 1,\r\n \"creationTime\": 1636604886000,\r\n \"creator\": \"0\",\r\n \"projectId\": \"Pj1101050031\",\r\n \"name\": \"高压进线柜-BVM6C\",\r\n \"localId\": \"DH1\",\r\n \"localName\": \"高压进线柜-DH1\",\r\n \"objType\": \"equipment\",\r\n \"classCode\": \"SETDHI\",\r\n \"groupCode\": \"YT\",\r\n \"grouping\": 1,\r\n \"createApp\": \"datacenter\",\r\n \"updateApp\": \"datacenter\",\r\n \"pic\": [\r\n {\r\n \"key\": \"1635132305189.png\",\r\n \"name\": \"1635132305189\",\r\n \"type\": \"image\",\r\n \"systemId\": \"dataPlatform\",\r\n \"createTime\": \"2021-08-12 14:05:12\"\r\n }\r\n ],\r\n \"bimId\": \"Pj110105003154bde233e08311ebad193735987ad77eB1:4426421\",\r\n \"cADID\": \"DH1\",\r\n \"ratedI\": 1000,\r\n \"ratedU\": 10,\r\n \"floorId\": \"Fl110105003188e36af7c6af4eaba983676d15ba3e66\",\r\n \"buildingId\": \"Bd1101050031055f11181e4b40efb7ca6f684d685216\",\r\n \"bimLocation\": \"96625.0,85000.01,-3950.0\",\r\n \"manufacturer\": \"杭州杭开电气有限公司\",\r\n \"specification\": \"KYN28-12\",\r\n \"installLocation\": \"高压总配电室\"\r\n },\r\n \"objId\": \"Eq1101050031f5fa354d412c4d919168dd1561c1ea7c\",\r\n \"objClassCode\": \"SETDHI\",\r\n \"legendId\": \"0792d39d0ce443199d14bcd9ec3d3ff5\",\r\n \"label\": {\r\n \"id\": null,\r\n \"name\": null,\r\n \"compType\": \"label\",\r\n \"position\": null,\r\n \"location\": {\r\n \"x\": 10,\r\n \"y\": 10\r\n },\r\n \"size\": null,\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"content\": \"高压进线柜-DH1\",\r\n \"style\": null\r\n },\r\n \"anchorLocations\": {\r\n \"B3\": {\r\n \"x\": 48,\r\n \"y\": 200\r\n },\r\n \"T3\": {\r\n \"x\": 48,\r\n \"y\": 0\r\n }\r\n }\r\n }\r\n ],\r\n \"layout\": {\r\n \"layout\": 1,\r\n \"align\": 0,\r\n \"valign\": 0,\r\n \"marginTop\": 20,\r\n \"marginRight\": 20,\r\n \"marginBottom\": 20,\r\n \"marginLeft\": 20,\r\n \"spaceH\": 20,\r\n \"spaceV\": 20\r\n },\r\n \"equipmentTypes\": [\r\n \"SETDHI\"\r\n ],\r\n \"remark\": null,\r\n \"dataFilter\": null,\r\n \"equipPack\": null,\r\n \"dynGroup\": null,\r\n \"groupLabel\": null\r\n },\r\n {\r\n \"id\": \"BH1\",\r\n \"name\": \"2#进线隔离及PT柜\",\r\n \"compType\": \"container\",\r\n \"position\": {\r\n \"minW\": 100,\r\n \"minH\": 200,\r\n \"paddingTop\": 0,\r\n \"paddingRight\": 0,\r\n \"paddingBottom\": 0,\r\n \"paddingLeft\": 0,\r\n \"absolute\": false,\r\n \"absolutePoint\": null\r\n },\r\n \"location\": {\r\n \"x\": 4540,\r\n \"y\": 20\r\n },\r\n \"size\": {\r\n \"x\": 100,\r\n \"y\": 200\r\n },\r\n \"hidden\": false,\r\n \"props\": null,\r\n \"children\": [\r\n\r\n ],\r\n \"layout\": {\r\n \"layout\": 1,\r\n \"align\": 0,\r\n \"valign\": 0,\r\n \"marginTop\": 20,\r\n \"marginRight\": 20,\r\n \"marginBottom\": 20,\r\n \"marginLeft\": 20,\r\n \"spaceH\": 20,\r\n \"spaceV\": 20\r\n },\r\n \"equipmentTypes\": [\r\n \"SETDHI\"\r\n ],\r\n \"remark\": null,\r\n \"dataFilter\": null,\r\n \"equipPack\": null,\r\n \"dynGroup\": null,\r\n \"groupLabel\": null\r\n }\r\n ],\r\n \"layout\": {\r\n \"layout\": 2,\r\n \"align\": 0,\r\n \"valign\": 0,\r\n \"marginTop\": 20,\r\n \"marginRight\": 20,\r\n \"marginBottom\": 20,\r\n \"marginLeft\": 20,\r\n \"spaceH\": 20,\r\n \"spaceV\": 20\r\n },\r\n \"equipmentTypes\": null,\r\n \"remark\": null,\r\n \"dataFilter\": null,\r\n \"equipPack\": null,\r\n \"dynGroup\": null,\r\n \"groupLabel\": null\r\n },\r\n \"scatteredContainers\": null,\r\n \"mainPipes\": [\r\n {\r\n \"id\": \"362a40b011b143e7aa2b31d075523f37\",\r\n \"name\": \"1#高压供电母线\",\r\n \"lineStyle\": null,\r\n \"label\": null,\r\n \"dataObject\": null,\r\n \"dataObjectId\": null,\r\n \"remark\": null,\r\n \"pipeType\": null,\r\n \"passbyRels\": [\r\n \"HUDistribution/Normal\"\r\n ],\r\n \"connectEquips\": [\r\n \"SETDHF\",\r\n \"SETDHP\",\r\n \"SETDSM\",\r\n \"SETDSA\"\r\n ],\r\n \"equipmentTypes\": [\r\n \"SETDBB\"\r\n ],\r\n \"bindEquipment\": true,\r\n \"dataFilter\": null,\r\n \"path\": [\r\n [\r\n {\r\n \"containerId\": \"AH3\",\r\n \"refPointName\": \"tl\",\r\n \"offset\": {\r\n \"x\": 0,\r\n \"y\": -9\r\n }\r\n },\r\n {\r\n \"containerId\": \"AH6\",\r\n \"refPointName\": \"tr\",\r\n \"offset\": {\r\n \"x\": 0,\r\n \"y\": -9\r\n }\r\n }\r\n ]\r\n ],\r\n \"locationPath\": [\r\n [\r\n {\r\n \"x\": 260,\r\n \"y\": 11\r\n },\r\n {\r\n \"x\": 3960,\r\n \"y\": 11\r\n }\r\n ]\r\n ]\r\n },\r\n {\r\n \"id\": \"a14767ed0e81444e8b5d683b92acb86c\",\r\n \"name\": \"1#高压进线母线\",\r\n \"lineStyle\": null,\r\n \"label\": null,\r\n \"dataObject\": null,\r\n \"dataObjectId\": null,\r\n \"remark\": null,\r\n \"pipeType\": null,\r\n \"passbyRels\": [\r\n \"HUDistribution/Normal\"\r\n ],\r\n \"connectEquips\": [\r\n \"SETDHI\"\r\n ],\r\n \"equipmentTypes\": [\r\n \"SETDBB\"\r\n ],\r\n \"bindEquipment\": true,\r\n \"dataFilter\": null,\r\n \"path\": [\r\n [\r\n {\r\n \"containerId\": \"AH1\",\r\n \"refPointName\": \"tl\",\r\n \"offset\": {\r\n \"x\": 0,\r\n \"y\": -7\r\n }\r\n },\r\n {\r\n \"containerId\": \"AH2\",\r\n \"refPointName\": \"tr\",\r\n \"offset\": {\r\n \"x\": -1,\r\n \"y\": -7\r\n }\r\n }\r\n ]\r\n ],\r\n \"locationPath\": [\r\n [\r\n {\r\n \"x\": 20,\r\n \"y\": 13\r\n },\r\n {\r\n \"x\": 239,\r\n \"y\": 13\r\n }\r\n ]\r\n ]\r\n },\r\n {\r\n \"id\": \"7c34073fa7e04009a4b483712f92ac04\",\r\n \"name\": \"2#高压进线母线\",\r\n \"lineStyle\": null,\r\n \"label\": null,\r\n \"dataObject\": null,\r\n \"dataObjectId\": null,\r\n \"remark\": null,\r\n \"pipeType\": null,\r\n \"passbyRels\": [\r\n \"HUDistribution/Normal\"\r\n ],\r\n \"connectEquips\": [\r\n \"SETDHI\"\r\n ],\r\n \"equipmentTypes\": [\r\n \"SETDBB\"\r\n ],\r\n \"bindEquipment\": false,\r\n \"dataFilter\": null,\r\n \"path\": [\r\n [\r\n {\r\n \"containerId\": \"BH1\",\r\n \"refPointName\": \"tr\",\r\n \"offset\": {\r\n \"x\": 0,\r\n \"y\": -8\r\n }\r\n },\r\n {\r\n \"containerId\": \"BH2\",\r\n \"refPointName\": \"tl\",\r\n \"offset\": {\r\n \"x\": -3,\r\n \"y\": -8\r\n }\r\n }\r\n ]\r\n ],\r\n \"locationPath\": [\r\n [\r\n {\r\n \"x\": 4640,\r\n \"y\": 12\r\n },\r\n {\r\n \"x\": 4377,\r\n \"y\": 12\r\n }\r\n ]\r\n ]\r\n },\r\n {\r\n \"id\": \"b72761db04c94ee795457edbcfd744d4\",\r\n \"name\": null,\r\n \"lineStyle\": null,\r\n \"label\": null,\r\n \"dataObject\": null,\r\n \"dataObjectId\": null,\r\n \"remark\": null,\r\n \"pipeType\": null,\r\n \"passbyRels\": null,\r\n \"connectEquips\": null,\r\n \"equipmentTypes\": null,\r\n \"bindEquipment\": false,\r\n \"dataFilter\": null,\r\n \"path\": [\r\n [\r\n {\r\n \"containerId\": \"BH2\",\r\n \"refPointName\": \"B2\",\r\n \"offset\": {\r\n \"x\": -1,\r\n \"y\": 0\r\n }\r\n },\r\n {\r\n \"containerId\": \"BH2\",\r\n \"refPointName\": \"B2\",\r\n \"offset\": {\r\n \"x\": -1,\r\n \"y\": 14\r\n }\r\n },\r\n {\r\n \"containerId\": \"BH3\",\r\n \"refPointName\": \"B3\",\r\n \"offset\": {\r\n \"x\": 12,\r\n \"y\": 14\r\n }\r\n },\r\n {\r\n \"containerId\": \"BH3\",\r\n \"refPointName\": \"T3\",\r\n \"offset\": {\r\n \"x\": 12,\r\n \"y\": -6\r\n }\r\n }\r\n ]\r\n ],\r\n \"locationPath\": [\r\n [\r\n {\r\n \"x\": 4449,\r\n \"y\": 4440\r\n },\r\n {\r\n \"x\": 4449,\r\n \"y\": 4454\r\n },\r\n {\r\n \"x\": 4337,\r\n \"y\": 934\r\n },\r\n {\r\n \"x\": 4337,\r\n \"y\": 14\r\n }\r\n ]\r\n ]\r\n },\r\n {\r\n \"id\": \"7cef04d672d24d9e93cf774067828654\",\r\n \"name\": \"2#高压供电母线\",\r\n \"lineStyle\": null,\r\n \"label\": null,\r\n \"dataObject\": null,\r\n \"dataObjectId\": null,\r\n \"remark\": null,\r\n \"pipeType\": null,\r\n \"passbyRels\": [\r\n \"HUDistribution/Normal\"\r\n ],\r\n \"connectEquips\": [\r\n \"SETDHF\",\r\n \"SETDHP\",\r\n \"SETDHM\",\r\n \"SETDSA\",\r\n \"SETDSM\"\r\n ],\r\n \"equipmentTypes\": [\r\n \"SETDBB\"\r\n ],\r\n \"bindEquipment\": false,\r\n \"dataFilter\": null,\r\n \"path\": [\r\n [\r\n {\r\n \"containerId\": \"BH3\",\r\n \"refPointName\": \"tr\",\r\n \"offset\": {\r\n \"x\": 1,\r\n \"y\": -7\r\n }\r\n },\r\n {\r\n \"containerId\": \"BH5\",\r\n \"refPointName\": \"tl\",\r\n \"offset\": {\r\n \"x\": 0,\r\n \"y\": -7\r\n }\r\n }\r\n ]\r\n ],\r\n \"locationPath\": [\r\n [\r\n {\r\n \"x\": 4361,\r\n \"y\": 13\r\n },\r\n {\r\n \"x\": 3980,\r\n \"y\": 13\r\n }\r\n ]\r\n ]\r\n },\r\n {\r\n \"id\": \"fe797a12aefb44e4b72e65dcb60c997f\",\r\n \"name\": \"1#高压联络母线\",\r\n \"lineStyle\": null,\r\n \"label\": null,\r\n \"dataObject\": null,\r\n \"dataObjectId\": null,\r\n \"remark\": \"这根母线是由互备连接关系引出的,两边连接的一个是高压分段主柜,另一端连接的是另外一个柜子里面的母线。高压分段辅柜现在很少出现了\",\r\n \"pipeType\": null,\r\n \"passbyRels\": [\r\n \"HUDistribution/Backup\"\r\n ],\r\n \"connectEquips\": [\r\n \"SETDSA\",\r\n \"SETDSM\"\r\n ],\r\n \"equipmentTypes\": [\r\n \"SETDBB\"\r\n ],\r\n \"bindEquipment\": false,\r\n \"dataFilter\": null,\r\n \"path\": [\r\n [\r\n {\r\n \"containerId\": \"AH6\",\r\n \"refPointName\": \"B2\",\r\n \"offset\": {\r\n \"x\": 0,\r\n \"y\": 3\r\n }\r\n },\r\n {\r\n \"containerId\": \"AH6\",\r\n \"refPointName\": \"B2\",\r\n \"offset\": {\r\n \"x\": 0,\r\n \"y\": 14\r\n }\r\n },\r\n {\r\n \"containerId\": \"AH6\",\r\n \"refPointName\": \"br\",\r\n \"offset\": {\r\n \"x\": 10,\r\n \"y\": 14\r\n }\r\n },\r\n {\r\n \"containerId\": \"AH6\",\r\n \"refPointName\": \"tr\",\r\n \"offset\": {\r\n \"x\": 10,\r\n \"y\": -12\r\n }\r\n },\r\n {\r\n \"containerId\": \"BH4\",\r\n \"refPointName\": \"T1\",\r\n \"offset\": {\r\n \"x\": 9,\r\n \"y\": -12\r\n }\r\n },\r\n {\r\n \"containerId\": \"BH4\",\r\n \"refPointName\": \"T1\",\r\n \"offset\": {\r\n \"x\": 9,\r\n \"y\": -7\r\n }\r\n }\r\n ]\r\n ],\r\n \"locationPath\": [\r\n [\r\n {\r\n \"x\": 3890,\r\n \"y\": 923\r\n },\r\n {\r\n \"x\": 3890,\r\n \"y\": 934\r\n },\r\n {\r\n \"x\": 3970,\r\n \"y\": 934\r\n },\r\n {\r\n \"x\": 3970,\r\n \"y\": 8\r\n },\r\n {\r\n \"x\": 4134,\r\n \"y\": 8\r\n },\r\n {\r\n \"x\": 4134,\r\n \"y\": 13\r\n }\r\n ]\r\n ]\r\n },\r\n {\r\n \"id\": \"74926f917a754d129f2f166114f0e0c7\",\r\n \"name\": null,\r\n \"lineStyle\": null,\r\n \"label\": null,\r\n \"dataObject\": null,\r\n \"dataObjectId\": null,\r\n \"remark\": null,\r\n \"pipeType\": null,\r\n \"passbyRels\": null,\r\n \"connectEquips\": null,\r\n \"equipmentTypes\": null,\r\n \"bindEquipment\": false,\r\n \"dataFilter\": null,\r\n \"path\": [\r\n [\r\n {\r\n \"containerId\": \"AH5\",\r\n \"refPointName\": \"B2\",\r\n \"offset\": {\r\n \"x\": -1,\r\n \"y\": -2\r\n }\r\n },\r\n {\r\n \"containerId\": \"AH5\",\r\n \"refPointName\": \"B2\",\r\n \"offset\": {\r\n \"x\": -1,\r\n \"y\": 52\r\n }\r\n }\r\n ]\r\n ],\r\n \"locationPath\": [\r\n [\r\n {\r\n \"x\": 449,\r\n \"y\": 258\r\n },\r\n {\r\n \"x\": 449,\r\n \"y\": 312\r\n }\r\n ]\r\n ]\r\n },\r\n {\r\n \"id\": \"91a9a5486f574689ae1b41092a016353\",\r\n \"name\": null,\r\n \"lineStyle\": null,\r\n \"label\": null,\r\n \"dataObject\": null,\r\n \"dataObjectId\": null,\r\n \"remark\": null,\r\n \"pipeType\": null,\r\n \"passbyRels\": null,\r\n \"connectEquips\": null,\r\n \"equipmentTypes\": null,\r\n \"bindEquipment\": false,\r\n \"dataFilter\": null,\r\n \"path\": [\r\n [\r\n {\r\n \"containerId\": \"AH4\",\r\n \"refPointName\": \"B2\",\r\n \"offset\": {\r\n \"x\": 0,\r\n \"y\": 1\r\n }\r\n },\r\n {\r\n \"containerId\": \"AH4\",\r\n \"refPointName\": \"B2\",\r\n \"offset\": {\r\n \"x\": 0,\r\n \"y\": 52\r\n }\r\n }\r\n ]\r\n ],\r\n \"locationPath\": [\r\n [\r\n {\r\n \"x\": 2170,\r\n \"y\": 261\r\n },\r\n {\r\n \"x\": 2170,\r\n \"y\": 312\r\n }\r\n ]\r\n ]\r\n }\r\n ]\r\n }\r\n }\r\n };\r\n }\r\n\r\n\r\n /**\r\n * 更新系统图状态\r\n * @param _paramObj {id:'系统图ID',state:'系统图状态'}\r\n */\r\n static async updateSysGraphState(_paramObj: any) {\r\n var url = '/diagram/update/state';\r\n var resultObj = await this.sysGraphHttpUtilsInstance.postRequest(url, _paramObj);\r\n return resultObj;\r\n }\r\n\r\n /**\r\n * 删除系统图\r\n * @param id 系统图ID\r\n */\r\n static async delSysGraph(id: string) {\r\n var resultObj = await this.updateSysGraphState({ id: id, state: graphStateEnum.Recyle });\r\n return resultObj;\r\n }\r\n\r\n /**\r\n * 上架系统图\r\n * @param id 系统图ID\r\n */\r\n static async publishSysGraph(id: string) {\r\n var resultObj = await this.updateSysGraphState({ id: id, state: graphStateEnum.Publish });\r\n return resultObj;\r\n }\r\n\r\n /**\r\n * 下架系统图\r\n * @param id 系统图ID\r\n */\r\n static async draftGraph(id: string) {\r\n var resultObj = await this.updateSysGraphState({ id: id, state: graphStateEnum.Draft });\r\n return resultObj;\r\n }\r\n\r\n /**\r\n * 打开系统图新增、预览、编辑页面\r\n * @param state 打开新页面时的状态,0 预览; 1 编辑; 2 新建\r\n * @param diagramId 系统图ID\r\n * @param groupCode 集团编码\r\n * @param projectId 项目ID\r\n * @param projectName 项目名称\r\n * @param baseUrl 根路径\r\n * @param isOpenTarget 是否打开新页面\r\n */\r\n static openGraphPage(state: number, diagramId: string, groupCode: string, projectId: string, projectName: string, baseUrl: string, isOpenTarget: boolean) {\r\n var url = \"/\" +\r\n baseUrl +\r\n logicConfig.routerNameConfig.systemGraphEditName +\r\n \"?ost=\" +\r\n state +\r\n \"&did=\" +\r\n (diagramId || \"\") +\r\n '&gc=' + (groupCode || '') +\r\n '&pri=' + (projectId || '') +\r\n '&prn=' + encodeURIComponent(projectName || '');\r\n isOpenTarget === true ? window.open(url) : window.location.href = url;\r\n }\r\n\r\n}","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./uploadFiles.vue?vue&type=style&index=0&lang=less&\"","import { baseHttpUtils } from \"@/utils/http/baseHttpUtils\";\r\nimport { dict_pre } from \"./preTypes\";\r\nclass Dic {\r\n static http = new baseHttpUtils();\r\n\r\n /**\r\n * @description: all - 查询数据字典 --列表表头 api/dict\r\n * @param {*} params\r\n * @return {*}\r\n */\r\n static async getDataDictionary(params, fn) {\r\n const res = await Dic.http.postRequest(`/datacenter/dict/query`, params);\r\n return fn ? fn(res) : res;\r\n }\r\n\r\n /**\r\n * @description: 统计-根据条件统计返回信息点\r\n * @param {*} params\r\n * @return {*}\r\n */\r\n static async deliveredInfos(params, fn) {\r\n const res = await Dic.http.postRequest(\r\n \"/equip-component/dict/delivered/infos\",\r\n params\r\n );\r\n return fn ? fn(res) : res;\r\n }\r\n /**\r\n * 字典-项目下已有的设备类型带系统\r\n * @param params\r\n * @returns\r\n */\r\n static async getEquipLkSys(params) {\r\n return await Dic.http.postRequest(\r\n dict_pre + \"/system/equip/category\",\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * @description: 头部信息查询(查询所有设备类型-所有部件类型-所有系统类型-所有专业类型)\r\n * @param {*}\r\n * @return {*}\r\n */\r\n static async queryPhysicsAllType(params) {\r\n return await Dic.http.postRequest(\"/datacenter/dict/category\", params);\r\n }\r\n /**\r\n * @description: 设置项目数据字典显隐 --列表表头 api/dict\r\n * @param {*}\r\n * @return {*}\r\n */\r\n static async setDataDictionary(params, fn) {\r\n const res = await Dic.http.postRequest(\r\n dict_pre + \"/setting-dic-project\",\r\n params\r\n );\r\n return fn ? fn(res) : res;\r\n }\r\n}\r\n\r\nexport default Dic;\r\n","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./equipCascader.vue?vue&type=style&index=0&lang=less&\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cruxDialog.vue?vue&type=style&index=0&id=7b362ad8&scoped=true&lang=less&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./uploadFiles.vue?vue&type=style&index=0&lang=less&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./addBuild.vue?vue&type=style&index=0&id=0842a1a5&lang=less&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./detailsDia.vue?vue&type=style&index=0&id=5c3bfa7c&lang=less&scoped=true&\"","/**\r\n * 工具类\r\n * nh 2021.12.23\r\n */\r\n\r\nexport class toolUtils {\r\n /**\r\n * 拼接完整的http请求地址\r\n * @param baseUrl 根域名地址\r\n * @param interfaceUrl 接口地址\r\n * @returns string 完整的http请求地址\r\n */\r\n static getBaseHttpUrl(baseUrl: string, interfaceUrl: string) {\r\n baseUrl =\r\n baseUrl + (baseUrl.lastIndexOf(\"/\") == baseUrl.length - 1 ? \"\" : \"/\");\r\n\r\n var _index = interfaceUrl.indexOf(\"/\") == 0 ? 1 : 0;\r\n interfaceUrl = interfaceUrl.substring(_index);\r\n return baseUrl + interfaceUrl;\r\n }\r\n static returnNewObj(data, arr, val) {\r\n if (arr.length > 1) {\r\n let k = arr.shift();\r\n if (!data[k]) {\r\n data[k] = {};\r\n }\r\n this.returnNewObj(data[k], arr, val);\r\n } else {\r\n let curk = arr[0];\r\n data[curk] = val;\r\n }\r\n }\r\n static rKeyStrVal(key?, val?) {\r\n let nk = key,\r\n arr = [];\r\n if (val instanceof Object && !(val instanceof Array)) {\r\n // for(let k in )\r\n return nk + \".\" + this.rKeyStrVal();\r\n }\r\n return nk;\r\n }\r\n /**\r\n * @param data Object\r\n * @returns 将对象中 key 为a.b.c 转换为a:{b:{c:''}}\r\n */\r\n static formatData(data) {\r\n let newData = JSON.parse(JSON.stringify(data));\r\n for (let key in newData) {\r\n if (key.indexOf(\".\") > -1) {\r\n let arr = key.split(\".\");\r\n this.returnNewObj(newData, arr, newData[key]);\r\n delete newData[key];\r\n }\r\n }\r\n return newData;\r\n }\r\n /**\r\n * @param data {a:{b:{c:{}}}}\r\n *\r\n * @returns a.b.c\r\n *\r\n */\r\n static desFormatData = (data) => {\r\n let newData = {};\r\n for (let key in data) {\r\n if (data[key] instanceof Object && !(data[key] instanceof Array)) {\r\n for (let childK in data[key]) {\r\n let nk = `${key}.${childK}`;\r\n newData[nk] = data[key][childK];\r\n }\r\n } else {\r\n newData[key] = data[key];\r\n }\r\n }\r\n return newData;\r\n };\r\n}\r\n","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./device.vue?vue&type=style&index=1&lang=less&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./staticDialog.vue?vue&type=style&index=0&id=ae04942a&scoped=true&lang=less&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./buildfloorCascader.vue?vue&type=style&index=0&id=11801cf8&lang=less&scoped=true&\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exhibitionEnergy.vue?vue&type=style&index=0&id=ef204720&scoped=true&lang=less&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./addConnectivity.vue?vue&type=style&index=0&id=dd69ca78&lang=less&scoped=true&\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exhibitionMaintain.vue?vue&type=style&index=0&id=552a0238&scoped=true&lang=less&\"","module.exports = __webpack_public_path__ + \"public/img/barController.1b36802b.svg\";","import {logicConfig} from '@/logicConfig'\r\n\r\nexport class sessionStore{\r\n\r\n public static get userId(){\r\n return sessionStorage.getItem(logicConfig.tokenKeyName);\r\n }\r\n\r\n public static set userId(val){\r\n sessionStorage.setItem(logicConfig.tokenKeyName, val);\r\n }\r\n\r\n //注销\r\n public static loginOut() { \r\n sessionStorage.clear();\r\n };\r\n}","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pageLeft.vue?vue&type=style&index=0&id=47b1fb96&scoped=true&lang=css&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./formInput.vue?vue&type=style&index=0&lang=less&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pageRight.vue?vue&type=style&index=0&id=74f4f942&scoped=true&lang=css&\"","/**\r\n * 系统图服务的http辅助类,供业务调用\r\n * nh 2022.1.5\r\n */\r\n\r\nimport { httpUtils } from \"./httpUtils\";\r\n\r\nexport class sysGraphHttpUtils extends httpUtils {\r\n constructor() {\r\n super((window as any).__systemConf.sysGraphServiceUrl);\r\n };\r\n}","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./title.vue?vue&type=style&index=0&id=52623b38&lang=less&scoped=true&\"","/**\r\n * 基础数据访问的http辅助类,供业务调用\r\n * nh 2021.12.23\r\n */\r\n\r\nimport { httpUtils } from \"./httpUtils\";\r\n\r\nexport class baseHttpUtils extends httpUtils {\r\n constructor() {\r\n super((window as any).__systemConf.baseServiceUrl);\r\n };\r\n}","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./myPagination.vue?vue&type=style&index=0&lang=css&\"","module.exports = __webpack_public_path__ + \"public/img/fontStyle.a57fbf8b.svg\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=style&index=0&id=568bc516&scoped=true&lang=css&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./setScaleDialog.vue?vue&type=style&index=0&id=031cf93c&lang=less&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./detailsDia.vue?vue&type=style&index=0&id=e9065004&scoped=true&lang=css&\"","export const datacenter_pre = \"/datacenter\";\r\nexport const dict_pre = `${datacenter_pre}/dict`;\r\nexport const object_pre = `${datacenter_pre}/object`;\r\nexport const rwd_pre = \"/rwd\";\r\n\r\nexport const equipcomponent_pre = \"/equip-component\";\r\nexport const equipquery_pre = `${equipcomponent_pre}/equip-query`;\r\nexport const equipcomponentdic_pre = `${equipcomponent_pre}/dict`;\r\n\r\nexport const graphhic_pre = `${datacenter_pre}/graphic`;\r\n\r\nexport const floor_pre = `${object_pre}/floor`;\r\n\r\nexport const model_pre = \"/revit-algorithm\";\r\n","/**\r\n * 存放代码中用到的一些全局变量名称之类的配置\r\n * nh 2021.12.23\r\n */\r\nexport class logicConfig {\r\n //在sessionStorage中存放用户ID的值的key的名称\r\n private static _tokenKeyName = 'tokenId';\r\n public static get tokenKeyName() {\r\n return this._tokenKeyName;\r\n }\r\n\r\n //路由名称配置\r\n private static _routerNameConfig={\r\n //登录页面路由名称\r\n loginRouteName:'/login',\r\n //系统图编辑器主页面路由名称\r\n systemGraphName:'/systemGraph',\r\n //系统图编辑页面路由名称\r\n systemGraphEditName:'/systemGraphEdit',\r\n // 现场交付工具-> CAD核查图纸管理路由\r\n cadDrawingManageRoute: 'cadDrawingManage'\r\n };\r\n public static get routerNameConfig() {\r\n return this._routerNameConfig;\r\n }\r\n\r\n //后台返回结果中,成功的定义和失败的定义\r\n private static _resultObj = {\r\n success: 'success',\r\n failure: 'failure'\r\n };\r\n public static get resultObj() {\r\n return this._resultObj;\r\n }\r\n}","module.exports = __webpack_public_path__ + \"public/img/editLogo.18652260.svg\";","import vueStore from \"@/store\";\r\nimport { sessionStore } from \"@/store/sessionStore\";\r\nimport { logicConfig } from \"@/logicConfig\";\r\nimport { userController } from \"@/controller/userController\";\r\n\r\nexport class authUtils {\r\n /**\r\n * 路由守卫, 每次路由跳转时验证登录\r\n * @param {*} to\r\n * @param {*} from\r\n * @param {*} next\r\n */\r\n async routerBeforeEach(to, from, next) {\r\n //访问登录页面时直接显示\r\n if (to.path == logicConfig.routerNameConfig.loginRouteName) {\r\n !vueStore.state.fromPath ? vueStore.commit(\"updateFromPath\", \"/\") : \"\";\r\n next();\r\n return;\r\n }\r\n\r\n //如果sessionStore里没有用户ID,说明用户没有登录,此时跳转到登录页\r\n var userId = sessionStore.userId;\r\n if (!userId) {\r\n vueStore.commit(\"updateFromPath\", to.path);\r\n next({ path: logicConfig.routerNameConfig.loginRouteName });\r\n return;\r\n }\r\n\r\n //如果vueStore里存在用户ID,说明已经缓存的有用户信息,不需要再次获取\r\n if (vueStore.state.user.id) {\r\n //更新面包屑数据\r\n vueStore.commit(\"updateBreadcrumbs\", { to: to.path });\r\n return next();\r\n }\r\n\r\n let userControllerInstance = new userController();\r\n let userInfoResult = await userControllerInstance.getUserInfoById();\r\n\r\n if (userInfoResult.result != logicConfig.resultObj.success) {\r\n console.error(\"获取用户信息失败,原因:\" + userInfoResult.reason);\r\n return next({ path: logicConfig.routerNameConfig.loginRouteName });\r\n }\r\n\r\n var _userInfo = (userInfoResult.content[0] || {}) as any;\r\n if (!_userInfo.userId) {\r\n console.error(\"获取用户信息失败,原因:无效的用户ID\");\r\n return next({ path: logicConfig.routerNameConfig.loginRouteName });\r\n }\r\n\r\n vueStore.commit(\"updateUser\", {\r\n id: _userInfo.userId,\r\n name: _userInfo.userName,\r\n });\r\n vueStore.commit(\"updateMenus\", (window as any).__systemConf.menus);\r\n\r\n //更新面包屑数据\r\n vueStore.commit(\"updateBreadcrumbs\", { to: to.path });\r\n\r\n var projects = [];\r\n _userInfo.projects.forEach((_c) => {\r\n projects.push({\r\n id: _c.projectId,\r\n name: _c.projectLocalName,\r\n groupCode: _c.groupCode,\r\n });\r\n });\r\n vueStore.commit(\"updateProjects\", projects);\r\n vueStore.commit(\"layout/setProjects\", projects);\r\n vueStore.commit(\"layout/setprojectId\", projects[0].id);\r\n vueStore.commit(\"updateSelectProject\", projects[0]);\r\n\r\n next();\r\n }\r\n}\r\n","export default [{\r\n \"id\": \"platform\",\r\n \"name\": \"平台管理\",\r\n \"orders\": 1,\r\n \"appId\": \"adm\",\r\n \"url\": \"/platform\",\r\n \"type\": \"menu\",\r\n \"disabled\": true\r\n },\r\n {\r\n \"id\": \"project_manag\",\r\n \"name\": \"项目管理\",\r\n \"orders\": 2,\r\n \"parentId\": \"platform\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/platform/project\",\r\n \"type\": \"menu\",\r\n \"icon\": \"icon-project-o\"\r\n },\r\n {\r\n \"id\": \"personnel_manag\",\r\n \"name\": \"人员管理\",\r\n \"orders\": 3,\r\n \"parentId\": \"platform\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/platform/user\",\r\n \"type\": \"menu\",\r\n \"icon\": \"icon-renyuanguanli\"\r\n },\r\n {\r\n \"id\": \"role_manag\",\r\n \"name\": \"角色管理\",\r\n \"orders\": 4,\r\n \"parentId\": \"platform\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/platform/role\",\r\n \"type\": \"menu\",\r\n \"icon\": \"icon-jiaoseguanli\"\r\n },\r\n {\r\n \"id\": \"ready\",\r\n \"name\": \"前期准备\",\r\n \"orders\": 5,\r\n \"appId\": \"adm\",\r\n \"type\": \"menu\",\r\n \"disabled\": true\r\n },\r\n {\r\n \"id\": \"build_floor\",\r\n \"name\": \"建筑楼层管理\",\r\n \"orders\": 6,\r\n \"parentId\": \"ready\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/ready/buildfloor\",\r\n \"type\": \"menu\",\r\n \"icon\": \"icon-jianzhu\"\r\n },\r\n {\r\n \"id\": \"modelrule\",\r\n \"name\": \"模型识别规则管理\",\r\n \"orders\": 7,\r\n \"parentId\": \"ready\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/ready/modelrule\",\r\n \"type\": \"menu\",\r\n \"icon\": \"icon-jianzhu\"\r\n },\r\n {\r\n \"id\": \"appuser\",\r\n \"name\": \"扫楼App用户管理\",\r\n \"orders\": 8,\r\n \"parentId\": \"ready\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/ready/appuser\",\r\n \"type\": \"menu\",\r\n \"icon\": \"icon-app4\"\r\n },\r\n {\r\n \"id\": \"information\",\r\n \"name\": \"信息收集\",\r\n \"orders\": 9,\r\n \"appId\": \"adm\",\r\n \"type\": \"menu\",\r\n \"disabled\": true\r\n },\r\n {\r\n \"id\": \"model\",\r\n \"name\": \"模型管理\",\r\n \"orders\": 10,\r\n \"parentId\": \"information\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/model\",\r\n \"type\": \"menu\",\r\n \"icon\": \"icon-moxing___\",\r\n \"menuChildrens\": [{\r\n \"id\": \"model_file\",\r\n \"name\": \"模型文件管理\",\r\n \"orders\": 11,\r\n \"parentId\": \"model\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/model/file\",\r\n \"type\": \"menu\"\r\n },\r\n {\r\n \"id\": \"model_report\",\r\n \"name\": \"模型质量报告\",\r\n \"orders\": 12,\r\n \"parentId\": \"model\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/model/report\",\r\n \"type\": \"menu\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"point\",\r\n \"name\": \"系统集成\",\r\n \"orders\": 13,\r\n \"parentId\": \"information\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/point\",\r\n \"type\": \"menu\",\r\n \"icon\": \"icon-xitong\",\r\n \"menuChildrens\": [{\r\n \"id\": \"pointsetting\",\r\n \"name\": \"子系统点位接入\",\r\n \"orders\": 14,\r\n \"parentId\": \"point\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/point/pointsetting\",\r\n \"type\": \"menu\"\r\n },\r\n {\r\n \"id\": \"dynamicdata\",\r\n \"name\": \"配置动参从点位取值\",\r\n \"orders\": 15,\r\n \"parentId\": \"point\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/point/dynamicdata\",\r\n \"type\": \"menu\"\r\n },\r\n {\r\n \"id\": \"report\",\r\n \"name\": \"系统集成成果管理\",\r\n \"orders\": 16,\r\n \"parentId\": \"point\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/point/report\",\r\n \"type\": \"menu\"\r\n },\r\n {\r\n \"id\": \"testing\",\r\n \"name\": \"系统集成监测\",\r\n \"orders\": 17,\r\n \"parentId\": \"point\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/point/testing\",\r\n \"type\": \"menu\"\r\n },\r\n {\r\n \"id\": \"point_tool\",\r\n \"name\": \"系统工具库\",\r\n \"orders\": 18,\r\n \"parentId\": \"point\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/point/tool\",\r\n \"type\": \"menu\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"scanbuilding\",\r\n \"name\": \"扫楼作业\",\r\n \"orders\": 19,\r\n \"parentId\": \"information\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/floor\",\r\n \"type\": \"menu\",\r\n \"icon\": \"icon-shanglou\",\r\n \"menuChildrens\": [{\r\n \"id\": \"floor_task\",\r\n \"name\": \"现场任务管理\",\r\n \"orders\": 20,\r\n \"parentId\": \"scanbuilding\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/floor/task\",\r\n \"type\": \"menu\"\r\n },\r\n {\r\n \"id\": \"floor_data\",\r\n \"name\": \"现场数据整理\",\r\n \"orders\": 21,\r\n \"parentId\": \"scanbuilding\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/floor/data\",\r\n \"type\": \"menu\",\r\n \"menuChildrens\": [{\r\n \"id\": \"floor_plan\",\r\n \"name\": \"位置标签整理\",\r\n \"orders\": 1,\r\n \"parentId\": \"floor_data\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/floor/plan\",\r\n \"type\": \"menu\"\r\n }]\r\n },\r\n {\r\n \"id\": \"abnormalprop\",\r\n \"name\": \"扫楼报告\",\r\n \"orders\": 22,\r\n \"parentId\": \"scanbuilding\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/floor/abnormalprop\",\r\n \"type\": \"menu\"\r\n },\r\n {\r\n \"id\": \"floor_log\",\r\n \"name\": \"扫楼日志查看\",\r\n \"orders\": 23,\r\n \"parentId\": \"scanbuilding\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/floor/log\",\r\n \"type\": \"menu\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"ledger\",\r\n \"name\": \"台账管理\",\r\n \"orders\": 24,\r\n \"parentId\": \"information\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/ledger\",\r\n \"type\": \"menu\",\r\n \"icon\": \"icon-taizhangzhangbushezhi\",\r\n \"menuChildrens\": [{\r\n \"id\": \"equipment\",\r\n \"name\": \"设备台账\",\r\n \"orders\": 25,\r\n \"parentId\": \"ledger\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/ledger/facility\",\r\n \"type\": \"menu\"\r\n },\r\n {\r\n \"id\": \"system\",\r\n \"name\": \"系统台账\",\r\n \"orders\": 26,\r\n \"parentId\": \"ledger\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/ledger/list\",\r\n \"type\": \"menu\"\r\n },\r\n {\r\n \"id\": \"space\",\r\n \"name\": \"业务空间台账\",\r\n \"orders\": 27,\r\n \"parentId\": \"ledger\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/ledger/spacelist\",\r\n \"type\": \"menu\"\r\n },\r\n {\r\n \"id\": \"shaft\",\r\n \"name\": \"竖井台账\",\r\n \"orders\": 28,\r\n \"parentId\": \"ledger\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/ledger/cenotelist\",\r\n \"type\": \"menu\"\r\n },\r\n {\r\n \"id\": \"tenant\",\r\n \"name\": \"租户台账\",\r\n \"orders\": 29,\r\n \"parentId\": \"ledger\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/ledger/rentlist\",\r\n \"type\": \"menu\"\r\n },\r\n {\r\n \"id\": \"datareport\",\r\n \"name\": \"数据质量报告\",\r\n \"orders\": 30,\r\n \"parentId\": \"ledger\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/ledger/datareport\",\r\n \"type\": \"menu\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"relation\",\r\n \"name\": \"关系维护并计算\",\r\n \"orders\": 31,\r\n \"appId\": \"adm\",\r\n \"type\": \"menu\",\r\n \"disabled\": true\r\n },\r\n {\r\n \"id\": \"overview\",\r\n \"name\": \"全部关系总览\",\r\n \"orders\": 32,\r\n \"parentId\": \"relation\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/relation/overview\",\r\n \"type\": \"menu\",\r\n \"icon\": \"icon-jiqixuexi-\"\r\n },\r\n {\r\n \"id\": \"deliver\",\r\n \"name\": \"数据项目化交付\",\r\n \"orders\": 33,\r\n \"appId\": \"adm\",\r\n \"url\": \"/deliver\",\r\n \"type\": \"menu\",\r\n \"disabled\": true\r\n },\r\n {\r\n \"id\": \"synclog\",\r\n \"name\": \"数据同步日志\",\r\n \"orders\": 34,\r\n \"parentId\": \"deliver\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/synclog\",\r\n \"type\": \"menu\",\r\n \"icon\": \"icon-Log\"\r\n },\r\n {\r\n \"id\": \"draw\",\r\n \"name\": \"绘图工具\",\r\n \"orders\": 35,\r\n \"appId\": \"adm\",\r\n \"url\": \"/draw\",\r\n \"type\": \"menu\",\r\n \"disabled\": true\r\n },\r\n {\r\n \"id\": \"topo\",\r\n \"name\": \"拓扑图\",\r\n \"orders\": 36,\r\n \"parentId\": \"draw\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/draw/topo\",\r\n \"type\": \"menu\",\r\n \"icon\": \"icon-topology\"\r\n },\r\n {\r\n \"id\": \"plane\",\r\n \"name\": \"平面图\",\r\n \"orders\": 37,\r\n \"parentId\": \"draw\",\r\n \"appId\": \"adm\",\r\n \"url\": \"/draw/plane\",\r\n \"type\": \"menu\",\r\n \"icon\": \"icon-pingmiantu\"\r\n }\r\n];\r\n","import Handsontable from \"handsontable-pro\"\r\nimport localMenusList from '@/data/old-adm/menus'\r\n\r\nconst tools = {}\r\n\r\nlet arrX = []\r\nlet arrY = []\r\ntools.getPointDetails = (arr) => {\r\n arr.map(item => {\r\n if (item.PointList && item.PointList.length) {\r\n item.PointList.map(em => {\r\n arrX.push(em.X)\r\n arrY.push(em.Y)\r\n })\r\n }\r\n })\r\n}\r\n/**\r\n *\r\n * @param {*} obj 将point标签的x,y进行比对\r\n * @return object 返回数组,其中包括最大值最小值X,Y\r\n */\r\ntools.getPoint = function (obj) {\r\n arrX = []\r\n arrY = []\r\n for (let i in obj) {\r\n tools.getPointDetails(obj[i])\r\n }\r\n let maxX = Math.max.apply(null, arrX)\r\n let minX = Math.min.apply(null, arrX)\r\n let maxY = Math.max.apply(null, arrY)\r\n let minY = Math.min.apply(null, arrY)\r\n let data = {\r\n maxX,\r\n minX,\r\n maxY,\r\n minY\r\n }\r\n return data\r\n}\r\n\r\n/**\r\n *\r\n * @param {*} array 比较数组1\r\n * @param {*} array2 比较数组2\r\n *\r\n * 返回两个数组中不同的元素\r\n */\r\ntools.compareArr = function (array, array2) {\r\n var arr3 = [];\r\n for (key in array) {\r\n var stra = array[key];\r\n var count = 0;\r\n for (var j = 0; j < array2.length; j++) {\r\n var strb = array2[j];\r\n if (stra == strb) {\r\n count++;\r\n }\r\n }\r\n if (count === 0) { //表示数组1的这个值没有重复的,放到arr3列表中\r\n arr3.push(stra);\r\n }\r\n }\r\n return arr3;\r\n}\r\n\r\n/**\r\n *\r\n * @param {*} arr 需要改变的数组\r\n * @param {*} k 其中Y值需要变换的倍数\r\n * @param {*} name arr中的key值\r\n *\r\n * 返回arr map 后arr[mapIndex]name * k 的数组\r\n */\r\ntools.changeMap = function (arr, k, name) {\r\n let data = arr.map(items => {\r\n if (items[name] && items[name].length) {\r\n items[name].map(children => {\r\n if (Array.isArray(children)) {\r\n return children.map(res => {\r\n res.Y = res.Y * k\r\n return res\r\n })\r\n } else {\r\n children.Y = children.Y * k\r\n return children\r\n }\r\n })\r\n }\r\n })\r\n return data\r\n}\r\n\r\ntools.getMouseCanvas = function (view, e) {\r\n let bbox = view.canvasView.getBoundingClientRect();\r\n let x = e.clientX - bbox.left,\r\n y = e.clientY - bbox.top;\r\n return view.mapToScene({\r\n x: x,\r\n y: y\r\n });\r\n}\r\n\r\n/**\r\n *\r\n * @param {*} view graphy class\r\n * @param {*} e mouse元素e\r\n */\r\ntools.mouseInElement = function (view, e, type) {\r\n let mouse = tools.getMouseCanvas(view, e),\r\n falg = false,\r\n items = view.scene.root.children,\r\n i = 0,\r\n t = type || 3;\r\n for (; i < items.length; i++) {\r\n if (items[i].type == t) {\r\n if (items[i].contains(mouse)) {\r\n falg = true\r\n break\r\n }\r\n }\r\n }\r\n return {\r\n falg,\r\n item: items[i] || [],\r\n index: i\r\n }\r\n}\r\n\r\n/**\r\n *\r\n * @param {graphy中的所有children} items\r\n * @param {类型} type\r\n * @param {list} codes\r\n * @param {item中的code} code\r\n */\r\ntools.clear = function (items, type, codes, code) {\r\n let indexArr = [];\r\n if (items && items.length) {\r\n let i = 0;\r\n for (i; i < items.length; i++) {\r\n let j = 0;\r\n for (j; j < codes.length; j++) {\r\n if (items[i][type] = type && items[i][code] == codes[j][code]) {\r\n indexArr.push(i)\r\n }\r\n }\r\n }\r\n }\r\n return indexArr\r\n}\r\n\r\ntools.getText = function (arr, name) {\r\n let text = '';\r\n if (arr && arr.length) {\r\n arr.map(item => {\r\n text += (!!text ? '、' : '') + item[name]\r\n })\r\n }\r\n return text\r\n}\r\n\r\ntools.cutString = function (string, num, text) {\r\n return string.substring(0, num) + '...' + text\r\n}\r\n\r\ntools.deepCopy = function (obj) {\r\n var out = [],\r\n i = 0,\r\n len = obj.length;\r\n for (; i < len; i++) {\r\n if (obj[i] instanceof Array) {\r\n out[i] = tools.deepCopy(obj[i]);\r\n } else out[i] = obj[i];\r\n }\r\n return out;\r\n}\r\n\r\ntools.copyArr = (source) => {\r\n if (!source || typeof source !== 'object') {\r\n throw new Error('error arguments', 'shallowClone');\r\n }\r\n var targetObj = source.constructor === Array ? [] : {};\r\n for (var keys in source) {\r\n if (source.hasOwnProperty(keys)) {\r\n if (source[keys] && typeof source[keys] === 'object') {\r\n targetObj[keys] = source[keys].constructor === Array ? [] : {};\r\n targetObj[keys] = tools.copyArr(source[keys]);\r\n } else {\r\n targetObj[keys] = source[keys];\r\n }\r\n }\r\n }\r\n return targetObj;\r\n}\r\n\r\ntools.deepCopyObj = function (v) {\r\n var o = v.constructor === Array ? [] : {};\r\n for (var key in v) {\r\n o[key] = typeof v[key] === 'Object' ? tools.deepCopyObj(v[key]) : v[key];\r\n }\r\n\r\n return o;\r\n}\r\n\r\ntools.deepClone = (obj) => {\r\n var proto = Object.getPrototypeOf(obj);\r\n return Object.assign({}, Object.create(proto), obj);\r\n}\r\n\r\n//hansontable插件的修改\r\ntools.customDropdownRenderer = function (\r\n instance,\r\n td,\r\n row,\r\n col,\r\n prop,\r\n value,\r\n cellProperties\r\n) {\r\n var selectedId;\r\n var optionsList = cellProperties.chosenOptions.data;\r\n if (\r\n typeof optionsList === \"undefined\" ||\r\n typeof optionsList.length === \"undefined\" ||\r\n !optionsList.length\r\n ) {\r\n Handsontable.renderers.TextRenderer(\r\n instance,\r\n td,\r\n row,\r\n col,\r\n prop,\r\n value,\r\n cellProperties\r\n );\r\n return td;\r\n }\r\n var values = (value + \"\").split(\",\");\r\n value = [];\r\n for (var index = 0; index < optionsList.length; index++) {\r\n if (optionsList[index].content && optionsList[index].content.length) {\r\n for (let i = 0; i < optionsList[index].content.length; i++) {\r\n if (\r\n optionsList[index].content[i] &&\r\n optionsList[index].content[i].length\r\n ) {\r\n for (let j = 0; j < optionsList[index].content[i].length; j++) {\r\n if (\r\n values.indexOf(\r\n optionsList[index].content[i].content[j].Code + \"\"\r\n ) > -1\r\n ) {\r\n selectedId = optionsList[index].content[i].content[j].Code;\r\n value.push(optionsList[index].content[i].content[j].Name);\r\n }\r\n }\r\n } else {\r\n if (\r\n values.indexOf(optionsList[index].content[i].Code + \"\") > -1\r\n ) {\r\n selectedId = optionsList[index].content[i].Code;\r\n value.push(optionsList[index].content[i].Name);\r\n }\r\n }\r\n }\r\n } else {\r\n if (values.indexOf(optionsList[index].Code + \"\") > -1) {\r\n selectedId = optionsList[index].Code;\r\n value.push(optionsList[index].Name);\r\n }\r\n }\r\n }\r\n value = value.join(\", \");\r\n Handsontable.renderers.TextRenderer(\r\n instance,\r\n td,\r\n row,\r\n col,\r\n prop,\r\n value,\r\n cellProperties\r\n );\r\n return td;\r\n}\r\n\r\n//hansontable插件的修改\r\ntools.multipleDropdownRenderer = function (\r\n instance,\r\n td,\r\n row,\r\n col,\r\n prop,\r\n value,\r\n cellProperties\r\n) {\r\n var selectedId;\r\n var optionsList = cellProperties.chosenOptions;\r\n if (\r\n typeof optionsList === \"undefined\" ||\r\n typeof optionsList.length === \"undefined\" ||\r\n !optionsList.length\r\n ) {\r\n Handsontable.renderers.TextRenderer(\r\n instance,\r\n td,\r\n row,\r\n col,\r\n prop,\r\n value,\r\n cellProperties\r\n );\r\n return td;\r\n }\r\n try {\r\n var values = value;\r\n let text = [];\r\n for (var index = 0; index < optionsList.length; index++) {\r\n if (optionsList[index].content && optionsList[index].content.length) {\r\n for (let i = 0; i < optionsList[index].content.length; i++) {\r\n if (\r\n optionsList[index].content[i] &&\r\n optionsList[index].content[i].length\r\n ) {\r\n for (let j = 0; j < optionsList[index].content[i].length; j++) {\r\n if (\r\n values.findIndex((val) => {\r\n return val == optionsList[index].content[i].content[j].Code + \"\"\r\n }) > -1\r\n ) {\r\n selectedId = optionsList[index].content[i].content[j].Code;\r\n text.push(optionsList[index].content[i].content[j].Name);\r\n }\r\n }\r\n } else {\r\n if (\r\n values.findIndex((val) => { return val == optionsList[index].content[i].Code + \"\" }) > -1\r\n ) {\r\n selectedId = optionsList[index].content[i].Code;\r\n text.push(optionsList[index].content[i].Name);\r\n }\r\n }\r\n }\r\n } else {\r\n if (values.findIndex((val) => { return val == optionsList[index].Code + \"\" }) > -1) {\r\n selectedId = optionsList[index].Code;\r\n text.push(optionsList[index].Name);\r\n }\r\n }\r\n }\r\n text = text.join(\",\");\r\n Handsontable.renderers.TextRenderer(\r\n instance,\r\n td,\r\n row,\r\n col,\r\n prop,\r\n text,\r\n cellProperties\r\n );\r\n return td;\r\n } catch (e) {\r\n Handsontable.renderers.TextRenderer(\r\n instance,\r\n td,\r\n row,\r\n col,\r\n prop,\r\n \"\",\r\n cellProperties\r\n );\r\n return td;\r\n }\r\n}\r\n\r\n\r\n//hansontable插件查看详情\r\ntools.lookDetails = function (instance, td, row, col, prop, value, cellProperties) {\r\n td.style.color = \"#409EFF\";\r\n td.style.cursor = \"pointer\";\r\n if (!!value) {\r\n if (typeof (value) == 'object') {\r\n td.innerHTML = \"已有值,查看\";\r\n } else {\r\n td.innerHTML = value\r\n }\r\n } else {\r\n td.innerHTML = \"查看详情\";\r\n }\r\n return td;\r\n}\r\n\r\n//是否关联\r\ntools.hasRelation = function (instance, td, row, col, prop, value, cellProperties) {\r\n if (value) {\r\n td.innerHTML = \"已关联\";\r\n } else {\r\n td.innerHTML = \"未关联\";\r\n }\r\n return td;\r\n}\r\n\r\n//关联的资产\r\ntools.LinkEquipLocalName = function (instance, td, row, col, prop, value, cellProperties) {\r\n if (value) {\r\n td.innerHTML = value == 'null' ? '' : value;\r\n } else {\r\n let html = instance.getDataAtRowProp(row, 'linkEquipName');\r\n td.innerHTML = html == 'null' ? '' : html;\r\n }\r\n return td;\r\n}\r\n\r\ntools.num = function (instance, td, row, col, prop, value, cellProperties) {\r\n td.style.color = \"#409EFF\";\r\n td.style.cursor = \"pointer\";\r\n td.innerHTML = value;\r\n return td;\r\n}\r\n\r\ntools.setItem = (key, value) => {\r\n if (typeof value == 'string') {\r\n localStorage.setItem(key, value);\r\n } else {\r\n localStorage.setItem(key, JSON.stringify(value));\r\n }\r\n}\r\n\r\ntools.getItem = (key) => {\r\n const re = /^\\[|\\{|\\}|\\]$/g //判断字符中是否有[]{}\r\n let getIt = localStorage.getItem(key)\r\n if (re.test(getIt)) {\r\n return JSON.parse(getIt)\r\n } else {\r\n return getIt\r\n }\r\n}\r\n\r\ntools.removeItem = (key) => {\r\n localStorage.removeItem(key)\r\n}\r\n\r\n//取两个数组的差值\r\ntools.differenceArr = (a, b) => {\r\n return a.concat(b).filter(v => !a.includes(v) || !b.includes(v))\r\n}\r\n\r\n//取两个数组的相同值\r\ntools.sameArr = (a, b) => {\r\n return a.filter(v => b.includes(v))\r\n}\r\n\r\ntools.sortArr = (arr, key, sequence) => {\r\n function compare(property) {\r\n return function (a, b) {\r\n var value1 = a[property];\r\n var value2 = b[property];\r\n if (sequence) {\r\n return value1 - value2;\r\n } else {\r\n return value2 - value1\r\n }\r\n }\r\n }\r\n\r\n return arr.sort(compare(key))\r\n}\r\n\r\ntools.pagination = (pageNo, pageSize, array) => {\r\n let offset = (pageNo - 1) * pageSize;\r\n return offset + pageSize >= array.length ?\r\n array.slice(offset, array.length) :\r\n array.slice(offset, offset + pageSize);\r\n}\r\n\r\ntools.getSameItems = (arr1, key1, arr2, key2) => {\r\n let data = []\r\n arr1.map(item => {\r\n arr2.map(child => {\r\n if (item[key1] == child[key2]) {\r\n data.push(item)\r\n }\r\n })\r\n })\r\n return data\r\n}\r\n\r\ntools.isIn = (x, y, json) => {\r\n let nCross = 0,\r\n point = typeof (x) == 'object' ? [x.x, x.y] : [x, y],\r\n APoints = json,\r\n length = APoints.length,\r\n p1, p2, i, xinters;\r\n p1 = APoints[0];\r\n for (i = 1; i <= length; i++) {\r\n p2 = APoints[i % length];\r\n if (\r\n point[0] > Math.min(p1[0], p2[0]) &&\r\n point[0] <= Math.max(p1[0], p2[0])\r\n ) {\r\n if (point[1] <= Math.max(p1[1], p2[1])) {\r\n if (p1[0] != p2[0]) {\r\n //计算位置信息\r\n xinters = (point[0] - p1[0]) * (p2[1] - p1[1]) / (p2[0] - p1[0]) + p1[1];\r\n if (p1[1] == p2[1] || point[1] <= xinters) {\r\n nCross++\r\n }\r\n }\r\n }\r\n }\r\n p1 = p2;\r\n }\r\n if (nCross % 2 == 0) {\r\n return false\r\n } else {\r\n return true\r\n }\r\n\r\n}\r\n\r\ntools.arrayUnique = (arr, name) => {\r\n var hash = {};\r\n return arr.reduce(function (item, next) {\r\n hash[next[name]] ? '' : hash[next[name]] = true && item.push(next);\r\n return item;\r\n }, []);\r\n}\r\n\r\ntools.dateAddYear = function (date, yearCount) {\r\n var tempDate = dateToDate(date);\r\n var count = parseInt(yearCount);\r\n var oldYear = tempDate.getFullYear();\r\n var oldMonth = tempDate.getMonth();\r\n var oldDate = tempDate.getDate();\r\n var newYear = oldYear + count;\r\n var newDate = new Date(newYear, oldMonth, oldDate);\r\n //防止月份数不一致,进行微调\r\n while (newDate.getMonth() != oldMonth) {\r\n oldDate--;\r\n newDate = new Date(newYear, oldMonth, oldDate);\r\n }\r\n var month = newDate.getMonth() + 1;\r\n var day = newDate.getDate();\r\n month = (month.toString().length == 1) ? (\"0\" + month) : month;\r\n day = (day.toString().length == 1) ? (\"0\" + day) : day;\r\n\r\n var result = newDate.getFullYear() + '-' + month + '-' + day; //当前日期\r\n\r\n return result;\r\n}\r\ntools.formatDate = (now) => {\r\n let year = now.getFullYear();\r\n let month = now.getMonth() + 1;\r\n let date = now.getDate();\r\n let hour = now.getHours();\r\n let minute = now.getMinutes();\r\n let second = now.getSeconds();\r\n return year + \"-\" + (month > 10 ? month : '0' + month) + \"-\" + (date > 10 ? date : '0' + date) + \" \" + hour + \":\" + (minute > 10 ? minute : '0' + minute) + \":\" + (second > 10 ? second : '0' + second);\r\n};\r\ntools.formatDataSource = function (data) {\r\n let options\r\n let arr = []\r\n function recursion(data) {\r\n let arr = []\r\n data.map((item) => {\r\n if (item.code && item.name)\r\n arr.push({ Code: item.code, Name: item.name })\r\n if (item.content && item.content.length)\r\n arr = arr.concat(recursion(item.content))\r\n })\r\n return arr\r\n }\r\n try {\r\n if (data instanceof Array) {\r\n options = data\r\n } else {\r\n options = JSON.parse(data)\r\n }\r\n if (options) {\r\n return recursion(options)\r\n } else {\r\n return arr\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n return arr\r\n }\r\n}\r\n\r\ntools.isObjectValueEqual = function (a, b) {//判断两个对象的可枚举属性值是否相等(认为null,\"\",undefinde相等)\r\n //取对象a和b的属性名\r\n var aProps = Object.keys(a)\r\n var bProps = Object.keys(b)\r\n //判断属性名的length是否一致\r\n if (aProps.length != bProps.length) {\r\n return false\r\n }\r\n\r\n //循环取出属性名,再判断属性值是否一致\r\n for (var i = 0; i < aProps.length; i++) {\r\n var propName = aProps[i]\r\n if (!(a[propName] instanceof Object || b[propName] instanceof Object)) {\r\n if (!(a[propName] == b[propName] || (!a[propName] && !b[propName]))) {\r\n return false\r\n }\r\n } else {\r\n if (!tools.isObjectValueEqual(a[propName], b[propName])) {\r\n return false\r\n }\r\n }\r\n }\r\n return true\r\n\r\n}\r\n\r\ntools.dataForKey = function (data, key) {\r\n let arr = key.split(\".\")\r\n if (arr && arr[0]) {\r\n for (let i = 0; i < arr.length; i++) {\r\n if (arr[i] && data[arr[i]]) {\r\n data = data[arr[i]]\r\n } else {\r\n return ''\r\n }\r\n }\r\n return data\r\n }\r\n}\r\n\r\ntools.setDataForKey = function (data, key, value) {\r\n let arr = key.split(\".\")\r\n if (arr && arr[0]) {\r\n for (let i = 0; i < arr.length; i++) {\r\n if (!(arr[i] && data[arr[i]])) {\r\n data[arr[i]] = {}\r\n }\r\n if (value !== undefined) {\r\n if (i == arr.length - 1) {\r\n data[arr[i]] = value\r\n }\r\n } else {\r\n if (i == arr.length - 1) {\r\n data[arr[i]] = ''\r\n }\r\n }\r\n data = data[arr[i]]\r\n }\r\n }\r\n}\r\ntools.flattenKeys = function (obj) {\r\n if (obj == undefined) return\r\n let res = {}\r\n function isObject(val) {\r\n return typeof val === 'object' && !Array.isArray(val)\r\n }\r\n\r\n function digKeys(prev, obj) {\r\n Object.entries(obj).forEach(([key, value]) => {\r\n const currentKey = prev ? `${prev}.${key}` : key\r\n if (isObject(value)) {\r\n digKeys(currentKey, value)\r\n } else {\r\n res[currentKey] = value\r\n }\r\n })\r\n }\r\n\r\n digKeys('', obj)\r\n return res\r\n}\r\nfunction dateToDate(date) {\r\n var sDate = new Date();\r\n if (typeof date == 'object' && typeof new Date().getMonth == \"function\") {\r\n sDate = date;\r\n } else if (typeof date == \"string\") {\r\n var arr = date.split('-');\r\n if (arr.length == 3) {\r\n sDate = new Date(arr[0] + '-' + arr[1] + '-' + arr[2]);\r\n }\r\n }\r\n return sDate;\r\n}\r\n\r\n/**\r\n * 处理菜单函数\r\n */\r\ntools.formatMenu = (originaMenuList) => {\r\n /**\r\n * 改为解析运维平台的根据用户ID获取用户信息的接口的返回\r\n * nh 2021.10.25\r\n */\r\n var newMenuList = [];\r\n var tempNewMenuList = [];\r\n var menuNameList = [];\r\n var _localMenusList = JSON.parse(JSON.stringify(localMenusList));\r\n (originaMenuList || []).forEach(originaMenu => {\r\n for (var i = 0; i < _localMenusList.length; i++) {\r\n var localMenu = _localMenusList[i];\r\n if (localMenu.name == originaMenu.authorizationName) {\r\n //---------------------------------------------加上一级菜单\r\n if (menuNameList.indexOf(originaMenu.productName) == -1) {\r\n var firstLocalMenu = _localMenusList.filter(_c => {\r\n return _c.name == originaMenu.productName;\r\n })[0];\r\n if (firstLocalMenu) {\r\n tempNewMenuList.push(JSON.parse(JSON.stringify(firstLocalMenu)));\r\n menuNameList.push(originaMenu.productName);\r\n }\r\n }\r\n //二级菜单\r\n tempNewMenuList.push(localMenu);\r\n\r\n //三级菜单\r\n var _menuChildrens = JSON.parse(JSON.stringify(localMenu.menuChildrens || []));\r\n for (var j = 0; j < _menuChildrens.length; j++) {\r\n var _childLocalMenu = _menuChildrens[j];\r\n if (originaMenuList.filter(_c => { return _c.authorizationName == _childLocalMenu.name; }).length == 0) {\r\n _menuChildrens.splice(j, 1);\r\n --j;\r\n }\r\n }\r\n localMenu.menuChildrens = _menuChildrens;\r\n\r\n menuNameList.push(localMenu.name);\r\n break;\r\n }\r\n }\r\n });\r\n tempNewMenuList.sort((_c1, _c2) => {\r\n return _c1.orders - _c2.orders;\r\n });\r\n return tempNewMenuList;\r\n\r\n\r\n\r\n const menuList = [];\r\n menu.forEach(item => {\r\n let children = {}\r\n if (item.menuChildrens) {\r\n children = item.menuChildrens;\r\n delete item.menuChildrens;\r\n }\r\n item.disabled = true;\r\n menuList.push(item, ...children);\r\n })\r\n return menuList;\r\n}\r\n\r\nexport default tools\r\n"],"sourceRoot":""}
|