干燥机配套车间生产管理系统/云平台前端
baoshiwei
2025-01-09 b1d02b024d353597483b4bb32e24ebd776008e0e
src/views/dry/bigScreen/BigEqp.vue
@@ -96,7 +96,7 @@
                        <div class="leftTop1">
                           <Icon icon="bi:fan" :size="50" />
                           <div>
                              <div class="mainInfo">{{ realData.trendVo?.fanFrequency | 0 }} Hz</div>
                              <div class="mainInfo">{{ realData?.trendVo?.fanFrequency | 0 }} Hz</div>
                              <div class="subhead">风机频率</div>
                           </div>
                        </div>
@@ -118,45 +118,236 @@
                           >
                              {{ statusTxt }}
                           </div>
                           <div v-if="realData?.warning" style="
                                 margin-left: 100px;
                                 font-size: 22px;
                                 background: sandybrown;
<!--                           <div v-if="realData?.warning" style=" -->
<!--                                 margin-left: 100px;-->
<!--                                 font-size: 22px;-->
<!--                                 background: sandybrown;-->
                                 border-radius: 10px;
                                 line-height: 25px;
                                 max-width: 500px;
                                 padding: 15px;
                                 font-weight: bold;" >
                              {{ realData?.warnMsg }}
                           </div>
                           <div
                              v-if="realData?.isError"
                              class="eqpInfoText blingbling outDiv"
                              style="
                                 position: absolute;
                                 font-size: 30px;
                                 max-height: 200px;
                                 max-width: 720px;
                                 margin-top: 300px;
                                 border-radius: 10px;
                                 background-color: #ce0000;
                                 color: white;
                                 padding: 10px 30px;
                              "
                           >
                              <div class="outDiv">
                                 <div><Icon icon="bx:error" :size="30" /> </div>
                                 <div
                                    ><span>{{ realData?.errorMsg }}</span></div
                                 >
                              </div>
                           </div>
