Prechádzať zdrojové kódy

Merge branch 'web-v2' of http://192.168.1.43:3000/git/sass-lab-web into web-v2

dedsudiyu 2 rokov pred
rodič
commit
715bc43104

+ 31 - 0
src/api/laboratory/subject.js

@@ -359,3 +359,34 @@ export function firedeviceDle(id) {
     method: 'delete'
   })
 }
+/* 预案执行记录 */
+//预案执行记录列表
+export function riskExeRecordList(query) {
+  return request({
+    url: '/laboratory/plan/group/riskExeRecordList',
+    method: 'get',
+    params: query
+  })
+}
+//预案执行记录-详情
+export function riskPlanAbnormalDesc(query) {
+  return request({
+    url: '/laboratory/plan/desc/riskPlanAbnormalDesc?groupId='+query,
+    method: 'get',
+  })
+}
+//风险轨迹
+export function abnormalLogOrderByList(query) {
+  return request({
+    url: '/laboratory/plan/log/abnormalLogOrderByList?groupId='+query,
+    method: 'get',
+  })
+}
+//消息推送记录
+export function viewWarnMessage(query) {
+  return request({
+    url: '/laboratory/bigview/'+query+'/warn/message',
+    method: 'get',
+  })
+}
+

+ 12 - 2
src/views/comprehensive/laboratoryManagement/subject/deviceList.vue

@@ -150,7 +150,6 @@
             <el-select v-model="form.type" placeholder="请选择设备类型" style="width:320px;" :disabled="disabledType">
               <el-option key="1" label="电源开关" value="1"></el-option>
               <el-option key="2" label="智能通风" value="2"></el-option>
-              <el-option key="10" label="一键灭火" value="10"></el-option>
             </el-select>
           </el-form-item>
           <el-form-item label="设备版本" prop="hardwareType">
@@ -166,6 +165,12 @@
           <el-form-item label="设备路由" prop="bit">
             <el-input v-model="form.bit" oninput="value=value.replace(/[^0-9.]/g,'')" maxlength="2" placeholder="请输入路由" style="width:320px;"></el-input>
           </el-form-item>
+          <el-form-item label="是否灭火主机" prop="isPcfire">
+            <el-radio-group v-model="form.isPcfire">
+              <el-radio :label="0">否</el-radio>
+              <el-radio :label="1">是</el-radio>
+            </el-radio-group>
+          </el-form-item>
           <el-form-item label="设备参数" prop="configName" v-if="form.hardwareType == 2">
             <el-input v-model="form.configName" maxlength="30" placeholder="请输入设备参数" style="width:320px;"></el-input>
           </el-form-item>
