干燥机配套车间生产管理系统/云平台前端
baoshiwei
2025-01-09 b1d02b024d353597483b4bb32e24ebd776008e0e
src/views/dry/bigScreen/BigEqp.vue
@@ -29,47 +29,22 @@
                              <div class="formulaItem">
                                 <Icon style="color: powderblue" icon="la:box" :size="38" />
                                 <div>
                                    <div class="mainInfo2">{{ realData?.feed }} 筐</div>
                                    <div class="mainInfo2">{{ realData?.feed || 0 }} 筐</div>
                                    <div class="subhead2">投料量</div>
                                 </div>
                              </div>
                              <div class="formulaItem">
                                 <Icon style="color: red" icon="bx:wind" :size="35" />
                                 <div>
                                    <div class="mainInfo2">{{ realData?.windTemp }} °C</div>
                                    <div class="mainInfo2">{{ realData?.windTemp || 0 }} °C</div>
                                    <div class="subhead2">热风</div>
                                 </div>
                              </div>
                              <div class="formulaItem">
                                 <Icon style="color: green" icon="tabler:target-arrow" :size="35" />
                                 <div>
                                    <div class="mainInfo2">{{ realData?.target }} %</div>
                                    <div class="mainInfo2">{{ realData?.target || 0 }} %</div>
                                    <div class="subhead2">目标</div>
                                 </div>
                              </div>
                           </div>
                           <div class="formula">
                              <div class="formulaItem">
                                 <Icon style="color: yellow" icon="mdi:weight-kilogram" :size="35" />
                                 <div style="width: 4px"></div>
                                 <div>
                                    <div class="mainInfo2">{{ realData?.originWeight }} kg</div>
                                    <div class="subhead2">初始重量</div>
                                 </div>
                              </div>
                              <div class="formulaItem">
                                 <Icon style="color: deepskyblue" icon="ion:water-outline" :size="35" />
                                 <div>
                                    <div class="mainInfo2">{{ realData?.initial }} %</div>
                                    <div class="subhead2">初始含水</div>
                                 </div>
                              </div>
                              <div class="formulaItem">
                                 <Icon style="color: chocolate" icon="ps:clock" :size="32" />
                                 <div style="width: 4px"></div>
                                 <div>
                                    <div class="mainInfo2">{{ realData?.et }} 分</div>
                                    <div class="subhead2">预计时间</div>
                                 </div>
                              </div>
                           </div>
@@ -83,14 +58,14 @@
                        <div id="fanFreq" style="width: 240px; height: 240px"></div>
                     </div>
                  </dv-border-box7> -->
                     <dv-border-box7 style="margin-left: 0px; width: 340px; height: 240px">
                        <!-- <div class="chartTittle">含水率</div>
                     <dv-border-box7 class="infoChart" style="margin-left: 0px">
                        <div class="chartTittle">含水率</div>
                        <div class="outDiv" style="padding-top: 20px">
                           <div class="leftData">
                              <div class="center" style="height: 50%">
                                 <div class="centerText">
                                    <div class="mainInfo3"
                                       ><span>{{ realData?.target }}</span> %
                                       ><span>{{ realData?.target || 0 }}</span> %
                                    </div>
                                    <div class="subhead2">目标含水率</div>
                                 </div>
@@ -98,7 +73,7 @@
                              <div class="center" style="height: 50%">
                                 <div>
                                    <div class="mainInfo3"
                                       ><span>{{ realData?.initial }}</span> %</div
                                       ><span>{{ realData?.initial || 0 }}</span> %</div
                                    >
                                    <div class="subhead2">来料含水率</div>
                                 </div>
@@ -106,22 +81,7 @@
                           </div>
                           <div id="moisture" style="width: 170px; height: 170px"></div>
                        </div>
                        <div class="subhead2" style="margin-top: -37px; padding-left: 205px; font-weight: bold">实时含水率</div> -->
                        <div>
                           <div class="timeProgress">
                              <div class="flex">
                                 <div class="leftLabel">预计时间</div>
                                 <Progress :percent="30" size="small" status="active" />
                              </div>
                           </div>
                           <div class="timeProgress">
                              <div class="flex">
                                 <div class="leftLabel">当前阶段</div>
                                 <Progress :percent="50" size="small" status="active" />
                              </div>
                           </div>
                        </div>
                        <div class="subhead2" style="margin-top: -37px; padding-left: 205px; font-weight: bold">实时含水率</div>
                     </dv-border-box7>
                  </div>
                  <dv-border-box7 class="leftTop">
@@ -136,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>
@@ -145,42 +105,249 @@
                           <div
                              style="
                                 font-size: 28px;
                                 margin-top: 190px;
                                 color: white;
                                 background-color: #1595ea;
                                 height: 60px;
                                 width: 180px;
                                 line-height: 60px;
                                 text-align: center;
                                 border-radius: 5px;
                                 border-radius: 10px;
                                 font-weight: bold;
                              "
                           >
                              {{ statusTxt }}
                           </div>
                           <div
                              v-if="realData?.isError"
                              class="eqpInfoText blingbling"
                              style="
                                 position: absolute;
                                 font-size: 30px;
                                 max-height: 200px;
                                 max-width: 720px;
                                 border-radius: 10px;
                                 background-color: #ce0000;
                                 color: white;
                                 padding: 10px;
                              "
                           >
                              <div class="outDiv">
                                 <div><Icon icon="bx:error" :size="30" /> </div>
                                 <div
                                    ><span>{{ realData?.errorMsg }}</span></div
                                 >
                              </div>
                           </div>
<!--                           <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>-->
                        </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>
@@ -191,17 +358,13 @@
                     </div>
                  </dv-border-box7>
                  <dv-border-box7 class="leftMid">
                     <!-- <div class="chartTittle">实时进度</div> -->
                     <!-- <div id="efficiencyLine" style="width: 848px; height: 180px; margin-top: -10px"></div>
                     <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> -->
                     <div class="flex">
                        <div style="width: 200px; height: 100px; border: 1px solid red; margin-top: -40px"> </div>
                     </div>
                     <div id="progressBar" style="width: 848px; height: 80px"></div>
                  </dv-border-box7>
                  <!-- <div class="outDiv">
