shaun-sheep 5 years ago
parent
commit
2137429a69

+ 6 - 6
config/dev.env.js

@@ -4,11 +4,11 @@ const prodEnv = require('./prod.env')
 
 
 module.exports = merge(prodEnv, {
 module.exports = merge(prodEnv, {
     NODE_ENV: '"development"',
     NODE_ENV: '"development"',
-    BASE_URL: '"http://192.168.20.236"', //测试iframe地址
-    SSO_SERVER: '"http://192.168.20.235:8081"', //测试环境
+    // BASE_URL: '"http://192.168.20.236"', //测试iframe地址
+    // SSO_SERVER: '"http://192.168.20.235:8081"', //测试环境
     // // SSO_SERVER: '"http://192.168.20.236:8086"', //(新)测试环境
     // // SSO_SERVER: '"http://192.168.20.236:8086"', //(新)测试环境
-    MQTT_SERVICE: '"ws://192.168.20.225:61614/stomp/"' //MQ测试环境地址
-    // SSO_SERVER: '"http://sso.sagacloud.cn"',  //正式环境
-    // BASE_URL: '"http://mbi.sagacloud.cn"', //线上iframe地址
-    // MQTT_SERVICE: '"ws://adm.sagacloud.cn/stomp/"' //MQ正式环境地址
+    // MQTT_SERVICE: '"ws://192.168.20.225:61614/stomp/"' //MQ测试环境地址
+    SSO_SERVER: '"http://sso.sagacloud.cn"',  //正式环境
+    BASE_URL: '"http://mbi.sagacloud.cn"', //线上iframe地址
+    MQTT_SERVICE: '"ws://adm.sagacloud.cn/stomp/"' //MQ正式环境地址
 })
 })

+ 176 - 176
config/index.js

@@ -10,184 +10,184 @@ module.exports = {
     assetsSubDirectory: 'static',
     assetsSubDirectory: 'static',
     assetsPublicPath: '/',
     assetsPublicPath: '/',
 
 
-    // proxyTable: {//正式环境
-    //   '/admin': {
-    //     target: 'http://mbi.sagacloud.cn:8080',
-    //     changeOrigin: true,
-    //     pathRewrite: {
-    //       "^/admin": "/"
-    //     }
-    //   },
-    //   '/api': {
-    //     target: 'http://mbi.sagacloud.cn:8080',
-    //     changeOrigin: true,
-    //     pathRewrite: {
-    //       "^/api": "/"
-    //     }
-    //   },
-    //   '/data-platform-3': {
-    //     // 目标 API 地址
-    //     target: 'http://api.sagacloud.cn/',
-    //     // 如果要代理 websockets
-    //     ws: true,
-    //     // 将主机标头的原点更改为目标URL
-    //     changeOrigin: false
-    //   },
-    //   '/business-space': {
-    //     // 目标 API 地址
-    //     target: 'http://api.sagacloud.cn',
-    //     changeOrigin: true,
-    //     pathRewrite: {
-    //       "^/business-space": "/dp-auxiliary/business-space/"
-    //     }
-    //   },
-    //   '/pointconfig': {
-    //     // 目标 API 地址
-    //     target: 'http://mbi.sagacloud.cn:8080/',
-    //     // 如果要代理 websockets
-    //     ws: true,
-    //     // 将主机标头的原点更改为目标URL
-    //     changeOrigin: false
-    //   },
-    //   '/venders-dp': {
-    //     // 目标 API 地址
-    //     target: 'http://api.sagacloud.cn',
-    //     changeOrigin: true,
-    //     pathRewrite: {
-    //       "^/venders-dp": "/dp-auxiliary/venders-dp/"
-    //     }
-    //   },
-    //   '/venders': {
-    //     // 目标 API 地址
-    //     target: 'http://api.sagacloud.cn',
-    //     changeOrigin: true,
-    //     pathRewrite: {
-    //       "^/venders": "/dp-auxiliary/venders/"
-    //     }
-    //   },
-    //   '/ScanBuilding': {
-    //     // 目标 API 地址
-    //     target: 'http://mbi.sagacloud.cn:8080/',
-    //     // 如果要代理 websockets
-    //     ws: true,
-    //     // 将主机标头的原点更改为目标URL
-    //     changeOrigin: false
-    //   },
-    //   '/image-service': {
-    //     // 目标 API 地址
-    //     target: 'http://api.sagacloud.cn',
-    //     changeOrigin: true,
-    //     pathRewrite: {
-    //       "^/image-service": "/dp-auxiliary/image-service/"
-    //     }
-    //   },
-    //   '/godhand': {
-    //     // 目标 API 地址
-    //     target: 'http://api.sagacloud.cn',
-    //     changeOrigin: true,
-    //     pathRewrite: {
-    //       "^/godhand": "/dp-auxiliary/godhand/"
-    //     }
-    //   },
-    //   '/modelapi': {
-    //     target: 'http://mbi.sagacloud.cn:8080',
-    //     // target: 'http://192.168.20.218:8082',//景灏
-    //     changeOrigin: true,
-    //     pathRewrite: {
-    //       "^/modelapi": "/revit-algorithm/"
-    //     }
-    //   },
-    // },
-
-    proxyTable: {
-        '/admin': {
-            target: 'http://192.168.20.235:8080',
-            changeOrigin: true,
-            pathRewrite: {
-                "^/admin": "/"
-            }
-        },
-        '/api': {
-            target: 'http://192.168.20.235:8080',
-            changeOrigin: true,
-            pathRewrite: {
-                "^/api": "/"
-            }
-        },
-        '/data-platform-3': {
-            // 目标 API 地址
-            target: 'http://192.168.20.225:8080/',
-            // 如果要代理 websockets
-            ws: true,
-            // 将主机标头的原点更改为目标URL
-            changeOrigin: false
-        },
-        '/business-space': {
-            // 目标 API 地址
-            target: 'http://192.168.20.225:8080/',
-            // 如果要代理 websockets
-            ws: true,
-            // 将主机标头的原点更改为目标URL
-            changeOrigin: false
-        },
-        '/pointconfig': {
-            // 目标 API 地址
-            target: 'http://192.168.20.236:8080/',
-            // 如果要代理 websockets
-            ws: true,
-            // 将主机标头的原点更改为目标URL
-            changeOrigin: false
-        },
-        '/venders-dp': {
-            // 目标 API 地址
-            target: 'http://192.168.20.225:8080/',
-            // 如果要代理 websockets
-            ws: true,
-            // 将主机标头的原点更改为目标URL
-            changeOrigin: false
-        },
-        '/venders': {
-            // 目标 API 地址
-            target: 'http://192.168.20.225:8080/',
-            // 如果要代理 websockets
-            ws: true,
-            // 将主机标头的原点更改为目标URL
-            changeOrigin: false
-        },
-        '/ScanBuilding': {
-            // 目标 API 地址
-            target: 'http://192.168.20.236:8080/',
-            // 如果要代理 websockets
-            ws: true,
-            // 将主机标头的原点更改为目标URL
-            changeOrigin: false
-        },
-        '/image-service': {
-            // 目标 API 地址
-            target: 'http://192.168.20.225:8080/',
-            // 如果要代理 websockets
-            ws: true,
-            // 将主机标头的原点更改为目标URL
-            changeOrigin: false
-        },
-        '/godhand': {
-            // 目标 API 地址
-            target: 'http://192.168.20.225:8080/',
-            // 如果要代理 websockets
-            ws: true,
-            // 将主机标头的原点更改为目标URL
-            changeOrigin: false
-        },
-        '/modelapi': {
-            target: 'http://192.168.20.225:8082',
-            // target: 'http://192.168.20.218:8082',//景灏
-            changeOrigin: true,
-            pathRewrite: {
-                "^/modelapi": "/"
-            }
-        },
+    proxyTable: {//正式环境
+      '/admin': {
+        target: 'http://mbi.sagacloud.cn:8080',
+        changeOrigin: true,
+        pathRewrite: {
+          "^/admin": "/"
+        }
+      },
+      '/api': {
+        target: 'http://mbi.sagacloud.cn:8080',
+        changeOrigin: true,
+        pathRewrite: {
+          "^/api": "/"
+        }
+      },
+      '/data-platform-3': {
+        // 目标 API 地址
+        target: 'http://api.sagacloud.cn/',
+        // 如果要代理 websockets
+        ws: true,
+        // 将主机标头的原点更改为目标URL
+        changeOrigin: false
+      },
+      '/business-space': {
+        // 目标 API 地址
+        target: 'http://api.sagacloud.cn',
+        changeOrigin: true,
+        pathRewrite: {
+          "^/business-space": "/dp-auxiliary/business-space/"
+        }
+      },
+      '/pointconfig': {
+        // 目标 API 地址
+        target: 'http://mbi.sagacloud.cn:8080/',
+        // 如果要代理 websockets
+        ws: true,
+        // 将主机标头的原点更改为目标URL
+        changeOrigin: false
+      },
+      '/venders-dp': {
+        // 目标 API 地址
+        target: 'http://api.sagacloud.cn',
+        changeOrigin: true,
+        pathRewrite: {
+          "^/venders-dp": "/dp-auxiliary/venders-dp/"
+        }
+      },
+      '/venders': {
+        // 目标 API 地址
+        target: 'http://api.sagacloud.cn',
+        changeOrigin: true,
+        pathRewrite: {
+          "^/venders": "/dp-auxiliary/venders/"
+        }
+      },
+      '/ScanBuilding': {
+        // 目标 API 地址
+        target: 'http://mbi.sagacloud.cn:8080/',
+        // 如果要代理 websockets
+        ws: true,
+        // 将主机标头的原点更改为目标URL
+        changeOrigin: false
+      },
+      '/image-service': {
+        // 目标 API 地址
+        target: 'http://api.sagacloud.cn',
+        changeOrigin: true,
+        pathRewrite: {
+          "^/image-service": "/dp-auxiliary/image-service/"
+        }
+      },
+      '/godhand': {
+        // 目标 API 地址
+        target: 'http://api.sagacloud.cn',
+        changeOrigin: true,
+        pathRewrite: {
+          "^/godhand": "/dp-auxiliary/godhand/"
+        }
+      },
+      '/modelapi': {
+        target: 'http://mbi.sagacloud.cn:8080',
+        // target: 'http://192.168.20.218:8082',//景灏
+        changeOrigin: true,
+        pathRewrite: {
+          "^/modelapi": "/revit-algorithm/"
+        }
+      },
     },
     },
 
 
+    // proxyTable: {
+    //     '/admin': {
+    //         target: 'http://192.168.20.235:8080',
+    //         changeOrigin: true,
+    //         pathRewrite: {
+    //             "^/admin": "/"
+    //         }
+    //     },
+    //     '/api': {
+    //         target: 'http://192.168.20.235:8080',
+    //         changeOrigin: true,
+    //         pathRewrite: {
+    //             "^/api": "/"
+    //         }
+    //     },
+    //     '/data-platform-3': {
+    //         // 目标 API 地址
+    //         target: 'http://192.168.20.225:8080/',
+    //         // 如果要代理 websockets
+    //         ws: true,
+    //         // 将主机标头的原点更改为目标URL
+    //         changeOrigin: false
+    //     },
+    //     '/business-space': {
+    //         // 目标 API 地址
+    //         target: 'http://192.168.20.225:8080/',
+    //         // 如果要代理 websockets
+    //         ws: true,
+    //         // 将主机标头的原点更改为目标URL
+    //         changeOrigin: false
+    //     },
+    //     '/pointconfig': {
+    //         // 目标 API 地址
+    //         target: 'http://192.168.20.236:8080/',
+    //         // 如果要代理 websockets
+    //         ws: true,
+    //         // 将主机标头的原点更改为目标URL
+    //         changeOrigin: false
+    //     },
+    //     '/venders-dp': {
+    //         // 目标 API 地址
+    //         target: 'http://192.168.20.225:8080/',
+    //         // 如果要代理 websockets
+    //         ws: true,
+    //         // 将主机标头的原点更改为目标URL
+    //         changeOrigin: false
+    //     },
+    //     '/venders': {
+    //         // 目标 API 地址
+    //         target: 'http://192.168.20.225:8080/',
+    //         // 如果要代理 websockets
+    //         ws: true,
+    //         // 将主机标头的原点更改为目标URL
+    //         changeOrigin: false
+    //     },
+    //     '/ScanBuilding': {
+    //         // 目标 API 地址
+    //         target: 'http://192.168.20.236:8080/',
+    //         // 如果要代理 websockets
+    //         ws: true,
+    //         // 将主机标头的原点更改为目标URL
+    //         changeOrigin: false
+    //     },
+    //     '/image-service': {
+    //         // 目标 API 地址
+    //         target: 'http://192.168.20.225:8080/',
+    //         // 如果要代理 websockets
+    //         ws: true,
+    //         // 将主机标头的原点更改为目标URL
+    //         changeOrigin: false
+    //     },
+    //     '/godhand': {
+    //         // 目标 API 地址
+    //         target: 'http://192.168.20.225:8080/',
+    //         // 如果要代理 websockets
+    //         ws: true,
+    //         // 将主机标头的原点更改为目标URL
+    //         changeOrigin: false
+    //     },
+    //     '/modelapi': {
+    //         target: 'http://192.168.20.225:8082',
+    //         // target: 'http://192.168.20.218:8082',//景灏
+    //         changeOrigin: true,
+    //         pathRewrite: {
+    //             "^/modelapi": "/"
+    //         }
+    //     },
+    // },
+
     // Various Dev Server settings
     // Various Dev Server settings
     host: '0.0.0.0', // can be overwritten by process.env.HOST
     host: '0.0.0.0', // can be overwritten by process.env.HOST
     port: 28080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
     port: 28080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined

+ 56 - 21
src/components/ledger/details/detail/cruxDialog.vue

@@ -1,18 +1,26 @@
 <template>
 <template>
   <el-dialog title="关键信息点" :visible.sync="dialogFormVisible" class="crux-dialog">
   <el-dialog title="关键信息点" :visible.sync="dialogFormVisible" class="crux-dialog">
-    <section v-for="(val,key,i) in list" :key="i">
+    <section v-for="(val,key,i) in crux" :key="i">
       <h4 class="base">{{key}}</h4>
       <h4 class="base">{{key}}</h4>
-      <div v-for="(value,keys,index) in val.paths"
-           :key="index"
-           style="width: 24%;display: inline-block;margin-left: 20px">
+
+      <el-checkbox-group
+        v-model="checkList[key]"
+        @change="changCheckbox"
+
+      >
         <el-checkbox
         <el-checkbox
-          v-model="value.KeyWord"
-          :label="value.InfoPointName"
-          @change="changCheckbox(value)"
-        />
-      </div>
-    </section>
+          v-for="option of val.paths"
+          :key="option.Path"
+          :label="option.InfoPointName"
+          :value="option.KeyWord"
+          :true-label="true"
+          :false-label="false"
+        >
+        </el-checkbox>
+      </el-checkbox-group
+      >
 
 
+    </section>
     <div slot="footer" class="dialog-footer">
     <div slot="footer" class="dialog-footer">
       <el-button @click="dialogFormVisible = false">取 消</el-button>
       <el-button @click="dialogFormVisible = false">取 消</el-button>
       <el-button type="primary" @click="save">保 存</el-button>
       <el-button type="primary" @click="save">保 存</el-button>
@@ -23,35 +31,62 @@
 <script>
 <script>
   export default {
   export default {
     name: "cruxDialog",
     name: "cruxDialog",
-    props: [],
+    props: ['crux'],
     data() {
     data() {
       return {
       return {
         dialogFormVisible: false,
         dialogFormVisible: false,
-        list: {},
         type: '',//设备类型
         type: '',//设备类型
-        checkList: [],
-        check: {}
+        checkList: {},
+        checkboxGroup: []
+      }
+    },
+    computed: {
+      allChecks() {
+        const tmp = [];
+        for (const key in this.checkList) {
+          if (this.checkList.hasOwnProperty(key)) {
+            const element = this.checkList[key];
+            tmp.push(...element)
+          }
+        }
+        return tmp;
+      }
+    },
+    created() {
+      //   for (let key in this.crux) {
+      //     this.$set(this.checkList, key, [])
+      //   }
+    },
+    watch: {
+      crux() {
+        this.changeList()
       }
       }
     },
     },
     methods: {
     methods: {
-      dialogOpen(data, type) {
+      changeList() {
+        for (let key in this.crux) {
+          this.$set(this.checkList, key, [])
+        }
+      },
+      dialogOpen(type) {
         this.type = type
         this.type = type
-        this.list = data.allMessage
-        console.log(data)
         this.dialogFormVisible = true
         this.dialogFormVisible = true
       },
       },
       changCheckbox(val) {
       changCheckbox(val) {
-        let arr = []
+        // let arr = []
+        //   arr = arr.concat(value)
+        // })  val.map((value,index,array)=> {
+        this.checkboxGroup.push(val)
         let param = {
         let param = {
           Type: this.type,
           Type: this.type,
           oPointCode: val.InfoPointCode,
           oPointCode: val.InfoPointCode,
           KeyWord: val.KeyWord
           KeyWord: val.KeyWord
         }
         }
-        let obj = Object.assign({}, param)
-        console.log(obj, 'obj')
+
+        console.log(val, 'val')
       },
       },
       save() {
       save() {
-
+        console.log(this.checkboxGroup)
       }
       }
     }
     }
   }
   }

+ 17 - 3
src/components/ledger/details/detail/exhibitionBaseInformation.vue

@@ -3,7 +3,9 @@
   <section v-for="(val,key,i) in exhibitionBaseInformation.information">
   <section v-for="(val,key,i) in exhibitionBaseInformation.information">
     <h4 class="base">{{key}}</h4>
     <h4 class="base">{{key}}</h4>
     <div v-for="(value,keys,index) in val.paths"
     <div v-for="(value,keys,index) in val.paths"
-         style="width: 47%;display: inline-block;margin-left: 20px">
+         :class="{'w47':exhibitionBaseInformation.style == 2,'w30':exhibitionBaseInformation.style==3,
+'w22':exhibitionBaseInformation.style == 4}"
+         style="display: inline-block;margin-left: 20px">
       <span> {{value.InfoPointName}}:</span>
       <span> {{value.InfoPointName}}:</span>
 
 
       <el-popover
       <el-popover