@@ -204,7 +209,9 @@ export default {
       listYtj:[],  //一体机
       listkzsb:[],
       listSpjk:[],   //摄像头
-      form:{},
+      form:{
+
+      },
       // 表单校验
       rules: {
         name:[
@@ -339,6 +346,7 @@ export default {
       let obj = {
         type:this.form.type,
         hardwareType:this.form.hardwareType,
+        isPcfire:this.form.isPcfire,
         relayCode:this.form.relayCode,
         bit:this.form.bit,
         configName:this.form.configName,
@@ -358,6 +366,7 @@ export default {
       let obj = {
         id:this.form.id,
         hardwareType:this.form.hardwareType,
+        isPcfire:this.form.isPcfire,
         relayCode:this.form.relayCode,
         bit:this.form.bit,
         configName:this.form.configName,
@@ -512,6 +521,7 @@ export default {
         this.$set(this,'form',{
           type:"",
           hardwareType:"",
+          isPcfire:0,
           relayCode:"",
           bit:"",
           configName:"",

+ 25 - 14
src/views/emergencyManagement/smartLoT/hardware/powerControl.vue

@@ -139,6 +139,12 @@
                 </el-option>
               </el-select>
             </el-form-item>
+            <el-form-item label="是否灭火主机" prop="isPcfire">
+              <el-radio-group v-model="form.isPcfire">
+                <el-radio :label="0">否</el-radio>
+                <el-radio :label="1">是</el-radio>
+              </el-radio-group>
+            </el-form-item>
             <el-form-item label="配置名称"  prop="relayCode" v-if="form.hardwareType==2">
               <el-input
                 v-model="form.configName"
@@ -215,7 +221,7 @@
         isUpdate:false,
         // 表单参数
         form: {
-          hardwareType:1
+          hardwareType:1,
         },
         // 表单校验
         rules: {
@@ -299,20 +305,23 @@
       // 开启关闭验证
       async changeIsNeedCaptcha (row) {
         let self = this;
-        console.log(row.status)
-        if(row.status!=3 && row.status!=4){
-          return
+        if(row.isPcfire!=1){
+          console.log(row.status)
+          if(row.status!=3 && row.status!=4){
+            return
+          }
+          let text = row.status==3?'关闭':(row.status==4?'开启':'')
+          this.$confirm(`是否`+text+`此设备`, "提示", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(async () => {
+            self.switchChange(row)
+          }).catch(() => {
+
+          })
         }
-        let text = row.status==3?'关闭':(row.status==4?'开启':'')
-        this.$confirm(`是否`+text+`此设备`, "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        }).then(async () => {
-          self.switchChange(row)
-        }).catch(() => {
 
-        })
       },
       //开关按钮
       switchChange(row){
@@ -612,7 +621,8 @@
           createBy: null,
           updateTime: null,
           updateBy: null,
-          remark: null
+          remark: null,
+          isPcfire: null
         };
         this.resetForm("form");
       },
@@ -649,6 +659,7 @@
         }];
         this.isUpdate=true;
         this.form.hardwareType=1;
+        this.form.isPcfire=0;
         this.form.type=this.pageType;
         this.drawer = true;
         this.title = "添加硬件";

+ 17 - 1
src/views/emergencyManagement/smartLoT/hardware/videoSurveillance.vue

@@ -135,6 +135,16 @@
                 </el-option>
               </el-select>
             </el-form-item>
+            <el-form-item label="硬件IP" prop="ipAddress">
+              <el-input
+                :disabled="disabledType"
+                v-model="form.ipAddress"
+                placeholder="请输入硬件IP"
+                clearable
+                size="small"
+                maxLength="20"
+              />
+            </el-form-item>
 
             <!--<el-form-item label="硬件位置" prop="position">-->
               <!--<div class="map-box" :style="'width:'+mapData.widthData*3+'px;height:'+mapData.heightData*3+'px;'">-->
@@ -236,7 +246,13 @@
             ],
             subjectId:[
                 { required: true, message: "请选择实验室", trigger: "blur" },
-            ]
+            ],
+           ipAddress: [
+              { required: true, message: "请输入硬件IP", trigger: "blur" },
+              { required: true, message: "请输入硬件IP", validator: this.spaceJudgment, trigger: "blur" }
+            ],
+
+
             // position: [
             //     { required: true, message: "请选择实验室", trigger: "blur" },
             // ],

+ 2 - 2
src/views/newEvacuationBigData.vue

@@ -885,7 +885,7 @@
         if(!self.putOutTheFireType){
           let obj = {
             subjectId:self.subId,
-            deviceCode:self.fireCode,
+            relayCode:self.fireCode,
           }
           outfirepc(obj).then(response => {
             if(response.data.waitTime){
@@ -1492,7 +1492,7 @@
               this.$set(this.fireData,'temperatureType',response.data.temperature);
               this.$set(this.fireData,'smokeType',response.data.smoke);
               this.$set(this.fireData,'flameType',response.data.fire);
-              this.$set(this,'fireCode',response.data.fireDevice.deviceCode);
+              this.$set(this,'fireCode',response.data.fireDevice.relayCode);
               this.offFireMQTT('on');
               if(response.data.temperature && response.data.smoke){
                 if(!this.fireStartType){

+ 15 - 12
src/views/oneKeyOutfire/planExecuteRecord/planExecuteRecord.vue

@@ -13,10 +13,10 @@
           />
         </el-form-item>
         <el-form-item label="预案属性" prop="zgType" label-width="80px">
-          <el-select v-model="queryParams.status" placeholder="请选择" clearable size="small">
+          <el-select v-model="queryParams.riskAttribute" placeholder="请选择" clearable size="small">
             <el-option label="全部" value="" />
-            <el-option label="在线" value="0" />
-            <el-option label="异常" value="1" />
+            <el-option label="火灾预案" value="1" />
+            <el-option label="非火灾预案" value="2" />
           </el-select>
         </el-form-item>
         <el-form-item>
@@ -25,14 +25,14 @@
         </el-form-item>
       </el-form>
       <el-table border v-loading="loading" :data="tableData">
-        <el-table-column label="预案名称" align="left" prop="userName"/>
-        <el-table-column label="实验室名称" align="left" prop="userNumber"></el-table-column>
-        <el-table-column label="预案属性" align="left" prop="deptName">
+        <el-table-column label="预案名称" align="left" prop="groupName"/>
+        <el-table-column label="实验室名称" align="left" prop="subjectName"></el-table-column>
+        <el-table-column label="预案属性" align="left" prop="riskAttribute">
           <template slot-scope="scope">
-            <span>{{scope.row.deptName==1?'火灾预案':(scope.row.deptName==2?'非火灾预案':'')}}</span>
+            <span>{{scope.row.riskAttribute==1?'火灾预案':(scope.row.riskAttribute==2?'非火灾预案':'')}}</span>
           </template>
         </el-table-column>
-        <el-table-column label="预案发生时间" align="left" prop="userTelephone"></el-table-column>
+        <el-table-column label="预案发生时间" align="left" prop="createTime"></el-table-column>
         <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="120">
           <template slot-scope="scope">
             <div class="button-box">
@@ -56,8 +56,8 @@
 
 <script>
 import {
-  labCenterPersonList,
-} from '@/api/gasManage3_0/gasManage'
+  riskExeRecordList,
+} from '@/api/laboratory/subject'
 import detailPage from "./planExecuteRecordDetail"
 export default {
   name: "Approval",
@@ -75,6 +75,7 @@ export default {
         pageNum: 1,
         pageSize:20,
         searchValue:'',
+        riskAttribute:'',
       },
       form:{
         tagCode:'',
@@ -91,6 +92,8 @@ export default {
         let _this=this;
         if(doType=='detail'){//详情
           _this.pageType=2;
+          _this.pageData=row;
+
         }else if(doType=='back'){//返回
           _this.pageType=1;
         }
@@ -104,12 +107,12 @@ export default {
     /** 重置按钮操作 */
     resetQuery() {
       this.queryParams.searchValue = "";
-      this.queryParams.deptIds = "";
+      this.queryParams.riskAttribute = "";
       this.handleQuery();
     },
     getList(){
         let _this=this;
-      labCenterPersonList(_this.queryParams).then( response => {
+      riskExeRecordList(_this.queryParams).then( response => {
           let res=response.rows;
           _this.tableData=res;
           _this.total=response.total;

+ 74 - 68
src/views/oneKeyOutfire/planExecuteRecord/planExecuteRecordDetail.vue

@@ -10,30 +10,32 @@
       <div class="addPage_b_t">
         <div class="addPage_b_t_l">
           <div class="small_title">风险概况</div>
-          <div class="addPage_b_t_l_b">
-            <li><i>事故原因:</i><i>甲烷气体泄露</i></li>
-            <li><i>风险级别:</i><i>中风险</i></li>
-            <li><i>发生时间:</i><i>2021年10月12日 12:02:36 - 12:03:05</i></li>
-            <li><i>持续时间:</i><i>29秒</i></li>
-            <li><i>风险响应人员:</i><i>曹秀康、杨虎城、刘波</i></li>
-            <li><i>实验室内人员:</i><i>姓名、姓名、姓名、姓名、姓名、姓名、姓名、姓名、姓名、姓名、姓名、姓名</i></li>
+          <div class="addPage_b_t_l_b" v-if="form">
+            <li><i>事故原因:</i><i>{{form.riskReason?form.riskReason:''}}</i></li>
+            <li v-if="form.riskReason==1"><i>风险级别:</i><i>低风险</i></li>
+            <li v-if="form.riskReason==2"><i>风险级别:</i><i>中风险</i></li>
+            <li v-if="form.riskReason==3"><i>风险级别:</i><i>较高风险</i></li>
+            <li v-if="form.riskReason==4"><i>风险级别:</i><i>高风险</i></li>
+            <li><i>发生时间:</i><i>{{form.startDate?form.startDate:''}} - {{form.endDate?form.endDate:''}}</i></li>
+            <li><i>持续时间:</i><i>{{form.riskDuration?form.riskDuration:''}}秒</i></li>
+            <li><i>风险响应人员:</i><i>{{form.handledPerson?form.handledPerson:''}}</i></li>
+            <li><i>实验室内人员:</i><i>{{form.internalPerson?form.internalPerson:''}}</i></li>
           </div>
         </div>
         <div class="addPage_b_t_c">
           <div class="small_title">现场记录<i>(预案发生一个月后将自动清理)</i></div>
-          <div class="addPage_b_t_c_b">
-            <img src="@/assets/images/login-background.jpg">
+          <div class="addPage_b_t_c_b"  v-if="form">
+<!--            <img src="@/assets/images/login-background.jpg">-->
+            <video class="video" :src="form.recordVideo?form.recordVideo:''"  autoplay controls ></video>
           </div>
         </div>
         <div class="addPage_b_t_r">
           <div class="small_title">消息推送记录</div>
-          <div class="addPage_b_t_r_b">
-            <li><i>12:05:06</i><i>语音播报</i><i>甲烷监测实验室</i></li>
-            <li><i>12:05:06</i><i>语音播报</i><i>甲烷监测实验室</i></li>
-            <li><i>12:05:06</i><i>语音播报</i><i>甲烷监测实验室</i></li>
-            <li><i>12:05:06</i><i>语音播报</i><i>甲烷监测实验室</i></li>
-            <li><i>12:05:06</i><i>语音播报</i><i>甲烷监测实验室</i></li>
-            <li><i>12:05:06</i><i>语音播报</i><i>甲烷监测实验室</i></li>
+          <div class="addPage_b_t_r_b" v-if="msgsPush.length>0">
+            <li v-for="(item,index3) in msgsPush" :key="index3">
+              <i>{{item.createTime}}</i>
+              <i>{{item.pushType.code==0?'语音播报':'短信推送'}}</i>
+              <i>{{item.showInfo}}</i></li>
           </div>
         </div>
       </div>
@@ -55,6 +57,13 @@
   </div>
 </template>
 <script>
+import {
+  abnormalLogOrderByList,
+  riskExeRecordList,
+  riskPlanAbnormalDesc,
+  viewWarnMessage
+} from '@/api/laboratory/subject'
+
 export default {
   name: "addPage",
   props:{
@@ -63,54 +72,9 @@ export default {
   data() {
     return {
       pageType:1,
-      planAxis:[
-        {
-          riskPlanName:'甲烷泄露(低风险)',
-          sensorJsonValue:'9',
-          createTime:'2021-12-10 14:00:01',
-        },
-        {
-          riskPlanName:'甲烷泄露(低风险)',
-          sensorJsonValue:'9',
-          createTime:'2021-12-10 14:00:01',
-        },
-        {
-          riskPlanName:'甲烷泄露(低风险)',
-          sensorJsonValue:'9',
-          createTime:'2021-12-10 14:00:01',
-        },
-        {
-          riskPlanName:'甲烷泄露(低风险)',
-          sensorJsonValue:'9',
-          createTime:'2021-12-10 14:00:01',
-        },
-        {
-          riskPlanName:'甲烷泄露(低风险)',
-          sensorJsonValue:'9',
-          createTime:'2021-12-10 14:00:01',
-        },
-        {
-          riskPlanName:'甲烷泄露(低风险)',
-          sensorJsonValue:'9',
-          createTime:'2021-12-10 14:00:01',
-        },
-        {
-          riskPlanName:'甲烷泄露(低风险)',
-          sensorJsonValue:'9',
-          createTime:'2021-12-10 14:00:01',
-        },
-        {
-          riskPlanName:'甲烷泄露(低风险)',
-          sensorJsonValue:'9',
-          createTime:'2021-12-10 14:00:01',
-        },
-        {
-          riskPlanName:'甲烷泄露(低风险)',
-          sensorJsonValue:'9',
-          createTime:'2021-12-10 14:00:01',
-        },
-      ]
-
+      planAxis:[],
+      form:{},
+      msgsPush:[],
     };
   },
   methods: {
@@ -119,9 +83,47 @@ export default {
       this.$parent.handleClick('','','back');
       this.$parent.getList();
     },
+    getInfo(){
+      let _this=this;
+      riskPlanAbnormalDesc(_this.pageData.id).then( response => {
+        let res=response.data;
+        if(response.code==200){
+            if(res){
+              _this.form=res
+              _this.form.endDate=res.endDate.split(' ')[1]
+            }
+        }
+      });
+      //风险轨迹
+      abnormalLogOrderByList(_this.pageData.id).then( response => {
+        let res=response.data;
+        if(response.code==200){
+          _this.planAxis=res;
+          for(let i=0;i< _this.planAxis.length;i++){
+            if( _this.planAxis[i].sensorJson){
+              _this.planAxis[i].sensorJsonValue = JSON.parse(_this.planAxis[i].sensorJson)[0].value;
+            }
+          }
+          console.log( _this.planAxis)
+        }
+      });
+      //消息推送记录
+      viewWarnMessage(_this.pageData.id).then( response => {
+        let res=response.data;
+        if(response.code==200){
+          let data=response.data;
+          _this.msgsPush=data
+        }
+      });
+
+
+
+    },
 
   },
   mounted() {
+    console.log(this.pageData)
+    this.getInfo();
 
 
   }
@@ -233,11 +235,15 @@ export default {
             width: 380px;
             height: 222px;
           }
+          .video{
+            width: 380px;
+            height: 222px;
+          }
         }
       }
       .addPage_b_t_r{
         .addPage_b_t_r_b{
-          width: 382px;
+          width: 456px;
           >li{
             margin-bottom: 20px;
             >i{
@@ -250,13 +256,13 @@ export default {
               display: inline-block;
             }
             >i:nth-of-type(1){
-              width: 92px;
+              width: 148px;
             }
             >i:nth-of-type(2){
-              width: 104px;
+              width: 84px;
             }
             >i:nth-of-type(3){
-              width: 182px;
+              width: 224px;
             }
           }
         }