@@ -233,8 +396,8 @@
                        <div class="chartTittle">
                           干燥效率(kg/h)
                           <div class="rightLabel">
                              <div class="label good">&gt;{{ standard.xiaolv }} 优 </div>
                              <div class="label bad">&lt;{{ standard.xlMin }} 差</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">
@@ -256,7 +419,7 @@
                           </div>
                           <div class="rightChart center">
                              <div class="center compareBar">
                                 <div class="barTop">{{ standard.xiaolv }}</div>
                                 <div class="barTop">{{ realData?.efficAvg?.toFixed(2) }}</div>
                                 <div class="barBack">
                                    <div class="barDiv" :style="{ height: realData?.xlsHeight }"></div>
                                 </div>
@@ -267,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"
@@ -290,8 +453,8 @@
                        <div class="chartTittle"
                           >蒸汽消耗(m³/kg)
                           <div class="rightLabel">
                              <div class="label bad">&gt;{{ standard.zhengqi }} 差</div>
                              <div class="label good">&lt;{{ standard.zqMin }} 优</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">
@@ -307,7 +470,7 @@
                           </div>
                           <div class="rightChart center">
                              <div class="center compareBar">
                                 <div class="barTop">{{ standard.zhengqi }}</div>
                                 <div class="barTop">{{ realData?.steamAvg?.toFixed(2) }}</div>
                                 <div class="barBack">
                                    <div class="barDiv" :style="{ height: realData?.zqsHeight }"></div>
                                 </div>
@@ -318,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"
@@ -346,8 +509,8 @@
                        <div class="chartTittle">
                           <div> 电能消耗(kWh/kg)</div>
                           <div class="rightLabel">
                              <div class="label bad">&gt;{{ standard.dian }} 差</div>
                              <div class="label good">&lt;{{ standard.dMin }} 优</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">
@@ -363,7 +526,7 @@
                           </div>
                           <div class="rightChart center">
                              <div class="center compareBar">
                                 <div class="barTop">{{ standard.dian }}</div>
                                 <div class="barTop">{{ realData?.wattAvg?.toFixed(3) }}</div>
                                 <div class="barBack">
                                    <div class="barDiv" :style="{ height: realData?.dnsHeight }"></div>
                                 </div>
@@ -374,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"
@@ -412,6 +575,7 @@
   import { queryById, listAll } from '../api/DryEquipment.api'
   import { dryEquipment } from '../dataDefine/DryEquipment.data'
   import { useUserStore } from '/@/store/modules/user'
   import { getTenantId, getToken } from '/@/utils/auth'
   const domRef = ref<Nullable<HTMLElement>>(null)
   const { enter, toggle, exit, isFullscreen } = useFullscreen()
@@ -419,111 +583,111 @@
   const { toggle: toggleDom } = useFullscreen(domRef)
   const Timer = ref()
   const Timer2 = ref()
   // const marks = ref<Record<number, any>>({
   //    0: '0°C',
   //    1: '',
   //    2: '',
   //    3: '',
   //    4: '',
   //    5: '',
   //    6: '',
   //    7: '',
   //    8: '',
   //    9: '',
   //    10: '',
   //    11: '',
   //    12: '',
   //    13: '',
   //    14: '',
   //    15: '',
   //    16: '',
   //    17: '',
   //    18: '',
   //    19: '',
   //    20: '',
   //    21: '',
   //    22: '',
   //    23: '',
   //    24: '',
   //    25: '25°C',
   //    26: '',
   //    27: '',
   //    28: '',
   //    29: '',
   //    30: '',
   //    31: '',
   //    32: '',
   //    33: '',
   //    34: '',
   //    35: '',
   //    36: '',
   //    37: '',
   //    38: '',
   //    39: '',
   //    40: '',
   //    41: '',
   //    42: '',
   //    43: '',
   //    44: '',
   //    45: '',
   //    46: '',
   //    47: '',
   //    48: '',
   //    49: '',
   //    50: '50°C',
   //    51: '',
   //    52: '',
   //    53: '',
   //    54: '',
   //    55: '',
   //    56: '',
   //    57: '',
   //    58: '',
   //    59: '',
   //    60: '',
   //    61: '',
   //    62: '',
   //    63: '',
   //    64: '',
   //    65: '',
   //    66: '',
   //    67: '',
   //    68: '',
   //    69: '',
   //    70: '',
   //    71: '',
   //    72: '',
   //    73: '',
   //    74: '',
   //    75: '75°C',
   //    76: '',
   //    77: '',
   //    78: '',
   //    79: '',
   //    80: '',
   //    81: '',
   //    82: '',
   //    83: '',
   //    84: '',
   //    85: '',
   //    86: '',
   //    87: '',
   //    88: '',
   //    89: '',
   //    90: '',
   //    91: '',
   //    92: '',
   //    93: '',
   //    94: '',
   //    95: '',
   //    96: '',
   //    97: '',
   //    98: '',
   //    99: '',
   //    100: '100°C',
   // })
   const marks = ref<Record<number, any>>({
      0: '0°C',
      1: '',
      2: '',
      3: '',
      4: '',
      5: '',
      6: '',
      7: '',
      8: '',
      9: '',
      10: '',
      11: '',
      12: '',
      13: '',
      14: '',
      15: '',
      16: '',
      17: '',
      18: '',
      19: '',
      20: '',
      21: '',
      22: '',
      23: '',
      24: '',
      25: '25°C',
      26: '',
      27: '',
      28: '',
      29: '',
      30: '',
      31: '',
      32: '',
      33: '',
      34: '',
      35: '',
      36: '',
      37: '',
      38: '',
      39: '',
      40: '',
      41: '',
      42: '',
      43: '',
      44: '',
      45: '',
      46: '',
      47: '',
      48: '',
      49: '',
      50: '50°C',
      51: '',
      52: '',
      53: '',
      54: '',
      55: '',
      56: '',
      57: '',
      58: '',
      59: '',
      60: '',
      61: '',
      62: '',
      63: '',
      64: '',
      65: '',
      66: '',
      67: '',
      68: '',
      69: '',
      70: '',
      71: '',
      72: '',
      73: '',
      74: '',
      75: '75°C',
      76: '',
      77: '',
      78: '',
      79: '',
      80: '',
      81: '',
      82: '',
      83: '',
      84: '',
      85: '',
      86: '',
      87: '',
      88: '',
      89: '',
      90: '',
      91: '',
      92: '',
      93: '',
      94: '',
      95: '',
      96: '',
      97: '',
      98: '',
      99: '',
      100: '100°C',
   })
   const eqps = ref([] as dryEquipment[])
   //console.log(`output->router.currentRoute.value.params.num `, router.currentRoute.value.query)
   console.log(`output->router.currentRoute.value.params.num `, router.currentRoute.value.query)
   const eqp = ref({} as dryEquipment)
   const eqpNum = ref(router.currentRoute.value.query.num || 1)
   const userStore = useUserStore()