@@ -21,7 +23,6 @@
           >
           >
           </div>
           </div>
           <div style="float:right;width: 40%;margin-top: 30px">
           <div style="float:right;width: 40%;margin-top: 30px">
-
           <span>{{value.Value}}</span>
           <span>{{value.Value}}</span>
           </div>
           </div>
         </div>
         </div>
@@ -93,10 +94,23 @@
         font-size: 14px;
         font-size: 14px;
       }
       }
     }
     }
-    .ml-10{
+
+    .ml-10 {
       margin-left: 10px;
       margin-left: 10px;
       text-indent: 10px;
       text-indent: 10px;
     }
     }
 
 
+    .w47 {
+      width: 47%;
+    }
+
+
+    .w30 {
+      width: 30%;
+    }
+
+    .w22 {
+      width: 22%;
+    }
   }
   }
 </style>
 </style>

+ 2 - 2
src/components/ledger/details/detail/exhibitionCrux.vue

@@ -3,7 +3,7 @@
     <p class="title">{{exhibitionCrux.title}}
     <p class="title">{{exhibitionCrux.title}}
       <span class="icon-shezhi iconfont setting" @click="setting"></span></p>
       <span class="icon-shezhi iconfont setting" @click="setting"></span></p>
     <div style="text-align: center" v-if="!exhibitionCrux.cruxArray.length">暂无数据</div>
     <div style="text-align: center" v-if="!exhibitionCrux.cruxArray.length">暂无数据</div>
-  <cruxDialog ref="setting"/>
+  <cruxDialog ref="setting" :crux="exhibitionCrux.allMessage"/>
   </section>
   </section>
 </template>
 </template>
 
 