<!--                                 border-radius: 10px;-->
<!--                                 line-height: 25px;-->
<!--                                 max-width: 500px;-->
<!--                                 padding: 15px;-->
<!--                                 font-weight: bold;" >-->
<!--                              {{ realData?.warnMsg }}-->
<!--                           </div>-->
<!--                           -->
<!--                           <div-->
<!--                              v-if="realData?.isError"-->
<!--                              class="eqpInfoText blingbling outDiv"-->
<!--                              style="-->
<!--                                 position: absolute;-->
<!--                                 font-size: 30px;-->
<!--                                 max-height: 200px;-->
<!--                                 max-width: 720px;-->
<!--                                 margin-top: 300px;-->
<!--                                 border-radius: 10px;-->
<!--                                 background-color: #ce0000;-->
<!--                                 color: white;-->
<!--                                 padding: 10px 30px;-->
<!--                              "-->
<!--                           >-->
<!--                              <div class="outDiv">-->
<!--                                 <div><Icon icon="bx:error" :size="30" /> </div>-->
<!--                                 <div-->
<!--                                    ><span>{{ realData?.errorMsg }}</span></div-->
<!--                                 >-->
<!--                              </div>-->
<!--                           </div>-->
                        </div>
                     </div>
              <div style="width: 848px; height: 485px; position: absolute;" @click="showFault">
                <div v-if="zuoqianjiting" class="error-div" style=" top:309px; left:418px">
                  <div class="blingbling error-marker" ></div>
                  <div class="error-msg" style="width: 70px;">
                    &nbsp;&nbsp;左前急停
                  </div>
                </div>
                <div v-if="shebeijiting" class="error-div"  style=" top:111px; left:484px">
                  <div class="blingbling error-marker" ></div>
                  <div class="error-msg" style=" width: 106px;">
                    &nbsp;&nbsp;设备急停(总)
                  </div>
                </div>
                <div v-if="chuliaojiting" class="error-div"  style=" top:300px; left:129px">
                  <div class="blingbling error-marker" ></div>
                  <div class="error-msg" style=" width: 70px;">
                    &nbsp;&nbsp;出料急停
                  </div>
                </div>
                <div v-if="mianbanjiting" class="error-div"  style=" top:258px; left:659px">
                  <div class="blingbling error-marker" ></div>
                  <div class="error-msg" style=" width: 70px;">
                    &nbsp;&nbsp;面板急停
                  </div>
                </div>
                <div v-if="fengxiangsheng" class="error-div"  style=" top:294px; left:517px">
                  <div class="blingbling error-marker" ></div>
                  <div class="error-msg" style=" width: 86px;">
                    &nbsp;&nbsp;风箱升异常
                  </div>
                </div>
                <div v-if="fengxiangjiang" class="error-div"  style=" top:319px; left:517px">
                  <div class="blingbling error-marker" ></div>
                  <div class="error-msg" style=" width: 86px;">
                    &nbsp;&nbsp;风箱降异常
                  </div>
                </div>
                <div v-if="fengjiguoliu" class="error-div"  style=" top:335px; left:655px">
                  <div class="blingbling error-marker" ></div>
                  <div class="error-msg" style=" width: 70px;">
                    &nbsp;&nbsp;风机过流
                  </div>
                </div>
                <div v-if="guntongsheng" class="error-div"  style=" top:198px; left:517px">
                  <div class="blingbling error-marker" ></div>
                  <div class="error-msg" style=" width: 86px;">
                    &nbsp;&nbsp;滚筒升异常
                  </div>
                </div>
                <div v-if="guntongjiang" class="error-div"  style=" top:223px; left:517px">
                  <div class="blingbling error-marker" ></div>
                  <div class="error-msg" style=" width: 86px;">
                    &nbsp;&nbsp;滚筒降异常
                  </div>
                </div>
                <div v-if="guntongguoliu" class="error-div"  style=" top:209px; left:642px">
                  <div class="blingbling error-marker" ></div>
                  <div class="error-msg" style=" width: 70px;">
                    &nbsp;&nbsp;滚筒过流
                  </div>
                </div>
                <div v-if="wendubaojing" class="error-div"  style=" top:234px; left:659px">
                  <div class="blingbling error-marker" ></div>
                  <div class="error-msg" style=" width: 70px;">
                    &nbsp;&nbsp;温度报警
                  </div>
                </div>
                <div v-if="zuoqianmen" class="error-div"  style=" top:388px; left:415px">
                  <div class="blingbling warn-marker" ></div>
                  <div class="warn-msg" style=" width: 80px;">
                    &nbsp;&nbsp;左前门报警
                  </div>
                </div>
                <div v-if="zuohoumen" class="error-div"  style=" top:367px; left:587px">
                  <div class="blingbling warn-marker" ></div>
                  <div class="warn-msg" style=" width: 80px;">
                    &nbsp;&nbsp;左后门报警
                  </div>
                </div>
                <div v-if="youqianmen" class="error-div"  style=" top:388px; left:284px">
                  <div class="blingbling warn-marker" ></div>
                  <div class="warn-msg" style=" width: 80px;">
                    &nbsp;&nbsp;右前门报警
                  </div>
                </div>
                <div v-if="youhoumen" class="error-div"  style=" top:367px; left:478px">
                  <div class="blingbling warn-marker" ></div>
                  <div class="warn-msg" style=" width: 80px;">
                    &nbsp;&nbsp;右后门报警
                  </div>
                </div>
                <div v-if="guntongbuzaigaowei" class="error-div"  style=" top:173px; left:517px">
                  <div class="blingbling warn-marker" ></div>
                  <div class="warn-msg" style=" width: 100px;">
                    &nbsp;&nbsp;滚筒不在高位
                  </div>
                </div>
                <div v-if="fengxiangbuzaigaowei" class="error-div"  style=" top:269px; left:517px">
                  <div class="blingbling warn-marker" ></div>
                  <div class="warn-msg" style=" width: 100px;">
                    &nbsp;&nbsp;风箱不在高位
                  </div>
                </div>
                <div v-if="fengxiangbuzaidiwei" class="error-div"  style=" top:343px; left:517px">
                  <div class="blingbling warn-marker" ></div>
                  <div class="warn-msg" style=" width: 100px;">
                    &nbsp;&nbsp;风箱不在低位
                  </div>
                </div>
                <div v-if="jiareweichuanganqi" class="error-div"  style=" top:283px; left:642px">
                  <div class="blingbling warn-marker" ></div>
                  <div class="warn-msg" style=" width: 126px;">
                    &nbsp;&nbsp;加热位传感器报警
                  </div>
                </div>
                <div v-if="zuoqianfengxianggaowei" class="error-div"  style=" top:334px; left:362px">
                  <div class="blingbling warn-marker" ></div>
                  <div class="warn-msg" style=" width: 126px;">
                    &nbsp;&nbsp;左前风箱不在高位
                  </div>
                </div>
                <div v-if="zuoqianfengxiangdiwei" class="error-div"  style=" top:334px; left:362px">
                  <div class="blingbling warn-marker" ></div>
                  <div class="warn-msg" style=" width: 126px;">
                    &nbsp;&nbsp;左前风箱不在低位
                  </div>
                </div>
                <div v-if="zuohoufengxianggaowei" class="error-div"  style=" top:309px; left:642px">
                  <div class="blingbling warn-marker" ></div>
                  <div class="warn-msg" style=" width: 126px;">
                    &nbsp;&nbsp;左后风箱不在高位
                  </div>
                </div>
                <div v-if="zuohoufengxiangdiwei" class="error-div"  style=" top:309px; left:642px">
                  <div class="blingbling warn-marker" ></div>
                  <div class="warn-msg" style=" width: 126px;">
                    &nbsp;&nbsp;左后风箱不在低位
                  </div>
                </div>
                <div v-if="youqianfengxianggaowei" class="error-div"  style=" top:272px; left:300px">
                  <div class="blingbling warn-marker" ></div>
                  <div class="warn-msg" style=" width: 126px;">
                    &nbsp;&nbsp;右前风箱不在高位
                  </div>
                </div>
                <div v-if="youqianfengxiangdiwei" class="error-div"  style=" top:272px; left:300px">
                  <div class="blingbling warn-marker" ></div>
                  <div class="warn-msg" style=" width: 126px;">
                    &nbsp;&nbsp;右前风箱不在低位
                  </div>
                </div>
                <div v-if="youhoufengxianggaowei" class="error-div"  style=" top:246px; left:506px">
                  <div class="blingbling warn-marker" ></div>
                  <div class="warn-msg" style=" width: 126px;">
                    &nbsp;&nbsp;右后风箱不在高位
                  </div>
                </div>
                <div v-if="youhoufengxiangdiwei" class="error-div"  style=" top:246px; left:506px">
                  <div class="blingbling warn-marker" ></div>
                  <div class="warn-msg" style=" width: 126px;">
                    &nbsp;&nbsp;右后风箱不在低位
                  </div>
                </div>
                <div v-if="zuoqianguntongdiwei" class="error-div"  style=" top:175px; left:358px">
                  <div class="blingbling warn-marker" ></div>
                  <div class="warn-msg" style=" width: 126px;">
                    &nbsp;&nbsp;左前滚筒不在低位
                  </div>
                </div>
                <div v-if="zuohouguntongdiwei" class="error-div"  style=" top:158px; left:643px">
                  <div class="blingbling warn-marker" ></div>
                  <div class="warn-msg" style=" width: 126px;">
                    &nbsp;&nbsp;左后滚筒不在低位
                  </div>
                </div>
                <div v-if="youqianguntongdiwei" class="error-div"  style=" top:150px; left:268px">
                  <div class="blingbling warn-marker" ></div>
                  <div class="warn-msg" style=" width: 126px;">
                    &nbsp;&nbsp;右前滚筒不在低位
                  </div>
                </div>
                <div v-if="youhouguntongdiwei" class="error-div"  style=" top:135px; left:506px">
                  <div class="blingbling warn-marker" ></div>
                  <div class="warn-msg" style=" width: 126px;">
                    &nbsp;&nbsp;右后滚筒不在低位
                  </div>
                </div>
              </div>
                  </dv-border-box7>
                  <dv-border-box7 class="infoChart" style="margin-left: 0px; margin-right: 10px">
                     <div class="chartTittle">风箱温度</div>
