| | |
| | | <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 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> |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | > |
| | | {{ statusTxt }} |
| | | </div> |
| | | <div v-if="realData?.warning" style=" |
| | | margin-left: 100px; |
| | | font-size: 22px; |
| | | background: sandybrown; |
| | | height: 60px; |
| | | border-radius: 10px; |
| | | line-height: 0; |
| | | padding: 29px; |
| | | 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 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;"> |
| | | 左前急停 |
| | | </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;"> |
| | | 设备急停(总) |
| | | </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;"> |
| | | 出料急停 |
| | | </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;"> |
| | | 面板急停 |
| | | </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;"> |
| | | 风箱升异常 |
| | | </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;"> |
| | | 风箱降异常 |
| | | </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;"> |
| | | 风机过流 |
| | | </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;"> |
| | | 滚筒升异常 |
| | | </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;"> |
| | | 滚筒降异常 |
| | | </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;"> |
| | | 滚筒过流 |
| | | </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;"> |
| | | 温度报警 |
| | | </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;"> |
| | | 左前门报警 |
| | | </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;"> |
| | | 左后门报警 |
| | | </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;"> |
| | | 右前门报警 |
| | | </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;"> |
| | | 右后门报警 |
| | | </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;"> |
| | | 滚筒不在高位 |
| | | </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;"> |
| | | 风箱不在高位 |
| | | </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;"> |
| | | 风箱不在低位 |
| | | </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;"> |
| | | 加热位传感器报警 |
| | | </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;"> |
| | | 左前风箱不在高位 |
| | | </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;"> |
| | | 左前风箱不在低位 |
| | | </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;"> |
| | | 左后风箱不在高位 |
| | | </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;"> |
| | | 左后风箱不在低位 |
| | | </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;"> |
| | | 右前风箱不在高位 |
| | | </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;"> |
| | | 右前风箱不在低位 |
| | | </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;"> |
| | | 右后风箱不在高位 |
| | | </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;"> |
| | | 右后风箱不在低位 |
| | | </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;"> |
| | | 左前滚筒不在低位 |
| | | </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;"> |
| | | 左后滚筒不在低位 |
| | | </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;"> |
| | | 右前滚筒不在低位 |
| | | </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;"> |
| | | 右后滚筒不在低位 |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </dv-border-box7> |
| | | <dv-border-box7 class="infoChart" style="margin-left: 0px; margin-right: 10px"> |
| | | <div class="chartTittle">风箱温度</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="chartTittle"> |
| | | 干燥效率(kg/h) |
| | | <div class="rightLabel"> |
| | | <div class="label good">>{{ standard.xiaolv }} 优 </div> |
| | | <div class="label bad"><{{ standard.xlMin }} 差</div> |
| | | <div class="label good">>{{ realData?.efficAvg?.toFixed(2) }} 优 </div> |
| | | <div class="label bad"><{{ ((realData?.efficAvg|0) * 0.9)?.toFixed(2) }} 差</div> |
| | | </div> |
| | | </div> |
| | | <div class="outDiv" style="padding-top: 20px"> |
| | |
| | | </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> |
| | |
| | | </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" |
| | |
| | | <div class="chartTittle" |
| | | >蒸汽消耗(m³/kg) |
| | | <div class="rightLabel"> |
| | | <div class="label bad">>{{ standard.zhengqi }} 差</div> |
| | | <div class="label good"><{{ standard.zqMin }} 优</div> |
| | | <div class="label bad">>{{ realData?.steamAvg?.toFixed(2) }} 差</div> |
| | | <div class="label good"><{{ ((realData?.steamAvg|0) * 0.9).toFixed(2) }} 优</div> |
| | | </div> |
| | | </div> |
| | | <div class="outDiv" style="padding-top: 20px"> |
| | |
| | | </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> |
| | |
| | | </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" |
| | |
| | | <div class="chartTittle"> |
| | | <div> 电能消耗(kWh/kg)</div> |
| | | <div class="rightLabel"> |
| | | <div class="label bad">>{{ standard.dian }} 差</div> |
| | | <div class="label good"><{{ standard.dMin }} 优</div> |
| | | <div class="label bad">>{{ realData?.wattAvg?.toFixed(3) }} 差</div> |
| | | <div class="label good"><{{ ((realData?.wattAvg|0) * 0.9).toFixed(3) }} 优</div> |
| | | </div> |
| | | </div> |
| | | <div class="outDiv" style="padding-top: 20px"> |
| | |
| | | </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> |
| | |
| | | </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" |
| | |
| | | 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() |
| | |
| | | |
| | | 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 |
| | |
| | | smooth: true, |
| | | symbol: 'none', |
| | | data: [ |
| | | [1, 1], |
| | | [2, 2], |
| | | |
| | | ], |
| | | lineStyle: { |
| | | width: 1, |
| | |
| | | smooth: true, |
| | | symbol: 'none', |
| | | data: [ |
| | | [1, 10], |
| | | [2, 20], |
| | | |
| | | ], |
| | | lineStyle: { |
| | | width: 1, |
| | |
| | | amplitude: 3, |
| | | animationDuration: 5, |
| | | //animationDurationUpdate: 0, |
| | | data: [0.56, 0.44, 0.32], |
| | | 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: { |
| | |
| | | }, |
| | | data: [ |
| | | { |
| | | value: 20, |
| | | value: 0, |
| | | }, |
| | | ], |
| | | }, |
| | |
| | | }, |
| | | data: [ |
| | | { |
| | | value: 20, |
| | | value: 0, |
| | | }, |
| | | ], |
| | | }, |
| | |
| | | axisLabel: { |
| | | formatter: '{value} °C', |
| | | }, |
| | | // max: standard.value.xiaolv + 3, |
| | | // max: eqp.value.dryEfficiency + 3, |
| | | }, |
| | | series: [ |
| | | { |
| | |
| | | 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], |
| | | ], |
| | | data: [], |
| | | markPoint: { |
| | | data: [ |
| | | { type: 'max', name: 'Max' }, |
| | |
| | | data: [ |
| | | { |
| | | name: '额定', |
| | | yAxis: standard.value.xiaolv, |
| | | yAxis: 100, |
| | | }, |
| | | ], |
| | | label: { |
| | |
| | | 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', |
| | |
| | | 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) |
| | | }) |
| | |
| | | statusGif = 'chaiwangban-1' |
| | | setTimeout(shangliao, 7000) |
| | | } |
| | | function showFault () { |
| | | console.log('showFault') |
| | | router.push({ path: '/bigFault', query: { num: num } }) |
| | | |
| | | } |
| | | function shangliao() { |
| | | statusGif = 'shangliao-N' |
| | | setTimeout(() => { |
| | |
| | | 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) => { |
| | |
| | | /**温度环形图 */ |
| | | if (bellowsTempChart) { |
| | | bellowsTempChart.setOption({ |
| | | series: [{ data: [{ value: res.windTemp }] }, { data: [{ value: res.windTemp }] }], |
| | | series: [{ data: [{ value: res.trendVo.bellowsTemp }] }, { data: [{ value: res.trendVo.bellowsTemp }] }], |
| | | }) |
| | | } |
| | | /**风机频率环形图 */ |
| | |
| | | /**干燥进度、走势与阶段效率和阶段消耗 */ |
| | | 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 |
| | |
| | | //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) { |
| | |
| | | }) |
| | | } |
| | | |
| | | // 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) |
| | |
| | | } |
| | | |
| | | res.totalTime = totalTime + res.remain |
| | | console.log("efficAvg::",res.efficAvg); |
| | | /**干燥效率、消耗 */ |
| | | if (efficiencyLineChart) { |
| | | //console.log(`output->ganZaoXiaoLv`, ganZaoXiaoLv) |
| | |
| | | }, |
| | | series: [ |
| | | { |
| | | name: '干燥效率', |
| | | data: ganZaoXiaoLv, |
| | | markLine: { |
| | | symbol: 'none', |
| | | data: [ |
| | | { |
| | | name: '额定', |
| | | yAxis: standard.value.xiaolv, |
| | | yAxis: res.efficAvg|0, |
| | | }, |
| | | ], |
| | | label: { |
| | |
| | | }, |
| | | }, |
| | | }, |
| | | { data: zhengQiXiaoHao }, |
| | | { data: dianNengXiaoHao }, |
| | | // { data: zhengQiXiaoHao }, |
| | | // { data: dianNengXiaoHao }, |
| | | ], |
| | | }) |
| | | } |
| | |
| | | }) |
| | | } |
| | | |
| | | 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) |
| | | } |
| | | res.zhengqi = standard.value.zhengqi - 3 |
| | | console.log(res); |
| | | 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) |
| | | } |
| | | res.dian = standard.value.dian - 1.5 |
| | | 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) |
| | |
| | | } 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: [], |
| | |
| | | } |
| | | } |
| | | |
| | | //console.log(`output->res`, res) |
| | | // console.log(`output->res`, res.detailList[res.detailList.length-1]) |
| | | realData.value = res |
| | | }) |
| | | } |
| | |
| | | margin-top: -30px; |
| | | } |
| | | .leftTop0 { |
| | | height: 600px; |
| | | height: 260px; |
| | | width: 848px; |
| | | display: flex; |
| | | justify-content: center; |
| | |
| | | |
| | | .eqpStatus { |
| | | width: 848px; |
| | | height: 300px; |
| | | |
| | | } |
| | | .rightInfo { |
| | | display: flex; |
| | |
| | | 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> |