@@ -543,31 +707,65 @@
   statusGif = 'tmrefeng2'
   realData.value.herbImage = 'yaocai1.png'
   var moisChart: echarts.ECharts
   // var waterChart: echarts.ECharts
   var waterChart: echarts.ECharts
   var bellowsTempChart: echarts.ECharts
   // var fanFreqChart: echarts.ECharts
   // var progressBarChart: echarts.ECharts
   var progressBarChart: echarts.ECharts
   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'
      let chartDom: HTMLElement = document.getElementById(domId) as HTMLElement
      // let waterDom: HTMLElement = document.getElementById('moisture') as HTMLElement
      let waterDom: HTMLElement = document.getElementById('moisture') as HTMLElement
      let bellowsTempDom: HTMLElement = document.getElementById('bellowsTemp') as HTMLElement
      // let fanFreqDom: HTMLElement = document.getElementById('fanFreq') as HTMLElement
      // let progressBarDom: HTMLElement = document.getElementById('progressBar') as HTMLElement
      // let efficiencyLineDom: HTMLElement = document.getElementById('efficiencyLine') as HTMLElement
      let progressBarDom: HTMLElement = document.getElementById('progressBar') as HTMLElement
      let efficiencyLineDom: HTMLElement = document.getElementById('efficiencyLine') as HTMLElement
      // let weightDom: HTMLElement = document.getElementById('weight') as HTMLElement
      let compaerDom: HTMLElement = document.getElementById('compare') as HTMLElement
      moisChart = echarts.init(chartDom)
      // waterChart = echarts.init(waterDom)
      waterChart = echarts.init(waterDom)
      bellowsTempChart = echarts.init(bellowsTempDom)
      // fanFreqChart = echarts.init(fanFreqDom)
      // progressBarChart = echarts.init(progressBarDom)
      // efficiencyLineChart = echarts.init(efficiencyLineDom)
      progressBarChart = echarts.init(progressBarDom)
      efficiencyLineChart = echarts.init(efficiencyLineDom)
      compareChart = echarts.init(compaerDom)
      const option = {
@@ -662,8 +860,7 @@
               smooth: true,
               symbol: 'none',
               data: [
                  [1, 1],
                  [2, 2],
               ],
               lineStyle: {
                  width: 1,
@@ -691,8 +888,7 @@
               smooth: true,
               symbol: 'none',
               data: [
                  [1, 10],
                  [2, 20],
               ],
               lineStyle: {
                  width: 1,
@@ -734,39 +930,39 @@
            },
         ],
      }
      // const waterOption = {
      //    series: [
      //       {
      //          type: 'liquidFill',
      //          radius: '100%',
      //          //waveAnimation: false,
      //          amplitude: 3,
      //          animationDuration: 5,
      //          //animationDurationUpdate: 0,
      //          data: [0.56, 0.44, 0.32],
      //          shape:
      //             'path://M828.817,706.209C828.817,881.725,686.98,1024,512,1024c-174.98,0-316.817-142.275-316.817-317.791C195.183,530.74,512,0,512,0s316.817,530.74,316.817,706.209z',
      //          outline: {
      //             show: false,
      //          },
      //          label: {
      //             // formatter: function () {
      //             //    //console.log(`output->params`,params,mois.value)
      const waterOption = {
         series: [
            {
               type: 'liquidFill',
               radius: '100%',
               //waveAnimation: false,
               amplitude: 3,
               animationDuration: 5,
               //animationDurationUpdate: 0,
               data: [0, 0, 0],
               shape:
                  'path://M828.817,706.209C828.817,881.725,686.98,1024,512,1024c-174.98,0-316.817-142.275-316.817-317.791C195.183,530.74,512,0,512,0s316.817,530.74,316.817,706.209z',
               outline: {
                  show: false,
               },
               label: {
                  // formatter: function () {
                  //    //console.log(`output->params`,params,mois.value)
      //             //    return (
      //             //       '' +
      //             //       // +'初始'+(mois.value[0]*100).toFixed(2) + '%\n\n\n'
      //             //       (mois.value[1] * 100).toFixed(2) +
      //             //       '%'
      //             //       // + '\n\n\n目标'+(mois.value[2]*100).toFixed(2) + '%'
      //             //    )
      //             // },
      //             fontSize: 20,
      //             //position: ['50%',(100-mois.value[1]*100).toFixed(2) + '%'],
      //          },
      //       },
      //    ],
      // }
                  //    return (
                  //       '' +
                  //       // +'初始'+(mois.value[0]*100).toFixed(2) + '%\n\n\n'
                  //       (mois.value[1] * 100).toFixed(2) +
                  //       '%'
                  //       // + '\n\n\n目标'+(mois.value[2]*100).toFixed(2) + '%'
                  //    )
                  // },
                  fontSize: 20,
                  //position: ['50%',(100-mois.value[1]*100).toFixed(2) + '%'],
               },
            },
         ],
      }
      const bellowsOption = {
         series: [
@@ -834,7 +1030,7 @@
               },
               data: [
                  {
                     value: 20,
                     value: 0,
                  },
               ],
            },