@@ -170,7 +361,7 @@
                     <div class="chartTittle">实时进度</div>
                     <div id="efficiencyLine" style="width: 848px; height: 180px; margin-top: -10px"></div>
                     <div style="height: 10px; display: flex; width: 848px; padding: 0 60px; justify-content: space-between">
                        <div style="width: 100px; height: 20px">{{ realData.dryTime | 0 }} min</div>
                        <div style="width: 100px; height: 20px">{{ realData?.dryTime | 0 }} min</div>
                        <div style="width: 100px; height: 20px; text-align: right">{{ realData?.totalTime | 0 }} min</div>
                     </div>
                     <div id="progressBar" style="width: 848px; height: 80px"></div>
@@ -205,8 +396,8 @@
                        <div class="chartTittle">
                           干燥效率(kg/h)
                           <div class="rightLabel">
                              <div class="label good">&gt;{{ eqp.dryEfficiency }} 优 </div>
                              <div class="label bad">&lt;{{ eqp.dryEfficiency * 0.9.toFixed(2) }} 差</div>
                              <div class="label good">&gt;{{ realData?.efficAvg?.toFixed(2) }} 优 </div>
                              <div class="label bad">&lt;{{ ((realData?.efficAvg|0) * 0.9)?.toFixed(2) }} 差</div>
                           </div>
                        </div>
                        <div class="outDiv" style="padding-top: 20px">