@@ -19,7 +19,7 @@
     },
     },
     methods: {
     methods: {
       setting() {
       setting() {
-        this.$refs.setting.dialogOpen(this.exhibitionCrux,this.type)
+        this.$refs.setting.dialogOpen(this.type)
       }
       }
     }
     }
   }
   }

+ 30 - 1
src/components/ledger/details/detail/exhibitionEnergy.vue

@@ -3,6 +3,17 @@
     <div class="title">
     <div class="title">
       <section>
       <section>
         <h4 class="base">{{exhibitionEnergy.title}}</h4>
         <h4 class="base">{{exhibitionEnergy.title}}</h4>
+        <div v-if="exhibitionEnergy.dynamic.length">
+          <div v-for="(item,index) in exhibitionEnergy.dynamic" :key="index" class="table-dynamic">
+            <div class="table-title">{{item.InfoPointName}}:</div>
+            <div>
+              <p>表号功能号 {{item.value}}</p>
+              <p>{{item.data}}  {{item.Unit}}</p>
+              <p>{{formatDate(item.receivetime)}}</p>
+            </div>
+          </div>
+        </div>
+        <div v-else style="text-align: center">暂无数据</div>
       </section>
       </section>
     </div>
     </div>
   </div>
   </div>
@@ -11,7 +22,12 @@
 <script>
 <script>
   export default {
   export default {
     name: "exhibitionEnergy",
     name: "exhibitionEnergy",
-    props: ['exhibitionEnergy']
+    props: ['exhibitionEnergy'],
+    methods:{
+      formatDate(str) {
+        return str ? str.substr(0,4)+"-"+str.substr(4,2)+"-"+str.substr(6,2)+" "+str.substr(8,2) + ":" +str.substr(10,2) + ":"+str.substr(12,2) :'--'
+      }
+    }
   }
   }
 </script>
 </script>
 
 
@@ -23,5 +39,18 @@
       text-indent: 10px;
       text-indent: 10px;
       border-bottom: 1px dashed #eee;
       border-bottom: 1px dashed #eee;
     }
     }
+
+    .table-dynamic {
+      height: 85px;
+      width: 100%;
+      margin: 5px 5px 5px 20px;
+    }
+
+    .table-title {
+      float: left;
+      max-width: 200px;
+      width: 100px;
+      height: 85px;
+    }
   }
   }
 </style>
 </style>

+ 0 - 1
src/components/ledger/details/detail/exhibitionMaintain.vue

@@ -19,7 +19,6 @@
 
 
     .title {
     .title {
       margin-left: 10px;
       margin-left: 10px;
-      border-bottom: 1px solid #eee;
       font-weight: 600;
       font-weight: 600;
       text-indent: 10px;
       text-indent: 10px;
     }
     }

+ 158 - 32
src/views/ledger/cenotelist/cenoteDetail/index.vue

@@ -19,11 +19,19 @@
       </el-row>
       </el-row>
       <div v-if="activeTab=='detail'"  class="content">
       <div v-if="activeTab=='detail'"  class="content">
         <div class="content-left">
         <div class="content-left">
-          <div class="content-showType"></div>
+          <div class="content-showType">
+            <selectRadio
+              :selectRadio="selectRadio"
+              @changeRadio="changeRadio"
+            />
+          </div>
           <div class="content-point">
           <div class="content-point">
             <div class="content-point-left">
             <div class="content-point-left">
               <el-scrollbar style="height:100%;">
               <el-scrollbar style="height:100%;">
-                <div style="height:1000px"></div>
+                <div>
+                  <exhibitionBaseInformation :exhibitionBaseInformation="exhibitionBaseInformation"/>
+
+                </div>
               </el-scrollbar>
               </el-scrollbar>
             </div>
             </div>
           </div>
           </div>
@@ -40,36 +48,81 @@
 </template>
 </template>
 
 
 <script>
 <script>
-import { mapGetters } from "vuex"
-import { getDataDictionary, queryCenoteTableData, deleteCenoteTableData } from '@/api/scan/request'
-import cenoteTable from '@/components/ledger/cenote/table/cenoteTable'
-import deviceTable from '@/components/ledger/cenote/table/deviceTable'
-import systemTable from '@/components/ledger/cenote/table/systemTable'
-export default {
-  data() {
-    return {
-      params: {},
-      tabsList: [
-        { Code: 'detail', Name: '竖井详情' },
-        { Code: 'device', Name: '竖井内的设备' },
-        { Code: 'cenote', Name: '连通的其它竖井' },
-        { Code: 'system', Name: '竖井内系统' },
-      ], //tab页
-      activeTab: 'detail', //当前选中的tab
-      pointData: [], //信息点数据
-      exampleData: {}, //实例数据
+  import {mapGetters} from "vuex"
+  import {deleteCenoteTableData, getDataDictionary, queryCenoteTableData} from '@/api/scan/request'
+  import cenoteTable from '@/components/ledger/cenote/table/cenoteTable'
+  import deviceTable from '@/components/ledger/cenote/table/deviceTable'
+  import systemTable from '@/components/ledger/cenote/table/systemTable'
+  import exhibitionBaseInformation from "@/components/ledger/details/detail/exhibitionBaseInformation";
+  import selectRadio from "@/components/ledger/details/detail/selectRadio";
+  function flattenKeys(obj) {
+    let res = {}
+
+    function isObject(val) {
+      return typeof val === 'object' && !Array.isArray(val)
     }
     }
-  },
-  computed: {
-    ...mapGetters("layout", ["projectId", "userId", "secret"])
-  },
-  components: {
-    cenoteTable,
-    deviceTable,
-    systemTable
-  },
-  created() {
-    this.params = this.$route.query;
+
+    function digKeys(prev, obj) {
+      Object.entries(obj).forEach(([key, value]) => {
+        const currentKey = prev ? `${prev}.${key}` : key
+        if (isObject(value)) {
+          digKeys(currentKey, value)
+        } else {
+          res[currentKey] = value
+        }
+      })
+    }
+    digKeys('', obj)
+    return res
+  }
+  export default {
+    data() {
+      return {
+        params: {},
+        tabsList: [
+          {Code: 'detail', Name: '竖井详情'},
+          {Code: 'device', Name: '竖井内的设备'},
+          {Code: 'cenote', Name: '连通的其它竖井'},
+          {Code: 'system', Name: '竖井内系统'},
+        ], //tab页
+        activeTab: 'detail', //当前选中的tab
+        pointData: [], //信息点数据
+        exampleData: {}, //实例数据
+        exhibitionBaseInformation: {
+          information: {},
+          style: 4
+        },
+        selectRadio: {
+          information: '设备信息点',
+          radioList: [
+            {
+              value: '显示需采集信息点',
+              label: '1'
+            },
+            {
+              value: '显示有值信息点',
+              label: '2'
+            },
+            {
+              value: '显示全部信息点',
+              label: '3'
+            }
+          ]
+        },
+      }
+    },
+    computed: {
+      ...mapGetters("layout", ["projectId", "userId", "secret"])
+    },
+    components: {
+      cenoteTable,
+      deviceTable,
+      systemTable,
+      exhibitionBaseInformation,
+      selectRadio
+    },
+    created() {
+      this.params = this.$route.query;
     this.getData();
     this.getData();
   },
   },
   mounted() { },
   mounted() { },
@@ -77,9 +130,12 @@ export default {
     projectId() { }
     projectId() { }
   },
   },
   methods: {
   methods: {
+    deepCopy(obj) {
+      return JSON.parse(JSON.stringify(obj))
+    },
     // 返回
     // 返回
     goBack() {
     goBack() {
-      this.$router.push({ name: "cenotelist" });
+      this.$router.push({name: "cenotelist"});
     },
     },
     getData() {
     getData() {
       let params1 = {
       let params1 = {
@@ -105,7 +161,77 @@ export default {
       Promise.all([promise1, promise2]).then(values => {
       Promise.all([promise1, promise2]).then(values => {
         this.pointData = values[0].Content;
         this.pointData = values[0].Content;
         this.exampleData = values[1].Content[0];
         this.exampleData = values[1].Content[0];
+        let obj = this.deepCopy(values[1].Content[0]);
+        obj = flattenKeys(obj);
+        this.instance = obj;
+        this.handleRadios(1)
+      })
+    },
+    handleRadios(val) { //判断radio的值显示关键信息,基本信息,图片,文件
+      let arr = []
+      if (val == 1) { //需采集信息
+        arr = this.pointData.filter(i => i.Visible)
+      } else if (val == 2) { //有值信息点
+        let list = this.pointData
+        list.map(j => {
+          if (this.exampleData.hasOwnProperty(j.Path)) {
+            return {
+              ...j,
+              value: this.exampleData[j.Path]
+            }
+          }
+          arr = list.filter(k => k.value)
+        })
+      } else { //全部信息点
+        arr = this.pointData
+      }
+      this.displayData(arr)
+    },
+    changeRadio(val) { //1,需采集,2,有值,3,全部
+      this.handleRadios(val)
+      this.currentRadio = val
+    },
+    displayData(arr) {//对数据进行处理传给组件展示
+      const result = {}
+      arr.forEach(i => {
+        if (this.exampleData.hasOwnProperty(i.Path) && this.currentRadio != 2) {
+          i.value = this.exampleData[i.Path]
+        }
+        switch (i.InputMode) {
+          case "L":
+          case "L1":
+          case "L2":
+          case "M":
+          case 'F2':
+            break;
+          default:
+            if (result[`${i.FirstName}${i.SecondName ? '/' + i.SecondName : ''}`]) {
+              result[`${i.FirstName}${i.SecondName ? '/' + i.SecondName : ''}`].paths.push({
+                Path: i.Path,
+                InfoPointName: i.InfoPointName,
+                InfoPointCode: i.InfoPointCode,
+                Value: i.value,
+                Visible: i.Visible,
+                KeyWord: i.KeyWord
+              })
+            } else {
+              result[`${i.FirstName}${i.SecondName ? '/' + i.SecondName : ''}`] = {
+                paths: [{
+                  Path: i.Path,
+                  InfoPointName: i.InfoPointName,
+                  InfoPointCode: i.InfoPointCode,
+                  Value: i.value,
+                  Visible: i.Visible,
+                  KeyWord: i.KeyWord
+                }]
+              }
+            }
+
+        }
+
+
       })
       })
+      this.exhibitionBaseInformation.information = result
     },
     },
     // 删除业务空间
     // 删除业务空间
     deleteCenote() {
     deleteCenote() {

+ 80 - 44
src/views/ledger/facility/details/index.vue

@@ -18,14 +18,14 @@
         <div class="content-point">
         <div class="content-point">
           <div class="content-point-left">
           <div class="content-point-left">
             <el-scrollbar style="height:100%;">
             <el-scrollbar style="height:100%;">
-              <div style="height:1000px">
+              <div>
                 <exhibitionBaseInformation :exhibitionBaseInformation="exhibitionBaseInformation"/>
                 <exhibitionBaseInformation :exhibitionBaseInformation="exhibitionBaseInformation"/>
               </div>
               </div>
             </el-scrollbar>
             </el-scrollbar>
           </div>
           </div>
           <div class="content-point-right">
           <div class="content-point-right">
             <el-scrollbar style="height:100%;">
             <el-scrollbar style="height:100%;">
-              <div style="height:1000px">
+              <div>
                 <exhibitionEnergy :exhibitionEnergy="exhibitionEnergy"/>
                 <exhibitionEnergy :exhibitionEnergy="exhibitionEnergy"/>
               </div>
               </div>
             </el-scrollbar>
             </el-scrollbar>
@@ -38,9 +38,9 @@
         </div>
         </div>
         <div class="content-media">
         <div class="content-media">
           <el-scrollbar style="height:100%;">
           <el-scrollbar style="height:100%;">
-            <div style="height:1000px">
+            <div>
               <exhibitionImage :exhibitionImage="exhibitionImage"/>
               <exhibitionImage :exhibitionImage="exhibitionImage"/>
-              <exhibitionVideo :exhibitionVideo="exhibitionVideo"></exhibitionVideo>
+              <exhibitionVideo :exhibitionVideo="exhibitionVideo"/>
               <exhibitionFile :exhibitionFile="exhibitionFile"/>
               <exhibitionFile :exhibitionFile="exhibitionFile"/>
             </div>
             </div>
           </el-scrollbar>
           </el-scrollbar>
@@ -137,10 +137,12 @@
           ]
           ]
         },
         },
         exhibitionBaseInformation: {
         exhibitionBaseInformation: {
-          information: {}
+          information: {},
+          style:2
         },
         },
-        exhibitionEnergy:{
-          title:'能耗信息'
+        exhibitionEnergy: {
+          title: '能耗信息',
+          dynamic: [],
         },
         },
         exhibitionMaintain: {
         exhibitionMaintain: {
           title: '维修/维保记录'
           title: '维修/维保记录'
@@ -158,15 +160,19 @@
           title: '图片',
           title: '图片',
           list: {}
           list: {}
         },
         },
-        exhibitionVideo:{
-          title:'视频',
-          list:{}
-        }
+        exhibitionVideo: {
+          title: '视频',
+          list: {}
+        },
+        instance: {},//实例信息处理
       }
       }
     },
     },
     methods: {
     methods: {
+      deepCopy(obj) {
+        return JSON.parse(JSON.stringify(obj))
+      },
       // 获取表头和实例数据(动态数据在组件中获取,在此格式化请求参数)
       // 获取表头和实例数据(动态数据在组件中获取,在此格式化请求参数)
-      getData () {
+      getData() {
         let params1 = {
         let params1 = {
           data: {
           data: {
             Orders: "sort asc",
             Orders: "sort asc",
@@ -189,8 +195,10 @@
         })
         })
         Promise.all([promise1, promise2]).then(values => {
         Promise.all([promise1, promise2]).then(values => {
           this.pointData = values[0].Content;
           this.pointData = values[0].Content;
-          let obj = flattenKeys(values[1].Content[0])
-          this.exampleData = obj;
+          this.exampleData = values[1].Content[0];
+          let obj = this.deepCopy(values[1].Content[0]);
+          obj = flattenKeys(obj);
+          this.instance = obj;
           this.handleRadios(1)
           this.handleRadios(1)
 
 
           this.pointData.forEach(item => {
           this.pointData.forEach(item => {
@@ -201,17 +209,36 @@
                   id: this.exampleData.EquipID,
                   id: this.exampleData.EquipID,
                   code: item.InfoPointCode
                   code: item.InfoPointCode
                 })
                 })
+
               }
               }
             }
             }
           })
           })