@@ -872,7 +1068,7 @@
               },
               data: [
                  {
                     value: 20,
                     value: 0,
                  },
               ],
            },
@@ -980,253 +1176,248 @@
      //    ],
      // }
      // const progressBarOption = {
      //    // tooltip: {
      //    //    trigger: 'axis',
      //    //    axisPointer: {
      //    //       // Use axis to trigger tooltip
      //    //       type: 'shadow', // 'shadow' as default; can also be 'line' or 'shadow'
      //    //    },
      //    // },
      //    // color: [
      //    //    '#0653F6',
      //    //    // '#1B61E7',
      //    //    '#3673D5',
      //    //    // '#4A80C8',
      //    //    '#608FB8',
      //    //    // '#719BAD',
      //    //    '#82A6A1',
      //    //    // '#8DAD9A',
      //    //    '#9CB790',
      //    //    // '#A7BE88',
      //    //    '#B3C681',
      //    //    '#CAD671',
      //    //    '#DBE165',
      //    // ],
      //    animation: false, // 关闭动画
      //    color: ['#397FD7', '#2D8CDE', '#239CE5', '#1DA4E8', '#14B2EF', '#0BC4FA', '#02D2FF', '#19EEFF', '#33FAFF', '#5EFFF8'],
      //    grid: {
      //       top: '12%',
      //       left: '20',
      //       right: '55',
      //       bottom: '3%',
      //       containLabel: true,
      //    },
      //    xAxis: {
      //       min: 0,
      //       max: 150,
      //       show: false,
      //       type: 'value',
      //       axisLine: {
      //          show: false,
      //       },
      //       axisTick: {
      //          show: false,
      //       },
      //    },
      //    yAxis: {
      //       show: false,
      //       axisLine: {
      //          show: false,
      //       },
      //       axisTick: {
      //          show: false,
      //       },
      //       type: 'category',
      //       data: ['时间'],
      //    },
      //    series: [
      //       // {
      //       //    name: '第一阶段',
      //       //    type: 'bar',
      //       //    stack: 'total',
      //       //    label: {
      //       //       show: true,
      //       //    },
      //       //    barWidth: 26,
      //       //    emphasis: {
      //       //       focus: 'series',
      //       //    },
      //       //    data: [30],
      //       // },
      //       // {
      //       //    name: '第二阶段',
      //       //    type: 'bar',
      //       //    stack: 'total',
      //       //    label: {
      //       //       show: true,
      //       //    },
      //       //    emphasis: {
      //       //       focus: 'series',
      //       //    },
      //       //    data: [30],
      //       // },
      //       // {
      //       //    name: 'Affiliate Ad',
      //       //    type: 'bar',
      //       //    stack: 'total',
      //       //    label: {
      //       //       show: true,
      //       //    },
      //       //    emphasis: {
      //       //       focus: 'series',
      //       //    },
      //       //    data: [20],
      //       // },
      //       // {
      //       //    name: 'Video Ad',
      //       //    type: 'bar',
      //       //    stack: 'total',
      //       //    label: {
      //       //       show: true,
      //       //    },
      //       //    emphasis: {
      //       //       focus: 'series',
      //       //    },
      //       //    data: [15],
      //       // },
      //       // {
      //       //    name: 'Search Engine',
      //       //    type: 'bar',
      //       //    stack: 'total',
      //       //    label: {
      //       //       show: true,
      //       //    },
      //       //    emphasis: {
      //       //       focus: 'series',
      //       //    },
      //       //    data: [10],
      //       // },
      //       // {
      //       //    name: 'df Engine',
      //       //    type: 'bar',
      //       //    stack: 'total',
      //       //    label: {
      //       //       show: true,
      //       //    },
      //       //    emphasis: {
      //       //       focus: 'series',
      //       //    },
      //       //    data: [5],
      //       // },
      //       // {
      //       //    name: 'df Engine',
      //       //    type: 'bar',
      //       //    stack: 'total',
      //       //    label: {
      //       //       show: true,
      //       //    },
      //       //    emphasis: {
      //       //       focus: 'series',
      //       //    },
      //       //    data: [5],
      //       // },
      //       // {
      //       //    name: 'df Engine',
      //       //    type: 'bar',
      //       //    stack: 'total',
      //       //    label: {
      //       //       show: true,
      //       //    },
      //       //    emphasis: {
      //       //       focus: 'series',
      //       //    },
      //       //    data: [
      //       //       {
      //       //          value: 35,
      //       //          itemStyle: {
      //       //             color: '#c0c0c0',
      //       //          },
      //       //       },
      //       //    ],
      //       // },
      //    ],
      // }
      const progressBarOption = {
         // tooltip: {
         //    trigger: 'axis',
         //    axisPointer: {
         //       // Use axis to trigger tooltip
         //       type: 'shadow', // 'shadow' as default; can also be 'line' or 'shadow'
         //    },
         // },
         // color: [
         //    '#0653F6',
         //    // '#1B61E7',
         //    '#3673D5',
         //    // '#4A80C8',
         //    '#608FB8',
         //    // '#719BAD',
         //    '#82A6A1',
         //    // '#8DAD9A',
         //    '#9CB790',
         //    // '#A7BE88',
         //    '#B3C681',
         //    '#CAD671',
         //    '#DBE165',
         // ],
         animation: false, // 关闭动画
         color: ['#397FD7', '#2D8CDE', '#239CE5', '#1DA4E8', '#14B2EF', '#0BC4FA', '#02D2FF', '#19EEFF', '#33FAFF', '#5EFFF8', '#60FFFE', '#64FAFF', '#70FFFF', '#7BFFFF', '#88FFFD', '#97FFFF', '#A5FFFD', '#B1FFFF', '#BFFFFF', '#CAFFFF'],
         grid: {
            top: '12%',
            left: '20',
            right: '55',
            bottom: '3%',
            containLabel: true,
         },
         xAxis: {
            min: 0,
            max: 150,
            show: false,
            type: 'value',
            axisLine: {
               show: false,
            },
            axisTick: {
               show: false,
            },
         },
         yAxis: {
            show: false,
            axisLine: {
               show: false,
            },
            axisTick: {
               show: false,
            },
            type: 'category',
            data: ['时间'],
         },
         series: [
            // {
            //    name: '第一阶段',
            //    type: 'bar',
            //    stack: 'total',
            //    label: {
            //       show: true,
            //    },
            //    barWidth: 26,
            //    emphasis: {
            //       focus: 'series',
            //    },
            //    data: [30],
            // },
            // {
            //    name: '第二阶段',
            //    type: 'bar',
            //    stack: 'total',
            //    label: {
            //       show: true,
            //    },
            //    emphasis: {
            //       focus: 'series',
            //    },
            //    data: [30],
            // },
            // {
            //    name: 'Affiliate Ad',
            //    type: 'bar',
            //    stack: 'total',
            //    label: {
            //       show: true,
            //    },
            //    emphasis: {
            //       focus: 'series',
            //    },
            //    data: [20],
            // },
            // {
            //    name: 'Video Ad',
            //    type: 'bar',
            //    stack: 'total',
            //    label: {
            //       show: true,
            //    },
            //    emphasis: {
            //       focus: 'series',
            //    },
            //    data: [15],
            // },
            // {
            //    name: 'Search Engine',
            //    type: 'bar',
            //    stack: 'total',
            //    label: {
            //       show: true,
            //    },
            //    emphasis: {
            //       focus: 'series',
            //    },
            //    data: [10],
            // },
            // {
            //    name: 'df Engine',
            //    type: 'bar',
            //    stack: 'total',
            //    label: {
            //       show: true,
            //    },
            //    emphasis: {
            //       focus: 'series',
            //    },
            //    data: [5],
            // },
            // {
            //    name: 'df Engine',
            //    type: 'bar',
            //    stack: 'total',
            //    label: {
            //       show: true,
            //    },
            //    emphasis: {
            //       focus: 'series',
            //    },
            //    data: [5],
            // },
            // {
            //    name: 'df Engine',
            //    type: 'bar',
            //    stack: 'total',
            //    label: {
            //       show: true,
            //    },
            //    emphasis: {
            //       focus: 'series',
            //    },
            //    data: [
            //       {
            //          value: 35,
            //          itemStyle: {
            //             color: '#c0c0c0',
            //          },
            //       },
            //    ],
            // },
         ],
      }
      // const efficiencyLineOption = {
      //    title: {},
      //    tooltip: {
      //       trigger: 'axis',
      //    },
      //    grid: {
      //       top: '30%',
      //       left: '17',
      //       right: '57',
      //       bottom: '0%',
      //       containLabel: true,
      //    },
      //    legend: {
      //       right: 60,
      //       textStyle: {
      //          color: '#fff',
      //       },
      //    },
      //    xAxis: {
      //       show: false,
      //       axisLine: {
      //          show: false,
      //       },
      //       axisTick: {
      //          show: false,
      //       },
      //       type: 'value',
      //       min: 0,
      //       max: 150,
      //       // data: [15, 15, 10, 7.5, 5, 2.5, 2.5, 1],
      //    },
      //    yAxis: {
      //       show: false,
      //       axisLine: {
      //          show: false,
      //       },
      //       axisTick: {
      //          show: false,
      //       },
      //       type: 'value',
      //       axisLabel: {
      //          formatter: '{value} °C',
      //       },
      //       // max: standard.value.xiaolv + 3,
      //    },
      //    series: [
      //       {
      //          name: '干燥效率',
      //          type: 'line',
      //          lineStyle: {
      //             width: 1,
      //          },
      //          // [[15,10], [15,11], [10,6], [7.5,12], [5,12], [2.5,5], [2.5,9], [1,7]]
      //          data: [
      //             [0, 1],
      //             [15, 10],
      //             [45, 11],
      //             [70, 6],
      //          ],
      //          markPoint: {
      //             data: [
      //                { type: 'max', name: 'Max' },
      //                { type: 'min', name: 'Min' },
      //             ],
      //          },
      //          markLine: {
      //             symbol: 'none',
      //             data: [
      //                {
      //                   name: '额定',
      //                   yAxis: standard.value.xiaolv,
      //                },
      //             ],
      //             label: {
      //                formatter: '{b}\n{c}',
      //                color: '#fff',
      //             },
      //          },
      //          // markLine: {
      //          //    data: [{ type: 'average', name: 'Avg' }],
      //          // },
      //       },
      //    ],
      // }
      const efficiencyLineOption = {
         title: {},
         tooltip: {
            trigger: 'axis',
         },
         grid: {
            top: '30%',
            left: '17',
            right: '57',
            bottom: '0%',
            containLabel: true,
         },
         legend: {
            right: 60,
            textStyle: {
               color: '#fff',
            },
         },
         xAxis: {
            show: false,
            axisLine: {
               show: false,
            },
            axisTick: {
               show: false,
            },
            type: 'value',
            min: 0,
            max: 150,
            // data: [15, 15, 10, 7.5, 5, 2.5, 2.5, 1],
         },
         yAxis: {
            show: false,
            axisLine: {
               show: false,
            },
            axisTick: {
               show: false,
            },
            type: 'value',
            axisLabel: {
               formatter: '{value} °C',
            },
            // max: eqp.value.dryEfficiency + 3,
         },
         series: [
            {
               name: '干燥效率',
               type: 'line',
               lineStyle: {
                  width: 1,
               },
               // [[15,10], [15,11], [10,6], [7.5,12], [5,12], [2.5,5], [2.5,9], [1,7]]
               data: [],
               markPoint: {
                  data: [
                     { type: 'max', name: 'Max' },
                     { type: 'min', name: 'Min' },
                  ],
               },
               markLine: {
                  symbol: 'none',
                  data: [
                     {
                        name: '额定',
                        yAxis: 100,
                     },
                  ],
                  label: {
                     formatter: '{b}\n{c}',
                     color: '#fff',
                  },
               },
               // markLine: {
               //    data: [{ type: 'average', name: 'Avg' }],
               // },
            },
         ],
      }
      const compareOption = {
         tooltip: {
@@ -1258,7 +1449,7 @@
               name: '2011',
               type: 'bar',
               barWidth: 10,
               data: [190, 89, 34, 70, 44, 30],
               data: [0, 0, 0, 0, 0, 0],
               label: {
                  show: true,
                  position: 'right',
@@ -1271,12 +1462,12 @@
      }
      option && moisChart.setOption(option)
      // waterOption && waterChart.setOption(waterOption)
      waterOption && waterChart.setOption(waterOption)
      bellowsOption && bellowsTempChart.setOption(bellowsOption)
      // fanFreqOption && fanFreqChart.setOption(fanFreqOption)
      // progressBarOption && progressBarChart.setOption(progressBarOption)
      // efficiencyLineOption && efficiencyLineChart.setOption(efficiencyLineOption)
      progressBarOption && progressBarChart.setOption(progressBarOption)
      efficiencyLineOption && efficiencyLineChart.setOption(efficiencyLineOption)
      compareOption && compareChart.setOption(compareOption)
   }
@@ -1287,12 +1478,20 @@
   // 动态读取图片
   function getStatusImageUrl(name: string) {
      return new URL(`/src/assets/images/dry/${name}.gif`, import.meta.url).href
      if (name =='zanting') {
         return new URL(`/src/assets/images/dry/${name}.png`, import.meta.url).href
      } else {
         return new URL(`/src/assets/images/dry/${name}.gif`, import.meta.url).href
      }
   }
   function queryEqp() {
      queryById({ id: router.currentRoute.value.params.id }).then((res) => {
         // console.log(`output->res`, res)
         eqp.value = res
         eqp.value.dryEfficiency = res.dryEfficiency
         eqp.value.steamConsumption = res.steamConsumption
         eqp.value.powerConsumption = res.powerConsumption
         queryRealTime()
         setTimeout(initCharts, 500)
      })
@@ -1351,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(() => {
@@ -1369,7 +1572,7 @@
      if (eqp.value) {
         eqp.value = eqps.value[eqpNum.value]
         // console.log("888",eqp.value);
         let tenantId = 1003
         let tenantId = getTenantId()
         let eqpCode = eqp.value.code
         let queryRealTimeUrl = '/dry/real/getRealTimeData'
         defHttp.get({ url: queryRealTimeUrl, params: { tenantid: tenantId, machineid: eqpCode } }).then((res) => {
@@ -1383,26 +1586,26 @@
                  (res.trendVo.moisture / 100 / 1.5).toFixed(2),
                  (res.trendVo.moisture / 100 / 3).toFixed(2),
               ]
               // if (waterChart) {
               //    waterChart.setOption({
               //       series: [
               //          {
               //             data: res.mois,
               //             label: {
               //                formatter: function () {
               //                   return res.trendVo.moisture + '%'
               //                },
               //                fontSize: 20,
               //             },
               //          },
               //       ],
               //    })
               // }
               if (waterChart) {
                  waterChart.setOption({
                     series: [
                        {
                           data: res.mois,
                           label: {
                              formatter: function () {
                                 return res.trendVo.moisture + '%'
                              },
                              fontSize: 20,
                           },
                        },
                     ],
                  })
               }
               /**温度环形图 */
               if (bellowsTempChart) {
                  bellowsTempChart.setOption({
                     series: [{ data: [{ value: res.windTemp }] }, { data: [{ value: res.windTemp }] }],
                     series: [{ data: [{ value: res.trendVo.bellowsTemp }] }, { data: [{ value: res.trendVo.bellowsTemp }] }],
                  })
               }
               /**风机频率环形图 */
@@ -1422,9 +1625,10 @@
               /**干燥进度、走势与阶段效率和阶段消耗 */
               if (res && res.detailList) {
                  var progressSeries = []
                  var ganZaoXiaoLv = []
                  var zhengQiXiaoHao = []
                  var dianNengXiaoHao = []
                  var ganZaoXiaoLv = []
                  var totalTime = 0
                  var beforeWeight = 0
                  res.moisList = []
@@ -1434,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) {
@@ -1477,7 +1681,7 @@
                        })
                     }
                     // ganZaoXiaoLv.push([totalTime + res.remain,standard.value.xiaolv])
                     // ganZaoXiaoLv.push([totalTime + res.remain,eqp.value.dryEfficiency])
                     // console.log(`output->res.remain`, res.remain)
                     // console.log(`output->res.dryTime`, res.dryTime)
                     // console.log(`output->totalTime`, totalTime)
@@ -1505,49 +1709,51 @@
                  }
                  /**干燥进度 */
                  // if (progressBarChart) {
                  //    //console.log(`output->progressSeries`, progressSeries)
                  //    progressBarChart.setOption(
                  //       {
                  //          xAxis: {
                  //             max: totalTime + res.remain,
                  //          },
                  //          series: progressSeries,
                  //       },
                  //       { replaceMerge: ['series'] }
                  //    )
                  // }
                  if (progressBarChart) {
                     //console.log(`output->progressSeries`, progressSeries)
                     progressBarChart.setOption(
                        {
                           xAxis: {
                              max: totalTime + res.remain,
                           },
                           series: progressSeries,
                        },
                        { replaceMerge: ['series'] }
                     )
                  }
                  res.totalTime = totalTime + res.remain
                  console.log("efficAvg::",res.efficAvg);
                  /**干燥效率、消耗 */
                  // if (efficiencyLineChart) {
                  //    //console.log(`output->ganZaoXiaoLv`, ganZaoXiaoLv)
                  //    efficiencyLineChart.setOption({
                  //       xAxis: {
                  //          max: totalTime + res.remain,
                  //       },
                  //       series: [
                  //          {
                  //             data: ganZaoXiaoLv,
                  //             markLine: {
                  //                symbol: 'none',
                  //                data: [
                  //                   {
                  //                      name: '额定',
                  //                      yAxis: standard.value.xiaolv,
                  //                   },
                  //                ],
                  //                label: {
                  //                   formatter: '{b}\n{c}',
                  //                   color: '#fff',
                  //                },
                  //             },
                  //          },
                  //          { data: zhengQiXiaoHao },
                  //          { data: dianNengXiaoHao },
                  //       ],
                  //    })
                  // }
                  if (efficiencyLineChart) {
                     //console.log(`output->ganZaoXiaoLv`, ganZaoXiaoLv)
                     efficiencyLineChart.setOption({
                        xAxis: {
                           max: totalTime + res.remain,
                        },
                        series: [
                           {
                    name: '干燥效率',
                              data: ganZaoXiaoLv,
                              markLine: {
                                 symbol: 'none',
                                 data: [
                                    {
                                       name: '额定',
                                       yAxis: res.efficAvg|0,
                                    },
                                 ],
                                 label: {
                                    formatter: '{b}\n{c}',
                                    color: '#fff',
                                 },
                              },
                           },
                           // { data: zhengQiXiaoHao },
                           // { data: dianNengXiaoHao },
                        ],
                     })
                  }
                  res.moisList.push([res.dryTime, res.trendVo.moisture])
               }
@@ -1593,64 +1799,74 @@
                  })
               }
               let lastTrend = res.detailList[res.detailList.length-1]
               /**效率对比图 */
               if (res.originWeight - res.yield <= 0) {
                  res.xiaolv = standard.value.xiaolv + 6
               if (res.originWeight - lastTrend.weight <= 0) {
                  res.xiaolv = 0
               } else {
                  res.xiaolv = (((res.originWeight - res.yield) / res.dryTime) * 60).toFixed(2)
                  res.xiaolv = ((res.originWeight - lastTrend.weight) / lastTrend.totalTime) * 60
               }
               if (res.xiaolv > standard.value.xiaolv) {
               res.xiaolv = Number(res.xiaolv)
               //eqp.value.dryEfficiency = Number(eqp.value.dryEfficiency)
               if (res.xiaolv > res.efficAvg) {
                  console.log("xiaolv:",res , eqp);
                  res.xlgood = true
                  res.xlsHeight = (standard.value.xiaolv / res.xiaolv) * 100 + '%'
                  res.xlsHeight = (res.efficAvg / res.xiaolv) * 100 + '%'
                  res.xlrHeight = '100%'
               } else if (res.xiaolv < standard.value.xlMin) {
               } else if (res.xiaolv < res.efficAvg * 0.9) {
                  res.xlbad = true
                  res.xlsHeight = '100%'
                  res.xlrHeight = (res.xiaolv / standard.value.xiaolv) * 100 + '%'
                  res.xlrHeight = (res.xiaolv / res.efficAvg) * 100 + '%'
               } else {
                  res.xlsHeight = '100%'
                  res.xlrHeight = (res.xiaolv / standard.value.xiaolv) * 100 + '%'
                  res.xlrHeight = (res.xiaolv / res.efficAvg) * 100 + '%'
               }
               /** 蒸汽消耗 */
               if (res.originWeight - res.yield <= 0) {
                  res.zhengqi = standard.value.zhengqi - 3
               if (res.originWeight - lastTrend.weight <= 0) {
                  res.zhengqi = 0
               } else {
                  res.zhengqi = (res.steam / (res.originWeight - res.yield)).toFixed(1)
                  res.zhengqi = lastTrend.steam / (res.originWeight - lastTrend.weight)
               }
               //console.log('zhengqi:', res.zhengqi);
               if (res.zhengqi > standard.value.zhengqi) {
               res.zhengqi = Number(res.zhengqi)
               //eqp.value.steamConsumption = Number(eqp.value.steamConsumption)
               // res.zhengqi = eqp.value.steamConsumption - 3
               // console.log(res);
               // console.log('zhengqi:', res.zhengqi);
               if (res.zhengqi > res.steamAvg) {
                  res.zqbad = true
                  res.zqsHeight = (standard.value.zhengqi / res.zhengqi) * 100 + '%'
                  res.zqsHeight = (res.steamAvg / res.zhengqi) * 100 + '%'
                  res.zqrHeight = '100%'
               } else if (res.zhengqi < standard.value.zqMin) {
               } else if (res.zhengqi < res.steamAvg * 0.9) {
                  res.zqgood = true
                  res.zqsHeight = '100%'
                  res.zqrHeight = (res.zhengqi / standard.value.zhengqi) * 100 + '%'
                  res.zqrHeight = (res.zhengqi / res.steamAvg) * 100 + '%'
               } else {
                  res.zqsHeight = '100%'
                  res.zqrHeight = (res.zhengqi / standard.value.zhengqi) * 100 + '%'
                  res.zqrHeight = (res.zhengqi / res.steamAvg) * 100 + '%'
               }
               /** 电能消耗 */
               if (res.originWeight - res.yield <= 0) {
                  res.dian = standard.value.dian - 1.5
               if (res.originWeight - lastTrend.weight <= 0) {
                  res.dian = 0
               } else {
                  res.dian = (res.watt / (res.originWeight - res.yield)).toFixed(1)
                  res.dian = lastTrend.watt / (res.originWeight - lastTrend.weight)
               }
               if (res.dian > standard.value.dian) {
               // res.dian = eqp.value.powerConsumption - 1.5
               res.dian = Number(res.dian)
               //eqp.value.powerConsumption = Number(eqp.value.powerConsumption)
               if (res.dian > res.wattAvg) {
                  console.log("dian::", res.dian,res.wattAvg )
                  res.dnbad = true
                  res.dnsHeight = (standard.value.dian / res.dian) * 100 + '%'
                  res.dnsHeight = (res.wattAvg / res.dian) * 100 + '%'
                  res.dnrHeight = '100%'
               } else if (res.dian < standard.value.dMin) {
               } else if (res.dian < res.wattAvg * 0.9) {
                  res.dngood = true
                  res.dnsHeight = '100%'
                  res.dnrHeight = (res.dian / standard.value.dian) * 100 + '%'
                  res.dnrHeight = (res.dian / res.wattAvg) * 100 + '%'
               } else {
                  res.dnsHeight = '100%'
                  res.dnrHeight = (res.dian / standard.value.dian) * 100 + '%'
                  res.dnrHeight = (res.dian / res.wattAvg) * 100 + '%'
               }
               //console.log('state:::fan::', res.state_fan, 'roller::', res.state_roller, 'windbox::', res.state_windbox)
@@ -1668,25 +1884,37 @@
                     statusTxt = '上料'
                     setTimeout(chaiwangban, 4000)
                  } else if (res.orderStatus == 2) {
                     if (res.state_fan == 1) {
                     statusTxt = res.level
                     statusGif = 'zanting'
                     if (res.level === '准备阶段') {
                        console.log("准备阶段" + statusGif);
                        statusGif = 'zanting'
                     } else if (res.level === '干燥阶段' || res.level === '正在干燥') {
                        statusGif = 'tmrefeng2'
                        statusTxt = '正在干燥'
                     }
                     if (res.state_roller == 4) {
                     } else if (res.level === '翻料阶段') {
                        statusGif = 'fanliao-N'
                        statusTxt = '正在翻料'
                     }
                     if (res.state_roller == 5) {
                     } else if (res.level === '出料阶段') {
                        statusGif = 'chuliao-N'
                        statusTxt = '正在出料'
                     }
                     // if (res.state_fan == 1) {
                     //    statusGif = 'tmrefeng2'
                     //    statusTxt = '正在干燥'
                     // }
                     if (res.state_windbox == 2 || res.state_windbox == 3) {
                        statusGif = 'fengxiangsheng-1'
                        statusTxt = '正在干燥'
                     }
                     // if (res.state_roller == 4) {
                     //    statusGif = 'fanliao-N'
                     //    statusTxt = '正在翻料'
                     // }
                     // if (res.state_roller == 5) {
                     //    statusGif = 'chuliao-N'
                     //    statusTxt = '正在出料'
                     // }
                     // if (res.state_windbox == 2 || res.state_windbox == 3) {
                     //    statusGif = 'fengxiangsheng-1'
                     //    statusTxt = '正在干燥'
                     // }
                  } else if (res.orderStatus == 3) {
                     statusGif = 'zanting'
                     statusTxt = '暂停'
@@ -1722,9 +1950,211 @@
               } else if (res.herbName == '桑白皮') {
                  res.herbImage = 'sangbaipi.png'
               }
               res.isError = false
               res.errorMsg = '有一个故障,请检查。'
          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: [],
@@ -1733,7 +2163,7 @@
               }
            }
            //console.log(`output->res`, res)
            // console.log(`output->res`, res.detailList[res.detailList.length-1])
            realData.value = res
         })
      }
@@ -1875,7 +2305,7 @@
      margin-top: -30px;
   }
   .leftTop0 {
      height: 600px;
      height: 260px;
      width: 848px;
      display: flex;
      justify-content: center;
@@ -1914,9 +2344,7 @@
   .eqpStatus {
      width: 848px;
      height: 300px;
      padding: 100px;
   }
   .rightInfo {
      display: flex;
@@ -2008,7 +2436,7 @@
   }
   .herbInfo {
      width: 340px;
      height: 510px;
      height: 440px;
      color: #727272;
   }
@@ -2022,7 +2450,7 @@
   .curHerb {
      margin-top: 10px;
      width: 340px;
      height: 320px;
      height: 260px;
      /* background: white;
      border-radius: 10px; */
@@ -2126,7 +2554,7 @@
   .formula {
      display: flex;
      width: 340px;
      height: 60px;
      height: 40px;
      padding: 0 20px;
      justify-content: space-around;
      justify-items: center;
@@ -2135,7 +2563,7 @@
   .formulaItem {
      display: flex;
      justify-content: center;
      width: 100px;
      width: 85px;
      height: 40px;
   }
@@ -2158,10 +2586,6 @@
      position: absolute;
      top: 10px;
      left: 0px;
   }
   :deep() .ant-progress-text {
      color: white;
   }
   :deep() .ant-slider-rail {
      width: 10px !important;
@@ -2195,14 +2619,14 @@
      border: none;
      background: #ce0000;
   }
   /* :deep() .progress {
      padding: 15px 15px;
   :deep() .progress {
      padding: 25px 25px;
      width: 360px;
      display: flex;
   } */
   }
   :deep() .ant-progress-bg {
      height: 15px !important;
      height: 25px !important;
   }
   .outDiv {
      display: flex;
@@ -2222,9 +2646,6 @@
      text-align: center;
   }
   .flex {
      display: flex;
   }
   .centerText {
      width: 100%;
      text-align: center;
@@ -2253,14 +2674,24 @@
         opacity: 0;
      }
   }
   .timeProgress {
      width: 260px;
      height: 60px;
      margin-left: 40px;
      margin-top: 50px;
   }
   .leftLabel {
      width: 50px;
      margin-top: -10px;
   }
  .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>