@@ -228,7 +419,7 @@
                           </div>
                           <div class="rightChart center">
                              <div class="center compareBar">
                                 <div class="barTop">{{ eqp.dryEfficiency }}</div>
                                 <div class="barTop">{{ realData?.efficAvg?.toFixed(2) }}</div>
                                 <div class="barBack">
                                    <div class="barDiv" :style="{ height: realData?.xlsHeight }"></div>
                                 </div>
@@ -239,7 +430,7 @@
                                 </div>
                              </div>
                              <div class="center compareBar">
                                 <div class="barTop">{{ realData?.xiaolv || 0 }}</div>
                                 <div class="barTop">{{ realData?.xiaolv?.toFixed(2) || 0 }}</div>
                                 <div class="barBack">
                                    <div
                                       class="barDiv"
@@ -262,8 +453,8 @@
                        <div class="chartTittle"
                           >蒸汽消耗(m³/kg)
                           <div class="rightLabel">
                              <div class="label bad">&gt;{{ eqp.steamConsumption }} 差</div>
                              <div class="label good">&lt;{{ eqp.steamConsumption * 0.9.toFixed(2) }} 优</div>
                              <div class="label bad">&gt;{{ realData?.steamAvg?.toFixed(2) }} 差</div>
                              <div class="label good">&lt;{{ ((realData?.steamAvg|0) * 0.9).toFixed(2) }} 优</div>
                           </div>
                        </div>
                        <div class="outDiv" style="padding-top: 20px">
@@ -279,7 +470,7 @@
                           </div>
                           <div class="rightChart center">
                              <div class="center compareBar">
                                 <div class="barTop">{{ eqp.steamConsumption }}</div>
                                 <div class="barTop">{{ realData?.steamAvg?.toFixed(2) }}</div>
                                 <div class="barBack">
                                    <div class="barDiv" :style="{ height: realData?.zqsHeight }"></div>
                                 </div>
@@ -290,7 +481,7 @@
                                 </div>
                              </div>
                              <div class="center compareBar">
                                 <div class="barTop">{{ realData?.zhengqi || 0 }}</div>
                                 <div class="barTop">{{ realData?.zhengqi?.toFixed(2) || 0 }}</div>
                                 <div class="barBack">
                                    <div
                                       class="barDiv"
@@ -318,8 +509,8 @@
                        <div class="chartTittle">
                           <div> 电能消耗(kWh/kg)</div>
                           <div class="rightLabel">
                              <div class="label bad">&gt;{{ eqp.powerConsumption }} 差</div>
                              <div class="label good">&lt;{{ eqp.powerConsumption * 0.9.toFixed(2) }} 优</div>
                              <div class="label bad">&gt;{{ realData?.wattAvg?.toFixed(3) }} 差</div>
                              <div class="label good">&lt;{{ ((realData?.wattAvg|0) * 0.9).toFixed(3) }} 优</div>
                           </div>
                        </div>
                        <div class="outDiv" style="padding-top: 20px">
@@ -335,7 +526,7 @@
                           </div>
                           <div class="rightChart center">
                              <div class="center compareBar">
                                 <div class="barTop">{{ eqp.powerConsumption }}</div>
                                 <div class="barTop">{{ realData?.wattAvg?.toFixed(3) }}</div>
                                 <div class="barBack">
                                    <div class="barDiv" :style="{ height: realData?.dnsHeight }"></div>
                                 </div>
@@ -346,7 +537,7 @@
                                 </div>
                              </div>
                              <div class="center compareBar">
                                 <div class="barTop">{{ realData?.dian || 0 }}</div>
                                 <div class="barTop">{{ realData?.dian?.toFixed(3) || 0 }}</div>
                                 <div class="barBack">
                                    <div
                                       class="barDiv"