+
           let params = { //获取动态参数
           let params = { //获取动态参数
             secret: this.secret,
             secret: this.secret,
             ProjId: this.projectId,
             ProjId: this.projectId,
-            criterias: this.criterias
+            data: {
+              criterias: this.criterias
+            }
           }
           }
           if (this.criterias.length) {
           if (this.criterias.length) {
             BeatchQueryParam(params, res => {
             BeatchQueryParam(params, res => {
-              console.log(params,'===param===')
+              res.Content.map(child => {
+                this.pointData.forEach(head => {
+                  if (head.InfoPointCode == child.code) {
+                    this.exhibitionEnergy.dynamic.push({
+                      InfoPointCode: head.InfoPointCode,
+                      InfoPointName: head.InfoPointName,
+                      Path: head.Path,
+                      value: child.value,
+                      data: child.data || '--',
+                      receivetime: child.receivetime || '',
+                      error: child.error || '',
+                      Unit: head.Unit || ''
+                    })
+                  }
+                })
+              });
             })
             })
           }
           }
 
 
@@ -251,7 +278,6 @@
       handlePicList(arr) {
       handlePicList(arr) {
         let picObject = {}
         let picObject = {}
         //处理数据格式
         //处理数据格式
-        let obj = flattenKeys(this.exampleData)
         arr.map(i => {
         arr.map(i => {
             if(i.InputMode == 'F2') {
             if(i.InputMode == 'F2') {
               switch (i.Path) {
               switch (i.Path) {
@@ -259,19 +285,19 @@
                 case 'LedgerParam.Siteinstall.InstallPic':
                 case 'LedgerParam.Siteinstall.InstallPic':
                 case 'LedgerParam.Siteinstall.InstallDrawing':
                 case 'LedgerParam.Siteinstall.InstallDrawing':
                 case 'LedgerParam.PhotoDoc.Nameplate':
                 case 'LedgerParam.PhotoDoc.Nameplate':
-                  if (obj.hasOwnProperty(i.Path)) {
-                    i.PicList = obj[i.Path]
+                  if (this.instance.hasOwnProperty(i.Path)) {
+                    i.PicList = this.instance[i.Path]
                   }
                   }
                   if (picObject[i.InfoPointName]) {
                   if (picObject[i.InfoPointName]) {
 
 
                   } else {
                   } else {
                     picObject[i.InfoPointName] = []
                     picObject[i.InfoPointName] = []
                   }
                   }
-
                   picObject[i.InfoPointName].push({
                   picObject[i.InfoPointName].push({
                     ...i,
                     ...i,
                   })
                   })
-                  break
+                  break;
+
               }
               }
             }
             }
 
 
@@ -282,15 +308,14 @@
       handleFileList(arr) {
       handleFileList(arr) {
         let picObject = {}
         let picObject = {}
         //处理数据格式
         //处理数据格式
-        let obj = flattenKeys(this.exampleData)
         arr.map(i => {
         arr.map(i => {
           if (i.InputMode == 'F2') {
           if (i.InputMode == 'F2') {
             switch (i.Path) {
             switch (i.Path) {
               case 'LedgerParam.InsuranceDoc.InsuranceFile':
               case 'LedgerParam.InsuranceDoc.InsuranceFile':
               case 'LedgerParam.PhotoDoc.Archive':
               case 'LedgerParam.PhotoDoc.Archive':
               case 'LedgerParam.Siteinstall.CheckReport':
               case 'LedgerParam.Siteinstall.CheckReport':
-                if (obj.hasOwnProperty(i.Path)) {
-                  i.fileList = obj[i.Path]
+                if (this.instance.hasOwnProperty(i.Path)) {
+                  i.fileList = this.instance[i.Path]
                 }
                 }
                 if (picObject[i.InfoPointName]) {
                 if (picObject[i.InfoPointName]) {
 
 
@@ -309,35 +334,49 @@
         //展示文件
         //展示文件
         this.exhibitionFile.list = picObject
         this.exhibitionFile.list = picObject
       },
       },
-
+      changeRadio(val) { //1,需采集,2,有值,3,全部
+        this.handleRadios(val)
+        this.currentRadio = val
+      },
       displayData(arr) {//对数据进行处理传给组件展示
       displayData(arr) {//对数据进行处理传给组件展示
         const result = {}
         const result = {}
         arr.forEach(i => {
         arr.forEach(i => {
           if (this.exampleData.hasOwnProperty(i.Path) && this.currentRadio != 2) {
           if (this.exampleData.hasOwnProperty(i.Path) && this.currentRadio != 2) {
             i.value = this.exampleData[i.Path]
             i.value = this.exampleData[i.Path]
           }
           }
-          if(i.InputMode != 'F2') {
-            if (result[`${i.FirstName}${i.SecondName ? '/' + i.SecondName : ''}`]) {
-              result[`${i.FirstName}${i.SecondName ? '/' + i.SecondName : ''}`].paths.push({
-                Path: i.Path,
-                InfoPointName: i.InfoPointName,
-                InfoPointCode: i.InfoPointCode,
-                Value: i.value,
-                Visible: i.Visible
-              })
-            } else {
-              result[`${i.FirstName}${i.SecondName ? '/' + i.SecondName : ''}`] = {
-                paths: [{
+          switch (i.InputMode) {
+            case "L":
+            case "L1":
+            case "L2":
+            case "M":
+            case 'F2':
+              break;
+            default:
+              if (result[`${i.FirstName}${i.SecondName ? '/' + i.SecondName : ''}`]) {
+                result[`${i.FirstName}${i.SecondName ? '/' + i.SecondName : ''}`].paths.push({
                   Path: i.Path,
                   Path: i.Path,
                   InfoPointName: i.InfoPointName,
                   InfoPointName: i.InfoPointName,
                   InfoPointCode: i.InfoPointCode,
                   InfoPointCode: i.InfoPointCode,
                   Value: i.value,
                   Value: i.value,
-                  Visible: i.Visible
-                }]
+                  Visible: i.Visible,
+                  KeyWord: i.KeyWord
+                })
+              } else {
+                result[`${i.FirstName}${i.SecondName ? '/' + i.SecondName : ''}`] = {
+                  paths: [{
+                    Path: i.Path,
+                    InfoPointName: i.InfoPointName,
+                    InfoPointCode: i.InfoPointCode,
+                    Value: i.value,
+                    Visible: i.Visible,
+                    KeyWord: i.KeyWord
+                  }]
+                }
               }
               }
-            }
+
           }
           }
 
 
+
         })
         })
         this.exhibitionBaseInformation.information = result
         this.exhibitionBaseInformation.information = result
         this.exhibitionCrux.allMessage = result
         this.exhibitionCrux.allMessage = result
@@ -345,10 +384,7 @@
       goBack() {
       goBack() {
         this.$router.push({path: "/ledger/facility"})
         this.$router.push({path: "/ledger/facility"})
       },
       },
-      changeRadio(val) { //1,需采集,2,有值,3,全部
-        this.handleRadios(val)
-        this.currentRadio = val
-      }
+
     },
     },
     watch: {
     watch: {
       projectId() {
       projectId() {

+ 219 - 34
src/views/ledger/property/details/index.vue

@@ -6,12 +6,22 @@
     </div>
     </div>
     <div class="content">
     <div class="content">
       <div class="content-left">
       <div class="content-left">
-        <div class="content-keyPoint"></div>
-        <div class="content-showType"></div>
+        <div class="content-keyPoint">
+          <exhibitionCrux :exhibitionCrux="exhibitionCrux" :type="type"/>
+
+        </div>
+        <div class="content-showType">
+          <selectRadio
+            :selectRadio="selectRadio"
+            @changeRadio="changeRadio"
+          />
+        </div>
         <div class="content-point">
         <div class="content-point">
           <div class="content-point-left">
           <div class="content-point-left">
             <el-scrollbar style="height:100%;">
             <el-scrollbar style="height:100%;">
-              <div style="height:1000px"></div>
+              <div>
+                <exhibitionBaseInformation :exhibitionBaseInformation="exhibitionBaseInformation"/>
+              </div>
             </el-scrollbar>
             </el-scrollbar>
           </div>
           </div>
         </div>
         </div>
@@ -19,7 +29,11 @@
       <div class="content-right">
       <div class="content-right">
         <div class="content-media">
         <div class="content-media">
           <el-scrollbar style="height:100%;">
           <el-scrollbar style="height:100%;">
-            <div style="height:1000px"></div>
+            <div>
+              <exhibitionImage :exhibitionImage="exhibitionImage"/>
+              <exhibitionVideo :exhibitionVideo="exhibitionVideo"/>
+              <exhibitionFile :exhibitionFile="exhibitionFile"/>
+            </div>
           </el-scrollbar>
           </el-scrollbar>
         </div>
         </div>
       </div>
       </div>
@@ -32,14 +46,42 @@
   import exhibitionBaseInformation from "@/components/ledger/details/detail/exhibitionBaseInformation";
   import exhibitionBaseInformation from "@/components/ledger/details/detail/exhibitionBaseInformation";
   import exhibitionFile from "@/components/ledger/details/detail/exhibitionFile";
   import exhibitionFile from "@/components/ledger/details/detail/exhibitionFile";
   import exhibitionImage from "@/components/ledger/details/detail/exhibitionImage";
   import exhibitionImage from "@/components/ledger/details/detail/exhibitionImage";
+  import exhibitionVideo from "@/components/ledger/details/detail/exhibitionVideo";
+  import exhibitionCrux from "@/components/ledger/details/detail/exhibitionCrux";
   import selectRadio from "@/components/ledger/details/detail/selectRadio";
   import selectRadio from "@/components/ledger/details/detail/selectRadio";
 
 
-  import { getDataDictionary, queryProperty } from "@/api/scan/request";
-  import { mapGetters, mapActions } from "vuex";
+  import {getDataDictionary, queryProperty} from "@/api/scan/request";
+  import {mapGetters} from "vuex";
+  function flattenKeys(obj) {
+    let res = {}
 
 
+    function isObject(val) {
+      return typeof val === 'object' && !Array.isArray(val)
+    }
+
+    function digKeys(prev, obj) {
+      Object.entries(obj).forEach(([key, value]) => {
+        const currentKey = prev ? `${prev}.${key}` : key
+        if (isObject(value)) {
+          digKeys(currentKey, value)
+        } else {
+          res[currentKey] = value
+        }
+      })
+    }
+    digKeys('', obj)
+    return res
+  }
   export default {
   export default {
     name: "propertyDetails",
     name: "propertyDetails",
-    components: {exhibitionBaseInformation, exhibitionFile, exhibitionImage, selectRadio},
+    components: {
+      exhibitionBaseInformation,
+      exhibitionFile,
+      exhibitionImage,
+      selectRadio,
+      exhibitionCrux,
+      exhibitionVideo
+    },
     created() {
     created() {
       this.id = this.$route.query.equipId;
       this.id = this.$route.query.equipId;
       this.name = this.$route.query.equipName;
       this.name = this.$route.query.equipName;
@@ -60,53 +102,52 @@
         type: '', //资产类型
         type: '', //资产类型
         list: [], //资产列表
         list: [], //资产列表
         pointData: [], //信息点数据
         pointData: [], //信息点数据
-        exampleData: {}, //实例数据
+        currentRadio: '',//当前选中的select
         selectRadio: {
         selectRadio: {
-          information: '资产信息点',
+          information: '设备信息点',
           radioList: [
           radioList: [
             {
             {
               value: '显示需采集信息点',
               value: '显示需采集信息点',
               label: '1'
               label: '1'
             },
             },
             {
             {
-              value: '显示需采集信息点',
+              value: '显示有值信息点',
               label: '2'
               label: '2'
             },
             },
             {
             {
-              value: '显示需采集信息点',
+              value: '显示全部信息点',
               label: '3'
               label: '3'
             }
             }
           ]
           ]
         },
         },
         exhibitionBaseInformation: {
         exhibitionBaseInformation: {
-          //产品说所有信息的key和value是动态生成的
-          base: {
-            baseInformation: '基本信息',
-            list: [
-              {
-                text: '资产本地编码:',
-                val: '123--22:'
-              },
-              {
-                text: '资产二维码图片:',
-                val: '2:'
-              },
-            ]
-          },
-          manufacture: {
-            manufacturerParameter: '台账参数 / 设备厂家',
-          },
-          supplier: {
-            supplierParameters: '台账参数 / 供应购买'
-          }
+          information: {},
+          style:3
+        },
+        exhibitionFile: {
+          title: '文件',
+          list: {}
+        },
+        exhibitionCrux: {
+          title: '关键信息点:',
+          cruxArray: [],
+          allMessage: [],//全部信息点
         },
         },
-        exhibitionFile: {},
         exhibitionImage: {
         exhibitionImage: {
-          title:'图片'
-        }
+          title: '图片',
+          list: {}
+        },
+        exhibitionVideo: {
+          title: '视频',
+          list: {}
+        },
+        instance: {},//实例信息处理
       }
       }
     },
     },
     methods: {
     methods: {
+      deepCopy(obj) {
+        return JSON.parse(JSON.stringify(obj))
+      },
       // 获取表头和实例数据
       // 获取表头和实例数据
       getData () {
       getData () {
         let params1 = {
         let params1 = {
@@ -132,7 +173,148 @@
         Promise.all([promise1, promise2]).then(values => {
         Promise.all([promise1, promise2]).then(values => {
           this.pointData = values[0].Content;
           this.pointData = values[0].Content;
           this.exampleData = values[1].Content[0];
           this.exampleData = values[1].Content[0];
+          let obj = this.deepCopy(values[1].Content[0]);
+          obj = flattenKeys(obj);
+          this.instance = obj;
+          this.handleRadios(1)
+        })
+      },
+      handleRadios(val) { //判断radio的值显示关键信息,基本信息,图片,文件
+        let arr = []
+        if (val == 1) { //需采集信息
+          arr = this.pointData.filter(i => i.Visible)
+          //关键信息点
+          this.exhibitionCrux.cruxArray = arr.filter(i => i.KeyWord) //todo 融合
+          //  图片和的处理
+          this.handlePicList(arr)
+          //  文件处理
+          this.handleFileList(arr)
+
+        } else if (val == 2) { //有值信息点
+          let list = this.pointData
+          list.map(j => {
+            if (this.exampleData.hasOwnProperty(j.Path)) {
+              return {
+                ...j,
+                value: this.exampleData[j.Path]
+              }
+            }
+            arr = list.filter(k => k.value)
+            this.handlePicList(arr)
+            this.handleFileList(arr)
+          })
+        } else { //全部信息点
+          arr = this.pointData
+          this.handlePicList(arr)
+          this.handleFileList(arr)
+        }
+        this.displayData(arr)
+      },
+      handlePicList(arr) {
+        let picObject = {}
+        //处理数据格式
+        arr.map(i => {
+          if(i.InputMode == 'F2') {
+            switch (i.Path) {
+              case 'LedgerParam.PhotoDoc.Drawing':
+              case 'LedgerParam.Siteinstall.InstallPic':
+              case 'LedgerParam.Siteinstall.InstallDrawing':
+              case 'LedgerParam.PhotoDoc.Nameplate':
+                if (this.instance.hasOwnProperty(i.Path)) {
+                  i.PicList = this.instance[i.Path]
+                }
+                if (picObject[i.InfoPointName]) {
+
+                } else {
+                  picObject[i.InfoPointName] = []
+                }
+                picObject[i.InfoPointName].push({
+                  ...i,
+                })
+                break;
+
+            }
+          }
+
+        })
+        //展示图片
+        this.exhibitionImage.list = picObject
+      },
+      handleFileList(arr) {
+        let picObject = {}
+        //处理数据格式
+        arr.map(i => {
+          if (i.InputMode == 'F2') {
+            switch (i.Path) {
+              case 'LedgerParam.InsuranceDoc.InsuranceFile':
+              case 'LedgerParam.PhotoDoc.Archive':
+              case 'LedgerParam.Siteinstall.CheckReport':
+                if (this.instance.hasOwnProperty(i.Path)) {
+                  i.fileList = this.instance[i.Path]
+                }
+                if (picObject[i.InfoPointName]) {
+
+                } else {
+                  picObject[i.InfoPointName] = []
+                }
+
+                picObject[i.InfoPointName].push({
+                  ...i,
+                })
+                break
+            }
+          }
+
+        })
+        //展示文件
+        this.exhibitionFile.list = picObject
+      },
+      changeRadio(val) { //1,需采集,2,有值,3,全部
+        this.handleRadios(val)
+        this.currentRadio = val
+      },
+      displayData(arr) {//对数据进行处理传给组件展示
+        const result = {}
+        arr.forEach(i => {
+          if (this.exampleData.hasOwnProperty(i.Path) && this.currentRadio != 2) {
+            i.value = this.exampleData[i.Path]
+          }
+          switch (i.InputMode) {
+            case "L":
+            case "L1":
+            case "L2":
+            case "M":
+            case 'F2':
+              break;
+            default:
+              if (result[`${i.FirstName}${i.SecondName ? '/' + i.SecondName : ''}`]) {
+                result[`${i.FirstName}${i.SecondName ? '/' + i.SecondName : ''}`].paths.push({
+                  Path: i.Path,
+                  InfoPointName: i.InfoPointName,
+                  InfoPointCode: i.InfoPointCode,
+                  Value: i.value,
+                  Visible: i.Visible,
+                  KeyWord: i.KeyWord
+                })
+              } else {
+                result[`${i.FirstName}${i.SecondName ? '/' + i.SecondName : ''}`] = {
+                  paths: [{
+                    Path: i.Path,
+                    InfoPointName: i.InfoPointName,
+                    InfoPointCode: i.InfoPointCode,
+                    Value: i.value,
+                    Visible: i.Visible,
+                    KeyWord: i.KeyWord
+                  }]
+                }
+              }
+
+          }
+
+
         })
         })
+        this.exhibitionBaseInformation.information = result
+        this.exhibitionCrux.allMessage = result
       },
       },
       goBack () {
       goBack () {
         this.$router.push({path: "/ledger/property"})
         this.$router.push({path: "/ledger/property"})
@@ -173,12 +355,14 @@
           height: 100px;
           height: 100px;
           margin-bottom: 10px;
           margin-bottom: 10px;
           overflow: hidden;
           overflow: hidden;
+          background: #FFFFFF;
         }
         }
         .content-showType {
         .content-showType {
           height: 50px;
           height: 50px;
           border: 1px solid #ccc;
           border: 1px solid #ccc;
           border-bottom: none;
           border-bottom: none;
           box-sizing: border-box;
           box-sizing: border-box;
+          background: #FFFFFF;
         }
         }
         .content-point {
         .content-point {
           display: flex;
           display: flex;
@@ -186,6 +370,7 @@
           height: calc(100% - 160px);
           height: calc(100% - 160px);
           border: 1px solid #ccc;
           border: 1px solid #ccc;
           box-sizing: border-box;
           box-sizing: border-box;
+          background: #FFFFFF;
           .content-point-left {
           .content-point-left {
             flex: 1;
             flex: 1;
           }
           }

+ 301 - 27
src/views/ledger/spacelist/spaceDetail/index.vue

@@ -20,25 +20,41 @@
       <div v-if="activeTab=='detail'"  class="content">
       <div v-if="activeTab=='detail'"  class="content">
         <iframe v-if="params.isMyTab == 1" height="100%" width="100%" :src="iframeSrc"></iframe>
         <iframe v-if="params.isMyTab == 1" height="100%" width="100%" :src="iframeSrc"></iframe>
         <div v-else class="content-left">
         <div v-else class="content-left">
-          <div class="content-showType"></div>
+          <div class="content-showType">
+            <selectRadio
+              :selectRadio="selectRadio"
+              @changeRadio="changeRadio"
+            />
+          </div>
           <div class="content-point">
           <div class="content-point">
             <div class="content-point-left">
             <div class="content-point-left">
               <el-scrollbar style="height:100%;">
               <el-scrollbar style="height:100%;">
-                <div style="height:1000px"></div>
+                <div >
+                  <exhibitionBaseInformation :exhibitionBaseInformation="exhibitionBaseInformation"/>
+                </div>
               </el-scrollbar>
               </el-scrollbar>
             </div>
             </div>
             <div class="content-point-right">
             <div class="content-point-right">
               <el-scrollbar style="height:100%;">
               <el-scrollbar style="height:100%;">
-                <div style="height:1000px"></div>
+                <div >
+                  <exhibitionEnergy :exhibitionEnergy="exhibitionEnergy"/>
+                </div>
               </el-scrollbar>
               </el-scrollbar>
             </div>
             </div>
           </div>
           </div>
         </div>
         </div>
         <div class="content-right">
         <div class="content-right">
-          <div class="content-repair"></div>
+          <div class="content-repair">
+            <exhibitionMaintain :exhibitionMaintain="exhibitionMaintain"/>
+
+          </div>
           <div class="content-media">
           <div class="content-media">
             <el-scrollbar style="height:100%;">
             <el-scrollbar style="height:100%;">
-              <div style="height:1000px"></div>
+              <div >
+                <exhibitionImage :exhibitionImage="exhibitionImage"/>
+                <exhibitionVideo :exhibitionVideo="exhibitionVideo"/>
+                <exhibitionFile :exhibitionFile="exhibitionFile"/>
+              </div>
             </el-scrollbar>
             </el-scrollbar>
           </div>
           </div>
         </div>
         </div>
@@ -53,35 +69,120 @@
 </template>
 </template>
 
 
 <script>
 <script>
-import { mapGetters } from "vuex";
-import tools from "@/utils/scan/tools";
-import { getDataDictionary, queryZone, deleteZone } from '@/api/scan/request';
+  import {mapGetters} from "vuex";
+  import tools from "@/utils/scan/tools";
+  import {deleteZone, getDataDictionary, queryZone} from '@/api/scan/request';
+
+  import eqToSpaceTable from '@/components/business_space/newTables/eqToSpaceTable';
+  import syInSpaceTable from '@/components/business_space/newTables/syInSpaceTable';
+  import exhibitionBaseInformation from "@/components/ledger/details/detail/exhibitionBaseInformation";
+  import exhibitionFile from "@/components/ledger/details/detail/exhibitionFile";
+  import exhibitionImage from "@/components/ledger/details/detail/exhibitionImage";
+  import exhibitionVideo from "@/components/ledger/details/detail/exhibitionVideo";
+  import exhibitionCrux from "@/components/ledger/details/detail/exhibitionCrux";
+  import exhibitionEnergy from "@/components/ledger/details/detail/exhibitionEnergy";
+  import exhibitionMaintain from "@/components/ledger/details/detail/exhibitionMaintain";
+  import selectRadio from "@/components/ledger/details/detail/selectRadio";
 
 
-import eqToSpaceTable from '@/components/business_space/newTables/eqToSpaceTable';
-import syInSpaceTable from '@/components/business_space/newTables/syInSpaceTable';
-export default {
-  data() {
-    return {
-      params: {}, //参数-包含空间id 分区类型 进入方式(1-平面图 2-列表)
-      tabsList: [
-        { Code: 'detail', Name: '空间详情' },
-        { Code: 'Equipment', Name: '空间内设备' },
-        { Code: 'EquipmentFor', Name: '服务于空间的设备' },
-        { Code: 'generalSystem', Name: '空间内系统' },
-      ], //tab页
-      activeTab: 'detail', //当前选中的tab
-      pointData: [], //信息点数据
-      exampleData: {}, //实例数据
-      criterias: [], //动态参数
-      iframeSrc: '', //空间详情iframe
+  function flattenKeys(obj) {
+    let res = {}
+
+    function isObject(val) {
+      return typeof val === 'object' && !Array.isArray(val)
+    }
+
+    function digKeys(prev, obj) {
+      Object.entries(obj).forEach(([key, value]) => {
+        const currentKey = prev ? `${prev}.${key}` : key
+        if (isObject(value)) {
+          digKeys(currentKey, value)
+        } else {
+          res[currentKey] = value
+        }
+      })
     }
     }
+
+    digKeys('', obj)
+    return res
+  }
+
+  export default {
+    data() {
+      return {
+        params: {}, //参数-包含空间id 分区类型 进入方式(1-平面图 2-列表)
+        tabsList: [
+          {Code: 'detail', Name: '空间详情'},
+          {Code: 'Equipment', Name: '空间内设备'},
+          {Code: 'EquipmentFor', Name: '服务于空间的设备'},
+          {Code: 'generalSystem', Name: '空间内系统'},
+        ], //tab页
+        activeTab: 'detail', //当前选中的tab
+        pointData: [], //信息点数据
+        exampleData: {}, //实例数据
+        criterias: [], //动态参数
+        instance: {},
+        iframeSrc: '', //空间详情iframe
+        selectRadio: {
+          information: '设备信息点',
+          radioList: [
+            {
+              value: '显示需采集信息点',
+              label: '1'
+            },
+            {
+              value: '显示有值信息点',
+              label: '2'
+            },
+            {
+              value: '显示全部信息点',
+              label: '3'
+            }
+          ]
+        },
+        exhibitionBaseInformation: {
+          information: {},
+          style:2
+        },
+        exhibitionEnergy: {
+          title: '能耗信息',
+          dynamic: [],
+        },
+        exhibitionMaintain: {
+          title: '维修/维保记录'
+        },
+        exhibitionFile: {
+          title: '文件',
+          list: {}
+        },
+        exhibitionCrux: {
+          title: '关键信息点:',
+          cruxArray: [],
+          allMessage: [],//全部信息点
+        },
+        exhibitionImage: {
+          title: '图片',
+          list: {}
+        },
+        exhibitionVideo: {
+          title: '视频',
+          list: {}
+        }
+      }
   },
   },
   computed: {
   computed: {
     ...mapGetters("layout", ["projectId", "userId", "secret"])
     ...mapGetters("layout", ["projectId", "userId", "secret"])
   },
   },
   components: {
   components: {
     eqToSpaceTable,
     eqToSpaceTable,
-    syInSpaceTable
+    syInSpaceTable,
+    exhibitionBaseInformation,
+    exhibitionFile,
+    exhibitionVideo,
+    exhibitionImage,
+    exhibitionMaintain,
+    selectRadio,
+    exhibitionCrux,
+    exhibitionEnergy
   },
   },
   created() {
   created() {
     this.params = this.$route.query;
     this.params = this.$route.query;
@@ -93,6 +194,9 @@ export default {
     projectId() { }
     projectId() { }
   },
   },
   methods: {
   methods: {
+    deepCopy(obj) {
+      return JSON.parse(JSON.stringify(obj))
+    },
     // 返回
     // 返回
     goBack() {
     goBack() {
       this.$router.push({
       this.$router.push({
@@ -128,6 +232,10 @@ export default {
       Promise.all([promise1, promise2]).then(values => {
       Promise.all([promise1, promise2]).then(values => {
         this.pointData = values[0].Content;
         this.pointData = values[0].Content;
         this.exampleData = values[1].Content[0];
         this.exampleData = values[1].Content[0];
+        let obj = this.deepCopy(values[1].Content[0]);
+        obj = flattenKeys(obj);
+        this.instance = obj;
+        this.handleRadios(1)
         this.pointData.forEach(item => {
         this.pointData.forEach(item => {
           if (item.InputMode == "L" || item.InputMode == "L1" || item.InputMode == "L2" || item.InputMode == "M") {
           if (item.InputMode == "L" || item.InputMode == "L1" || item.InputMode == "L2" || item.InputMode == "M") {
             let cur = tools.dataForKey(this.exampleData, item.Path);
             let cur = tools.dataForKey(this.exampleData, item.Path);
@@ -139,7 +247,171 @@ export default {
             }
             }
           }
           }
         })
         })
+        let params = { //获取动态参数
+          secret: this.secret,
+          ProjId: this.projectId,
+          data: {
+            criterias: this.criterias
+          }
+        }
+        if (this.criterias.length) {
+          BeatchQueryParam(params, res => {
+            res.Content.map(child => {
+              this.pointData.forEach(head => {
+                if (head.InfoPointCode == child.code) {
+                  this.exhibitionEnergy.dynamic.push({
+                    InfoPointCode: head.InfoPointCode,
+                    InfoPointName: head.InfoPointName,
+                    Path: head.Path,
+                    value: child.value,
+                    data: child.data || '--',
+                    receivetime: child.receivetime || '',
+                    error: child.error || '',
+                    Unit: head.Unit || ''
+                  })
+                }
+              })
+            });
+          })
+        }
+      })
+    },
+    handleRadios(val) { //判断radio的值显示关键信息,基本信息,图片,文件
+      let arr = []
+      if (val == 1) { //需采集信息
+        arr = this.pointData.filter(i => i.Visible)
+        //关键信息点
+        this.exhibitionCrux.cruxArray = arr.filter(i => i.KeyWord) //todo 融合
+        //  图片和的处理
+        this.handlePicList(arr)
+        //  文件处理
+        this.handleFileList(arr)
+
+      } else if (val == 2) { //有值信息点
+        let list = this.pointData
+        list.map(j => {
+          if (this.exampleData.hasOwnProperty(j.Path)) {
+            return {
+              ...j,
+              value: this.exampleData[j.Path]
+            }
+          }
+          arr = list.filter(k => k.value)
+          this.handlePicList(arr)
+          this.handleFileList(arr)
+        })
+      } else { //全部信息点
+        arr = this.pointData
+        this.handlePicList(arr)
+        this.handleFileList(arr)
+      }
+      this.displayData(arr)
+    },
+    handlePicList(arr) {
+      let picObject = {}
+      //处理数据格式
+      arr.map(i => {
+        if (i.InputMode == 'F2') {
+          switch (i.Path) {
+            case 'LedgerParam.PhotoDoc.Drawing':
+            case 'LedgerParam.Siteinstall.InstallPic':
+            case 'LedgerParam.Siteinstall.InstallDrawing':
+            case 'LedgerParam.PhotoDoc.Nameplate':
+              if (this.instance.hasOwnProperty(i.Path)) {
+                i.PicList = this.instance[i.Path]
+              }
+              if (picObject[i.InfoPointName]) {
+
+              } else {
+                picObject[i.InfoPointName] = []
+              }
+              picObject[i.InfoPointName].push({
+                ...i,
+              })
+              break;
+
+          }
+        }
+
       })
       })
+      //展示图片
+      this.exhibitionImage.list = picObject
+    },
+    handleFileList(arr) {
+      let picObject = {}
+      //处理数据格式
+      arr.map(i => {
+        if (i.InputMode == 'F2') {
+          switch (i.Path) {
+            case 'LedgerParam.InsuranceDoc.InsuranceFile':
+            case 'LedgerParam.PhotoDoc.Archive':
+            case 'LedgerParam.Siteinstall.CheckReport':
+              if (this.instance.hasOwnProperty(i.Path)) {
+                i.fileList = this.instance[i.Path]
+              }
+              if (picObject[i.InfoPointName]) {
+
+              } else {
+                picObject[i.InfoPointName] = []
+              }
+
+              picObject[i.InfoPointName].push({
+                ...i,
+              })
+              break
+          }
+        }
+
+      })
+      //展示文件
+      this.exhibitionFile.list = picObject
+    },
+    changeRadio(val) { //1,需采集,2,有值,3,全部
+      this.handleRadios(val)
+      this.currentRadio = val
+    },
+    displayData(arr) {//对数据进行处理传给组件展示
+      const result = {}
+      arr.forEach(i => {
+        if (this.exampleData.hasOwnProperty(i.Path) && this.currentRadio != 2) {
+          i.value = this.exampleData[i.Path]
+        }
+        switch (i.InputMode) {
+          case "L":
+          case "L1":
+          case "L2":
+          case "M":
+          case 'F2':
+            break;
+          default:
+            if (result[`${i.FirstName}${i.SecondName ? '/' + i.SecondName : ''}`]) {
+              result[`${i.FirstName}${i.SecondName ? '/' + i.SecondName : ''}`].paths.push({
+                Path: i.Path,
+                InfoPointName: i.InfoPointName,
+                InfoPointCode: i.InfoPointCode,
+                Value: i.value,
+                Visible: i.Visible,
+                KeyWord: i.KeyWord
+              })
+            } else {
+              result[`${i.FirstName}${i.SecondName ? '/' + i.SecondName : ''}`] = {
+                paths: [{
+                  Path: i.Path,
+                  InfoPointName: i.InfoPointName,
+                  InfoPointCode: i.InfoPointCode,
+                  Value: i.value,
+                  Visible: i.Visible,
+                  KeyWord: i.KeyWord
+                }]
+              }
+            }
+
+        }
+
+
+      })
+      this.exhibitionBaseInformation.information = result
+      this.exhibitionCrux.allMessage = result
     },
     },
     // 设置iframe
     // 设置iframe
     setFrame() {
     setFrame() {
@@ -169,7 +441,8 @@ export default {
         this.getData()
         this.getData()
         this.$message("取消删除")
         this.$message("取消删除")
       })
       })
-    }
+    },
+
   }
   }
 };
 };
 </script>
 </script>
@@ -246,6 +519,7 @@ export default {
         margin-left: 10px;
         margin-left: 10px;
         .content-repair {
         .content-repair {
           height: 50px;
           height: 50px;
+          line-height: 50px;
           margin-bottom: 10px;
           margin-bottom: 10px;
           border: 1px solid #ccc;
           border: 1px solid #ccc;
           box-sizing: border-box;
           box-sizing: border-box;

+ 266 - 29
src/views/ledger/system/systemDetail/index.vue

@@ -19,20 +19,33 @@
       </el-row>
       </el-row>
       <div v-if="activeTab=='detail'" class="content">
       <div v-if="activeTab=='detail'" class="content">
         <div class="content-left">
         <div class="content-left">
-          <div class="content-showType"></div>
+          <div class="content-showType">
+            <selectRadio
+              :selectRadio="selectRadio"
+              @changeRadio="changeRadio"
+            />
+          </div>
           <div class="content-point">
           <div class="content-point">
             <div class="content-point-left">
             <div class="content-point-left">
               <el-scrollbar style="height:100%;">
               <el-scrollbar style="height:100%;">
-                <div style="height:1000px"></div>
+                <div>
+                  <exhibitionBaseInformation :exhibitionBaseInformation="exhibitionBaseInformation"/>
+                </div>
               </el-scrollbar>
               </el-scrollbar>
             </div>
             </div>
           </div>
           </div>
         </div>
         </div>
         <div class="content-right">
         <div class="content-right">
-          <div class="content-repair"></div>
+          <div class="content-repair">
+            <exhibitionMaintain :exhibitionMaintain="exhibitionMaintain"/>
+          </div>
           <div class="content-media">
           <div class="content-media">
             <el-scrollbar style="height:100%;">
             <el-scrollbar style="height:100%;">
-              <div style="height:1000px"></div>
+              <div>
+                <exhibitionImage :exhibitionImage="exhibitionImage"/>
+                <exhibitionVideo :exhibitionVideo="exhibitionVideo"/>
+                <exhibitionFile :exhibitionFile="exhibitionFile"/>
+              </div>
             </el-scrollbar>
             </el-scrollbar>
           </div>
           </div>
         </div>
         </div>
@@ -48,32 +61,110 @@
 </template>
 </template>
 
 
 <script>
 <script>
-import { mapGetters } from "vuex";
-import { getDataDictionary, queryLinkSys, deleteGeneralSys, queryDictionaryHead, buildingQuery } from '@/api/scan/request';
+  import {mapGetters} from "vuex";
+  import {
+    buildingQuery,
+    deleteGeneralSys,
+    getDataDictionary,
+    queryDictionaryHead,
+    queryLinkSys
+  } from '@/api/scan/request';
+
+  import cenoteTable from '@/components/ledger/system/table/cenoteTable';
+  import deviceTable from '@/components/ledger/system/table/deviceTable';
+  import spaceTable from '@/components/ledger/system/table/spaceTable';
+  import exhibitionBaseInformation from "@/components/ledger/details/detail/exhibitionBaseInformation";
+  import exhibitionFile from "@/components/ledger/details/detail/exhibitionFile";
+  import exhibitionImage from "@/components/ledger/details/detail/exhibitionImage";
+  import selectRadio from "@/components/ledger/details/detail/selectRadio";
+  import exhibitionMaintain from "@/components/ledger/details/detail/exhibitionMaintain";
+  import exhibitionVideo from "@/components/ledger/details/detail/exhibitionVideo";
+
+  function flattenKeys(obj) {
+    let res = {}
 
 
-import cenoteTable from '@/components/ledger/system/table/cenoteTable';
-import deviceTable from '@/components/ledger/system/table/deviceTable';
-import spaceTable from '@/components/ledger/system/table/spaceTable';
-import exhibitionBaseInformation from "@/components/ledger/details/detail/exhibitionBaseInformation";
-import exhibitionFile from "@/components/ledger/details/detail/exhibitionFile";
-import exhibitionImage from "@/components/ledger/details/detail/exhibitionImage";
-import selectRadio from "@/components/ledger/details/detail/selectRadio";
-export default {
-  data() {
-    return {
-      params: {}, //参数-包含系统id 分区类型
-      tabsList: [
-        { Code: 'detail', Name: '系统详情' },
-        { Code: 'Equipment', Name: '系统内设备' },
-        { Code: 'cenote', Name: '系统所在竖井' },
-        { Code: 'space', Name: '系统所在业务空间' },
-      ], //tab页
-      activeTab: 'detail', //当前选中的tab
-      pointData: [], //信息点数据
-      exampleData: {}, //实例数据
-      spaceType: {},//空间种类
-      floorType: {}
+    function isObject(val) {
+      return typeof val === 'object' && !Array.isArray(val)
+    }
+
+    function digKeys(prev, obj) {
+      Object.entries(obj).forEach(([key, value]) => {
+        const currentKey = prev ? `${prev}.${key}` : key
+        if (isObject(value)) {
+          digKeys(currentKey, value)
+        } else {
+          res[currentKey] = value
+        }
+      })
     }
     }
+
+    digKeys('', obj)
+    return res
+  }
+
+  export default {
+    data() {
+      return {
+        params: {}, //参数-包含系统id 分区类型
+        tabsList: [
+          {Code: 'detail', Name: '系统详情'},
+          {Code: 'Equipment', Name: '系统内设备'},
+          {Code: 'cenote', Name: '系统所在竖井'},
+          {Code: 'space', Name: '系统所在业务空间'},
+        ], //tab页
+        activeTab: 'detail', //当前选中的tab
+        pointData: [], //信息点数据
+        exampleData: {}, //实例数据
+        spaceType: {},//空间种类
+        floorType: {},
+        currentRadio: '',//当前选中的select
+        selectRadio: {
+          information: '设备信息点',
+          radioList: [
+            {
+              value: '显示需采集信息点',
+              label: '1'
+            },
+            {
+              value: '显示有值信息点',
+              label: '2'
+            },
+            {
+              value: '显示全部信息点',
+              label: '3'
+            }
+          ]
+        },
+        exhibitionBaseInformation: {
+          information: {},
+          style: 3
+        },
+        exhibitionEnergy: {
+          title: '能耗信息',
+          dynamic: [],
+        },
+        exhibitionMaintain: {
+          title: '维修/维保记录'
+        },
+        exhibitionFile: {
+          title: '文件',
+          list: {}
+        },
+        exhibitionCrux: {
+          title: '关键信息点:',
+          cruxArray: [],
+          allMessage: [],//全部信息点
+        },
+        exhibitionImage: {
+          title: '图片',
+          list: {}
+        },
+        exhibitionVideo: {
+          title: '视频',
+          list: {}
+        },
+        instance: {},//实例信息处理
+      }
   },
   },
   computed: {
   computed: {
     ...mapGetters("layout", ["projectId", "userId", "secret"])
     ...mapGetters("layout", ["projectId", "userId", "secret"])
@@ -85,7 +176,9 @@ export default {
     exhibitionBaseInformation,
     exhibitionBaseInformation,
     exhibitionFile,
     exhibitionFile,
     exhibitionImage,
     exhibitionImage,
-    selectRadio
+    selectRadio,
+    exhibitionMaintain,
+    exhibitionVideo
   },
   },
   created() {
   created() {
     this.params = this.$route.query;
     this.params = this.$route.query;
@@ -121,6 +214,7 @@ export default {
         }
         }
       });
       });
     });
     });
+
   },
   },
   mounted() { },
   mounted() { },
   watch: {
   watch: {
@@ -159,7 +253,149 @@ export default {
       Promise.all([promise1, promise2]).then(values => {
       Promise.all([promise1, promise2]).then(values => {
         this.pointData = values[0].Content;
         this.pointData = values[0].Content;
         this.exampleData = values[1].Content[0];
         this.exampleData = values[1].Content[0];
+        let obj = this.deepCopy(values[1].Content[0]);
+        obj = flattenKeys(obj);
+        this.instance = obj;
+        this.handleRadios(1)
+      })
+    },
+    deepCopy(obj) {
+      return JSON.parse(JSON.stringify(obj))
+    },
+    handleRadios(val) { //判断radio的值显示关键信息,基本信息,图片,文件
+      let arr = []
+      if (val == 1) { //需采集信息
+        arr = this.pointData.filter(i => i.Visible)
+        //  图片和的处理
+        this.handlePicList(arr)
+        //  文件处理
+        this.handleFileList(arr)
+
+      } else if (val == 2) { //有值信息点
+        let list = this.pointData
+        list.map(j => {
+          if (this.exampleData.hasOwnProperty(j.Path)) {
+            return {
+              ...j,
+              value: this.exampleData[j.Path]
+            }
+          }
+          arr = list.filter(k => k.value)
+          this.handlePicList(arr)
+          this.handleFileList(arr)
+        })
+      } else { //全部信息点
+        arr = this.pointData
+        this.handlePicList(arr)
+        this.handleFileList(arr)
+      }
+      this.displayData(arr)
+    },
+    handlePicList(arr) {
+      let picObject = {}
+      //处理数据格式
+      arr.map(i => {
+        if(i.InputMode == 'F2') {
+          switch (i.Path) {
+            case 'LedgerParam.PhotoDoc.Drawing':
+            case 'LedgerParam.Siteinstall.InstallPic':
+            case 'LedgerParam.Siteinstall.InstallDrawing':
+            case 'LedgerParam.PhotoDoc.Nameplate':
+              if (this.instance.hasOwnProperty(i.Path)) {
+                i.PicList = this.instance[i.Path]
+              }
+              if (picObject[i.InfoPointName]) {
+
+              } else {
+                picObject[i.InfoPointName] = []
+              }
+              picObject[i.InfoPointName].push({
+                ...i,
+              })
+              break;
+
+          }
+        }
+
+      })
+      //展示图片
+      this.exhibitionImage.list = picObject
+    },
+    handleFileList(arr) {
+      let picObject = {}
+      //处理数据格式
+      arr.map(i => {
+        if (i.InputMode == 'F2') {
+          switch (i.Path) {
+            case 'LedgerParam.InsuranceDoc.InsuranceFile':
+            case 'LedgerParam.PhotoDoc.Archive':
+            case 'LedgerParam.Siteinstall.CheckReport':
+              if (this.instance.hasOwnProperty(i.Path)) {
+                i.fileList = this.instance[i.Path]
+              }
+              if (picObject[i.InfoPointName]) {
+
+              } else {
+                picObject[i.InfoPointName] = []
+              }
+
+              picObject[i.InfoPointName].push({
+                ...i,
+              })
+              break
+          }
+        }
+
+      })
+      //展示文件
+      this.exhibitionFile.list = picObject
+    },
+    changeRadio(val) { //1,需采集,2,有值,3,全部
+      this.handleRadios(val)
+      this.currentRadio = val
+    },
+    displayData(arr) {//对数据进行处理传给组件展示
+      const result = {}
+      arr.forEach(i => {
+        if (this.exampleData.hasOwnProperty(i.Path) && this.currentRadio != 2) {
+          i.value = this.exampleData[i.Path]
+        }
+        switch (i.InputMode) {
+          case "L":
+          case "L1":
+          case "L2":
+          case "M":
+          case 'F2':
+            break;
+          default:
+            if (result[`${i.FirstName}${i.SecondName ? '/' + i.SecondName : ''}`]) {
+              result[`${i.FirstName}${i.SecondName ? '/' + i.SecondName : ''}`].paths.push({
+                Path: i.Path,
+                InfoPointName: i.InfoPointName,
+                InfoPointCode: i.InfoPointCode,
+                Value: i.value,
+                Visible: i.Visible,
+                KeyWord: i.KeyWord
+              })
+            } else {
+              result[`${i.FirstName}${i.SecondName ? '/' + i.SecondName : ''}`] = {
+                paths: [{
+                  Path: i.Path,
+                  InfoPointName: i.InfoPointName,
+                  InfoPointCode: i.InfoPointCode,
+                  Value: i.value,
+                  Visible: i.Visible,
+                  KeyWord: i.KeyWord
+                }]
+              }
+            }
+
+        }
+
+
       })
       })
+      this.exhibitionBaseInformation.information = result
+      this.exhibitionCrux.allMessage = result
     },
     },
     // 删除系统
     // 删除系统
     deleteSystem() {
     deleteSystem() {
@@ -253,6 +489,7 @@ export default {
         margin-left: 10px;
         margin-left: 10px;
         .content-repair {
         .content-repair {
           height: 50px;
           height: 50px;
+          line-height: 50px;
           margin-bottom: 10px;
           margin-bottom: 10px;
           border: 1px solid #ccc;
           border: 1px solid #ccc;
           box-sizing: border-box;
           box-sizing: border-box;