@@ -524,6 +715,40 @@
   var efficiencyLineChart: echarts.ECharts
   var compareChart: echarts.ECharts
  //----------------error----------------
  const shebeijiting = ref(false)
  const chuliaojiting = ref(false)
  const zuoqianjiting = ref(false)
  const mianbanjiting = ref(false)
  const fengxiangsheng = ref(false)
  const fengxiangjiang = ref(false)
  const fengjiguoliu = ref(false)
  const guntongsheng = ref(false)
  const guntongjiang = ref(false)
  const guntongguoliu = ref(false)
  const wendubaojing = ref(false)
  //--------------warning------------
  const zuoqianmen = ref(false)
  const zuohoumen = ref(false)
  const youqianmen = ref(false)
  const youhoumen = ref(false)
  const guntongbuzaigaowei = ref(false)
  const fengxiangbuzaigaowei = ref(false)
  const fengxiangbuzaidiwei = ref(false)
  const jiareweichuanganqi = ref(false)
  const zuoqianfengxianggaowei = ref(false)
  const zuohoufengxianggaowei = ref(false)
  const youqianfengxianggaowei = ref(false)
  const youhoufengxianggaowei = ref(false)
  const zuoqianfengxiangdiwei = ref(false)
  const zuohoufengxiangdiwei = ref(false)
  const youqianfengxiangdiwei = ref(false)
  const youhoufengxiangdiwei = ref(false)
  const zuoqianguntongdiwei = ref(false)
  const zuohouguntongdiwei = ref(false)
  const youqianguntongdiwei = ref(false)
  const youhouguntongdiwei = ref(false)
   function initCharts() {
      let domId = 'moisChart'
@@ -1167,9 +1392,7 @@
                  width: 1,
               },
               // [[15,10], [15,11], [10,6], [7.5,12], [5,12], [2.5,5], [2.5,9], [1,7]]
               data: [
               ],
               data: [],
               markPoint: {
                  data: [
                     { type: 'max', name: 'Max' },
@@ -1181,7 +1404,7 @@
                  data: [
                     {
                        name: '额定',
                        yAxis: eqp.value.dryEfficiency,
                        yAxis: 100,
                     },
                  ],
                  label: {
@@ -1327,7 +1550,11 @@
      statusGif = 'chaiwangban-1'
      setTimeout(shangliao, 7000)
   }
  function showFault () {
    console.log('showFault')
    router.push({ path: '/bigFault', query: {  num: num } })
  }
   function shangliao() {
      statusGif = 'shangliao-N'
      setTimeout(() => {
@@ -1398,10 +1625,11 @@
               /**干燥进度、走势与阶段效率和阶段消耗 */
               if (res && res.detailList) {
                  var progressSeries = []
                  var ganZaoXiaoLv = []
                  var zhengQiXiaoHao = []
                  var dianNengXiaoHao = []
                  var totalTime = 1
                  var ganZaoXiaoLv = []
                  var totalTime = 0
                  var beforeWeight = 0
                  res.moisList = []
                  beforeWeight = res.originWeight
@@ -1410,7 +1638,7 @@
                     //console.log(`output->bef`, beforeWeight)
                     //console.log(`output->cur`, item.weight)
                     res.moisList.push([item.totalTime, item.moisture])
                     //console.log(`output->totalTime,item.totalTime`, totalTime, item.totalTime)
                     // console.log(`output->totalTime,item.totalTime`, totalTime, item.totalTime)
                     var curDryTime = item.totalTime - totalTime
                     if (curDryTime > 0) {
@@ -1495,6 +1723,7 @@
                  }
                  res.totalTime = totalTime + res.remain
                  console.log("efficAvg::",res.efficAvg);
                  /**干燥效率、消耗 */
                  if (efficiencyLineChart) {
                     //console.log(`output->ganZaoXiaoLv`, ganZaoXiaoLv)
@@ -1504,13 +1733,14 @@
                        },
                        series: [
                           {
                    name: '干燥效率',
                              data: ganZaoXiaoLv,
                              markLine: {
                                 symbol: 'none',
                                 data: [
                                    {
                                       name: '额定',
                                       yAxis: eqp.value.dryEfficiency,
                                       yAxis: res.efficAvg|0,
                                    },
                                 ],
                                 label: {
@@ -1519,8 +1749,8 @@
                                 },
                              },
                           },
                           { data: zhengQiXiaoHao },
                           { data: dianNengXiaoHao },
                           // { data: zhengQiXiaoHao },
                           // { data: dianNengXiaoHao },
                        ],
                     })
                  }
@@ -1574,69 +1804,69 @@
               if (res.originWeight - lastTrend.weight <= 0) {
                  res.xiaolv = 0
               } else {
                  res.xiaolv = (((res.originWeight - lastTrend.weight) / lastTrend.totalTime) * 60).toFixed(2)
                  res.xiaolv = ((res.originWeight - lastTrend.weight) / lastTrend.totalTime) * 60
               }
               res.xiaolv = Number(res.xiaolv) 
               eqp.value.dryEfficiency = Number(eqp.value.dryEfficiency)
               if (res.xiaolv > eqp.value.dryEfficiency) {
               //eqp.value.dryEfficiency = Number(eqp.value.dryEfficiency)
               if (res.xiaolv > res.efficAvg) {
                  console.log("xiaolv:",res , eqp);
                  res.xlgood = true
                  res.xlsHeight = (eqp.value.dryEfficiency / res.xiaolv) * 100 + '%'
                  res.xlsHeight = (res.efficAvg / res.xiaolv) * 100 + '%'
                  res.xlrHeight = '100%'
               } else if (res.xiaolv < eqp.value.dryEfficiency * 0.9) {
               } else if (res.xiaolv < res.efficAvg * 0.9) {
                  res.xlbad = true
                  res.xlsHeight = '100%'
                  res.xlrHeight = (res.xiaolv / eqp.value.dryEfficiency) * 100 + '%'
                  res.xlrHeight = (res.xiaolv / res.efficAvg) * 100 + '%'
               } else {
                  res.xlsHeight = '100%'
                  res.xlrHeight = (res.xiaolv / eqp.value.dryEfficiency) * 100 + '%'
                  res.xlrHeight = (res.xiaolv / res.efficAvg) * 100 + '%'
               }
               /** 蒸汽消耗 */
               if (res.originWeight - lastTrend.weight <= 0) {
                  res.zhengqi = 0
               } else {
                  res.zhengqi = (lastTrend.steam / (res.originWeight - lastTrend.weight)).toFixed(2)
                  res.zhengqi = lastTrend.steam / (res.originWeight - lastTrend.weight)
               }
               res.zhengqi = Number(res.zhengqi) 
               eqp.value.steamConsumption = Number(eqp.value.steamConsumption)
               //eqp.value.steamConsumption = Number(eqp.value.steamConsumption)
               // res.zhengqi = eqp.value.steamConsumption - 3
               // console.log(res);
               // console.log('zhengqi:', res.zhengqi);
               if (res.zhengqi > eqp.value.steamConsumption) {
               if (res.zhengqi > res.steamAvg) {
                  res.zqbad = true
                  res.zqsHeight = (eqp.value.steamConsumption / res.zhengqi) * 100 + '%'
                  res.zqsHeight = (res.steamAvg / res.zhengqi) * 100 + '%'
                  res.zqrHeight = '100%'
               } else if (res.zhengqi < eqp.value.steamConsumption * 0.9) {
               } else if (res.zhengqi < res.steamAvg * 0.9) {
                  res.zqgood = true
                  res.zqsHeight = '100%'
                  res.zqrHeight = (res.zhengqi / eqp.value.steamConsumption) * 100 + '%'
                  res.zqrHeight = (res.zhengqi / res.steamAvg) * 100 + '%'
               } else {
                  res.zqsHeight = '100%'
                  res.zqrHeight = (res.zhengqi / eqp.value.steamConsumption) * 100 + '%'
                  res.zqrHeight = (res.zhengqi / res.steamAvg) * 100 + '%'
               }
               /** 电能消耗 */
               if (res.originWeight - lastTrend.weight <= 0) {
                  res.dian = 0
               } else {
                  res.dian = (lastTrend.watt / (res.originWeight - lastTrend.weight)).toFixed(2)
                  res.dian = lastTrend.watt / (res.originWeight - lastTrend.weight)
               }
               // res.dian = eqp.value.powerConsumption - 1.5
               res.dian = Number(res.dian) 
               eqp.value.powerConsumption = Number(eqp.value.powerConsumption)
               if (res.dian > eqp.value.powerConsumption) {
                  console.log("dian::", res.dian,eqp.value.powerConsumption )
               //eqp.value.powerConsumption = Number(eqp.value.powerConsumption)
               if (res.dian > res.wattAvg) {
                  console.log("dian::", res.dian,res.wattAvg )
                  res.dnbad = true
                  res.dnsHeight = (eqp.value.powerConsumption / res.dian) * 100 + '%'
                  res.dnsHeight = (res.wattAvg / res.dian) * 100 + '%'
                  res.dnrHeight = '100%'
               } else if (res.dian < eqp.value.powerConsumption * 0.9) {
               } else if (res.dian < res.wattAvg * 0.9) {
                  res.dngood = true
                  res.dnsHeight = '100%'
                  res.dnrHeight = (res.dian / eqp.value.powerConsumption) * 100 + '%'
                  res.dnrHeight = (res.dian / res.wattAvg) * 100 + '%'
               } else {
                  res.dnsHeight = '100%'
                  res.dnrHeight = (res.dian / eqp.value.powerConsumption) * 100 + '%'
                  res.dnrHeight = (res.dian / res.wattAvg) * 100 + '%'
               }
               //console.log('state:::fan::', res.state_fan, 'roller::', res.state_roller, 'windbox::', res.state_windbox)
@@ -1720,17 +1950,211 @@
               } else if (res.herbName == '桑白皮') {
                  res.herbImage = 'sangbaipi.png'
               }
               res.isError = false
               if (res.fault) {
                  res.isError = true
                  res.errorMsg = res.fault
               }
               if (res.warning) {
                  res.isWarning = true
                  res.warnMsg = res.warning
               }
          res.isError = false
          if (res.fault) {
            res.isError = true
            res.errorMsg = res.fault;
            const faults = res.fault;
            console.log('errorMsg:', res.fault)
            if (faults.includes('急停报警')) {
              shebeijiting.value = true;
            } else {
              shebeijiting.value = false;
            }
            if (faults.includes('左前急停')) {
              zuoqianjiting.value = true;
            } else {
              zuoqianjiting.value = false;
            }
            if (faults.includes('面板急停')) {
              mianbanjiting.value = true;
            } else {
              mianbanjiting.value = false;
            }
            if (faults.includes('出料急停')) {
              chuliaojiting.value = true;
            } else {
              chuliaojiting.value = false;
            }
            if (faults.includes('温度失控')) {
              wendubaojing.value = true;
            } else {
              wendubaojing.value = false;
            }
            if (faults.includes('滚筒升')) {
              guntongsheng.value = true;
            } else {
              guntongjiang.value = false;
            }
            if (faults.includes('滚筒降')) {
              guntongjiang.value = true;
            } else {
              guntongjiang.value = false;
            }
            if (faults.includes('滚筒电机过流')) {
              guntongguoliu.value = true;
            } else {
              guntongguoliu.value = false;
            }
            if (faults.includes('风箱升')) {
              fengxiangsheng.value = true;
            } else {
              fengxiangsheng.value = false;
            }
            if (faults.includes('风箱降')) {
              fengxiangjiang.value = true;
            } else {
              fengxiangjiang.value = false;
            }
            if (faults.includes('风箱风机过流')) {
              fengjiguoliu.value = true;
            } else {
              fengjiguoliu.value = false;
            }
          }
          else {
             shebeijiting.value = false
             chuliaojiting.value = false
             zuoqianjiting.value = false
             mianbanjiting.value = false
             fengxiangsheng.value = false
             fengxiangjiang.value = false
             fengjiguoliu.value = false
             guntongsheng.value = false
             guntongjiang.value = false
             guntongguoliu.value = false
             wendubaojing.value = false
          }
          if (res.warning) {
            res.isWarning = true
            res.warnMsg = res.warning
            const warnings = res.warning;
            console.log('warnMsg:', res.warning)
            if (warnings.includes('左前门')) {
              zuoqianmen.value = true;
            } else {
              zuoqianmen.value = false;
            }
            if (warnings.includes('右前门')) {
              youqianmen.value = true;
            } else {
              youqianmen.value = false;
            }
            if (warnings.includes('左后门')) {
              zuohoumen.value = true;
            } else {
              zuohoumen.value = false;
            }
            if (warnings.includes('右后门')) {
              youhoumen.value = true;
            } else {
              youhoumen.value = false;
            }
            if (warnings.includes('滚筒不在高位')) {
              guntongbuzaigaowei.value = true;
            } else {
              guntongbuzaigaowei.value = false;
            }
            if (warnings.includes('风箱不在低位')) {
              fengxiangbuzaidiwei.value = true;
            } else {
              fengxiangbuzaidiwei.value = false;
            }
            if (warnings.includes('风箱不在高位')) {
              fengxiangbuzaigaowei.value = true;
            } else {
              fengxiangbuzaigaowei.value = false;
            }
            if (warnings.includes('加热位传感器')) {
              jiareweichuanganqi.value = true;
            } else {
              jiareweichuanganqi.value = false;
            }
            if (warnings.includes('左前风箱高位传感器')) {
              zuoqianfengxianggaowei.value = true;
            } else {
              zuoqianfengxianggaowei.value = false;
            }
            if (warnings.includes('右前风箱高位传感器')) {
              youqianfengxianggaowei.value = true;
            } else {
              youqianfengxianggaowei.value = false;
            }
            if (warnings.includes('左后风箱高位传感器')) {
              zuohoufengxianggaowei.value = true;
            } else {
              zuohoufengxianggaowei.value = false;
            }
            if (warnings.includes('右后风箱高位传感器')) {
              youhoufengxianggaowei.value = true;
            } else {
              youhoufengxianggaowei.value = false;
            }
            if (warnings.includes('左前风箱低位传感器')) {
              zuoqianfengxiangdiwei.value = true;
            } else {
              zuoqianfengxiangdiwei.value = false;
            }
            if (warnings.includes('右前风箱低位传感器')) {
              youqianfengxiangdiwei.value = true;
            } else {
              youqianfengxiangdiwei.value = false;
            }
            if (warnings.includes('左后风箱低位传感器')) {
              zuohoufengxiangdiwei.value = true;
            } else {
              zuohoufengxiangdiwei.value = false;
            }
            if (warnings.includes('右后风箱低位传感器')) {
              youhoufengxiangdiwei.value = true;
            } else {
              youhoufengxiangdiwei.value = false;
            }
            if (warnings.includes('左前滚筒低位传感器')) {
              zuoqianguntongdiwei.value = true;
            } else {
              zuoqianguntongdiwei.value = false;
            }
            if (warnings.includes('右前滚筒低位传感器')) {
              youqianguntongdiwei.value = true;
            } else {
              youqianguntongdiwei.value = false;
            }
            if (warnings.includes('左后滚筒低位传感器')) {
              zuohouguntongdiwei.value = true;
            } else {
              zuohouguntongdiwei.value = false;
            }
            if (warnings.includes('右后滚筒低位传感器')) {
              youhouguntongdiwei.value = true;
            } else {
              youhouguntongdiwei.value = false;
            }
          }
          else {
             zuoqianmen.value = false;
             zuohoumen.value = false;
             youqianmen.value = false;
             youhoumen.value = false;
             guntongbuzaigaowei.value = false;
             fengxiangbuzaigaowei.value = false;
             fengxiangbuzaidiwei.value = false;
             jiareweichuanganqi.value = false;
             zuoqianfengxianggaowei.value = false;
             zuohoufengxianggaowei.value = false;
             youqianfengxianggaowei.value = false;
             youhoufengxianggaowei.value = false;
             zuoqianfengxiangdiwei.value = false;
             zuohoufengxiangdiwei.value = false;
             youqianfengxiangdiwei.value = false;
             youhoufengxiangdiwei.value = false;
             zuoqianguntongdiwei.value = false;
             zuohouguntongdiwei.value = false;
             youqianguntongdiwei.value = false;
             youhouguntongdiwei.value = false;
          }
            } else {
               res = {
                  mois: [],
@@ -1881,7 +2305,7 @@
      margin-top: -30px;
   }
   .leftTop0 {
      height: 600px;
      height: 260px;
      width: 848px;
      display: flex;
      justify-content: center;
@@ -2250,4 +2674,24 @@
         opacity: 0;
      }
   }
  .error-div {
    position: absolute; display: flex; align-items: center;
  }
  .error-marker {
    width: 18px; height: 18px; background: red; border-radius: 50%;
  }
  .error-msg {
    margin-left: 6px;
    height: 24px;
    background: gray; border-radius: 5px; font-weight: bold; color: red
  }
  .warn-marker {
    width: 18px; height: 18px; background: orange; border-radius: 50%;
  }
  .warn-msg {
    margin-left: 6px;
    height: 24px;
    background: gray; border-radius: 5px; font-weight: bold; color: orange;
  }
</style>